diff --git a/modules/purchase_trade/lot.py b/modules/purchase_trade/lot.py index 7159ba5..6d4d7e9 100755 --- a/modules/purchase_trade/lot.py +++ b/modules/purchase_trade/lot.py @@ -195,9 +195,30 @@ class Lot(metaclass=PoolMeta): ('diff', diff), ])) + @classmethod + def _fresh_consistency_line(cls, line): + if not line: + return None + line_id = getattr(line, 'id', None) + if not line_id: + return line + if getattr(line, 'purchase', None): + return Pool().get('purchase.line')(line_id) + if getattr(line, 'sale', None): + return Pool().get('sale.line')(line_id) + return line + @classmethod def assert_lines_quantity_consistency(cls, lines): + seen = set() for line in lines: + line = cls._fresh_consistency_line(line) + line_id = ( + getattr(line, '__name__', None), + getattr(line, 'id', id(line))) + if line_id in seen: + continue + seen.add(line_id) cls._assert_line_quantity_consistency(line) @classmethod