From 4396d3d2ebefa75e7098637bb981ef0b6ee9bb3f Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Tue, 15 Jul 2025 11:43:43 +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_entrust.py | 9 +++++++-- soong_workflow/models/soong_workflow_record.py | 18 ++++++++++++++++++ .../soong_workflow_record_delete_wizard.py | 13 +++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/soong_workflow/models/soong_workflow_entrust.py b/soong_workflow/models/soong_workflow_entrust.py index 787415965..ef8120ffa 100644 --- a/soong_workflow/models/soong_workflow_entrust.py +++ b/soong_workflow/models/soong_workflow_entrust.py @@ -76,8 +76,13 @@ class SoongWorkflowEntrust(models.Model): users_role_id = reviewer_id.employee_id.user_role_id.id for work in all_work_list: # 判断角色是否在里面 - users_role = [key for key, items in work.items() if - any(item.get('users_role_id') == users_role_id for item in items)] + users_role = [ + key for key, items in work.items() + if any( + isinstance(item, dict) and item.get('users_role_id') == users_role_id + for item in items + ) + ] for role in users_role: workflow = int(role.split('-')[-1]) work_code = role.split('-')[0] diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 1ebb1a49e..f84301a13 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -198,6 +198,24 @@ class SoongWorkflowRecord(models.Model): target_model = self.env[rec.record_id.res_model] target_record = target_model.sudo().browse(rec.record_id.res_id) target_record.write({'active': True}) + # 特殊处理请假审批记录 + if target_model._name in ["hr.leave.batch"]: + # 恢复按天请假明细行 + if target_record.leave_ids: + for leave in target_record.leave_ids: + if not leave.active: + leave.sudo().write({ + 'state': 'confirm', + 'active': True + }) + + if target_record.hour_leave_ids: + for hour_leave in target_record.hour_leave_ids: + if not hour_leave.active: + hour_leave.sudo().write({ + 'state': 'confirm', + 'active': True + }) def delete_record(self): record_id = self.env[self.res_model].search([('id', '=', self.res_id)]) diff --git a/soong_workflow/wizard/soong_workflow_record_delete_wizard.py b/soong_workflow/wizard/soong_workflow_record_delete_wizard.py index 8d7c2363f..1dda49be1 100644 --- a/soong_workflow/wizard/soong_workflow_record_delete_wizard.py +++ b/soong_workflow/wizard/soong_workflow_record_delete_wizard.py @@ -28,6 +28,19 @@ class SoongWorkflowRecordDeleteWizard(models.TransientModel): }) target_model = self.env[record.record_id.res_model] target_record = target_model.sudo().browse(record.record_id.res_id) + if target_model._name in ["hr.leave.batch"]: + if target_record.leave_ids: + for leave in target_record.leave_ids: + leave.sudo().write({ + "state": "confirm", + "active": False + }) + if target_record.hour_leave_ids: + for hour_leave in target_record.hour_leave_ids: + hour_leave.sudo().write({ + "state": "confirm", + "active": False + }) target_record.write({'active': False}) else: self.env["soong.workflow.record"].sudo().search(