diff --git a/modules/stock_lot/CHANGELOG b/modules/stock_lot/CHANGELOG index e18a172206..6252dc26ca 100644 --- a/modules/stock_lot/CHANGELOG +++ b/modules/stock_lot/CHANGELOG @@ -1,3 +1,5 @@ +* Do not copy number of lot with sequence + Version 6.6.0 - 2022-10-31 -------------------------- * Bug fixes (see mercurial logs for details) diff --git a/modules/stock_lot/stock.py b/modules/stock_lot/stock.py index 11b35c179d..4e567a0173 100644 --- a/modules/stock_lot/stock.py +++ b/modules/stock_lot/stock.py @@ -131,6 +131,14 @@ class Lot(ModelSQL, ModelView, LotMixin, StockMixin): if self.product: return self.product.default_uom.digits + @classmethod + def copy(cls, lots, default=None): + default = default.copy() if default else {} + has_sequence = {l.id: l.has_sequence for l in lots} + default.setdefault( + 'number', lambda o: None if has_sequence[o['id']] else o['number']) + return super().copy(lots, default=default) + @classmethod def create(cls, vlist): vlist = [v.copy() for v in vlist] diff --git a/modules/stock_lot/tests/scenario_stock_lot_number.rst b/modules/stock_lot/tests/scenario_stock_lot_number.rst index da55c438ff..bdf8a3023f 100644 --- a/modules/stock_lot/tests/scenario_stock_lot_number.rst +++ b/modules/stock_lot/tests/scenario_stock_lot_number.rst @@ -51,3 +51,17 @@ Create lot without number:: >>> lot.number '1' + +Copy set a new number:: + + >>> lot2, = lot.duplicate() + >>> lot2.number + '2' + +Copy without sequence keep same number:: + + >>> template.lot_sequence = None + >>> template.save() + >>> lot3, = lot.duplicate() + >>> lot3.number + '1'