添加功能
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user