mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 20:18:33 -05: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) {
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_DAILY:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addDay();
 | 
			
		||||
                $next_run = now()->startOfDay()->addDay();
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_WEEKLY:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeek();
 | 
			
		||||
                $next_run = now()->startOfDay()->addWeek();
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_TWO_WEEKS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeeks(2);
 | 
			
		||||
                $next_run = now()->startOfDay()->addWeeks(2);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_FOUR_WEEKS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addWeeks(4);
 | 
			
		||||
                $next_run = now()->startOfDay()->addWeeks(4);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_MONTHLY:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthNoOverflow();
 | 
			
		||||
                $next_run = now()->startOfDay()->addMonthNoOverflow();
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_TWO_MONTHS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(2);
 | 
			
		||||
                $next_run = now()->startOfDay()->addMonthsNoOverflow(2);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_THREE_MONTHS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(3);
 | 
			
		||||
                $next_run = now()->startOfDay()->addMonthsNoOverflow(3);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_FOUR_MONTHS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(4);
 | 
			
		||||
                $next_run = now()->startOfDay()->addMonthsNoOverflow(4);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_SIX_MONTHS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addMonthsNoOverflow(6);
 | 
			
		||||
                $next_run = now()->startOfDay()->addMonthsNoOverflow(6);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_ANNUALLY:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYear();
 | 
			
		||||
                $next_run = now()->startOfDay()->addYear();
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_TWO_YEARS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYears(2);
 | 
			
		||||
                $next_run = now()->startOfDay()->addYears(2);
 | 
			
		||||
                break;
 | 
			
		||||
            case RecurringInvoice::FREQUENCY_THREE_YEARS:
 | 
			
		||||
                $next_run = Carbon::parse($this->scheduler->next_run)->startOfDay()->addYears(3);
 | 
			
		||||
                $next_run = now()->startOfDay()->addYears(3);
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                $next_run =  null;
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@ class SchedulerFactory extends Factory
 | 
			
		||||
            'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
 | 
			
		||||
            'next_run' => 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 = [
 | 
			
		||||
            'name' => 'A test statement scheduler',
 | 
			
		||||
            'frequency_id' => RecurringInvoice::FREQUENCY_MONTHLY,
 | 
			
		||||
            'next_run' => "2023-01-01",
 | 
			
		||||
            'next_run' => now()->format('Y-m-d'),
 | 
			
		||||
            'template' => 'client_statement',
 | 
			
		||||
            'parameters' => [
 | 
			
		||||
                'date_range' => 'previous_month',
 | 
			
		||||
@ -251,7 +251,7 @@ class SchedulerTest extends TestCase
 | 
			
		||||
 | 
			
		||||
        $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