表面工艺采购单与调拨单拆分
This commit is contained in:
@@ -729,40 +729,14 @@ class MrpProduction(models.Model):
|
|||||||
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence)
|
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence)
|
||||||
for i, workorder in enumerate(sorted_workorders):
|
for i, workorder in enumerate(sorted_workorders):
|
||||||
# 检查当前工作订单和下一个工作订单是否连续,并且供应商相同
|
# 检查当前工作订单和下一个工作订单是否连续,并且供应商相同
|
||||||
if i == 0:
|
if not workorder.picking_ids:
|
||||||
consecutive_workorders.append(workorder)
|
self.env['stock.picking'].create_outcontract_picking(workorder, production)
|
||||||
elif workorder.sequence == sorted_workorders[
|
# if not workorder.
|
||||||
i - 1].sequence + 1 and workorder.supplier_id.id == sorted_workorders[i - 1].supplier_id.id:
|
if not workorder.purchase_id:
|
||||||
consecutive_workorders.append(workorder)
|
self.env['purchase.order'].get_purchase_order(workorder, production,
|
||||||
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,
|
|
||||||
product_id_to_production_names)
|
product_id_to_production_names)
|
||||||
|
|
||||||
|
|
||||||
# 工单排序
|
# 工单排序
|
||||||
def _reset_work_order_sequence1(self, k):
|
def _reset_work_order_sequence1(self, k):
|
||||||
for rec in self:
|
for rec in self:
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
is_subcontract = fields.Boolean(string='是否外协')
|
is_subcontract = fields.Boolean(string='是否外协')
|
||||||
surface_technics_parameters_id = fields.Many2one('sf.production.process.parameter', string="表面工艺可选参数")
|
surface_technics_parameters_id = fields.Many2one('sf.production.process.parameter', string="表面工艺可选参数")
|
||||||
picking_ids = fields.Many2many('stock.picking', 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_picking_count = fields.Integer("外协出入库", compute='_compute_surface_technics_picking_ids')
|
||||||
surface_technics_purchase_count = fields.Integer("外协采购", compute='_compute_surface_technics_purchase_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(
|
previous_workorder = self.env['mrp.workorder'].search(
|
||||||
[('sequence', '=', workorder.sequence - 1), ('routing_type', '=', '表面工艺'),
|
[('sequence', '=', workorder.sequence - 1), ('routing_type', '=', '表面工艺'),
|
||||||
('production_id', '=', workorder.production_id.id)])
|
('production_id', '=', workorder.production_id.id)])
|
||||||
if previous_workorder:
|
# if previous_workorder:
|
||||||
if previous_workorder.supplier_id != workorder.supplier_id:
|
# if previous_workorder.supplier_id != workorder.supplier_id:
|
||||||
# process_product = self.env['product.template']._get_process_parameters_product(
|
# domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.id)]
|
||||||
# previous_workorder.surface_technics_parameters_id)
|
# else:
|
||||||
domain += [('surface_technics_parameters_id', '=', workorder.surface_technics_parameters_id.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')
|
picking_ids = self.env['stock.picking'].search(domain, order='id asc')
|
||||||
workorder.surface_technics_picking_count = len(picking_ids)
|
workorder.surface_technics_picking_count = len(picking_ids)
|
||||||
workorder.picking_ids = picking_ids.ids
|
workorder.picking_ids = picking_ids.ids
|
||||||
|
|||||||
@@ -280,12 +280,13 @@ class RePurchaseOrder(models.Model):
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
if server_product_process:
|
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,
|
'partner_id': server_template.seller_ids[0].partner_id.id,
|
||||||
'origin': production.name,
|
'origin': production.name,
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
'purchase_type': 'consignment',
|
'purchase_type': 'consignment',
|
||||||
'order_line': server_product_process})
|
'order_line': server_product_process})
|
||||||
|
consecutive_process_parameters.purchase_id = [(6, 0, [purchase_order.id])]
|
||||||
# self.env.cr.commit()
|
# self.env.cr.commit()
|
||||||
|
|
||||||
@api.onchange('order_line')
|
@api.onchange('order_line')
|
||||||
|
|||||||
Reference in New Issue
Block a user