From fc4eae04888c2ffe4542f75373db1342e4bbc56c Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Mon, 17 Feb 2025 12:42:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=20=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E8=87=AA=E5=8A=A8=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8F=B7=20=20=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/stock.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 1e0b0849..901b521b 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -611,6 +611,18 @@ class StockPicking(models.Model): return sequence_id def button_validate(self): + # 校验“收料入库单、客供料入库单”是否已经分配序列号,如果没有分配则自动分配 + if self.picking_type_id.use_existing_lots is False and self.picking_type_id.use_create_lots is True: + for move in self.move_ids: + if not move.move_line_nosuggest_ids: + move.action_show_details() + else: + # 对已经生成的序列号做唯一性校验,如果重复则重新生成新的序列号 + line_lot_name = [line_id.lot_name for line_id in move.move_line_nosuggest_ids] + lot_ids = self.env['stock.lot'].sudo().search([('name', 'in', line_lot_name)]) + if lot_ids: + move.action_clear_lines_show_details() + move.action_show_details() res = super().button_validate() picking_type_in = self.env.ref('sf_manufacturing.outcontract_picking_in').id if res is True and self.picking_type_id.id == picking_type_in: @@ -844,7 +856,8 @@ class ReStockMove(models.Model): self.next_serial = self._get_tool_next_serial(self.company_id, self.product_id, self.origin) else: self.next_serial = self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) - if self.picking_type_id.sequence_code == 'DL' and not self.move_line_nosuggest_ids: + if (self.picking_type_id.use_existing_lots is False + and self.picking_type_id.use_create_lots is True and not self.move_line_nosuggest_ids): self.action_assign_serial_show_details() elif self.product_id.tracking == "lot": self._put_tool_lot(self.company_id, self.product_id, self.origin)