From 54623061d8f21c24b633e3a0c8addd503790ef5b Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 2 Jul 2019 06:11:06 +0200 Subject: [PATCH] Make sure the date is passed on when running the cron job. --- app/Console/Commands/Tools/Cron.php | 16 ++++++++++++++++ app/Jobs/CreateRecurringTransactions.php | 4 ++-- app/Support/Cronjobs/RecurringCronjob.php | 4 +++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/Console/Commands/Tools/Cron.php b/app/Console/Commands/Tools/Cron.php index 31926c674a..51bfc46fe9 100644 --- a/app/Console/Commands/Tools/Cron.php +++ b/app/Console/Commands/Tools/Cron.php @@ -24,10 +24,12 @@ declare(strict_types=1); namespace FireflyIII\Console\Commands\Tools; +use Carbon\Carbon; use Exception; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Support\Cronjobs\RecurringCronjob; use Illuminate\Console\Command; +use InvalidArgumentException; /** * Class Cron @@ -58,9 +60,23 @@ class Cron extends Command */ public function handle(): int { + $date = null; + try { + $date = new Carbon($this->option('date')); + } catch (InvalidArgumentException $e) { + $this->error(sprintf('"%s" is not a valid date', $this->option('date'))); + $e->getMessage(); + } + $recurring = new RecurringCronjob; $recurring->setForce($this->option('force')); + + // set date in cron job: + if (null !== $date) { + $recurring->setDate($date); + } + try { $result = $recurring->fire(); } catch (FireflyException $e) { diff --git a/app/Jobs/CreateRecurringTransactions.php b/app/Jobs/CreateRecurringTransactions.php index 0659711f49..7979698499 100644 --- a/app/Jobs/CreateRecurringTransactions.php +++ b/app/Jobs/CreateRecurringTransactions.php @@ -55,7 +55,6 @@ use FireflyIII\Models\Recurrence; use FireflyIII\Models\RecurrenceMeta; use FireflyIII\Models\RecurrenceRepetition; use FireflyIII\Models\RecurrenceTransaction; -use FireflyIII\Models\Rule; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; @@ -63,7 +62,6 @@ use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use FireflyIII\TransactionRules\Engine\RuleEngine; -use FireflyIII\TransactionRules\Processor; use FireflyIII\User; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; @@ -109,6 +107,8 @@ class CreateRecurringTransactions implements ShouldQueue $this->groupRepository = app(TransactionGroupRepositoryInterface::class); $this->force = false; + Log::debug(sprintf('Created new CreateRecurringTransactions("%s")', $this->date->format('Y-m-d'))); + } /** diff --git a/app/Support/Cronjobs/RecurringCronjob.php b/app/Support/Cronjobs/RecurringCronjob.php index badc2ca666..f4062571c4 100644 --- a/app/Support/Cronjobs/RecurringCronjob.php +++ b/app/Support/Cronjobs/RecurringCronjob.php @@ -118,9 +118,11 @@ class RecurringCronjob extends AbstractCronjob */ private function fireRecurring(): void { + Log::info(sprintf('Will now fire recurring cron job task for date "%s".', $this->date->format('Y-m-d'))); $job = new CreateRecurringTransactions($this->date); $job->setForce($this->force); $job->handle(); - app('fireflyconfig')->set('last_rt_job', $this->date->format('U')); + app('fireflyconfig')->set('last_rt_job', (int)$this->date->format('U')); + Log::info('Done with recurring cron job task.'); } }