Suministro Inmediato de Información en el IVA

l10n_es_aeat_sii_oca
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/19.0/l10n_es_aeat_sii_oca
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, OCA-git-bot, oca-ci, Emilio Pascual
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:10:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
    - account_edi_ubl_cii
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
account_journal_dashboard_kanban_view account.journal.dashboard.kanban account.journal data Inherits account.account_journal_dashboard_kanban_view
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map list New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys list New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines list New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=<expr> selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=Domain('type', '=', 'purchase') args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=Domain('type', '=', 'sale') args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (2)
  • company_sii_enabled Boolean
    related='company_id.sii_enabled' string='Company enable SII'
  • sii_enabled Boolean
    default=True string='Enable SII'
Public methods (0)

No public methods.

New fields (7)
  • sii_dua_invoice Boolean
    compute='_compute_dua_invoice'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
Public methods (7)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • process_send_sii(self)
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    string='Is Supplier Invoice Number Required?'
Public methods (2)
  • default_get(self, fields_list)
    The previous default methods have been moved here to avoid computing the same queries multiple times, also to avoid duplicated code.
  • reverse_moves(self, is_modify=False)

New fields (5)
  • date_from Date
  • date_to Date
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
  • tax_agency_id Many2one → aeat.tax.agency
    comodel_name='aeat.tax.agency' string='Tax Agency'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True
  • name Char
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes templates'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2
  • name Char
    required=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (0)

No public methods.

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (12)
  • delay_time Float
  • send_mode Selection
    default='delayed' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')]
  • sent_time Float
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_period Selection
    default='monthly' selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
  • sii_start_date Date
    help="If this field is set, the sii won't be enabled on invoices with lower invoice date. If not set, the sii can be enabled on all invoice dates"
  • sii_test Boolean
    string='Is it the SII test environment?'
Public methods (0)

No public methods.

New fields (1)
  • sii_enabled Boolean
    compute='_compute_aeat_sending_enabled'
Public methods (0)

No public methods.

New fields (14)
  • aeat_state Selection
    selection_add=SII_STATES
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the document is recorded in the system and is independent of the date of the accounting entry of the document' readonly=True string='SII account registration date'
  • sii_csv Char
    copy=False index=True readonly=True string='SII CSV'
  • sii_description Char
    compute='_compute_sii_description' copy=False default='/' readonly=False size=500 store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' search='_search_sii_enabled' string='Enable SII'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the document has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_needs_cancel Boolean
    copy=False readonly=True
  • sii_refund_type Selection
    compute='_compute_sii_refund_type' readonly=False selection=[('I', 'By differences')] store=True string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_date Datetime
    copy=False index=True string='SII Send Date'
Public methods (3)
  • confirm_one_document(self)
  • send_sii(self)
  • send_sii_now(self)

New fields (5)
  • account_move_ids Many2many → account.move
    string='Invoices' args: 'account.move'
  • modified_number Integer
  • moves_to_send Integer
  • not_send_without_errors_number Integer
  • with_errors_number Integer
Public methods (2)
  • action_confirm(self)
  • default_get(self, fields)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/18.0/l10n_es_aeat_sii_oca
VERSION
VERSION 2.2.2
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, AaronHForgeFlow, Weblate, OCA-git-bot, oca-ci, Emilio Pascual, LauraCForgeFlow, sygel, FernandoRomera, pol, Sabrina Martín, christian-ramos-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:09:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
account_journal_dashboard_kanban_view account.journal.dashboard.kanban account.journal data Inherits account.account_journal_dashboard_kanban_view
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map list New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys list New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines list New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (2)
  • company_sii_enabled Boolean
    related='company_id.sii_enabled' string='Company enable SII'
  • sii_enabled Boolean
    default=True string='Enable SII'
Public methods (0)

No public methods.

New fields (7)
  • sii_dua_invoice Boolean
    compute='_compute_dua_invoice'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
Public methods (7)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • process_send_sii(self)
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    string='Is Supplier Invoice Number Required?'
Public methods (2)
  • default_get(self, fields_list)
    The previous default methods have been moved here to avoid computing the same queries multiple times, also to avoid duplicated code.
  • reverse_moves(self, is_modify=False)

