Creación de Facturae

l10n_es_facturae
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_facturae
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, ASR-OSS, Tecon, Dixmit
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, ASR-OSS, Tecon, Dixmit
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, AlexGarS73
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:10:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/bank-payment:
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
    - account_edi_ubl_cii
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pycountry
xmlsig
schwifty==2024.4.0
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal.form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (13)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (12)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True
  • facturae_withheld_amount Monetary
    compute='_compute_facturae_withheld_amount' readonly=False store=True string='Withheld Amount'
  • facturae_withheld_percent Float
    string='Withheld Percent'
  • facturae_withheld_reason Char
    string='Withheld Reason'
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (8)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_hide_discount(self)
  • get_facturae_version(self)
  • get_narration(self)
  • get_refund_reason_string(self)
  • validate_company_facturae_fields(self, company_id)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self, is_modify=False)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias de viajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requires certificate in the company file' args: 'Do you want to digitally sign the generated file?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')]
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (9)
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_registration_additional Char
    size=20
  • facturae_registration_book Char
    size=20
  • facturae_registration_folio Char
    size=20
  • facturae_registration_location Char
    size=20
  • facturae_registration_section Char
    size=20
  • facturae_registration_sheet Char
    size=20
  • facturae_registration_volume Char
    size=20
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (8)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    copy=False args: 'Factura electrónica'
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10
  • organo_gestor Char
    size=10
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'city', 'state_id', 'country_id', 'street')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 1.2.3
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, ASR-OSS, Tecon, Dixmit
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, ASR-OSS, Tecon, Dixmit
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, Weblate, OCA-git-bot, oca-ci, Luis Rodriguez
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:09:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pycountry
xmlsig
schwifty==2024.4.0
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal.form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (13)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (12)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True
  • facturae_withheld_amount Monetary
    compute='_compute_facturae_withheld_amount' readonly=False store=True string='Withheld Amount'
  • facturae_withheld_percent Float
    string='Withheld Percent'
  • facturae_withheld_reason Char
    string='Withheld Reason'
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (8)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_hide_discount(self)
  • get_facturae_version(self)
  • get_narration(self)
  • get_refund_reason_string(self)
  • validate_company_facturae_fields(self, company_id)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self, is_modify=False)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias de viajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requires certificate in the company file' args: 'Do you want to digitally sign the generated file?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')]
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (9)
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_registration_additional Char
    size=20
  • facturae_registration_book Char
    size=20
  • facturae_registration_folio Char
    size=20
  • facturae_registration_location Char
    size=20
  • facturae_registration_section Char
    size=20
  • facturae_registration_sheet Char
    size=20
  • facturae_registration_volume Char
    size=20
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (8)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    copy=False args: 'Factura electrónica'
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10
  • organo_gestor Char
    size=10
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'city', 'state_id', 'country_id', 'street')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 1.5.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Enric Tobella, sergio-teruel, Víctor Martínez, Weblate, OCA-git-bot, David, oca-ci, David Ramia, Luis Rodriguez, Christian-RB, extrememicro, bobrador, Manuel Regidor, Hermi
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:59:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pycountry
xmlsig
schwifty==2024.4.0
lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal.form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (12)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (12)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True
  • facturae_withheld_amount Monetary
    compute='_compute_facturae_withheld_amount' readonly=False store=True string='Withheld Amount'
  • facturae_withheld_percent Float
    string='Withheld Percent'
  • facturae_withheld_reason Char
    string='Withheld Reason'
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (8)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_hide_discount(self)
  • get_facturae_version(self)
  • get_narration(self)
  • get_refund_reason_string(self)
  • validate_company_facturae_fields(self, company_id)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self, is_modify=False)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias de viajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requires certificate in the company file' args: 'Do you want to digitally sign the generated file?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')]
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (9)
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_registration_additional Char
    size=20
  • facturae_registration_book Char
    size=20
  • facturae_registration_folio Char
    size=20
  • facturae_registration_location Char
    size=20
  • facturae_registration_section Char
    size=20
  • facturae_registration_sheet Char
    size=20
  • facturae_registration_volume Char
    size=20
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (8)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    copy=False args: 'Factura electrónica'
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10
  • organo_gestor Char
    size=10
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'city', 'state_id', 'country_id', 'street')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 1.13.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, sergio-teruel, Víctor Martínez, Weblate, OCA-git-bot, David, oca-ci, Carlos, David Ramia, ferran-S73, Carolina Fernandez, Alberto Martínez, Luis Rodriguez, extrememicro, pol, Angel Rivas, Hermi, Pol Canelles, Dani Strk
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pycountry
xmlsig
schwifty==2024.4.0
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal .form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (12)

