mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
Merge branch 'develop' of github.com:invoiceninja/invoiceninja into develop
This commit is contained in:
commit
17b72a8d95
@ -141,8 +141,14 @@ class SendReminders extends Command
|
|||||||
$account->loadLocalizationSettings($invoice->client); // support trans to add fee line item
|
$account->loadLocalizationSettings($invoice->client); // support trans to add fee line item
|
||||||
$number = preg_replace('/[^0-9]/', '', $reminder);
|
$number = preg_replace('/[^0-9]/', '', $reminder);
|
||||||
|
|
||||||
|
if ($invoice->isQuote()) {
|
||||||
|
$amount = $account->account_email_settings->{"late_fee_quote{$number}_amount"};
|
||||||
|
$percent = $account->account_email_settings->{"late_fee_quote{$number}_percent"};
|
||||||
|
} else {
|
||||||
$amount = $account->account_email_settings->{"late_fee{$number}_amount"};
|
$amount = $account->account_email_settings->{"late_fee{$number}_amount"};
|
||||||
$percent = $account->account_email_settings->{"late_fee{$number}_percent"};
|
$percent = $account->account_email_settings->{"late_fee{$number}_percent"};
|
||||||
|
}
|
||||||
|
|
||||||
$this->invoiceRepo->setLateFee($invoice, $amount, $percent);
|
$this->invoiceRepo->setLateFee($invoice, $amount, $percent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,6 +190,18 @@ class SendReminders extends Command
|
|||||||
$this->info(date('r') . ' Send email: ' . $invoice->id);
|
$this->info(date('r') . ' Send email: ' . $invoice->id);
|
||||||
dispatch(new SendInvoiceEmail($invoice, $invoice->user_id, 'reminder4'));
|
dispatch(new SendInvoiceEmail($invoice, $invoice->user_id, 'reminder4'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// endless quote reminders
|
||||||
|
$invoices = $this->invoiceRepo->findNeedingEndlessReminding($account, true);
|
||||||
|
$this->info(date('r ') . $account->name . ': ' . $invoices->count() . ' endless quotes found');
|
||||||
|
|
||||||
|
foreach ($invoices as $invoice) {
|
||||||
|
if ($invoice->last_sent_date == date('Y-m-d')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->info(date('r') . ' Send email: ' . $invoice->id);
|
||||||
|
dispatch(new SendInvoiceEmail($invoice, $invoice->user_id, 'quote_reminder4'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,6 +513,10 @@ if (! defined('APP_NAME')) {
|
|||||||
define('TEMPLATE_REMINDER2', 'reminder2');
|
define('TEMPLATE_REMINDER2', 'reminder2');
|
||||||
define('TEMPLATE_REMINDER3', 'reminder3');
|
define('TEMPLATE_REMINDER3', 'reminder3');
|
||||||
define('TEMPLATE_REMINDER4', 'reminder4');
|
define('TEMPLATE_REMINDER4', 'reminder4');
|
||||||
|
define('TEMPLATE_QUOTE_REMINDER1', 'quote_reminder1');
|
||||||
|
define('TEMPLATE_QUOTE_REMINDER2', 'quote_reminder2');
|
||||||
|
define('TEMPLATE_QUOTE_REMINDER3', 'quote_reminder3');
|
||||||
|
define('TEMPLATE_QUOTE_REMINDER4', 'quote_reminder4');
|
||||||
|
|
||||||
define('CUSTOM_MESSAGE_DASHBOARD', 'dashboard');
|
define('CUSTOM_MESSAGE_DASHBOARD', 'dashboard');
|
||||||
define('CUSTOM_MESSAGE_UNPAID_INVOICE', 'unpaid_invoice');
|
define('CUSTOM_MESSAGE_UNPAID_INVOICE', 'unpaid_invoice');
|
||||||
|
@ -940,7 +940,7 @@ class AccountController extends BaseController
|
|||||||
$account->account_email_settings->$bodyField = ($body == $account->getDefaultEmailTemplate($type) ? null : $body);
|
$account->account_email_settings->$bodyField = ($body == $account->getDefaultEmailTemplate($type) ? null : $body);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ([TEMPLATE_REMINDER1, TEMPLATE_REMINDER2, TEMPLATE_REMINDER3] as $type) {
|
foreach ([TEMPLATE_REMINDER1, TEMPLATE_REMINDER2, TEMPLATE_REMINDER3, TEMPLATE_QUOTE_REMINDER1, TEMPLATE_QUOTE_REMINDER2, TEMPLATE_QUOTE_REMINDER3] as $type) {
|
||||||
$enableField = "enable_{$type}";
|
$enableField = "enable_{$type}";
|
||||||
$account->account_email_settings->$enableField = Input::get($enableField) ? true : false;
|
$account->account_email_settings->$enableField = Input::get($enableField) ? true : false;
|
||||||
$account->account_email_settings->{"num_days_{$type}"} = Input::get("num_days_{$type}");
|
$account->account_email_settings->{"num_days_{$type}"} = Input::get("num_days_{$type}");
|
||||||
@ -948,13 +948,21 @@ class AccountController extends BaseController
|
|||||||
$account->account_email_settings->{"direction_{$type}"} = Input::get("field_{$type}") == REMINDER_FIELD_INVOICE_DATE ? REMINDER_DIRECTION_AFTER : Input::get("direction_{$type}");
|
$account->account_email_settings->{"direction_{$type}"} = Input::get("field_{$type}") == REMINDER_FIELD_INVOICE_DATE ? REMINDER_DIRECTION_AFTER : Input::get("direction_{$type}");
|
||||||
|
|
||||||
$number = preg_replace('/[^0-9]/', '', $type);
|
$number = preg_replace('/[^0-9]/', '', $type);
|
||||||
|
if (strpos($type, 'quote') !== false) {
|
||||||
|
$account->account_email_settings->{"late_fee_quote{$number}_amount"} = Input::get("late_fee_quote{$number}_amount");
|
||||||
|
$account->account_email_settings->{"late_fee_quote{$number}_percent"} = Input::get("late_fee_quote{$number}_percent");
|
||||||
|
} else {
|
||||||
$account->account_email_settings->{"late_fee{$number}_amount"} = Input::get("late_fee{$number}_amount");
|
$account->account_email_settings->{"late_fee{$number}_amount"} = Input::get("late_fee{$number}_amount");
|
||||||
$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->account_email_settings->enable_reminder4 = Input::get('enable_reminder4') ? true : false;
|
$account->account_email_settings->enable_reminder4 = Input::get('enable_reminder4') ? true : false;
|
||||||
$account->account_email_settings->frequency_id_reminder4 = Input::get('frequency_id_reminder4');
|
$account->account_email_settings->frequency_id_reminder4 = Input::get('frequency_id_reminder4');
|
||||||
|
|
||||||
|
$account->account_email_settings->enable_quote_reminder4 = Input::get('enable_quote_reminder4') ? true : false;
|
||||||
|
$account->account_email_settings->frequency_id_quote_reminder4 = Input::get('frequency_id_quote_reminder4');
|
||||||
|
|
||||||
$account->save();
|
$account->save();
|
||||||
$account->account_email_settings->save();
|
$account->account_email_settings->save();
|
||||||
|
|
||||||
|
@ -46,6 +46,14 @@ class RunReport extends Job
|
|||||||
$startDate = Carbon::now()->subMonth()->firstOfMonth()->toDateString();
|
$startDate = Carbon::now()->subMonth()->firstOfMonth()->toDateString();
|
||||||
$endDate = Carbon::now()->subMonth()->lastOfMonth()->toDateString();
|
$endDate = Carbon::now()->subMonth()->lastOfMonth()->toDateString();
|
||||||
break;
|
break;
|
||||||
|
case 'this_quarter':
|
||||||
|
$startDate = Carbon::now()->firstOfQuarter()->toDateString();
|
||||||
|
$endDate = Carbon::now()->lastOfQuarter()->toDateString();
|
||||||
|
break;
|
||||||
|
case 'last_quarter':
|
||||||
|
$startDate = Carbon::now()->subMonth(3)->firstOfQuarter()->toDateString();
|
||||||
|
$endDate = Carbon::now()->subMonth(3)->lastOfQuarter()->toDateString();
|
||||||
|
break;
|
||||||
case 'this_year':
|
case 'this_year':
|
||||||
$startDate = Carbon::now()->firstOfYear()->toDateString();
|
$startDate = Carbon::now()->firstOfYear()->toDateString();
|
||||||
$endDate = Carbon::now()->lastOfYear()->toDateString();
|
$endDate = Carbon::now()->lastOfYear()->toDateString();
|
||||||
|
@ -46,6 +46,31 @@ class AccountEmailSettings extends Eloquent
|
|||||||
'field_reminder1',
|
'field_reminder1',
|
||||||
'field_reminder2',
|
'field_reminder2',
|
||||||
'field_reminder3',
|
'field_reminder3',
|
||||||
|
'email_subject_quote_reminder1',
|
||||||
|
'email_subject_quote_reminder2',
|
||||||
|
'email_subject_quote_reminder3',
|
||||||
|
'email_template_quote_reminder1',
|
||||||
|
'email_template_quote_reminder2',
|
||||||
|
'email_template_quote_reminder3',
|
||||||
|
'late_fee_quote1_amount',
|
||||||
|
'late_fee_quote1_percent',
|
||||||
|
'late_fee_quote2_amount',
|
||||||
|
'late_fee_quote2_percent',
|
||||||
|
'late_fee_quote3_amount',
|
||||||
|
'late_fee_quote3_percent',
|
||||||
|
'enable_quote_reminder1',
|
||||||
|
'enable_quote_reminder2',
|
||||||
|
'enable_quote_reminder3',
|
||||||
|
'enable_quote_reminder4',
|
||||||
|
'num_days_quote_reminder1',
|
||||||
|
'num_days_quote_reminder2',
|
||||||
|
'num_days_quote_reminder3',
|
||||||
|
'direction_quote_reminder1',
|
||||||
|
'direction_quote_reminder2',
|
||||||
|
'direction_quote_reminder3',
|
||||||
|
'field_quote_reminder1',
|
||||||
|
'field_quote_reminder2',
|
||||||
|
'field_quote_reminder3',
|
||||||
'email_design_id',
|
'email_design_id',
|
||||||
'enable_email_markup',
|
'enable_email_markup',
|
||||||
'email_footer',
|
'email_footer',
|
||||||
@ -61,6 +86,10 @@ class AccountEmailSettings extends Eloquent
|
|||||||
TEMPLATE_REMINDER2,
|
TEMPLATE_REMINDER2,
|
||||||
TEMPLATE_REMINDER3,
|
TEMPLATE_REMINDER3,
|
||||||
TEMPLATE_REMINDER4,
|
TEMPLATE_REMINDER4,
|
||||||
|
TEMPLATE_QUOTE_REMINDER1,
|
||||||
|
TEMPLATE_QUOTE_REMINDER2,
|
||||||
|
TEMPLATE_QUOTE_REMINDER3,
|
||||||
|
TEMPLATE_QUOTE_REMINDER4,
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -136,12 +136,12 @@ trait SendsEmails
|
|||||||
*/
|
*/
|
||||||
public function getReminderDate($reminder, $filterEnabled = true)
|
public function getReminderDate($reminder, $filterEnabled = true)
|
||||||
{
|
{
|
||||||
if ($filterEnabled && ! $this->account_email_settings->{"enable_reminder{$reminder}"}) {
|
if ($filterEnabled && ! $this->account_email_settings->{"enable_{$reminder}"}) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$numDays = $this->account_email_settings->{"num_days_reminder{$reminder}"};
|
$numDays = $this->account_email_settings->{"num_days_{$reminder}"};
|
||||||
$plusMinus = $this->account_email_settings->{"direction_reminder{$reminder}"} == REMINDER_DIRECTION_AFTER ? '-' : '+';
|
$plusMinus = $this->account_email_settings->{"direction_{$reminder}"} == REMINDER_DIRECTION_AFTER ? '-' : '+';
|
||||||
|
|
||||||
return date('Y-m-d', strtotime("$plusMinus $numDays days"));
|
return date('Y-m-d', strtotime("$plusMinus $numDays days"));
|
||||||
}
|
}
|
||||||
@ -153,16 +153,18 @@ trait SendsEmails
|
|||||||
*/
|
*/
|
||||||
public function getInvoiceReminder($invoice, $filterEnabled = true)
|
public function getInvoiceReminder($invoice, $filterEnabled = true)
|
||||||
{
|
{
|
||||||
|
$reminder = $invoice->isQuote() ? 'quote_reminder' : 'reminder';
|
||||||
|
|
||||||
for ($i = 1; $i <= 3; $i++) {
|
for ($i = 1; $i <= 3; $i++) {
|
||||||
if ($date = $this->getReminderDate($i, $filterEnabled)) {
|
if ($date = $this->getReminderDate($reminder.$i, $filterEnabled)) {
|
||||||
if ($this->account_email_settings->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE) {
|
if ($this->account_email_settings->{'field_'.$reminder.$i} == REMINDER_FIELD_DUE_DATE) {
|
||||||
if (($invoice->partial && $invoice->partial_due_date == $date)
|
if (($invoice->partial && $invoice->partial_due_date == $date)
|
||||||
|| $invoice->due_date == $date) {
|
|| $invoice->due_date == $date) {
|
||||||
return "reminder{$i}";
|
return $reminder.$i;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($invoice->invoice_date == $date) {
|
if ($invoice->invoice_date == $date) {
|
||||||
return "reminder{$i}";
|
return $reminder.$i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,6 +169,8 @@ class AccountPresenter extends Presenter
|
|||||||
"' . trans('texts.last_30_days') . '": [moment().subtract(29, "days"), moment()],
|
"' . trans('texts.last_30_days') . '": [moment().subtract(29, "days"), moment()],
|
||||||
"' . trans('texts.this_month') . '": [moment().startOf("month"), moment().endOf("month")],
|
"' . trans('texts.this_month') . '": [moment().startOf("month"), moment().endOf("month")],
|
||||||
"' . trans('texts.last_month') . '": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")],
|
"' . trans('texts.last_month') . '": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")],
|
||||||
|
"' . trans('texts.current_quarter') . '": [moment().quarter(chartQuarter).startOf("quarter"), moment().quarter(chartQuarter).endOf("quarter")],
|
||||||
|
"' . trans('texts.last_quarter') . '": [moment().subtract(1, "quarter").startOf("quarter"), moment().subtract(1, "quarter").endOf("quarter")],
|
||||||
"' . trans('texts.this_year') . '": [moment().date(1).month(' . $month . ').year(' . $year . '), moment()],
|
"' . trans('texts.this_year') . '": [moment().date(1).month(' . $month . ').year(' . $year . '), moment()],
|
||||||
"' . trans('texts.last_year') . '": [moment().date(1).month(' . $month . ').year(' . $lastYear . '), moment().date(1).month(' . $month . ').year(' . $year . ').subtract(1, "day")],
|
"' . trans('texts.last_year') . '": [moment().date(1).month(' . $month . ').year(' . $lastYear . '), moment().date(1).month(' . $month . ').year(' . $year . ').subtract(1, "day")],
|
||||||
}';
|
}';
|
||||||
|
@ -767,7 +767,7 @@ class AccountRepository
|
|||||||
public function findWithReminders()
|
public function findWithReminders()
|
||||||
{
|
{
|
||||||
return Account::whereHas('account_email_settings', function($query) {
|
return Account::whereHas('account_email_settings', function($query) {
|
||||||
$query->whereRaw('enable_reminder1 = 1 OR enable_reminder2 = 1 OR enable_reminder3 = 1 OR enable_reminder4 = 1');
|
$query->whereRaw('enable_reminder1 = 1 OR enable_reminder2 = 1 OR enable_reminder3 = 1 OR enable_reminder4 = 1 OR enable_quote_reminder1 = 1 OR enable_quote_reminder2 = 1 OR enable_quote_reminder3 = 1 OR enable_quote_reminder4 = 1');
|
||||||
})->get();
|
})->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -779,7 +779,13 @@ class AccountRepository
|
|||||||
->orWhere('late_fee2_amount', '>', 0)
|
->orWhere('late_fee2_amount', '>', 0)
|
||||||
->orWhere('late_fee2_percent', '>', 0)
|
->orWhere('late_fee2_percent', '>', 0)
|
||||||
->orWhere('late_fee3_amount', '>', 0)
|
->orWhere('late_fee3_amount', '>', 0)
|
||||||
->orWhere('late_fee3_percent', '>', 0);
|
->orWhere('late_fee3_percent', '>', 0)
|
||||||
|
->orWhere('late_fee_quote1_amount', '>', 0)
|
||||||
|
->orWhere('late_fee_quote1_percent', '>', 0)
|
||||||
|
->orWhere('late_fee_quote2_amount', '>', 0)
|
||||||
|
->orWhere('late_fee_quote2_percent', '>', 0)
|
||||||
|
->orWhere('late_fee_quote3_amount', '>', 0)
|
||||||
|
->orWhere('late_fee_quote3_percent', '>', 0);
|
||||||
})->get();
|
})->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1198,13 +1198,20 @@ class InvoiceRepository extends BaseRepository
|
|||||||
$dates = [];
|
$dates = [];
|
||||||
|
|
||||||
for ($i = 1; $i <= 3; $i++) {
|
for ($i = 1; $i <= 3; $i++) {
|
||||||
if ($date = $account->getReminderDate($i, $filterEnabled)) {
|
if ($date = $account->getReminderDate('reminder'.$i, $filterEnabled)) {
|
||||||
if ($account->account_email_settings->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE) {
|
if ($account->account_email_settings->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE) {
|
||||||
$dates[] = "(due_date = '$date' OR partial_due_date = '$date')";
|
$dates[] = "(due_date = '$date' OR partial_due_date = '$date')";
|
||||||
} else {
|
} else {
|
||||||
$dates[] = "invoice_date = '$date'";
|
$dates[] = "invoice_date = '$date'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($date = $account->getReminderDate('quote_reminder'.$i, $filterEnabled)) {
|
||||||
|
if ($account->account_email_settings->{"field_quote_reminder{$i}"} == REMINDER_FIELD_DUE_DATE) {
|
||||||
|
$dates[] = "(due_date = '$date' OR partial_due_date = '$date')";
|
||||||
|
} else {
|
||||||
|
$dates[] = "invoice_date = '$date'";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! count($dates)) {
|
if (! count($dates)) {
|
||||||
@ -1212,8 +1219,7 @@ class InvoiceRepository extends BaseRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sql = implode(' OR ', $dates);
|
$sql = implode(' OR ', $dates);
|
||||||
$invoices = Invoice::invoiceType(INVOICE_TYPE_STANDARD)
|
$invoices = Invoice::with('client', 'invoice_items')
|
||||||
->with('client', 'invoice_items')
|
|
||||||
->whereHas('client', function ($query) {
|
->whereHas('client', function ($query) {
|
||||||
$query->whereSendReminders(true);
|
$query->whereSendReminders(true);
|
||||||
})
|
})
|
||||||
@ -1227,12 +1233,19 @@ class InvoiceRepository extends BaseRepository
|
|||||||
return $invoices;
|
return $invoices;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findNeedingEndlessReminding(Account $account)
|
public function findNeedingEndlessReminding(Account $account, $quote = false)
|
||||||
{
|
{
|
||||||
$settings = $account->account_email_settings;
|
$invoiceType = INVOICE_TYPE_STANDARD;
|
||||||
$frequencyId = $settings->frequency_id_reminder4;
|
$reminder = 'reminder';
|
||||||
|
if ($quote) {
|
||||||
|
$reminder = 'quote_reminder';
|
||||||
|
$invoiceType = INVOICE_TYPE_QUOTE;
|
||||||
|
}
|
||||||
|
|
||||||
if (! $frequencyId || ! $account->account_email_settings->enable_reminder4) {
|
$settings = $account->account_email_settings;
|
||||||
|
$frequencyId = $settings->{"frequency_id_{$reminder}4"};
|
||||||
|
|
||||||
|
if (! $frequencyId || ! $account->account_email_settings->{"enable_{$reminder}4"}) {
|
||||||
return collect();
|
return collect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1240,7 +1253,7 @@ class InvoiceRepository extends BaseRepository
|
|||||||
$lastSentDate = date_create();
|
$lastSentDate = date_create();
|
||||||
$lastSentDate->sub(date_interval_create_from_date_string($frequency->date_interval));
|
$lastSentDate->sub(date_interval_create_from_date_string($frequency->date_interval));
|
||||||
|
|
||||||
$invoices = Invoice::invoiceType(INVOICE_TYPE_STANDARD)
|
$invoices = Invoice::invoiceType($invoiceType)
|
||||||
->with('client', 'invoice_items')
|
->with('client', 'invoice_items')
|
||||||
->whereHas('client', function ($query) {
|
->whereHas('client', function ($query) {
|
||||||
$query->whereSendReminders(true);
|
$query->whereSendReminders(true);
|
||||||
@ -1252,13 +1265,13 @@ class InvoiceRepository extends BaseRepository
|
|||||||
->where('last_sent_date', '<', $lastSentDate);
|
->where('last_sent_date', '<', $lastSentDate);
|
||||||
|
|
||||||
for ($i=1; $i<=3; $i++) {
|
for ($i=1; $i<=3; $i++) {
|
||||||
if (!$account->account_email_settings->{"enable_reminder{$i}"}) {
|
if (!$account->account_email_settings->{"enable_{$reminder}{$i}"}) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$field = $account->account_email_settings->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE ? 'due_date' : 'invoice_date';
|
$field = $account->account_email_settings->{"field_{$reminder}{$i}"} == REMINDER_FIELD_DUE_DATE ? 'due_date' : 'invoice_date';
|
||||||
$date = date_create();
|
$date = date_create();
|
||||||
if ($account->account_email_settings->{"direction_reminder{$i}"} == REMINDER_DIRECTION_AFTER) {
|
if ($account->account_email_settings->{"direction_{$reminder}{$i}"} == REMINDER_DIRECTION_AFTER) {
|
||||||
$date->sub(date_interval_create_from_date_string($account->account_email_settings->{"num_days_reminder{$i}"} . ' days'));
|
$date->sub(date_interval_create_from_date_string($account->account_email_settings->{"num_days_{$reminder}{$i}"} . ' days'));
|
||||||
}
|
}
|
||||||
$invoices->where($field, '<', $date);
|
$invoices->where($field, '<', $date);
|
||||||
}
|
}
|
||||||
|
100
database/migrations/2019_04_28_221429_add_quote_reminders.php
Normal file
100
database/migrations/2019_04_28_221429_add_quote_reminders.php
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
|
class AddQuoteReminders extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('account_email_settings', function ($table) {
|
||||||
|
$table->string('email_subject_quote_reminder1');
|
||||||
|
$table->string('email_subject_quote_reminder2');
|
||||||
|
$table->string('email_subject_quote_reminder3');
|
||||||
|
$table->string('email_subject_quote_reminder4');
|
||||||
|
|
||||||
|
$table->text('email_template_quote_reminder1');
|
||||||
|
$table->text('email_template_quote_reminder2');
|
||||||
|
$table->text('email_template_quote_reminder3');
|
||||||
|
$table->text('email_template_quote_reminder4');
|
||||||
|
|
||||||
|
$table->boolean('enable_quote_reminder1')->default(false);
|
||||||
|
$table->boolean('enable_quote_reminder2')->default(false);
|
||||||
|
$table->boolean('enable_quote_reminder3')->default(false);
|
||||||
|
$table->boolean('enable_quote_reminder4')->default(false);
|
||||||
|
|
||||||
|
$table->smallInteger('num_days_quote_reminder1')->default(7);
|
||||||
|
$table->smallInteger('num_days_quote_reminder2')->default(14);
|
||||||
|
$table->smallInteger('num_days_quote_reminder3')->default(30);
|
||||||
|
|
||||||
|
$table->smallInteger('direction_quote_reminder1')->default(1);
|
||||||
|
$table->smallInteger('direction_quote_reminder2')->default(1);
|
||||||
|
$table->smallInteger('direction_quote_reminder3')->default(1);
|
||||||
|
|
||||||
|
$table->smallInteger('field_quote_reminder1')->default(1);
|
||||||
|
$table->smallInteger('field_quote_reminder2')->default(1);
|
||||||
|
$table->smallInteger('field_quote_reminder3')->default(1);
|
||||||
|
|
||||||
|
$table->unsignedInteger('frequency_id_quote_reminder4')->nullable();
|
||||||
|
|
||||||
|
$table->decimal('late_fee_quote1_amount', 13, 2)->nullable();
|
||||||
|
$table->decimal('late_fee_quote1_percent', 13, 3)->nullable();
|
||||||
|
$table->decimal('late_fee_quote2_amount', 13, 2)->nullable();
|
||||||
|
$table->decimal('late_fee_quote2_percent', 13, 3)->nullable();
|
||||||
|
$table->decimal('late_fee_quote3_amount', 13, 2)->nullable();
|
||||||
|
$table->decimal('late_fee_quote3_percent', 13, 3)->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('account_email_settings', function ($table) {
|
||||||
|
$table->dropColumn('email_subject_quote_reminder1');
|
||||||
|
$table->dropColumn('email_subject_quote_reminder2');
|
||||||
|
$table->dropColumn('email_subject_quote_reminder3');
|
||||||
|
$table->dropColumn('email_subject_quote_reminder4');
|
||||||
|
|
||||||
|
$table->dropColumn('email_template_quote_reminder1');
|
||||||
|
$table->dropColumn('email_template_quote_reminder2');
|
||||||
|
$table->dropColumn('email_template_quote_reminder3');
|
||||||
|
$table->dropColumn('email_template_quote_reminder4');
|
||||||
|
|
||||||
|
$table->dropColumn('enable_quote_reminder1');
|
||||||
|
$table->dropColumn('enable_quote_reminder2');
|
||||||
|
$table->dropColumn('enable_quote_reminder3');
|
||||||
|
$table->dropColumn('enable_quote_reminder4');
|
||||||
|
|
||||||
|
$table->dropColumn('num_days_quote_reminder1');
|
||||||
|
$table->dropColumn('num_days_quote_reminder2');
|
||||||
|
$table->dropColumn('num_days_quote_reminder3');
|
||||||
|
|
||||||
|
$table->dropColumn('direction_quote_reminder1');
|
||||||
|
$table->dropColumn('direction_quote_reminder2');
|
||||||
|
$table->dropColumn('direction_quote_reminder3');
|
||||||
|
|
||||||
|
$table->dropColumn('field_quote_reminder1');
|
||||||
|
$table->dropColumn('field_quote_reminder2');
|
||||||
|
$table->dropColumn('field_quote_reminder3');
|
||||||
|
|
||||||
|
$table->dropColumn('frequency_id_quote_reminder4');
|
||||||
|
|
||||||
|
$table->dropColumn('late_fee_quote1_amount');
|
||||||
|
$table->dropColumn('late_fee_quote1_percent');
|
||||||
|
$table->dropColumn('late_fee_quote2_amount');
|
||||||
|
$table->dropColumn('late_fee_quote2_percent');
|
||||||
|
$table->dropColumn('late_fee_quote3_amount');
|
||||||
|
$table->dropColumn('late_fee_quote3_percent');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -689,6 +689,7 @@ $LANG = array(
|
|||||||
'military_time' => '24 hodinový čas',
|
'military_time' => '24 hodinový čas',
|
||||||
'last_sent' => 'Poslední odeslány',
|
'last_sent' => 'Poslední odeslány',
|
||||||
'reminder_emails' => 'Připomínky emailem',
|
'reminder_emails' => 'Připomínky emailem',
|
||||||
|
'quote_reminder_emails' => 'Připomínky emailem (nabídky)',
|
||||||
'templates_and_reminders' => 'Šablony & Připomínky',
|
'templates_and_reminders' => 'Šablony & Připomínky',
|
||||||
'subject' => 'Předmět',
|
'subject' => 'Předmět',
|
||||||
'body' => 'Tělo',
|
'body' => 'Tělo',
|
||||||
@ -2067,6 +2068,8 @@ $LANG = array(
|
|||||||
'last_30_days' => 'Poslední měsíc',
|
'last_30_days' => 'Poslední měsíc',
|
||||||
'this_month' => 'Tento měsíc',
|
'this_month' => 'Tento měsíc',
|
||||||
'last_month' => 'Last Month',
|
'last_month' => 'Last Month',
|
||||||
|
'current_quarter' => 'Aktuální čtvrtletí',
|
||||||
|
'last_quarter' => 'Poslední čtvrtletí',
|
||||||
'last_year' => 'Last Year',
|
'last_year' => 'Last Year',
|
||||||
'custom_range' => 'Custom Range',
|
'custom_range' => 'Custom Range',
|
||||||
'url' => 'URL',
|
'url' => 'URL',
|
||||||
|
@ -135,6 +135,7 @@ $LANG = array(
|
|||||||
'status' => 'Status',
|
'status' => 'Status',
|
||||||
'invoice_total' => 'Invoice Total',
|
'invoice_total' => 'Invoice Total',
|
||||||
'frequency' => 'Frequency',
|
'frequency' => 'Frequency',
|
||||||
|
'range' => 'Range',
|
||||||
'start_date' => 'Start Date',
|
'start_date' => 'Start Date',
|
||||||
'end_date' => 'End Date',
|
'end_date' => 'End Date',
|
||||||
'transaction_reference' => 'Transaction Reference',
|
'transaction_reference' => 'Transaction Reference',
|
||||||
@ -688,6 +689,7 @@ $LANG = array(
|
|||||||
'military_time' => '24 Hour Time',
|
'military_time' => '24 Hour Time',
|
||||||
'last_sent' => 'Last Sent',
|
'last_sent' => 'Last Sent',
|
||||||
'reminder_emails' => 'Reminder Emails',
|
'reminder_emails' => 'Reminder Emails',
|
||||||
|
'quote_reminder_emails' => 'Quote Reminder Emails',
|
||||||
'templates_and_reminders' => 'Templates & Reminders',
|
'templates_and_reminders' => 'Templates & Reminders',
|
||||||
'subject' => 'Subject',
|
'subject' => 'Subject',
|
||||||
'body' => 'Body',
|
'body' => 'Body',
|
||||||
@ -2065,6 +2067,8 @@ $LANG = array(
|
|||||||
'last_30_days' => 'Last 30 Days',
|
'last_30_days' => 'Last 30 Days',
|
||||||
'this_month' => 'This Month',
|
'this_month' => 'This Month',
|
||||||
'last_month' => 'Last Month',
|
'last_month' => 'Last Month',
|
||||||
|
'current_quarter' => 'Current Quarter',
|
||||||
|
'last_quarter' => 'Last Quarter',
|
||||||
'last_year' => 'Last Year',
|
'last_year' => 'Last Year',
|
||||||
'custom_range' => 'Custom Range',
|
'custom_range' => 'Custom Range',
|
||||||
'url' => 'URL',
|
'url' => 'URL',
|
||||||
|
150
resources/views/accounts/quote_template.blade.php
Normal file
150
resources/views/accounts/quote_template.blade.php
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<div role="tabpanel" class="tab-pane {{ isset($active) && $active ? 'active' : '' }}" id="{{ $field }}">
|
||||||
|
<div class="panel-body" style="padding-bottom: 0px">
|
||||||
|
@if (isset($isReminder) && $isReminder)
|
||||||
|
|
||||||
|
{!! Former::populateField('enable_' . $field, intval($account->{'enable_' . $field})) !!}
|
||||||
|
@if (floatval($fee = $account->account_email_settings->{"late_fee_quote{$number}_amount"}))
|
||||||
|
{!! Former::populateField('late_fee_quote' . $number . '_amount', $fee) !!}
|
||||||
|
@endif
|
||||||
|
@if (floatval($fee = $account->account_email_settings->{"late_fee_quote{$number}_percent"}))
|
||||||
|
{!! Former::populateField('late_fee_quote' . $number . '_percent', $fee) !!}
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="well" style="padding-bottom:20px">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
@if ($field == 'quote_reminder4')
|
||||||
|
{!! Former::populateField('frequency_id_quote_reminder4', $account->account_email_settings->frequency_id_quote_reminder4) !!}
|
||||||
|
{!! Former::plaintext('frequency')
|
||||||
|
->value(
|
||||||
|
Former::select('frequency_id_quote_reminder4')
|
||||||
|
->options(\App\Models\Frequency::selectOptions())
|
||||||
|
->style('float:left;')
|
||||||
|
->raw()
|
||||||
|
) !!}
|
||||||
|
@else
|
||||||
|
{!! Former::populateField('num_days_' . $field, $account->account_email_settings->{'num_days_' . $field}) !!}
|
||||||
|
{!! Former::populateField('direction_' . $field, $account->account_email_settings->{'direction_' . $field}) !!}
|
||||||
|
{!! Former::populateField('field_' . $field, $account->account_email_settings->{'field_' . $field}) !!}
|
||||||
|
{!! 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">
|
||||||
|
{!! Former::populateField('enable_' . $field, $account->account_email_settings->{'enable_' . $field}) !!}
|
||||||
|
{!! Former::checkbox('enable_' . $field)
|
||||||
|
->text('enable')
|
||||||
|
->label('send_email')
|
||||||
|
->value(1) !!}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($field != 'quote_reminder4')
|
||||||
|
<div class="row" style="padding-top:30px">
|
||||||
|
<div class="col-md-6">
|
||||||
|
{!! Former::text('late_fee_quote' . $number . '_amount')
|
||||||
|
->label('late_fee_amount')
|
||||||
|
->type('number')
|
||||||
|
->step('any') !!}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
{!! Former::text('late_fee_quote' . $number . '_percent')
|
||||||
|
->label('late_fee_percent')
|
||||||
|
->type('number')
|
||||||
|
->step('any')
|
||||||
|
->append('%') !!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
@endif
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="pull-right"><a href="#" onclick="return resetText('{{ 'subject' }}', '{{ $field }}')">{{ trans("texts.reset") }}</a></div>
|
||||||
|
{!! Former::text('email_subject_' . $field)
|
||||||
|
->label(trans('texts.subject'))
|
||||||
|
->appendIcon('question-sign')
|
||||||
|
->addGroupClass('email-subject') !!}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<p> <p/>
|
||||||
|
<div id="{{ $field }}_subject_preview"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<br/>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="pull-right"><a href="#" onclick="return resetText('{{ 'template' }}', '{{ $field }}')">{{ trans("texts.reset") }}</a></div>
|
||||||
|
{!! Former::textarea('email_template_' . $field)
|
||||||
|
->label(trans('texts.body'))
|
||||||
|
->style('display:none') !!}
|
||||||
|
<div id="{{ $field }}Editor" class="form-control" style="min-height:160px">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<p> <p/>
|
||||||
|
<div id="{{ $field }}_template_preview"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p> <p/>
|
||||||
|
<div class="row">
|
||||||
|
<div class="pull-left show-when-ready" style="display:none">
|
||||||
|
@include('partials/quill_toolbar', ['name' => $field])
|
||||||
|
</div>
|
||||||
|
<div class="pull-right" style="padding-top:13px;text-align:right">
|
||||||
|
{!! Button::normal(trans('texts.raw'))->withAttributes(['onclick' => 'showRaw("'.$field.'")'])->small() !!}
|
||||||
|
{!! Button::primary(trans('texts.preview'))->withAttributes(['onclick' => 'serverPreview("'.$field.'")'])->small() !!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function() {
|
||||||
|
var editor = new Quill('#{{ $field }}Editor', {
|
||||||
|
modules: {
|
||||||
|
'toolbar': { container: '#{{ $field }}Toolbar' },
|
||||||
|
'link-tooltip': true
|
||||||
|
},
|
||||||
|
theme: 'snow'
|
||||||
|
});
|
||||||
|
editor.setHTML($('#email_template_{{ $field }}').val());
|
||||||
|
editor.on('text-change', function(delta, source) {
|
||||||
|
if (source == 'api') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var html = editors['{{ $field }}'].getHTML();
|
||||||
|
$('#email_template_{{ $field }}').val(html);
|
||||||
|
refreshPreview();
|
||||||
|
NINJA.formIsChanged = true;
|
||||||
|
});
|
||||||
|
editors['{{ $field }}'] = editor;
|
||||||
|
|
||||||
|
$('#field_{{ $field }}').change(function() {
|
||||||
|
setDirectionShown('{{ $field }}');
|
||||||
|
})
|
||||||
|
setDirectionShown('{{ $field }}');
|
||||||
|
|
||||||
|
$('.email-subject .input-group-addon').click(function() {
|
||||||
|
$('#templateHelpModal').modal('show');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
@ -88,6 +88,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">{!! trans('texts.quote_reminder_emails') !!}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="row">
|
||||||
|
<div role="tabpanel">
|
||||||
|
<ul class="nav nav-tabs" role="tablist" style="border: none">
|
||||||
|
<li role="presentation" class="active"><a href="#quote_reminder1" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.first_reminder') }}</a></li>
|
||||||
|
<li role="presentation"><a href="#quote_reminder2" aria-controls="terms" role="tab" data-toggle="tab">{{ trans('texts.second_reminder') }}</a></li>
|
||||||
|
<li role="presentation"><a href="#quote_reminder3" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.third_reminder') }}</a></li>
|
||||||
|
<li role="presentation"><a href="#quote_reminder4" aria-controls="footer" role="tab" data-toggle="tab">{{ trans('texts.endless_reminder') }}</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
@include('accounts.quote_template', ['field' => 'quote_reminder1', 'number' => 1, 'isReminder' => true, 'active' => true])
|
||||||
|
@include('accounts.quote_template', ['field' => 'quote_reminder2', 'number' => 2, 'isReminder' => true])
|
||||||
|
@include('accounts.quote_template', ['field' => 'quote_reminder3', 'number' => 3, 'isReminder' => true])
|
||||||
|
@include('accounts.quote_template', ['field' => 'quote_reminder4', 'number' => 4, 'isReminder' => true])
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="modal fade" id="templatePreviewModal" tabindex="-1" role="dialog" aria-labelledby="templatePreviewModalLabel" aria-hidden="true">
|
<div class="modal fade" id="templatePreviewModal" tabindex="-1" role="dialog" aria-labelledby="templatePreviewModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog" style="width:800px">
|
<div class="modal-dialog" style="width:800px">
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
var statementStartDate = moment("{{ $startDate }}");
|
var statementStartDate = moment("{{ $startDate }}");
|
||||||
var statementEndDate = moment("{{ $endDate }}");
|
var statementEndDate = moment("{{ $endDate }}");
|
||||||
|
var chartQuarter = moment().quarter();
|
||||||
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
||||||
|
|
||||||
function getPDFString(cb) {
|
function getPDFString(cb) {
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
var label = " {!! trans('texts.expenses') !!}: ";
|
var label = " {!! trans('texts.expenses') !!}: ";
|
||||||
}
|
}
|
||||||
|
|
||||||
return label + formatMoney(item.yLabel, chartCurrencyId, account.country_id);
|
return label + formatMoney(item.yLabel, realCurrencyId, account.country_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -73,7 +73,7 @@
|
|||||||
ticks: {
|
ticks: {
|
||||||
beginAtZero: true,
|
beginAtZero: true,
|
||||||
callback: function(label, index, labels) {
|
callback: function(label, index, labels) {
|
||||||
return formatMoney(label, chartCurrencyId, account.country_id);
|
return formatMoney(label, realCurrencyId, account.country_id);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}]
|
}]
|
||||||
@ -85,7 +85,9 @@
|
|||||||
|
|
||||||
var account = {!! $account !!};
|
var account = {!! $account !!};
|
||||||
var chartGroupBy = 'day';
|
var chartGroupBy = 'day';
|
||||||
|
var realCurrencyId = {{ $account->getCurrencyId() }};
|
||||||
var chartCurrencyId = {{ $account->getCurrencyId() }};
|
var chartCurrencyId = {{ $account->getCurrencyId() }};
|
||||||
|
var chartQuarter = moment().quarter();
|
||||||
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
||||||
var chartStartDate;
|
var chartStartDate;
|
||||||
var chartEndDate;
|
var chartEndDate;
|
||||||
@ -160,10 +162,11 @@
|
|||||||
t.addClass("active").siblings().removeClass("active");
|
t.addClass("active").siblings().removeClass("active");
|
||||||
|
|
||||||
if(t.attr("data-button") === "totals"){
|
if(t.attr("data-button") === "totals"){
|
||||||
|
realCurrencyId = account.currency.id;
|
||||||
chartCurrencyId = 'totals';
|
chartCurrencyId = "totals";
|
||||||
}else {
|
}else {
|
||||||
chartCurrencyId = currencyMap[t.text()].id;
|
realCurrencyId = currencyMap[t.text()].id;
|
||||||
|
chartCurrencyId = realCurrencyId;
|
||||||
}
|
}
|
||||||
displayTotalsNote();
|
displayTotalsNote();
|
||||||
|
|
||||||
@ -190,10 +193,6 @@
|
|||||||
response = JSON.parse(response);
|
response = JSON.parse(response);
|
||||||
loadChart(response.data);
|
loadChart(response.data);
|
||||||
|
|
||||||
var realCurrencyId = chartCurrencyId;
|
|
||||||
if(chartCurrencyId === "totals") realCurrencyId = account.currency.id;
|
|
||||||
|
|
||||||
|
|
||||||
var totals = response.totals;
|
var totals = response.totals;
|
||||||
$('.revenue-div').text(formatMoney(totals.revenue, realCurrencyId, account.country_id));
|
$('.revenue-div').text(formatMoney(totals.revenue, realCurrencyId, account.country_id));
|
||||||
$('.outstanding-div').text(formatMoney(totals.balance, realCurrencyId, account.country_id));
|
$('.outstanding-div').text(formatMoney(totals.balance, realCurrencyId, account.country_id));
|
||||||
|
@ -92,6 +92,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var account = {!! $account !!};
|
var account = {!! $account !!};
|
||||||
|
var chartQuarter = moment().quarter();
|
||||||
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
||||||
var chartStartDate;
|
var chartStartDate;
|
||||||
var chartEndDate;
|
var chartEndDate;
|
||||||
|
@ -63,6 +63,7 @@
|
|||||||
|
|
||||||
var chartStartDate = moment("{{ $startDate }}");
|
var chartStartDate = moment("{{ $startDate }}");
|
||||||
var chartEndDate = moment("{{ $endDate }}");
|
var chartEndDate = moment("{{ $endDate }}");
|
||||||
|
var chartQuarter = moment().quarter();
|
||||||
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
var dateRanges = {!! $account->present()->dateRangeOptions !!};
|
||||||
|
|
||||||
function resolveRange(range) {
|
function resolveRange(range) {
|
||||||
@ -358,6 +359,16 @@
|
|||||||
<div id="scheduleHelp"></div>
|
<div id="scheduleHelp"></div>
|
||||||
</center>
|
</center>
|
||||||
|
|
||||||
|
{!! Former::select('range')
|
||||||
|
->addOption(trans('texts.none'), '')
|
||||||
|
->addOption(trans('texts.this_month'), 'this_month')
|
||||||
|
->addOption(trans('texts.last_month'), 'last_month')
|
||||||
|
->addOption(trans('texts.current_quarter'), 'this_quarter')
|
||||||
|
->addOption(trans('texts.last_quarter'), 'last_quarter')
|
||||||
|
->addOption(trans('texts.this_year'), 'this_year')
|
||||||
|
->addOption(trans('texts.last_year'), 'last_year')
|
||||||
|
->value('') !!}
|
||||||
|
|
||||||
{!! Former::select('frequency')
|
{!! Former::select('frequency')
|
||||||
->addOption(trans('texts.freq_daily'), REPORT_FREQUENCY_DAILY)
|
->addOption(trans('texts.freq_daily'), REPORT_FREQUENCY_DAILY)
|
||||||
->addOption(trans('texts.freq_weekly'), REPORT_FREQUENCY_WEEKLY)
|
->addOption(trans('texts.freq_weekly'), REPORT_FREQUENCY_WEEKLY)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user