You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

InvoiceObserver.php 853B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace App\Observers;
  3. use App\Enums\Accounting\InvoiceStatus;
  4. use App\Models\Accounting\DocumentLineItem;
  5. use App\Models\Accounting\Invoice;
  6. use App\Models\Accounting\Transaction;
  7. use Illuminate\Support\Facades\DB;
  8. class InvoiceObserver
  9. {
  10. public function saving(Invoice $invoice): void
  11. {
  12. if ($invoice->approved_at && $invoice->is_currently_overdue) {
  13. $invoice->status = InvoiceStatus::Overdue;
  14. }
  15. }
  16. public function deleted(Invoice $invoice): void
  17. {
  18. DB::transaction(function () use ($invoice) {
  19. $invoice->lineItems()->each(function (DocumentLineItem $lineItem) {
  20. $lineItem->delete();
  21. });
  22. $invoice->transactions()->each(function (Transaction $transaction) {
  23. $transaction->delete();
  24. });
  25. });
  26. }
  27. }