diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index d05a88dc0..dda3c6b2f 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -47,6 +47,7 @@ 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) + soong_state = fields.Selection([('to_do', '待办'), ('done', '已办')], string="流程状态", default="done") member_of_department = fields.Boolean("是否是本部门数据", compute='_compute_part_of_department', search='_search_part_of_department') @api.depends_context('uid', 'company') @@ -100,6 +101,23 @@ class SoongWorkflowRecord(models.Model): "view_mode": "form", } + @api.model + def get_view(self, view_id=None, view_type='form', **options): + """在视图加载时检查当前用户是否在经办人列表中,并更新状态""" + # 检查是否通过特定动作触发(替换为你的视图ID) + if options.get('action_id') == 538: # 替换为实际的视图ID + current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1) + if current_employee: + # 更新所有当前用户是经办人的记录状态为"待办" + records = self.search([ + ('employee_ids', 'in', current_employee.ids), + ('soong_state', '=', 'done') + ]) + if records: + records.write({'soong_state': 'to_do'}) + + return super(SoongWorkflowRecord, self).get_view(view_id, view_type, **options) + # def get_department_employees(self, department_id): # valid_user_ids = set() # employee_ids = self.sudo().env['hr.employee'].search([('department_id', '=', department_id.id)]) diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index 0fab0d917..1f5301a06 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -24,7 +24,7 @@ soong.workflow.record @@ -40,6 +40,7 @@ +