New fields (5)
  • date_from Date
  • date_to Date
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
  • tax_agency_id Many2one → aeat.tax.agency
    comodel_name='aeat.tax.agency' string='Tax Agency'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True
  • name Char
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes templates'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2
  • name Char
    required=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (0)

No public methods.

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (12)
  • delay_time Float
  • send_mode Selection
    default='delayed' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')]
  • sent_time Float
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_period Selection
    default='monthly' selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
  • sii_start_date Date
    help="If this field is set, the sii won't be enabled on invoices with lower invoice date. If not set, the sii can be enabled on all invoice dates"
  • sii_test Boolean
    string='Is it the SII test environment?'
Public methods (0)

No public methods.

New fields (1)
  • sii_enabled Boolean
    compute='_compute_aeat_sending_enabled'
Public methods (0)

No public methods.

New fields (14)
  • aeat_state Selection
    selection_add=SII_STATES
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the document is recorded in the system and is independent of the date of the accounting entry of the document' readonly=True string='SII account registration date'
  • sii_csv Char
    copy=False index=True readonly=True string='SII CSV'
  • sii_description Char
    compute='_compute_sii_description' copy=False default='/' readonly=False size=500 store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' search='_search_sii_enabled' string='Enable SII'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the document has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_needs_cancel Boolean
    copy=False readonly=True
  • sii_refund_type Selection
    compute='_compute_sii_refund_type' readonly=False selection=[('I', 'By differences')] store=True string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_date Datetime
    copy=False index=True string='SII Send Date'
Public methods (3)
  • confirm_one_document(self)
  • send_sii(self)
  • send_sii_now(self)

New fields (5)
  • account_move_ids Many2many → account.move
    string='Invoices' args: 'account.move'
  • modified_number Integer
  • moves_to_send Integer
  • not_send_without_errors_number Integer
  • with_errors_number Integer
Public methods (2)
  • action_confirm(self)
  • default_get(self, fields)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/17.0/l10n_es_aeat_sii_oca
VERSION
VERSION 1.7.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Sygel, Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, Carlos Dauden, sergio-teruel, Weblate, OCA-git-bot, David Vidal, oca-ci, Emilio Pascual, sygel, pol, Manuel Regidor, Sabrina Martín, christian-ramos-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:59:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
account_journal_dashboard_kanban_view account.journal.dashboard.kanban account.journal data Inherits account.account_journal_dashboard_kanban_view
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map tree New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys tree New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines tree New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_partner_form res.partner xpath Inherits l10n_es_aeat.view_partner_form
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
Models touched (14)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (6)
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (2)
  • company_sii_enabled Boolean
    related='company_id.sii_enabled' string='Company enable SII'
  • sii_enabled Boolean
    default=True string='Enable SII'
Public methods (0)

No public methods.

New fields (7)
  • sii_dua_invoice Boolean
    compute='_compute_dua_invoice'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
Public methods (7)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • process_send_sii(self)
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    string='Is Supplier Invoice Number Required?'
Public methods (2)
  • default_get(self, fields_list)
    The previous default methods have been moved here to avoid computing the same queries multiple times, also to avoid duplicated code.
  • reverse_moves(self, is_modify=False)

New fields (5)
  • date_from Date
  • date_to Date
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
  • tax_agency_id Many2one → aeat.tax.agency
    comodel_name='aeat.tax.agency' string='Tax Agency'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True
  • name Char
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes templates'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2
  • name Char
    required=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (1)
  • name_get(self)

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (12)
  • delay_time Float
  • send_mode Selection
    default='delayed' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')]
  • sent_time Float
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_period Selection
    default='monthly' selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
  • sii_start_date Date
    help="If this field is set, the sii won't be enabled on invoices with lower invoice date. If not set, the sii can be enabled on all invoice dates"
  • sii_test Boolean
    string='Is it the SII test environment?'
Public methods (0)

No public methods.

New fields (1)
  • sii_enabled Boolean
    compute='_compute_aeat_sending_enabled'
Public methods (0)

No public methods.

New fields (14)
  • aeat_state Selection
    selection_add=SII_STATES
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the document is recorded in the system and is independent of the date of the accounting entry of the document' readonly=True string='SII account registration date'
  • sii_csv Char
    copy=False readonly=True string='SII CSV'
  • sii_description Char
    compute='_compute_sii_description' copy=False default='/' readonly=False store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' search='_search_sii_enabled' string='Enable SII'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the document has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_needs_cancel Boolean
    copy=False readonly=True
  • sii_refund_type Selection
    compute='_compute_sii_refund_type' readonly=False selection=[('I', 'By differences')] store=True string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_date Datetime
    copy=False index=True string='SII Send Date'
