判断外协工序是否连续有多个外协工序为同一个供应商(产品为表面工艺服务的供应商),

This commit is contained in:
jinling.yang
2023-04-14 17:54:20 +08:00
parent d80b4b6169
commit a5c707bf43
8 changed files with 89 additions and 59 deletions

View File

@@ -132,7 +132,7 @@ class MrpProduction(models.Model):
# 表面工艺工序
# 获取表面工艺id
surface_technics_arr = []
#工序id
# 工序id
route_workcenter_arr = []
for item in production.product_id.product_model_type_id.surface_technics_routing_tmpl_ids:
surface_technics_arr.append(item.route_workcenter_id.surface_technics_id.id)
@@ -149,6 +149,9 @@ class MrpProduction(models.Model):
for param in production.product_id.model_process_parameters_ids:
process_parameter = self.env['sf.production.process.parameter'].search(
[('process_id.id', '=', pitem.id), ('id', '=', param.id)])
# 产品为表面工艺服务的供应商
product_production_process = self.env['product.template'].search(
[('server_product_process_parameters_id', '=', process_parameter.id)])
if process_parameter:
for ritem in route_workcenter_arr:
route_production_process = self.env['mrp.routing.workcenter'].search(
@@ -157,7 +160,8 @@ class MrpProduction(models.Model):
workorders_values.append(
self.env['mrp.workorder']._json_workorder_surface_process_str(
production, route_production_process,
process_parameter))
process_parameter,
product_production_process.seller_ids[0].id))
elif production.product_id.categ_id.type == '胚料':
embryo_routing_workcenter = self.env['sf.embryo.model.type.routing.sort'].search(
[('embryo_model_type_id', '=', production.product_id.embryo_model_type_id.id)],
@@ -167,8 +171,23 @@ class MrpProduction(models.Model):
workorders_values.append(
self.env['mrp.workorder'].json_workorder_str('', production, route))
production.workorder_ids = workorders_values
process_parameter_workorder = self.env['mrp.workorder'].search(
[('surface_technics_parameters_id', '!=', False), ('production_id', '=', 58)])
if process_parameter_workorder:
# for st in process_parameter_workorder:
consecutive_workorders = []
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.id)
for i in range(len(sorted_workorders) - 1):
if sorted_workorders[i].supplier_id == sorted_workorders[i + 1].supplier_id and \
sorted_workorders[i].id == sorted_workorders[i + 1].id - 1:
consecutive_workorders.append(sorted_workorders[i])
consecutive_workorders.append(sorted_workorders[i + 1])
for workorder in production.workorder_ids:
workorder.duration_expected = workorder._get_duration_expected()
# 判断外协工序是否连续有多个外协工序为同一个供应商(产品为表面工艺服务的供应商),
# 如果有的话则将连续的多个外协工序ID绑定同一张外协出入库单单独的供应商工序则生成单独的外协出入库单
# 如果没有连续的外协工序为同一个供应商则根据规则生成多张外协出入库单并绑定不同的工序ID
# 在之前的销售单上重新生成制造订单
def create_production1_values(self, production):