Spain - TicketBAI

l10n_es_edi_tbai
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/l10n_es_edi_tbai
VERSION
VERSION 1.1
CATEGORY
CATEGORYAccounting/Localizations/EDI
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Josse Colpaert, Christophe Simonis, Laurent Smet, Julien Castiaux, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Gorash, jbw-odoo, Gaetan Vanden Bergh (gavb), Dylan Kiss (dyki), Paolo Gatti, guva-odoo, Sven Fuehr, Mohamed GadAlrab, Louis Gobert, Victorien (viso), Claire (clbr), gteboul, Antoine Dupuis, Léo Gizard, David Monnom, Carmine, Krzysztof Magusiak (krma), dvsh-odoo, hatr-odoo, Basioni (basm), Junqi, cahu
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_es
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - account_edi_ubl_cii
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module sends invoices and vendor bills to the "Diputaciones
Forales" of Araba/Álava, Bizkaia and Gipuzkoa.

Invoices and bills get converted to XML and regularly sent to the
Basque government servers which provides them with a unique identifier.
A hash chain ensures the continuous nature of the invoice/bill
sequences. QR codes are added to emitted (sent/printed) invoices,
bills and tickets to allow anyone to check they have been declared.

You need to configure your certificate and the tax agency.
    

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
certificate_certificate_view_form certificate_certificate_view_form.inherit.l10n_es_edi_tbai certificate.certificate field Inherits certificate.certificate_certificate_view_form
certificate_certificate_view_search certificate_certificate_view_search.inherit.l10n_es_edi_tbai certificate.certificate filter Inherits certificate.certificate_certificate_view_search
l10n_es_tbai_external_layout_standard l10n_es_tbai_external_layout_standard ir.ui.view qweb Inherits account.report_invoice_document
res_company_form_l10n_es_edi_tbai res.company.form res.company xpath Inherits account.view_company_form
res_config_settings_view_form res.config.settings.view.form.inherit.l10n.es res.config.settings xpath Inherits l10n_es.res_config_settings_view_form
template_LROE_240_inner template_LROE_240_inner ir.ui.view qweb New
template_LROE_240_inner_recibidas template_LROE_240_inner_recibidas ir.ui.view qweb New
template_LROE_240_main template_LROE_240_main ir.ui.view qweb New
template_LROE_240_main_recibidas template_LROE_240_main_recibidas ir.ui.view qweb New
template_LROE_recibidas_common template_LROE_recibidas_common ir.ui.view qweb New
template_digital_signature template_digital_signature ir.ui.view qweb New
template_invoice_bundle template_invoice_bundle ir.ui.view qweb New
template_invoice_desglose template_invoice_desglose ir.ui.view qweb New
template_invoice_factura template_invoice_factura ir.ui.view qweb New
template_invoice_main_cancel template_invoice_main_cancel ir.ui.view qweb New
template_invoice_main_post template_invoice_main_post ir.ui.view qweb New
template_invoice_sujetos template_invoice_sujetos ir.ui.view qweb New
view_account_move_reversal account.move.reversal.form.inherit.l10n_es_edi_tbai account.move.reversal xpath Inherits account.view_account_move_reversal
view_move_form_inherit_l10n_es_edi_tbai account.move.form.inherit.l10n_es_edi_tbai account.move xpath Inherits account.view_move_form
Models touched (8)

