trytond-patches/fifo_quantity_round.diff

15 lines
759 B
Diff

diff --git a/move.py b/move.py
index 1b41353..85c89eb 100644
--- a/trytond/trytond/modules/product_cost_fifo/move.py
+++ b/trytond/trytond/modules/product_cost_fifo/move.py
@@ -105,6 +105,9 @@ class Move(metaclass=PoolMeta):
move_qty = Uom.compute_qty(self.product.default_uom, move_qty,
move.uom, round=False)
move.fifo_quantity = (move.fifo_quantity or 0.0) + move_qty
+ # Due to float, the fifo quantity result can exceed the quantity.
+ assert move.quantity >= move.fifo_quantity - move.uom.rounding
+ move.fifo_quantity = min(move.fifo_quantity, move.quantity)
to_save.append(move)
if to_save:
# TODO save in do method when product change