12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
-
- namespace App\Observers;
-
- use App\Enums\Accounting\BillStatus;
- use App\Models\Accounting\Bill;
- use App\Models\Accounting\DocumentLineItem;
- use App\Models\Accounting\Transaction;
- use Illuminate\Support\Facades\DB;
-
- class BillObserver
- {
- public function created(Bill $bill): void
- {
- // $bill->createInitialTransaction();
- }
-
- public function saving(Bill $bill): void
- {
- if ($bill->isDirty('due_date') && $bill->status === BillStatus::Overdue && ! $bill->shouldBeOverdue() && ! $bill->hasPayments()) {
- $bill->status = BillStatus::Open;
-
- return;
- }
-
- if ($bill->shouldBeOverdue()) {
- $bill->status = BillStatus::Overdue;
- }
- }
-
- /**
- * Handle the Bill "deleted" event.
- */
- public function deleted(Bill $bill): void
- {
- DB::transaction(function () use ($bill) {
- $bill->lineItems()->each(function (DocumentLineItem $lineItem) {
- $lineItem->delete();
- });
-
- $bill->transactions()->each(function (Transaction $transaction) {
- $transaction->delete();
- });
- });
- }
- }
|