Libros registro del IVA y del IRPF

l10n_es_vat_book
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/19.0/l10n_es_vat_book
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Emilio Pascual
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Módulo que calcula los libros de IVA e IRPF español.

Esto módulo introduce el menú "Libros de IVA y del IRPF" en Contabilidad -\> Informe
-\> Declaraciones AEAT.

Es posible visualizar e imprimir por separado:

- Libro Registro de Facturas Emitidas
- Libro Registro de Facturas Recibidas

Es posible exportar los registros a archivo con extensión xlsx.

En el modo de visualización de los informes es posible navegar a los
asientos contables relacionados con la factura.

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line list New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_tree l10n_es.vat.book.tree l10n.es.vat.book field Inherits l10n_es_aeat.view_l10n_es_aeat_report_tree
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line list New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary list New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary list New
Models touched (7)

New fields (8)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • excluded_account_xmlid_id Many2one → l10n.es.aeat.map.tax.line.account
    comodel_name='l10n.es.aeat.map.tax.line.account' help='Journal items with this account will be excluded' string='Tax Account Restriction'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_agency_ids Many2many → aeat.tax.agency
    string='Tax Agency' args: 'aeat.tax.agency'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes'
Public methods (2)
  • get_accounts_for_company(self, company)
    Obtain the accounts corresponding to the line according the given company.
  • get_taxes_for_company(self, company)
    Obtain the taxes corresponding to this line according the given company.

