From aa1c3946daa08bc948c0e423554c603aa8cc67a2 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Mon, 25 Jul 2016 10:56:06 +0200 Subject: [PATCH] [FIX] product: rounding in pricelist report The pricelist report might show price incorrectly rounded. For example, a calculated price of 20.625 will be displayed as 20.62 in the report since `formatLang` does not apply a rounding but simply truncate the value. Fixes #12875 --- addons/product/report/product_pricelist.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/product/report/product_pricelist.py b/addons/product/report/product_pricelist.py index cd7054aa1a3..6a49250734f 100644 --- a/addons/product/report/product_pricelist.py +++ b/addons/product/report/product_pricelist.py @@ -22,6 +22,7 @@ import time from openerp.osv import osv from openerp.report import report_sxw +from openerp.tools import float_round class product_pricelist(report_sxw.rml_parse): @@ -106,10 +107,11 @@ class product_pricelist(report_sxw.rml_parse): pricelist = self.pool.get('product.pricelist').browse(self.cr, self.uid, [pricelist_id], context=self.localcontext)[0] price_dict = self.pool.get('product.pricelist').price_get(self.cr, self.uid, [pricelist_id], product_id, qty, context=self.localcontext) if price_dict[pricelist_id]: - price = self.formatLang(price_dict[pricelist_id], digits=sale_price_digits, currency_obj=pricelist.currency_id) + price = float_round(price_dict[pricelist_id], precision_digits=sale_price_digits) else: res = self.pool.get('product.product').read(self.cr, self.uid, [product_id]) - price = self.formatLang(res[0]['list_price'], digits=sale_price_digits, currency_obj=pricelist.currency_id) + price = float_round(res[0]['list_price'], precision_digits=sale_price_digits) + price = self.formatLang(price, digits=sale_price_digits, currency_obj=pricelist.currency_id) return price