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.

AdjustmentObserver.php 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Observers;
  3. use App\Models\Accounting\Account;
  4. use App\Models\Accounting\Adjustment;
  5. class AdjustmentObserver
  6. {
  7. public function creating(Adjustment $adjustment): void
  8. {
  9. if (! $adjustment->account_id && ! $adjustment->isNonRecoverablePurchaseTax()) {
  10. $account = null;
  11. if ($adjustment->isSalesTax()) {
  12. $account = Account::factory()->forSalesTax($adjustment->name, $adjustment->description)->create();
  13. } elseif ($adjustment->isRecoverablePurchaseTax()) {
  14. $account = Account::factory()->forPurchaseTax($adjustment->name, $adjustment->description)->create();
  15. } elseif ($adjustment->isSalesDiscount()) {
  16. $account = Account::factory()->forSalesDiscount($adjustment->name, $adjustment->description)->create();
  17. } elseif ($adjustment->isPurchaseDiscount()) {
  18. $account = Account::factory()->forPurchaseDiscount($adjustment->name, $adjustment->description)->create();
  19. }
  20. if ($account) {
  21. $adjustment->account()->associate($account);
  22. }
  23. }
  24. }
  25. public function updating(Adjustment $adjustment): void
  26. {
  27. if ($adjustment->account) {
  28. $adjustment->account->update([
  29. 'name' => $adjustment->name,
  30. 'description' => $adjustment->description,
  31. ]);
  32. }
  33. }
  34. }