From cd28978b7aaffdcd902a429192666871b765db9d 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: Tue, 9 Dec 2025 15:45:11 +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/soong_workflow_record.py | 45 ++-----------------
.../views/soong_workflow_record.xml | 6 +--
2 files changed, 5 insertions(+), 46 deletions(-)
diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index 203aac9cb..20c6ffa7c 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -50,9 +50,8 @@ class SoongWorkflowRecord(models.Model):
department_id = fields.Many2one("hr.department", string="部门", required=True)
done_by = fields.Many2one(comodel_name="res.users", string="发起人")
active = fields.Boolean(string="归档", default=True)
- is_manager = fields.Boolean(string="是否管理员", compute='_compute_part_of_department', store=True)
+ is_manager = fields.Boolean(string="是否管理员", compute='_compute_is_manager')
soong_state = fields.Selection([('to_do', '待办'), ('done', '已办')], string="流程状态", default="to_do")
- member_of_department = fields.Boolean("是否是本部门数据", compute='_compute_part_of_department', search='_search_part_of_department')
# 人力资源流程的发生日期
workflow_happen_date = fields.Date(string="发生日期")
@@ -241,47 +240,9 @@ class SoongWorkflowRecord(models.Model):
related_record.self_users_ids = [(5,)]
- @api.depends_context('uid', 'company')
- def _compute_part_of_department(self):
- user_employee = self._get_valid_employee_for_user()
+ @api.depends('create_uid')
+ def _compute_is_manager(self):
self.is_manager = self.env.user.has_group('soong_workflow.group_soong_workflow_manager')
- active_department = user_employee.department_id
- parent_department = active_department.parent_id
- # 递归获取父部门的所有子部门
- def get_all_children(departments):
- all_children = self.env['hr.department']
- for department in departments:
- children = department.child_ids
- all_children += children
- if children:
- all_children += get_all_children(children)
- return all_children
- # 父部门及其所有子部门
- related_departments = parent_department + get_all_children(parent_department)
-
- for employee in self:
- employee.member_of_department = employee.department_id in related_departments
-
- def _get_valid_employee_for_user(self):
- user = self.env.user
- employee = user.employee_ids
- if not employee:
- user_employees = user.employee_id.sudo().search([
- ('user_id', '=', user.id)
- ])
- employee = user_employees.filtered(lambda r: r.company_id == user.company_id) or user_employees[:1]
- return employee
- #
- def _search_part_of_department(self, operator, value):
- if operator not in ('=', '!=') or not isinstance(value, bool):
- raise UserError(_('Operation not supported'))
- user_employee = self._get_valid_employee_for_user()
- # Double negation
- if not value:
- operator = '!=' if operator == '=' else '='
- if not user_employee.department_id:
- return [('id', operator, user_employee.id)]
- return (['!'] if operator == '!=' else []) + [('department_id', '=', user_employee.department_id.id)]
def open_record(self):
return {
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index 0762d26b5..674e296a6 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -85,7 +85,6 @@
-
@@ -119,9 +118,8 @@
-
+ invisible="approve_state != 'start' and not is_manager"/>
+