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:
@@ -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),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user