New fields (12)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_withheld_amount Monetary
    compute='_compute_facturae_withheld_amount' readonly=False store=True string='Withheld Amount'
  • facturae_withheld_percent Float
    string='Withheld Percent'
  • facturae_withheld_reason Char
    string='Withheld Reason'
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (8)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_hide_discount(self)
  • get_facturae_version(self)
  • get_narration(self)
  • get_refund_reason_string(self)
  • validate_company_facturae_fields(self, company_id)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requires certificate in the company file' args: 'Do you want to digitally sign the generated file?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')]
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (9)
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_registration_additional Char
    size=20
  • facturae_registration_book Char
    size=20
  • facturae_registration_folio Char
    size=20
  • facturae_registration_location Char
    size=20
  • facturae_registration_section Char
    size=20
  • facturae_registration_sheet Char
    size=20
  • facturae_registration_volume Char
    size=20
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (8)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    copy=False args: 'Factura electrónica'
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10
  • organo_gestor Char
    size=10
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'city', 'state_id', 'country_id', 'street')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 1.13.2
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Jairo Llopis, Enric Tobella, Lois Rilo, OCA Transbot, Miquel Raïch, sergio-teruel, Víctor Martínez, Weblate, OCA-git-bot, David, oca-ci, Aritz Olea, Eduardo De Miguel, pilarvargas-tecnativa, Manuel Calero, angel, Alberto Martínez, almumu, pol
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-financial-reporting:
    - account_tax_balance
OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography
pycountry
xmlsig
requests
schwifty==2024.4.0
lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal .form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (12)

New fields (9)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (8)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_hide_discount(self)
  • get_facturae_version(self)
  • get_narration(self)
  • get_refund_reason_string(self)
  • validate_company_facturae_fields(self, company_id)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')]
Public methods (0)

No public methods.

New fields (6)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requires certificate in the company file' args: 'Do you want to digitally sign the generated file?'
  • move_id Many2one → account.move
    args: 'account.move'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')]
Public methods (2)
  • create_facturae_file(self)
  • default_get(self, fields)
    @api.model

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (2)
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (9)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    copy=False args: 'Factura electrónica'
  • facturae_hide_discount Boolean
    help='The unit price will be recalculated applying the discount' string='Hide Facturae discount'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10
  • organo_gestor Char
    size=10
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • parent_facturae Boolean
    related='commercial_partner_id.facturae'
  • unidad_tramitadora Char
    size=10
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'state_id', 'country_id', 'street')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 2.7.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, Lois Rilo, manu, OCA Transbot, Miquel Raïch, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Eric Antones, oca-ci, Aritz Olea, Ioan Galan, almumu
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/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography<39
pyOpenSSL
pycountry
xmlsig
requests
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
facturae_signed facturae_signed ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal .form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (12)

New fields (9)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_file_reference Char
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_reference Char
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (5)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae_version(self)
  • get_refund_reason_string(self)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self)
    Inject in the context the Facturae refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Facturae file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requiere certificado en la ficha de la compañía' args: '¿Desea firmar digitalmente el fichero generado?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')], 'State'
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • generate_report(self, ir_report, docids, data=None)
    @api.model

