From ff765d46877b9f02b98ae57de69c6ac3e308b5b1 Mon Sep 17 00:00:00 2001 From: James Cole Date: Mon, 12 Jun 2023 06:24:30 +0200 Subject: [PATCH] Fix #7630 --- app/Console/Commands/Correction/FixUnevenAmount.php | 8 ++++++++ app/Console/Commands/Integrity/ReportIntegrity.php | 1 - app/Console/Commands/Integrity/ReportSum.php | 5 +++++ app/Console/Commands/Upgrade/UpgradeDatabase.php | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/Correction/FixUnevenAmount.php b/app/Console/Commands/Correction/FixUnevenAmount.php index e947c7fd76..95215fd5f9 100644 --- a/app/Console/Commands/Correction/FixUnevenAmount.php +++ b/app/Console/Commands/Correction/FixUnevenAmount.php @@ -51,6 +51,14 @@ class FixUnevenAmount extends Command ->get(['transaction_journal_id', DB::raw('SUM(amount) AS the_sum')]); /** @var stdClass $entry */ foreach ($journals as $entry) { + $sum = (string)$entry->the_sum; + if (!is_numeric($sum)) { + $message = sprintf('Journal #%d has an invalid sum ("%s"). No sure what to do.', $entry->transaction_journal_id, $entry->the_sum); + $this->warn($message); + app('log')->warning($message); + $count++; + continue; + } if (0 !== bccomp((string)$entry->the_sum, '0')) { $message = sprintf('Sum of journal #%d is %s instead of zero.', $entry->transaction_journal_id, $entry->the_sum); $this->warn($message); diff --git a/app/Console/Commands/Integrity/ReportIntegrity.php b/app/Console/Commands/Integrity/ReportIntegrity.php index 731ac0a9e1..7a7cf86ce3 100644 --- a/app/Console/Commands/Integrity/ReportIntegrity.php +++ b/app/Console/Commands/Integrity/ReportIntegrity.php @@ -60,7 +60,6 @@ class ReportIntegrity extends Command 'firefly-iii:create-group-memberships', 'firefly-iii:report-empty-objects', 'firefly-iii:report-sum', - 'firefly-iii:restore-oauth-keys', 'firefly-iii:upgrade-group-information', ]; foreach ($commands as $command) { diff --git a/app/Console/Commands/Integrity/ReportSum.php b/app/Console/Commands/Integrity/ReportSum.php index 01422536d4..2e245218cd 100644 --- a/app/Console/Commands/Integrity/ReportSum.php +++ b/app/Console/Commands/Integrity/ReportSum.php @@ -58,6 +58,11 @@ class ReportSum extends Command /** @var User $user */ foreach ($userRepository->all() as $user) { $sum = (string)$user->transactions()->sum('amount'); + if (!is_numeric($sum)) { + $message = sprintf('Error: Transactions for user #%d (%s) have an invalid sum ("%s").', $user->id, $user->email, $sum); + $this->error($message); + continue; + } if (0 !== bccomp($sum, '0')) { $message = sprintf('Error: Transactions for user #%d (%s) are off by %s!', $user->id, $user->email, $sum); $this->error($message); diff --git a/app/Console/Commands/Upgrade/UpgradeDatabase.php b/app/Console/Commands/Upgrade/UpgradeDatabase.php index 17ca07a0ed..07cc803bf3 100644 --- a/app/Console/Commands/Upgrade/UpgradeDatabase.php +++ b/app/Console/Commands/Upgrade/UpgradeDatabase.php @@ -65,6 +65,7 @@ class UpgradeDatabase extends Command 'firefly-iii:upgrade-liabilities', 'firefly-iii:liabilities-600', 'firefly-iii:budget-limit-periods', + 'firefly-iii:restore-oauth-keys', ]; $args = []; if ($this->option('force')) {