Public methods (3)
  • confirm_one_document(self)
  • send_sii(self)
  • send_sii_now(self)

New fields (5)
  • account_move_ids Many2many → account.move
    string='Invoices' args: 'account.move'
  • modified_number Integer
  • moves_to_send Integer
  • not_send_without_errors_number Integer
  • with_errors_number Integer
Public methods (2)
  • action_confirm(self)
  • default_get(self, fields)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/16.0/l10n_es_aeat_sii_oca
VERSION
VERSION 2.5.9
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jairo Llopis, Víctor Martínez, Omar (Comunitea), Weblate, OCA-git-bot, Luis J. Salvatierra, Rodrigo, David, Ethan Hildick, oca-ci, Aritz Olea, Eduardo De Miguel, David Alonso // Solvos, EmilioPascual, Jose Zambudio, almumu, Jose Zambudio Bernabeu, mde-spring, extrememicro, pol, Eduardo López Peñalver, Yadier A. De Quesada, Sabrina Martín
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/queue:
    - queue_job
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
requests
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map tree New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys tree New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.move group Inherits invoice_sii_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines tree New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_partner_form res.partner xpath Inherits l10n_es_aeat.view_partner_form
view_queue_job_sii queue.job tree New
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
Models touched (14)

New fields (6)
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (2)
  • company_sii_enabled Boolean
    related='company_id.sii_enabled' string='Company enable SII'
  • sii_enabled Boolean
    default=True string='Enable SII'
Public methods (0)

No public methods.

New fields (7)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False relation='account_move_queue_job_rel' string='Connector Jobs'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
Public methods (7)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • process_send_sii(self)
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    string='Is Supplier Invoice Number Required?'
Public methods (2)
  • default_get(self, fields_list)
    The previous default methods have been moved here to avoid computing the same queries multiple times, also to avoid duplicated code.
  • reverse_moves(self)

New fields (4)
  • date_from Date
  • date_to Date
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True
  • name Char
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • taxes Many2many → account.tax.template
    comodel_name='account.tax.template'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2
  • name Char
    required=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (1)
  • name_get(self)

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • cancel_now(self)
  • do_now(self)
  • requeue_sudo(self)

New fields (13)
  • delay_time Float
  • send_mode Selection
    default='auto' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')]
  • sent_time Float
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_period Selection
    default='monthly' selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
  • sii_start_date Date
    help="If this field is set, the sii won't be enabled on invoices with lower invoice date. If not set, the sii can be enabled on all invoice dates"
  • sii_test Boolean
    string='Is it the SII test environment?'
  • use_connector Boolean
    help="Check it to use connector instead of sending the invoice directly when it's validated"
Public methods (0)

No public methods.

New fields (1)
  • sii_enabled Boolean
    compute='_compute_aeat_sending_enabled'
Public methods (0)

No public methods.

New fields (12)
  • aeat_state Selection
    selection_add=SII_STATES
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the document is recorded in the system and is independent of the date of the accounting entry of the document' readonly=True string='SII account registration date'
  • sii_csv Char
    copy=False readonly=True string='SII CSV'
  • sii_description Text
    compute='_compute_sii_description' copy=False default='/' readonly=False store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' search='_search_sii_enabled' string='Enable SII'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the document has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_refund_type Selection
    compute='_compute_sii_refund_type' readonly=False selection=[('I', 'By differences')] store=True string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
Public methods (2)
  • confirm_one_document(self)
  • send_sii(self)
    General public method for filtering out of the starting recordset the records that shouldn't be sent to the SII: - Documents of companies with SII not enabled (through sii_enabled). - Documents not applicable to be sent to SII (through sii_enabled). - Documents in non applicable states (for example, cancelled invoices). - Documents already sent to the SII. - Documents with sending jobs pending to be executed.

New fields (3)
  • account_move_ids Many2many → account.move
    string='Invoices' args: 'account.move'
  • sending_number Integer
    string='Invoices Jobs Process Sending'
  • sent_number Integer
    string='Invoices SII Sent'
