public function run() { InvoiceStatus::create(['is_enabled' => true, 'name' => 'Draft', 'code' => 'draft']); InvoiceStatus::create(['is_enabled' => true, 'name' => 'Approved', 'code' => 'approved']); InvoiceStatus::create(['is_enabled' => true, 'name' => 'Paid', 'code' => 'paid']); InvoiceStatus::create(['is_enabled' => true, 'name' => 'Void', 'code' => 'void']); InvoiceTemplate::create(['name' => 'Default template', 'code' => 'default', 'is_default' => true]); }
public static function createRecord($statusId, $invoice, $comment = null) { if ($statusId instanceof Model) { $statusId = $statusId->getKey(); } if ($invoice->status_id == $statusId) { return false; } $previousStatus = $invoice->status_id; /* * Create record */ $record = new static(); $record->status_id = $statusId; $record->invoice_id = $invoice->id; $record->comment = $comment; /* * Extensibility */ if (Event::fire('responsiv.pay:beforeUpdateInvoiceStatus', [$record, $invoice, $statusId, $previousStatus], true) === false) { return false; } if ($record->fireEvent('pay:beforeUpdateInvoiceStatus', [$record, $invoice, $statusId, $previousStatus], true) === false) { return false; } $record->save(); /* * Update invoice status */ $invoice->newQuery()->where('id', $invoice->id)->update(['status_id' => $statusId, 'status_updated_at' => Carbon::now()]); $statusPaid = InvoiceStatus::getStatusPaid(); if (!$statusPaid) { return traceLog('Unable to find payment status with paid code'); } // @todo Send email notifications if ($statusId == $statusPaid->id) { // Invoice is paid } }
/** * {@inheritDoc} */ public function updateInvoiceStatus($statusCode) { if ($status = InvoiceStatus::getByCode($statusCode)) { InvoiceStatusLog::createRecord($status, $this); } }