New fields (16)
  • auto_renumber Boolean
    args: 'Auto renumber invoices received'
  • calculation_date Date
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly=True string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly=True
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly=True string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly=True string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly=True string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly=True string='Tax Summary'
  • vat_settlement_period Selection
    default='monthly' required=True selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
  • exception_text Char
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')]
  • move_id Many2one → account.move
    comodel_name='account.move' string='Invoice'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (13)
  • base_amount Float
    string='Base'
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_line_tax_base_rel' string='Move Lines (Base)'
  • deductible_amount Float
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly=True
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly=True
  • total_amount Float
    readonly=True
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (3)
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_tax_summary_base_rel' string='Journal items (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Journal items'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (2)
  • view_move_lines_base(self)
  • view_move_lines_tax(self)

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/18.0/l10n_es_vat_book
VERSION
VERSION 2.2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, Weblate, OCA-git-bot, valen, oca-ci, sygel, mpascual, eduezerouali-tecnativa, IsabelAForgeFlow
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Módulo que calcula los libros de IVA e IRPF español.

Esto módulo introduce el menú "Libros de IVA y del IRPF" en Contabilidad -\> Informe
-\> Declaraciones AEAT.

Es posible visualizar e imprimir por separado:

- Libro Registro de Facturas Emitidas
- Libro Registro de Facturas Recibidas

Es posible exportar los registros a archivo con extensión xlsx.

En el modo de visualización de los informes es posible navegar a los
asientos contables relacionados con la factura.

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line list New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_tree l10n_es.vat.book.tree l10n.es.vat.book field Inherits l10n_es_aeat.view_l10n_es_aeat_report_tree
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line list New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary list New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary list New
Models touched (7)

New fields (8)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • excluded_account_xmlid_id Many2one → l10n.es.aeat.map.tax.line.account
    comodel_name='l10n.es.aeat.map.tax.line.account' help='Journal items with this account will be excluded' string='Tax Account Restriction'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_agency_ids Many2many → aeat.tax.agency
    string='Tax Agency' args: 'aeat.tax.agency'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes'
Public methods (2)
  • get_accounts_for_company(self, company)
    Obtain the accounts corresponding to the line according the given company.
  • get_taxes_for_company(self, company)
    Obtain the taxes corresponding to this line according the given company.

New fields (16)
  • auto_renumber Boolean
    args: 'Auto renumber invoices received'
  • calculation_date Date
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly=True string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly=True
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly=True string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly=True string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly=True string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly=True string='Tax Summary'
  • vat_settlement_period Selection
    default='monthly' required=True selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
  • exception_text Char
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')]
  • move_id Many2one → account.move
    comodel_name='account.move' string='Invoice'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (13)
  • base_amount Float
    string='Base'
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_line_tax_base_rel' string='Move Lines (Base)'
  • deductible_amount Float
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly=True
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly=True
  • total_amount Float
    readonly=True
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (3)
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_tax_summary_base_rel' string='Journal items (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Journal items'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (2)
  • view_move_lines_base(self)
  • view_move_lines_tax(self)

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/17.0/l10n_es_vat_book
VERSION
VERSION 2.2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, valen, oca-ci, Ignacio, sygel, pol, eduezerouali-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:19:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Módulo que calcula los libros de IVA e IRPF español.

Esto módulo introduce el menú "Libros de IVA y del IRPF" en Contabilidad -\> Informe
-\> Declaraciones AEAT.

Es posible visualizar e imprimir por separado:

- Libro Registro de Facturas Emitidas
- Libro Registro de Facturas Recibidas

Es posible exportar los registros a archivo con extensión xlsx.

En el modo de visualización de los informes es posible navegar a los
asientos contables relacionados con la factura.

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_tree l10n_es.vat.book.tree l10n.es.vat.book field Inherits l10n_es_aeat.view_l10n_es_aeat_report_tree
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (8)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • excluded_account_xmlid_id Many2one → l10n.es.aeat.map.tax.line.account
    comodel_name='l10n.es.aeat.map.tax.line.account' help='Journal items with this account will be excluded' string='Tax Account Restriction'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_agency_ids Many2many → aeat.tax.agency
    string='Tax Agency' args: 'aeat.tax.agency'
  • tax_xmlid_ids Many2many → l10n.es.aeat.map.tax.line.tax
    comodel_name='l10n.es.aeat.map.tax.line.tax' string='Taxes'
Public methods (2)
  • get_accounts_for_company(self, company)
    Obtain the accounts corresponding to the line according the given company.
  • get_taxes_for_company(self, company)
    Obtain the taxes corresponding to this line according the given company.

New fields (16)
  • auto_renumber Boolean
    args: 'Auto renumber invoices received'
  • calculation_date Date
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly=True string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly=True string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly=True
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly=True string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly=True string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly=True string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly=True string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly=True string='Tax Summary'
  • vat_settlement_period Selection
    default='monthly' required=True selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
  • exception_text Char
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')]
  • move_id Many2one → account.move
    comodel_name='account.move' string='Invoice'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (13)
  • base_amount Float
    string='Base'
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_line_tax_base_rel' string='Move Lines (Base)'
  • deductible_amount Float
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly=True
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly=True
  • total_amount Float
    readonly=True
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (3)
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_tax_summary_base_rel' string='Journal items (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Journal items'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (2)
  • view_move_lines_base(self)
  • view_move_lines_tax(self)

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/16.0/l10n_es_vat_book
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, Omar (Comunitea), Weblate, OCA-git-bot, Eric Antones, oca-ci, Aritz Olea, David Ramia, Christian-RB, eduezerouali-tecnativa, Eduardo López Peñalver
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_tree l10n_es.vat.book.tree l10n.es.vat.book field Inherits l10n_es_aeat.view_l10n_es_aeat_report_tree
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (8)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_agency_ids Many2many → aeat.tax.agency
    string='Tax Agency' args: 'aeat.tax.agency'
  • tax_excluded_account_id Many2one → account.account.template
    comodel_name='account.account.template' help='Journal items with this account will be excluded' string='Tax Account Restriction'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (16)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
  • vat_settlement_period Selection
    default='monthly' required=True selection=[('monthly', 'Monthly'), ('quarterly', 'Quarterly')]
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
  • exception_text Char
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')]
  • move_id Many2one → account.move
    comodel_name='account.move' string='Invoice'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (13)
  • base_amount Float
    string='Base'
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_line_tax_base_rel' string='Move Lines (Base)'
  • deductible_amount Float
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True'
  • total_amount Float
    readonly='True'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (3)
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_tax_summary_base_rel' string='Journal items (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Journal items'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (2)
  • view_move_lines_base(self)
  • view_move_lines_tax(self)

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/15.0/l10n_es_vat_book
VERSION
VERSION 2.11.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, cubells, OCA Transbot, Víctor Martínez, Omar (Comunitea), Weblate, OCA-git-bot, oca-ci, Eduardo De Miguel, almumu, ldlafaurie@gmail.com
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography
unidecode
xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_tree l10n_es.vat.book.tree l10n.es.vat.book field Inherits l10n_es_aeat.view_l10n_es_aeat_report_tree
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (8)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_account_id Many2one → account.account.template
    comodel_name='account.account.template' string='Tax Account Restriction'
  • tax_agency_ids Many2many → aeat.tax.agency
    string='Tax Agency' args: 'aeat.tax.agency'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (15)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (14)
  • base_amount Float
    string='Base'
  • entry_number Integer
  • exception_text Char
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')]
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (12)
  • base_amount Float
    string='Base'
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_line_tax_base_rel' string='Move Lines (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')]
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True'
  • total_amount Float
    readonly='True'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (3)
  • base_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' relation='account_move_line_l10n_es_vat_book_tax_summary_base_rel' string='Journal items (Base)'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Journal items'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (2)
  • view_move_lines_base(self)
  • view_move_lines_tax(self)

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/14.0/l10n_es_vat_book
VERSION
VERSION 2.8.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, cubells, OCA Transbot, Víctor Martínez, Ernesto Tejeda, Omar (Comunitea), oca-travis, Weblate, OCA-git-bot, oca-ci, Eduardo De Miguel, Valentin Vinagre Urteaga, Zar21
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography<39
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (7)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
    string='Name'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_account_id Many2one → account.account.template
    comodel_name='account.account.template' string='Tax Account Restriction'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (15)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
    string='Calculation Date'
  • error_count Integer
    compute='_compute_error_count'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (14)
  • base_amount Float
    string='Base'
  • entry_number Integer
    args: 'Entry number'
  • exception_text Char
    string='Exception text'
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
    string='Invoice Date'
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')] string='Line type'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (11)
  • base_amount Float
    string='Base'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True' string='Base amount'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True' string='Tax amount'
  • total_amount Float
    readonly='True' string='Total amount'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (1)
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/13.0/l10n_es_vat_book
VERSION
VERSION 1.10.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), ForgeFlow, PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, mreficent, Jordi Ballester Alomar, cubells, manu, OCA Transbot, Víctor Martínez, AaronHForgeFlow, Omar (Comunitea), oca-travis, Weblate, OCA-git-bot, oca-ci, Valentin Vinagre Urteaga, fromera, Javier Colmeiro
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
OCA/server-ux:
    - date_range
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pyOpenSSL
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (7)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
    string='Name'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_account_id Many2one → account.account.template
    comodel_name='account.account.template' string='Tax Account Restriction'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (14)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
    string='Calculation Date'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
    args: 'Entry number'
  • exception_text Char
    string='Exception text'
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
    string='Invoice Date'
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')] string='Line type'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Invoice'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (11)
  • base_amount Float
    string='Base'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    compute='_compute_total_amount' store=True string='Total'
  • total_amount_special_include Float
    compute='_compute_total_amount_special_include' store=True string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True' string='Base amount'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True' string='Tax amount'
  • total_amount Float
    readonly='True' string='Total amount'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (1)
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
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_vat_book
VERSION
VERSION 1.7.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent
COMMITTERS
COMMITTERSPedro M. Baeza, mreficent, Carlos Dauden, david, cubells, OCA Transbot, oca-travis, Weblate, Gelu, OCA-git-bot, Jon Erik Ceberio, Ioan Galan
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/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
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
    - base_vat
    - l10n_es
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
requests
unidecode
zeep
xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (6)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
    string='Name'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (0)

No public methods.

New fields (14)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
    string='Calculation Date'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
    args: 'Entry number'
  • exception_text Char
    string='Exception text'
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
    string='Invoice Date'
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' string='Invoice'
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')] string='Line type'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (11)
  • base_amount Float
    string='Base'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    string='Total'
  • total_amount_special_include Float
    string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True' string='Base amount'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True' string='Tax amount'
  • total_amount Float
    readonly='True' string='Total amount'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (1)
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
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_vat_book
VERSION
VERSION 3.4.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent
COMMITTERS
COMMITTERSPedro M. Baeza, Carlos Dauden, manu, OCA Transbot, Omar (Comunitea), oca-travis, OCA-git-bot, Rodrigo Bonilla, OCA Git Bot
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/l10n-spain:
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
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
    - base_vat
    - l10n_es
    - base_iban
    - account_invoicing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
xlrd
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (7)

New fields (6)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
    string='Name'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (14)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
    string='Calculation Date'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
    args: 'Entry number'
  • exception_text Char
    string='Exception text'
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
    string='Invoice Date'
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' string='Invoice'
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')] string='Line type'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (11)
  • base_amount Float
    string='Base'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    string='Total'
  • total_amount_special_include Float
    string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True' string='Base amount'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True' string='Tax amount'
  • total_amount Float
    readonly='True' string='Total amount'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (1)
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • create_issued_sheet(self, workbook, book, draft_export)
  • create_received_sheet(self, workbook, book, draft_export)
  • fill_issued_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill issued data
  • fill_received_row_data(self, sheet, row, line, tax_line, with_total, draft_export)
    Fill received data
  • format_boe_date(self, date)
  • generate_xlsx_report(self, workbook, data, objects)
    Create vat book xlsx in BOE format
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_vat_book
VERSION
VERSION 4.0.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent, Punt Sistemes
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), PRAXYA, Eficent, Punt Sistemes
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jordi Ballester Alomar, manu, OCA Transbot, oca-travis, OCA-git-bot, OCA Git Bot, Isaac Gallart Bochons, rgarnau, amcor
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/l10n-spain:
    - l10n_es
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xlsx
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_vat
    - base_iban
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
xlsxwriter
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
l10n_es_aeat_vat_book_map_lines_view_tree aeat.vat.book.map.lines.view.tree aeat.vat.book.map.line tree New
l10n_es_vat_book.vat_book_contact l10n_es_vat_book.vat_book_contact ir.ui.view qweb New
l10n_es_vat_book.vat_book_dates l10n_es_vat_book.vat_book_dates ir.ui.view qweb New
l10n_es_vat_book.vat_book_invoices_head l10n_es_vat_book.vat_book_invoices_head ir.ui.view qweb New
l10n_es_vat_book.vat_book_line l10n_es_vat_book.vat_book_line ir.ui.view qweb New
l10n_es_vat_book.vat_book_summary l10n_es_vat_book.vat_book_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_tax_summary l10n_es_vat_book.vat_book_tax_summary ir.ui.view qweb New
l10n_es_vat_book.vat_book_taxes_head l10n_es_vat_book.vat_book_taxes_head ir.ui.view qweb New
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_issued_html report_vat_book_invoices_issued_html ir.ui.view qweb New
report_vat_book_invoices_issued_pdf report_vat_book_invoices_issued_pdf ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_invoices_received_html report_vat_book_invoices_received_html ir.ui.view qweb New
report_vat_book_invoices_received_pdf report_vat_book_invoices_received_pdf ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book button Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_vat_book_line_form view.l10n_es_vat_book_line.form l10n.es.vat.book.line form New
view_vat_book_line_tree view.l10n_es_vat_book_line.tree l10n.es.vat.book.line tree New
view_vat_book_summary_form view.l10n_es_vat_book_summary.form l10n.es.vat.book.summary form New
view_vat_book_summary_tree view.l10n_es_vat_book_summary.tree l10n.es.vat.book.summary tree New
view_vat_book_tax_summary_form view.l10n_es_vat_book_tax_summary.form l10n.es.vat.book.tax.summary form New
view_vat_book_tax_summary_tree view.l10n_es_vat_book_tax_summary.tree l10n.es.vat.book.tax.summary tree New
Models touched (6)

New fields (6)
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • fee_amount_xlsx_column Char
    string='Base xlsx column'
  • fee_type_xlsx_column Char
    string='Type xlsx column'
  • name Char
    string='Name'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_tmpl_ids Many2many → account.tax.template
    comodel_name='account.tax.template' string='Taxes'
Public methods (1)
  • get_taxes(self, report)

New fields (14)
  • auto_renumber Boolean
    states={'draft': [('readonly', False)]} args: 'Auto renumber invoices received'
  • calculation_date Date
    string='Calculation Date'
  • issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued invoices'
  • issued_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Summary'
  • issued_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'issued')] inverse_name='vat_book_id' readonly='True' string='Issued Tax Summary'
  • line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False inverse_name='vat_book_id' readonly='True' string='Issued/Received invoices'
  • number Char
    default='vat_book' readonly='True'
  • received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received invoices'
  • received_summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Summary'
  • received_tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' domain=[('book_type', '=', 'received')] inverse_name='vat_book_id' readonly='True' string='Received Tax Summary'
  • rectification_issued_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_issued')] inverse_name='vat_book_id' readonly='True' string='Issued Refund Invoices'
  • rectification_received_line_ids One2many → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' copy=False domain=[('line_type', '=', 'rectification_received')] inverse_name='vat_book_id' readonly='True' string='Received Refund Invoices'
  • summary_ids One2many → l10n.es.vat.book.summary
    comodel_name='l10n.es.vat.book.summary' inverse_name='vat_book_id' readonly='True' string='Summary'
  • tax_summary_ids One2many → l10n.es.vat.book.tax.summary
    comodel_name='l10n.es.vat.book.tax.summary' inverse_name='vat_book_id' readonly='True' string='Tax Summary'
Public methods (12)
  • button_confirm(self)
  • calculate(self)
    Funcion call from vat_book
  • create_vat_book_lines(self, move_lines, line_type, taxes)
  • export_xlsx(self)
  • get_book_line_key(self, move_line)
  • get_book_line_tax_key(self, move_line, tax)
  • get_pos_partner_ids(self)
    @ormcache('self.id')
  • get_report_file_name(self)
  • get_special_taxes_dic(self)
    @ormcache('self.id')
  • upsert_book_line_tax(self, move_line, vat_book_line, implied_taxes)
  • view_issued_invoices(self)
  • view_received_invoices(self)

New fields (15)
  • base_amount Float
    string='Base'
  • entry_number Integer
    args: 'Entry number'
  • exception_text Char
    string='Exception text'
  • external_ref Char
    args: 'External Reference'
  • invoice_date Date
    string='Invoice Date'
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' string='Invoice'
  • line_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received'), ('rectification_issued', 'Refund Issued'), ('rectification_received', 'Refund Received')] string='Line type'
  • move_id Many2one → account.move
    comodel_name='account.move' string='Journal Entry'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • ref Char
    args: 'Reference'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_line_ids One2many → l10n.es.vat.book.line.tax
    comodel_name='l10n.es.vat.book.line.tax' copy=False inverse_name='vat_book_line_id' string='Tax Lines'
  • total_amount Float
    string='Total'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (12)
  • base_amount Float
    string='Base'
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' string='Move Lines'
  • parent_special_tax_group Selection
    readonly=True related='vat_book_line_id.special_tax_group'
  • special_tax_amount Float
    string='Special Tax fee'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=[('req', 'R.Eq.'), ('irpf', 'IRPF')] string='Special group'
  • special_tax_id Many2one → account.tax
    comodel_name='account.tax' string='Special Tax'
  • tax_amount Float
    string='Tax fee'
  • tax_id Many2one → account.tax
    comodel_name='account.tax' string='Tax'
  • tax_rate Float
    compute='_compute_tax_rate' string='Tax Rate (%)'
  • total_amount Float
    string='Total'
  • total_amount_special_include Float
    string='Total w/Special'
  • vat_book_line_id Many2one → l10n.es.vat.book.line
    comodel_name='l10n.es.vat.book.line' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (6)
  • base_amount Float
    readonly='True' string='Base amount'
  • book_type Selection
    selection=[('issued', 'Issued'), ('received', 'Received')] string='Book type'
  • special_tax_group Selection
    help='Special tax group as R.Eq, IRPF, etc' selection=_selection_special_tax_group string='Special group'
  • tax_amount Float
    readonly='True' string='Tax amount'
  • total_amount Float
    readonly='True' string='Total amount'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
Public methods (0)

No public methods.

New fields (1)
  • tax_id Many2one → account.tax
    comodel_name='account.tax' ondelete='cascade' required=True string='Account Tax'
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_vat_book
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), PRAXYA
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), PRAXYA
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, Daniel-CA
WEBSITE
WEBSITEhttp://www.praxya.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-tools:
    - account_invoice_currency