New fields (1)
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (7)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    args: 'Factura electrónica'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10 args: 'Oficina contable'
  • organo_gestor Char
    size=10 args: 'Órgano gestor'
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10 args: 'Unidad tramitadora'
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'state_id', 'country_id')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 2.5.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, Enric Tobella, manu, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, oca-ci, César López Ramírez, Stefan
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/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
    - l10n_es_aeat
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
OCA/server-ux:
    - date_range
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
xmlsig
requests
pycountry
pyOpenSSL
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
template_facturae template_facturae ir.ui.view qweb New
view_account_journal_thirdparty_form account.journal xpath Inherits l10n_es_aeat.view_account_journal_form
view_account_move_reversal account.move.reversal .form account.move.reversal field Inherits account.view_account_move_reversal
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.move.line.form (in l10n_es_facturae_fields) account.move.line form New
view_move_form account.move.form account.move xpath Inherits l10n_es_aeat.view_move_form
view_partner_form res.partner.form res.partner xpath Inherits account.view_partner_property_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (11)

New fields (6)
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    compute='_compute_facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • l10n_es_facturae_attachment_ids One2many → l10n.es.facturae.attachment
    copy=False inverse_name='move_id' args: 'l10n.es.facturae.attachment'
Public methods (6)
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae(self, firmar_facturae)
  • get_facturae_version(self)
  • get_refund_reason_string(self)
  • validate_facturae_fields(self)

New fields (13)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • reverse_moves(self)
    Inject in the context the FacturaE refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Factura-E file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requiere certificado en la ficha de la compañía' args: '¿Desea firmar digitalmente el fichero generado?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')], 'State'
Public methods (1)
  • create_facturae_file(self)

New fields (3)
  • file Binary
    required=True
  • filename Char
  • move_id Many2one → account.move
    ondelete='cascade' required=True args: 'account.move'
Public methods (0)

No public methods.

New fields (3)
  • facturae_cert Binary
    attachment=False filters='*.pfx' string='Certificado firma electrónica'
  • facturae_cert_password Char
    string='Contraseña certificado'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (7)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    args: 'Factura electrónica'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • oficina_contable Char
    size=10 args: 'Oficina contable'
  • organo_gestor Char
    size=10 args: 'Órgano gestor'
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10 args: 'Unidad tramitadora'
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'state_id', 'country_id')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 3.2.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, mreficent, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, JesusVMayor, oca-ci, Jaime Arroyo, César López Ramírez, Joaquin Gutierrez Pedrosa, Valentin Vinagre Urteaga
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_iban
    - base_vat
    - l10n_es
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
xmlsig
requests
pycountry
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
account_invoice_integration_form account.invoice.integration.form account.invoice.integration form New
account_invoice_integration_tree account.invoice.integration.tree account.invoice.integration tree New
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
invoice_form account.invoice.form account.invoice button Inherits account.invoice_form
template_facturae template_facturae ir.ui.view qweb New
view_account_invoice_filter account.invoice.select account.invoice filter Inherits account.view_account_invoice_filter
view_account_invoice_integration_cancel account.invoice.integration.cancel.form account.invoice.integration.cancel form New
view_account_invoice_refund account.invoice.refund.form account.invoice.refund field Inherits account.view_account_invoice_refund
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.invoice.line.form (in l10n_es_facturae_fields) account.invoice.line form New
view_partner_form res.partner.form res.partner field Inherits base.view_partner_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (14)

New fields (9)
  • can_integrate Boolean
    compute='_compute_can_integrate'
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    readonly=True related='partner_id.facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • integration_count Integer
    compute='_compute_integrations_count' copy=False default=0 string='# of Integrations'
  • integration_ids One2many → account.invoice.integration
    comodel_name='account.invoice.integration' copy=False inverse_name='invoice_id'
  • integration_issue Boolean
    compute='_compute_integration_issue' help='This field should show if the invoice has been integrated and has any issues' store=True
Public methods (8)
  • action_integrations(self)
    @api.multi
  • action_view_integrations(self)
    @api.multi
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae(self, firmar_facturae)
  • get_facturae_version(self)
  • get_refund_reason_string(self)
  • validate_facturae_fields(self)

