64 lines
2.9 KiB
Python
64 lines
2.9 KiB
Python
from odoo import fields, models, api
|
|
|
|
|
|
class ResMrpRoutingWorkcenter(models.Model):
|
|
_inherit = 'mrp.routing.workcenter'
|
|
|
|
routing_type = fields.Selection([
|
|
('获取CNC加工程序', '获取CNC加工程序'),
|
|
('装夹', '装夹'),
|
|
('前置三元定位检测', '前置三元定位检测'),
|
|
('CNC加工', 'CNC加工'),
|
|
('后置三元质量检测', '后置三元质量检测'),
|
|
('解除装夹', '解除装夹'),
|
|
], 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)
|
|
|
|
# 获得当前登陆者公司
|
|
def get_company_id(self):
|
|
self.company_id = self.env.user.company_id.id
|
|
|
|
company_id = fields.Many2one('res.company', compute="get_company_id", related=False)
|
|
|
|
# 工单对应的工作中心,根据工序中的工作中心去匹配,
|
|
# 如果只配置了一个工作中心,则默认采用该工作中心;
|
|
# 如果有多个工作中心,
|
|
# 则根据该工作中心的工单个数进行分配(优先分配给工单个数最少的);
|
|
def get_workcenter(self, workcenter_ids):
|
|
if workcenter_ids:
|
|
if len(workcenter_ids) == 1:
|
|
return workcenter_ids[0]
|
|
elif len(workcenter_ids) >= 2:
|
|
# workcenter_ids_str = ','.join([str(s) for s in workcenter_ids])
|
|
self.env.cr.execute("""
|
|
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)])
|
|
return self.env.cr.dictfetchall()[0].get('workcenter_id')
|
|
|
|
|
|
class ModelTypeRoutingSort(models.Model):
|
|
_name = 'sf.model.type.routing.sort'
|
|
_description = '工序排序'
|
|
|
|
sequence = fields.Integer('Sequence')
|
|
route_workcenter_id = fields.Many2one('mrp.routing.workcenter')
|
|
is_repeat = fields.Boolean('重复', related='route_workcenter_id.is_repeat')
|
|
routing_type = fields.Selection([
|
|
('获取CNC加工程序', '获取CNC加工程序'),
|
|
('装夹', '装夹'),
|
|
('前置三元定位检测', '前置三元定位检测'),
|
|
('CNC加工', 'CNC加工'),
|
|
('后置三元质量检测', '后置三元质量检测'),
|
|
('解除装夹', '解除装夹'),
|
|
], string="工序类型", related='route_workcenter_id.routing_type')
|
|
workcenter_ids = fields.Many2many('mrp.workcenter', required=False, related='route_workcenter_id.workcenter_ids')
|
|
model_type_id = fields.Many2one('sf.model.type')
|
|
|
|
_sql_constraints = [
|
|
('route_model_type_uniq', 'unique (route_workcenter_id,model_type_id)', '工序不能重复!')
|
|
]
|