1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-19 16:01:34 +02:00

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

View File

@ -444,6 +444,7 @@ if (! defined('APP_NAME')) {
define('TEMPLATE_REMINDER1', 'reminder1');
define('TEMPLATE_REMINDER2', 'reminder2');
define('TEMPLATE_REMINDER3', 'reminder3');
define('TEMPLATE_REMINDER4', 'reminder4');
define('RESET_FREQUENCY_DAILY', 1);
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->enable_reminder4 = Input::get('enable_reminder4') ? true : false;
$account->account_email_settings->frequency_id_reminder4 = Input::get('frequency_id_reminder4');
$account->save();
$account->account_email_settings->save();

View File

@ -108,6 +108,7 @@ class Account extends Eloquent
'enable_reminder1',
'enable_reminder2',
'enable_reminder3',
'enable_reminder4',
'num_days_reminder1',
'num_days_reminder2',
'num_days_reminder3',
@ -178,6 +179,7 @@ class Account extends Eloquent
'credit_number_pattern',
'task_rate',
'inclusive_taxes',
'convert_products',
];
/**
@ -1016,7 +1018,7 @@ class Account extends Eloquent
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_REMINDER2,
TEMPLATE_REMINDER3,
TEMPLATE_REMINDER4,
];
}

View File

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

View File

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

View File

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

View File

@ -13,23 +13,34 @@
<div class="well" style="padding-bottom:20px">
<div class="row">
<div class="col-md-6">
{!! Former::plaintext('schedule')
->value(
Former::input('num_days_' . $field)
->style('float:left;width:20%')
->raw() .
Former::select('direction_' . $field)
->addOption(trans('texts.days_before'), REMINDER_DIRECTION_BEFORE)
->addOption(trans('texts.days_after'), REMINDER_DIRECTION_AFTER)
->style('float:left;width:40%')
->raw() .
'<div id="days_after_'. $field .'" style="float:left;width:40%;display:none;padding-top:8px;padding-left:16px;font-size:16px;">' . trans('texts.days_after') . '</div>' .
Former::select('field_' . $field)
->addOption(trans('texts.field_due_date'), REMINDER_FIELD_DUE_DATE)
->addOption(trans('texts.field_invoice_date'), REMINDER_FIELD_INVOICE_DATE)
->style('float:left;width:40%')
->raw()
) !!}
@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')
->value(
Former::input('num_days_' . $field)
->style('float:left;width:20%')
->raw() .
Former::select('direction_' . $field)
->addOption(trans('texts.days_before'), REMINDER_DIRECTION_BEFORE)
->addOption(trans('texts.days_after'), REMINDER_DIRECTION_AFTER)
->style('float:left;width:40%')
->raw() .
'<div id="days_after_'. $field .'" style="float:left;width:40%;display:none;padding-top:8px;padding-left:16px;font-size:16px;">' . trans('texts.days_after') . '</div>' .
Former::select('field_' . $field)
->addOption(trans('texts.field_due_date'), REMINDER_FIELD_DUE_DATE)
->addOption(trans('texts.field_invoice_date'), REMINDER_FIELD_INVOICE_DATE)
->style('float:left;width:40%')
->raw()
) !!}
@endif
</div>
<div class="col-md-6">
@ -40,21 +51,23 @@
</div>
</div>
<div class="row" style="padding-top:30px">
<div class="col-md-6">
{!! Former::text('late_fee' . $number . '_amount')
->label('late_fee_amount')
->type('number')
->step('any') !!}
@if ($field != 'reminder4')
<div class="row" style="padding-top:30px">
<div class="col-md-6">
{!! Former::text('late_fee' . $number . '_amount')
->label('late_fee_amount')
->type('number')
->step('any') !!}
</div>
<div class="col-md-6">
{!! Former::text('late_fee' . $number . '_percent')
->label('late_fee_percent')
->type('number')
->step('any')
->append('%') !!}
</div>
</div>
<div class="col-md-6">
{!! Former::text('late_fee' . $number . '_percent')
->label('late_fee_percent')
->type('number')
->step('any')
->append('%') !!}
</div>
</div>
@endif
</div>
<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"><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="#reminder4" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.endless_reminder') }}</a></li>
</ul>
<div class="tab-content">
@include('accounts.template', ['field' => 'reminder1', 'number' => 1, 'isReminder' => true, 'active' => true])
@include('accounts.template', ['field' => 'reminder2', 'number' => 2, 'isReminder' => true])
@include('accounts.template', ['field' => 'reminder3', 'number' => 3, 'isReminder' => true])
@include('accounts.template', ['field' => 'reminder4', 'number' => 4, 'isReminder' => true])
</div>
</div>
</div>