Update: the server-side bug 882036 was fixed and a new API is now available for float comparison, including float_round() and a float_compare() methods. It will be appropriate to use float_compare() here, passing the required precision as it comes from the decimal_precision configuration.
-- You received this bug notification because you are a member of OpenERP Framework Experts, which is subscribed to OpenERP Addons. https://bugs.launchpad.net/bugs/881356 Title: Floating Point / Rounding issue in stock partial picking wizard Status in OpenERP Addons (modules): In Progress Status in OpenERP Addons 6.0 series: Confirmed Bug description: We encountered an Floating Point rounding issue, in the Partial Picking wizard (stock/wizard/stock_partial_picking.py, do_partial) "Processing quantity 390.268 kg for $PRODUCT is larger than the available quantity 390.268 kg." (Decimal Precision of Product UoM is set to 3, UoM Rounding for kg is 0.001) OK, so I added an output of the test if calc_qty > move.move_id.product_qty: 390.268 > 390.268 As one would say, 390.268 > 390.268 should be false... But: calc_qty - move.move_id.product_qty => 390.268 - 390.268 is 5.68434188608e-14 This is beyond the default python %s rounding of 6 decimals (to understand the 390.268 > 290.268 output above) So here is a real problem with rounding precision and float (instead of decimal) data type. I changed the query to regard decimal precision: prec = dp.get_precision('Product UoM')(cr)[1] or 0 if int(calc_qty * (10**prec)) > int(move.move_id.product_qty * (10**prec)): and it works fine. To manage notifications about this bug go to: https://bugs.launchpad.net/openobject-addons/+bug/881356/+subscriptions -- Mailing list: https://launchpad.net/~credativ Post to : [email protected] Unsubscribe : https://launchpad.net/~credativ More help : https://help.launchpad.net/ListHelp

