Exemplo n.º 1
0
 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
     }
 }