Suministro Inmediato de Información en el IVA

l10n_es_aeat_sii
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/12.0/l10n_es_aeat_sii
VERSION
VERSION 1.9.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, mreficent, manu, OCA Transbot, angelmoya, oca-travis, Weblate, OCA-git-bot, Eric Antones, Pablo Fuentes, Juanjo, Isaac Gallart Bochons, oca-ci, xAdrianC
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:12
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
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - l10n_es
    - base_iban
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
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.invoice button Inherits account.invoice_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.invoice group Inherits invoice_sii_form
invoice_supplier_sii_form account.invoice.supplier.sii.form account.invoice button Inherits account.invoice_supplier_form
invoice_supplier_sii_form_connector account.invoice.supplier.sii.form - Connector account.invoice group Inherits invoice_supplier_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_refund account.invoice.refund field Inherits account.view_account_invoice_refund
view_account_invoice_sii_filter account.invoice.select.sii account.invoice filter Inherits account.view_account_invoice_filter
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 (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' oldname='no_taxable_cause' 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 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' inverse='_inverse_sii_description' store=True string='SII computed description'
  • sii_description_method Selection
    readonly=True related='company_id.sii_description_method'
  • 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 invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_manual_description Text
    copy=False size=500 string='SII manual description'
  • 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> oldname='refund_type' 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 oldname='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_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)
  • action_cancel(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • cancel_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • cancel_sii(self)
    @api.multi
  • confirm_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • invoice_validate(self)
    @api.multi
  • 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')
  • send_sii(self)
    @api.multi
  • unlink(self)
    @api.multi
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    @api.multi
    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)
  • compute_refund(self, mode='refund')
    @api.multi

New fields (2)
  • amount_company Monetary
    compute='_compute_base_amount_company' string='Amount in company currency'
  • base_company Monetary
    compute='_compute_base_amount_company' string='Base in company currency'
Public methods (0)

No public methods.

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)
    @api.multi

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)
    @api.multi
  • load_password_wizard(self)
    @api.multi

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

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)
    @api.multi
  • do_now(self)
    @api.multi
  • requeue_sudo(self)
    @api.multi

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='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.

REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/11.0/l10n_es_aeat_sii
VERSION
VERSION 2.8.0
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, David Alonso, OCA Transbot, angelmoya, Hugo Santos, oca-travis, OCA-git-bot, Eric Antones, Rodrigo, Oihane Crucelaegui, OCA Git Bot, Isaac Gallart Bochons, Daniel, rodrigo, Daniel Duque
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:55
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
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - l10n_es
    - base_iban
    - base_vat
    - account_invoicing
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
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.invoice button Inherits account.invoice_form
invoice_sii_form_connector account.invoice.sii.form - Connector account.invoice group Inherits invoice_sii_form
invoice_supplier_sii_form account.invoice.supplier.sii.form account.invoice button Inherits account.invoice_supplier_form
invoice_supplier_sii_form_connector account.invoice.supplier.sii.form - Connector account.invoice group Inherits invoice_supplier_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_refund account.invoice.refund field Inherits account.view_account_invoice_refund
view_account_invoice_sii_filter account.invoice.select.sii account.invoice filter Inherits account.view_account_invoice_filter
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 (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' oldname='no_taxable_cause' 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 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' inverse='_inverse_sii_description' store=True string='SII computed description'
  • sii_description_method Selection
    readonly=True related='company_id.sii_description_method'
  • 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 invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_manual_description Text
    copy=False size=500 string='SII manual description'
  • 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> oldname='refund_type' 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 oldname='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_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 (14)
  • action_cancel(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • cancel_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • cancel_sii(self)
    @api.multi
  • confirm_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • invoice_validate(self)
    @api.multi
  • 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.
  • map_sii_tax_template(self, tax_template, mapping_taxes)
    @api.multi
    Adds a tax template -> tax id to the mapping. Adapted from account_chart_update module. :param self: Single invoice record. :param tax_template: Tax template record. :param mapping_taxes: Dictionary with all the tax templates mapping. :return: Tax template current mapping
  • onchange_fiscal_position_id_l10n_es_aeat_sii(self)
    @api.onchange('fiscal_position_id')
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • send_sii(self)
    @api.multi
  • unlink(self)
    @api.multi
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    @api.multi
    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)
  • compute_refund(self, mode='refund')
    @api.multi

New fields (2)
  • amount_company Monetary
    compute='_compute_base_amount_company' string='Amount in company currency'
  • base_company Monetary
    compute='_compute_base_amount_company' string='Base in company currency'
Public methods (0)

No public methods.

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)
    @api.multi

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)
    @api.multi
  • load_password_wizard(self)
    @api.multi

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

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)
    @api.multi
  • do_now(self)
    @api.multi
  • requeue_sudo(self)
    @api.multi

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='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.

REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/10.0/l10n_es_aeat_sii
VERSION
VERSION 5.0.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, manu, OCA Transbot, oca-travis, OCA-git-bot, OCA Git Bot, Jaume Planas, Javi Melendez, jvpascual
WEBSITE
WEBSITEhttps://odoospain.odoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:53
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-tools:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
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_send_first_semester_wizard sii.first.semester.form l10n.es.sii.first.semester form 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.invoice button Inherits account.invoice_form
invoice_supplier_sii_form account.invoice.supplier.sii.form account.invoice button Inherits account.invoice_supplier_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_refund account.invoice.refund field Inherits account.view_account_invoice_refund
view_account_invoice_sii_filter account.invoice.select.sii account.invoice filter Inherits account.view_account_invoice_filter
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 div Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree New
Models touched (15)

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='ImportePorArticulos7_14_Otros' oldname='no_taxable_cause' 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 (21)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False 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' inverse='_inverse_sii_description' store=True string='SII computed description'
  • sii_description_method Selection
    readonly=True related='company_id.sii_description_method'
  • 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 invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_manual_description Text
    copy=False size=500 string='SII manual description'
  • 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_type Selection
    default=<expr> oldname='refund_type' 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 oldname='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_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 (14)
  • action_cancel(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • cancel_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • cancel_sii(self)
    @api.multi
  • confirm_one_invoice(self)
    @job(default_channel='root.invoice_validate_sii')@api.multi
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • invoice_validate(self)
    @api.multi
  • 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.
  • map_sii_tax_template(self, tax_template, mapping_taxes)
    @api.multi
    Adds a tax template -> tax id to the mapping. Adapted from account_chart_update module. :param self: Single invoice record. :param tax_template: Tax template record. :param mapping_taxes: Dictionary with all the tax templates mapping. :return: Tax template current mapping
  • onchange_fiscal_position_id_l10n_es_aeat_sii(self)
    @api.onchange('fiscal_position_id')
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • send_sii(self)
    @api.multi
  • unlink(self)
    @api.multi
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    @api.multi
    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)
  • compute_refund(self, mode='refund')
    @api.multi

New fields (2)
  • amount_company Monetary
    compute='_compute_base_amount_company' string='Amount in company currency'
  • base_company Monetary
    compute='_compute_base_amount_company' string='Base in company currency'
Public methods (0)

No public methods.

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)
    @api.multi

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)
    @api.multi
  • load_password_wizard(self)
    @api.multi

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

New fields (3)
  • date_to Date
    default=SII_SEMESTER_DATE_END required=True args: 'Date to'
  • in_invoices Boolean
    default=True args: 'Send in invoices'
  • out_invoices Boolean
    default=True args: 'Send out invoices'
Public methods (1)
  • execute(self)
    @api.multi

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)
    @api.multi
  • do_now(self)
    @api.multi
  • requeue_sudo(self)
    @api.multi

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='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.

REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/9.0/l10n_es_aeat_sii
VERSION
VERSION 2.2.0
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
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, OCA-git-bot, OCA Git Bot, Jaume Planas
WEBSITE
WEBSITEhttps://odoospain.odoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/account-financial-tools:
    - account_invoice_currency
OCA/account-invoicing:
    - account_invoice_refund_link
OCA/connector:
    - connector
OCA/l10n-spain:
    - l10n_es_aeat
OCA/server-tools:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
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_send_first_semester_wizard sii.first.semester.form l10n.es.sii.first.semester form New
invoice_sii_form account.invoice.sii.form account.invoice button Inherits account.invoice_form
invoice_supplier_sii_form account.invoice.supplier.sii.form account.invoice button Inherits account.invoice_supplier_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_refund account.invoice.refund field Inherits account.view_account_invoice_refund
view_account_invoice_sii_filter account.invoice.select.sii account.invoice filter Inherits account.view_account_invoice_filter
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 page Inherits base.view_company_form
view_partner_form res.partner div Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree 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='ImportePorArticulos7_14_Otros' oldname='no_taxable_cause' 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 (21)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False 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' inverse='_inverse_sii_description' store=True string='SII computed description'
  • sii_description_method Selection
    readonly=True related='company_id.sii_description_method'
  • 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 invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_manual_description Text
    copy=False size=500 string='SII manual description'
  • 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_type Selection
    default=<expr> oldname='refund_type' 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 oldname='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_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 (12)
  • action_cancel(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • cancel_sii(self)
    @api.multi
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • invoice_validate(self)
    @api.multi
  • 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.
  • map_sii_tax_template(self, tax_template, mapping_taxes)
    @api.multi
    Adds a tax template -> tax id to the mapping. Adapted from account_chart_update module. :param self: Single invoice record. :param tax_template: Tax template record. :param mapping_taxes: Dictionary with all the tax templates mapping. :return: Tax template current mapping
  • onchange_fiscal_position_id_l10n_es_aeat_sii(self)
    @api.onchange('fiscal_position_id')
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • send_sii(self)
    @api.multi
  • unlink(self)
    @api.multi
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    @api.multi
    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)
  • compute_refund(self, mode='refund')
    @api.multi

