Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

EstimateObserver.php 1.0KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Observers;
  3. use App\Enums\Accounting\EstimateStatus;
  4. use App\Models\Accounting\DocumentLineItem;
  5. use App\Models\Accounting\Estimate;
  6. use Illuminate\Support\Facades\DB;
  7. class EstimateObserver
  8. {
  9. public function saving(Estimate $estimate): void
  10. {
  11. if (! $estimate->wasApproved()) {
  12. return;
  13. }
  14. if ($estimate->isDirty('expiration_date') && $estimate->status === EstimateStatus::Expired && ! $estimate->is_currently_expired) {
  15. $estimate->status = $estimate->hasBeenSent() ? EstimateStatus::Sent : EstimateStatus::Unsent;
  16. return;
  17. }
  18. if ($estimate->is_currently_expired && $estimate->canBeExpired()) {
  19. $estimate->status = EstimateStatus::Expired;
  20. }
  21. }
  22. public function deleted(Estimate $estimate): void
  23. {
  24. DB::transaction(function () use ($estimate) {
  25. $estimate->lineItems()->each(function (DocumentLineItem $lineItem) {
  26. $lineItem->delete();
  27. });
  28. });
  29. }
  30. }