56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
from odoo import fields, models, api
|
|
|
|
|
|
class ModelType(models.Model):
|
|
_name = 'sf.model.type'
|
|
_description = '模型类型'
|
|
|
|
name = fields.Char('名称')
|
|
routing_tmpl_ids = fields.One2many('sf.model.type.routing.sort', 'model_type_id', '工序模板')
|
|
|
|
|
|
class ResMrpRoutingWorkcenter(models.Model):
|
|
_inherit = 'mrp.routing.workcenter'
|
|
|
|
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):
|
|
# print(workcenter_ids[0].id)
|
|
# if workcenter_ids:
|
|
# if len(workcenter_ids) == 1:
|
|
# return workcenter_ids[0].id
|
|
# elif len(workcenter_ids) >= 2:
|
|
# workcenter_id = self.env['mrp.workorder'].search(
|
|
# [('workcenter_ids.id', 'in', True)],
|
|
# limit=1,
|
|
# group_by =
|
|
# )
|
|
|
|
|
|
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')
|
|
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)', '工序不能重复!')
|
|
]
|