OCA/l10n-spain:
    - l10n_es
    - l10n_es_aeat
    - account_refund_original
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 unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
report_vat_book_invoices_issued_document report_vat_book_invoices_issued_document ir.ui.view qweb New
report_vat_book_invoices_received_document report_vat_book_invoices_received_document ir.ui.view qweb New
report_vat_book_rectification_issued_invoices_document report_vat_book_rectification_issued_invoices_document ir.ui.view qweb New
report_vat_book_rectification_received_invoices_document report_vat_book_rectification_received_invoices_document ir.ui.view qweb New
tmp_report_vat_book_invoices_issued tmp_report_vat_book_invoices_issued ir.ui.view qweb New
tmp_report_vat_book_invoices_received tmp_report_vat_book_invoices_received ir.ui.view qweb New
tmp_report_vat_book_rectification_issued_invoices tmp_report_vat_book_rectification_issued_invoices ir.ui.view qweb New
tmp_report_vat_book_rectification_received_invoices tmp_report_vat_book_rectification_received_invoices ir.ui.view qweb New
view_l10n_es_vat_book_form l10n_es.vat.book.form l10n.es.vat.book xpath Inherits l10n_es_aeat.view_l10n_es_aeat_report_form
view_l10n_es_vat_book_invoice_tax_lines_form view.l10n_es_vat_book_invoice_tax_lines.form l10n.es.vat.book.invoice.tax.lines form New
view_l10n_es_vat_book_invoice_tax_lines_tree view.l10n_es_vat_book_invoice_tax_lines.tree l10n.es.vat.book.invoice.tax.lines tree New
view_l10n_es_vat_book_issued_lines_form view.l10n_es_vat_book_issued_lines.form l10n.es.vat.book.issued.lines form New
view_l10n_es_vat_book_issued_lines_tree view.l10n_es_vat_book_issued_lines.tree l10n.es.vat.book.issued.lines tree New
view_l10n_es_vat_book_issued_tax_summary_form view.l10n_es_vat_book_issued_tax_summary.form l10n.es.vat.book.issued.tax.summary form New
view_l10n_es_vat_book_issued_tax_summary_tree view.l10n_es_vat_book_issued_tax_summary.tree l10n.es.vat.book.issued.tax.summary tree New
view_l10n_es_vat_book_received_lines_form view.l10n_es_vat_book_received_lines.form l10n.es.vat.book.received.lines form New
view_l10n_es_vat_book_received_lines_tree view.l10n_es_vat_book_received_lines.tree l10n.es.vat.book.received.lines tree New
view_l10n_es_vat_book_received_tax_summary_form view.l10n_es_vat_book_received_tax_summary.form l10n.es.vat.book.received.tax.summary form New
view_l10n_es_vat_book_received_tax_summary_tree view.l10n_es_vat_book_received_tax_summary.tree l10n.es.vat.book.received.tax.summary tree New
view_l10n_es_vat_book_rectification_issued_lines_form view.l10n_es_vat_book_rectification_issued_lines.form l10n.es.vat.book.rectification.issued.lines form New
view_l10n_es_vat_book_rectification_issued_lines_tree view.l10n_es_vat_book_rectification_issued_lines.tree l10n.es.vat.book.rectification.issued.lines tree New
view_l10n_es_vat_book_rectification_issued_tax_summary_form view.l10n_es_vat_book_rectification_issued_tax_summary.form l10n.es.vat.book.rectification.issued.tax.summary form New
view_l10n_es_vat_book_rectification_issued_tax_summary_tree view.l10n_es_vat_book_rectification_issued_tax_summary.tree l10n.es.vat.book.rectification.issued.tax.summary tree New
view_l10n_es_vat_book_rectification_received_lines_form view.l10n_es_vat_book_rectification_received_lines.form l10n.es.vat.book.rectification.received.lines form New
view_l10n_es_vat_book_rectification_received_lines_tree view.l10n_es_vat_book_rectification_received_lines.tree l10n.es.vat.book.rectification.received.lines tree New
view_l10n_es_vat_book_rectification_received_tax_summary_form view.l10n_es_vat_book_rectification_received_tax_summary.form l10n.es.vat.book.rectification.received.tax.summary form New
view_l10n_es_vat_book_rectification_received_tax_summary_tree view.l10n_es_vat_book_rectification_received_tax_summary.tree l10n.es.vat.book.rectification.received.tax.summary tree New
view_l10n_es_vat_book_tree view.l10n_es_vat_book.tree l10n.es.vat.book tree New
Models touched (14)

