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.

DocumentLineItemObserver.php 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Observers;
  3. use App\Models\Accounting\DocumentLineItem;
  4. class DocumentLineItemObserver
  5. {
  6. /**
  7. * Handle the DocumentLineItem "created" event.
  8. */
  9. public function created(DocumentLineItem $documentLineItem): void
  10. {
  11. //
  12. }
  13. /**
  14. * Handle the DocumentLineItem "updated" event.
  15. */
  16. public function updated(DocumentLineItem $documentLineItem): void
  17. {
  18. //
  19. }
  20. public function saving(DocumentLineItem $lineItem): void
  21. {
  22. // Calculate the base total (quantity * unit price)
  23. $lineItem->total = $lineItem->quantity * $lineItem->unit_price;
  24. // Calculate tax total (if applicable)
  25. $lineItem->tax_total = $lineItem->taxes->sum(fn ($tax) => $lineItem->total * ($tax->rate / 100));
  26. // Calculate discount total (if applicable)
  27. $lineItem->discount_total = $lineItem->discounts->sum(fn ($discount) => $lineItem->total * ($discount->rate / 100));
  28. }
  29. /**
  30. * Handle the DocumentLineItem "deleted" event.
  31. */
  32. public function deleted(DocumentLineItem $documentLineItem): void
  33. {
  34. //
  35. }
  36. /**
  37. * Handle the DocumentLineItem "restored" event.
  38. */
  39. public function restored(DocumentLineItem $documentLineItem): void
  40. {
  41. //
  42. }
  43. /**
  44. * Handle the DocumentLineItem "force deleted" event.
  45. */
  46. public function forceDeleted(DocumentLineItem $documentLineItem): void
  47. {
  48. //
  49. }
  50. }