From 40a5e05703734c261c5ea88decaa19832f72bb52 Mon Sep 17 00:00:00 2001
From: zhou <123@>
Date: Fri, 11 Jul 2025 21:36:01 +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
---
soong_workflow/models/soong_workflow_node.py | 19 +++++++++++++++
.../views/soong_workflow_node_views.xml | 24 ++++++++++++-------
.../wizard/soong_workflow_comment_wizard.py | 15 +++++++++++-
.../soong_workflow_record_revoke_wizard.py | 1 -
4 files changed, 48 insertions(+), 11 deletions(-)
diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py
index f97341604..09c6939b7 100644
--- a/soong_workflow/models/soong_workflow_node.py
+++ b/soong_workflow/models/soong_workflow_node.py
@@ -411,6 +411,9 @@ class SoongWorkflowNodeButton(models.Model):
is_logged_company = fields.Boolean('本公司')
is_logged_group = fields.Boolean('本集团')
+ is_dep = fields.Boolean('部门')
+ role_id = fields.Many2one(comodel_name="soong.user.role", string="角色")
+
@api.onchange('is_automatic')
def _onchange_is_automatic(self):
if self.is_automatic:
@@ -418,6 +421,7 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic_group = False
self.is_logged_by = False
self.is_logged_company = False
+ self.is_dep = False
self.is_logged_group = False
@api.onchange('is_automatic_company')
@@ -426,6 +430,7 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic = False
self.is_automatic_group = False
self.is_logged_by = False
+ self.is_dep = False
self.is_logged_company = False
self.is_logged_group = False
@@ -435,6 +440,7 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic = False
self.is_automatic_company = False
self.is_logged_by = False
+ self.is_dep = False
self.is_logged_company = False
self.is_logged_group = False
@@ -444,6 +450,7 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic = False
self.is_automatic_company = False
self.is_automatic_group = False
+ self.is_dep = False
self.is_logged_company = False
self.is_logged_group = False
@@ -454,6 +461,7 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic_company = False
self.is_automatic_group = False
self.is_logged_by = False
+ self.is_dep = False
self.is_logged_group = False
@api.onchange('is_logged_group')
@@ -463,8 +471,19 @@ class SoongWorkflowNodeButton(models.Model):
self.is_automatic_company = False
self.is_automatic_group = False
self.is_logged_by = False
+ self.is_dep = False
self.is_logged_company = False
+ @api.onchange('is_dep')
+ def _onchange_is_dep(self):
+ if self.is_dep:
+ self.is_automatic = False
+ self.is_automatic_company = False
+ self.is_automatic_group = False
+ self.is_logged_by = False
+ self.is_logged_company = False
+ self.is_logged_group = False
+
@api.onchange('users_role_id', 'users_role_group_ids')
def _onchange_role_selection(self):
if self.users_role_id and self.users_role_group_ids:
diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml
index de6948f83..460d8be9a 100644
--- a/soong_workflow/views/soong_workflow_node_views.xml
+++ b/soong_workflow/views/soong_workflow_node_views.xml
@@ -179,15 +179,21 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index b3d2acfb1..efde3ae3b 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -196,6 +196,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
is_logged_by = button.is_logged_by
is_logged_company = button.is_logged_company
is_logged_group = button.is_logged_group
+ is_dep = button.is_dep
if button.reviewer_id:
employee = self.env['hr.employee'].search([
@@ -206,6 +207,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
# 部门和公司筛选条件
department_domain = []
company_domain = []
+ user_role_domain = []
if record_id:
# 获取当前用户和申请人的相关信息
@@ -239,6 +241,13 @@ class SoongWorkflowCommentWizard(models.TransientModel):
group_company_ids = self.env['res.company'].search([('id', 'child_of', parent_company.id)]).ids
company_domain = [('company_id', 'in', group_company_ids)]
+ elif is_dep and hasattr(record_id, 'department_id1') and record_id.department_id1:
+ department_id1 = record_id.department_id1.id
+ department_domain = ['|', ('department_id', '=', department_id1.id),
+ ('department_ids', 'in', department_id1.id)]
+ user_role_domain = ['|', ('user_role_id', '=', button.role_id.id),
+ ('user_role_ids', 'in', button.role_id.id)]
+
elif is_logged_by and current_user.department_id:
# 按当前登录人自动匹配-本部门(保留部门和公司条件)
department_domain = ['|', ('department_id', '=', current_user.department_id.id),
@@ -257,14 +266,18 @@ class SoongWorkflowCommentWizard(models.TransientModel):
group_company_ids = self.env['res.company'].search([('id', 'child_of', parent_company.id)]).ids
company_domain = [('company_id', 'in', group_company_ids)]
- # 角色筛选
if link_users_id:
role_domain = ['|', ('user_role_id', '=', link_users_id.id), ('user_role_ids', 'in', link_users_id.id)]
+ if user_role_domain:
+ role_domain = ['|'] + role_domain + user_role_domain
domain = role_domain + company_domain + department_domain
return self.env['hr.employee'].sudo().search(domain)
+
elif link_users_group_ids:
role_domain = ['|', ('user_role_id', 'in', link_users_group_ids.user_role_ids.ids),
('user_role_ids', 'in', link_users_group_ids.user_role_ids.ids)]
+ if user_role_domain:
+ role_domain = ['|'] + role_domain + user_role_domain
domain = role_domain + company_domain + department_domain
return self.env['hr.employee'].sudo().search(domain)
diff --git a/soong_workflow/wizard/soong_workflow_record_revoke_wizard.py b/soong_workflow/wizard/soong_workflow_record_revoke_wizard.py
index 5c0e16de8..f9b09b9bf 100644
--- a/soong_workflow/wizard/soong_workflow_record_revoke_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_record_revoke_wizard.py
@@ -25,7 +25,6 @@ class SoongWorkflowRecordRevokeWizard(models.TransientModel):
# 请假审批 -> 删除年假明细
self.env['vacation.leave.line'].search([
('workflow_record_id', '=', self.record_id.id)
-
]).unlink()
elif model_name == 'overtime.approval':