From e8a580f3b722af9c4f37ed199a5ccc4d5c0d7ee4 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 6 Feb 2020 09:28:32 +0000 Subject: [PATCH] [FIX] point_of_sale: round prices - Activate 'Round Globally' - Create a 21 % tax included in price - Create a product costing 21.5 - Add the product in a pos order, make the payment The `price_subtotal` is saved as `17.768595`, while it should be `17.77`. When these amounts are added in [1] (coming from [2]), it can lead to an inconsistency in the final computation, preventing the closing because of an unbalanced journal entry. Actually, the total and the subtotal must always be rounded following the currency precision, as done in [3] and [4]. It was probably not causing an issue before 13.0 since the creation of the journal entry from the POS was different. [1] https://github.com/odoo/odoo/blob/b22935caa3df824bc56a0828da9bee921bca5a5b/addons/point_of_sale/models/pos_session.py#L381 [2] https://github.com/odoo/odoo/blob/b22935caa3df824bc56a0828da9bee921bca5a5b/addons/point_of_sale/models/pos_session.py#L557 [3] https://github.com/odoo/odoo/blob/b22935caa3df824bc56a0828da9bee921bca5a5b/addons/account/models/account.py#L1654 [4] https://github.com/odoo/odoo/blob/b22935caa3df824bc56a0828da9bee921bca5a5b/addons/account/models/account.py#L1740 opw-2181486 closes odoo/odoo#44834 X-original-commit: 0896afdc814937621fe6323bf16d461582207217 Signed-off-by: Nicolas Martinelli (nim) --- addons/point_of_sale/static/src/js/models.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index f5e4b079808..51925afd6d7 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1998,8 +1998,8 @@ exports.Orderline = Backbone.Model.extend({ return { 'taxes': taxes_vals, - 'total_excluded': sign * round_pr(total_excluded, currency_rounding), - 'total_included': sign * round_pr(total_included, currency_rounding), + 'total_excluded': sign * round_pr(total_excluded, this.pos.currency.rounding), + 'total_included': sign * round_pr(total_included, this.pos.currency.rounding), } }, get_all_prices: function(){