docx_report_generation/models/account_invoice.py
2021-04-29 16:03:25 +05:00

70 lines
2.3 KiB
Python
Executable File

from odoo import models, _
from odoo.exceptions import UserError
from ..utils import MODULE_NAME
class AccountInvoice(models.Model):
_inherit = "account.move"
@staticmethod
def check_contract_presence(sale_order_ids):
error_message = ""
if any(not so.contract_annex_id.contract_id for so in sale_order_ids):
error_message = _("There is a Sale order without binding contract.")
if any(not so.contract_annex_id for so in sale_order_ids):
error_message = _("There is a Sale order without annex.")
if error_message:
raise UserError(error_message)
def action_invoice_print(self):
'''
for so in self.env["sale.order"].search([]):
if self.id in so.invoice_ids.ids:
order = so
break
else:
return super().action_invoice_print()
if not order.contract_annex_id or not order.contract_annex_id.contract_id:
raise UserError(
_(
"There is no binding contract. It is necessary to link the order with the annex to the contract."
)
)
self.sent = True
'''
sale_orders_ids = self.env["sale.order"].search([
("invoice_ids", "in", self.ids)
])
if not sale_orders_ids:
return super().action_invoice_print()
self.check_contract_presence(sale_orders_ids)
self.filtered(lambda inv: not inv.is_move_sent).write({'is_move_sent': True})
view = self.env.ref(
"{}.res_partner_wizard_print_document_view".format(MODULE_NAME)
)
annex = order.contract_annex_id
return {
"name": _("Print Form of Contract Annex"),
"type": "ir.actions.act_window",
"res_model": "res.partner.contract.wizard",
"view_mode": "form",
"view_id": view.id,
"target": "new",
"context": {
"self_id": annex.id,
"active_model": "res.partner.contract.annex",
"company_form": annex.partner_id.company_form
if annex.partner_id.is_company
else "person",
"attachment_model": self._name,
"attachment_res_id": self.id,
},
}