diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 9156dc38..f24eb6b9 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -729,40 +729,14 @@ class MrpProduction(models.Model): sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence) for i, workorder in enumerate(sorted_workorders): # 检查当前工作订单和下一个工作订单是否连续,并且供应商相同 - if i == 0: - consecutive_workorders.append(workorder) - elif workorder.sequence == sorted_workorders[ - i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id: - consecutive_workorders.append(workorder) - else: - # 处理连续组,如果它不为空 - if consecutive_workorders: - # 创建外协出入库单和采购订单 - self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) - self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, - product_id_to_production_names) - if i < len(sorted_workorders) - 1: - # 重置连续组,并添加当前工作订单 - consecutive_workorders = [workorder] - else: - # 判断最后一笔: - if workorder.sequence == sorted_workorders[ - i - 1].sequence and workorder.supplier_id.id == sorted_workorders[ - i - 1].supplier_id.id: - consecutive_workorders = [workorder] - else: - # 立即创建外协出入库单和采购订单 - self.env['stock.picking'].create_outcontract_picking(workorder, production) - self.env['purchase.order'].get_purchase_order(workorder, production, - product_id_to_production_names) - consecutive_workorders = [] - - # 处理最后一个组,即使它可能只有一个工作订单 - if consecutive_workorders: - self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production) - self.env['purchase.order'].get_purchase_order(consecutive_workorders, production, + if not workorder.picking_ids: + self.env['stock.picking'].create_outcontract_picking(workorder, production) + # if not workorder. + if not workorder.purchase_id: + self.env['purchase.order'].get_purchase_order(workorder, production, product_id_to_production_names) + # 工单排序 def _reset_work_order_sequence1(self, k): for rec in self: diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 4ea08f94..a55523a0 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -135,7 +135,7 @@ class ResMrpWorkOrder(models.Model): is_subcontract = fields.Boolean(string='是否外协') surface_technics_parameters_id = fields.Many2one('sf.production.process.parameter', string="表面工艺可选参数") picking_ids = fields.Many2many('stock.picking', string='外协出入库单') - # purchase_id = fields.Many2one('purchase.order', string='外协采购单') + purchase_id = fields.Many2many('purchase.order', string='外协采购单') surface_technics_picking_count = fields.Integer("外协出入库", compute='_compute_surface_technics_picking_ids') surface_technics_purchase_count = fields.Integer("外协采购", compute='_compute_surface_technics_purchase_ids') @@ -239,13 +239,11 @@ class ResMrpWorkOrder(models.Model): previous_workorder = self.env['mrp.workorder'].search( [('sequence', '=', workorder.sequence - 1), ('routing_type', '=', '表面工艺'), ('production_id', '=', workorder.production_id.id)]) - if previous_workorder: - if previous_workorder.supplier_id != workorder.supplier_id: - # process_product = self.env['product.template']._get_process_parameters_product( - # previous_workorder.surface_technics_parameters_id) - domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.id)] - else: - domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.id)] + # if previous_workorder: + # if previous_workorder.supplier_id != workorder.supplier_id: + # domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.id)] + # else: + domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.id)] picking_ids = self.env['stock.picking'].search(domain, order='id asc') workorder.surface_technics_picking_count = len(picking_ids) workorder.picking_ids = picking_ids.ids diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py index e225c274..3879860e 100644 --- a/sf_sale/models/sale_order.py +++ b/sf_sale/models/sale_order.py @@ -280,12 +280,13 @@ class RePurchaseOrder(models.Model): })) if server_product_process: - self.env['purchase.order'].sudo().create({ + purchase_order = self.env['purchase.order'].sudo().create({ 'partner_id': server_template.seller_ids[0].partner_id.id, 'origin': production.name, 'state': 'draft', 'purchase_type': 'consignment', 'order_line': server_product_process}) + consecutive_process_parameters.purchase_id = [(6, 0, [purchase_order.id])] # self.env.cr.commit() @api.onchange('order_line')