Odoo18-Base/addons/l10n_ke_edi_tremol/wizard/account_move_send.py
2025-03-10 10:52:11 +07:00

37 lines
1.9 KiB
Python

from odoo import _, models, fields, api
from odoo.exceptions import UserError
class AccountMoveSend(models.TransientModel):
_inherit = 'account.move.send'
l10n_ke_edi_warning_message = fields.Text(compute='_compute_l10n_ke_edi_warning_message')
@api.depends('move_ids')
def _compute_l10n_ke_edi_warning_message(self):
for wizard in self:
warning_moves = wizard.move_ids.filtered(lambda m: m.country_code == 'KE' and not m._l10n_ke_fiscal_device_details_filled())
if warning_moves:
wizard.l10n_ke_edi_warning_message = '\n'.join([
_("The following documents have no details related to the fiscal device."),
*(warning_moves.mapped('name'))
])
else:
wizard.l10n_ke_edi_warning_message = False
def _hook_invoice_document_before_pdf_report_render(self, invoice, invoice_data):
# EXTENDS account
super()._hook_invoice_document_before_pdf_report_render(invoice, invoice_data)
if invoice.country_code == 'KE' and not invoice._l10n_ke_fiscal_device_details_filled():
invoice_data['error'] = _(
"This document does not have details related to the fiscal device, a proforma invoice will be used."
)
def action_send_and_print(self, force_synchronous=False, allow_fallback_pdf=False, **kwargs):
# EXTENDS account - prevent Send & Print if KE invoices aren't validated and no fallback is allowed.
self.ensure_one()
if not allow_fallback_pdf \
and any(move.country_code == 'KE' and not move._l10n_ke_fiscal_device_details_filled() for move in self.move_ids):
raise UserError(self.l10n_ke_edi_warning_message)
return super().action_send_and_print(force_synchronous=force_synchronous, allow_fallback_pdf=allow_fallback_pdf, **kwargs)