選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

TransactionObserver.php 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Observers;
  3. use App\Models\Accounting\Transaction;
  4. use App\Services\TransactionService;
  5. class TransactionObserver
  6. {
  7. public function __construct(
  8. protected TransactionService $transactionService,
  9. ) {}
  10. /**
  11. * Handle the Transaction "saving" event.
  12. */
  13. public function saving(Transaction $transaction): void
  14. {
  15. if ($transaction->type->isTransfer() && $transaction->description === null) {
  16. $transaction->description = 'Account Transfer';
  17. }
  18. }
  19. /**
  20. * Handle the Transaction "created" event.
  21. */
  22. public function created(Transaction $transaction): void
  23. {
  24. $this->transactionService->createJournalEntries($transaction);
  25. }
  26. /**
  27. * Handle the Transaction "updated" event.
  28. */
  29. public function updated(Transaction $transaction): void
  30. {
  31. $transaction->refresh(); // DO NOT REMOVE
  32. $this->transactionService->updateJournalEntries($transaction);
  33. }
  34. /**
  35. * Handle the Transaction "deleting" event.
  36. */
  37. public function deleting(Transaction $transaction): void
  38. {
  39. $this->transactionService->deleteJournalEntries($transaction);
  40. }
  41. }