summaryrefslogtreecommitdiff
path: root/addons/stock/models/stock_picking.py
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2020-04-16 15:15:34 +0000
committerNicolas Martinelli <nim@odoo.com>2020-04-17 09:27:03 +0000
commita834a1b235b7392ee7df4e404efafd91889508e2 (patch)
tree126147c78a936940f800103c0cd1af6c124735af /addons/stock/models/stock_picking.py
parent4d843de26bc8e27e73587d399948c853f669f52e (diff)
[FIX] stock: correct qty comparison
Use `float_compare` to avoid the usual float representation comparison errors. opw-2215497 closes odoo/odoo#49702 X-original-commit: 500240874cd21c6950210968c8c7e8d84c1c4bee Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Diffstat (limited to 'addons/stock/models/stock_picking.py')
-rw-r--r--addons/stock/models/stock_picking.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py
index 3d9276c7061..12da2dd4902 100644
--- a/addons/stock/models/stock_picking.py
+++ b/addons/stock/models/stock_picking.py
@@ -956,6 +956,7 @@ class Picking(models.Model):
return True
def _check_backorder(self):
+ prec = self.env["decimal.precision"].precision_get("Product Unit of Measure")
backorder_pickings = self.browse()
for picking in self:
quantity_todo = {}
@@ -972,7 +973,10 @@ class Picking(models.Model):
for pack in picking.mapped('move_line_ids').filtered(lambda x: x.product_id and not x.move_id):
quantity_done.setdefault(pack.product_id.id, 0)
quantity_done[pack.product_id.id] += pack.product_uom_id._compute_quantity(pack.qty_done, pack.product_id.uom_id)
- if any(quantity_done[x] < quantity_todo.get(x, 0) for x in quantity_done):
+ if any(
+ float_compare(quantity_done[x], quantity_todo.get(x, 0), precision_digits=prec,) == -1
+ for x in quantity_done
+ ):
backorder_pickings |= picking
return backorder_pickings