From e1bea016cdc83c8fd89dfc1ad19c3b8967312301 Mon Sep 17 00:00:00 2001 From: younes Date: Tue, 17 Jun 2025 10:30:07 +0100 Subject: [PATCH] fix bug --- odex25_hr/hr_base/models/hr_base.py | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/odex25_hr/hr_base/models/hr_base.py b/odex25_hr/hr_base/models/hr_base.py index 99731446e..da7465c70 100644 --- a/odex25_hr/hr_base/models/hr_base.py +++ b/odex25_hr/hr_base/models/hr_base.py @@ -316,8 +316,37 @@ class HrEmployee(models.Model): @api.onchange('department_id') def _onchange_department(self): - self.sudo().parent_id = self.sudo().department_id.manager_id - self.sudo().coach_id = self.sudo().department_id.parent_id.manager_id + # self.sudo().parent_id = self.sudo().department_id.manager_id + # self.sudo().coach_id = self.sudo().department_id.parent_id.manager_id + for emp in self: + dept = emp.department_id + manager = dept.manager_id + if manager == emp: + cur = dept.parent_id + while cur: + if cur.manager_id and cur.manager_id != emp: + manager = cur.manager_id + break + cur = cur.parent_id + else: + manager = emp + + emp.sudo().parent_id = manager or False + + coach = False + cur = dept.parent_id + while cur: + # if cur.manager_id: + if cur.manager_id and cur.manager_id not in (emp): + coach = cur.manager_id + break + cur = cur.parent_id + + # emp.coach_id = coach or dept.manager_id or False + if not coach and dept.manager_id not in (emp): + coach = dept.manager_id + + emp.sudo().coach_id = coach or False # to Calculate duration service Period @api.onchange('first_hiring_date', 'leaving_date')