Endless reminders #1730

This commit is contained in:
Hillel Coren 2017-12-25 21:46:59 +02:00
parent ab42593ee4
commit e2d4c0a22b
10 changed files with 61 additions and 34 deletions

View File

@ -74,7 +74,7 @@ class SendReminders extends Command
} }
$this->chargeLateFees(); $this->chargeLateFees();
$this->setReminderEmails(); $this->sendReminderEmails();
$this->sendScheduledReports(); $this->sendScheduledReports();
$this->loadExchangeRates(); $this->loadExchangeRates();
@ -116,7 +116,7 @@ class SendReminders extends Command
} }
} }
private function setReminderEmails() private function sendReminderEmails()
{ {
$accounts = $this->accountRepo->findWithReminders(); $accounts = $this->accountRepo->findWithReminders();
$this->info(count($accounts) . ' accounts found with reminders'); $this->info(count($accounts) . ' accounts found with reminders');

View File

@ -444,6 +444,7 @@ if (! defined('APP_NAME')) {
define('TEMPLATE_REMINDER1', 'reminder1'); define('TEMPLATE_REMINDER1', 'reminder1');
define('TEMPLATE_REMINDER2', 'reminder2'); define('TEMPLATE_REMINDER2', 'reminder2');
define('TEMPLATE_REMINDER3', 'reminder3'); define('TEMPLATE_REMINDER3', 'reminder3');
define('TEMPLATE_REMINDER4', 'reminder4');
define('RESET_FREQUENCY_DAILY', 1); define('RESET_FREQUENCY_DAILY', 1);
define('RESET_FREQUENCY_WEEKLY', 2); define('RESET_FREQUENCY_WEEKLY', 2);

View File

@ -845,6 +845,9 @@ class AccountController extends BaseController
$account->account_email_settings->{"late_fee{$number}_percent"} = Input::get("late_fee{$number}_percent"); $account->account_email_settings->{"late_fee{$number}_percent"} = Input::get("late_fee{$number}_percent");
} }
$account->enable_reminder4 = Input::get('enable_reminder4') ? true : false;
$account->account_email_settings->frequency_id_reminder4 = Input::get('frequency_id_reminder4');
$account->save(); $account->save();
$account->account_email_settings->save(); $account->account_email_settings->save();

View File

@ -108,6 +108,7 @@ class Account extends Eloquent
'enable_reminder1', 'enable_reminder1',
'enable_reminder2', 'enable_reminder2',
'enable_reminder3', 'enable_reminder3',
'enable_reminder4',
'num_days_reminder1', 'num_days_reminder1',
'num_days_reminder2', 'num_days_reminder2',
'num_days_reminder3', 'num_days_reminder3',
@ -178,6 +179,7 @@ class Account extends Eloquent
'credit_number_pattern', 'credit_number_pattern',
'task_rate', 'task_rate',
'inclusive_taxes', 'inclusive_taxes',
'convert_products',
]; ];
/** /**
@ -1016,7 +1018,7 @@ class Account extends Eloquent
return false; return false;
} }
return $this->enable_reminder1 || $this->enable_reminder2 || $this->enable_reminder3; return $this->enable_reminder1 || $this->enable_reminder2 || $this->enable_reminder3 || $this->enable_reminder4;
} }
/** /**

View File

@ -43,6 +43,7 @@ class AccountEmailSettings extends Eloquent
TEMPLATE_REMINDER1, TEMPLATE_REMINDER1,
TEMPLATE_REMINDER2, TEMPLATE_REMINDER2,
TEMPLATE_REMINDER3, TEMPLATE_REMINDER3,
TEMPLATE_REMINDER4,
]; ];
} }

View File

@ -40,9 +40,11 @@ class AccountEmailSettingsTransformer extends EntityTransformer
'email_subject_reminder1' => $settings->email_subject_reminder1, 'email_subject_reminder1' => $settings->email_subject_reminder1,
'email_subject_reminder2' => $settings->email_subject_reminder2, 'email_subject_reminder2' => $settings->email_subject_reminder2,
'email_subject_reminder3' => $settings->email_subject_reminder3, 'email_subject_reminder3' => $settings->email_subject_reminder3,
'email_subject_reminder4' => $settings->email_subject_reminder4,
'email_template_reminder1' => $settings->email_template_reminder1, 'email_template_reminder1' => $settings->email_template_reminder1,
'email_template_reminder2' => $settings->email_template_reminder2, 'email_template_reminder2' => $settings->email_template_reminder2,
'email_template_reminder3' => $settings->email_template_reminder3, 'email_template_reminder3' => $settings->email_template_reminder3,
'email_template_reminder4' => $settings->email_template_reminder4,
'late_fee1_amount' => $settings->late_fee1_amount, 'late_fee1_amount' => $settings->late_fee1_amount,
'late_fee1_percent' => $settings->late_fee1_percent, 'late_fee1_percent' => $settings->late_fee1_percent,
'late_fee2_amount' => $settings->late_fee2_amount, 'late_fee2_amount' => $settings->late_fee2_amount,

View File

@ -211,6 +211,7 @@ class AccountTransformer extends EntityTransformer
'enable_reminder1' => $account->enable_reminder1, 'enable_reminder1' => $account->enable_reminder1,
'enable_reminder2' => $account->enable_reminder2, 'enable_reminder2' => $account->enable_reminder2,
'enable_reminder3' => $account->enable_reminder3, 'enable_reminder3' => $account->enable_reminder3,
'enable_reminder4' => $account->enable_reminder4,
'num_days_reminder1' => $account->num_days_reminder1, 'num_days_reminder1' => $account->num_days_reminder1,
'num_days_reminder2' => $account->num_days_reminder2, 'num_days_reminder2' => $account->num_days_reminder2,
'num_days_reminder3' => $account->num_days_reminder3, 'num_days_reminder3' => $account->num_days_reminder3,
@ -276,6 +277,7 @@ class AccountTransformer extends EntityTransformer
'custom_contact_label2' => $account->custom_contact_label2, 'custom_contact_label2' => $account->custom_contact_label2,
'task_rate' => (float) $account->task_rate, 'task_rate' => (float) $account->task_rate,
'inclusive_taxes' => (bool) $account->inclusive_taxes, 'inclusive_taxes' => (bool) $account->inclusive_taxes,
'convert_products' => (bool) $account->convert_products,
]; ];
} }
} }

View File

@ -2627,6 +2627,7 @@ $LANG = array(
'progress' => 'Progress', 'progress' => 'Progress',
'view_project' => 'View Project', 'view_project' => 'View Project',
'summary' => 'Summary', 'summary' => 'Summary',
'endless_reminder' => 'Endless Reminder',
); );

View File

@ -13,6 +13,16 @@
<div class="well" style="padding-bottom:20px"> <div class="well" style="padding-bottom:20px">
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
@if ($field == 'reminder4')
{!! Former::populateField('frequency_id_reminder4', $account->account_email_settings->frequency_id_reminder4) !!}
{!! Former::plaintext('frequency')
->value(
Former::select('frequency_id_reminder4')
->options(\App\Models\Frequency::selectOptions())
->style('float:left;')
->raw()
) !!}
@else
{!! Former::plaintext('schedule') {!! Former::plaintext('schedule')
->value( ->value(
Former::input('num_days_' . $field) Former::input('num_days_' . $field)
@ -30,6 +40,7 @@
->style('float:left;width:40%') ->style('float:left;width:40%')
->raw() ->raw()
) !!} ) !!}
@endif
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@ -40,6 +51,7 @@
</div> </div>
</div> </div>
@if ($field != 'reminder4')
<div class="row" style="padding-top:30px"> <div class="row" style="padding-top:30px">
<div class="col-md-6"> <div class="col-md-6">
{!! Former::text('late_fee' . $number . '_amount') {!! Former::text('late_fee' . $number . '_amount')
@ -55,6 +67,7 @@
->append('%') !!} ->append('%') !!}
</div> </div>
</div> </div>
@endif
</div> </div>
<br/> <br/>

View File

@ -73,11 +73,13 @@
<li role="presentation" class="active"><a href="#reminder1" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.first_reminder') }}</a></li> <li role="presentation" class="active"><a href="#reminder1" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.first_reminder') }}</a></li>
<li role="presentation"><a href="#reminder2" aria-controls="terms" role="tab" data-toggle="tab">{{ trans('texts.second_reminder') }}</a></li> <li role="presentation"><a href="#reminder2" aria-controls="terms" role="tab" data-toggle="tab">{{ trans('texts.second_reminder') }}</a></li>
<li role="presentation"><a href="#reminder3" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.third_reminder') }}</a></li> <li role="presentation"><a href="#reminder3" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.third_reminder') }}</a></li>
<li role="presentation"><a href="#reminder4" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.endless_reminder') }}</a></li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
@include('accounts.template', ['field' => 'reminder1', 'number' => 1, 'isReminder' => true, 'active' => true]) @include('accounts.template', ['field' => 'reminder1', 'number' => 1, 'isReminder' => true, 'active' => true])
@include('accounts.template', ['field' => 'reminder2', 'number' => 2, 'isReminder' => true]) @include('accounts.template', ['field' => 'reminder2', 'number' => 2, 'isReminder' => true])
@include('accounts.template', ['field' => 'reminder3', 'number' => 3, 'isReminder' => true]) @include('accounts.template', ['field' => 'reminder3', 'number' => 3, 'isReminder' => true])
@include('accounts.template', ['field' => 'reminder4', 'number' => 4, 'isReminder' => true])
</div> </div>
</div> </div>
</div> </div>