working on sending recurring invoices

This commit is contained in:
David Bomba 2019-05-23 16:15:06 +10:00
parent 2549da4e6f
commit 474d99505e
2 changed files with 27 additions and 26 deletions

View File

@ -12,6 +12,7 @@
namespace App\Jobs\RecurringInvoice; namespace App\Jobs\RecurringInvoice;
use App\Factory\RecurringInvoiceToInvoiceFactory; use App\Factory\RecurringInvoiceToInvoiceFactory;
use App\Models\Invoice;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use App\Utils\Traits\GeneratesNumberCounter; use App\Utils\Traits\GeneratesNumberCounter;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -49,19 +50,15 @@ class SendRecurring
// Generate Standard Invoice // Generate Standard Invoice
$invoice = RecurringInvoiceToInvoiceFactory::create($this->recurring_invoice); $invoice = RecurringInvoiceToInvoiceFactory::create($this->recurring_invoice);
$invoice->invoice_number = $this->getNextNumber($invoice); $invoice->invoice_number = $this->getNextNumber($invoice);
$invoice->status_id = Invoice::STATUS_SENT;
$invoice->save(); $invoice->save();
// Queue: Emails for invoice // Queue: Emails for invoice
// $this->recurring_invoice->settings->invoice_email_list //todo comma separated list of emails to fire this email to
// Calcuate next send date for recurring invoice
// Decrement # of invoices remaining
// Fire Payment if auto-bill is enabled // Fire Payment if auto-bill is enabled
if($this->recurring_invoice->settings->auto_bill)
//PAYMENT ACTION HERE TODO
// Clean up recurring invoice object // Clean up recurring invoice object
@ -73,7 +70,6 @@ class SendRecurring
else else
$this->recurring_invoice->setCompleted(); $this->recurring_invoice->setCompleted();
$this->recurring_invoice->save(); $this->recurring_invoice->save();
} }

View File

@ -15,6 +15,7 @@ use App\Models\Filterable;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Carbon;
/** /**
* Class for Recurring Invoices. * Class for Recurring Invoices.
@ -84,35 +85,38 @@ class RecurringInvoice extends BaseModel
$this->morphMany(RecurringInvoiceInvitation::class); $this->morphMany(RecurringInvoiceInvitation::class);
} }
public function nextSendDate() public function nextSendDate() :?Carbon
{ {
switch ($this->frequency_id) { switch ($this->frequency_id)
{
case FREQUENCY_WEEKLY: case FREQUENCY_WEEKLY:
return $this->next_send_date->addWeek(); return Carbon::parse($this->next_send_date->addWeek());
case FREQUENCY_TWO_WEEKS: case FREQUENCY_TWO_WEEKS:
return $this->next_send_date->addWeeks(2); return Carbon::parse($this->next_send_date->addWeeks(2));
case FREQUENCY_FOUR_WEEKS: case FREQUENCY_FOUR_WEEKS:
return $this->next_send_date->addWeeks(4); return Carbon::parse($this->next_send_date->addWeeks(4));
case FREQUENCY_MONTHLY: case FREQUENCY_MONTHLY:
return $this->next_send_date->addMonth(); return Carbon::parse($this->next_send_date->addMonth());
case FREQUENCY_TWO_MONTHS: case FREQUENCY_TWO_MONTHS:
return $this->next_send_date->addMonths(2); return Carbon::parse($this->next_send_date->addMonths(2));
case FREQUENCY_THREE_MONTHS: case FREQUENCY_THREE_MONTHS:
return $this->next_send_date->addMonths(3); return Carbon::parse($this->next_send_date->addMonths(3));
case FREQUENCY_FOUR_MONTHS: case FREQUENCY_FOUR_MONTHS:
return $this->next_send_date->addMonths(4); return Carbon::parse($this->next_send_date->addMonths(4));
case FREQUENCY_SIX_MONTHS: case FREQUENCY_SIX_MONTHS:
return $this->next_send_date->addMonths(6); return Carbon::parse($this->next_send_date->addMonths(6));
case FREQUENCY_ANNUALLY: case FREQUENCY_ANNUALLY:
return $this->next_send_date->addYear(); return Carbon::parse($this->next_send_date->addYear());
case FREQUENCY_TWO_YEARS: case FREQUENCY_TWO_YEARS:
return $this->next_send_date->addYears(2); return Carbon::parse($this->next_send_date->addYears(2));
default: default:
return false; return null;
}
} }
public function remainingCycles() public function remainingCycles() : int
{ {
if($this->remaining_cycles == 0) if($this->remaining_cycles == 0)
@ -122,11 +126,12 @@ class RecurringInvoice extends BaseModel
} }
public function setCompleted() public function setCompleted() : void
{ {
$this->status_id = self::STATUS_COMPLETED; $this->status_id = self::STATUS_COMPLETED;
$this->next_send_date = null; $this->next_send_date = null;
$this->remaining_cycles = 0;
$this->save(); $this->save();
} }