New fields (16)
  • attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' string='Main file'
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' string='Annexes'
  • can_cancel Boolean
    default=False readonly=True
  • can_send Boolean
    default=True readonly=True
  • can_update Boolean
    default=False readonly=True
  • cancellation_description Char
    readonly=True
  • cancellation_status Selection
    readonly=True selection=[]
  • integration_description Char
    readonly=True
  • integration_status Selection
    readonly=True selection=[]
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' readonly=True required=True
  • log_ids One2many → account.invoice.integration.log
    comodel_name='account.invoice.integration.log' inverse_name='integration_id'
  • method_id Many2one → account.invoice.integration.method
    comodel_name='account.invoice.integration.method' readonly=True required=True string='Method'
  • name Char
    default='/' readonly=True
  • register_number Char
    readonly=True
  • state Selection
    default='pending' readonly=True selection=[('pending', 'Pending'), ('sent', 'Sent'), ('cancelled', 'Cancelled'), ('failed', 'Failed')]
  • update_date Datetime
    readonly=True
Public methods (7)
  • cancel_values(self)
  • create(self, vals)
    @api.model
  • log_values(self)
  • send_action(self)
    @api.multi
  • send_values(self)
  • update_action(self)
    @api.multi
  • update_values(self)

New fields (1)
  • integration_id Many2one → account.invoice.integration
    comodel_name='account.invoice.integration'
Public methods (2)
  • cancel_integration(self)
    @api.multi
  • cancel_values(self)

New fields (8)
  • cancellation_motive Char
  • integration_id Many2one → account.invoice.integration
    comodel_name='account.invoice.integration' readonly=True required=True
  • log Text
  • name Char
    default='/' readonly=True
  • result_code Char
  • state Selection
    selection=[('pending', 'Pending'), ('sent', 'Sent'), ('failed', 'Failed')]
  • type Selection
    selection=[('send', 'Send'), ('update', 'Update'), ('cancel', 'Cancel')]
  • update_date Datetime
Public methods (7)
  • cancel(self)
  • cancel_method(self)
  • create(self, vals)
    @api.model
  • send(self)
  • send_method(self)
  • update(self)
  • update_method(self)

New fields (3)
  • code Char
    readonly=True
  • name Char
  • sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' readonly=True required=True
Public methods (2)
  • create_integration(self, invoice)
  • integration_values(self, invoice)

New fields (14)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
  • invoice_state Selection
    readonly=True related='invoice_id.state'
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • invoice_refund(self)
    @api.multi
    Inject in the context the FacturaE refund values for being later added to the dictionary values for creating the refund.

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Factura-E file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requiere certificado en la ficha de la compañía' args: '¿Desea firmar digitalmente el fichero generado?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')], 'State'
Public methods (1)
  • create_facturae_file(self)
    @api.multi

New fields (3)
  • facturae_cert Binary
    filters='*.pfx' string='Certificado firma electrónica'
  • facturae_cert_password Char
    string='Contraseña certificado'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (8)
  • attach_invoice_as_annex Boolean
  • facturae Boolean
    args: 'Factura electrónica'
  • facturae_version Selection
    args: [('3_2', '3.2'), ('3_2_1', '3.2.1'), ('3_2_2', '3.2.2')]
  • invoice_integration_method_ids Many2many → account.invoice.integration.method
    comodel_name='account.invoice.integration.method' string='Integration Methods'
  • oficina_contable Char
    size=10 args: 'Oficina contable'
  • organo_gestor Char
    size=10 args: 'Órgano gestor'
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10 args: 'Unidad tramitadora'
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'state_id', 'country_id')
  • get_facturae_residence(self)
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_facturae
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), FactorLibre, Comunitea, Creu Blanca, ASR-OSS, Tecon
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Enric Tobella, Stéphane Bidoul (ACSONE), Jordi Ballester Alomar, Jordi Ballester, OCA Transbot, Sergio Teruel, oca-travis, Weblate, OCA-git-bot, oca-ci, Adrián Gómez
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_partner
    - account_payment_mode
    - account_banking_mandate
    - account_payment_order
OCA/community-data-files:
    - base_bank_from_iban
    - base_iso3166
