diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 4014113e1..b9de1f3a9 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -75,6 +75,12 @@ class SoongWorkflowRecord(models.Model): search='_search_special_member_visible', help="当前用户属于『本部-角色-人事专员』或『考勤-用户』用户组时,可查看对应的(仅本公司的)人事/考勤流程", ) + dept_query_visible = fields.Boolean( + "部门查询可见(排除考勤/人事)", + compute='_compute_dept_query_visible', + search='_search_dept_query_visible', + help="本部门可见,但排除审批分组为考勤/人事的流程(二者仅对特殊权限组可见)", + ) # 人力资源流程的发生日期 workflow_happen_date = fields.Date(string="发生日期") @@ -666,6 +672,28 @@ class SoongWorkflowRecord(models.Model): domain = ['!'] + domain return domain + # ------------------------------------------------------------------ + # 部门查询可见(排除考勤/人事):本部门数据 且 审批分组不是考勤/人事 + # ------------------------------------------------------------------ + @api.depends_context('uid', 'company') + @api.depends('member_of_department', 'approvals_group_id') + def _compute_dept_query_visible(self): + for record in self: + record.dept_query_visible = bool( + record.member_of_department + and record.approvals_group_id + and record.approvals_group_id.name not in ('考勤', '人事') + ) + + def _search_dept_query_visible(self, operator, value): + # 本部门数据 且 审批分组不是考勤/人事(member_of_department 由 search 方法内联展开,无嵌套) + domain = ['&', + ('approvals_group_id.name', 'not in', ['考勤', '人事']), + ('member_of_department', '=', True)] + if (operator == '=' and not value) or (operator == '!=' and value): + domain = ['!'] + domain + return domain + @api.model def create(self, vals_list): res = super().create(vals_list) diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index c6c5cb3d3..63a885a48 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -465,7 +465,7 @@ '|', '|', ('users_ids', 'in', [uid]), - ['&', ('member_of_department', '=', True), ('approvals_group_id.name', 'not in', ['考勤', '人事'])], + ('dept_query_visible', '=', True), ('special_member_visible', '=', True) ] {'search_default_my_department_shifts': True, 'default_order': 'display_end_time desc'}