diff --git a/app/Console/Commands/RecurringCommand.php b/app/Console/Commands/RecurringCommand.php new file mode 100644 index 000000000000..df3e7caf5a20 --- /dev/null +++ b/app/Console/Commands/RecurringCommand.php @@ -0,0 +1,53 @@ +addMinutes(30))->cursor(); + $recurring_invoices = RecurringInvoice::whereDate('next_send_date', '=', now())->cursor(); - Log::info(Carbon::now()->addMinutes(30).' Sending Recurring Invoices. Count = '.$recurring_invoices->count()); + Log::info(now()->format('Y-m-d') . ' Sending Recurring Invoices. Count = '.$recurring_invoices->count().' On Database # '.$db); + + $recurring_invoices->each(function ($recurring_invoice, $key) { + + info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date); - $recurring_invoices->each(function ($recurring_invoice, $key) { SendRecurring::dispatch($recurring_invoice, $recurring_invoice->company->db); + }); } else { //multiDB environment, need to foreach (MultiDB::$dbs as $db) { + MultiDB::setDB($db); - $recurring_invoices = RecurringInvoice::where('next_send_date', '<=', Carbon::now()->addMinutes(30))->cursor(); + $recurring_invoices = RecurringInvoice::whereDate('next_send_date', '=', now())->cursor(); - Log::info(Carbon::now()->addMinutes(30).' Sending Recurring Invoices. Count = '.$recurring_invoices->count().' On Database # '.$db); + Log::info(now()->format('Y-m-d') . ' Sending Recurring Invoices. Count = '.$recurring_invoices->count().' On Database # '.$db); $recurring_invoices->each(function ($recurring_invoice, $key) { + + info("Current date = " . now()->format("Y-m-d") . " Recurring date = " .$recurring_invoice->next_send_date); + SendRecurring::dispatch($recurring_invoice, $recurring_invoice->company->db); + }); } } diff --git a/app/Jobs/RecurringInvoice/SendRecurring.php b/app/Jobs/RecurringInvoice/SendRecurring.php index 850baef2a8ee..cb2d10f34a1c 100644 --- a/app/Jobs/RecurringInvoice/SendRecurring.php +++ b/app/Jobs/RecurringInvoice/SendRecurring.php @@ -54,15 +54,19 @@ class SendRecurring implements ShouldQueue */ public function handle() : void { + info(" in the handle "); // Generate Standard Invoice $invoice = RecurringInvoiceToInvoiceFactory::create($this->recurring_invoice, $this->recurring_invoice->client); + $invoice = $invoice->service() ->markSent() - ->applyRecurringNumber() + ->applyNumber() ->createInvitations() ->save(); + info("Invoice {$invoice->number} created"); + $invoice->invitations->each(function ($invitation) use ($invoice) { $email_builder = (new InvoiceEmail())->build($invitation); @@ -76,6 +80,7 @@ class SendRecurring implements ShouldQueue if($invoice->client->getSetting('auto_bill_date') == 'on_send_date' && $this->recurring_invoice->auto_bill_enabled) $invoice->service()->autoBill()->save(); + info("updating recurring invoice dates"); /* Set next date here to prevent a recurring loop forming */ $this->recurring_invoice->next_send_date = $this->recurring_invoice->nextSendDate()->format('Y-m-d'); $this->recurring_invoice->remaining_cycles = $this->recurring_invoice->remainingCycles(); @@ -85,6 +90,10 @@ class SendRecurring implements ShouldQueue if ($this->recurring_invoice->remaining_cycles == 0) $this->recurring_invoice->setCompleted(); + info($this->recurring_invoice->next_send_date); + info($this->recurring_invoice->remaining_cycles); + info($this->recurring_invoice->last_sent_date); + $this->recurring_invoice->save(); if ($invoice->invitations->count() > 0)