Repository
odoo/odoo · module folder
Module version
0.3
Category
Accounting/Localizations/EDI
Folder size
0.42 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-07 06:47:03
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Josse Colpaert, Odoo Translation Bot, qdp-odoo, Laurent Smet, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Gorash, william-andre, jbw-odoo, Pedram (PEBR), Maximilien (malb), Mahamadasif Ansari, Gauthier Wala (gawa), Yosua Nicolaus, Dylan Kiss (dyki), khfa, Sarah Bellefroid, sesn-odoo, AMZIL Ayoub, Louis Gobert, Harsh Shah, Mathieu Coutant, Khumam Alzagim, Yousef Alnashef (alny), Claire (clbr), Hammad Arif, Antoine Dupuis, Hesham Saleh, abwa, khsr-odoo, Anton Romanova (roan), Corentin Lombard, AKR, dvsh-odoo, bhra-odoo, Earth Patel, adip-odoo, Jacob Was (jacw), Ayush Modi, Adnan Sabbir, khom-odoo, Nesma Harraz (neha), Omar Khalid, MohsinAli Masi, matd-odoo, yush-odoo, Farah (ahmfa), Ahmad Khater, amml
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
l10n_sa_edi_pos
Description
E-invoice implementation for Saudi Arabia; Integration with ZATCA
    

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
address_form_fields address_form_fields ir.ui.view qweb Inherits portal.address_form_fields
export_sa_zatca_ubl_extensions export_sa_zatca_ubl_extensions ir.ui.view qweb New
export_sa_zatca_ubl_signed_properties export_sa_zatca_ubl_signed_properties ir.ui.view qweb New
l10n_sa_edi_external_layout_bold l10n_sa_edi_external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
l10n_sa_edi_external_layout_boxed l10n_sa_edi_external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
l10n_sa_edi_external_layout_bubble l10n_sa_edi_external_layout_bubble ir.ui.view qweb Inherits web.external_layout_bubble
l10n_sa_edi_external_layout_folder l10n_sa_edi_external_layout_folder ir.ui.view qweb Inherits web.external_layout_folder
l10n_sa_edi_external_layout_standard l10n_sa_edi_external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
l10n_sa_edi_external_layout_striped l10n_sa_edi_external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
l10n_sa_edi_external_layout_wave l10n_sa_edi_external_layout_wave ir.ui.view qweb Inherits web.external_layout_wave
l10n_sa_edi_otp_wizard_view_form l10n_sa_edi.otp.wizard.form l10n_sa_edi.otp.wizard form New
l10n_sa_edi_report_invoice_document l10n_sa_edi_report_invoice_document ir.ui.view qweb Inherits l10n_sa.l10n_sa_report_invoice_document
res_config_settings_view_form res.config.settings.view.form.inherit.l10n_sa_edi res.config.settings form Inherits account.res_config_settings_view_form
sa_partner_address_form sa.partner.form.address res.partner form New
view_account_form_inherit account.move.form.inherit account.move form Inherits account.view_move_form
view_account_journal_form account.journal.form.l10n_sa_edi account.journal form Inherits account.view_account_journal_form
view_company_form res.company.l10n_sa_edi.form res.company form Inherits base.view_company_form
view_partner_form res.partner.l10n_sa_edi.form res.partner form Inherits base.view_partner_form
view_tax_form account.tax.form.zatca account.tax form Inherits account.view_tax_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (15)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • l10n_sa_chain_sequence_id Many2one → ir.sequence
    copy=False readonly=True string='ZATCA account.move chain sequence' args: 'ir.sequence'
  • l10n_sa_compliance_checks_passed Boolean
    copy=False default=False help='Specifies if the Compliance Checks have been completed successfully' args: 'Compliance Checks Done'
  • l10n_sa_compliance_csid_certificate_id Many2one → certificate.certificate
    comodel_name='certificate.certificate' domain=[('is_valid', '=', True)] string='CCSID certificate'
  • l10n_sa_compliance_csid_json Char
    copy=False groups='base.group_system' help='Compliance CSID data received from the Compliance CSID API in dumped json format' args: 'CCSID JSON'
  • l10n_sa_csr Binary
    attachment=True copy=False groups='base.group_system' help='The Certificate Signing Request that is submitted to the Compliance API'
  • l10n_sa_csr_errors Html
    copy=False args: 'Onboarding Errors'
  • l10n_sa_latest_submission_hash Char
    copy=False help='Hash of the latest submitted invoice to be used as the Previous Invoice Hash (KSA-13)' args: 'Latest Submission Hash'
  • l10n_sa_production_csid_certificate_id Many2one → certificate.certificate
    comodel_name='certificate.certificate' domain=[('is_valid', '=', True)] string='PCSID Certificate'
  • l10n_sa_production_csid_json Char
    copy=False groups='base.group_system' help='Production CSID data received from the Production CSID API in dumped json format' args: 'PCSID JSON'
  • l10n_sa_production_csid_validity Datetime
    related='l10n_sa_production_csid_certificate_id.date_end'
