diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 8a2e0214..d3417c1f 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -1485,10 +1485,9 @@ class MrpProduction(models.Model): """ 重载创建制造订单的方法,单个制造订单,同一成品只创建一个采购组,用于后续单据的创建 """ + product_group_id = {} group_id = False - first_origin = next((obj['origin'] for obj in vals_list if 'origin' in obj), None) - if first_origin: - group_id = self.env["procurement.group"].create({'name':first_origin}).id + is_first = False for vals in vals_list: if not vals.get('name', False) or vals['name'] == _('New'): picking_type_id = vals.get('picking_type_id') @@ -1496,7 +1495,22 @@ class MrpProduction(models.Model): picking_type_id = self._get_default_picking_type_id(vals.get('company_id', self.env.company.id)) 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') and group_id: + if not is_first: + is_first = True + group_id = self.env["procurement.group"].create({'name': vals.get('name')}).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.categ_id.name =='成品': + vals['procurement_group_id'] = group_id + continue + 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)