diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 4aba2693..d43dc0b7 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -657,52 +657,59 @@ class StockPicking(models.Model): if move_out: workorder = move_out.subcontract_workorder_id workorder.button_start() + # if self.location_id.name == '成品存货区' and self.location_dest_id == '客户': + # sale_id = self.env['sale.order'].sudo().search( + # [('name', '=', self.origin)]) + # if sale_id: + # sale_id.write({'state':'delivered'}) return res # 创建 外协出库入单 def create_outcontract_picking(self, workorders, item, sorted_workorders): for workorder in workorders: if workorder.move_subcontract_workorder_ids: - workorder.move_subcontract_workorder_ids.write({'state': 'waiting'}) - workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'waiting'}) + workorder.move_subcontract_workorder_ids.write({'state': 'cancel'}) + workorder.move_subcontract_workorder_ids.picking_id.write({'state': 'cancel'}) + # 创建一个新的补货组 + procurement_group_id = self.env['procurement.group'].create({ + 'name': workorder.name, + 'partner_id': self.partner_id.id, + }) + move_dest_id = False + # 如果当前工单是是制造订单的最后一个工艺外协工单 + if workorder == next((workorder for workorder in reversed(sorted_workorders) if workorder.is_subcontract), None): + move_dest_id = item.move_raw_ids[0].id else: - # 创建一个新的补货组 - procurement_group_id = self.env['procurement.group'].create({ - 'name': workorder.name, - 'partner_id': self.partner_id.id, - }) - move_dest_id = False - # 如果当前工单是是制造订单的最后一个工艺外协工单 - if workorder == next((workorder for workorder in reversed(item.workorder_ids) if workorder.is_subcontract), None): - move_dest_id = item.move_raw_ids[0].id - else: - # 从sorted_workorders中找到上一工单的move - if len(sorted_workorders) > 1: - move_dest_id = sorted_workorders[sorted_workorders.index(workorder)+1].move_subcontract_workorder_ids[1].id - new_picking = True - outcontract_picking_type_in = self.env.ref( - 'sf_manufacturing.outcontract_picking_in').id, - outcontract_picking_type_out = self.env.ref( - 'sf_manufacturing.outcontract_picking_out').id, - moves_in = self.env['stock.move'].sudo().create( - self.env['stock.move']._get_stock_move_values_Res(item, outcontract_picking_type_in, - procurement_group_id.id, move_dest_id)) - picking_in = self.create( - moves_in._get_new_picking_values_Res(item, workorder, 'WH/OCIN/')) - # pick_ids.append(picking_in.id) - moves_in.write( - {'picking_id': picking_in.id, 'state': 'waiting'}) - moves_in._assign_picking_post_process(new=new_picking) - moves_out = self.env['stock.move'].sudo().create( - self.env['stock.move']._get_stock_move_values_Res(item, outcontract_picking_type_out, - procurement_group_id.id, moves_in.id)) - workorder.write({'move_subcontract_workorder_ids': [(6, 0, [moves_in.id, moves_out.id])]}) - picking_out = self.create( - moves_out._get_new_picking_values_Res(item, workorder, 'WH/OCOUT/')) - # pick_ids.append(picking_out.id) - moves_out.write( - {'picking_id': picking_out.id, 'state': 'waiting'}) - moves_out._assign_picking_post_process(new=new_picking) + # 从sorted_workorders中找到上一工单的move + if len(sorted_workorders) > 1: + move_dest_id = sorted_workorders[sorted_workorders.index(workorder)+1].move_subcontract_workorder_ids[1].id + new_picking = True + outcontract_picking_type_in = self.env.ref( + 'sf_manufacturing.outcontract_picking_in').id, + outcontract_picking_type_out = self.env.ref( + 'sf_manufacturing.outcontract_picking_out').id, + moves_in = self.env['stock.move'].sudo().create( + self.env['stock.move']._get_stock_move_values_Res(item, outcontract_picking_type_in, + procurement_group_id.id, move_dest_id)) + picking_in = self.create( + moves_in._get_new_picking_values_Res(item, workorder, 'WH/OCIN/')) + # pick_ids.append(picking_in.id) + moves_in.write( + {'picking_id': picking_in.id, 'state': 'waiting'}) + moves_in._assign_picking_post_process(new=new_picking) + moves_out = self.env['stock.move'].sudo().create( + self.env['stock.move']._get_stock_move_values_Res(item, outcontract_picking_type_out, + procurement_group_id.id, moves_in.id)) + workorder.write({'move_subcontract_workorder_ids': [(6, 0, [moves_in.id, moves_out.id])]}) + picking_out = self.create( + moves_out._get_new_picking_values_Res(item, workorder, 'WH/OCOUT/')) + # pick_ids.append(picking_out.id) + moves_out.write( + {'picking_id': picking_out.id, 'state': 'waiting'}) + moves_out._assign_picking_post_process(new=new_picking) + + + @api.depends('move_type', 'immediate_transfer', 'move_ids.state', 'move_ids.picking_id') def _compute_state(self):