X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Fproduct%2Fproduct.py;h=589ff9e5cb7d54640dda306114e8138763489817;hb=e17222a38d2d4cd32057a59e65be82edd103836c;hp=b5c99c860f5e1f2065aad5e33159bdaf22065d4f;hpb=4720c8898b24a0eb60232697f827bed3ebcf40ab;p=odoo%2Fodoo.git diff --git a/addons/product/product.py b/addons/product/product.py index b5c99c8..589ff9e 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -142,7 +142,7 @@ class product_uom(osv.osv): string='Bigger Ratio', help='How many times this Unit of Measure is bigger than the reference Unit of Measure in this category:\n'\ '1 * (this unit) = ratio * (reference unit)', required=True), - 'rounding': fields.float('Rounding Precision', digits_compute=dp.get_precision('Product Unit of Measure'), required=True, + 'rounding': fields.float('Rounding Precision', digits=0, required=True, help="The computed quantity will be a multiple of this value. "\ "Use 1.0 for a Unit of Measure that cannot be further split, such as a piece."), 'active': fields.boolean('Active', help="By unchecking the active field you can disable a unit of measure without deleting it."), @@ -156,13 +156,14 @@ class product_uom(osv.osv): 'rounding': 0.01, 'factor': 1, 'uom_type': 'reference', + 'factor': 1.0, } _sql_constraints = [ ('factor_gt_zero', 'CHECK (factor!=0)', 'The conversion ratio for a unit of measure cannot be 0!') ] - def _compute_qty(self, cr, uid, from_uom_id, qty, to_uom_id=False, round=True): + def _compute_qty(self, cr, uid, from_uom_id, qty, to_uom_id=False, round=True, rounding_method='UP'): if not from_uom_id or not qty or not to_uom_id: return qty uoms = self.browse(cr, uid, [from_uom_id, to_uom_id]) @@ -170,9 +171,9 @@ class product_uom(osv.osv): from_unit, to_unit = uoms[0], uoms[-1] else: from_unit, to_unit = uoms[-1], uoms[0] - return self._compute_qty_obj(cr, uid, from_unit, qty, to_unit, round=round) + return self._compute_qty_obj(cr, uid, from_unit, qty, to_unit, round=round, rounding_method=rounding_method) - def _compute_qty_obj(self, cr, uid, from_unit, qty, to_unit, round=True, context=None): + def _compute_qty_obj(self, cr, uid, from_unit, qty, to_unit, round=True, rounding_method='UP', context=None): if context is None: context = {} if from_unit.category_id.id != to_unit.category_id.id: @@ -184,7 +185,7 @@ class product_uom(osv.osv): if to_unit: amount = amount * to_unit.factor if round: - amount = ceiling(amount, to_unit.rounding) + amount = float_round(amount, precision_rounding=to_unit.rounding, rounding_method=rounding_method) return amount def _compute_price(self, cr, uid, from_uom_id, price, to_uom_id=False):