Public methods (2)
  • action_confirm(self)
  • default_get(self, fields)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/15.0/l10n_es_aeat_sii_oca
VERSION
VERSION 2.22.2
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, Lois Rilo, OCA Transbot, sergio-teruel, Víctor Martínez, Omar (Comunitea), Weblate, OCA-git-bot, David, Ethan Hildick, oca-ci, Eduardo De Miguel, David Ramia, Emilio Pascual, Valentin Vinagre Urteaga, David Alonso // Solvos, Ignacio Ibeas, Jose Zambudio, pol
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/queue:
    - queue_job
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES requests
zeep
cryptography
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map tree New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys tree New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.move group Inherits invoice_sii_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines tree New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_partner_form res.partner xpath Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree New
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
Models touched (14)

New fields (7)
  • sii_active Boolean
    copy=False default=True help='Enable SII for this fiscal position?' string='SII Active'
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (2)
  • company_sii_enabled Boolean
    related='company_id.sii_enabled' string='Company enable SII'
  • sii_enabled Boolean
    default=True string='Enable SII'
Public methods (0)

No public methods.

New fields (7)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False relation='account_move_queue_job_rel' string='Connector Jobs'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
Public methods (8)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • process_send_sii(self)
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    default=_default_sii_refund_type_required string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    default=_default_supplier_invoice_number_refund_required string='Is Supplier Invoice Number Required?'
Public methods (1)
  • reverse_moves(self)

New fields (4)
  • date_from Date
  • date_to Date
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True
  • name Char
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • taxes Many2many → account.tax.template
    comodel_name='account.tax.template'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2
  • name Char
    required=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (1)
  • name_get(self)

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • cancel_now(self)
  • do_now(self)
  • requeue_sudo(self)

New fields (12)
  • delay_time Float
  • send_mode Selection
    default='auto' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')]
  • sent_time Float
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_period Selection
    default='monthly' selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
  • sii_test Boolean
    string='Is Test Environment?'
  • use_connector Boolean
    help="Check it to use connector instead of sending the invoice directly when it's validated"
Public methods (0)

No public methods.

New fields (2)
  • sii_enabled Boolean
    compute='_compute_sii_enabled'
  • sii_simplified_invoice Boolean
    help='Checking this mark, invoices done to this partner will be sent to SII as simplified invoices.' string='Simplified invoices in SII?'
Public methods (0)

No public methods.

New fields (16)
  • company_id Many2one → res.company
    comodel_name='res.company' string='Company'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the document is recorded in the system and is independent of the date of the accounting entry of the document' readonly=True string='SII account registration date'
  • sii_content_sent Text
    copy=False readonly=True string='SII last content sent'
  • sii_csv Char
    copy=False readonly=True string='SII CSV'
  • sii_description Text
    compute='_compute_sii_description' copy=False default='/' readonly=False store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' string='Enable SII'
  • sii_header_sent Text
    copy=False readonly=True string='SII last header sent'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the document has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_refund_type Selection
    default=<expr> selection=[('I', 'By differences')] string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_error Text
    copy=False readonly=True string='SII Send Error'
  • sii_send_failed Boolean
    copy=False help='Indicates that the last attempt to communicate this document to the SII has failed. See SII return for details' string='SII send failed'
  • sii_state Selection
    copy=False default='not_sent' help='Indicates the state of this document in relation with the presentation at the SII' readonly=True selection=SII_STATES string='SII send state'
Public methods (3)
  • confirm_one_document(self)
  • confirm_one_invoice(self)
  • send_sii(self)

New fields (3)
  • account_move_ids Many2many → account.move
    string='Invoices' args: 'account.move'
  • sending_number Integer
    string='Invoices Jobs Process Sending'
  • sent_number Integer
    string='Invoices SII Sent'
Public methods (2)
  • action_confirm(self)
  • default_get(self, fields)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/14.0/l10n_es_aeat_sii_oca
