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(