From 967c06a3a63439ce705a2ff49461a3e16c3e8d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 18 Apr 2018 10:19:10 +0200 Subject: [PATCH] Quantize to number of digits instead of rounding computed amount Rounding may change the result if currency rounding is not unitary. issue7284 review41251002 --- account.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/account.py b/account.py index fcfb50cfc9..0fa575f4fe 100644 --- a/account.py +++ b/account.py @@ -227,7 +227,8 @@ class Account(DeactivableMixin, ModelSQL, ModelView): balance += account_sum[child.id] if account.display_balance == 'credit-debit' and balance: balance *= -1 - balances[account.id] = account.currency.round(balance) + exp = Decimal(str(10.0 ** -account.currency_digits)) + balances[account.id] = balance.quantize(exp) return balances @classmethod @@ -275,8 +276,9 @@ class Account(DeactivableMixin, ModelSQL, ModelView): result[name][account_id] += value for account in accounts: for name in names: - result[name][account.id] = account.currency.round( - result[name][account.id]) + exp = Decimal(str(10.0 ** -account.currency_digits)) + result[name][account.id] = ( + result[name][account.id].quantize(exp)) return result def get_rec_name(self, name):