diff --git a/jikimo_purchase_tier_validation/__init__.py b/jikimo_purchase_tier_validation/__init__.py
index 511a0ca3..40c32597 100644
--- a/jikimo_purchase_tier_validation/__init__.py
+++ b/jikimo_purchase_tier_validation/__init__.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from . import controllers
-from . import models
\ No newline at end of file
+from . import models
+from . import wizards
diff --git a/jikimo_purchase_tier_validation/__manifest__.py b/jikimo_purchase_tier_validation/__manifest__.py
index 99945b9e..2c59b177 100644
--- a/jikimo_purchase_tier_validation/__manifest__.py
+++ b/jikimo_purchase_tier_validation/__manifest__.py
@@ -20,13 +20,14 @@
'version': '0.1',
# any module necessary for this one to work correctly
- 'depends': ['purchase', 'base_tier_validation'],
+ 'depends': ['purchase', 'base_tier_validation', 'documents'],
# always loaded
'data': [
- # 'security/ir.model.access.csv',
+ 'security/ir.model.access.csv',
+ 'data/documents_data.xml',
+ 'wizards/upload_file_wizard_view.xml',
'views/views.xml',
- 'views/templates.xml',
],
# only loaded in demonstration mode
'demo': [
diff --git a/jikimo_purchase_tier_validation/data/documents_data.xml b/jikimo_purchase_tier_validation/data/documents_data.xml
new file mode 100644
index 00000000..990a6418
--- /dev/null
+++ b/jikimo_purchase_tier_validation/data/documents_data.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ 采购合同
+ 存放采购合同相关文件
+ 10
+
+
+
\ No newline at end of file
diff --git a/jikimo_purchase_tier_validation/models/models.py b/jikimo_purchase_tier_validation/models/models.py
index bb61cd5b..880faf09 100644
--- a/jikimo_purchase_tier_validation/models/models.py
+++ b/jikimo_purchase_tier_validation/models/models.py
@@ -1,10 +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 = []
@@ -12,8 +23,96 @@ class jikimo_purchase_tier_validation(models.Model):
missing_fields.append('合同名称')
if not record.contract_number:
missing_fields.append('合同编号')
-
+
if missing_fields:
raise ValidationError(_('如下字段要求必须填写:%s') % '、'.join(missing_fields))
-
+
return super(jikimo_purchase_tier_validation, self).request_validation()
+
+ # 上传合同文件
+ def upload_contract_file(self):
+ print('upload_contract_file===========================')
+ # self.ensure_one()
+ # return {
+ # 'name': _('上传合同文件'),
+ # 'type': 'ir.actions.act_window',
+ # 'res_model': 'ir.attachment',
+ # 'view_mode': 'form',
+ # 'view_type': 'form',
+ # 'target': 'new',
+ # 'context': {
+ # 'default_res_model': self._name,
+ # 'default_res_id': self.id,
+ # 'default_type': 'binary',
+ # 'default_mimetype': 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/jpeg,image/png',
+ # }
+ # }
+
+ self.ensure_one()
+ action = {
+ 'type': 'ir.actions.act_window',
+ 'name': _('上传合同文件'),
+ 'res_model': 'ir.attachment.wizard', # 我们需要创建一个新的向导模型
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_res_model': self._name,
+ 'default_res_id': self.id,
+ }
+ }
+ return action
+
+ # 删除合同文件
+ def delete_contract_file(self):
+ 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/security/ir.model.access.csv b/jikimo_purchase_tier_validation/security/ir.model.access.csv
index ccd753fc..09ba96bc 100644
--- a/jikimo_purchase_tier_validation/security/ir.model.access.csv
+++ b/jikimo_purchase_tier_validation/security/ir.model.access.csv
@@ -1,2 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_jikimo_purchase_tier_validation_jikimo_purchase_tier_validation,jikimo_purchase_tier_validation.jikimo_purchase_tier_validation,model_jikimo_purchase_tier_validation_jikimo_purchase_tier_validation,base.group_user,1,1,1,1
\ No newline at end of file
+access_ir_attachment_wizard,ir.attachment.wizard,model_ir_attachment_wizard,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/jikimo_purchase_tier_validation/views/views.xml b/jikimo_purchase_tier_validation/views/views.xml
index 5c87a811..e26a7372 100644
--- a/jikimo_purchase_tier_validation/views/views.xml
+++ b/jikimo_purchase_tier_validation/views/views.xml
@@ -1,19 +1,34 @@
+
-
-
-
+
+
+ tier_validation_view_purchase_order_form_inherit
+ purchase.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+