mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Always ensure next_run is calculated from the time the scheduler was last run, not when the scheduler was restarted.
This commit is contained in:
parent
368006f63f
commit
6b2ca2dfb2
@ -119,40 +119,40 @@ class SchedulerService
|
|||||||
|
|
||||||
switch ($this->scheduler->frequency_id) {
|
switch ($this->scheduler->frequency_id) {
|
||||||
case RecurringInvoice::FREQUENCY_DAILY:
|
case RecurringInvoice::FREQUENCY_DAILY:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addDay();
|
$next_run = now()->startOfDay()->addDay();
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_WEEKLY:
|
case RecurringInvoice::FREQUENCY_WEEKLY:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeek();
|
$next_run = now()->startOfDay()->addWeek();
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_TWO_WEEKS:
|
case RecurringInvoice::FREQUENCY_TWO_WEEKS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeeks(2);
|
$next_run = now()->startOfDay()->addWeeks(2);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_FOUR_WEEKS:
|
case RecurringInvoice::FREQUENCY_FOUR_WEEKS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeeks(4);
|
$next_run = now()->startOfDay()->addWeeks(4);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_MONTHLY:
|
case RecurringInvoice::FREQUENCY_MONTHLY:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthNoOverflow();
|
$next_run = now()->startOfDay()->addMonthNoOverflow();
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_TWO_MONTHS:
|
case RecurringInvoice::FREQUENCY_TWO_MONTHS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(2);
|
$next_run = now()->startOfDay()->addMonthsNoOverflow(2);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_THREE_MONTHS:
|
case RecurringInvoice::FREQUENCY_THREE_MONTHS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(3);
|
$next_run = now()->startOfDay()->addMonthsNoOverflow(3);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_FOUR_MONTHS:
|
case RecurringInvoice::FREQUENCY_FOUR_MONTHS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(4);
|
$next_run = now()->startOfDay()->addMonthsNoOverflow(4);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_SIX_MONTHS:
|
case RecurringInvoice::FREQUENCY_SIX_MONTHS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(6);
|
$next_run = now()->startOfDay()->addMonthsNoOverflow(6);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_ANNUALLY:
|
case RecurringInvoice::FREQUENCY_ANNUALLY:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYear();
|
$next_run = now()->startOfDay()->addYear();
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_TWO_YEARS:
|
case RecurringInvoice::FREQUENCY_TWO_YEARS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYears(2);
|
$next_run = now()->startOfDay()->addYears(2);
|
||||||
break;
|
break;
|
||||||
case RecurringInvoice::FREQUENCY_THREE_YEARS:
|
case RecurringInvoice::FREQUENCY_THREE_YEARS:
|
||||||
$next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYears(3);
|
$next_run = now()->startOfDay()->addYears(3);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$next_run = null;
|
$next_run = null;
|
||||||
|
@ -32,7 +32,7 @@ class SchedulerFactory extends Factory
|
|||||||
'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
|
'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
|
||||||
'next_run' => now()->addSeconds(rand(86400,8640000)),
|
'next_run' => now()->addSeconds(rand(86400,8640000)),
|
||||||
'next_run_client' => now()->addSeconds(rand(86400,8640000)),
|
'next_run_client' => now()->addSeconds(rand(86400,8640000)),
|
||||||
'template' => 'statement_task',
|
'template' => 'client_statement',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,7 +229,7 @@ class SchedulerTest extends TestCase
|
|||||||
$data = [
|
$data = [
|
||||||
'name' => 'A test statement scheduler',
|
'name' => 'A test statement scheduler',
|
||||||
'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
|
'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
|
||||||
'next_run' => "2023-01-01",
|
'next_run' => now()->format('Y-m-d'),
|
||||||
'template' => 'client_statement',
|
'template' => 'client_statement',
|
||||||
'parameters' => [
|
'parameters' => [
|
||||||
'date_range' => 'previous_month',
|
'date_range' => 'previous_month',
|
||||||
@ -251,7 +251,7 @@ class SchedulerTest extends TestCase
|
|||||||
|
|
||||||
$scheduler->fresh();
|
$scheduler->fresh();
|
||||||
|
|
||||||
$this->assertEquals("2023-02-01", $scheduler->next_run->format('Y-m-d'));
|
$this->assertEquals(now()->addMonth()->format('Y-m-d'), $scheduler->next_run->format('Y-m-d'));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user