Accept Merge Request #1527: (feature/sale_order_route_pick -> develop)

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

Created By: @胡尧
Accepted By: @胡尧
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1527
This commit is contained in:
胡尧
2024-11-21 09:28:04 +08:00
committed by Coding
2 changed files with 39 additions and 38 deletions

View File

@@ -1361,9 +1361,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')
@@ -1374,9 +1374,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')
@@ -1384,7 +1388,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:
@@ -1395,7 +1399,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),
])