odoo18/addons/l10n_sa_edi/models/account_move_send.py

27 lines
1.1 KiB
Python

from odoo import _, api, models
class AccountMoveSend(models.AbstractModel):
_inherit = 'account.move.send'
@api.model
def _is_sa_edi_applicable(self, move):
zatca_document = move.edi_document_ids.filtered(lambda d: d.edi_format_id.code == 'sa_zatca' and d.state == 'to_send')
return move.country_code == 'SA' and move.move_type in ('out_invoice', 'out_refund') and zatca_document and move.state != 'draft'
def _get_all_extra_edis(self) -> dict:
# EXTENDS 'account'
res = super()._get_all_extra_edis()
res.update({'sa_edi': {'label': _("Send to Zatca"), 'is_applicable': self._is_sa_edi_applicable}})
return res
def _call_web_service_before_invoice_pdf_render(self, invoices_data):
# EXTENDS 'account'
super()._call_web_service_before_invoice_pdf_render(invoices_data)
to_process = self.env['account.move']
for invoice, invoice_data in invoices_data.items():
if 'sa_edi' in invoice_data['extra_edis']:
to_process |= invoice
to_process.action_process_edi_web_services()