From 474d99505e100aaf81f6c69415c7d8c664d27e7f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 23 May 2019 16:15:06 +1000 Subject: [PATCH] working on sending recurring invoices --- app/Jobs/RecurringInvoice/SendRecurring.php | 16 ++++----- app/Models/RecurringInvoice.php | 37 ++++++++++++--------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/app/Jobs/RecurringInvoice/SendRecurring.php b/app/Jobs/RecurringInvoice/SendRecurring.php index 00f4c8b2c1da..7aa1ce59c932 100644 --- a/app/Jobs/RecurringInvoice/SendRecurring.php +++ b/app/Jobs/RecurringInvoice/SendRecurring.php @@ -12,6 +12,7 @@ namespace App\Jobs\RecurringInvoice; use App\Factory\RecurringInvoiceToInvoiceFactory; +use App\Models\Invoice; use App\Models\RecurringInvoice; use App\Utils\Traits\GeneratesNumberCounter; use Illuminate\Http\Request; @@ -49,19 +50,15 @@ class SendRecurring // Generate Standard Invoice $invoice = RecurringInvoiceToInvoiceFactory::create($this->recurring_invoice); $invoice->invoice_number = $this->getNextNumber($invoice); + $invoice->status_id = Invoice::STATUS_SENT; $invoice->save(); - // Queue: Emails for invoice - - - // Calcuate next send date for recurring invoice - - - // Decrement # of invoices remaining - + // Queue: Emails for invoice + // $this->recurring_invoice->settings->invoice_email_list //todo comma separated list of emails to fire this email to // Fire Payment if auto-bill is enabled - + if($this->recurring_invoice->settings->auto_bill) + //PAYMENT ACTION HERE TODO // Clean up recurring invoice object @@ -73,7 +70,6 @@ class SendRecurring else $this->recurring_invoice->setCompleted(); - $this->recurring_invoice->save(); } diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index 0ba9dd163809..17f931f1be56 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -15,6 +15,7 @@ use App\Models\Filterable; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Carbon; /** * Class for Recurring Invoices. @@ -84,35 +85,38 @@ class RecurringInvoice extends BaseModel $this->morphMany(RecurringInvoiceInvitation::class); } - public function nextSendDate() + public function nextSendDate() :?Carbon { - switch ($this->frequency_id) { + switch ($this->frequency_id) + { case FREQUENCY_WEEKLY: - return $this->next_send_date->addWeek(); + return Carbon::parse($this->next_send_date->addWeek()); case FREQUENCY_TWO_WEEKS: - return $this->next_send_date->addWeeks(2); + return Carbon::parse($this->next_send_date->addWeeks(2)); case FREQUENCY_FOUR_WEEKS: - return $this->next_send_date->addWeeks(4); + return Carbon::parse($this->next_send_date->addWeeks(4)); case FREQUENCY_MONTHLY: - return $this->next_send_date->addMonth(); + return Carbon::parse($this->next_send_date->addMonth()); case FREQUENCY_TWO_MONTHS: - return $this->next_send_date->addMonths(2); + return Carbon::parse($this->next_send_date->addMonths(2)); case FREQUENCY_THREE_MONTHS: - return $this->next_send_date->addMonths(3); + return Carbon::parse($this->next_send_date->addMonths(3)); case FREQUENCY_FOUR_MONTHS: - return $this->next_send_date->addMonths(4); + return Carbon::parse($this->next_send_date->addMonths(4)); case FREQUENCY_SIX_MONTHS: - return $this->next_send_date->addMonths(6); + return Carbon::parse($this->next_send_date->addMonths(6)); case FREQUENCY_ANNUALLY: - return $this->next_send_date->addYear(); + return Carbon::parse($this->next_send_date->addYear()); case FREQUENCY_TWO_YEARS: - return $this->next_send_date->addYears(2); + return Carbon::parse($this->next_send_date->addYears(2)); default: - return false; + return null; + } + } - public function remainingCycles() + public function remainingCycles() : int { if($this->remaining_cycles == 0) @@ -122,12 +126,13 @@ class RecurringInvoice extends BaseModel } - public function setCompleted() + public function setCompleted() : void { $this->status_id = self::STATUS_COMPLETED; $this->next_send_date = null; + $this->remaining_cycles = 0; $this->save(); - + } }