优化制造订单

This commit is contained in:
jinling.yang
2024-11-15 17:31:28 +08:00
parent 018d51e25f
commit 8add4b5ad1
6 changed files with 177 additions and 180 deletions

View File

@@ -609,35 +609,41 @@ class MrpProduction(models.Model):
workorders_values.append(
self.env['mrp.workorder'].json_workorder_str('', production, route_embryo))
production.workorder_ids = workorders_values
production.get_subcontract_pick()
for workorder in production.workorder_ids:
workorder.duration_expected = workorder._get_duration_expected()
# 生成采购单
def get_subcontract_purchase(self):
for production in self:
production_all = self.sorted(lambda x: x.id)
for production in production_all:
for special in production.technology_design_ids:
if special.process_parameters_id.gain_way == '外协':
product_id_to_production_names = {}
grouped_product_ids = {k: list(g) for k, g in
groupby(special.production_id, key=lambda x: x.product_id.id)}
for product_id, production in grouped_product_ids.items():
product_id_to_production_names[product_id] = [p.name for p in production]
groupby(production_all, key=lambda x: x.product_id.id)}
for product_id, pd in grouped_product_ids.items():
product_id_to_production_names[product_id] = [p.name for p in pd]
self.env['purchase.order'].get_purchase_order(special.process_parameters_id,
special.production_id,
product_id_to_production_names)
# 外协出入库单处理
def get_subcontract_pick(self):
for production in self:
def get_subcontract_pick_purchase(self):
production_all = self.sorted(lambda x: x.id)
product_id_to_production_names = {}
grouped_product_ids = {k: list(g) for k, g in
groupby(production_all, key=lambda x: x.product_id.id)}
for product_id, pd in grouped_product_ids.items():
product_id_to_production_names[product_id] = [p.name for p in pd]
for production in production_all:
process_parameter_workorder = self.env['mrp.workorder'].search(
[('surface_technics_parameters_id', '!=', False), ('production_id', '=', production.id),
('is_subcontract', '=', True)])
('is_subcontract', '=', True)], order='sequence asc')
if process_parameter_workorder:
is_pick = False
consecutive_workorders = []
m = 0
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.id)
sorted_workorders = sorted(process_parameter_workorder, key=lambda w: w.sequence)
for i in range(len(sorted_workorders) - 1):
if m == 0:
is_pick = False
@@ -653,6 +659,9 @@ class MrpProduction(models.Model):
if m == len(consecutive_workorders) - 1 and m != 0:
self.env['stock.picking'].create_outcontract_picking(consecutive_workorders,
production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
if sorted_workorders[i] in consecutive_workorders:
is_pick = True
consecutive_workorders = []
@@ -661,20 +670,35 @@ class MrpProduction(models.Model):
if is_pick is False:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i],
production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
if m == len(consecutive_workorders) - 1 and m != 0:
self.env['stock.picking'].create_outcontract_picking(consecutive_workorders,
production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
if sorted_workorders[i] in consecutive_workorders:
is_pick = True
consecutive_workorders = []
m = 0
if m == len(consecutive_workorders) - 1 and m != 0:
self.env['stock.picking'].create_outcontract_picking(consecutive_workorders, production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
if is_pick is False and m == 0:
if len(sorted_workorders) == 1:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders, production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
else:
self.env['stock.picking'].create_outcontract_picking(sorted_workorders[i], production)
self.env['purchase.order'].get_purchase_order(consecutive_process_parameters,
production,
product_id_to_production_names)
# 工单排序
def _reset_work_order_sequence1(self, k):