VERSION
VERSION 2.10.2
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, Harald Panten, Lois Rilo, David Alonso, OCA Transbot, Víctor Martínez, João Marques, Omar (Comunitea), oca-travis, Weblate, OCA-git-bot, Eric Antones, Ethan Hildick, JesusVMayor, oca-ci, Eduardo De Miguel, David Ramia, Ioan Galan, David Alonso // Solvos, Ignacio
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/queue:
    - queue_job
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography<39
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map tree New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys tree New
aeat_sii_tax_agency_form_view aeat.tax.agency.form - l10n_es_aeat_sii_oca aeat.tax.agency notebook Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.move group Inherits invoice_sii_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines tree New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_partner_form res.partner xpath Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree New
Models touched (11)

New fields (7)
  • sii_active Boolean
    copy=False default=True help='Enable SII for this fiscal position?' string='SII Active'
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (22)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False relation='account_move_queue_job_rel' string='Connector Jobs'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the invoice is recorded in the system and is independent of the date of the accounting entry of the invoice' readonly=True string='SII account registration date'
  • sii_content_sent Text
    copy=False readonly=True string='SII last content sent'
  • sii_csv Char
    copy=False readonly=True string='SII CSV'
  • sii_description Text
    compute='_compute_sii_description' copy=False default='/' readonly=False store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' string='Enable SII'
  • sii_header_sent Text
    copy=False readonly=True string='SII last header sent'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_property_cadastrial_code Char
    copy=False string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_refund_type Selection
    default=<expr> selection=[('I', 'By differences')] string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' compute='_compute_sii_registration_key' readonly=False store=True string='SII registration key'
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
  • sii_registration_key_code Char
    compute='_compute_sii_registration_key_code' readonly=True string='SII Code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_error Text
    copy=False readonly=True string='SII Send Error'
  • sii_send_failed Boolean
    copy=False help='Indicates that the last attempt to communicate this invoice to the SII has failed. See SII return for details' string='SII send failed'
  • sii_state Selection
    copy=False default='not_sent' help='Indicates the state of this invoice in relation with the presentation at the SII' readonly=True selection=SII_STATES string='SII send state'
Public methods (10)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
  • cancel_sii(self)
  • confirm_one_invoice(self)
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • send_sii(self)
  • unlink(self)
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    default=_default_sii_refund_type_required string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    default=_default_supplier_invoice_number_refund_required string='Is Supplier Invoice Number Required?'
Public methods (1)
  • reverse_moves(self)

New fields (4)
  • date_from Date
    string='Date from'
  • date_to Date
    string='Date to'
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True string='Code'
  • name Char
    string='Name'
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • taxes Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2 string='Code'
  • name Char
    required=True string='Name'
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')] string='Type'
Public methods (1)
  • name_get(self)

New fields (14)
  • sii_wsdl_ic Char
    string='SuministroOpIntracomunitarias WSDL'
  • sii_wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • sii_wsdl_in Char
    string='SuministroFactRecibidas WSDL'
  • sii_wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • sii_wsdl_ott Char
    string='SuministroOpTrascendTribu WSDL'
  • sii_wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • sii_wsdl_out Char
    string='SuministroFactEmitidas WSDL'
  • sii_wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • sii_wsdl_pi Char
    string='SuministroBienesInversion WSDL'
  • sii_wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • sii_wsdl_pr Char
    string='SuministroCobrosEmitidas WSDL'
  • sii_wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • sii_wsdl_ps Char
    string='SuministroPagosRecibidas WSDL'
  • sii_wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • cancel_now(self)
  • do_now(self)
  • requeue_sudo(self)

New fields (11)
  • delay_time Float
    string='Delay time'
  • send_mode Selection
    default='auto' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')] string='Send mode'
  • sent_time Float
    string='Sent time'
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_test Boolean
    string='Is Test Environment?'
  • use_connector Boolean
    help="Check it to use connector instead of sending the invoice directly when it's validated" string='Use connector'
Public methods (0)

No public methods.

New fields (2)
  • sii_enabled Boolean
    compute='_compute_sii_enabled'
  • sii_simplified_invoice Boolean
    help='Checking this mark, invoices done to this partner will be sent to SII as simplified invoices.' string='Simplified invoices in SII?'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/13.0/l10n_es_aeat_sii_oca
VERSION
VERSION 2.6.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway, Javi Melendez
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Enric Tobella, Harald Panten, manu, OCA Transbot, Víctor Martínez, João Marques, Omar (Comunitea), oca-travis, Weblate, OCA-git-bot, oca-ci, alvaro, David Ramia, David Alonso // Solvos
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/l10n-spain:
    - l10n_es_aeat