Public methods (0)

No public methods.

New fields (4)
  • l10n_sa_chain_index Integer
    copy=False help='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error' readonly=True string='ZATCA chain index'
  • l10n_sa_edi_chain_head_id Many2one → account.move
    copy=False help='Technical field to know if the chain has been stopped by a previous invoice' readonly=True string='ZATCA chain stopping move' args: 'account.move'
  • l10n_sa_invoice_signature Char
    copy=False args: 'Unsigned XML Signature'
  • l10n_sa_uuid Char
    copy=False help='Universally unique identifier of the Invoice' string='Document UUID (SA)'
Public methods (2)
  • action_show_chain_head(self)
    Action to show the chain head of the invoice
  • button_draft(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • l10n_sa_exemption_reason_code Selection
    help='Tax Exemption Reason Code (ZATCA)' selection=EXEMPTION_REASON_CODES string='Exemption Reason Code'
  • l10n_sa_is_retention Boolean
    default=False help='Determines whether or not a tax counts as a Withholding Tax' args: 'Is Retention'
Public methods (1)
  • onchange_amount(self)
    @api.onchange('amount')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • journal_id Many2one → account.journal
    default=<expr> required=True args: 'account.journal'
  • l10n_sa_otp Char
    copy=False help='OTP required to get a CCSID. Can only be acquired through the Fatoora portal.' args: 'OTP'
  • l10n_sa_renewal Boolean
    default=False help='Used to decide whether we should call the PCSID renewal API or the CCSID API' args: 'PCSID Renewal'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • validate(self)

New fields (7)
  • l10n_sa_api_mode Selection
    copy=False default='sandbox' help='Specifies which API the system should use' required=True args: [('sandbox', 'Sandbox'), ('preprod', 'Simulation (Pre-Production)'), ('prod', 'Production')]
  • l10n_sa_edi_additional_identification_number Char
    readonly=False related='partner_id.l10n_sa_edi_additional_identification_number'
  • l10n_sa_edi_additional_identification_scheme Selection
    readonly=False related='partner_id.l10n_sa_edi_additional_identification_scheme'
  • l10n_sa_edi_building_number Char
    compute='_compute_address' inverse='_l10n_sa_edi_inverse_building_number'
  • l10n_sa_edi_is_production Boolean
    copy=False string='Is Production'
  • l10n_sa_edi_plot_identification Char
    compute='_compute_address' inverse='_l10n_sa_edi_inverse_plot_identification'
  • l10n_sa_private_key_id Many2one → certificate.key
    comodel_name='certificate.key' copy=False domain=[('public', '=', False)] help='The private key used to generate the CSR and obtain certificates' string='ZATCA Private key'
Public methods (1)
  • write(self, vals)

New fields (1)
  • l10n_sa_api_mode Selection
    readonly=False related='company_id.l10n_sa_api_mode'
Public methods (0)

No public methods.

New fields (4)
  • l10n_sa_edi_additional_identification_number Char
    help='Additional Identification Number for the Seller/Buyer' args: 'Identification Number (SA)'
  • l10n_sa_edi_additional_identification_scheme Selection
    default='OTH' help='Additional Identification Scheme for the Seller/Buyer' string='Identification Scheme' args: [('TIN', 'Tax Identification Number'), ('CRN', 'Commercial Registration Number'), ('MOM', 'Momra License'), ('MLS', 'MLSD License'), ('700', '700 Number'), ('SAG', 'Sagia License'), ('NAT', 'National ID'), ('GCC', 'GCC ID'), ('IQA', 'Iqama Number'), ('PAS', 'Passport ID'), ('OTH', 'Other ID')]
  • l10n_sa_edi_building_number Char
    args: 'Building Number'
  • l10n_sa_edi_plot_identification Char
    args: 'Plot Identification'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…