From ebf290fbb38717bade64947b91ed4454daf96258 Mon Sep 17 00:00:00 2001 From: liaodanlong Date: Thu, 9 Jan 2025 14:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E4=BE=9B=E6=96=99=E8=B0=83=E6=8B=A8?= =?UTF-8?q?=E5=8D=95=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 12 +---- sf_manufacturing/models/stock.py | 56 ++++++++--------------- 2 files changed, 20 insertions(+), 48 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index fd136048..8a1c9072 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1480,7 +1480,7 @@ class MrpProduction(models.Model): """ 重载创建制造订单的方法,单个制造订单,同一成品只创建一个采购组,用于后续单据的创建 """ - product_group_id = {} + group_id = self.env["procurement.group"].create({'name':vals_list[0].get('origin')}).id for vals in vals_list: if not vals.get('name', False) or vals['name'] == _('New'): picking_type_id = vals.get('picking_type_id') @@ -1489,15 +1489,7 @@ class MrpProduction(models.Model): vals['picking_type_id'] = picking_type_id vals['name'] = self.env['stock.picking.type'].browse(picking_type_id).sequence_id.next_by_id() if not vals.get('procurement_group_id'): - product_id = self.env['product.product'].browse(vals['product_id']) - if product_id.product_tmpl_id.single_manufacturing: - if product_id.id not in product_group_id.keys(): - procurement_group_vals = self._prepare_procurement_group_vals(vals) - group_id = self.env["procurement.group"].create(procurement_group_vals).id - vals['procurement_group_id'] = group_id - product_group_id[product_id.id] = group_id - else: - vals['procurement_group_id'] = product_group_id[product_id.id] + vals['procurement_group_id'] = group_id return super(MrpProduction, self).create(vals_list) @api.depends('procurement_group_id.stock_move_ids.created_purchase_line_id.order_id', diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index d237a566..d19d7f92 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -72,35 +72,6 @@ class StockRule(models.Model): moves_values_by_company = defaultdict(list) mtso_products_by_locations = defaultdict(list) - # To handle the `mts_else_mto` procure method, we do a preliminary loop to - # isolate the products we would need to read the forecasted quantity, - # in order to to batch the read. We also make a sanitary check on the - # `location_src_id` field. - - # list1 = [] - # for item in procurements: - # num = int(item[0].product_qty) - # if num > 1: - # for no in range(1, num+1): - # - # Procurement = namedtuple('Procurement', ['product_id', 'product_qty', - # 'product_uom', 'location_id', 'name', 'origin', - # 'company_id', - # 'values']) - # s = Procurement(product_id=item[0].product_id,product_qty=1.0,product_uom=item[0].product_uom, - # location_id=item[0].location_id, - # name=item[0].name, - # origin=item[0].origin, - # company_id=item[0].company_id, - # values=item[0].values, - # ) - # item1 = list(item) - # item1[0]=s - # - # list1.append(tuple(item1)) - # else: - # list1.append(item) - for procurement, rule in procurements: if not rule.location_src_id: msg = _('No source location defined on stock rule: %s!') % (rule.name,) @@ -618,15 +589,21 @@ class StockPicking(models.Model): item.address_of_delivery = sale_info.address_of_delivery # 设置外协出入单的名称 - def _get_name_Res(self, rescode): - last_picking = self.sudo().search([('name', 'ilike', rescode)], order='create_date desc,id desc', limit=1) - if not last_picking: - num = "%04d" % 1 + def _get_name_Res(self, rescode,sequence): + last_picking = self.sudo().search([('name', 'ilike', rescode)], order='name desc', limit=1) + sequence_id = sequence.next_by_id() + name_without_prefix = last_picking.name.removeprefix(rescode) + try: + name_value = int(name_without_prefix) # 假设 name 是一个数字字符串 + except ValueError: + name_value = 0 + if name_value >= int(sequence_id.removeprefix(rescode)): + sequence.write({ + 'number_next': name_value + 1, + }) + return sequence.next_by_id() else: - logging.info('编号:' + last_picking.name) - m = int(last_picking.name[-3:]) + 1 - num = "%04d" % m - return '%s%s' % (rescode, num) + return sequence_id def button_validate(self): res = super().button_validate() @@ -787,12 +764,15 @@ class ReStockMove(models.Model): def _get_new_picking_values_Res(self, item, sorted_workorders, rescode): picking_type_id = self.mapped('picking_type_id').id + sequence = False if rescode == 'WH/OCOUT/': picking_type_id = self.env.ref('sf_manufacturing.outcontract_picking_out').id + sequence = self.env.ref('sf_manufacturing.sequence_stock_picking_out') elif rescode == 'WH/OCIN/': picking_type_id = self.env.ref('sf_manufacturing.outcontract_picking_in').id + sequence = self.env.ref('sf_manufacturing.sequence_stock_picking_in') return { - 'name': self.env['stock.picking']._get_name_Res(rescode), + 'name': self.env['stock.picking']._get_name_Res(rescode,sequence), 'origin': item.name, 'surface_technics_parameters_id': sorted_workorders.surface_technics_parameters_id.id, 'company_id': self.mapped('company_id').id,