Example #1
0
 public function newInstance(array $properties = [], $exists = false)
 {
     if (empty($properties)) {
         return false;
     }
     $model = new static($properties);
     $model->setExists($exists);
     if ($exists) {
         $model->fireEvent('afterGet');
     }
     return $model;
 }
Example #2
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
     }
 }