1.sf的工作中心新增表面工艺字段,工序类型新增表面工艺类型,且当工序类型为表面工艺时,则显示表面工艺,其他则不显示

2.sf的工作中心新增工艺外协字段,该字段若被勾选则为表面工艺的外协加工中心
3.sf的销售订单上点击生成制造订单时在已有的成品工序后累加表面工艺工序,表面工艺的工序生成规则需根据表面工艺所对应的类别的排序来依次生成,并且工序里的工作中心的匹配规则需根据表面工艺的可选参数里的获取方式字段的值来匹配
This commit is contained in:
jinling.yang
2023-03-30 17:52:05 +08:00
parent 20d9e469f5
commit a008dbb76a
8 changed files with 79 additions and 30 deletions

View File

@@ -1,4 +1,5 @@
from odoo import fields, models
import logging
class ResMrpRoutingWorkcenter(models.Model):
@@ -12,12 +13,13 @@ class ResMrpRoutingWorkcenter(models.Model):
('后置三元质量检测', '后置三元质量检测'),
('解除装夹', '解除装夹'),
('切割', '切割'),
('绑定表面工艺', '绑定表面工艺')
('表面工艺', '表面工艺')
], string="工序类型")
is_repeat = fields.Boolean('重复', default=False)
workcenter_id = fields.Many2one('mrp.workcenter', required=False)
workcenter_ids = fields.Many2many('mrp.workcenter', 'rel_workcenter_route', required=True)
bom_id = fields.Many2one('mrp.bom', required=False)
surface_technics_id = fields.Many2one('sf.production.process', string="表面工艺")
# 获得当前登陆者公司
def get_company_id(self):
@@ -25,6 +27,7 @@ class ResMrpRoutingWorkcenter(models.Model):
company_id = fields.Many2one('res.company', compute="get_company_id", related=False)
# 排产的时候, 根据胚料的长宽高比对一下机床的最大加工尺寸.不符合就不要分配给这个加工中心(机床).
# 工单对应的工作中心,根据工序中的工作中心去匹配,
# 如果只配置了一个工作中心,则默认采用该工作中心;
@@ -40,7 +43,7 @@ class ResMrpRoutingWorkcenter(models.Model):
workcenter = self.env['mrp.workcenter'].search([('id', 'in', workcenter_ids)])
workcenter_ids = []
for item in workcenter:
print(item.name)
logging.info('get_workcenter-vals:%s' % item.machine_tool_id.name)
if item.machine_tool_id:
machine_tool = self.env['sf.machine_tool'].search(
[('x_axis', '>', product.bom_ids.bom_line_ids.product_id.length),
@@ -55,5 +58,9 @@ class ResMrpRoutingWorkcenter(models.Model):
SELECT workcenter_id FROM mrp_workorder where workcenter_id
in %s group by workcenter_id
order by count(*),workcenter_id asc limit 1 """, [tuple(workcenter_ids)])
workcenter_id = self.env.cr.dictfetchall()[0].get('workcenter_id')
res = self.env.cr.fetchone()
if res:
workcenter_id = self.env.cr.dictfetchall()[0].get('workcenter_id')
else:
workcenter_id = workcenter_ids[0]
return workcenter_id