OCA/l10n-spain:
    - l10n_es_partner
OCA/partner-contact:
    - partner_firstname
OCA/reporting-engine:
    - report_xml
    - report_qweb_parameter
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - base_iban
    - base_vat
    - l10n_es
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES OpenSSL
xmlsig
requests
pycountry
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
account_invoice_integration_form account.invoice.integration.form account.invoice.integration form New
account_invoice_integration_tree account.invoice.integration.tree account.invoice.integration tree New
address_contact address_contact ir.ui.view qweb New
administrative_center administrative_center ir.ui.view qweb New
entity entity ir.ui.view qweb New
facturae_header facturae_header ir.ui.view qweb New
invoice_form account.invoice.form account.invoice button Inherits account.invoice_form
template_facturae template_facturae ir.ui.view qweb New
view_account_invoice_integration_cancel account.invoice.integration.cancel.form account.invoice.integration.cancel form New
view_account_invoice_refund account.invoice.refund.form account.invoice.refund field Inherits account.view_account_invoice_refund
view_company_form res.company.form res.company notebook Inherits base.view_company_form
view_facturae_fields account.invoice.line.form (in l10n_es_facturae_fields) account.invoice.line form New
view_partner_form res.partner.form res.partner field Inherits base.view_partner_form
view_payment_mode_form_add_face_code payment.mode.form.add_face_code account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
view_tax_form account.tax.search account.tax field Inherits account.view_tax_form
wizard_create_facturae create.facturae.form create.facturae form New
Models touched (14)

New fields (8)
  • can_integrate Boolean
    compute='_compute_can_integrate'
  • correction_method Selection
    selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • facturae Boolean
    readonly=True related='partner_id.facturae'
  • facturae_end_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • facturae_refund_reason Selection
    selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
  • facturae_start_date Date
    readonly=True states={'draft': [('readonly', False)]}
  • integration_count Integer
    compute='_compute_integrations_count' copy=False default=0 string='# of Integrations'
  • integration_ids One2many → account.invoice.integration
    comodel_name='account.invoice.integration' copy=False inverse_name='invoice_id'
Public methods (7)
  • action_integrations(self)
    @api.multi
  • action_view_integrations(self)
    @api.multi
  • get_correction_method_string(self)
  • get_exchange_rate(self, euro_rate, currency_rate)
  • get_facturae(self, firmar_facturae)
  • get_refund_reason_string(self)
  • validate_facturae_fields(self)

New fields (16)
  • attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' string='Main file'
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' string='Annexes'
  • can_cancel Boolean
    default=False readonly=True
  • can_send Boolean
    default=True readonly=True
  • can_update Boolean
    default=False readonly=True
  • cancellation_description Char
    readonly=True
  • cancellation_status Selection
    readonly=True selection=[]
  • integration_description Char
    readonly=True
  • integration_status Selection
    readonly=True selection=[]
  • invoice_id Many2one → account.invoice
    comodel_name='account.invoice' readonly=True required=True
  • log_ids One2many → account.invoice.integration.log
    comodel_name='account.invoice.integration.log' inverse_name='integration_id'
  • method_id Many2one → account.invoice.integration.method
    comodel_name='account.invoice.integration.method' readonly=True required=True string='Method'
  • name Char
    default='/' readonly=True
  • register_number Char
    readonly=True
  • state Selection
    default='pending' readonly=True selection=[('pending', 'Pending'), ('sent', 'Sent'), ('cancelled', 'Cancelled'), ('failed', 'Failed')]
  • update_date Datetime
    readonly=True
Public methods (7)
  • cancel_values(self)
  • create(self, vals)
    @api.model
  • log_values(self)
  • send_action(self)
    @api.multi
  • send_values(self)
  • update_action(self)
    @api.multi
  • update_values(self)

New fields (1)
  • integration_id Many2one → account.invoice.integration
    comodel_name='account.invoice.integration'
Public methods (2)
  • cancel_integration(self)
    @api.multi
  • cancel_values(self)

