将sf_manufacturing模块中stock.py的_run_manufacture方法进行拆分
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from . import ftp_operate
|
||||
from . import res_config_setting
|
||||
from . import sync_common
|
||||
from . import order_price
|
||||
from . import order_price
|
||||
from . import mrp_production
|
||||
|
||||
44
sf_mrs_connect/models/mrp_production.py
Normal file
44
sf_mrs_connect/models/mrp_production.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from itertools import groupby
|
||||
from odoo import models, api
|
||||
from odoo.tools.misc import OrderedSet
|
||||
|
||||
|
||||
class MrpProduction(models.Model):
|
||||
_inherit = 'mrp.production'
|
||||
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
"""
|
||||
生成编程单
|
||||
"""
|
||||
productions = super().create(vals_list)
|
||||
# 定义变量存储编程单
|
||||
grouped_product_programming_no = {}
|
||||
# 定义产品拼接成的制造订单名称
|
||||
grouped_product_production_name = {}
|
||||
# 查出所有的制造订单,为了适配通过补货生成的制造订单
|
||||
all_productions = self.env['mrp.production'].search([('origin', '=', productions[0].origin)])
|
||||
# 将不同产品的制造订单进行分组
|
||||
grouped_product_productions = {k: list(g) for k, g in groupby(all_productions, key=lambda x: x.product_id.id)}
|
||||
|
||||
for product_id, grouped_productions in grouped_product_productions.items():
|
||||
# 产品对应的编程单号
|
||||
if product_id not in grouped_product_programming_no:
|
||||
# 使用列表推导式获取非空的programming_no
|
||||
programming_nos = [p.programming_no for p in grouped_productions if p.programming_no if p.programming_no is not False]
|
||||
if programming_nos:
|
||||
grouped_product_programming_no[product_id] = programming_nos[0]
|
||||
grouped_product_production_name[product_id] = ','.join(list(map(lambda p:p.name, grouped_productions)))
|
||||
# 同一个产品的制造订单只请求一次CNC编程
|
||||
for production in productions:
|
||||
if not production.programming_no and production.production_type in ['自动化产线加工','人工线下加工']:
|
||||
if production.product_id.id not in grouped_product_programming_no:
|
||||
production.fetchCNC(grouped_product_production_name[production.product_id.id])
|
||||
grouped_product_programming_no[production.product_id.id] = production.programming_no
|
||||
else:
|
||||
production.write({
|
||||
'programming_no': grouped_product_programming_no[production.product_id.id],
|
||||
'programming_state': '编程中'
|
||||
})
|
||||
return productions
|
||||
Reference in New Issue
Block a user