修复不同产品调拨单合并的bug

This commit is contained in:
胡尧
2024-11-21 09:26:23 +08:00
parent a7ed317b09
commit a1807e05db
2 changed files with 39 additions and 38 deletions

View File

@@ -1386,9 +1386,9 @@ class MrpProduction(models.Model):
@api.model_create_multi
def create(self, vals_list):
"""
重载创建制造订单的方法,单制造订单只创建一个采购组,用于后续单据的创建
重载创建制造订单的方法,单制造订单,同一成品只创建一个采购组,用于后续单据的创建
"""
group_id = None
product_group_id = {}
for vals in vals_list:
if not vals.get('name', False) or vals['name'] == _('New'):
picking_type_id = vals.get('picking_type_id')
@@ -1399,9 +1399,13 @@ class MrpProduction(models.Model):
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:
procurement_group_vals = self._prepare_procurement_group_vals(vals)
group_id = self.env["procurement.group"].create(procurement_group_vals).id if not group_id else group_id
vals['procurement_group_id'] = group_id
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]
return super(MrpProduction, self).create(vals_list)
@api.depends('procurement_group_id.stock_move_ids.created_purchase_line_id.order_id', 'procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id')
@@ -1409,7 +1413,7 @@ class MrpProduction(models.Model):
for production in self:
# 找到来源的第一张制造订单的采购组
if production.product_id.product_tmpl_id.single_manufacturing == True:
first_production = self.env['mrp.production'].search([('origin', '=', production.origin)], limit=1, order='id asc')
first_production = self.env['mrp.production'].search([('origin', '=', production.origin), ('product_id', '=', production.product_id.id)], limit=1, order='id asc')
production.purchase_order_count = len(first_production.procurement_group_id.stock_move_ids.created_purchase_line_id.order_id |
first_production.procurement_group_id.stock_move_ids.move_orig_ids.purchase_line_id.order_id)
else:
@@ -1420,7 +1424,7 @@ class MrpProduction(models.Model):
def _compute_picking_ids(self):
for order in self:
if order.product_id.product_tmpl_id.single_manufacturing == True:
first_order = self.env['mrp.production'].search([('origin', '=', order.origin)], limit=1, order='id asc')
first_order = self.env['mrp.production'].search([('origin', '=', order.origin), ('product_id', '=', order.product_id.id)], limit=1, order='id asc')
order.picking_ids = self.env['stock.picking'].search([
('group_id', '=', first_order.procurement_group_id.id), ('group_id', '!=', False),
])