New fields (2)
  • amount_company Monetary
    compute='_compute_base_amount_company' string='Amount in company currency'
  • base_company Monetary
    compute='_compute_base_amount_company' string='Base in company currency'
Public methods (0)

No public methods.

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)
    @api.multi

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)
    @api.multi
  • load_password_wizard(self)
    @api.multi

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

New fields (3)
  • date_to Date
    default=SII_SEMESTER_DATE_END required=True args: 'Date to'
  • in_invoices Boolean
    default=True args: 'Send in invoices'
  • out_invoices Boolean
    default=True args: 'Send out invoices'
Public methods (1)
  • execute(self)
    @api.multi

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)
    @api.multi
  • do_now(self)
    @api.multi
  • requeue_sudo(self)
    @api.multi

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/8.0/l10n_es_aeat_sii
VERSION
VERSION 2.18.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
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Acysos S.L., Diagram, Minorisa, Studio73, FactorLibre, Comunitea, Otherway
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, OCA Transbot, Víctor Martínez, Omar (Comunitea), Hugo Santos, PabloCM, oca-travis, Roberto Lizana, Weblate, Omar, OCA-git-bot, Francisco Ivan Anton Prieto, Kiko Peiro, oihane, Pedro Rodríguez Gil, ignacio, Abraham Anes, Ismael Calvo
WEBSITE
WEBSITEhttps://odoospain.odoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_invoice_currency
OCA/connector:
    - connector
OCA/l10n-spain:
    - account_refund_original
    - l10n_es_aeat
    - l10n_es
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - base_vat
    - base_iban
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
requests
zeep
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
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_send_first_semester_wizard sii.first.semester.form l10n.es.sii.first.semester form New
invoice_sii_form account.invoice.sii.form account.invoice button Inherits account.invoice_form
invoice_supplier_sii_form account.invoice.supplier.sii.form account.invoice button Inherits account.invoice_supplier_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_refund account.invoice.refund field Inherits account.view_account_invoice_refund
view_account_invoice_sii_filter account.invoice.select.sii account.invoice xpath Inherits account.view_account_invoice_filter
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 page Inherits base.view_company_form
view_partner_form res.partner div Inherits base_vat.view_partner_form
view_queue_job_sii queue.job tree 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='ImportePorArticulos7_14_Otros' oldname='no_taxable_cause' 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 (21)
  • invoice_jobs_ids Many2many → queue.job
    column1='invoice_id' column2='job_id' comodel_name='queue.job' copy=False 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' inverse='_inverse_sii_description' store=True string='SII computed description'
  • sii_description_method Selection
    readonly=True related='company_id.sii_description_method'
  • 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 invoice has an absolute amount greater o equal to 100 000 000,00 euros.' string='MacroData'
  • sii_manual_description Text
    copy=False size=500 string='SII manual description'
  • 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_type Selection
    default=<expr> oldname='refund_type' selection=[('S', 'By substitution'), ('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 oldname='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_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 (11)
  • action_cancel(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • cancel_sii(self)
    @api.multi
  • create(self, vals)
    @api.model
    Complete registration key for auto-generated invoices.
  • invoice_validate(self)
    @api.multi
  • map_sii_tax_template(self, tax_template, mapping_taxes)
    @api.multi
    Adds a tax template -> tax id to the mapping. Adapted from account_chart_update module. :param self: Single invoice record. :param tax_template: Tax template record. :param mapping_taxes: Dictionary with all the tax templates mapping. :return: Tax template current mapping
  • onchange_fiscal_position_l10n_es_aeat_sii(self)
    @api.onchange('fiscal_position')
  • onchange_sii_refund_type(self)
    @api.onchange('sii_refund_type')
  • send_sii(self)
    @api.multi
  • unlink(self)
    @api.multi
    A registered invoice at the SII cannot be deleted
  • write(self, vals)
    @api.multi
    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 (0)

No new fields.

Public methods (0)

No public methods.

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)
  • compute_refund(self, mode='refund')
    @api.multi

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' translate=True
  • type Selection
    required=True selection=[('sale', 'Sale'), ('purchase', 'Purchase')] string='Type'
Public methods (1)
  • name_get(self)
    @api.multi

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)
    @api.multi
  • load_password_wizard(self)
    @api.multi

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

New fields (3)
  • date_to Date
    default=SII_SEMESTER_DATE_END required=True args: 'Date to'
  • in_invoices Boolean
    default=True args: 'Send in invoices'
  • out_invoices Boolean
    default=True args: 'Send out invoices'
Public methods (1)
  • execute(self)
    @api.multi

New fields (1)
  • sii_exempt_cause Selection
    default='none' 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)
    @api.multi
  • do_now(self)
    @api.multi
  • requeue_sudo(self)
    @api.multi

New fields (12)
  • chart_template_id Many2one → account.chart.template
    comodel_name='account.chart.template' string='Chart Template'
  • 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
    readonly=True related='company_id.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.