From 5e4b4a3a2abbcbbe0d20f635521cb2f570bb2d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Thu, 11 Sep 2025 17:31:53 +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 --- .../soong_workflow_record_delete_wizard.py | 63 ++++++++++--------- .../models/property_design_approval.py | 1 + .../views/property_project_approval_views.xml | 2 +- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/soong_workflow/wizard/soong_workflow_record_delete_wizard.py b/soong_workflow/wizard/soong_workflow_record_delete_wizard.py index 71f3e048e..78a32d5d0 100644 --- a/soong_workflow/wizard/soong_workflow_record_delete_wizard.py +++ b/soong_workflow/wizard/soong_workflow_record_delete_wizard.py @@ -17,34 +17,41 @@ class SoongWorkflowRecordDeleteWizard(models.TransientModel): def add_comment(self): for record in self.record_ids: if self.name == "确认删除": - if record.reclaim_state is False: - self.env["soong.workflow.record"].sudo().search([("id", "=", record.id)]).write({ - "reclaim_state": True - }) + # 首先检查工作流记录是否存在 + workflow_record = self.env["soong.workflow.record"].sudo().search([("id", "=", record.id)], limit=1) + if not workflow_record: + continue + + if not record.reclaim_state: + workflow_record.write({"reclaim_state": True}) + + # 处理工作流日志 log_ids = self.env["soong.workflow.log"].sudo().search([("code", "=", record.code)]) for log_id in log_ids: - log_id.sudo().write({ - "active": False - }) - target_model = self.env[record.res_model] - target_record = target_model.sudo().browse(record.res_id) - if target_record: - if target_model._name in ["hr.leave.batch"]: - if target_record.leave_ids: - for leave in target_record.leave_ids: - leave.sudo().with_context(from_cancel_wizard=True).write({ - "state": "confirm", - "active": False - }) - if target_record.hour_leave_ids: - for hour_leave in target_record.hour_leave_ids: - hour_leave.sudo().with_context(from_cancel_wizard=True).write({ - "state": "confirm", - "active": False - }) - target_record.write({'active': False}) + log_id.sudo().write({"active": False}) + + if record.res_model and record.res_id: + target_model = self.env[record.res_model] + target_record = target_model.sudo().browse(record.res_id).exists() + if target_record: + if target_model._name in ["hr.leave.batch"]: + if target_record.leave_ids: + for leave in target_record.leave_ids: + leave.sudo().with_context(from_cancel_wizard=True).write({ + "state": "confirm", + "active": False + }) + if target_record.hour_leave_ids: + for hour_leave in target_record.hour_leave_ids: + hour_leave.sudo().with_context(from_cancel_wizard=True).write({ + "state": "confirm", + "active": False + }) + # 确保在写入前记录仍然存在 + if target_record.exists(): + target_record.write({'active': False}) else: - self.env["soong.workflow.record"].sudo().search( - [("id", "=", record.id), ('reclaim_state', "=", True)]).write({ - "active": False - }) \ No newline at end of file + workflow_record = self.env["soong.workflow.record"].sudo().search( + [("id", "=", record.id), ('reclaim_state', "=", True)], limit=1) + if workflow_record: + workflow_record.write({"active": False}) \ No newline at end of file diff --git a/yuthon_property_approval/models/property_design_approval.py b/yuthon_property_approval/models/property_design_approval.py index b5564463b..9383567c6 100644 --- a/yuthon_property_approval/models/property_design_approval.py +++ b/yuthon_property_approval/models/property_design_approval.py @@ -13,6 +13,7 @@ class PropertyDesignApproval(models.Model): users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id) department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门") company_id = fields.Many2one(related='users_id.employee_id.company_id', string="公司") + project_content = fields.Char(string="工程内容") company_a_id = fields.Many2one('yuthon.property.company', string="甲方") company_b_id = fields.Many2one('property.construction.unit', string="乙方") budget_list_id = fields.Many2one('ir.attachment', string="预算清单") diff --git a/yuthon_property_approval/views/property_project_approval_views.xml b/yuthon_property_approval/views/property_project_approval_views.xml index d5c5dce4d..7f2bc19b5 100644 --- a/yuthon_property_approval/views/property_project_approval_views.xml +++ b/yuthon_property_approval/views/property_project_approval_views.xml @@ -6,7 +6,7 @@ - +