TIP: You can type at any time to perform a new search.
Saudi Arabia - E-invoicing
l10n_sa_edi · odoo/odoo
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
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_idMany2one → ir.sequencecopy=Falsereadonly=Truestring='ZATCA account.move chain sequence' args: 'ir.sequence' -
l10n_sa_compliance_checks_passedBooleancopy=Falsedefault=Falsehelp='Specifies if the Compliance Checks have been completed successfully' args: 'Compliance Checks Done' -
l10n_sa_compliance_csid_certificate_idMany2one → certificate.certificatecomodel_name='certificate.certificate'domain=[('is_valid', '=', True)]string='CCSID certificate' -
l10n_sa_compliance_csid_jsonCharcopy=Falsegroups='base.group_system'help='Compliance CSID data received from the Compliance CSID API in dumped json format' args: 'CCSID JSON' -
l10n_sa_csrBinaryattachment=Truecopy=Falsegroups='base.group_system'help='The Certificate Signing Request that is submitted to the Compliance API' -
l10n_sa_csr_errorsHtmlcopy=False args: 'Onboarding Errors' -
l10n_sa_latest_submission_hashCharcopy=Falsehelp='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_idMany2one → certificate.certificatecomodel_name='certificate.certificate'domain=[('is_valid', '=', True)]string='PCSID Certificate' -
l10n_sa_production_csid_jsonCharcopy=Falsegroups='base.group_system'help='Production CSID data received from the Production CSID API in dumped json format' args: 'PCSID JSON' -
l10n_sa_production_csid_validityDatetimerelated='l10n_sa_production_csid_certificate_id.date_end'
No public methods.
New fields (4)
-
l10n_sa_chain_indexIntegercopy=Falsehelp='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error'readonly=Truestring='ZATCA chain index' -
l10n_sa_edi_chain_head_idMany2one → account.movecopy=Falsehelp='Technical field to know if the chain has been stopped by a previous invoice'readonly=Truestring='ZATCA chain stopping move' args: 'account.move' -
l10n_sa_invoice_signatureCharcopy=False args: 'Unsigned XML Signature' -
l10n_sa_uuidCharcopy=Falsehelp='Universally unique identifier of the Invoice'string='Document UUID (SA)'
-
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_codeSelectionhelp='Tax Exemption Reason Code (ZATCA)'selection=EXEMPTION_REASON_CODESstring='Exemption Reason Code' -
l10n_sa_is_retentionBooleandefault=Falsehelp='Determines whether or not a tax counts as a Withholding Tax' args: 'Is Retention'
-
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_idMany2one → account.journaldefault=<expr>required=True args: 'account.journal' -
l10n_sa_otpCharcopy=Falsehelp='OTP required to get a CCSID. Can only be acquired through the Fatoora portal.' args: 'OTP' -
l10n_sa_renewalBooleandefault=Falsehelp='Used to decide whether we should call the PCSID renewal API or the CCSID API' args: 'PCSID Renewal'
-
default_get(self, fields)@api.model -
validate(self)
New fields (7)
-
l10n_sa_api_modeSelectioncopy=Falsedefault='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_numberCharreadonly=Falserelated='partner_id.l10n_sa_edi_additional_identification_number' -
l10n_sa_edi_additional_identification_schemeSelectionreadonly=Falserelated='partner_id.l10n_sa_edi_additional_identification_scheme' -
l10n_sa_edi_building_numberCharcompute='_compute_address'inverse='_l10n_sa_edi_inverse_building_number' -
l10n_sa_edi_is_productionBooleancopy=Falsestring='Is Production' -
l10n_sa_edi_plot_identificationCharcompute='_compute_address'inverse='_l10n_sa_edi_inverse_plot_identification' -
l10n_sa_private_key_idMany2one → certificate.keycomodel_name='certificate.key'copy=Falsedomain=[('public', '=', False)]help='The private key used to generate the CSR and obtain certificates'string='ZATCA Private key'
-
write(self, vals)
New fields (1)
-
l10n_sa_api_modeSelectionreadonly=Falserelated='company_id.l10n_sa_api_mode'
No public methods.
New fields (4)
-
l10n_sa_edi_additional_identification_numberCharhelp='Additional Identification Number for the Seller/Buyer' args: 'Identification Number (SA)' -
l10n_sa_edi_additional_identification_schemeSelectiondefault='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_numberCharargs: 'Building Number' -
l10n_sa_edi_plot_identificationCharargs: 'Plot Identification'
No public methods.
Loading…
Loading…
Loading…
Loading…