From 7bafe98a0ca69ed8335dac90c203946ea6d1107d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 25 Aug 2024 11:02:33 +0200 Subject: [PATCH] Group generation of stock lot number --- modules/stock_lot/stock.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/stock_lot/stock.py b/modules/stock_lot/stock.py index 57e375aa66..af1082576d 100644 --- a/modules/stock_lot/stock.py +++ b/modules/stock_lot/stock.py @@ -146,20 +146,20 @@ class Lot(DeactivableMixin, ModelSQL, ModelView, LotMixin, StockMixin): @classmethod def create(cls, vlist): - vlist = [v.copy() for v in vlist] - for values in vlist: - if not values.get('number'): - values['number'] = cls._new_number(values) - return super().create(vlist) - - @classmethod - def _new_number(cls, values): pool = Pool() Product = pool.get('product.product') - if values.get('product'): - product = Product(values['product']) - if product.lot_sequence: - return product.lot_sequence.get() + vlist = [v.copy() for v in vlist] + missing_number = defaultdict(list) + for values in vlist: + if not values.get('number') and values.get('product') is not None: + product = Product(values['product']) + if product.lot_sequence: + missing_number[product.lot_sequence].append(values) + + for sequence, values in missing_number.items(): + for vals, number in zip(values, sequence.get_many(len(values))): + vals['number'] = number + return super().create(vlist) @classmethod @check_no_move