From 25dcb73e27c9ba926ee401158c877673cff18824 Mon Sep 17 00:00:00 2001 From: James Cole Date: Mon, 5 Apr 2021 06:14:13 +0200 Subject: [PATCH] Fix #4600 --- app/Repositories/Account/OperationsRepository.php | 6 +++--- app/Support/Steam.php | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/Repositories/Account/OperationsRepository.php b/app/Repositories/Account/OperationsRepository.php index 1bea61be7f..c5b943b289 100644 --- a/app/Repositories/Account/OperationsRepository.php +++ b/app/Repositories/Account/OperationsRepository.php @@ -203,7 +203,7 @@ class OperationsRepository implements OperationsRepositoryInterface ]; $array[$currencyId]['transaction_journals'][$journalId] = [ - 'amount' => app('steam')->$direction($journal['amount']), + 'amount' => app('steam')->$direction((string)$journal['amount']), 'date' => $journal['date'], 'transaction_journal_id' => $journalId, 'budget_name' => $journal['budget_name'], @@ -364,7 +364,7 @@ class OperationsRepository implements OperationsRepositoryInterface 'currency_code' => $journal['currency_code'], 'currency_decimal_places' => $journal['currency_decimal_places'], ]; - $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method($journal['amount'])); + $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['amount'])); // also do foreign amount: if (0 !== (int)$journal['foreign_currency_id']) { @@ -379,7 +379,7 @@ class OperationsRepository implements OperationsRepositoryInterface 'currency_code' => $journal['foreign_currency_code'], 'currency_decimal_places' => $journal['foreign_currency_decimal_places'], ]; - $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method($journal['foreign_amount'])); + $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['foreign_amount'])); } } diff --git a/app/Support/Steam.php b/app/Support/Steam.php index f47cdb7f0c..b10e93f373 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -107,7 +107,7 @@ class Steam $repository = app(AccountRepositoryInterface::class); $repository->setUser($account->user); - $currencyId = (int)$repository->getMetaValue($account, 'currency_id'); + $currencyId = (int)$repository->getMetaValue($account, 'currency_id'); $transactions = $account->transactions() ->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') ->where('transaction_journals.date', '<=', $date->format('Y-m-d 23:59:59')) @@ -493,6 +493,9 @@ class Steam */ public function negative(string $amount): string { + if ('' === $amount) { + return '0'; + } if (1 === bccomp($amount, '0')) { $amount = bcmul($amount, '-1'); } @@ -554,6 +557,9 @@ class Steam */ public function positive(string $amount): string { + if ('' === $amount) { + return '0'; + } if (bccomp($amount, '0') === -1) { $amount = bcmul($amount, '-1'); }