[IMP] hr: Add master department field

closes odoo/odoo#84558

Related: odoo/enterprise#24332
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Yannick Tivisse
2022-02-16 13:04:50 +00:00
parent 956044c680
commit b56b76fe62
+11 -1
View File
@@ -11,6 +11,7 @@ class Department(models.Model):
_inherit = ['mail.thread']
_order = "name"
_rec_name = 'complete_name'
_parent_store = True
name = fields.Char('Department Name', required=True)
complete_name = fields.Char('Complete Name', compute='_compute_complete_name', recursive=True, store=True)
@@ -24,6 +25,9 @@ class Department(models.Model):
jobs_ids = fields.One2many('hr.job', 'department_id', string='Jobs')
note = fields.Text('Note')
color = fields.Integer('Color Index')
parent_path = fields.Char(index=True, unaccent=False)
master_department_id = fields.Many2one(
'hr.department', 'Master Department', compute='_compute_master_department_id', store=True)
def name_get(self):
if not self.env.context.get('hierarchical_naming', True):
@@ -33,7 +37,6 @@ class Department(models.Model):
@api.model
def name_create(self, name):
return self.create({'name': name}).name_get()[0]
@api.depends('name', 'parent_id.complete_name')
def _compute_complete_name(self):
for department in self:
@@ -42,6 +45,13 @@ class Department(models.Model):
else:
department.complete_name = department.name
@api.depends('parent_path')
def _compute_master_department_id(self):
# Don't use the cache as the value is updated in SQL
parent_path_values = {e['id']: e['parent_path'] for e in self.read(['parent_path'])}
for department in self:
department.master_department_id = int(parent_path_values[department.id].split('/')[0])
def _compute_total_employee(self):
emp_data = self.env['hr.employee'].read_group([('department_id', 'in', self.ids)], ['department_id'], ['department_id'])
result = dict((data['department_id'][0], data['department_id_count']) for data in emp_data)