New fields (8)
  • cancellation_motive Char
  • integration_id Many2one → account.invoice.integration
    comodel_name='account.invoice.integration' readonly=True required=True
  • log Text
  • name Char
    default='/' readonly=True
  • result_code Char
  • state Selection
    selection=[('pending', 'Pending'), ('sent', 'Sent'), ('failed', 'Failed')]
  • type Selection
    selection=[('send', 'Send'), ('update', 'Update'), ('cancel', 'Cancel')]
  • update_date Datetime
Public methods (7)
  • cancel(self)
  • cancel_method(self)
  • create(self, vals)
    @api.model
  • send(self)
  • send_method(self)
  • update(self)
  • update_method(self)

New fields (3)
  • code Char
    readonly=True
  • name Char
  • sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' readonly=True required=True
Public methods (2)
  • create_integration(self, invoice)
  • integration_values(self, invoice)

New fields (14)
  • facturae_end_date Date
  • facturae_file_date Date
  • facturae_file_reference Char
  • facturae_issuer_contract_date Date
  • facturae_issuer_contract_reference Char
  • facturae_issuer_transaction_date Date
  • facturae_issuer_transaction_reference Char
  • facturae_receiver_contract_date Date
  • facturae_receiver_contract_reference Char
  • facturae_receiver_transaction_date Date
  • facturae_receiver_transaction_reference Char
  • facturae_start_date Date
  • facturae_transaction_date Date
  • invoice_state Selection
    readonly=True related='invoice_id.state'
Public methods (1)
  • button_edit_facturae_fields(self)

New fields (2)
  • correction_method Selection
    default='02' selection=[('01', 'Rectificación íntegra'), ('02', 'Rectificación por diferencias'), ('03', 'Rectificación por descuento por volumen de operaciones durante un periodo'), ('04', 'Autorizadas por la Agencia Tributaria')]
  • refund_reason Selection
    default='10' selection=[('01', 'Número de la factura'), ('02', 'Serie de la factura'), ('03', 'Fecha expedición'), ('04', 'Nombre y apellidos/Razón social - Emisor'), ('05', 'Nombre y apellidos/Razón social - Receptor'), ('06', 'Identificación fiscal Emisor/Obligado'), ('07', 'Identificación fiscal Receptor'), ('08', 'Domicilio Emisor/Obligado'), ('09', 'Domicilio Receptor'), ('10', 'Detalle Operación'), ('11', 'Porcentaje impositivo a aplicar'), ('12', 'Cuota tributaria a aplicar'), ('13', 'Fecha/Periodo a aplicar'), ('14', 'Clase de factura'), ('15', 'Literales legales'), ('16', 'Base imponible'), ('80', 'Cálculo de cuotas repercutidas'), ('81', 'Cálculo de cuotas retenidas'), ('82', 'Base imponible modificada por devolución de envases/embalajes'), ('83', 'Base imponible modificada por descuentos y bonificaciones'), ('84', 'Base imponible modificada por resolución firme, judicial o administrativa'), ('85', 'Base imponible modificada cuotas repercutidas no satisfechas. Auto de declaración de concurso')]
Public methods (1)
  • invoice_refund(self)
    @api.multi

