diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 525673b07..39ea26663 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -981,29 +981,27 @@ class SoongWorkflowRecord(models.Model): }) def open_record(self): - return { - "type": "ir.actions.act_window", - "res_model": self.res_model, - "res_id": self.res_id, - "name": self.name, - "view_mode": "form", - } + """按「模型 + 记录 id」跳转到该审批对应的**业务单据**表单 - def action_open_workflow_record(self): - """跳转到**本审批记录**(soong.workflow.record)的表单 - - 用「本模型 + 本记录 id」打开,用于查看该条审批的完整流转信息。 - (区别于 open_record:那个是跳到审批对应的**业务单据**。) + 例:审批类型=成交确认书审批 → 打开 `property.confirm`(成交确认书)的 form; + 审批类型=物业评估申请 → 打开 `property.evaluate.application` 的 form。 """ self.ensure_one() + if not self.res_model or not self.res_id: + raise UserError(_('该审批记录未关联业务单据,无法跳转')) + if self.res_model not in self.env: + raise UserError(_('系统中已不存在模型「%s」,无法跳转') % self.res_model) + if not self.env[self.res_model].sudo().browse(self.res_id).exists(): + raise UserError(_('对应的业务单据已不存在(%s #%s),无法跳转') + % (self.res_model, self.res_id)) return { - 'type': 'ir.actions.act_window', - 'name': self.name or self.code or '审批记录', - 'res_model': 'soong.workflow.record', - 'res_id': self.id, - 'view_mode': 'form', - 'views': [(False, 'form')], - 'target': 'current', + "type": "ir.actions.act_window", + "name": self.name or self.res_model, + "res_model": self.res_model, + "res_id": self.res_id, + "view_mode": "form", + "views": [(False, "form")], + "target": "current", } @api.model diff --git a/yuthon_property/views/yuthon_property_views.xml b/yuthon_property/views/yuthon_property_views.xml index a29047569..8a9a1bd9b 100644 --- a/yuthon_property/views/yuthon_property_views.xml +++ b/yuthon_property/views/yuthon_property_views.xml @@ -307,7 +307,7 @@ -