TIP: You can type at any time to perform a new search.

Security findings

Repository
odoo/odoo · module folder
Module version
0.3
Category
Accounting/Localizations/EDI
Folder size
0.46 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-10-01 06:16:56
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Christophe Matthieu, qdp-odoo, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), Tiffany Chang (tic), william-andre, John Laterre (jol), Pedram (PEBR), Mahamadasif Ansari, amdi-odoo, Gauthier Wala (gawa), Yosua Nicolaus, Dylan Kiss (dyki), Odoo, khfa, Harsh Modi, reka-odoo, kcv-odoo, Louis Gobert, hatr-odoo, Mathieu Coutant, Khumam Alzagim, Yousef Alnashef (alny), Claire (clbr), Hammad Arif, sben-odoo, Krzysztof Magusiak (krma), devp-odoo, dvsh-odoo, ijja-odoo, bhra-odoo, bhna-odoo, Jugurtha, hisi-odoo, Julien Launois (jula), adip-odoo, pssh-odoo, Jacob Was (jacw), h4818, Ayush Modi, Adnan Sabbir, Nisarg (nipl), khom-odoo, Omar Khalid, MohsinAli Masi, matd-odoo, Leonardo Medina, yush-odoo, Farah (ahmfa), mdsi-odoo
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 info_outline

Views touched (14)
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_company_address_list l10n_sa_edi_company_address_list ir.ui.view qweb Inherits web.company_address_list
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_invoice_filter account.invoice.select account.move Inherits account.view_account_invoice_filter
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_invoice_tree account.invoice.list account.move list Inherits account.view_invoice_tree
view_move_form account.view.move.form account.move form Inherits account.view_move_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 (19)

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 (3)
  • l10n_sa_compliance_checks_passed Boolean
    related='journal_id.l10n_sa_compliance_checks_passed'
  • l10n_sa_edi_transaction_type_ids Many2many → l10n_sa_edi.transaction.type
    comodel_name='l10n_sa_edi.transaction.type' compute='_compute_l10n_sa_edi_transaction_type_ids' readonly=False store=True string='Transaction type'
  • l10n_sa_is_csid_ready Boolean
    compute='_compute_l10n_sa_is_csid_ready'
Public methods (1)
  • 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_show_exemption_reason Boolean
    compute='_compute_l10n_sa_show_exemption_reason'
  • ubl_cii_tax_exemption_reason_code Selection
    selection_add=EXEMPTION_REASON_CODES
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 (12)
  • account_move_id Many2one → account.move
    compute='_compute_resource' args: 'account.move'
  • attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' readonly=True
  • company_id Many2one → res.company
    comodel_name='res.company' required=True
  • content Binary
    compute='_compute_content'
  • journal_id Many2one → account.journal
    comodel_name='account.journal' required=True
  • 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_log_ids One2many → l10n_sa_edi.log
    comodel_name='l10n_sa_edi.log' inverse_name='l10n_sa_edi_document_id'
  • message Html
    help='Detailed Errors/Warnings' translate=True args: 'ZATCA Errors/Warnings'
  • name Char
    related='attachment_id.name'
  • res_id Many2oneReference
    model_field='res_model' readonly=True required=True
  • res_model Selection
    readonly=True required=True string='Invoice Type' args: [('account.move', 'Journal Entry'), ('pos.order', 'POS Order')]
  • state Selection
    readonly=True selection=L10N_SA_DOCUMENT_STATES string='ZATCA State'
Public methods (1)
  • resource(self)
    @property

New fields (7)
  • attachment_name Char
  • document_state Selection
    related='l10n_sa_edi_document_id.state'
  • is_latest_log Boolean
    compute='_compute_is_latest_log'
  • is_test Boolean
  • l10n_sa_edi_document_id Many2one → l10n_sa_edi.document
    comodel_name='l10n_sa_edi.document'
  • message Html
    translate=True
  • state Selection
    selection=L10N_SA_DOCUMENT_STATES
Public methods (1)
  • action_retry(self)

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 (2)
  • code Selection
    required=True selection=[('export', 'Export'), ('summary', 'Summary'), ('nominal', 'Nominal')] string='Code'
  • name Char
    required=True string='Name' translate=True
Public methods (0)

No public methods.

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 Char
    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
    compute='_compute_l10n_sa_edi_additional_identification_fields' help='Additional Identification Number for the Seller/Buyer' inverse='_inverse_l10n_sa_edi_additional_identification_fields' string='Identification Number (SA)'
  • l10n_sa_edi_additional_identification_scheme Char
    compute='_compute_l10n_sa_edi_additional_identification_fields' help='Additional Identification Scheme for the Seller/Buyer' inverse='_inverse_l10n_sa_edi_additional_identification_fields' string='Identification Scheme'
  • l10n_sa_edi_building_number Char
    args: 'Building Number'
  • l10n_sa_edi_plot_identification Char
    args: 'Secondary Number'
Public methods (0)

No public methods.

New fields (8)
  • l10n_sa_chain_index Integer
    related='l10n_sa_edi_document_id.l10n_sa_chain_index'
  • l10n_sa_edi_document_id Many2one → l10n_sa_edi.document
    comodel_name='l10n_sa_edi.document' copy=False
  • l10n_sa_edi_log_ids One2many
    related='l10n_sa_edi_document_id.l10n_sa_edi_log_ids'
  • l10n_sa_edi_state Selection
    related='l10n_sa_edi_document_id.state'
  • l10n_sa_edi_supply_end_date Date
    copy=False help='Date when the supply of goods or services is completed, mainly used for continuous supplies.' string='Supply End Date'
  • l10n_sa_invoice_signature Char
    copy=False args: 'Unsigned XML Signature'
  • l10n_sa_is_test Boolean
    compute='_compute_l10n_sa_is_test' store=True
  • l10n_sa_uuid Char
    copy=False help='Universally unique identifier of the Invoice' string='Document UUID (SA)'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…