New fields (11)
  • l10n_es_tbai_cancel_document_id Many2one → l10n_es_edi_tbai.document
    comodel_name='l10n_es_edi_tbai.document' copy=False readonly=True
  • l10n_es_tbai_cancel_file Binary
    related='l10n_es_tbai_cancel_document_id.xml_attachment_id.datas' string='TicketBAI Cancel File'
  • l10n_es_tbai_cancel_file_name Char
    related='l10n_es_tbai_cancel_document_id.xml_attachment_id.name' string='TicketBAI Cancel File Name'
  • l10n_es_tbai_chain_index Integer
    help='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error' related='l10n_es_tbai_post_document_id.chain_index' string='TicketBAI chain index'
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' help='Is the Basque EDI (TicketBAI) needed ?' string='TicketBAI required'
  • l10n_es_tbai_post_document_id Many2one → l10n_es_edi_tbai.document
    comodel_name='l10n_es_edi_tbai.document' copy=False readonly=True
  • l10n_es_tbai_post_file Binary
    related='l10n_es_tbai_post_document_id.xml_attachment_id.datas' string='TicketBAI Post File'
  • l10n_es_tbai_post_file_name Char
    related='l10n_es_tbai_post_document_id.xml_attachment_id.name' string='TicketBAI Post Attachment Name'
  • l10n_es_tbai_refund_reason Selection
    copy=False help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=TBAI_REFUND_REASONS string='Invoice Refund Reason Code (TicketBai)'
  • l10n_es_tbai_reversed_ids Many2many → account.move
    domain="[('move_type', '=', 'in_invoice'), ('commercial_partner_id', '=', commercial_partner_id)]" help='In the case where a vendor refund has multiple original invoices, you can set them here. ' string='Refunded Vendor Bills' args: 'account.move', 'account_move_tbai_reversed_moves', 'refund_id', 'reversed_move_id'
  • l10n_es_tbai_state Selection
    compute='_compute_l10n_es_tbai_state' string='TicketBAI status' args: [('to_send', 'To Send'), ('sent', 'Sent'), ('cancelled', 'Cancelled')]
