| 1234567891011121314151617181920212223242526272829303132333435 | 
							- <?php
 - 
 - namespace App\Observers;
 - 
 - use App\Enums\Accounting\InvoiceStatus;
 - use App\Models\Accounting\DocumentLineItem;
 - use App\Models\Accounting\Invoice;
 - use App\Models\Accounting\Transaction;
 - use Illuminate\Support\Facades\DB;
 - 
 - class InvoiceObserver
 - {
 -     public function saving(Invoice $invoice): void
 -     {
 -         if ($invoice->approved_at && $invoice->is_currently_overdue) {
 -             $invoice->status = InvoiceStatus::Overdue;
 -         }
 -     }
 - 
 -     /**
 -      * Handle the Invoice "deleted" event.
 -      */
 -     public function deleted(Invoice $invoice): void
 -     {
 -         DB::transaction(function () use ($invoice) {
 -             $invoice->lineItems()->each(function (DocumentLineItem $lineItem) {
 -                 $lineItem->delete();
 -             });
 - 
 -             $invoice->transactions()->each(function (Transaction $transaction) {
 -                 $transaction->delete();
 -             });
 -         });
 -     }
 - }
 
 
  |