diff --git a/app/Helpers/Report/ReportHelper.php b/app/Helpers/Report/ReportHelper.php index e6472824c1..37222d4123 100644 --- a/app/Helpers/Report/ReportHelper.php +++ b/app/Helpers/Report/ReportHelper.php @@ -60,9 +60,10 @@ class ReportHelper implements ReportHelperInterface $accounts = $this->query->getAllAccounts($date, $end, $shared); - $start = 0; - $end = 0; - $diff = 0; + $start = '0'; + $end = '0'; + $diff = '0'; + bcscale(2); // remove cash account, if any: $accounts = $accounts->filter( @@ -77,9 +78,9 @@ class ReportHelper implements ReportHelperInterface // summarize: foreach ($accounts as $account) { - $start += $account->startBalance; - $end += $account->endBalance; - $diff += ($account->endBalance - $account->startBalance); + $start = bcadd($start, $account->startBalance); + $end = bcadd($end, $account->endBalance); + $diff = bcadd($diff, ($account->endBalance - $account->startBalance)); } $object = new AccountCollection; diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 1a589b9f4c..0a904f593c 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -205,7 +205,8 @@ class AccountController extends Controller 'openingBalanceCurrency' => intval($request->input('balance_currency_id')), ]; - $account = $repository->store($accountData); + + $account = $repository->store($accountData); Session::flash('success', 'New account "' . $account->name . '" stored!'); Preferences::mark(); diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php index 45bd8a2a44..ad7192415d 100644 --- a/app/Http/Controllers/Chart/BudgetController.php +++ b/app/Http/Controllers/Chart/BudgetController.php @@ -93,6 +93,7 @@ class BudgetController extends Controller { $start = clone $repetition->startdate; $end = $repetition->enddate; + bcscale(2); // chart properties for cache: $cache = new CacheProperties(); @@ -113,8 +114,8 @@ class BudgetController extends Controller /* * Sum of expenses on this day: */ - $sum = $repository->expensesOnDayCorrected($budget, $start); - $amount += $sum; + $sum = $repository->expensesOnDayCorrected($budget, $start); + $amount = bcadd($amount, $sum); $entries->push([clone $start, $amount]); $start->addDay(); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index a0fb4c0e09..78db6cc105 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -70,6 +70,7 @@ class HomeController extends Controller { $types = Config::get('firefly.accountTypesByIdentifier.asset'); $count = $repository->countAccounts($types); + bcscale(2); if ($count == 0) { @@ -92,7 +93,7 @@ class HomeController extends Controller $savingsTotal = 0; foreach ($savings as $savingAccount) { - $savingsTotal += Steam::balance($savingAccount, $end); + $savingsTotal = bcadd($savingsTotal, Steam::balance($savingAccount, $end)); } $sum = $repository->sumOfEverything(); diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php index 6dafae3266..e543534751 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/JsonController.php @@ -36,6 +36,7 @@ class JsonController extends Controller { $start = Session::get('start', Carbon::now()->startOfMonth()); $end = Session::get('end', Carbon::now()->endOfMonth()); + bcscale(2); // works for json too! $cache = new CacheProperties; @@ -54,7 +55,7 @@ class JsonController extends Controller /** @var Bill $bill */ foreach ($bills as $bill) { - $amount += $repository->billPaymentsInRange($bill, $start, $end); + $amount = bcadd($amount, $repository->billPaymentsInRange($bill, $start, $end)); } unset($bill, $bills); @@ -69,7 +70,7 @@ class JsonController extends Controller if ($balance == 0) { // find a transfer TO the credit card which should account for // anything paid. If not, the CC is not yet used. - $amount += $accountRepository->getTransfersInRange($creditCard, $start, $end)->sum('amount'); + $amount = bcadd($amount, $accountRepository->getTransfersInRange($creditCard, $start, $end)->sum('amount')); } } $data = ['box' => 'bills-paid', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount]; @@ -90,6 +91,7 @@ class JsonController extends Controller $amount = 0; $start = Session::get('start', Carbon::now()->startOfMonth()); $end = Session::get('end', Carbon::now()->endOfMonth()); + bcscale(2); // works for json too! $cache = new CacheProperties; @@ -131,7 +133,7 @@ class JsonController extends Controller /** @var Bill $entry */ foreach ($unpaid as $entry) { $current = ($entry[0]->amount_max + $entry[0]->amount_min) / 2; - $amount += $current; + $amount = bcadd($amount, $current); } $data = ['box' => 'bills-unpaid', 'amount' => Amount::format($amount, false), 'amount_raw' => $amount]; diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index 00900f9d08..4f5fd75996 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -166,6 +166,7 @@ class PiggyBankController extends Controller /** @var Collection $piggyBanks */ $piggyBanks = $piggyRepository->getPiggyBanks(); $end = Session::get('end', Carbon::now()->endOfMonth()); + bcscale(2); $accounts = []; /** @var PiggyBank $piggyBank */ @@ -188,9 +189,9 @@ class PiggyBankController extends Controller 'leftToSave' => $piggyBank->leftToSave ]; } else { - $accounts[$account->id]['sumOfSaved'] += $piggyBank->savedSoFar; - $accounts[$account->id]['sumOfTargets'] += floatval($piggyBank->targetamount); - $accounts[$account->id]['leftToSave'] += $piggyBank->leftToSave; + $accounts[$account->id]['sumOfSaved'] = bcadd($accounts[$account->id]['sumOfSaved'], $piggyBank->savedSoFar); + $accounts[$account->id]['sumOfTargets'] = bcadd($accounts[$account->id]['sumOfTargets'], $piggyBank->targetamount); + $accounts[$account->id]['leftToSave'] = bcadd($accounts[$account->id]['leftToSave'], $piggyBank->leftToSave); } } @@ -230,10 +231,11 @@ class PiggyBankController extends Controller $savedSoFar = $piggyBank->currentRelevantRep()->currentamount; $leftToSave = $piggyBank->targetamount - $savedSoFar; $maxAmount = round(min($leftOnAccount, $leftToSave), 2); + bcscale(2); if ($amount <= $maxAmount) { - $repetition = $piggyBank->currentRelevantRep(); - $repetition->currentamount += $amount; + $repetition = $piggyBank->currentRelevantRep(); + $repetition->currentamount = bcadd($repetition->currentamount, $amount); $repetition->save(); // create event