New fields (22)
  • amount_tax_issued Float
    readonly='True' string='Taxes'
  • amount_tax_received Float
    readonly='True' string='Taxes'
  • amount_tax_rectification_issued Float
    readonly='True' string='Taxes'
  • amount_tax_rectification_received Float
    readonly='True' string='Taxes'
  • amount_total_issued Float
    readonly='True' string='Total'
  • amount_total_received Float
    readonly='True' string='Total'
  • amount_total_rectification_issued Float
    readonly='True' string='Total'
  • amount_total_rectification_received Float
    readonly='True' string='Total'
  • amount_without_tax_issued Float
    readonly='True' string='Total without taxes'
  • amount_without_tax_received Float
    readonly='True' string='Total without taxes'
  • amount_without_tax_rectification_issued Float
    readonly='True' string='Total without taxes'
  • amount_without_tax_rectification_received Float
    readonly='True' string='Total without taxes'
  • calculation_date Date
    string='Calculation Date'
  • issued_invoice_ids One2many → l10n.es.vat.book.issued.lines
    comodel_name='l10n.es.vat.book.issued.lines' inverse_name='l10n_es_vat_book_id' readonly='True' string='Issued invoices'
  • issued_tax_summary One2many → l10n.es.vat.book.issued.tax.summary
    comodel_name='l10n.es.vat.book.issued.tax.summary' inverse_name='vat_book_id' readonly='True' string='Issued tax summary'
  • number Char
    default='vat_book' readonly='True'
  • received_invoice_ids One2many → l10n.es.vat.book.received.lines
    comodel_name='l10n.es.vat.book.received.lines' inverse_name='l10n_es_vat_book_id' readonly='True' string='Received received'
  • received_tax_summary One2many → l10n.es.vat.book.received.tax.summary
    comodel_name='l10n.es.vat.book.received.tax.summary' inverse_name='vat_book_id' readonly='True' string='Received tax summary'
  • rectification_issued_invoice_ids One2many → l10n.es.vat.book.rectification.issued.lines
    comodel_name='l10n.es.vat.book.rectification.issued.lines' inverse_name='l10n_es_vat_book_id' readonly='True' string='Rectification issued'
  • rectification_issued_tax_summary One2many → l10n.es.vat.book.rectification.issued.tax.summary
    comodel_name='l10n.es.vat.book.rectification.issued.tax.summary' inverse_name='vat_book_id' readonly='True' string='Issued tax summary'
  • rectification_received_invoice_ids One2many → l10n.es.vat.book.rectification.received.lines
    comodel_name='l10n.es.vat.book.rectification.received.lines' inverse_name='l10n_es_vat_book_id' readonly='True' string='Rectification received'
  • rectification_received_tax_summary One2many → l10n.es.vat.book.rectification.received.tax.summary
    comodel_name='l10n.es.vat.book.rectification.received.tax.summary' inverse_name='vat_book_id' readonly='True' string='Received tax summary'
