[FIX] l10n_es{_edi_facturae}{_adm_centers}: add administrative centers

Currently it's not possible to send facturae invoices through FACe,
since we did not include administrative centers in the XML.

This commit fixes that by:

- Introducing a new partner type for Administrative Centers, with the
  necessary fields
- Adding all Administrative Centers linked to a partner on the facturae
  electronic invoice

Since often the three required Administrative Centers (Fiscal, Receiver
and Payer) are the same, we allow the user to specify multiple roles
on an Administrative Center.

Demo data was also added for the Administrative Centers and updated to
pass the facturae validator.

For stable versions, we use a patch module to not break things.
This should be moved to the main module in master.

task-3599447

closes odoo/odoo#146675

X-original-commit: 7c4e846f023f92f48ee465008769848075757a29
Signed-off-by: William André (wan) <wan@odoo.com>
Signed-off-by: Dylan Kiss (dyki) <dyki@odoo.com>
This commit is contained in:
Dylan Kiss (dyki)
2023-12-19 09:36:55 +00:00
parent df18b57e53
commit 8533c7d86e
29 changed files with 1873 additions and 189 deletions
+1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="partner_demo_company_es" model="res.partner">
<field name="is_company" eval="True"/>
<field name="name">ES Company</field>
<field name="vat">ES59962470K</field>
<field name="street">A</field>
+1 -1
View File
@@ -8,7 +8,7 @@
'description': """
This module create the Facturae file required to send the invoices information to the General State Administrations.
It allows the export and signature of the signing of Facturae files.
The current version of Facturae supported is the 3.2.1
The current version of Facturae supported is the 3.2.2
for more informations, see https://www.facturae.gob.es/face/Paginas/FACE.aspx
""",
@@ -5,18 +5,18 @@
<template id="address_type">
<t t-if="partner_country_code == 'ESP'">
<AddressInSpain>
<Address t-out="', '.join(val for val in (partner.street, partner.street2) if val)"/>
<Address t-out="', '.join(val for val in (partner.street, partner.street2) if val)[:80]"/>
<PostCode t-out="str(partner.zip)"/>
<Town t-out="partner.city"/>
<Province t-out="partner.state_id.name if partner.state_id else partner.country_id.name"/>
<Town t-out="(partner.city or '')[:50]"/>
<Province t-out="partner.state_id.name[:20] if partner.state_id else partner.country_id.name[:20]"/>
<CountryCode t-out="partner_country_code"/>
</AddressInSpain>
</t>
<t t-else="">
<OverseasAddress>
<Address t-out="', '.join(val for val in (partner.street, partner.street2) if val)"/>
<PostCodeAndTown t-out="' '.join(var for var in (str(partner.zip), partner.city) if var)"/>
<Province t-out="partner.state_id.name if partner.state_id else partner.country_id.name"/>
<Address t-out="', '.join(val for val in (partner.street, partner.street2) if val)[:80]"/>
<PostCodeAndTown t-out="' '.join(var for var in (str(partner.zip), partner.city) if var)[:50]"/>
<Province t-out="partner.state_id.name[:20] if partner.state_id else partner.country_id.name[:20]"/>
<CountryCode t-out="partner_country_code"/>
</OverseasAddress>
</t>
@@ -25,17 +25,17 @@
<!-- Sub-template used for every instance of ContactDetails -->
<template id="contact_details_type">
<ContactDetails>
<Telephone t-out="partner_phone"/>
<WebAddress t-out="partner.website"/>
<ElectronicMail t-out="partner.email"/>
<Telephone t-out="(partner_phone or '')[:15]"/>
<WebAddress t-out="(partner.website or '')[:60]"/>
<ElectronicMail t-out="(partner.email or '')[:60]"/>
</ContactDetails>
</template>
<!-- Sub-template used for every instance of LegalEntityType -->
<template id="legal_entity_type">
<LegalEntity>
<CorporateName t-out="partner.name"/>
<TradeName t-out="partner.display_name"/>
<CorporateName t-out="partner.name[:80]"/>
<TradeName t-out="partner.display_name[:40]"/>
<t t-call="l10n_es_edi_facturae.address_type"/>
<t t-call="l10n_es_edi_facturae.contact_details_type"/>
</LegalEntity>
@@ -44,9 +44,9 @@
<!-- Sub-template used for every instance of IndividualType -->
<template id="individual_type">
<Individual>
<Name t-out="partner_name.get('firstname')"/>
<FirstSurname t-out="partner_name.get('surname')"/>
<SecondSurname t-out="partner_name.get('surname2')"/>
<Name t-out="(partner_name.get('firstname') or '')[:40]"/>
<FirstSurname t-out="(partner_name.get('surname') or '')[:40]"/>
<SecondSurname t-out="(partner_name.get('surname2') or '')[:40]"/>
<t t-call="l10n_es_edi_facturae.address_type"/>
<t t-call="l10n_es_edi_facturae.contact_details_type"/>
</Individual>
@@ -245,9 +245,9 @@
<!-- Main template used for the EDI -->
<template id="account_invoice_facturae_export">
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality t-out="Modality"/>
<InvoiceIssuerType t-out="'EM' if is_outstanding else 'RE'"/>
<Batch>
+651
View File
@@ -0,0 +1,651 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_es_edi_facturae
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~16.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-07 09:50+0000\n"
"PO-Revision-Date: 2023-12-07 10:52+0100\n"
"Last-Translator: Dylan Kiss <dyki@odoo.com>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.corrective_type
msgid "01"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.account_invoice_facturae_export
msgid "3.2.2"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__27
msgid "6-Packs"
msgstr "6-Packs"
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_account_move_send
msgid "Account Move Send"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__13
msgid "Applicable Date/Period"
msgstr "Fecha/Periodo a aplicar"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__12
msgid "Applicable Tax Amount"
msgstr "Cuota tributaria a aplicar"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__11
msgid "Applicable Tax Rate"
msgstr "Porcentaje impositivo a aplicar"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__10
msgid "Bags"
msgstr "Bolsas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__08
msgid "Barrels"
msgstr "Barriles"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__17
msgid "Bins"
msgstr "Cubos"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__12
msgid "Bottles, non-protected, cylindrical"
msgstr "Botellas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__06
msgid "Boxes"
msgstr "Cajas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__24
msgid "Bunches"
msgstr "Manojos"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__81
msgid "Calculation of tax inputs"
msgstr "Cálculo de cuotas retenidas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__80
msgid "Calculation of tax outputs"
msgstr "Cálculo de cuotas repercutidas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__13
msgid "Canisters"
msgstr "Botes"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__23
msgid "Cans, rectangular"
msgstr "Latas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__11
msgid "Carboys, non-protected"
msgstr "Bombonas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__19
msgid "Cases"
msgstr "Estuches"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__15
msgid "Centiliters"
msgstr "Centilitros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__16
msgid "Centimeters"
msgstr "Centímetros"
#. module: l10n_es_edi_facturae
#: model:ir.ui.menu,name:l10n_es_edi_facturae.menu_l10n_es_edi_facturae_root_certificates
msgid "Certificates"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.actions.act_window,name:l10n_es_edi_facturae.l10n_es_edi_facturae_certificate_action
msgid "Certificates for Facturae EDI invoices on Spain"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_res_company
msgid "Companies"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__company_id
msgid "Company"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_res_partner
msgid "Contact"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid ""
"Could not retrieve currency: %s. Did you enable the multicurrency option and "
"activate the currency?"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Could not retrieve the tax: %s %% for line '%s'."
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.actions.act_window,help:l10n_es_edi_facturae.l10n_es_edi_facturae_certificate_action
msgid "Create the first certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__create_uid
msgid "Created by"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Created from attachment in %s"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__create_date
msgid "Created on"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__33
msgid "Cubic meter"
msgstr "Metro cúbico"
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid ""
"Customer/Vendor could not be found and could not be created due to missing "
"data in the XML."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__date_end
msgid "Date End"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__date_start
msgid "Date Start"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__20
msgid "Demijohns, non-protected"
msgstr "Garrafas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__18
msgid "Dozens"
msgstr "Docenas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__31
msgid "Envelopes"
msgstr "Sobres"
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move_send.py:0
#, python-format
msgid "Errors occured while creating the EDI document (format: %s):"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_bank_statement_line__l10n_es_edi_facturae_xml_id
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move__l10n_es_edi_facturae_xml_id
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_payment__l10n_es_edi_facturae_xml_id
msgid "Facturae Attachment"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_l10n_es_edi_facturae_certificate
msgid "Facturae Digital Certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_res_company__l10n_es_edi_facturae_residence_type
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_res_partner__l10n_es_edi_facturae_residence_type
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_res_users__l10n_es_edi_facturae_residence_type
msgid "Facturae EDI Residency Type Code"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_res_company__l10n_es_edi_facturae_certificate_id
msgid "Facturae EDI signing certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_bank_statement_line__l10n_es_edi_facturae_xml_file
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move__l10n_es_edi_facturae_xml_file
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_payment__l10n_es_edi_facturae_xml_file
msgid "Facturae File"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.view_company_form_inherit_l10n_es_edi_facturae
msgid "Facturae signature certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move_send__l10n_es_edi_facturae_checkbox_xml
msgid "Generate Facturae edi file"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__21
msgid "Grams"
msgstr "Gramos"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__02
msgid "Hours"
msgstr "Horas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__id
msgid "ID"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__14
msgid "Invoice Class"
msgstr "Clase de factura"
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Invoice imported from Factura-E XML file."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__01
msgid "Invoice number"
msgstr "Número de la factura"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__02
msgid "Invoice serial number"
msgstr "Serie de la factura"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__03
msgid "Issue date"
msgstr "Fecha expedición"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__06
msgid "Issuer's Tax Identification Number"
msgstr "Identificación fiscal Emisor/Obligado"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__08
msgid "Issuer's address"
msgstr "Domicilio Emisor/Obligado"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__10
msgid "Item line"
msgstr "Detalle Operación"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__09
msgid "Jerricans, cylindrical"
msgstr "Bidones"
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__03
msgid "Kilograms"
msgstr "Kilogramos"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__22
msgid "Kilometers"
msgstr "Kilómetros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__36
msgid "Kilowatt-hour"
msgstr "Kilovatio por hora"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move_send__l10n_es_edi_facturae_enable_xml
msgid "L10N Es Edi Facturae Enable Xml"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__write_uid
msgid "Last Updated by"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__write_date
msgid "Last Updated on"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__15
msgid "Legal literals"
msgstr "Literales legales"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__04
msgid "Liters"
msgstr "Litros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__25
msgid "Meters"
msgstr "Metros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__26
msgid "Millimeters"
msgstr "Milímetros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__04
msgid "Name and surnames/Corporate name - Issuer (Sender)"
msgstr "Nombre y apellidos/Razón social - Emisor"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__05
msgid "Name and surnames/Corporate name - Receiver"
msgstr "Nombre y apellidos/Razón social - Receptor"
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid ""
"No valid certificate found for this company, Facturae EDI file will not be "
"signed.\n"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__05
msgid "Other"
msgstr "Otros"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__content
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__content
msgid "PFX Certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__28
msgid "Packages"
msgstr "Paquetes"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__password
msgid "Passphrase for the PFX certificate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__password
msgid "Password"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__29
msgid "Portions"
msgstr "Raciones"
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_uom_uom
msgid "Product Unit of Measure"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.view_account_move_reversal_inherit_l10n_es_edi_facturae
msgid "Reason"
msgstr "Motivo"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__07
msgid "Receiver's Tax Identification Number"
msgstr "Identificación fiscal Receptor"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__09
msgid "Receiver's address"
msgstr "Domicilio Receptor"
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.corrective_type
msgid "Rectificación modelo íntegro."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__30
msgid "Rolls"
msgstr "Rollos"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__34
msgid "Second"
msgstr "Segundo"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__serial_number
msgid "Serial Number"
msgstr "Número de serie"
#. module: l10n_es_edi_facturae
#: model:ir.ui.menu,name:l10n_es_edi_facturae.menu_l10n_es_edi_facturae_root
msgid "Spain Facturae EDI"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_uom_uom__l10n_es_edi_facturae_uom_code
msgid "Spanish EDI Units"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_bank_statement_line__l10n_es_edi_facturae_reason_code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move__l10n_es_edi_facturae_reason_code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move_reversal__l10n_es_edi_facturae_reason_code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_payment__l10n_es_edi_facturae_reason_code
msgid "Spanish Facturae EDI Reason Code"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_tax__l10n_es_edi_facturae_tax_type
msgid "Spanish Facturae EDI Tax Type"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.product_uom_categ_form_view_inherit_l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.product_uom_form_view_inherit_l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.product_uom_tree_view_inherit_l10n_es_edi_facturae
msgid "Spanish Facturae EDI type"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.view_tax_tree_inherit_l10n_es_edi_facturae
msgid "Spanish Tax Type"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_account_tax
msgid "Tax"
msgstr "Impuesto"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__16
msgid "Taxable Base"
msgstr "Base imponible"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__83
msgid "Taxable Base modified due to discounts and rebates"
msgstr "Base imponible modificada por descuentos y bonificaciones"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__84
msgid ""
"Taxable Base modified due to firm court ruling or administrative decision"
msgstr ""
"Base imponible modificada por resolución firme, judicial o administrativa"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__82
msgid "Taxable Base modified due to return of packages and packaging materials"
msgstr "Base imponible modificada por devolución de envases/embalajes"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__85
msgid ""
"Taxable Base modified due to unpaid outputs where there is a judgement "
"opening insolvency proceedings"
msgstr ""
"Base imponible modificada cuotas repercutidas no satisfechas. Auto de "
"declaración de concurso"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__14
msgid "Tetra Briks"
msgstr "Tetra Briks"
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/l10n_es_edi_facturae_certificate.py:0
#, python-format
msgid "The certificate is expired since %s"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "The company needs a set tax identification number or VAT number"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__date_end
msgid "The date on which the certificate expires"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__date_start
msgid "The date on which the certificate starts to be valid"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "The partner needs a set country"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "The partner needs a set tax identification number or VAT number"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "The product '%s' could not be found."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__serial_number
msgid "The serial number to add to electronic documents"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/l10n_es_edi_facturae_certificate.py:0
#, python-format
msgid ""
"There has been a problem with the certificate, some usual problems can be:\n"
"\t- The password given or the certificate are not valid.\n"
"\t- The certificate content is invalid."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__07
msgid "Trays, one layer no cover, plastic"
msgstr "Bandejas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__32
msgid "Tubs"
msgstr "Tarrinas"
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__01
msgid "Units"
msgstr "Unidades"
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.l10n_es_edi_facturae_certificate_form
msgid "Validity"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__35
msgid "Watt"
msgstr "Vatio"
@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.3alpha1+e\n"
"Project-Id-Version: Odoo Server saas~16.3+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-12 10:00+0000\n"
"PO-Revision-Date: 2023-05-12 10:00+0000\n"
"POT-Creation-Date: 2023-12-07 09:50+0000\n"
"PO-Revision-Date: 2023-12-07 09:50+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -22,7 +22,7 @@ msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.account_invoice_facturae_export
msgid "3.2.1"
msgid "3.2.2"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -40,6 +40,21 @@ msgstr ""
msgid "Account Move Send"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__13
msgid "Applicable Date/Period"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__12
msgid "Applicable Tax Amount"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__11
msgid "Applicable Tax Rate"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__10
msgid "Bags"
@@ -71,15 +86,13 @@ msgid "Bunches"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__80
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__80
msgid "Calculation of output quotas"
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__81
msgid "Calculation of tax inputs"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__81
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__81
msgid "Calculation of withholding taxes"
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__80
msgid "Calculation of tax outputs"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -137,6 +150,22 @@ msgstr ""
msgid "Contact"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid ""
"Could not retrieve currency: %s. Did you enable the multicurrency option and"
" activate the currency?"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Could not retrieve the tax: %s %% for line '%s'."
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.actions.act_window,help:l10n_es_edi_facturae.l10n_es_edi_facturae_certificate_action
msgid "Create the first certificate"
@@ -147,6 +176,13 @@ msgstr ""
msgid "Created by"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Created from attachment in %s"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__create_date
msgid "Created on"
@@ -157,6 +193,15 @@ msgstr ""
msgid "Cubic meter"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid ""
"Customer/Vendor could not be found and could not be created due to missing "
"data in the XML."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__date_end
msgid "Date End"
@@ -167,18 +212,6 @@ msgstr ""
msgid "Date Start"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__03
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__03
msgid "Date of issue"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__13
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__13
msgid "Date/Period to apply"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__20
msgid "Demijohns, non-protected"
@@ -262,28 +295,46 @@ msgstr ""
msgid "ID"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__14
msgid "Invoice Class"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "Invoice imported from Factura-E XML file."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__01
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__01
msgid "Invoice number"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__02
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__02
msgid "Invoice series"
msgid "Invoice serial number"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__14
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__14
msgid "Invoice type"
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__03
msgid "Issue date"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__06
msgid "Issuer's Tax Identification Number"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__08
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__08
msgid "Issuer/Oblige Address"
msgid "Issuer's address"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__10
msgid "Item line"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -306,6 +357,11 @@ msgstr ""
msgid "Kilometers"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__36
msgid "Kilowatt-hour"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,field_description:l10n_es_edi_facturae.field_account_move_send__l10n_es_edi_facturae_enable_xml
msgid "L10N Es Edi Facturae Enable Xml"
@@ -321,6 +377,11 @@ msgstr ""
msgid "Last Updated on"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__15
msgid "Legal literals"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__04
msgid "Liters"
@@ -338,14 +399,12 @@ msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__04
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__04
msgid "Name and surname/company name - Issuer"
msgid "Name and surnames/Corporate name - Issuer (Sender)"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__05
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__05
msgid "Name and surname/company name - Recipient"
msgid "Name and surnames/Corporate name - Receiver"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -398,10 +457,14 @@ msgstr ""
msgid "Reason"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__07
msgid "Receiver's Tax Identification Number"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__09
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__09
msgid "Receiving Address"
msgid "Receiver's address"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -459,67 +522,38 @@ msgstr ""
msgid "Spanish Tax Type"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__15
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__15
msgid "Statutory letters"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model,name:l10n_es_edi_facturae.model_account_tax
msgid "Tax"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__06
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__06
msgid "Tax identification Issuer/Oblige"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__07
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__07
msgid "Tax identification Receiver"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__11
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__12
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__11
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__12
msgid "Tax rate to be applied"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__16
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__16
msgid "Taxable amount"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__82
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__82
msgid "Taxable amount modified by return of containers/packaging"
msgid "Taxable Base"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__83
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__83
msgid "Taxable income modified by discounts and allowances"
msgid "Taxable Base modified due to discounts and rebates"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__84
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__84
msgid "Taxable income modified by final, judicial or administrative ruling"
msgid ""
"Taxable Base modified due to firm court ruling or administrative decision"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__82
msgid ""
"Taxable Base modified due to return of packages and packaging materials"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__85
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__85
msgid ""
"Taxable income modified by unpaid tax assessments. Order of declaration of "
"bankruptcy"
"Taxable Base modified due to unpaid outputs where there is a judgement "
"opening insolvency proceedings"
msgstr ""
#. module: l10n_es_edi_facturae
@@ -565,6 +599,13 @@ msgstr ""
msgid "The partner needs a set tax identification number or VAT number"
msgstr ""
#. module: l10n_es_edi_facturae
#. odoo-python
#: code:addons/l10n_es_edi_facturae/models/account_move.py:0
#, python-format
msgid "The product '%s' could not be found."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields,help:l10n_es_edi_facturae.field_l10n_es_edi_facturae_certificate__serial_number
msgid "The serial number to add to electronic documents"
@@ -580,12 +621,6 @@ msgid ""
"\t- The certificate content is invalid."
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move__l10n_es_edi_facturae_reason_code__10
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__account_move_reversal__l10n_es_edi_facturae_reason_code__10
msgid "Transaction Details"
msgstr ""
#. module: l10n_es_edi_facturae
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__07
msgid "Trays, one layer no cover, plastic"
@@ -610,18 +645,3 @@ msgstr ""
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae.selection__uom_uom__l10n_es_edi_facturae_uom_code__35
msgid "Watt"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.template_xades_signature
msgid "not(ancestor-or-self::ds:Signature)"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.template_xades_signature
msgid "text/xml"
msgstr ""
#. module: l10n_es_edi_facturae
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae.template_xades_signature
msgid "urn:oid:1.2.840.10003.5.109.10"
msgstr ""
@@ -57,28 +57,28 @@ class AccountMove(models.Model):
)
l10n_es_edi_facturae_reason_code = fields.Selection(
selection=[
('01', 'Invoice number'),
('02', 'Invoice series'),
('03', 'Date of issue'),
('04', 'Name and surname/company name - Issuer'),
('05', 'Name and surname/company name - Recipient'),
('06', 'Tax identification Issuer/Oblige'),
('07', 'Tax identification Receiver'),
('08', 'Issuer/Oblige Address'),
('09', 'Receiving Address'),
('10', 'Transaction Details'),
('11', 'Tax rate to be applied'),
('12', 'Tax rate to be applied'),
('13', 'Date/Period to apply'),
('14', 'Invoice type'),
('15', 'Statutory letters'),
('16', 'Taxable amount'),
('80', 'Calculation of output quotas'),
('81', 'Calculation of withholding taxes'),
('82', 'Taxable amount modified by return of containers/packaging'),
('83', 'Taxable income modified by discounts and allowances'),
('84', 'Taxable income modified by final, judicial or administrative ruling'),
('85', 'Taxable income modified by unpaid tax assessments. Order of declaration of bankruptcy'),
('01', "Invoice number"),
('02', "Invoice serial number"),
('03', "Issue date"),
('04', "Name and surnames/Corporate name - Issuer (Sender)"),
('05', "Name and surnames/Corporate name - Receiver"),
('06', "Issuer's Tax Identification Number"),
('07', "Receiver's Tax Identification Number"),
('08', "Issuer's address"),
('09', "Receiver's address"),
('10', "Item line"),
('11', "Applicable Tax Rate"),
('12', "Applicable Tax Amount"),
('13', "Applicable Date/Period"),
('14', "Invoice Class"),
('15', "Legal literals"),
('16', "Taxable Base"),
('80', "Calculation of tax outputs"),
('81', "Calculation of tax inputs"),
('82', "Taxable Base modified due to return of packages and packaging materials"),
('83', "Taxable Base modified due to discounts and rebates"),
('84', "Taxable Base modified due to firm court ruling or administrative decision"),
('85', "Taxable Base modified due to unpaid outputs where there is a judgement opening insolvency proceedings"),
], string='Spanish Facturae EDI Reason Code', default='10')
def _l10n_es_edi_facturae_get_default_enable(self):
@@ -41,4 +41,5 @@ class UoM(models.Model):
('33', 'Cubic meter'),
('34', 'Second'),
('35', 'Watt'),
('36', 'Kilowatt-hour')
], string='Spanish EDI Units', default="05", required=True)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>RE</InvoiceIssuerType>
<Batch>
@@ -261,11 +261,11 @@
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignatureProperties-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>SpcFoWamxWQCsYjqZ/lsru5Ia4MaKBVgXiUWgKKBh2s=</ds:DigestValue>
<ds:DigestValue>xWymfRVUSeZuRVPTaTbaEwKo2L5VLUDeqVugfVoaLqY=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>wwDtGZ3EpRH8tRKQ8lKgbpfDkE1Zmza9QHkjJDN1Nmw=</ds:DigestValue>
<ds:DigestValue>ARCif8tQIKagVfeHX4Fit5ZfK3mXQCPclQISywh7h44=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>___ignore___</ds:SignatureValue>
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
@@ -64,15 +64,15 @@
<InvoiceClass>OO</InvoiceClass>
<Corrective>
<InvoiceNumber>INV/2023/00001</InvoiceNumber>
<ReasonCode>10</ReasonCode>
<ReasonDescription>Transaction Details</ReasonDescription>
<TaxPeriod>
<StartDate>2023-01-01</StartDate>
<EndDate>2023-01-31</EndDate>
</TaxPeriod>
<CorrectionMethod>01</CorrectionMethod>
<CorrectionMethodDescription>Rectificación modelo íntegro.</CorrectionMethodDescription>
</Corrective>
<ReasonCode>10</ReasonCode>
<ReasonDescription>Item line</ReasonDescription>
<TaxPeriod>
<StartDate>2023-01-01</StartDate>
<EndDate>2023-01-31</EndDate>
</TaxPeriod>
<CorrectionMethod>01</CorrectionMethod>
<CorrectionMethodDescription>Rectificación modelo íntegro.</CorrectionMethodDescription>
</Corrective>
</InvoiceHeader>
<InvoiceIssueData>
<IssueDate>2023-01-01</IssueDate>
@@ -168,11 +168,11 @@
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignatureProperties-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>SpcFoWamxWQCsYjqZ/lsru5Ia4MaKBVgXiUWgKKBh2s=</ds:DigestValue>
<ds:DigestValue>xWymfRVUSeZuRVPTaTbaEwKo2L5VLUDeqVugfVoaLqY=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>wwDtGZ3EpRH8tRKQ8lKgbpfDkE1Zmza9QHkjJDN1Nmw=</ds:DigestValue>
<ds:DigestValue>ARCif8tQIKagVfeHX4Fit5ZfK3mXQCPclQISywh7h44=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>___ignore___</ds:SignatureValue>
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
@@ -257,15 +257,15 @@
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>ZLrDCYSAq93Xpv9PLeS4CSBh4htTOx5j4f7zH0K8ddI=</ds:DigestValue>
<ds:DigestValue>jmyIG4idEVMFXy59HSx1XJZPAjcjIBxf8CJzP4n8BVE=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignatureProperties-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>SpcFoWamxWQCsYjqZ/lsru5Ia4MaKBVgXiUWgKKBh2s=</ds:DigestValue>
<ds:DigestValue>xWymfRVUSeZuRVPTaTbaEwKo2L5VLUDeqVugfVoaLqY=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Document-da39a3ee5e6b4b0d3255bfef95601890afd80709">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>wwDtGZ3EpRH8tRKQ8lKgbpfDkE1Zmza9QHkjJDN1Nmw=</ds:DigestValue>
<ds:DigestValue>ARCif8tQIKagVfeHX4Fit5ZfK3mXQCPclQISywh7h44=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>___ignore___</ds:SignatureValue>
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.es/Facturae/2014/v3.2.1/Facturae">
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.1</SchemaVersion>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
@@ -5,30 +5,10 @@ class AccountMoveReversal(models.TransientModel):
_inherit = 'account.move.reversal'
l10n_es_edi_facturae_reason_code = fields.Selection(
selection=[
('01', 'Invoice number'),
('02', 'Invoice series'),
('03', 'Date of issue'),
('04', 'Name and surname/company name - Issuer'),
('05', 'Name and surname/company name - Recipient'),
('06', 'Tax identification Issuer/Oblige'),
('07', 'Tax identification Receiver'),
('08', 'Issuer/Oblige Address'),
('09', 'Receiving Address'),
('10', 'Transaction Details'),
('11', 'Tax rate to be applied'),
('12', 'Tax rate to be applied'),
('13', 'Date/Period to apply'),
('14', 'Invoice type'),
('15', 'Statutory letters'),
('16', 'Taxable amount'),
('80', 'Calculation of output quotas'),
('81', 'Calculation of withholding taxes'),
('82', 'Taxable amount modified by return of containers/packaging'),
('83', 'Taxable income modified by discounts and allowances'),
('84', 'Taxable income modified by final, judicial or administrative ruling'),
('85', 'Taxable income modified by unpaid tax assessments. Order of declaration of bankruptcy'),
], string='Spanish Facturae EDI Reason Code', default='10')
selection=lambda self: self.env['account.move']._fields['l10n_es_edi_facturae_reason_code']._description_selection(self.env),
string='Spanish Facturae EDI Reason Code',
default='10'
)
def reverse_moves(self, is_modify=False):
# Extends account_account
@@ -0,0 +1 @@
from . import models
@@ -0,0 +1,24 @@
{
'name': 'Spain - Facturae EDI - Administrative Centers Patch',
'version': '1.0',
'description': """
Patch module to fix the missing Administrative Centers in the Facturae EDI.
""",
'license': 'LGPL-3',
'category': 'Accounting/Localizations/EDI',
'depends': [
'l10n_es_edi_facturae',
],
'data': [
'data/l10n_es_edi_facturae_adm_centers.ac_role_type.csv',
'data/facturae_templates.xml',
'security/ir.model.access.csv',
'views/res_partner_views.xml',
],
'demo': [
'demo/l10n_es_edi_facturae_demo.xml',
],
'auto_install': True,
}
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Sub-template used for every instance of AdministrativeCentresType -->
<template id="administrative_centers_type">
<AdministrativeCentres>
<AdministrativeCentre t-foreach="administrative_centers" t-as="ac">
<CentreCode t-out="(ac.get('center_code') or '')[:10]"/>
<RoleTypeCode t-out="ac.get('role_type_code')"/>
<Name t-out="(ac.get('name') or '')[:40]"/>
<t t-call="l10n_es_edi_facturae.address_type">
<t t-set="partner" t-value="ac.get('partner')"/>
<t t-set="partner_country_code" t-value="ac.get('partner_country_code')"/>
</t>
<t t-call="l10n_es_edi_facturae.contact_details_type">
<t t-set="partner" t-value="ac.get('partner')"/>
<t t-set="partner_phone" t-value="ac.get('partner_phone')"/>
</t>
<PhysicalGLN t-out="(ac.get('physical_gln') or '')[:14]"/>
<LogicalOperationalPoint t-out="(ac.get('logical_operational_point') or '')[:14]"/>
</AdministrativeCentre>
</AdministrativeCentres>
</template>
<template id="business_type" inherit_id="l10n_es_edi_facturae.business_type">
<xpath expr="//t[@t-call='l10n_es_edi_facturae.tax_identification_type']" position="after">
<t t-call="l10n_es_edi_facturae_adm_centers.administrative_centers_type"/>
</xpath>
</template>
<template id="account_invoice_facturae_export" inherit_id="l10n_es_edi_facturae.account_invoice_facturae_export">
<xpath expr="//SellerParty//t[@t-set='partner_name']" position="after">
<t t-set="administrative_centers" t-value="self_party_administrative_centers if is_outstanding else other_party_administrative_centers"/>
</xpath>
<xpath expr="//BuyerParty//t[@t-set='partner_name']" position="after">
<t t-set="administrative_centers" t-value="other_party_administrative_centers if is_outstanding else self_party_administrative_centers"/>
</xpath>
</template>
</data>
</odoo>
@@ -0,0 +1,10 @@
"id","code","name"
"ac_role_type_01","01","Fiscal"
"ac_role_type_02","02","Receiver"
"ac_role_type_03","03","Payer"
"ac_role_type_04","04","Buyer"
"ac_role_type_05","05","Collector"
"ac_role_type_06","06","Seller"
"ac_role_type_07","07","Payment Receiver"
"ac_role_type_08","08","Collection Receiver"
"ac_role_type_09","09","Issuer"
1 id code name
2 ac_role_type_01 01 Fiscal
3 ac_role_type_02 02 Receiver
4 ac_role_type_03 03 Payer
5 ac_role_type_04 04 Buyer
6 ac_role_type_05 05 Collector
7 ac_role_type_06 06 Seller
8 ac_role_type_07 07 Payment Receiver
9 ac_role_type_08 08 Collection Receiver
10 ac_role_type_09 09 Issuer
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="partner_demo_bilbao_es" model="res.partner">
<field name="is_company" eval="True"/>
<field name="name">Ayuntamiento De Bilbao</field>
<field name="street">Plaza Ernesto Erkoreka, 1</field>
<field name="city">Bilbao</field>
<field name="country_id" ref="base.es"/>
<field name="state_id" ref="base.state_es_bi"/>
<field name="zip">48007</field>
<field name="vat">P4802400D</field>
<field name="email">info@bilbao.example.com</field>
<field name="website">www.bilbao.eus</field>
<field name="customer_rank" eval="1"/>
</record>
<record id="partner_demo_bilbao_ac_es" model="res.partner">
<field name="type">facturae_ac</field>
<field name="name">Departamento de Contabilidad</field>
<field name="street">Plaza Ernesto Erkoreka, 1</field>
<field name="city">Bilbao</field>
<field name="country_id" ref="base.es"/>
<field name="state_id" ref="base.state_es_bi"/>
<field name="zip">28701</field>
<field name="email">info@bilbao.example.com</field>
<field name="customer_rank" eval="1"/>
<field name="l10n_es_edi_facturae_ac_center_code">L01480209</field>
<field
name="l10n_es_edi_facturae_ac_role_type_ids"
eval="[(4, ref('l10n_es_edi_facturae_adm_centers.ac_role_type_01'), 0), (4, ref('l10n_es_edi_facturae_adm_centers.ac_role_type_02'), 0), (4, ref('l10n_es_edi_facturae_adm_centers.ac_role_type_03'), 0)]"
/>
<field name="parent_id" ref="l10n_es_edi_facturae_adm_centers.partner_demo_bilbao_es"/>
</record>
</data>
</odoo>
@@ -0,0 +1,255 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_es_edi_facturae
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~16.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-07 09:51+0000\n"
"PO-Revision-Date: 2023-12-07 10:54+0100\n"
"Last-Translator: Dylan Kiss <dyki@odoo.com>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__type
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__type
msgid ""
"- Contact: Use this to organize the contact details of employees of a given "
"company (e.g. CEO, CFO, ...).\n"
"- Invoice Address: Preferred address for all invoices. Selected by default "
"when you invoice an order that belongs to this company.\n"
"- Delivery Address: Preferred address for all deliveries. Selected by "
"default when you deliver an order that belongs to this company.\n"
"- Private: Private addresses are only visible by authorized users and "
"contain sensitive data (employee home addresses, ...).\n"
"- Other: Other address for the company (e.g. subsidiary, ...)"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae_adm_centers.view_partner_form_inherit_l10n_es_edi_facturae
msgid ""
"<span>Administrative Center for Spain Public Administrations. Used in "
"Spanish electronic invoices.</span>"
msgstr ""
"<span>Centro Administrativo de Administraciones Públicas de España. "
"Utilizado en facturas electrónicas españolas.</span>"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__type
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__type
msgid "Address Type"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type
msgid "Administrative Center Role Type"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_04
msgid "Buyer"
msgstr "Comprador"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_center_code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_center_code
msgid "Code"
msgstr "Código"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_logical_operational_point
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_logical_operational_point
msgid ""
"Code identifying the company. Barcode of 13 standard positions. Codes are "
"registered in Spain by AECOC. The code is made up of the country code (2 "
"positions) Spain is '84' + Company code (5 positions) + the remaining "
"positions. The last one is the product + check digit."
msgstr ""
"Punto Lógico Operacional. Código identificativo de la Empresa. Código de "
"barras de 13 posiciones estándar. Valores registrados por AECOC. Recoge el "
"código de País (2p) España es ’84’ + Empresa (5p) + los restantes - el "
"último es el producto + dígito de control."
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_center_code
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_center_code
msgid "Code of the issuing department."
msgstr "Número del Departamento Emisor."
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_08
msgid "Collection Receiver"
msgstr "Receptor del cobro"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_05
msgid "Collector"
msgstr "Cobrador"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_res_partner
msgid "Contact"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__create_uid
msgid "Created by"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__create_date
msgid "Created on"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae_adm_centers.selection__res_partner__type__facturae_ac
msgid "FACe Center"
msgstr "Centro FACe"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_01
msgid "Fiscal"
msgstr "Fiscal"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__id
msgid "ID"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_physical_gln
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_physical_gln
msgid ""
"Identification of the connection point to the VAN EDI (Global Location "
"Number). Barcode of 13 standard positions. Codes are registered in Spain by "
"AECOC. The code is made up of the country code (2 positions) Spain is '84' + "
"Company code (5 positions) + the remaining positions. The last one is the "
"product + check digit."
msgstr ""
"GLN Físico. Identificación del punto de conexión a la VAN EDI (Global "
"Location Number). Código de barras de 13 posiciones estándar. Valores "
"registrados por AECOC. Recoge el código de País (2p) España es ’84’ + "
"Empresa (5p) + los restantes - el último es el producto + dígito de control."
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_09
msgid "Issuer"
msgstr "Emisor"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_role_type_ids
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_role_type_ids
msgid ""
"It indicates the role played by the Operational Point defined as a Workplace/"
"Department.\n"
"These functions are:\n"
"- Receiver: Workplace associated to the recipient's tax identification "
"number where the invoice will be received.\n"
"- Payer: Workplace associated to the recipient's tax identification number "
"responsible for paying the invoice.\n"
"- Buyer: Workplace associated to the recipient's tax identification number "
"who issued the purchase order.\n"
"- Collector: Workplace associated to the issuer's tax identification number "
"responsible for handling the collection.\n"
"- Fiscal: Workplace associated to the recipient's tax identification number, "
"where an Operational Point mailbox is shared by different client companies "
"with different tax identification numbers and it is necessary to "
"differentiate between where the message is received (shared letterbox) and "
"the workplace where it must be stored (recipient company)."
msgstr ""
"Indica la función de un Punto Operacional (P.O.) definido como Centro/"
"Departamento.\n"
"Estas funciones son:\n"
"- Receptor: Centro del NIF receptor destinatario de la factura..\n"
"- Pagador: Centro del NIF receptor responsable de pagar la factura.\n"
"- Comprador: Centro del NIF receptor que emitió el pedido.\n"
"- Cobrador: Centro del NIF emisor responsable de gestionar el cobro.\n"
"- Fiscal: Centro del NIF receptor de las facturas, cuando un P.O. buzón es "
"compartido por varias empresas clientes con diferentes NIF.s y es necesario "
"diferenciar el receptor del mensaje (buzón común) del lugar donde debe "
"depositarse (empresa destinataria)."
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__write_uid
msgid "Last Updated by"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__write_date
msgid "Last Updated on"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_logical_operational_point
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_logical_operational_point
msgid "Logical Operational Point"
msgstr "Punto Lógico Operacional"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__name
msgid "Name"
msgstr "Nombre"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_03
msgid "Payer"
msgstr "Pagador"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_07
msgid "Payment Receiver"
msgstr "Receptor del pago"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_physical_gln
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_physical_gln
msgid "Physical GLN"
msgstr "GLN Físico"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_02
msgid "Receiver"
msgstr "Receptor"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_role_type_ids
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_role_type_ids
msgid "Roles"
msgstr "Roles"
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_06
msgid "Seller"
msgstr "Vendedor"
#. module: l10n_es_edi_facturae_adm_centers
#. odoo-python
#: code:addons/l10n_es_edi_facturae_adm_centers/models/res_partner.py:0
#, python-format
msgid "The Logical Operational Point entered is not valid."
msgstr "El Punto Lógico Operacional ingresado no es válido."
#. module: l10n_es_edi_facturae_adm_centers
#. odoo-python
#: code:addons/l10n_es_edi_facturae_adm_centers/models/res_partner.py:0
#, python-format
msgid "The Physical GLN entered is not valid."
msgstr "El GLN Físico ingresado no es válido."
@@ -0,0 +1,219 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_es_edi_facturae_adm_centers
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~16.3+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-07 09:51+0000\n"
"PO-Revision-Date: 2023-12-07 09:51+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__type
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__type
msgid ""
"- Contact: Use this to organize the contact details of employees of a given company (e.g. CEO, CFO, ...).\n"
"- Invoice Address: Preferred address for all invoices. Selected by default when you invoice an order that belongs to this company.\n"
"- Delivery Address: Preferred address for all deliveries. Selected by default when you deliver an order that belongs to this company.\n"
"- Private: Private addresses are only visible by authorized users and contain sensitive data (employee home addresses, ...).\n"
"- Other: Other address for the company (e.g. subsidiary, ...)"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model_terms:ir.ui.view,arch_db:l10n_es_edi_facturae_adm_centers.view_partner_form_inherit_l10n_es_edi_facturae
msgid ""
"<span>Administrative Center for Spain Public Administrations. Used in "
"Spanish electronic invoices.</span>"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__type
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__type
msgid "Address Type"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type
msgid "Administrative Center Role Type"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_04
msgid "Buyer"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_center_code
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_center_code
msgid "Code"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_logical_operational_point
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_logical_operational_point
msgid ""
"Code identifying the company. Barcode of 13 standard positions. Codes are "
"registered in Spain by AECOC. The code is made up of the country code (2 "
"positions) Spain is '84' + Company code (5 positions) + the remaining "
"positions. The last one is the product + check digit."
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_center_code
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_center_code
msgid "Code of the issuing department."
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_08
msgid "Collection Receiver"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_05
msgid "Collector"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_res_partner
msgid "Contact"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__create_uid
msgid "Created by"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__create_date
msgid "Created on"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields.selection,name:l10n_es_edi_facturae_adm_centers.selection__res_partner__type__facturae_ac
msgid "FACe Center"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_01
msgid "Fiscal"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__id
msgid "ID"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_physical_gln
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_physical_gln
msgid ""
"Identification of the connection point to the VAN EDI (Global Location "
"Number). Barcode of 13 standard positions. Codes are registered in Spain by "
"AECOC. The code is made up of the country code (2 positions) Spain is '84' +"
" Company code (5 positions) + the remaining positions. The last one is the "
"product + check digit."
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_09
msgid "Issuer"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_role_type_ids
#: model:ir.model.fields,help:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_role_type_ids
msgid ""
"It indicates the role played by the Operational Point defined as a Workplace/Department.\n"
"These functions are:\n"
"- Receiver: Workplace associated to the recipient's tax identification number where the invoice will be received.\n"
"- Payer: Workplace associated to the recipient's tax identification number responsible for paying the invoice.\n"
"- Buyer: Workplace associated to the recipient's tax identification number who issued the purchase order.\n"
"- Collector: Workplace associated to the issuer's tax identification number responsible for handling the collection.\n"
"- Fiscal: Workplace associated to the recipient's tax identification number, where an Operational Point mailbox is shared by different client companies with different tax identification numbers and it is necessary to differentiate between where the message is received (shared letterbox) and the workplace where it must be stored (recipient company)."
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model,name:l10n_es_edi_facturae_adm_centers.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__write_uid
msgid "Last Updated by"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__write_date
msgid "Last Updated on"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_logical_operational_point
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_logical_operational_point
msgid "Logical Operational Point"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_l10n_es_edi_facturae_adm_centers_ac_role_type__name
msgid "Name"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_03
msgid "Payer"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_07
msgid "Payment Receiver"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_physical_gln
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_physical_gln
msgid "Physical GLN"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_02
msgid "Receiver"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_partner__l10n_es_edi_facturae_ac_role_type_ids
#: model:ir.model.fields,field_description:l10n_es_edi_facturae_adm_centers.field_res_users__l10n_es_edi_facturae_ac_role_type_ids
msgid "Roles"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#: model:l10n_es_edi_facturae_adm_centers.ac_role_type,name:l10n_es_edi_facturae_adm_centers.ac_role_type_06
msgid "Seller"
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#. odoo-python
#: code:addons/l10n_es_edi_facturae_adm_centers/models/res_partner.py:0
#, python-format
msgid "The Logical Operational Point entered is not valid."
msgstr ""
#. module: l10n_es_edi_facturae_adm_centers
#. odoo-python
#: code:addons/l10n_es_edi_facturae_adm_centers/models/res_partner.py:0
#, python-format
msgid "The Physical GLN entered is not valid."
msgstr ""
@@ -0,0 +1,2 @@
from . import account_move
from . import res_partner
@@ -0,0 +1,37 @@
from odoo import models
from odoo.addons.l10n_es_edi_facturae.models.account_move import COUNTRY_CODE_MAP, PHONE_CLEAN_TABLE
class AccountMove(models.Model):
_inherit = 'account.move'
def _l10n_es_edi_facturae_get_administrative_centers(self, partner):
self.ensure_one()
administrative_centers = []
for ac in partner.child_ids.filtered(lambda p: p.type == 'facturae_ac'):
ac_template = {
'center_code': ac.l10n_es_edi_facturae_ac_center_code,
'name': ac.name,
'partner': ac,
'partner_country_code': COUNTRY_CODE_MAP[ac.country_code],
'partner_phone': ac.phone.translate(PHONE_CLEAN_TABLE) if ac.phone else False,
'physical_gln': ac.l10n_es_edi_facturae_ac_physical_gln,
'logical_operational_point': ac.l10n_es_edi_facturae_ac_logical_operational_point,
}
# An administrative center can have multiple roles, each of which should be reported separately.
for role in ac.l10n_es_edi_facturae_ac_role_type_ids or [self.env['l10n_es_edi_facturae_adm_centers.ac_role_type']]:
administrative_centers.append({
**ac_template,
'role_type_code': role.code,
})
return administrative_centers
def _l10n_es_edi_facturae_export_facturae(self):
template_values, signature_values = super()._l10n_es_edi_facturae_export_facturae()
template_values['self_party_administrative_centers'] = self._l10n_es_edi_facturae_get_administrative_centers(
template_values.get('self_party')
)
template_values['other_party_administrative_centers'] = self._l10n_es_edi_facturae_get_administrative_centers(
template_values.get('other_party')
)
return template_values, signature_values
@@ -0,0 +1,61 @@
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
from odoo.tools import check_barcode_encoding
class AcRoleType(models.Model):
_name = 'l10n_es_edi_facturae_adm_centers.ac_role_type'
_description = 'Administrative Center Role Type'
code = fields.Char(required=True)
name = fields.Char(required=True, translate=True)
class Partner(models.Model):
_inherit = 'res.partner'
type = fields.Selection(selection_add=[('facturae_ac', 'FACe Center'), ('other',)])
l10n_es_edi_facturae_ac_center_code = fields.Char(string='Code', size=10, help="Code of the issuing department.")
l10n_es_edi_facturae_ac_role_type_ids = fields.Many2many(
string='Roles',
comodel_name='l10n_es_edi_facturae_adm_centers.ac_role_type',
help="It indicates the role played by the Operational Point defined as a Workplace/Department.\n"
"These functions are:\n"
"- Receiver: Workplace associated to the recipient's tax identification number where the invoice will be received.\n"
"- Payer: Workplace associated to the recipient's tax identification number responsible for paying the invoice.\n"
"- Buyer: Workplace associated to the recipient's tax identification number who issued the purchase order.\n"
"- Collector: Workplace associated to the issuer's tax identification number responsible for handling the collection.\n"
"- Fiscal: Workplace associated to the recipient's tax identification number, where an Operational Point mailbox is shared "
"by different client companies with different tax identification numbers and it is necessary to differentiate between "
"where the message is received (shared letterbox) and the workplace where it must be stored (recipient company).",
)
l10n_es_edi_facturae_ac_physical_gln = fields.Char(
string='Physical GLN',
size=14,
help="Identification of the connection point to the VAN EDI (Global Location Number). Barcode of 13 standard positions. "
"Codes are registered in Spain by AECOC. The code is made up of the country code (2 positions) Spain is '84' "
"+ Company code (5 positions) + the remaining positions. The last one is the product + check digit."
)
l10n_es_edi_facturae_ac_logical_operational_point = fields.Char(
string='Logical Operational Point',
size=14,
help="Code identifying the company. Barcode of 13 standard positions. Codes are registered in Spain by AECOC. "
"The code is made up of the country code (2 positions) Spain is '84' + Company code (5 positions) + the remaining positions. "
"The last one is the product + check digit.",
)
@api.constrains('l10n_es_edi_facturae_ac_physical_gln')
def _validate_l10n_es_edi_facturae_ac_physical_gln(self):
for p in self:
if not p.l10n_es_edi_facturae_ac_physical_gln:
continue
if not check_barcode_encoding(p.l10n_es_edi_facturae_ac_physical_gln, 'ean13'):
raise ValidationError(_('The Physical GLN entered is not valid.'))
@api.constrains('l10n_es_edi_facturae_ac_logical_operational_point')
def _validate_l10n_es_edi_facturae_ac_logical_operational_point(self):
for p in self:
if not p.l10n_es_edi_facturae_ac_logical_operational_point:
continue
if not check_barcode_encoding(p.l10n_es_edi_facturae_ac_logical_operational_point, 'ean13'):
raise ValidationError(_('The Logical Operational Point entered is not valid.'))
@@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
l10n_es_edi_facturae_adm_centers.access_l10n_es_edi_facturae_ac_role_type_invoice,access_l10n_es_edi_facturae_ac_role_type,l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type,account.group_account_invoice,1,0,0,0
l10n_es_edi_facturae_adm_centers.access_l10n_es_edi_facturae_ac_role_type_readonly,access_l10n_es_edi_facturae_ac_role_type,l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type,account.group_account_readonly,1,0,0,0
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 l10n_es_edi_facturae_adm_centers.access_l10n_es_edi_facturae_ac_role_type_invoice access_l10n_es_edi_facturae_ac_role_type l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type account.group_account_invoice 1 0 0 0
3 l10n_es_edi_facturae_adm_centers.access_l10n_es_edi_facturae_ac_role_type_readonly access_l10n_es_edi_facturae_ac_role_type l10n_es_edi_facturae_adm_centers.model_l10n_es_edi_facturae_adm_centers_ac_role_type account.group_account_readonly 1 0 0 0
@@ -0,0 +1 @@
from . import test_edi_xml
@@ -0,0 +1,267 @@
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<fac:Facturae xmlns:fac="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml">
<FileHeader>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
<BatchIdentifier>INV/2023/00001</BatchIdentifier>
<InvoicesCount>1</InvoicesCount>
<TotalInvoicesAmount>
<TotalAmount>121.00</TotalAmount>
</TotalInvoicesAmount>
<TotalOutstandingAmount>
<TotalAmount>121.00</TotalAmount>
</TotalOutstandingAmount>
<TotalExecutableAmount>
<TotalAmount>121.00</TotalAmount>
</TotalExecutableAmount>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
</Batch>
</FileHeader>
<Parties>
<SellerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>ES59962470K</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>company_1_data</CorporateName>
<TradeName>company_1_data</TradeName>
<AddressInSpain>
<Address>C. de Embajadores, 68-116</Address>
<PostCode>12345</PostCode>
<Town>Madrid</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</SellerParty>
<BuyerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>P2813400E</TaxIdentificationNumber>
</TaxIdentification>
<AdministrativeCentres>
<AdministrativeCentre>
<CentreCode>L01281343</CentreCode>
<RoleTypeCode>01</RoleTypeCode>
<Name>Intervención Municipal</Name>
<AddressInSpain>
<Address>Plaza de la Constitución, 1</Address>
<PostCode>28701</PostCode>
<Town>San Sebastián de los Reyes</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
<AdministrativeCentre>
<CentreCode>L01281343</CentreCode>
<RoleTypeCode>02</RoleTypeCode>
<Name>Intervención Municipal</Name>
<AddressInSpain>
<Address>Plaza de la Constitución, 1</Address>
<PostCode>28701</PostCode>
<Town>San Sebastián de los Reyes</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
<AdministrativeCentre>
<CentreCode>L01281343</CentreCode>
<RoleTypeCode>03</RoleTypeCode>
<Name>Intervención Municipal</Name>
<AddressInSpain>
<Address>Plaza de la Constitución, 1</Address>
<PostCode>28701</PostCode>
<Town>San Sebastián de los Reyes</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
</AdministrativeCentres>
<LegalEntity>
<CorporateName>Ayuntamiento de San Sebastián de los Reyes</CorporateName>
<TradeName>Ayuntamiento de San Sebastián de los Rey</TradeName>
<AddressInSpain>
<Address>Plaza de la Constitución, 1</Address>
<PostCode>28701</PostCode>
<Town>San Sebastián de los Reyes</Town>
<Province>Madrid</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</BuyerParty>
</Parties>
<Invoices>
<Invoice>
<InvoiceHeader>
<InvoiceNumber>INV/2023/00001</InvoiceNumber>
<InvoiceDocumentType>FC</InvoiceDocumentType>
<InvoiceClass>OO</InvoiceClass>
</InvoiceHeader>
<InvoiceIssueData>
<IssueDate>2023-01-01</IssueDate>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
<TaxCurrencyCode>EUR</TaxCurrencyCode>
<LanguageName>en</LanguageName>
</InvoiceIssueData>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.000</TaxRate>
<TaxableBase>
<TotalAmount>100.00</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>21.00</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
<InvoiceTotals>
<TotalGrossAmount>100.00</TotalGrossAmount>
<TotalGrossAmountBeforeTaxes>100.00</TotalGrossAmountBeforeTaxes>
<TotalTaxOutputs>21.00</TotalTaxOutputs>
<TotalTaxesWithheld>0.00</TotalTaxesWithheld>
<InvoiceTotal>121.00</InvoiceTotal>
<TotalOutstandingAmount>121.00</TotalOutstandingAmount>
<TotalExecutableAmount>121.00</TotalExecutableAmount>
</InvoiceTotals>
<Items>
<InvoiceLine>
<ItemDescription>product_a</ItemDescription>
<Quantity>1.0</Quantity>
<UnitOfMeasure>01</UnitOfMeasure>
<UnitPriceWithoutTax>100.00</UnitPriceWithoutTax>
<TotalCost>100.00</TotalCost>
<GrossAmount>100.00</GrossAmount>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.000</TaxRate>
<TaxableBase>
<TotalAmount>100.00</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>21.00</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
</InvoiceLine>
</Items>
</Invoice>
</Invoices>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="" Id="Reference-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>urompTUIWaKzL528cuOOuM8Lh/fUUgxrngI3Fg2r++s=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignatureProperties-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>9OTHwuw/VnkBZI/MGreCHPV82wcp/TpojzPYzsxH0zs=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>srbcYkX+wYhxw3fk/CIkmKpiHUIjC4LiVyUCoGGJzNQ=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>QeorE6zhXkiH/SYsdKaZDCGyvix4d3oJOV+v6BB4y8Sz9ULy2oR4Rgu0hCZK306rwLmT01UmaDMK
Tr8c7FkiUWAfYO3WjSiDRZxzgffdHCnOYKjh6KBjJKBjoaqyZaWNgNr1E+aSnNicBO2EVIYdP956
qr9nzgwwQLLofV35mTa3+TbI3G3nA7BJ4jHYyvgiBjpH7so6r8OVXmlGlx8u1Ng+ThRgR2O8Llx8
EkVFnnJcmzKBdiIpT3hxWe2AsQHhOUOraF9ZWl5WMAtZBsX6MheIYqEHesSHhNM9ZlzQhBUjkLVf
tV4OWdhjYhltzlfvD50BsQExAz59uD8KmBkEUg==
</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfo-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<ds:X509Data>
<ds:X509Certificate>MIID8jCCAtqgAwIBAgIUYBl+61DsTkNyyUFGveskbaGP/SkwDQYJKoZIhvcNAQELBQAwgYoxCzAJ
BgNVBAYTAkJFMRIwEAYDVQQIDAlXYWxsb25uaWExEjAQBgNVBAcMCVJhbWlsbGllczENMAsGA1UE
CgwET2RvbzEMMAoGA1UECwwDUiZEMRgwFgYDVQQDDA9ydW5ib3Qub2Rvby5jb20xHDAaBgkqhkiG
9w0BCQEWDWluZm9Ab2Rvby5jb20wHhcNMjIwNDI2MDczMTUwWhcNMjMwNDI2MDczMTUwWjCBlTEL
MAkGA1UEBhMCQkUxEjAQBgNVBAgMCVdhbGxvbm5pYTESMBAGA1UEBwwJUmFtaWxsaWVzMRIwEAYD
VQQKDAlPZG9vIFMuQS4xGTAXBgNVBAsMEFImRCAtIEFjY291bnRpbmcxETAPBgNVBAMMCG9kb28u
Y29tMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9kb28uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAtGUbyNJrA3yyOC01gIMR1A1rWIHCHD+afLCLCddBDZwC4Q034yFBuMqQFNWaxxLc
9s+wFbNZqu5D7rynN3qXvWJj40VZxygoV/09y71IhaspuAZ0rdzYsqjDmTJiPSrEl6iydF2eq6sJ
4J0ItCUFc2e88B25wz7esslAN249C20oQj5ZiGifR4P0CRQSmDy0SPYZGxTurVwtq6IsYbOqEw8/
Wqx6ApOltperFX88DZCdbY59ZedqQrGQh2Z5Au7h/8nhmdbpz7Ixw2zocxVigR0ClNDpKKxvolX1
virQpICkfWcAaWAYAMCL4KhvISclysD+5juDLpGCLHPtKxBXTQIDAQABo0MwQTAfBgNVHSMEGDAW
gBTmxEG4Ub7b5wRXqWea94Vs1hB13zAJBgNVHRMEAjAAMBMGA1UdEQQMMAqCCG9kb28uY29tMA0G
CSqGSIb3DQEBCwUAA4IBAQAFLvTlSELTVWRfIlGthoFOmkv8MrwJuo8y7qTmvsFXeA2hZtsPdNxx
iwAGPobiUO0GCEPUFKZ7NksQa7DAKGXfb5RSwfujDfEMAhgi00+wF1VIKeKqnGt4idzCr+2NtiQY
e9oK+Ee7o82llnNFwbWvRKx55lhHW3bwN6Tl31qUYbxacJyA9z5sQpe2zImWMVsm4g7OAjzg3Cn2
0TFu+0XekB892n7DYh4gHiMWaMOVYmi/aEWLSqxMlbiHQr75FmPftozFvTxW26jU3ALhq+yXPVa4
lg4r/h6HH5TbtSjYzTSJ4MvMyrECgIQYf0zsS4D6K/GvCZbu7LKHRwuC0fis
</ds:X509Certificate>
</ds:X509Data>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>tGUbyNJrA3yyOC01gIMR1A1rWIHCHD+afLCLCddBDZwC4Q034yFBuMqQFNWaxxLc9s+wFbNZqu5D
7rynN3qXvWJj40VZxygoV/09y71IhaspuAZ0rdzYsqjDmTJiPSrEl6iydF2eq6sJ4J0ItCUFc2e8
8B25wz7esslAN249C20oQj5ZiGifR4P0CRQSmDy0SPYZGxTurVwtq6IsYbOqEw8/Wqx6ApOltper
FX88DZCdbY59ZedqQrGQh2Z5Au7h/8nhmdbpz7Ixw2zocxVigR0ClNDpKKxvolX1virQpICkfWcA
aWAYAMCL4KhvISclysD+5juDLpGCLHPtKxBXTQ==
</ds:Modulus>
<ds:Exponent>AQAB
</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<xades:SignedProperties Id="SignatureProperties-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<xades:SignedSignatureProperties>
<xades:SigningTime>2023-01-01T00:00:00</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FHf2lN+5FALNa7JXV2+pByL92/dr8LeCVhpItYic5oA=</ds:DigestValue>
</xades:CertDigest>
<xades:IssuerSerial>
<ds:X509IssuerName>C=BE, CN=runbot.odoo.com, L=Ramillies, O=Odoo, OU=R&amp;D, ST=Wallonnia</ds:X509IssuerName>
<ds:X509SerialNumber>548631688851000697209704649636588277530075594025</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
<xades:SignaturePolicyIdentifier>
<xades:SignaturePolicyId>
<xades:SigPolicyId>
<xades:Identifier>http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf</xades:Identifier>
<xades:Description>Política de firma electrónica para facturación electrónica con formato Facturae</xades:Description>
</xades:SigPolicyId>
<xades:SigPolicyHash>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>a/vDoueJq9zxWGCFwdsXdlXtkFSEek4XVtmlQCEDaE8=</ds:DigestValue>
</xades:SigPolicyHash>
<xades:SigPolicyQualifiers>
<xades:SigPolicyQualifier>
<xades:SPURI>http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf</xades:SPURI>
</xades:SigPolicyQualifier>
</xades:SigPolicyQualifiers>
</xades:SignaturePolicyId>
</xades:SignaturePolicyIdentifier>
</xades:SignedSignatureProperties>
<xades:SignedDataObjectProperties>
<xades:DataObjectFormat ObjectReference="#Reference-Document-d6c35cd34a32582d4a379bd7e7c26ac95b3d2974">
<xades:Description/>
<xades:ObjectIdentifier>
<xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier>
<xades:Description/>
</xades:ObjectIdentifier>
<xades:MimeType>text/xml</xades:MimeType>
<xades:Encoding/>
</xades:DataObjectFormat>
</xades:SignedDataObjectProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</fac:Facturae>
@@ -0,0 +1,54 @@
import lxml
from freezegun.api import freeze_time
from odoo.fields import Command
from odoo.tests import tagged
from odoo.tools import file_open
from odoo.addons.l10n_es_edi_facturae.tests.test_edi_xml import TestEdiFacturaeXmls
@tagged('post_install_l10n', 'post_install', '-at_install')
class TestEdiFacturaeAdmCentersXmls(TestEdiFacturaeXmls):
@classmethod
def setUpClass(cls, chart_template_ref='es_full'):
super().setUpClass(chart_template_ref)
cls.partner_b.write({
'name': 'Ayuntamiento de San Sebastián de los Reyes',
'is_company': True,
'country_id': cls.env.ref('base.es').id,
'vat': 'P2813400E',
'city': 'San Sebastián de los Reyes',
'street': 'Plaza de la Constitución, 1',
'zip': '28701',
'state_id': cls.env.ref('base.state_es_m').id,
})
partner_b_ac = cls.partner_b.copy()
partner_b_ac.write({
'type': 'facturae_ac',
'parent_id': cls.partner_b.id,
'name': 'Intervención Municipal',
'l10n_es_edi_facturae_ac_center_code': 'L01281343',
'l10n_es_edi_facturae_ac_role_type_ids': [
Command.link(cls.env.ref('l10n_es_edi_facturae_adm_centers.ac_role_type_01').id),
Command.link(cls.env.ref('l10n_es_edi_facturae_adm_centers.ac_role_type_02').id),
Command.link(cls.env.ref('l10n_es_edi_facturae_adm_centers.ac_role_type_03').id),
],
})
@freeze_time('2023-01-01')
def test_generate_with_administrative_centers(self):
invoice = self.create_invoice(
partner_id=self.partner_b.id,
move_type='out_invoice',
invoice_line_ids=[{'price_unit': 100.0, 'tax_ids': [self.tax.id]},]
)
invoice.action_post()
generated_file, errors = invoice._l10n_es_edi_facturae_render_facturae()
self.assertFalse(errors)
self.assertTrue(generated_file)
with file_open('l10n_es_edi_facturae_adm_centers/tests/data/expected_ac_document.xml', 'rt') as f:
expected_xml = lxml.etree.fromstring(f.read().encode())
self.assertXmlTreeEqual(lxml.etree.fromstring(generated_file), expected_xml)
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_inherit_l10n_es_edi_facturae" model="ir.ui.view">
<field name="name">res.partner.form.inherit.l10n_es_edi_facturae</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='child_ids']//div[hasclass('oe_edit_only')]" position="inside">
<p class="mb-0" attrs="{'invisible': [('type', '!=', 'facturae_ac')]}">
<span>Administrative Center for Spain Public Administrations. Used in Spanish electronic invoices.</span>
</p>
</xpath>
<xpath expr="//field[@name='child_ids']//form//field[@name='name']" position="after">
<field name="l10n_es_edi_facturae_ac_center_code" attrs="{'invisible': [('type', '!=', 'facturae_ac')]}"/>
<field name="l10n_es_edi_facturae_ac_role_type_ids" widget="many2many_tags" attrs="{'invisible': [('type', '!=', 'facturae_ac')]}"/>
<field name="l10n_es_edi_facturae_ac_physical_gln" attrs="{'invisible': [('type', '!=', 'facturae_ac')]}"/>
<field name="l10n_es_edi_facturae_ac_logical_operational_point" attrs="{'invisible': [('type', '!=', 'facturae_ac')]}"/>
</xpath>
</field>
</record>
</odoo>