OCA/queue:
    - queue_job
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - l10n_es
    - base_iban
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pyOpenSSL
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
aeat_sii_map_view_form aeat.sii.map.view.form aeat.sii.map form New
aeat_sii_map_view_tree aeat.sii.map.view.tree aeat.sii.map tree New
aeat_sii_mapping_registration_keys_view_search aeat.sii.mapping.registration.keys.view.search aeat.sii.mapping.registration.keys search New
aeat_sii_mapping_registration_keys_view_tree aeat.sii.mapping.registration.keys.view.tree aeat.sii.mapping.registration.keys tree New
aeat_sii_tax_agency_form_view aeat.sii.tax.agency.form.view aeat.sii.tax.agency form New
aeat_sii_tax_agency_tree_view aeat.sii.tax.agency.tree,view aeat.sii.tax.agency tree New
invoice_sii_form account.invoice.sii.form account.move xpath Inherits l10n_es_aeat.view_move_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.move group Inherits invoice_sii_form
l10n_es_aeat_sii_map_lines_view_tree aeat.sii.map.lines.view.tree aeat.sii.map.lines tree New
l10n_es_sii_form_view l10n.es.aeat.sii.form l10n.es.aeat.sii form New
l10n_es_sii_password_wizard_view l10n.es.aeat.sii.password.wizard l10n.es.aeat.sii.password form New
l10n_es_sii_tree_view l10n.es.aeat.sii.tree l10n.es.aeat.sii tree New
product_template_form_sii_view product.template.form.inherit.sii product.template group Inherits product.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move filter Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal field Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position xpath Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company notebook Inherits base.view_company_form
view_partner_form res.partner xpath Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree New
Models touched (13)

New fields (7)
  • sii_active Boolean
    copy=False default=True help='Enable SII for this fiscal position?' string='SII Active'
  • sii_enabled Boolean
    readonly=True related='company_id.sii_enabled'
  • sii_exempt_cause Selection
    default=default_sii_exempt_cause selection='_get_selection_sii_exempt_cause' string='SII Exempt Cause'
  • sii_no_taxable_cause Selection
    default='ImporteTAIReglasLocalizacion' selection=[('ImportePorArticulos7_14_Otros', 'No sujeta - No sujeción artículo 7, 14, otros'), ('ImporteTAIReglasLocalizacion', 'Operaciones no sujetas en el TAI por reglas de localización')] string='SII No taxable cause'
  • sii_partner_identification_type Selection
    selection=[('1', 'National'), ('2', 'Intracom'), ('3', 'Export')] string='SII partner Identification Type'
  • sii_registration_key_purchase Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'purchase')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Purchases'
  • sii_registration_key_sale Many2one → aeat.sii.mapping.registration.keys
    domain=[('type', '=', 'sale')] args: 'aeat.sii.mapping.registration.keys', 'Default SII Registration Key for Sales'
Public methods (1)
  • default_sii_exempt_cause(self)
    @api.model

