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 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jikimo_purchase_tier_validation/wizards/upload_file_wizard.py b/jikimo_purchase_tier_validation/wizards/upload_file_wizard.py
index 595f0cb7..f7ead9e1 100644
--- a/jikimo_purchase_tier_validation/wizards/upload_file_wizard.py
+++ b/jikimo_purchase_tier_validation/wizards/upload_file_wizard.py
@@ -45,6 +45,8 @@ class IrAttachmentWizard(models.TransientModel):
def action_upload_file(self):
self.ensure_one()
+ # 获取当前用户的 partner_id
+ current_partner = self.env.user.partner_id
# 首先创建 ir.attachment
attachment = self.env['ir.attachment'].create({
'name': self.filename,
@@ -64,6 +66,14 @@ class IrAttachmentWizard(models.TransientModel):
'folder_id': workspace.id,
'res_model': self.res_model,
'res_id': self.res_id,
+ 'partner_id': current_partner.id,
+ })
+
+ # 更新采购订单的合同文档字段
+ purchase_order = self.env['purchase.order'].browse(self.res_id)
+ purchase_order.write({
+ 'contract_document_id': document.id,
+ 'is_upload_contract_file': True
})
# 显示成功消息并关闭向导
@@ -80,6 +90,7 @@ class IrAttachmentWizard(models.TransientModel):
}
}
}
+
return message
diff --git a/jikimo_purchase_tier_validation/wizards/upload_file_wizard_view.xml b/jikimo_purchase_tier_validation/wizards/upload_file_wizard_view.xml
index 15bc1023..d75e75cb 100644
--- a/jikimo_purchase_tier_validation/wizards/upload_file_wizard_view.xml
+++ b/jikimo_purchase_tier_validation/wizards/upload_file_wizard_view.xml
@@ -12,7 +12,7 @@