44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
|
from odoo import _, models, api
|
||
|
|
||
|
|
||
|
class AccountMoveSend(models.AbstractModel):
|
||
|
_inherit = 'account.move.send'
|
||
|
|
||
|
@api.model
|
||
|
def _get_l10n_ke_edi_tremol_warning_moves(self, moves):
|
||
|
return moves.filtered(lambda m: m.country_code == 'KE' and not m._l10n_ke_fiscal_device_details_filled())
|
||
|
|
||
|
@api.model
|
||
|
def _get_l10n_ke_edi_tremol_warning_message(self, warning_moves):
|
||
|
return '\n'.join([
|
||
|
_("The following documents have no details related to the fiscal device."),
|
||
|
*(warning_moves.mapped('name'))
|
||
|
])
|
||
|
|
||
|
# -------------------------------------------------------------------------
|
||
|
# ALERTS
|
||
|
# -------------------------------------------------------------------------
|
||
|
|
||
|
def _get_alerts(self, moves, moves_data):
|
||
|
# EXTENDS 'account'
|
||
|
alerts = super()._get_alerts(moves, moves_data)
|
||
|
if warning_moves := self._get_l10n_ke_edi_tremol_warning_moves(moves):
|
||
|
alerts['l10n_ke_edi_tremol_warning_moves'] = {
|
||
|
'message': self._get_l10n_ke_edi_tremol_warning_message(warning_moves),
|
||
|
'action_text': _("View Invoice(s)"),
|
||
|
'action': warning_moves._get_records_action(name=_("Check Invoice(s)")),
|
||
|
}
|
||
|
return alerts
|
||
|
|
||
|
# -------------------------------------------------------------------------
|
||
|
# SENDING METHODS
|
||
|
# -------------------------------------------------------------------------
|
||
|
|
||
|
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."
|
||
|
)
|