Public methods (2)
  • button_calculate(self)
    @api.multi
    Funcion call from vat_book
  • nearby(self, final, numbers)
    Inerhit from mod 340 Author: XASSIZ

New fields (8)
  • amount_without_tax Float
    string='Base'
  • issued_invoice_line_id Many2one → l10n.es.vat.book.issued.lines
    comodel_name='l10n.es.vat.book.issued.lines' string='Issued invoice line'
  • name Char
    string='Tax Name'
  • received_invoice_line_id Many2one → l10n.es.vat.book.received.lines
    comodel_name='l10n.es.vat.book.received.lines' string='Received invoice line'
  • rectification_issued_invoice_line_id Many2one → l10n.es.vat.book.rectification.issued.lines
    comodel_name='l10n.es.vat.book.rectification.issued.lines' string='Received invoice line'
  • rectification_received_invoice_line_id Many2one → l10n.es.vat.book.rectification.received.lines
    comodel_name='l10n.es.vat.book.rectification.received.lines' string='Received invoice line'
  • tax_amount Float
    string='Tax amount'
  • tax_percent Float
    string='Tax percent'
Public methods (0)

No public methods.

New fields (11)
  • base Float
    string='Base'
  • exeption Boolean
    string='Exeption'
  • exeption_text Char
    string='Exeption text'
  • invoice_date Date
    string='Invoice Date'
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' string='Invoice'
  • l10n_es_vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Vat Book id'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Empresa'
  • tax_import Float
    string='Tax import'
  • tax_line_issued_ids One2many → l10n.es.vat.book.invoice.tax.lines
    comodel_name='l10n.es.vat.book.invoice.tax.lines' inverse_name='issued_invoice_line_id' string='Lineas de impuesto'
  • total Float
    string='Total'
  • vat_number Char
    string='NIF'
Public methods (0)

No public methods.

New fields (5)
  • sum_base_amount Float
    string='Summary base amount'
  • sum_tax_amount Float
    string='Summary tax amount'
  • tax_code_id Many2one → account.tax.code
    comodel_name='account.tax.code' ondelete='cascade' required=True string='Account Tax Code'
  • tax_percent Float
    string='Tax percent'
  • vat_book_id Many2one → l10n.es.vat.book
    comodel_name='l10n.es.vat.book' string='Libro de IVA'
Public methods (0)

No public methods.

New fields (1)
  • tax_lines_received_ids One2many → l10n.es.vat.book.invoice.tax.lines
    comodel_name='l10n.es.vat.book.invoice.tax.lines' inverse_name='received_invoice_line_id' string='Tax Lines'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • tax_lines_rectification_issued_ids One2many → l10n.es.vat.book.invoice.tax.lines
    comodel_name='l10n.es.vat.book.invoice.tax.lines' inverse_name='rectification_issued_invoice_line_id' string='Tax Lines'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • tax_lines_rectification_received_ids One2many → l10n.es.vat.book.invoice.tax.lines
    comodel_name='l10n.es.vat.book.invoice.tax.lines' inverse_name='rectification_received_invoice_line_id' string='Tax Lines'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.