New fields (1)
  • facturae_code Selection
    default='04' selection=[('01', '[01] Al contado'), ('02', '[02] Recibo Domiciliado'), ('03', '[03] Recibo'), ('04', '[04] Transferencia'), ('05', '[05] Letra Aceptada'), ('06', '[06] Crédito Documentario'), ('07', '[07] Contrato Adjudicación'), ('08', '[08] Letra de cambio'), ('09', '[09] Pagaré a la Orden'), ('10', '[10] Pagaré No a la Orden'), ('11', '[11] Cheque'), ('12', '[12] Reposición'), ('13', '[13] Especiales'), ('14', '[14] Compensación'), ('15', '[15] Giro postal'), ('16', '[16] Cheque conformado'), ('17', '[17] Cheque bancario'), ('18', '[18] Pago contra reembolso'), ('19', '[19] Pago mediante tarjeta')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    default='01' selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (1)
  • facturae_code Selection
    selection=[('01', 'IVA: Impuesto sobre el valor añadido'), ('02', 'IPSI: Impuesto sobre la producción, los servicios y la importación'), ('03', 'IGIC: Impuesto general indirecto de Canarias'), ('04', 'IRPF: Impuesto sobre la Renta de las personas físicas'), ('05', 'Otro'), ('06', 'ITPAJD: Impuesto sobre transmisiones patrimoniales y actos jurídicos documentados'), ('07', 'IE: Impuestos especiales'), ('08', 'Ra: Renta aduanas'), ('09', 'IGTECM: Impuesto general sobre el tráfico de empresas que se aplica en Ceuta y Melilla'), ('10', 'IECDPCAC: Impuesto especial sobre los combustibles derivados del petróleo en la Comunidad Autonoma Canaria'), ('11', 'IIIMAB: Impuesto sobre las instalaciones que inciden sobre el medio ambiente en la Baleares'), ('12', 'ICIO: Impuesto sobre las construcciones, instalaciones y obras'), ('13', 'IMVDN: Impuesto municipal sobre las viviendas desocupadas en Navarra'), ('14', 'IMSN: Impuesto municipal sobre solares en Navarra'), ('15', 'IMGSN: Impuesto municipal sobre gastos suntuarios en Navarra'), ('16', 'IMPN: Impuesto municipal sobre publicidad en Navarra'), ('17', 'REIVA: Régimen especial de IVA para agencias de viajes'), ('18', 'REIGIC: Régimen especial de IGIC: para agencias deviajes'), ('19', 'REIPSI: Régimen especial de IPSI para agencias de viajes')] string='Facturae code'
Public methods (0)

No public methods.

New fields (5)
  • facturae Binary
    readonly=True args: 'Factura-E file'
  • facturae_fname Char
    size=64 args: 'File name'
  • firmar_facturae Boolean
    default=True help='Requiere certificado en la ficha de la compañía' args: '¿Desea firmar digitalmente el fichero generado?'
  • note Text
    args: 'Log'
  • state Selection
    default='first' readonly=True args: [('first', 'First'), ('second', 'Second')], 'State'
Public methods (1)
  • create_facturae_file(self)
    @api.multi

New fields (2)
  • facturae_cert Binary
    filters='*.pfx' string='Certificado firma electrónica'
  • facturae_cert_password Char
    string='Contraseña certificado'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • get_current_rate(self)

New fields (6)
  • facturae Boolean
    args: 'Factura electrónica'
  • invoice_integration_method_ids Many2many → account.invoice.integration.method
    comodel_name='account.invoice.integration.method' string='Integration Methods'
  • oficina_contable Char
    size=10 args: 'Oficina contable'
  • organo_gestor Char
    size=10 args: 'Órgano gestor'
  • organo_proponente Char
    size=10 args: 'Órgano proponente'
  • unidad_tramitadora Char
    size=10 args: 'Unidad tramitadora'
Public methods (2)
  • check_facturae(self)
    @api.constrains('facturae', 'vat', 'state_id', 'country_id')
  • get_facturae_residence(self)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/6.1/l10n_es_facturae
VERSION
VERSION 1.0
CATEGORY
CATEGORYLocalisation/Accounting
LICENSE
LICENSEGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Alejandro Sanchez
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Alejandro Sanchez
COMMITTERS
COMMITTERSAlexandre Fayolle
WEBSITE
WEBSITEwww.asr-oss.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
NOTA: NO ADAPTADO TODAVÍA A LA VERSIÓN 6.0
This module creates Factura-e files from invoices.
******* Module under development *******
Successfully passes format and account validation tests from AEAT: http://www11.mityc.es/FacturaE/ValidarCompleto

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
invoice_tree_l10n_ES1 account.invoice.tree.l10n_ES1 account.invoice field Inherits account.invoice_tree
invoice_tree_l10n_ES2 account.invoice.tree.l10n_ES2 account.invoice field Inherits account.invoice_tree
view_country_form_ext res.country.form_ext res.country form Inherits base.view_country_form
Models touched (0)

No models found for this module.