123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
-
- namespace App\Observers;
-
- use App\Models\Accounting\Document;
-
- class DocumentObserver
- {
- /**
- * Handle the Document "created" event.
- */
- public function created(Document $document): void
- {
- //
- }
-
- /**
- * Handle the Document "deleted" event.
- */
- public function deleted(Document $document): void
- {
- //
- }
-
- /**
- * Handle the Document "restored" event.
- */
- public function restored(Document $document): void
- {
- //
- }
-
- public function updated(Document $document): void
- {
- $this->recalculateTotals($document);
- }
-
- public function saved(Document $document): void
- {
- $this->recalculateTotals($document);
- }
-
- protected function recalculateTotals(Document $document): void
- {
- // Sum up totals in cents
- $subtotalCents = $document->lineItems()->sum('total');
- $taxTotalCents = $document->lineItems()->sum('tax_total');
- $discountTotalCents = $document->lineItems()->sum('discount_total');
- $grandTotalCents = $subtotalCents + $taxTotalCents - $discountTotalCents;
-
- $subtotal = $subtotalCents / 100; // Convert to dollars
- $taxTotal = $taxTotalCents / 100;
- $discountTotal = $discountTotalCents / 100;
- $grandTotal = $grandTotalCents / 100;
-
- ray([
- 'subtotal' => $subtotal,
- 'tax_total' => $taxTotal,
- 'discount_total' => $discountTotal,
- 'grand_total' => $grandTotal,
- ]);
-
- $document->updateQuietly([
- 'subtotal' => $subtotal,
- 'tax_total' => $taxTotal,
- 'discount_total' => $discountTotal,
- 'total' => $grandTotal,
- ]);
- }
-
- /**
- * Handle the Document "force deleted" event.
- */
- public function forceDeleted(Document $document): void
- {
- //
- }
- }
|