[MERGE] OPW 572758: sale,purchase: ensure proper rounding of on_change results
authorOlivier Dony <odo@openerp.com>
Fri, 29 Jun 2012 14:14:29 +0000 (16:14 +0200)
committerOlivier Dony <odo@openerp.com>
Fri, 29 Jun 2012 14:14:29 +0000 (16:14 +0200)
lp bug: https://launchpad.net/bugs/954005 fixed

bzr revid: odo@openerp.com-20120629141429-jjts3op6crkq6njw

addons/purchase/purchase.py
addons/sale/sale.py

index 6fa1583..b0406ec 100644 (file)
@@ -28,6 +28,7 @@ import netsvc
 import pooler
 from tools.translate import _
 import decimal_precision as dp
+from product._common import rounding
 from osv.orm import browse_record, browse_null
 
 #
@@ -709,6 +710,9 @@ class purchase_order_line(osv.osv):
                         'uom': uom,
                         'date': date_order,
                         })[pricelist]
+        # at end, round price depending of 'Purchase Price' decimal precision
+        price_unit_precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Purchase Price')
+        price = rounding(price, 10**-price_unit_precision)
         if price is False:
             warning = {
                 'title': 'No valid pricelist line found !',
index 5d6c2ae..8a9fedc 100644 (file)
@@ -26,6 +26,7 @@ import time
 from osv import fields, osv
 from tools.translate import _
 import decimal_precision as dp
+from product._common import rounding
 import netsvc
 
 class sale_shop(osv.osv):
@@ -1135,6 +1136,9 @@ class sale_order_line(osv.osv):
                         'uom': uom,
                         'date': date_order,
                         })[pricelist]
+            # at end, round price depending of 'Sale Unit' decimal precision
+            price_unit_precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Sale Price')
+            price = rounding(price, 10**-price_unit_precision)
             if price is False:
                 warning = {
                     'title': 'No valid pricelist line found !',