. */ declare(strict_types=1); namespace FireflyIII\Console\Commands\Correction; use FireflyIII\Console\Commands\ShowsFriendlyMessages; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use Illuminate\Console\Command; /** * Class DeleteZeroAmount */ class DeleteZeroAmount extends Command { use ShowsFriendlyMessages; protected $description = 'Delete transactions with zero amount.'; protected $signature = 'firefly-iii:delete-zero-amount'; /** * Execute the console command. */ public function handle(): int { $set = Transaction::where('amount', 0)->get(['transaction_journal_id'])->pluck('transaction_journal_id')->toArray(); $set = array_unique($set); $journals = TransactionJournal::whereIn('id', $set)->get(); /** @var TransactionJournal $journal */ foreach ($journals as $journal) { $this->friendlyWarning(sprintf('Deleted transaction journal #%d because the amount is zero (0.00).', $journal->id)); $journal->delete(); Transaction::where('transaction_journal_id', $journal->id)->delete(); } if (0 === $journals->count()) { $this->friendlyPositive('No zero-amount transaction journals.'); } return 0; } }