From b5aebfe3d4f01177d4cd74a48a8f337a4fefdf1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 25 Dec 2022 11:40:25 +0100 Subject: [PATCH] Do not copy number of lot with sequence Closes #11593 --- modules/stock_lot/CHANGELOG | 2 ++ modules/stock_lot/stock.py | 8 ++++++++ .../stock_lot/tests/scenario_stock_lot_number.rst | 14 ++++++++++++++ 3 files changed, 24 insertions(+) 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'