Repository
OCA/l10n-spain · module folder · Try on Runboat
Module version
Category
Accounting & Finance
Folder size
1.33 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/l10n-spain
Last tracking update
2026-08-20 17:29:47
Authors
Odoo Community Association (OCA), Acysos S.L., Tecnativa, Comunitea, Diagram, Minorisa, Studio73, FactorLibre, Otherway, Javi Melendez, Sygel
Maintainers
Odoo Community Association (OCA), Acysos S.L., Tecnativa, Comunitea, Diagram, Minorisa, Studio73, FactorLibre, Otherway, Javi Melendez, Sygel
Committers
Pedro M. Baeza, Emilio Pascual, OCA-git-bot, oca-ci
Odoo dependencies
OCA/account-financial-reporting:
OCA/account-invoicing:
OCA/l10n-spain:
OCA/server-ux:
odoo/odoo:
- web
- bus
- uom
Python dependencies
requests, zeep, unidecode
System dependencies
None
Required by
l10n_es_aeat_sii_match
Description
Módulo para la presentación inmediata del IVA
<https://www.agenciatributaria.es/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/Suministro_inmediato_informacion/FicherosSuministros/V_1_1/SII_Descripcion_ServicioWeb_v1.1.pdf>

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
account_journal_dashboard_kanban_view account.journal.dashboard.kanban account.journal kanban 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 form Inherits l10n_es_aeat.aeat_tax_agency_form_view
invoice_sii_form account.invoice.sii.form account.move form 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 form Inherits account.product_template_form_view
view_account_invoice_sii_filter account.invoice.select.sii account.move Inherits account.view_account_invoice_filter
view_account_journal_thirdparty_form account.journal form Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal Inherits account.view_account_move_reversal
view_account_position_form account.fiscal.position.form account.fiscal.position form Inherits account.view_account_position_form
view_company_sii_form res.company.sii.form res.company form Inherits base.view_company_form
view_wizard_send_sii Send SII Wizard wizard.send.sii form New
HTTP endpoints (0)

No HTTP endpoints found for this module.

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)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…