New fields (22)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False relation='account_move_queue_job_rel' string='Connector Jobs'
  • sii_account_registration_date Date
    copy=False help='Indicates the account registration date set at the SII, which must be the date when the invoice is recorded in the system and is independent of the date of the accounting entry of the invoice' readonly=True string='SII account registration date'
  • sii_content_sent Text
    copy=False readonly=True string='SII last content sent'
  • sii_csv Char
    copy=False readonly=True string='SII CSV'
  • sii_description Text
    compute='_compute_sii_description' copy=False default='/' readonly=False size=500 store=True string='SII computed description'
  • sii_enabled Boolean
    compute='_compute_sii_enabled' string='Enable SII'
  • sii_header_sent Text
    copy=False readonly=True string='SII last header sent'
  • sii_lc_operation Boolean
    copy=False help='Check this mark if this invoice represents a complementary settlement for customs.\nThe invoice number should start with LC, QZC, QRC, A01 or A02.' string='Customs - Complementary settlement'
  • sii_macrodata Boolean
    compute='_compute_macrodata' help='Check to confirm that the invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_property_cadastrial_code Char
    copy=False size=25 string='Real property cadastrial code'
  • sii_property_location Selection
    copy=False selection=[('1', '[1]-Real property with cadastral code located within the Spanish territory except Basque Country or Navarra'), ('2', '[2]-Real property located in the Basque Country or Navarra'), ('3', '[3]-Real property in any of the above situations but without cadastral code'), ('4', '[4]-Real property located in a foreign country')] string='Real property location'
  • sii_refund_specific_invoice_type Selection
    help='Fill this field when the refund are one of the specific cases of article 80 of LIVA for notifying to SII with the proper invoice type.' selection=[('R1', 'Error based on law and Art. 80 One and Two LIVA (R1)'), ('R2', 'Art. 80 Three LIVA - Bankruptcy (R2)'), ('R3', 'Art. 80 Four LIVA - Bad debt (R3)'), ('R4', 'Rest of causes (R4)')]
  • sii_refund_type Selection
    default=<expr> selection=[('I', 'By differences')] string='SII Refund Type'
  • sii_registration_key Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' default=_default_sii_registration_key string='SII registration key'
  • sii_registration_key_additional1 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional SII registration key'
  • sii_registration_key_additional2 Many2one → aeat.sii.mapping.registration.keys
    comodel_name='aeat.sii.mapping.registration.keys' string='Additional 2 SII registration key'
  • sii_registration_key_code Char
    readonly=True related='sii_registration_key.code'
  • sii_registration_key_domain Char
    compute='_compute_sii_registration_key_domain' string='SII registration key domain'
  • sii_return Text
    copy=False readonly=True string='SII Return'
  • sii_send_error Text
    copy=False readonly=True string='SII Send Error'
  • sii_send_failed Boolean
    copy=False help='Indicates that the last attempt to communicate this invoice to the SII has failed. See SII return for details' string='SII send failed'
  • sii_state Selection
    copy=False default='not_sent' help='Indicates the state of this invoice in relation with the presentation at the SII' readonly=True selection=SII_STATES string='SII send state'
Public methods (13)
  • button_cancel(self)
  • button_draft(self)
  • cancel_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')
  • cancel_sii(self)
  • confirm_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • is_sii_invoice(self)
    Hook method to be overridden in additional modules to verify if the invoice must be sended trough SII system, for special cases. :param self: Single invoice record :return: bool value indicating if the invoice should be sent to SII.
  • onchange_fiscal_position_id_l10n_es_aeat_sii(self)
    @api.onchange('fiscal_position_id')
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • post(self)
  • send_sii(self)
  • unlink(self)
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    For supplier invoices the SII primary key is the supplier VAT/ID Otro and the supplier invoice number. Cannot let change these values in a SII registered supplier invoice

New fields (4)
  • sii_refund_type Selection
    selection=_selection_sii_refund_type string='SII Refund Type'
  • sii_refund_type_required Boolean
    default=_default_sii_refund_type_required string='Is SII Refund Type required?'
  • supplier_invoice_number_refund Char
    string='Supplier Invoice Number'
  • supplier_invoice_number_refund_required Boolean
    default=_default_supplier_invoice_number_refund_required string='Is Supplier Invoice Number Required?'
Public methods (1)
  • reverse_moves(self)

New fields (4)
  • date_from Date
    string='Date from'
  • date_to Date
    string='Date to'
  • map_lines One2many → aeat.sii.map.lines
    comodel_name='aeat.sii.map.lines' inverse_name='sii_map_id' string='Lines'
  • name Char
    required=True string='Model'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    required=True string='Code'
  • name Char
    string='Name'
  • sii_map_id Many2one → aeat.sii.map
    comodel_name='aeat.sii.map' ondelete='cascade' string='Aeat SII Map'
  • taxes Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (0)

No public methods.

New fields (3)
  • code Char
    required=True size=2 string='Code'
  • name Char
    required=True string='Name'
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')] string='Type'
Public methods (1)
  • name_get(self)

