From 0c7c3f6ba681ac546befb07b54b292a4b6b18ef1 Mon Sep 17 00:00:00 2001
From: zhou <123@>
Date: Fri, 27 Jun 2025 17:05:10 +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
---
.../views/soong_workflow_record.xml | 4 +-
.../wizard/soong_workflow_comment_wizard.py | 85 ++++++++++++-------
yuthon_notice/views/yuthon_notice_views.xml | 9 --
.../models/property_lease_contract.py | 2 +-
4 files changed, 56 insertions(+), 44 deletions(-)
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index f3ccde854..22b5b3e09 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -130,7 +130,7 @@
ir.actions.act_window
soong.workflow.record
tree,kanban,search
- [('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'), ('approvals_group_id.name', '=', '考勤')]
+ [('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'), ('approvals_group_id.name', '=', '考勤'), ('member_of_department', '=', True)]
@@ -160,7 +160,5 @@
-
-
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index 91e9abcaa..047b00e71 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -202,49 +202,72 @@ class SoongWorkflowCommentWizard(models.TransientModel):
('user_id', '=', button.reviewer_id.id),
], limit=1)
return employee
- # 部门筛选条件
+
+ # 部门和公司筛选条件
department_domain = []
+ company_domain = []
+
if record_id:
- # 申请人自动匹配逻辑
- if is_automatic:
- department_domain = ['|', ('department_id', '=', record_id.department_id.id), ('department_ids', 'in', record_id.department_id.id)]
- elif is_automatic_company or is_automatic_group:
- applicant_field = None
- for field_name in ['user_id', 'users_id']:
- if hasattr(record_id, field_name):
- applicant_field = getattr(record_id, field_name)
- if applicant_field:
- break
- if applicant_field and hasattr(applicant_field, 'company_id'):
- if is_automatic_company:
- company_departments = self.env['hr.department'].search([('company_id', '=', applicant_field.company_id.id)]).ids
- department_domain = ['|', ('department_id', 'in', company_departments), ('department_ids', 'in', company_departments)]
- elif is_automatic_group:
- parent_company = applicant_field.company_id.parent_id
- group_departments = self.env['hr.department'].search([('company_id', 'child_of', parent_company.id)]).ids if parent_company else []
- department_domain = ['|', ('department_id', 'in', group_departments), ('department_ids', 'in', group_departments)]
- # 登录人自动匹配逻辑
- elif is_logged_by:
- department_domain = ['|', ('department_id', '=', self.env.user.department_id.id), ('department_ids', 'in', self.env.user.department_id.id)]
+ # 获取当前用户和申请人的相关信息
+ current_user = self.env.user
+ applicant = None
+
+ # 尝试获取申请人的用户对象
+ for field_name in ['user_id', 'users_id']:
+ if hasattr(record_id, field_name):
+ applicant = getattr(record_id, field_name)
+ if applicant:
+ break
+
+ # 根据勾选的条件设置域条件(只勾选一个)
+ if is_automatic and record_id.department_id:
+ # 按当前申请人自动匹配-本部门(保留部门和公司条件)
+ department_domain = ['|', ('department_id', '=', record_id.department_id.id),
+ ('department_ids', 'in', record_id.department_id.id)]
+ company_domain = [('company_id', '=', record_id.company_id.id)] if hasattr(record_id,
+ 'company_id') else []
+
+ elif is_automatic_company and applicant and hasattr(applicant, 'company_id'):
+ # 按当前申请人自动匹配-本公司(仅保留公司条件)
+ company_id = applicant.company_id.id
+ company_domain = [('company_id', '=', company_id)]
+
+ elif is_automatic_group and applicant and hasattr(applicant, 'company_id'):
+ # 按当前申请人自动匹配-本集团(仅保留公司条件)
+ parent_company = applicant.company_id.parent_id
+ if parent_company:
+ 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_logged_by and current_user.department_id:
+ # 按当前登录人自动匹配-本部门(保留部门和公司条件)
+ department_domain = ['|', ('department_id', '=', current_user.department_id.id),
+ ('department_ids', 'in', current_user.department_id.id)]
+ company_domain = [('company_id', '=', current_user.company_id.id)]
+
elif is_logged_company:
- company_departments = self.env['hr.department'].search([('company_id', '=', self.env.user.company_id.id)]).ids
- department_domain = ['|', ('department_id', 'in', company_departments), ('department_ids', 'in', company_departments)]
+ # 按当前登录人自动匹配-本公司(仅保留公司条件)
+ company_id = current_user.company_id.id
+ company_domain = [('company_id', '=', company_id)]
+
elif is_logged_group:
- parent_company = self.env.user.company_id.parent_id
- group_departments = self.env['hr.department'].search([('company_id', 'child_of', parent_company.id)]).ids if parent_company else []
- department_domain = ['|',('department_id', 'in', group_departments),
- ('department_ids', 'in', group_departments)]
+ # 按当前登录人自动匹配-本集团(仅保留公司条件)
+ parent_company = current_user.company_id.parent_id
+ if parent_company:
+ 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)]
- company_domain = [('company_id', '=', self.env.user.company_id.id)]
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)]
- company_domain = [('company_id', '=', self.env.user.company_id.id)]
+ 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)]
domain = role_domain + company_domain + department_domain
return self.env['hr.employee'].sudo().search(domain)
+
# 特殊分发按钮
if '分发' in link.name and record_id and hasattr(record_id, 'users_id'):
return record_id.users_id.employee_id
diff --git a/yuthon_notice/views/yuthon_notice_views.xml b/yuthon_notice/views/yuthon_notice_views.xml
index f71012775..9d803fcce 100644
--- a/yuthon_notice/views/yuthon_notice_views.xml
+++ b/yuthon_notice/views/yuthon_notice_views.xml
@@ -13,7 +13,6 @@
-
@@ -47,9 +46,6 @@
-
-
-
@@ -68,7 +64,6 @@
-
@@ -128,7 +123,6 @@
-
@@ -152,9 +146,6 @@
-
-
-
diff --git a/yuthon_property_approval/models/property_lease_contract.py b/yuthon_property_approval/models/property_lease_contract.py
index c652b5c60..09e683f28 100644
--- a/yuthon_property_approval/models/property_lease_contract.py
+++ b/yuthon_property_approval/models/property_lease_contract.py
@@ -52,7 +52,7 @@ class PropertyLeaseContract(models.Model):
rent_company = fields.Char(related='company_id.name', string="收租公司名称")
rent_account = fields.Char(related='company_id.rent_account', string="收租公司账号")
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
- department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
+ department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门", store=True)
# 承租方的个人信息
lessee_id = fields.Many2one('property.tenant.information', string='承租方')
lessee_name = fields.Char(related='lessee_id.name', string="承租方姓名")