diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index 2deef1a4a..3ef8d826f 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -254,6 +254,32 @@ class YuthonHrEmployee(models.Model): ('divorced', 'Divorced') ], string='Marital Status', groups="hr.group_hr_user", default='single', tracking=True) + def update_role_group_ids(self): + employee_ids = self.env["hr.employee"].browse( + self._context.get("active_ids", self._context.get("active_id")) + ) + for employee in employee_ids: + employee._onchange_user_roles() + + @api.onchange('user_role_id', 'user_role_ids') + def _onchange_user_roles(self): + selected_role_ids = [] + if self.user_role_id: + selected_role_ids.append(self.user_role_id.id) + + if self.user_role_ids: + selected_role_ids += self.user_role_ids.ids + if not selected_role_ids: + self.role_group_ids = [(5,)] + return + role_groups = self.env['soong.user.role.group'].search([ + ('user_role_ids', 'in', selected_role_ids) + ]) + if role_groups: + self.role_group_ids = [(6, 0, role_groups.ids)] + else: + self.role_group_ids = [(5,)] + def update_trade_union(self): records = self.env['hr.employee'].search([('is_membership', '=', True)]) for record in records: diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml index 890b350c4..bf5626545 100644 --- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml +++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml @@ -148,7 +148,7 @@ - + 1 @@ -694,6 +694,13 @@ code action = model.action_hr_state() + + 更新员工角色组 + + + code + action = model.update_role_group_ids() +