. */ declare(strict_types=1); namespace FireflyIII\TransactionRules\Actions; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use FireflyIII\Services\Internal\Destroy\JournalDestroyService; use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService; use Log; /** * Class DeleteTransaction. */ class DeleteTransaction implements ActionInterface { /** * @inheritDoc */ public function actOnArray(array $journal): bool { $count = TransactionJournal::where('transaction_group_id', $journal['transaction_group_id'])->count(); // destroy entire group. if (1 === $count) { Log::debug( sprintf( 'RuleAction DeleteTransaction DELETED the entire transaction group of journal #%d ("%s").', $journal['transaction_journal_id'], $journal['description'] ) ); $group = TransactionGroup::find($journal['transaction_group_id']); $service = app(TransactionGroupDestroyService::class); $service->destroy($group); return true; } Log::debug( sprintf('RuleAction DeleteTransaction DELETED transaction journal #%d ("%s").', $journal['transaction_journal_id'], $journal['description']) ); // trigger delete factory: $journal = TransactionJournal::find($journal['transaction_group_id']); /** @var JournalDestroyService $service */ $service = app(JournalDestroyService::class); $service->destroy($journal); return true; } }