Public methods (4)
  • button_draft(self)
  • l10n_es_tbai_cancel(self)
  • l10n_es_tbai_resend_bill(self)
  • l10n_es_tbai_send_bill(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' readonly=True string='Is TicketBai required for this reversal'
  • l10n_es_tbai_refund_reason Selection
    help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=TBAI_REFUND_REASONS string='Invoice Refund Reason Code (TicketBai)'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • scope Selection
    selection_add=[('tbai', 'TBAI')]
Public methods (0)

No public methods.

New fields (8)
  • chain_index Integer
    copy=False readonly=True
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • date Date
    readonly=True required=True
  • is_cancel Boolean
    default=False readonly=True
  • name Char
    readonly=True required=True
  • response_message Text
    copy=False readonly=True
  • state Selection
    copy=False default='to_send' readonly=True string='status' args: [('to_send', 'To Send'), ('accepted', 'Accepted'), ('rejected', 'Rejected')]
  • xml_attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' copy=False readonly=True string='XML Attachment'
Public methods (0)

No public methods.

New fields (7)
  • l10n_es_tbai_certificate_id Many2one → certificate.certificate
    comodel_name='certificate.certificate' compute='_compute_l10n_es_tbai_certificate' readonly=False store=True string='Certificate (TicketBAI)'
  • l10n_es_tbai_certificate_ids One2many → certificate.certificate
    comodel_name='certificate.certificate' domain=[('scope', '=', 'tbai')] inverse_name='company_id'
  • l10n_es_tbai_chain_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False readonly=True string='TicketBai account.move chain sequence'
  • l10n_es_tbai_is_enabled Boolean
    compute='_compute_l10n_es_tbai_is_enabled'
  • l10n_es_tbai_license_html Html
    compute='_compute_l10n_es_tbai_license_html' string='TicketBAI license'
  • l10n_es_tbai_tax_agency Selection
    selection=[('araba', 'Hacienda Foral de Araba'), ('bizkaia', 'Hacienda Foral de Bizkaia'), ('gipuzkoa', 'Hacienda Foral de Gipuzkoa')] string='Tax Agency for TBAI'
  • l10n_es_tbai_test_env Boolean
    default=True help='Use the test environment for TicketBAI' string='TBAI Test Mode'
Public methods (0)

No public methods.

New fields (3)
  • l10n_es_tbai_certificate_ids One2many
    readonly=False related='company_id.l10n_es_tbai_certificate_ids'
  • l10n_es_tbai_tax_agency Selection
    readonly=False related='company_id.l10n_es_tbai_tax_agency'
  • l10n_es_tbai_test_env Boolean
    readonly=False related='company_id.l10n_es_tbai_test_env'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/l10n_es_edi_tbai
VERSION
VERSION 1.1
CATEGORY
CATEGORYAccounting/Localizations/EDI
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Josse Colpaert, Christophe Simonis, Xavier Morel, Damien Bouvy, Yannick Tivisse, Laurent Smet, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Gorash, odoo, Miquel Raïch, John Laterre (jol), Maximilien (malb), Thomas Becquevort (thbe), Gauthier Wala (gawa), Claire Bretton (clbr), Yosua Nicolaus, Antoine Boonen, Dylan Kiss (dyki), Paolo Gatti, Ugaitz Olaizola, Arnaud Sibille, sesn-odoo, guva-odoo, Sven Fuehr, Mohamed GadAlrab, Louis Gobert, Louis (wil), Victorien (viso), Claire (clbr), gteboul, Antoine Dupuis, Léo Gizard, Carmine, Krzysztof Magusiak (krma), dvsh-odoo, Junqi, cahu, Megaaaaaa
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_es
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module sends invoices and vendor bills to the "Diputaciones
Forales" of Araba/Álava, Bizkaia and Gipuzkoa.

Invoices and bills get converted to XML and regularly sent to the
Basque government servers which provides them with a unique identifier.
A hash chain ensures the continuous nature of the invoice/bill
sequences. QR codes are added to emitted (sent/printed) invoices,
bills and tickets to allow anyone to check they have been declared.

You need to configure your certificate and the tax agency.
    

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
certificate_certificate_view_form certificate_certificate_view_form.inherit.l10n_es_edi_tbai certificate.certificate field Inherits certificate.certificate_certificate_view_form
certificate_certificate_view_search certificate_certificate_view_search.inherit.l10n_es_edi_tbai certificate.certificate filter Inherits certificate.certificate_certificate_view_search
l10n_es_tbai_external_layout_standard l10n_es_tbai_external_layout_standard ir.ui.view qweb Inherits account.report_invoice_document
res_company_form_l10n_es_edi_tbai res.company.form res.company xpath Inherits account.view_company_form
res_config_settings_view_form res.config.settings.view.form.inherit.l10n.es res.config.settings xpath Inherits l10n_es.res_config_settings_view_form
template_LROE_240_inner template_LROE_240_inner ir.ui.view qweb New
template_LROE_240_inner_recibidas template_LROE_240_inner_recibidas ir.ui.view qweb New
template_LROE_240_main template_LROE_240_main ir.ui.view qweb New
template_LROE_240_main_recibidas template_LROE_240_main_recibidas ir.ui.view qweb New
template_LROE_recibidas_common template_LROE_recibidas_common ir.ui.view qweb New
template_digital_signature template_digital_signature ir.ui.view qweb New
template_invoice_bundle template_invoice_bundle ir.ui.view qweb New
template_invoice_desglose template_invoice_desglose ir.ui.view qweb New
template_invoice_factura template_invoice_factura ir.ui.view qweb New
template_invoice_main_cancel template_invoice_main_cancel ir.ui.view qweb New
template_invoice_main_post template_invoice_main_post ir.ui.view qweb New
template_invoice_sujetos template_invoice_sujetos ir.ui.view qweb New
view_account_move_reversal account.move.reversal.form.inherit.l10n_es_edi_tbai account.move.reversal xpath Inherits account.view_account_move_reversal
view_move_form_inherit_l10n_es_edi_tbai account.move.form.inherit.l10n_es_edi_tbai account.move xpath Inherits account.view_move_form
Models touched (8)

New fields (11)
  • l10n_es_tbai_cancel_document_id Many2one → l10n_es_edi_tbai.document
    comodel_name='l10n_es_edi_tbai.document' copy=False readonly=True
  • l10n_es_tbai_cancel_file Binary
    related='l10n_es_tbai_cancel_document_id.xml_attachment_id.datas' string='TicketBAI Cancel File'
  • l10n_es_tbai_cancel_file_name Char
    related='l10n_es_tbai_cancel_document_id.xml_attachment_id.name' string='TicketBAI Cancel File Name'
  • l10n_es_tbai_chain_index Integer
    help='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error' related='l10n_es_tbai_post_document_id.chain_index' string='TicketBAI chain index'
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' help='Is the Basque EDI (TicketBAI) needed ?' string='TicketBAI required'
  • l10n_es_tbai_post_document_id Many2one → l10n_es_edi_tbai.document
    comodel_name='l10n_es_edi_tbai.document' copy=False readonly=True
  • l10n_es_tbai_post_file Binary
    related='l10n_es_tbai_post_document_id.xml_attachment_id.datas' string='TicketBAI Post File'
  • l10n_es_tbai_post_file_name Char
    related='l10n_es_tbai_post_document_id.xml_attachment_id.name' string='TicketBAI Post Attachment Name'
  • l10n_es_tbai_refund_reason Selection
    copy=False help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=TBAI_REFUND_REASONS string='Invoice Refund Reason Code (TicketBai)'
  • l10n_es_tbai_reversed_ids Many2many → account.move
    domain="[('move_type', '=', 'in_invoice'), ('commercial_partner_id', '=', commercial_partner_id)]" help='In the case where a vendor refund has multiple original invoices, you can set them here. ' string='Refunded Vendor Bills' args: 'account.move', 'account_move_tbai_reversed_moves', 'refund_id', 'reversed_move_id'
  • l10n_es_tbai_state Selection
    compute='_compute_l10n_es_tbai_state' string='TicketBAI status' args: [('to_send', 'To Send'), ('sent', 'Sent'), ('cancelled', 'Cancelled')]
Public methods (4)
  • button_draft(self)
  • l10n_es_tbai_cancel(self)
  • l10n_es_tbai_resend_bill(self)
  • l10n_es_tbai_send_bill(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' readonly=True string='Is TicketBai required for this reversal'
  • l10n_es_tbai_refund_reason Selection
    help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=TBAI_REFUND_REASONS string='Invoice Refund Reason Code (TicketBai)'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • scope Selection
    selection_add=[('tbai', 'TBAI')]
Public methods (0)

No public methods.

New fields (8)
  • chain_index Integer
    copy=False readonly=True
  • company_id Many2one → res.company
    required=True args: 'res.company'
  • date Date
    readonly=True required=True
  • is_cancel Boolean
    default=False readonly=True
  • name Char
    readonly=True required=True
  • response_message Text
    copy=False readonly=True
  • state Selection
    copy=False default='to_send' readonly=True string='status' args: [('to_send', 'To Send'), ('accepted', 'Accepted'), ('rejected', 'Rejected')]
  • xml_attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' copy=False readonly=True string='XML Attachment'
Public methods (0)

No public methods.

New fields (7)
  • l10n_es_tbai_certificate_id Many2one → certificate.certificate
    comodel_name='certificate.certificate' compute='_compute_l10n_es_tbai_certificate' readonly=False store=True string='Certificate (TicketBAI)'
  • l10n_es_tbai_certificate_ids One2many → certificate.certificate
    comodel_name='certificate.certificate' domain=[('scope', '=', 'tbai')] inverse_name='company_id'
  • l10n_es_tbai_chain_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False readonly=True string='TicketBai account.move chain sequence'
  • l10n_es_tbai_is_enabled Boolean
    compute='_compute_l10n_es_tbai_is_enabled'
  • l10n_es_tbai_license_html Html
    compute='_compute_l10n_es_tbai_license_html' string='TicketBAI license'
  • l10n_es_tbai_tax_agency Selection
    selection=[('araba', 'Hacienda Foral de Araba'), ('bizkaia', 'Hacienda Foral de Bizkaia'), ('gipuzkoa', 'Hacienda Foral de Gipuzkoa')] string='Tax Agency for TBAI'
  • l10n_es_tbai_test_env Boolean
    default=True help='Use the test environment for TicketBAI' string='TBAI Test Mode'
Public methods (0)

No public methods.

New fields (3)
  • l10n_es_tbai_certificate_ids One2many
    readonly=False related='company_id.l10n_es_tbai_certificate_ids'
  • l10n_es_tbai_tax_agency Selection
    readonly=False related='company_id.l10n_es_tbai_tax_agency'
  • l10n_es_tbai_test_env Boolean
    readonly=False related='company_id.l10n_es_tbai_test_env'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/l10n_es_edi_tbai
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations/EDI
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Josse Colpaert, Damien Bouvy, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Gorash, John Laterre (jol), Stanislas Gueniffey, niyasraphy, Victor Piryns (pivi), Gauthier Wala (gawa), Yosua Nicolaus, Antoine Boonen, Dylan Kiss (dyki), paso-odoo, HuylenbroeckFlorent, Ugaitz Olaizola, sesn-odoo, guva-odoo, Sven Fuehr, Louis Gobert, gteboul, Léo Gizard, Ricardo Gomes Rodrigues, dvsh-odoo, Junqi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_es_edi_sii
    - l10n_es
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - account_edi
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pyOpenSSL
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module sends invoices and vendor bills to the "Diputaciones
Forales" of Araba/Álava, Bizkaia and Gipuzkoa.

Invoices and bills get converted to XML and regularly sent to the
Basque government servers which provides them with a unique identifier.
A hash chain ensures the continuous nature of the invoice/bill
sequences. QR codes are added to emitted (sent/printed) invoices,
bills and tickets to allow anyone to check they have been declared.

You need to configure your certificate and the tax agency.
    

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
l10n_es_tbai_external_layout_standard l10n_es_tbai_external_layout_standard ir.ui.view qweb Inherits account.report_invoice_document
res_company_form_l10n_es_edi_tbai res.company.form res.company xpath Inherits account.view_company_form
res_config_settings_view_form res.config.settings.view.form.inherit.l10n.es res.config.settings xpath Inherits account.res_config_settings_view_form
template_LROE_240_inner template_LROE_240_inner ir.ui.view qweb New
template_LROE_240_inner_recibidas template_LROE_240_inner_recibidas ir.ui.view qweb New
template_LROE_240_main template_LROE_240_main ir.ui.view qweb New
template_LROE_240_main_recibidas template_LROE_240_main_recibidas ir.ui.view qweb New
template_digital_signature template_digital_signature ir.ui.view qweb New
template_invoice_bundle template_invoice_bundle ir.ui.view qweb New
template_invoice_desglose template_invoice_desglose ir.ui.view qweb New
template_invoice_factura template_invoice_factura ir.ui.view qweb New
template_invoice_main_cancel template_invoice_main_cancel ir.ui.view qweb New
template_invoice_main_post template_invoice_main_post ir.ui.view qweb New
template_invoice_sujetos template_invoice_sujetos ir.ui.view qweb New
view_account_move_reversal account.move.reversal.form.inherit.l10n_es_edi_tbai account.move.reversal xpath Inherits account.view_account_move_reversal
view_move_form_inherit_l10n_es_edi_tbai account.move.form.inherit.l10n_es_edi_tbai account.move xpath Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • l10n_es_tbai_cancel_xml Binary
    attachment=True copy=False help='Cancellation XML sent to TicketBAI. Kept if accepted or no response (timeout), cleared otherwise.' readonly=True string='Cancellation XML'
  • l10n_es_tbai_chain_index Integer
    copy=False help='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error' readonly=True string='TicketBAI chain index'
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' help='Is the Basque EDI (TicketBAI) needed ?' string='TicketBAI required'
  • l10n_es_tbai_post_xml Binary
    attachment=True copy=False help='Submission XML sent to TicketBAI. Kept if accepted or no response (timeout), cleared otherwise.' readonly=True string='Submission XML'
  • l10n_es_tbai_refund_reason Selection
    copy=False help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=[('R1', 'R1: Art. 80.1, 80.2, 80.6 and rights founded error'), ('R2', 'R2: Art. 80.3'), ('R3', 'R3: Art. 80.4'), ('R4', 'R4: Art. 80 - other'), ('R5', 'R5: Factura rectificativa en facturas simplificadas')] string='Invoice Refund Reason Code (TicketBai)'
Public methods (1)
  • button_draft(self)

New fields (2)
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' readonly=True string='Is TicketBai required for this reversal'
  • l10n_es_tbai_refund_reason Selection
    help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=[('R1', 'R1: Art. 80.1, 80.2, 80.6 and rights founded error'), ('R2', 'R2: Art. 80.3'), ('R3', 'R3: Art. 80.4'), ('R4', 'R4: Art. 80 - other'), ('R5', 'R5: Factura rectificativa en facturas simplificadas')] string='Invoice Refund Reason Code (TicketBai)'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_download_xsd_files(self)
    @api.model
    Downloads the TicketBAI XSD validation files if they don't already exist, for the active tax agency.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • l10n_es_tbai_chain_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False readonly=True string='TicketBai account.move chain sequence'
  • l10n_es_tbai_license_html Html
    compute='_compute_l10n_es_tbai_license_html' string='TicketBAI license'
  • l10n_es_tbai_tax_agency Selection
    selection=[('araba', 'Hacienda Foral de Araba'), ('bizkaia', 'Hacienda Foral de Bizkaia'), ('gipuzkoa', 'Hacienda Foral de Gipuzkoa')] string='Tax Agency for TBAI'
Public methods (0)

No public methods.

New fields (1)
  • l10n_es_tbai_tax_agency Selection
    readonly=False related='company_id.l10n_es_tbai_tax_agency'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/l10n_es_edi_tbai
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations/EDI
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSJosse Colpaert, Damien Bouvy, Jairo Llopis, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Alvaro Fuentes, Omar (Comunitea), niyasraphy, Victor Piryns (pivi), Gauthier Wala (gawa), Antoine Boonen, Dylan Kiss (dyki), paso-odoo, HuylenbroeckFlorent, Isaac Gallart Bochons, Ugaitz Olaizola, sesn-odoo, Sven Fuehr, Louis Gobert
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_es_edi_sii
    - l10n_es
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - account_edi
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pyOpenSSL
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
    This module sends invoices and vendor bills to the "Diputaciones
    Forales" of Araba/Álava, Bizkaia and Gipuzkoa.

    Invoices and bills get converted to XML and regularly sent to the
    Basque government servers which provides them with a unique identifier.
    A hash chain ensures the continuous nature of the invoice/bill
    sequences. QR codes are added to emitted (sent/printed) invoices,
    bills and tickets to allow anyone to check they have been declared.

    You need to configure your certificate and the tax agency.
    

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
l10n_es_tbai_external_layout_standard l10n_es_tbai_external_layout_standard ir.ui.view qweb Inherits account.report_invoice_document
res_company_form_l10n_es_edi_tbai res.company.form res.company xpath Inherits account.view_company_form
res_config_settings_view_form res.config.settings.view.form.inherit.l10n.es res.config.settings xpath Inherits account.res_config_settings_view_form
template_LROE_240_inner template_LROE_240_inner ir.ui.view qweb New
template_LROE_240_inner_recibidas template_LROE_240_inner_recibidas ir.ui.view qweb New
template_LROE_240_main template_LROE_240_main ir.ui.view qweb New
template_LROE_240_main_recibidas template_LROE_240_main_recibidas ir.ui.view qweb New
template_digital_signature template_digital_signature ir.ui.view qweb New
template_invoice_bundle template_invoice_bundle ir.ui.view qweb New
template_invoice_desglose template_invoice_desglose ir.ui.view qweb New
template_invoice_factura template_invoice_factura ir.ui.view qweb New
template_invoice_main_cancel template_invoice_main_cancel ir.ui.view qweb New
template_invoice_main_post template_invoice_main_post ir.ui.view qweb New
template_invoice_sujetos template_invoice_sujetos ir.ui.view qweb New
view_account_move_reversal account.move.reversal.form.inherit.l10n_es_edi_tbai account.move.reversal xpath Inherits account.view_account_move_reversal
view_move_form_inherit_l10n_es_edi_tbai account.move.form.inherit.l10n_es_edi_tbai account.move xpath Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • l10n_es_tbai_cancel_xml Binary
    attachment=True copy=False help='Cancellation XML sent to TicketBAI. Kept if accepted or no response (timeout), cleared otherwise.' readonly=True string='Cancellation XML'
  • l10n_es_tbai_chain_index Integer
    copy=False help='Invoice index in chain, set if and only if an in-chain XML was submitted and did not error' readonly=True string='TicketBAI chain index'
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' help='Is the Basque EDI (TicketBAI) needed ?' string='TicketBAI required'
  • l10n_es_tbai_post_xml Binary
    attachment=True copy=False help='Submission XML sent to TicketBAI. Kept if accepted or no response (timeout), cleared otherwise.' readonly=True string='Submission XML'
  • l10n_es_tbai_refund_reason Selection
    copy=False help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=[('R1', 'R1: Art. 80.1, 80.2, 80.6 and rights founded error'), ('R2', 'R2: Art. 80.3'), ('R3', 'R3: Art. 80.4'), ('R4', 'R4: Art. 80 - other'), ('R5', 'R5: Factura rectificativa en facturas simplificadas')] string='Invoice Refund Reason Code (TicketBai)'
Public methods (1)
  • button_draft(self)

New fields (2)
  • l10n_es_tbai_is_required Boolean
    compute='_compute_l10n_es_tbai_is_required' readonly=True string='Is TicketBai required for this reversal'
  • l10n_es_tbai_refund_reason Selection
    help='BOE-A-1992-28740. Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido. Artículo 80. Modificación de la base imponible.' selection=[('R1', 'R1: Art. 80.1, 80.2, 80.6 and rights founded error'), ('R2', 'R2: Art. 80.3'), ('R3', 'R3: Art. 80.4'), ('R4', 'R4: Art. 80 - other'), ('R5', 'R5: Factura rectificativa en facturas simplificadas')] string='Invoice Refund Reason Code (TicketBai)'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_download_xsd_files(self)
    @api.model
    Downloads the TicketBAI XSD validation files if they don't already exist, for the active tax agency.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • l10n_es_tbai_chain_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False readonly=True string='TicketBai account.move chain sequence'
  • l10n_es_tbai_license_html Html
    compute='_compute_l10n_es_tbai_license_html' string='TicketBAI license'
  • l10n_es_tbai_tax_agency Selection
    selection=[('araba', 'Hacienda Foral de Araba'), ('bizkaia', 'Hacienda Foral de Bizkaia'), ('gipuzkoa', 'Hacienda Foral de Gipuzkoa')] string='Tax Agency for TBAI'
Public methods (0)

No public methods.

New fields (1)
  • l10n_es_tbai_tax_agency Selection
    readonly=False related='company_id.l10n_es_tbai_tax_agency'
Public methods (0)

No public methods.