Catch uneven amounts

This commit is contained in:
James Cole
2023-06-21 06:07:35 +02:00
parent 40389fb6d5
commit 86a1f170c4

View File

@@ -47,7 +47,7 @@ class FixUnevenAmount extends Command
*/ */
public function handle(): int public function handle(): int
{ {
$count = 0; $count = 0;
$journals = DB::table('transactions') $journals = DB::table('transactions')
->groupBy('transaction_journal_id') ->groupBy('transaction_journal_id')
->whereNull('deleted_at') ->whereNull('deleted_at')
@@ -55,15 +55,23 @@ class FixUnevenAmount extends Command
/** @var stdClass $entry */ /** @var stdClass $entry */
foreach ($journals as $entry) { foreach ($journals as $entry) {
$sum = (string)$entry->the_sum; $sum = (string)$entry->the_sum;
if (!is_numeric($sum)) { if (!is_numeric($sum) || '' === $sum || str_contains($sum, 'e') || str_contains($sum, ',')) {
$message = sprintf('Journal #%d has an invalid sum ("%s"). No sure what to do.', $entry->transaction_journal_id, $entry->the_sum); $message = sprintf(
'Journal #%d has an invalid sum ("%s"). No sure what to do.',
$entry->transaction_journal_id,
$entry->the_sum
);
$this->friendlyWarning($message); $this->friendlyWarning($message);
app('log')->warning($message); app('log')->warning($message);
$count++; $count++;
continue; continue;
} }
if (0 !== bccomp((string)$entry->the_sum, '0')) { 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); $message = sprintf(
'Sum of journal #%d is %s instead of zero.',
$entry->transaction_journal_id,
$entry->the_sum
);
$this->friendlyWarning($message); $this->friendlyWarning($message);
app('log')->warning($message); app('log')->warning($message);
$this->fixJournal((int)$entry->transaction_journal_id); $this->fixJournal((int)$entry->transaction_journal_id);
@@ -78,7 +86,7 @@ class FixUnevenAmount extends Command
} }
/** /**
* @param int $param * @param int $param
*/ */
private function fixJournal(int $param): void private function fixJournal(int $param): void
{ {