diff --git a/jikimo_purchase_tier_validation/models/models.py b/jikimo_purchase_tier_validation/models/models.py index f69859c1..880faf09 100644 --- a/jikimo_purchase_tier_validation/models/models.py +++ b/jikimo_purchase_tier_validation/models/models.py @@ -1,11 +1,21 @@ from odoo import models, fields, api, _ from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) class jikimo_purchase_tier_validation(models.Model): _name = 'purchase.order' _inherit = ['purchase.order', 'tier.validation'] + contract_document_id = fields.Many2one('documents.document', string='合同文件') + contract_file = fields.Binary(related='contract_document_id.datas', string='合同文件内容') + contract_file_name = fields.Char(related='contract_document_id.attachment_id.name', string='文件名') + + # 是否已上传合同文件 + is_upload_contract_file = fields.Boolean(string='是否已上传合同文件', default=False) + def request_validation(self): for record in self: missing_fields = [] @@ -54,5 +64,55 @@ class jikimo_purchase_tier_validation(models.Model): # 删除合同文件 def delete_contract_file(self): - print('delete_contract_file============================') - pass + self.ensure_one() + if self.contract_document_id: + try: + document = self.contract_document_id + + # 清空关联 + self.write({ + 'contract_document_id': False, + 'contract_file': False, + 'contract_file_name': False + }) + + # 删除文档 + if document: + document.with_context(no_attachment=True).sudo().unlink() + + self.is_upload_contract_file = False + + # 返回视图动作来刷新当前表单 + return { + 'type': 'ir.actions.act_window', + 'res_model': 'purchase.order', + 'res_id': self.id, + 'view_mode': 'form', + 'view_type': 'form', + 'target': 'current', + 'flags': {'mode': 'readonly'}, + } + + except Exception as e: + _logger.error('删除合同文件时出错: %s', str(e)) + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('错误'), + 'message': _('删除文件时出现错误'), + 'type': 'danger', + 'sticky': True, + } + } + + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('提示'), + 'message': _('没有需要删除的合同文件'), + 'type': 'warning', + 'sticky': False, + } + } diff --git a/jikimo_purchase_tier_validation/views/views.xml b/jikimo_purchase_tier_validation/views/views.xml index 0fee7710..e26a7372 100644 --- a/jikimo_purchase_tier_validation/views/views.xml +++ b/jikimo_purchase_tier_validation/views/views.xml @@ -7,8 +7,25 @@ -