From 055323de9f8c3dc7df7b84a4b3884f7191e6220a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Fri, 9 Jan 2026 16:58:22 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/yuthon_hr_employee.py | 26 +++++++++++++++++++
.../views/yuthon_hr_employee_views.xml | 9 ++++++-
2 files changed, 34 insertions(+), 1 deletion(-)
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()
+