. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Actions; use Exception; use FireflyIII\Models\RuleAction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Services\Internal\Destroy\JournalDestroyService; use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService; use Log; /** * Class DeleteTransaction. */ class DeleteTransaction implements ActionInterface { /** * TriggerInterface constructor. * * @param RuleAction $action */ public function __construct(RuleAction $action) { } /** * Will delete transaction journal. Also the group if no other journals are in the group. * * @param TransactionJournal $journal * * @throws Exception * @return bool */ public function act(TransactionJournal $journal): bool { $count = $journal->transactionGroup->transactionJournals()->count(); // destroy entire group. if (1 === $count) { Log::debug( sprintf( 'RuleAction DeleteTransaction DELETED the entire transaction group of journal #%d ("%s").', $journal->id, $journal->description ) ); $service = app(TransactionGroupDestroyService::class); $service->destroy($journal->transactionGroup); return true; } Log::debug(sprintf('RuleAction DeleteTransaction DELETED transaction journal #%d ("%s").', $journal->id, $journal->description)); // trigger delete factory: /** @var JournalDestroyService $service */ $service = app(JournalDestroyService::class); $service->destroy($journal); return true; } }