mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import api, fields, models, tools, _
|
|
|
|
import logging
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class MrpWorkCenter(models.Model):
|
|
_inherit = 'mrp.workcenter'
|
|
|
|
# 建立层级关系
|
|
_parent_name = "parent_id"
|
|
_parent_store = True
|
|
_parent_order = 'code'
|
|
_order = 'parent_path, code'
|
|
|
|
parent_id = fields.Many2one('mrp.workcenter', 'Parent WC', index=True, ondelete='restrict')
|
|
parent_path = fields.Char(index=True)
|
|
child_ids = fields.One2many('mrp.workcenter', 'parent_id', 'Child WCs')
|
|
child_all_count = fields.Integer(
|
|
'Indirect Surbordinates Count',
|
|
compute='_compute_child_all_count', store=False)
|
|
level = fields.Integer('Level', compute='_compute_level', inverse=False, readonly=True, default='1', store=True)
|
|
|
|
@api.depends('child_ids.child_all_count')
|
|
def _compute_child_all_count(self):
|
|
for rec in self:
|
|
rec.child_all_count = len(rec.child_ids) + sum(child.child_all_count for child in rec.child_ids)
|
|
|
|
|
|
@api.onchange('parent_id')
|
|
def _onchange_level(self):
|
|
level = 1
|
|
if self.parent_id:
|
|
level = self.parent_id.level + 1
|
|
self.level = level
|
|
|
|
@api.depends('parent_id', 'parent_id.level')
|
|
def _compute_level(self):
|
|
for rec in self:
|
|
level = 1
|
|
if rec.parent_id:
|
|
level = rec.parent_id.level + 1
|
|
rec.level = level
|
|
|
|
def _set_level(self):
|
|
pass
|