. */ declare(strict_types=1); namespace FireflyIII\Console\Commands\Correction; use FireflyIII\Console\Commands\ShowsFriendlyMessages; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use Illuminate\Console\Command; /** * Class RemoveBills */ class RemoveBills extends Command { use ShowsFriendlyMessages; protected $description = 'Remove bills from transactions that shouldn\'t have one.'; protected $signature = 'firefly-iii:remove-bills'; /** * Execute the console command. * * @return int */ public function handle(): int { /** @var TransactionType|null $withdrawal */ $withdrawal = TransactionType::where('type', TransactionType::WITHDRAWAL)->first(); if (null === $withdrawal) { return 0; } $journals = TransactionJournal::whereNotNull('bill_id')->where('transaction_type_id', '!=', $withdrawal->id)->get(); /** @var TransactionJournal $journal */ foreach ($journals as $journal) { $this->friendlyWarning(sprintf('Transaction journal #%d will be unlinked from bill #%d.', $journal->id, $journal->bill_id)); $journal->bill_id = null; $journal->save(); } if ($journals->count() > 0) { $this->friendlyInfo('Fixed all transaction journals so they have correct bill information.'); } $this->friendlyPositive('All bills and journals are OK'); return 0; } }