添加功能

This commit is contained in:
李鹏宇
2025-12-09 15:45:11 +08:00
parent 9bc27c3c36
commit cd28978b7a
2 changed files with 5 additions and 46 deletions
+3 -42
View File
@@ -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 {
@@ -85,7 +85,6 @@
<field name="company_id" column_invisible="1"/>
<field name="text" column_invisible="1"/>
<field name="reclaim_state" column_invisible="1"/>
<field name="member_of_department" column_invisible="1"/>
<field name="is_manager" column_invisible="1"/>
<field name="meal" column_invisible="1"/>
<field name="workflow_happen_date" string="发生日期" column_invisible="1"/>
@@ -119,9 +118,8 @@
<field name="soong_state"/>
<field name="is_manager" column_invisible="1"/>
<button name="delete_record" type="object" string="删除" class="btn-primary" confirm="你确定要删除吗?"
invisible="not (is_manager or approve_state == 'start') "/>
<button name="reminders_record" type="object" string="催办" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager"/>
invisible="approve_state != 'start' and not is_manager"/>
<button name="reminders_record" type="object" string="催办" class="btn-primary" invisible="approve_state in ['start', 'end']"/>
<button name="revoke_record" type="object" string="撤销" class="btn-primary"
groups="soong_workflow.group_soong_workflow_manager"/>
</tree>