New fields (15)
  • name Char
    required=True string='Tax Agency'
  • wsdl_ic Char
    required=True string='SuministroOpIntracomunitarias WSDL'
  • wsdl_ic_test_address Char
    string='SuministroOpIntracomunitarias Test Address'
  • wsdl_in Char
    required=True string='SuministroFactRecibidas WSDL'
  • wsdl_in_test_address Char
    string='SuministroFactRecibidas Test Address'
  • wsdl_ott Char
    required=True string='SuministroOpTrascendTribu WSDL'
  • wsdl_ott_test_address Char
    string='SuministroOpTrascendTribu Test Address'
  • wsdl_out Char
    required=True string='SuministroFactEmitidas WSDL'
  • wsdl_out_test_address Char
    string='SuministroFactEmitidas Test Address'
  • wsdl_pi Char
    required=True string='SuministroBienesInversion WSDL'
  • wsdl_pi_test_address Char
    string='SuministroBienesInversion Test Address'
  • wsdl_pr Char
    required=True string='SuministroCobrosEmitidas WSDL'
  • wsdl_pr_test_address Char
    string='SuministroCobrosEmitidas Test Address'
  • wsdl_ps Char
    required=True string='SuministroPagosRecibidas WSDL'
  • wsdl_ps_test_address Char
    string='SuministroPagosRecibidas Test Address'
Public methods (0)

No public methods.

New fields (8)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • date_end Date
    string='End Date'
  • date_start Date
    string='Start Date'
  • file Binary
    required=True string='File'
  • name Char
    string='Name'
  • private_key Char
    readonly=True string='Private Key'
  • public_key Char
    readonly=True string='Public Key'
  • state Selection
    default='draft' string='State' args: [('draft', 'Draft'), ('active', 'Active')]
Public methods (2)
  • action_activate(self)
  • load_password_wizard(self)

New fields (2)
  • folder Char
    required=True string='Folder Name'
  • password Char
    required=True string='Password'
Public methods (1)
  • get_keys(self)

New fields (1)
  • sii_exempt_cause Selection
    selection=[('none', 'None'), ('E1', '[E1] Art. 20: Operaciones interiores exentas'), ('E2', '[E2] Art. 21: Exenciones en las exportaciones de bienes'), ('E3', '[E3] Art. 22: Exenciones en las operaciones asimiladas a las exportaciones'), ('E4', '[E4] Art. 23 y 24: Exenciones relativas a regímenes aduaneros y fiscales. Exenciones zonas francas, depósitos francos y otros depósitos.'), ('E5', '[E5] Art. 25: Exenciones en las entregas de bienes destinados a otro estado miembro.'), ('E6', '[E6] Otros')] string='SII Exempt Cause'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • cancel_now(self)
  • do_now(self)
  • requeue_sudo(self)

New fields (12)
  • delay_time Float
    string='Delay time'
  • send_mode Selection
    default='auto' selection=[('auto', 'On validate'), ('fixed', 'At fixed time'), ('delayed', 'With delay')] string='Send mode'
  • sent_time Float
    string='Sent time'
  • sii_description Char
    help="The description for invoices. Only used when the field SII Description Method is 'Fixed'." size=500 string='SII Description'
  • sii_description_method Selection
    default='manual' help="Method for the SII invoices description, can be one of these:\n- Automatic: the description will be the join of the invoice lines description\n- Fixed: the description write on the below field 'SII Description'\n- Manual (by default): It will be necessary to manually enter the description on each invoice\n\nFor all the options you can append a header text using the below fields 'SII Sale header' and 'SII Purchase header'" selection=[('auto', 'Automatic'), ('fixed', 'Fixed'), ('manual', 'Manual')] string='SII Description Method'
  • sii_enabled Boolean
    string='Enable SII'
  • sii_header_customer Char
    help='An optional header description for customer invoices. Applied on all the SII description methods' size=500 string='SII Customer header'
  • sii_header_supplier Char
    help='An optional header description for supplier invoices. Applied on all the SII description methods' size=500 string='SII Supplier header'
  • sii_method Selection
    default='auto' help="By default, the invoice is sent/queued in validation process. With manual method, there's a button to send the invoice." selection=[('auto', 'Automatic'), ('manual', 'Manual')] string='Method'
  • sii_tax_agency_id Many2one → aeat.sii.tax.agency
    string='SII Tax Agency' args: 'aeat.sii.tax.agency'
  • sii_test Boolean
    string='Is Test Environment?'
  • use_connector Boolean
    help="Check it to use connector instead of sending the invoice directly when it's validated" string='Use connector'
Public methods (0)

No public methods.

New fields (2)
  • sii_enabled Boolean
    compute='_compute_sii_enabled'
  • sii_simplified_invoice Boolean
    help='Checking this mark, invoices done to this partner will be sent to SII as simplified invoices.' string='Simplified invoices in SII?'
Public methods (0)

No public methods.