| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- <?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 saved(Document $document): void
 -     {
 -         $this->recalculateTotals($document);
 -     }
 - 
 -     protected function recalculateTotals(Document $document): void
 -     {
 -         // Sum up values from line items
 -         $subtotalCents = $document->lineItems()->sum('subtotal'); // Use the computed column directly
 -         $taxTotalCents = $document->lineItems()->sum('tax_total'); // Sum from line items
 -         $discountTotalCents = $document->lineItems()->sum('discount_total'); // Sum from line items
 -         $grandTotalCents = $subtotalCents + $taxTotalCents - $discountTotalCents; // Calculated as before
 - 
 -         // Convert from cents to dollars
 -         $subtotal = $subtotalCents / 100;
 -         $taxTotal = $taxTotalCents / 100;
 -         $discountTotal = $discountTotalCents / 100;
 -         $grandTotal = $grandTotalCents / 100;
 - 
 -         // Update document totals
 -         $document->updateQuietly([
 -             'subtotal' => $subtotal, // Use database-computed subtotal
 -             'tax_total' => $taxTotal,
 -             'discount_total' => $discountTotal,
 -             'total' => $grandTotal, // Use calculated grand total
 -         ]);
 -     }
 - 
 -     /**
 -      * Handle the Document "force deleted" event.
 -      */
 -     public function forceDeleted(Document $document): void
 -     {
 -         //
 -     }
 - }
 
 
  |