diff --git a/l10n_es_aeat_mod349/README.rst b/l10n_es_aeat_mod349/README.rst new file mode 100644 index 00000000000..302679f942a --- /dev/null +++ b/l10n_es_aeat_mod349/README.rst @@ -0,0 +1,209 @@ +=============== +AEAT modelo 349 +=============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:7ac1a93ca7a0bb194a3adfe41c26ed7619b3d93966b060e39b2835565b7e82b1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png + :target: https://odoo-community.org/page/development-status + :alt: Mature +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-spain/tree/18.0/l10n_es_aeat_mod349 + :alt: OCA/l10n-spain +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-spain-18-0/l10n-spain-18-0-l10n_es_aeat_mod349 + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-spain&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Módulo para la presentación del Modelo AEAT 349 (Declaración +Recapitulativa de Operaciones Intracomunitarias) + +Basado en la Orden EHA/769/2010 por el que se aprueban los diseños +físicos y lógicos del 349. + +De acuerdo con la normativa de la Hacienda Española, están obligados a +presentar el modelo 349: + + - Todos aquellos sujetos pasivos del Impuesto sobre el Valor Añadido + que hayan realizado las operaciones previstas en el artículo 79 + del Reglamento del Impuesto sobre el Valor Añadido, es decir, + quienes adquieran o vendan bienes a empresas situadas en países + miembros de la UE, sino también aquellos que presten servicios a + miembros de la UE y cumplan con las siguientes condiciones: + + .. + + - Que conforme a las reglas de la localización aplicables a las + mismas, no se entiendan prestadas en el territorio de + aplicación del impuesto. + + - Que estén sometidas efectivamente a gravamen de otro Estado + miembro. + + - Que su destinatario sea un empresario o profesional actuando + como tal y radique en dicho Estado miembro la sede de su + actividad económica, o tenga en el mismo un establecimiento + permanente o, en su defecto, el lugar de su domicilio o + residencia habitual, o que dicho destinatario sea una persona + jurídica que no actúe como empresario o profesional pero tenga + asignado un número de identificación a efectos del Impuesto + suministrado por ese Estado miembro. + + - Que el sujeto pasivo sea dicho destinatario. + + El período de declaración comprenderá, con carácter general las + operaciones realizadas en cada mes natural, y se presentará + durante los veinte primeros días naturales del mes inmediato + siguiente al correspondiente período mensual. No obstante, la + presentación podrá ser bimestral, trimestral o anual en los + siguientes supuestos: + + - Bimestral: Si al final del segundo mes de un trimestre natural el + importe total de las entregas de bienes y prestaciones de + servicios que deban consignarse en la declaración recapitulativa + supera 100.000 euros (a partir de 2012, el umbral se fija en + 50.000 euros). + - Trimestral: Cuando ni durante el trimestre de referencia ni en + cada uno de los cuatro trimestres naturales anteriores el importe + total de las entregas de bienes y prestaciones de servicios que + deban consignarse en la declaración recapitulativa sea superior a + 100.000 euros. + - Anual: En los treinta primeros días de enero del año siguiente ( + la primera sería en enero de 2011) si el importe total de las + entregas de bienes o prestaciones de servicios del año ( excluido + IVA), no supera los 35.000 € y el importe total de las entregas de + bienes a otro Estado Miembro (salvo medios de transporte nuevos) + exentas de IVA no sea superior a 15.000 €. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Ir a: + +- Contabilidad / Informes AEAT / Modelo 349 +- Crear un nuevo registro e informar los datos básicos de la + declaración. +- Pulsar 'Calcular' y revisar el resultado. Pulsar el botón 'Imprimir' + para obtener el resultado en PDF. +- Para excluir ciertas operaciones de la declaración, ir a las pestañas + 'Registros de empresas' o 'Rectificaciones', y eliminar, en la + seccion 'Detalles', las operaciones que se desee excluir de la + declaración. + +Consideraciones importantes: + +- En caso de indicar el tipo de declaración 'Suplementaria' o 'Normal' + se propondrán todas las operaciones que apliquen para el periodo. +- En caso de indicar 'Complementaria', se propondrán únicamente + aquellas operaciones que no hubieran sido aún presentadas en otra + declaración. + +Known issues / Roadmap +====================== + +- Las facturas rectificativas que no se hayan realizado desde otra + factura quedarán descolgadas y no se presentarán en el 349. +- Añadir aclaración de cuál es el error en los registros. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Tecnativa +* ForgeFlow + +Contributors +------------ + +- Luis Manuel Angueira Blanco (Pexego) + +- Omar Castiñeira Saavedra + +- Miguel López (Top Consultant) + +- Ignacio Martínez (Top Consultant) + +- `Tecnativa `__: + + - Pedro M. Baeza + - Ángel Moya + - Luis M. Ontalba + - Carlos Daudén + +- ForgeFlow (http://www.forgeflow.com) + + - Jordi Ballester + - Aarón Henríquez + +- Aitor Bouzas + +- Acysos: + + - Ignacio Ibeas + +- `Sygel `__: + + - Valentin Vinagre + - Manuel Regidor + +- Jairo Llopis (Moduon) + +- `Factor Libre `__: + + - Luis J. Salvatierra + - Alejandro Ji Cheung + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px + :target: https://github.com/pedrobaeza + :alt: pedrobaeza + +Current `maintainer `__: + +|maintainer-pedrobaeza| + +This module is part of the `OCA/l10n-spain `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_es_aeat_mod349/__init__.py b/l10n_es_aeat_mod349/__init__.py new file mode 100644 index 00000000000..31660d6a965 --- /dev/null +++ b/l10n_es_aeat_mod349/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/l10n_es_aeat_mod349/__manifest__.py b/l10n_es_aeat_mod349/__manifest__.py new file mode 100644 index 00000000000..6b5b7f765ac --- /dev/null +++ b/l10n_es_aeat_mod349/__manifest__.py @@ -0,0 +1,37 @@ +# Copyright 2004-2011 - Pexego Sistemas Informáticos. (http://pexego.es) +# Copyright 2013 - Top Consultant (http://www.topconsultant.es/) +# Copyright 2016 - Tecnativa - Angel Moya +# Copyright 2017 - Tecnativa - Luis M. Ontalba +# Copyright 2017 ForgeFlow +# Copyright 2018 Tecnativa - Carlos Dauden +# Copyright 2014-2023 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "AEAT modelo 349", + "version": "18.0.1.0.0", + "author": "Tecnativa, ForgeFlow, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Localisation/Accounting", + "website": "https://github.com/OCA/l10n-spain", + "depends": ["l10n_es_aeat", "l10n_es"], + "data": [ + "data/l10n.es.aeat.map.tax.line.tax.csv", + "data/aeat.349.map.line.csv", + "data/aeat_export_mod349_partner_refund_data.xml", + "data/aeat_export_mod349_partner_data.xml", + "data/aeat_export_mod349_data.xml", + "views/account_move_view.xml", + "views/account_tax_view.xml", + "views/aeat_349_map_view.xml", + "views/mod349_view.xml", + "report/common_templates.xml", + "report/aeat_mod349.xml", + "report/report_views.xml", + "security/ir.model.access.csv", + "security/mod_349_security.xml", + ], + "development_status": "Mature", + "maintainers": ["pedrobaeza"], + "installable": True, +} diff --git a/l10n_es_aeat_mod349/data/aeat.349.map.line.csv b/l10n_es_aeat_mod349/data/aeat.349.map.line.csv new file mode 100644 index 00000000000..b0df3a55af1 --- /dev/null +++ b/l10n_es_aeat_mod349/data/aeat.349.map.line.csv @@ -0,0 +1,6 @@ +id,physical_product,operation_key,tax_xmlid_ids/id +aeat_349_map_line_E,True,E,"s_iva0_ic" +aeat_349_map_line_A,True,A,"p_iva0_ic_bc,p_iva4_ic_bc,p_iva4_ic_bi,p_iva5_ic_bc,p_iva10_ic_bc,p_iva10_ic_bi,p_iva21_ic_bc,p_iva21_ic_bi,p_iva2_ic_bc,p_iva7-5_ic_bc" +aeat_349_map_line_T,True,T,, +aeat_349_map_line_S,,S,"s_iva0_sp_i" +aeat_349_map_line_I,,I,"p_iva0_ic_sc,p_iva4_sp_in,p_iva5_ic_sc,p_iva10_sp_in,p_iva21_sp_in,p_iva2_ic_sc,p_iva7-5_ic_sc" diff --git a/l10n_es_aeat_mod349/data/aeat_export_mod349_data.xml b/l10n_es_aeat_mod349/data/aeat_export_mod349_data.xml new file mode 100644 index 00000000000..6441d16934a --- /dev/null +++ b/l10n_es_aeat_mod349/data/aeat_export_mod349_data.xml @@ -0,0 +1,263 @@ + + + + + Mod. 349 2016-actualidad + 349 + + 2016-01-01 + + + + + 1 + + Constante: 1 + 1 + string + 1 + left + + + + 2 + + Modelo: 349 + 349 + string + 3 + left + + + + 3 + + Ejercicio + ${object.year} + string + 4 + left + + + + 4 + + Identificación: NIF + ${object.company_vat} + string + 9 + left + + + + + 5 + + Apellidos y nombre o razón social del declarante + ${object.company_id.name} + string + 40 + left + + + + 6 + + Tipo de soporte + ${object.support_type} + string + 1 + left + + + + 7 + + Teléfono contacto + ${object.contact_phone} + string + 9 + left + + + + 8 + + Persona de contacto (Apellidos y nombre) + ${object.contact_name} + string + 40 + left + + + + 9 + + Número identificativo de la declaración + ${object.name} + string + 13 + left + + + + + 10 + + Declaración complementaria o substitutiva + ${object.statement_type.replace('N', ' ')} + string + 2 + left + + + + + 11 + + Número identificativo de la declaración anterior + ${object.previous_number} + integer + 13 + + left + + + + 12 + + Período + ${object.period_type} + string + 2 + left + + + + + 13 + + Número total de operadores intracomunitarios + ${object.total_partner_records} + integer + + 9 + right + + + + + 14 + + Importe total de las operaciones intracomunitarias + ${object.total_partner_records_amount} + float + + 15 + 2 + right + + + + + 15 + + Número total de operadores intracomunitarios con rectificaciones + ${object.total_partner_refunds} + integer + + 9 + right + + + + 16 + + Importe total de las rectificaciones + ${object.total_partner_refunds_amount} + float + + 15 + 2 + right + + + + + 17 + + Indicador cambio periodicidad en la obligación a declarar + + 1 + left + + + + 18 + + Blancos + + string + 204 + left + + + + 19 + + NIF del representante legal + ${object.representative_vat} + string + 9 + left + + + + 20 + + Blancos + + string + 88 + left + + + + 21 + + Sello electrónico (en blanco) + + string + 13 + left + + + + 22 + + Exportación modelo 349 - Tipo de Registro 2 – Registro de cliente + + subconfig + object.partner_record_ids + + + + 23 + + Exportación modelo 349 - Tipo de Registro 2 – Registro de abono cliente + + subconfig + object.partner_refund_ids + + diff --git a/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_data.xml b/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_data.xml new file mode 100644 index 00000000000..14c811b2f22 --- /dev/null +++ b/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_data.xml @@ -0,0 +1,145 @@ + + + + + Mod. 349 - Registro de cliente + 349 + + + + + 1 + + Constante: 2 + 2 + string + 1 + left + + + + 2 + + Constante: 349 + 349 + string + 3 + left + + + + 3 + + Ejercicio + ${object.report_id.year} + string + 4 + left + + + + 4 + + NIF del declarante + ${object.report_id.company_vat} + string + 9 + left + + + + 5 + + Blancos + + string + 58 + left + + + + 6 + + NIF operador Intracomunitario + ${object.partner_vat} + + string + 17 + left + + + + + 7 + + Apellidos y nombre o razón social del operador intracomunitario + ${object.partner_id.name} + string + 40 + left + + + + 8 + + Clave de operación + ${object.operation_key} + string + 1 + left + + + + 9 + + Base imponible + ${object.total_operation_amount} + float + + 13 + 2 + right + + + + 10 + + Blancos + + string + 354 + left + + diff --git a/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_refund_data.xml b/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_refund_data.xml new file mode 100644 index 00000000000..652861d9de0 --- /dev/null +++ b/l10n_es_aeat_mod349/data/aeat_export_mod349_partner_refund_data.xml @@ -0,0 +1,207 @@ + + + + + Mod. 349 - Registro de abono cliente + 349 + + + + + 1 + + Constante: 2 + 2 + string + 1 + left + + + + 2 + + Constante: 349 + 349 + string + 3 + left + + + + 3 + + Ejercicio + ${object.report_id.year} + string + 4 + left + + + + 4 + + NIF del declarante + ${object.report_id.company_vat} + string + 9 + left + + + + 5 + + Blancos + + string + 58 + left + + + + 6 + + NIF operador Intracomunitario + ${object.partner_vat} + string + 17 + left + + + + + 7 + + Apellidos y nombre o razón social del operador intracomunitario + ${object.partner_id.name} + string + 40 + left + + + + 8 + + Clave de operación + ${object.operation_key} + string + 1 + left + + + + 9 + + Blancos + + string + 13 + left + + + + 10 + + Ejercicio (de la declaración que se corrige) + ${object.year} + string + 4 + left + + + + 11 + + Periodo (de la declaración que se corrige) + ${object.period_type} + string + 2 + left + + + + + + 12 + + Base Imponible rectificada + ${object.total_operation_amount} + float + + 13 + 2 + right + + + + + + + + 13 + + Base imponible declarada anteriormente + ${object.total_origin_amount} + float + + 13 + 2 + right + + + + 14 + + Blancos + + string + 322 + left + + diff --git a/l10n_es_aeat_mod349/data/l10n.es.aeat.map.tax.line.tax.csv b/l10n_es_aeat_mod349/data/l10n.es.aeat.map.tax.line.tax.csv new file mode 100644 index 00000000000..37a71540804 --- /dev/null +++ b/l10n_es_aeat_mod349/data/l10n.es.aeat.map.tax.line.tax.csv @@ -0,0 +1,20 @@ +id,name +s_iva0_ic,account_tax_template_s_iva0_ic +p_iva0_ic_bc,account_tax_template_p_iva0_ic_bc +p_iva4_ic_bc,account_tax_template_p_iva4_ic_bc +p_iva4_ic_bi,account_tax_template_p_iva4_ic_bi +p_iva5_ic_bc,account_tax_template_p_iva5_ic_bc +p_iva10_ic_bc,account_tax_template_p_iva10_ic_bc +p_iva10_ic_bi,account_tax_template_p_iva10_ic_bi +p_iva21_ic_bc,account_tax_template_p_iva21_ic_bc +p_iva21_ic_bi,account_tax_template_p_iva21_ic_bi +s_iva0_sp_i,account_tax_template_s_iva0_sp_i +p_iva0_ic_sc,account_tax_template_p_iva0_ic_sc +p_iva4_sp_in,account_tax_template_p_iva4_sp_in +p_iva5_ic_sc,account_tax_template_p_iva5_ic_sc +p_iva10_sp_in,account_tax_template_p_iva10_sp_in +p_iva21_sp_in,account_tax_template_p_iva21_sp_in +p_iva2_ic_bc,account_tax_template_p_iva2_ic_bc +p_iva7-5_ic_bc,account_tax_template_p_iva7-5_ic_bc +p_iva2_ic_sc,account_tax_template_p_iva2_ic_sc +p_iva7-5_ic_sc,account_tax_template_p_iva7-5_ic_sc diff --git a/l10n_es_aeat_mod349/docs/BOE-A-2010-5098.pdf b/l10n_es_aeat_mod349/docs/BOE-A-2010-5098.pdf new file mode 100644 index 00000000000..162fc9961de Binary files /dev/null and b/l10n_es_aeat_mod349/docs/BOE-A-2010-5098.pdf differ diff --git a/l10n_es_aeat_mod349/docs/NREG-349-2016.docx b/l10n_es_aeat_mod349/docs/NREG-349-2016.docx new file mode 100644 index 00000000000..efd3361c9a8 Binary files /dev/null and b/l10n_es_aeat_mod349/docs/NREG-349-2016.docx differ diff --git a/l10n_es_aeat_mod349/i18n/ca.po b/l10n_es_aeat_mod349/i18n/ca.po new file mode 100644 index 00000000000..0b6009b950b --- /dev/null +++ b/l10n_es_aeat_mod349/i18n/ca.po @@ -0,0 +1,1013 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_es_aeat_mod349 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-23 13:11+0000\n" +"Last-Translator: eccit-quim \n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__a +msgid "A - Intra-Community acquisition" +msgstr "A - Adquisició intracomunitària" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_mod349_report +msgid "AEAT 349 Model" +msgstr "Model AEAT 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record +msgid "AEAT 349 Model - Partner record" +msgstr "Model AEAT 349 - Registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record_detail +msgid "AEAT 349 Model - Partner record detail" +msgstr "Model AEAT 349 - Detall registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund +msgid "AEAT 349 Model - Partner refund" +msgstr "Model AEAT 349 - Devolució del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund_detail +msgid "AEAT 349 Model - Partner refund detail" +msgstr "Model AEAT 349 - Detall de devolució del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move_line__l10n_es_aeat_349_operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_tax__l10n_es_aeat_349_operation_key +msgid "AEAT 349 Operation key" +msgstr "AEAT 349 Clau d'operació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_detail_form +msgid "AEAT 349 Partner record" +msgstr "AEAT 349 Registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "AEAT 349 Partner records" +msgstr "AEAT 349 Registres del soci" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_detail_form +msgid "AEAT 349 Partner refund" +msgstr "AEAT 349 Devolució del soci" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "AEAT 349 Partner refunds" +msgstr "AEAT 349 Devolucions del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_id +msgid "AEAT 349 Report ID" +msgstr "AEAT 349 ID de l'informe" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_tree +msgid "AEAT 349 reports" +msgstr "Informes AEAT 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +#: model:ir.actions.report,name:l10n_es_aeat_mod349.act_report_aeat_mod349_pdf +msgid "AEAT Model 349" +msgstr "AEAT Model 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_report +msgid "AEAT Model 349 Report" +msgstr "Informe AEAT Model 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__move_id +msgid "Account entry" +msgstr "Entrada de compte" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "Action Needed" +msgstr "Acció necessària" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_ids +msgid "Activities" +msgstr "Activitats" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decoració de l'excepció d'activitat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "Activity State" +msgstr "Estat de l'activitat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona de tipus d'activitat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_349_map +msgid "Aeat 349 Map" +msgstr "Mapa Aeat 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_aeat_349_map_line +msgid "Aeat 349 Map Line" +msgstr "Línia de mapa Aeat 349" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner records fields (country, VAT number) must be filled." +msgstr "" +"S'han d'omplir tots els camps dels registres de socis (país, número d'IVA)." + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner refunds fields (country, VAT number) must be filled." +msgstr "" +"S'han d'omplir tots els camps de reemborsament de socis (país, número d'IVA)." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__allow_posting +msgid "Allow Posting" +msgstr "Permet la publicació" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__amount_untaxed +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__amount_untaxed +msgid "Amount Untaxed" +msgstr "Base imposable" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_attachment_count +msgid "Attachment Count" +msgstr "Recompte de fitxers adjunts" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Bank account" +msgstr "Compte bancari" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__calculation_date +msgid "Calculation Date" +msgstr "Data de càlcul" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Checked if partner record is OK" +msgstr "S'ha comprovat si el registre del soci està bé" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Checked if refund record is OK" +msgstr "S'ha comprovat si el registre de reemborsament és correcte" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_id +msgid "Company" +msgstr "Empresa" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Company Name" +msgstr "Nom de l'empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Company bank account used for the presentation" +msgstr "Compte bancari de l'empresa utilitzat per a la presentació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Company:" +msgstr "Empresa:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Complementary or substitutive:" +msgstr "Complementari o substitutiu:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_email +msgid "Contact Email" +msgstr "Correu electrònic de contacte" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Contact name (Full name) must have name and surname" +msgstr "El nom del contacte (nom complet) ha de tenir nom i cognoms" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Contact phone:" +msgstr "Telèfon de contacte:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "Counterpart account" +msgstr "Compte de contrapartida" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__country_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__country_id +msgid "Country" +msgstr "País" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Country code not found in Europe" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.actions.act_window,help:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +msgid "Create and query AEAT Model 349 reports" +msgstr "Crear i consultar informes AEAT Model 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__currency_id +msgid "Currency" +msgstr "Moneda" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__date +msgid "Date" +msgstr "Data" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Declaration number:" +msgstr "Número de declaració:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "Detail lines" +msgstr "Línies de detall" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Details" +msgstr "Detalls" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__display_name +msgid "Display Name" +msgstr "Nom mostrat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__e +msgid "E - Intra-Community supplies" +msgstr "E - Subministraments intracomunitaris" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "EU Triangular deal" +msgstr "Acord triangular de la UE" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_end +msgid "Ending date" +msgstr "Data de finalització" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__error_count +msgid "Error Count" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__error_text +msgid "Error Text" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__export_config_id +msgid "Export config" +msgstr "Exportar la configuració" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Fiscal Year:" +msgstr "Any fiscal:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_follower_ids +msgid "Followers" +msgstr "Seguidors" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidors (Socis)" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Icona de lletra impressionant, p. ex. fa-tasques" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "" +"Form 349. Information Return. Recapitulatory\n" +" return of intracommunity transactions." +msgstr "" +"Model 349. Declaració informativa. Recapitulatòria\n" +" devolució de transaccions intracomunitàries." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__frequency_change +msgid "Frequency Change" +msgstr "Canvi de freqüència" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Full Name" +msgstr "Nom complet" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "General" +msgstr "General" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__has_message +msgid "Has Message" +msgstr "Té un missatge" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__i +msgid "I - Intra-Community services acquisitions" +msgstr "I - Adquisicions de serveis intracomunitaris" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__id +msgid "ID" +msgstr "ID" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon" +msgstr "Icona" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicar una activitat d'excepció." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si està marcat, els missatges nous requereixen la vostra atenció." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si està marcat, alguns missatges tenen un error d'entrega." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "Info" +msgstr "Info" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__move_id +msgid "Invoice" +msgstr "Factura" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__date +msgid "Invoice/Bill Date" +msgstr "Data de Factura/Factura de proveïdor" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__physical_product +msgid "Involves physical product" +msgstr "Implica producte físic" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_is_follower +msgid "Is Follower" +msgstr "És Seguidor" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal" +msgstr "Diari" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move +msgid "Journal Entry" +msgstr "Entra de diari" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move_line +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_line_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_line_id +msgid "Journal Item" +msgstr "Element de diari" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal in which post the move." +msgstr "Diari on es publicarà el moviment." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "L.R. VAT number" +msgstr "NIF repr. legal" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_uid +msgid "Last Updated by" +msgstr "Última modificació per" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_date +msgid "Last Updated on" +msgstr "Última actualització el" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "Legal Representative VAT number." +msgstr "NIF del representant legal." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Legal representative VAT:" +msgstr "NIF del representant legal:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "Message Delivery error" +msgstr "Error d'enviament del missatge" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_ids +msgid "Messages" +msgstr "Missatges" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__number +msgid "Model number" +msgstr "Número de model" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Must have name and surname." +msgstr "Ha de tenir nom i cognoms." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Data límit de la meva activitat" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Negative amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "New (Rectified) Amount" +msgstr "Import nou (rectificat)" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Data límit de la propera activitat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_summary +msgid "Next Activity Summary" +msgstr "Resum de l'activitat següent" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_id +msgid "Next Activity Type" +msgstr "Tipus d'activitat següent" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "No Tax Mapping was found" +msgstr "No s'ha trobat cap mapeig fiscal" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of Actions" +msgstr "Número d'accions" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of errors" +msgstr "Número d'errors" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de missatges amb error d'enviament" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +msgid "Operation Amount" +msgstr "Import de l'operació" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__operation_key +msgid "Operation Key" +msgstr "Clau d'operació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Operation key" +msgstr "Clau d'operació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Options" +msgstr "Opcions" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Original amount" +msgstr "Import original" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_id +msgid "Partner" +msgstr "Soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Partner Record OK" +msgstr "Registre del soci OK" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_record_id +msgid "Partner record" +msgstr "Registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__record_detail_ids +msgid "Partner record detail IDS" +msgstr "IDS del detall del registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_detail_ids +msgid "Partner record details" +msgstr "Detalls del registre del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_ids +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Partner records" +msgstr "Registres del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_id +msgid "Partner refund ID" +msgstr "ID de reemborsament del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_ids +msgid "Partner refund IDS" +msgstr "IDS de reemborsament del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Partner refund OK" +msgstr "Devolució del soci OK" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__refund_detail_ids +msgid "Partner refund detail IDS" +msgstr "ID del detall del reemborsament del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_detail_ids +msgid "Partner refund details" +msgstr "Detalls del reemborsament del soci" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records +msgid "Partners records" +msgstr "Registres de socis" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records_amount +msgid "Partners records amount" +msgstr "Import dels registres dels socis" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds +msgid "Partners refunds" +msgstr "Reemborsaments dels socis" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds_amount +msgid "Partners refunds amount" +msgstr "Import dels reemborsaments dels socis" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__period_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__period_type +msgid "Period Type" +msgstr "Tipus de període" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Period:" +msgstr "Període:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_phone +msgid "Phone" +msgstr "Telèfon" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__previous_number +msgid "Previous declaration number" +msgstr "Número de declaració anterior" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Previous declaration:" +msgstr "Declaració prèvia:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Previously Reported Amount" +msgstr "Import notificat anteriorment" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__rating_ids +msgid "Ratings" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Period Type" +msgstr "Tipus de període de rectificació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Year" +msgstr "Any de rectificació" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Refund original amount" +msgstr "Reemborsament de l'import original" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "Refund records" +msgstr "Registres de devolució" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Refunds from other periods" +msgstr "Devolució d'altres períodes" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__name +msgid "Report identifier" +msgstr "Identificador de l'informe" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_user_id +msgid "Responsible User" +msgstr "Usuari responsable" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Resultado" +msgstr "Resultat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__s +msgid "S - Intra-Community services" +msgstr "S - Serveis intracomunitaris" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_start +msgid "Starting date" +msgstr "Data d'inici" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__state +msgid "State" +msgstr "Estat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__statement_type +msgid "Statement Type" +msgstr "Tipus de declaració" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Estat basat en activitats\n" +"Vençut: la data de venciment ja ha passat\n" +"Avui: la data de l'activitat és avui\n" +"Planificades: Activitats futures." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Summary" +msgstr "Resum" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__support_type +msgid "Support Type" +msgstr "Tipus de suport" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Support type:" +msgstr "Tipus de suport:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Surnames and name contact:" +msgstr "Cognoms i nom de contacte:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__t +msgid "T - Triangular operations" +msgstr "T - Operacions triangulars" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_tax +msgid "Tax" +msgstr "Impost" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__tax_agency_ids +msgid "Tax Agency" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__tax_xmlid_ids +msgid "Taxes templates" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.constraint,message:l10n_es_aeat_mod349.constraint_aeat_349_map_line_unique_operation_key +msgid "There's already another record with the same operation key" +msgstr "Ja hi ha un altre registre amb la mateixa clau d'operació" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "" +"This account will be the counterpart for all the journal items that are " +"regularized when posting the report." +msgstr "" +"Aquest compte serà la contrapartida de tots els ítems del diari que es " +"regularitzin en publicar l'informe." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "" +"This invoice constitutes a triangular operation for the purposes of intra-" +"community operations." +msgstr "" +"Aquesta factura constitueix una operació triangular a efectes d'operacions " +"intracomunitàries." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__total_operation_amount +msgid "Total Operation Amount" +msgstr "Import total de l'operació" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of intra-community operations:" +msgstr "Import total d'operacions intracomunitàries:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of rectifications:" +msgstr "Import total de rectificacions:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators with rectifications:" +msgstr "Número total d'operadors intracomunitaris amb rectificacions:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators:" +msgstr "Número total d'operadors intracomunitaris:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_operation_amount +msgid "Total rectified amount" +msgstr "Import total rectificat" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipus d'activitat d'excepció registrada." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_vat +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_vat +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "VAT" +msgstr "NIF" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_vat +msgid "VAT number" +msgstr "Número d'Identitat" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "VAT without country code" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "VAT:" +msgstr "NIF:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website Messages" +msgstr "Missatges de la web" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicacions de la web" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without Country" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Without Total Operation Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without VAT" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__year +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__year +msgid "Year" +msgstr "Any" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_aeat_349_mapping +msgid "aeat 349 Map" +msgstr "Mapa AEAT 349" + +#~ msgid "SMS Delivery error" +#~ msgstr "Error d'entrega d'SMS" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificació el" + +#~ msgid "Main Attachment" +#~ msgstr "Adjunt principal" + +#~ msgid "Taxes" +#~ msgstr "Impostos" + +#~ msgid "Templates for Taxes" +#~ msgstr "Plantilles per a impostos" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Número de missatges que requereixen una acció" + +#~ msgid "Model" +#~ msgstr "Model" + +#~ msgid "Number of unread messages" +#~ msgstr "Número de missatges no llegits" + +#~ msgid "The move of this entry line." +#~ msgstr "El moviment d'aquesta línia d'entrada." + +#~ msgid "Unread Messages" +#~ msgstr "Missatges no llegits" + +#~ msgid "Unread Messages Counter" +#~ msgstr "Comptador de missatges no llegits" diff --git a/l10n_es_aeat_mod349/i18n/es.po b/l10n_es_aeat_mod349/i18n/es.po new file mode 100644 index 00000000000..e0afe6f9696 --- /dev/null +++ b/l10n_es_aeat_mod349/i18n/es.po @@ -0,0 +1,998 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_es_aeat_mod349 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-12 09:51+0000\n" +"PO-Revision-Date: 2023-12-12 09:51+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__a +msgid "A - Intra-Community acquisition" +msgstr "A - Adquisición intracomunitaria" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_mod349_report +msgid "AEAT 349 Model" +msgstr "Modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record +msgid "AEAT 349 Model - Partner record" +msgstr "Modelo 349 - Registro de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record_detail +msgid "AEAT 349 Model - Partner record detail" +msgstr "Modelo 349 - Detalle de registro de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund +msgid "AEAT 349 Model - Partner refund" +msgstr "Modelo 349 - Rectificativa de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund_detail +msgid "AEAT 349 Model - Partner refund detail" +msgstr "Modelo 349 - Detalle de abonos de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move_line__l10n_es_aeat_349_operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_tax__l10n_es_aeat_349_operation_key +msgid "AEAT 349 Operation key" +msgstr "AEAT 349 Clave de operación" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_detail_form +msgid "AEAT 349 Partner record" +msgstr "Registro de empresa modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "AEAT 349 Partner records" +msgstr "Registros de empresa modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_detail_form +msgid "AEAT 349 Partner refund" +msgstr "Rectificaciones modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "AEAT 349 Partner refunds" +msgstr "Rectificaciones modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_id +msgid "AEAT 349 Report ID" +msgstr "ID declaración modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_tree +msgid "AEAT 349 reports" +msgstr "Declaraciones AEAT 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +#: model:ir.actions.report,name:l10n_es_aeat_mod349.act_report_aeat_mod349_pdf +msgid "AEAT Model 349" +msgstr "Modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_report +msgid "AEAT Model 349 Report" +msgstr "Declaración modelo AEAT 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__move_id +msgid "Account entry" +msgstr "Cuenta" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "Action Needed" +msgstr "Acción necesaria" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decoración de excepción de la actividad" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "Activity State" +msgstr "Estado de la actividad" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icono del tipo de actividad" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_349_map +msgid "Aeat 349 Map" +msgstr "Mapeo Aeat 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_aeat_349_map_line +msgid "Aeat 349 Map Line" +msgstr "Mapeo de Línea Aeat 349" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner records fields (country, VAT number) must be filled." +msgstr "" +"Todos los campos de los registros de empresas (país, número NIF) deben estar " +"rellenados." + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner refunds fields (country, VAT number) must be filled." +msgstr "" +"Todos los campos de las rectificaciones (país, número, NIF) deben estar " +"rellenados." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__allow_posting +msgid "Allow Posting" +msgstr "Permitir publicar" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__amount_untaxed +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__amount_untaxed +msgid "Amount Untaxed" +msgstr "Importe sin impuestos" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_attachment_count +msgid "Attachment Count" +msgstr "Número de adjuntos" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Bank account" +msgstr "Cuenta bancaria" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__calculation_date +msgid "Calculation Date" +msgstr "Fecha de cálculo" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Checked if partner record is OK" +msgstr "Comprobado si el registro de empresa está bien" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Checked if refund record is OK" +msgstr "Comprobado si el registro de rectificación está bien" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_id +msgid "Company" +msgstr "Empresa" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Company Name" +msgstr "Nombre Empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Company bank account used for the presentation" +msgstr "Cuenta bancaria de la empresa que se usará para presentar" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Company:" +msgstr "Empresa:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Complementary or substitutive:" +msgstr "Complementaria o sustitutiva:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_email +msgid "Contact Email" +msgstr "Email de contacto" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Contact name (Full name) must have name and surname" +msgstr "" +"El nombre del contacto (Nombre completo) debe contener nombre y apellidos" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Contact phone:" +msgstr "Teléfono de contacto:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "Counterpart account" +msgstr "Cuenta de contrapartida" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__country_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__country_id +msgid "Country" +msgstr "País" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Country code not found in Europe" +msgstr "Código de país no encontrado en Europa" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.actions.act_window,help:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +msgid "Create and query AEAT Model 349 reports" +msgstr "Crea y consulta declaraciones de la AEAT modelo 349" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__currency_id +msgid "Currency" +msgstr "Moneda" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__date +msgid "Date" +msgstr "Fecha" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Declaration number:" +msgstr "Número de declaración:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "Detail lines" +msgstr "Líneas de detalle" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Details" +msgstr "Detalles" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__e +msgid "E - Intra-Community supplies" +msgstr "E - Entregas intracomunitarias" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "EU Triangular deal" +msgstr "Acuerdo triangular UE" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_end +msgid "Ending date" +msgstr "Fecha fin" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__error_count +msgid "Error Count" +msgstr "Número de errores" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__error_text +msgid "Error Text" +msgstr "Texto del error" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__export_config_id +msgid "Export config" +msgstr "Exportar configuración" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Fiscal Year:" +msgstr "Año Fiscal:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_follower_ids +msgid "Followers" +msgstr "Seguidores/as" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_partner_ids +msgid "Followers (Partners)" +msgstr "Seguidores/as (Socios)" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "Fuente awesome icon p.e. fa-tasks" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "" +"Form 349. Information Return. Recapitulatory\n" +" return of intracommunity transactions." +msgstr "" +"Modelo 349. Declaración Informativa. Declaración recapitulativa\n" +" de operaciones intracomunitarias." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__frequency_change +msgid "Frequency Change" +msgstr "Cambio de frecuencia" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Full Name" +msgstr "Nombre completo" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "General" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__has_message +msgid "Has Message" +msgstr "Hay mensajes" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__i +msgid "I - Intra-Community services acquisitions" +msgstr "I - Adquisición de servicios intracomunitarios" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon" +msgstr "Icono" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icono para indicar una actividad de excepción." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "If checked, new messages require your attention." +msgstr "Si está seleccionado, nuevos mensajes requieren su atención." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "Si está seleccionado, algunos mensajes tienen un error de entrega." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "Info" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__move_id +msgid "Invoice" +msgstr "Factura" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__date +msgid "Invoice/Bill Date" +msgstr "Fecha de la factura" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__physical_product +msgid "Involves physical product" +msgstr "Implica producto físico" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_is_follower +msgid "Is Follower" +msgstr "Es seguidor/a" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal" +msgstr "Diario" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move +msgid "Journal Entry" +msgstr "Asiento Contable" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move_line +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_line_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_line_id +msgid "Journal Item" +msgstr "Apunte contable" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal in which post the move." +msgstr "Diario donde publicar el movimiento." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "L.R. VAT number" +msgstr "Número NIF" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_uid +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_date +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "Legal Representative VAT number." +msgstr "NIF del Representante legal." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Legal representative VAT:" +msgstr "NIF del Representante legal:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "Message Delivery error" +msgstr "Error de entrega" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_ids +msgid "Messages" +msgstr "Mensajes" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__number +msgid "Model number" +msgstr "Nº modelo" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Must have name and surname." +msgstr "El nombre del contacto debe contener nombre y apellidos." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "Fecha límite de mi actividad" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Negative amount" +msgstr "Importe negativo" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "New (Rectified) Amount" +msgstr "Importe rectificado" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "Próxima fecha límite de actividad" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_summary +msgid "Next Activity Summary" +msgstr "Próximo resumen de actividad" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_id +msgid "Next Activity Type" +msgstr "Próximo tipo de actividad" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "No Tax Mapping was found" +msgstr "No se encontró Mapeo de Impuestos" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of Actions" +msgstr "Número de acciones" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of errors" +msgstr "Número de errores" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con un error de entrega" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +msgid "Operation Amount" +msgstr "Importe Operación" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__operation_key +msgid "Operation Key" +msgstr "Clave de operación" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Operation key" +msgstr "Clave de operación" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Options" +msgstr "Opciones" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Original amount" +msgstr "Importe original" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_id +msgid "Partner" +msgstr "Empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Partner Record OK" +msgstr "Registro Empresa OK" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_record_id +msgid "Partner record" +msgstr "Registro de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__record_detail_ids +msgid "Partner record detail IDS" +msgstr "IDs Detalle de registro de empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_detail_ids +msgid "Partner record details" +msgstr "Detalles registro empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_ids +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Partner records" +msgstr "Registros de empresas" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_id +msgid "Partner refund ID" +msgstr "ID Rectificación" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_ids +msgid "Partner refund IDS" +msgstr "IDs de rectificaciones" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Partner refund OK" +msgstr "Rectificación de empresa OK" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__refund_detail_ids +msgid "Partner refund detail IDS" +msgstr "IDs Detalles de rectificaciones" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_detail_ids +msgid "Partner refund details" +msgstr "Detalles rectificación empresa" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records +msgid "Partners records" +msgstr "Registro empresas" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records_amount +msgid "Partners records amount" +msgstr "Importes registros empresas" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds +msgid "Partners refunds" +msgstr "Rectificaciones empresas" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds_amount +msgid "Partners refunds amount" +msgstr "Importes rectificaciones empresas" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__period_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__period_type +msgid "Period Type" +msgstr "Tipo de período" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Period:" +msgstr "Periodo:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_phone +msgid "Phone" +msgstr "Teléfono" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__previous_number +msgid "Previous declaration number" +msgstr "Número declaración previa" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Previous declaration:" +msgstr "Declaración previa:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Previously Reported Amount" +msgstr "Importe declarado previamente" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__rating_ids +msgid "Ratings" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Period Type" +msgstr "Tipo de periodo rectificado" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Year" +msgstr "Año rectificado" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Refund original amount" +msgstr "Importe operación original" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "Refund records" +msgstr "Registros rectificaciones" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Refunds from other periods" +msgstr "Rectificaciones de otros periodos" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__name +msgid "Report identifier" +msgstr "Identificador del informe" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_user_id +msgid "Responsible User" +msgstr "Usuario responsable" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Resultado" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__s +msgid "S - Intra-Community services" +msgstr "S - Servicios intracomunitarios" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_start +msgid "Starting date" +msgstr "Fecha inicio" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__state +msgid "State" +msgstr "Provincia" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__statement_type +msgid "Statement Type" +msgstr "Tipo de declaración" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Estado basado en actividades\n" +"Con retraso: La fecha límite ha sido sobrepasada\n" +"Hoy: La fecha de la actividad es hoy\n" +"Planificada: Actividades futuras." + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Summary" +msgstr "Resumen" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__support_type +msgid "Support Type" +msgstr "Tipo de soporte" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Support type:" +msgstr "Tipo de soporte:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Surnames and name contact:" +msgstr "Apellidos y nombre del contacto:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__t +msgid "T - Triangular operations" +msgstr "T - Operaciones triangulares" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_tax +msgid "Tax" +msgstr "Impuesto" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__tax_agency_ids +msgid "Tax Agency" +msgstr "Agencia Tributaria" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__tax_xmlid_ids +msgid "Taxes templates" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.constraint,message:l10n_es_aeat_mod349.constraint_aeat_349_map_line_unique_operation_key +msgid "There's already another record with the same operation key" +msgstr "Ya hay otro registro con la misma clave de operación" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "" +"This account will be the counterpart for all the journal items that are " +"regularized when posting the report." +msgstr "" +"Esta cuenta será la contraparte de todos los elementos del diario que se " +"regularizan al publicar." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "" +"This invoice constitutes a triangular operation for the purposes of intra-" +"community operations." +msgstr "" +"Esta factura constituye una operación triangular para los propósitos de " +"operaciones intracomunitarias." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__total_operation_amount +msgid "Total Operation Amount" +msgstr "Importe total de la operación" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of intra-community operations:" +msgstr "Total bases operaciones intra-comunitarias:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of rectifications:" +msgstr "Total bases rectificaciones:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators with rectifications:" +msgstr "Número total de operadores intracomunitarios con rectificaciones:" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators:" +msgstr "Número total de operadores intra-comunitarios:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_operation_amount +msgid "Total rectified amount" +msgstr "Importe total tras rectificación" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de la actividad de excepción registrada." + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_vat +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_vat +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "VAT" +msgstr "NIF" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_vat +msgid "VAT number" +msgstr "Número NIF" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "VAT without country code" +msgstr "NIF sin código de país" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "VAT:" +msgstr "NIF:" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website Messages" +msgstr "Mensajes del sitio Web" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website communication history" +msgstr "Historial de comunicación del sitio Web" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without Country" +msgstr "Sin país" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Without Total Operation Amount" +msgstr "Sin Importe total de la operación" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without VAT" +msgstr "Sin NIF" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__year +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__year +msgid "Year" +msgstr "Año" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_aeat_349_mapping +msgid "aeat 349 Map" +msgstr "Mapeo aeat 349" + +#~ msgid "Last Modified on" +#~ msgstr "Última modificación en" + +#~ msgid "Main Attachment" +#~ msgstr "Adjunto principal" + +#~ msgid "Number of messages which requires an action" +#~ msgstr "Número de mensajes que requieren una acción" + +#~ msgid "Taxes" +#~ msgstr "Impuestos" + +#~ msgid "Templates for Taxes" +#~ msgstr "Plantilla de impuestos" diff --git a/l10n_es_aeat_mod349/i18n/l10n_es_aeat_mod349.pot b/l10n_es_aeat_mod349/i18n/l10n_es_aeat_mod349.pot new file mode 100644 index 00000000000..a8da07c9c98 --- /dev/null +++ b/l10n_es_aeat_mod349/i18n/l10n_es_aeat_mod349.pot @@ -0,0 +1,965 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_es_aeat_mod349 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \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_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__a +msgid "A - Intra-Community acquisition" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_mod349_report +msgid "AEAT 349 Model" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record +msgid "AEAT 349 Model - Partner record" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_record_detail +msgid "AEAT 349 Model - Partner record detail" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund +msgid "AEAT 349 Model - Partner refund" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_partner_refund_detail +msgid "AEAT 349 Model - Partner refund detail" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move_line__l10n_es_aeat_349_operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_tax__l10n_es_aeat_349_operation_key +msgid "AEAT 349 Operation key" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_detail_form +msgid "AEAT 349 Partner record" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "AEAT 349 Partner records" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_detail_form +msgid "AEAT 349 Partner refund" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "AEAT 349 Partner refunds" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__report_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_id +msgid "AEAT 349 Report ID" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_tree +msgid "AEAT 349 reports" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +#: model:ir.actions.report,name:l10n_es_aeat_mod349.act_report_aeat_mod349_pdf +msgid "AEAT Model 349" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_l10n_es_aeat_mod349_report +msgid "AEAT Model 349 Report" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__move_id +msgid "Account entry" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_ids +msgid "Activities" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "Activity State" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.ui.menu,name:l10n_es_aeat_mod349.menu_aeat_349_map +msgid "Aeat 349 Map" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_aeat_349_map_line +msgid "Aeat 349 Map Line" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner records fields (country, VAT number) must be filled." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "All partner refunds fields (country, VAT number) must be filled." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__allow_posting +msgid "Allow Posting" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__amount_untaxed +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__amount_untaxed +msgid "Amount Untaxed" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Bank account" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__calculation_date +msgid "Calculation Date" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Checked if partner record is OK" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Checked if refund record is OK" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_id +msgid "Company" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Company Name" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_bank_id +msgid "Company bank account used for the presentation" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Company:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Complementary or substitutive:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_email +msgid "Contact Email" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Contact name (Full name) must have name and surname" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Contact phone:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "Counterpart account" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__country_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__country_id +msgid "Country" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Country code not found in Europe" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.actions.act_window,help:l10n_es_aeat_mod349.action_l10n_es_aeat_mod349_report +msgid "Create and query AEAT Model 349 reports" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__create_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__create_date +msgid "Created on" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__currency_id +msgid "Currency" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__date +msgid "Date" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Declaration number:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +msgid "Detail lines" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Details" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__display_name +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__e +msgid "E - Intra-Community supplies" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "EU Triangular deal" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_end +msgid "Ending date" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__error_count +msgid "Error Count" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__error_text +msgid "Error Text" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__export_config_id +msgid "Export config" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Fiscal Year:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "" +"Form 349. Information Return. Recapitulatory\n" +" return of intracommunity transactions." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__frequency_change +msgid "Frequency Change" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Full Name" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "General" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__has_message +msgid "Has Message" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__i +msgid "I - Intra-Community services acquisitions" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__id +msgid "ID" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_record_form +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_ES_aeat_mod349_partner_refund_form +msgid "Info" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__move_id +msgid "Invoice" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__date +msgid "Invoice/Bill Date" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__physical_product +msgid "Involves physical product" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_move_line +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__move_line_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_line_id +msgid "Journal Item" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__journal_id +msgid "Journal in which post the move." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "L.R. VAT number" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_uid +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__write_date +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__representative_vat +msgid "Legal Representative VAT number." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Legal representative VAT:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_ids +msgid "Messages" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__number +msgid "Model number" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_name +msgid "Must have name and surname." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Negative amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "New (Rectified) Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "No Tax Mapping was found" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +msgid "Operation Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__operation_key +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__operation_key +msgid "Operation Key" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Operation key" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Options" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Original amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__partner_id +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_id +msgid "Partner" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_record_ok +msgid "Partner Record OK" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__partner_record_id +msgid "Partner record" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__record_detail_ids +msgid "Partner record detail IDS" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_detail_ids +msgid "Partner record details" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_record_ids +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Partner records" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__refund_id +msgid "Partner refund ID" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_ids +msgid "Partner refund IDS" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_refund_ok +msgid "Partner refund OK" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__refund_detail_ids +msgid "Partner refund detail IDS" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__partner_refund_detail_ids +msgid "Partner refund details" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records +msgid "Partners records" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_records_amount +msgid "Partners records amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds +msgid "Partners refunds" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__total_partner_refunds_amount +msgid "Partners refunds amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__period_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__period_type +msgid "Period Type" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Period:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__contact_phone +msgid "Phone" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__previous_number +msgid "Previous declaration number" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Previous declaration:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Previously Reported Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__rating_ids +msgid "Ratings" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Period Type" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "Rectifying Year" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_origin_amount +msgid "Refund original amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.report_aeat_mod349_document +msgid "Refund records" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Refunds from other periods" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__name +msgid "Report identifier" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Resultado" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__s +msgid "S - Intra-Community services" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__date_start +msgid "Starting date" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__state +msgid "State" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund_detail__report_type +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__statement_type +msgid "Statement Type" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.view_l10n_es_aeat_mod349_report_form +msgid "Summary" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__support_type +msgid "Support Type" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Support type:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Surnames and name contact:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields.selection,name:l10n_es_aeat_mod349.selection__account_move_line__l10n_es_aeat_349_operation_key__t +msgid "T - Triangular operations" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model,name:l10n_es_aeat_mod349.model_account_tax +msgid "Tax" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__tax_agency_ids +msgid "Tax Agency" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_aeat_349_map_line__tax_xmlid_ids +msgid "Taxes templates" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.constraint,message:l10n_es_aeat_mod349.constraint_aeat_349_map_line_unique_operation_key +msgid "There's already another record with the same operation key" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__counterpart_account_id +msgid "" +"This account will be the counterpart for all the journal items that are " +"regularized when posting the report." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_bank_statement_line__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_move__eu_triangular_deal +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_account_payment__eu_triangular_deal +msgid "" +"This invoice constitutes a triangular operation for the purposes of intra-" +"community operations." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__total_operation_amount +msgid "Total Operation Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of intra-community operations:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total amount of rectifications:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators with rectifications:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "Total number of intra-community operators:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__total_operation_amount +msgid "Total rectified amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_record__partner_vat +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__partner_vat +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_record_head +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_partner_refund_head +msgid "VAT" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__company_vat +msgid "VAT number" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "VAT without country code" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod349.mod349_summary +msgid "VAT:" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,help:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without Country" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#, python-format +msgid "Without Total Operation Amount" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#. odoo-python +#: code:addons/l10n_es_aeat_mod349/models/mod349.py:0 +#: code:addons/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py:0 +#, python-format +msgid "Without VAT" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_partner_refund__year +#: model:ir.model.fields,field_description:l10n_es_aeat_mod349.field_l10n_es_aeat_mod349_report__year +msgid "Year" +msgstr "" + +#. module: l10n_es_aeat_mod349 +#: model:ir.actions.act_window,name:l10n_es_aeat_mod349.action_aeat_349_mapping +msgid "aeat 349 Map" +msgstr "" diff --git a/l10n_es_aeat_mod349/models/__init__.py b/l10n_es_aeat_mod349/models/__init__.py new file mode 100644 index 00000000000..dbb5b4e7669 --- /dev/null +++ b/l10n_es_aeat_mod349/models/__init__.py @@ -0,0 +1,6 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import account_move +from . import account_tax +from . import aeat_349_map_line +from . import mod349 diff --git a/l10n_es_aeat_mod349/models/account_move.py b/l10n_es_aeat_mod349/models/account_move.py new file mode 100644 index 00000000000..f98398b4f72 --- /dev/null +++ b/l10n_es_aeat_mod349/models/account_move.py @@ -0,0 +1,59 @@ +# Copyright 2017 Tecnativa - Luis M. Ontalba +# Copyright 2017 ForgeFlow +# Copyright 2018-2020 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountMove(models.Model): + _inherit = "account.move" + + eu_triangular_deal = fields.Boolean( + string="EU Triangular deal", + help="This invoice constitutes a triangular operation for the " + "purposes of intra-community operations.", + readonly=True, + ) + + +class AccountMoveLine(models.Model): + """Inheritance of account move line to add some fields: + - AEAT_349_operation_key: Operation key of invoice line + """ + + _inherit = "account.move.line" + + l10n_es_aeat_349_operation_key = fields.Selection( + selection=[ + ("A", "A - Intra-Community acquisition"), + ("E", "E - Intra-Community supplies"), + ("I", "I - Intra-Community services acquisitions"), + ("S", "S - Intra-Community services"), + ("T", "T - Triangular operations"), + ], + string="AEAT 349 Operation key", + compute="_compute_l10n_es_aeat_349_operation_key", + compute_sudo=True, + search="_search_l10n_es_aeat_349_operation_key", + ) + + def _search_l10n_es_aeat_349_operation_key(self, operator, value): + if value == "T": + return ["move_id.eu_triangular_deal", "=", True] + else: + return [("tax_ids.l10n_es_aeat_349_operation_key", operator, value)] + + @api.depends("tax_ids", "move_id.eu_triangular_deal") + def _compute_l10n_es_aeat_349_operation_key(self): + for rec in self: + if rec.move_id.eu_triangular_deal: + rec.l10n_es_aeat_349_operation_key = "T" + else: + rec.l10n_es_aeat_349_operation_key = False + for tax in rec.tax_ids: + if tax.l10n_es_aeat_349_operation_key: + rec.l10n_es_aeat_349_operation_key = ( + tax.l10n_es_aeat_349_operation_key + ) + break diff --git a/l10n_es_aeat_mod349/models/account_tax.py b/l10n_es_aeat_mod349/models/account_tax.py new file mode 100644 index 00000000000..ff76503543d --- /dev/null +++ b/l10n_es_aeat_mod349/models/account_tax.py @@ -0,0 +1,67 @@ +# Copyright 2017 Luis M. Ontalba +# Copyright 2018-2020 Tecnativa - Pedro M. Baeza +# Copyright 2024 Sygel - Manuel Regidor +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class AccountTax(models.Model): + _inherit = "account.tax" + + def _selection_operation_key(self): + return self.env["account.move.line"].fields_get( + allfields=["l10n_es_aeat_349_operation_key"], + )["l10n_es_aeat_349_operation_key"]["selection"] + + l10n_es_aeat_349_operation_key = fields.Selection( + selection=_selection_operation_key, + string="AEAT 349 Operation key", + compute="_compute_l10n_es_aeat_349_operation_key", + compute_sudo=True, + search="_search_l10n_es_aeat_349_operation_key", + ) + + def _taxes_without_operation_key(self): + map_349_lines = self.env["aeat.349.map.line"].search([]) + all_349_taxes_xmlid = map_349_lines.mapped("tax_xmlid_ids") + all_349_taxes = map_349_lines._get_tax_ids_from_xmlids(all_349_taxes_xmlid) + return list(set(self.env["account.tax"].search([]).ids) - set(all_349_taxes)) + + def _search_l10n_es_aeat_349_operation_key(self, operator, value): + tax_ids = [] + if operator == "=" and not value: + tax_ids = self._taxes_without_operation_key() + else: + is_not_in = operator == "not in" + if is_not_in: + operator = "in" + map_349_lines = self.env["aeat.349.map.line"].search( + [("operation_key", operator, value)] + ) + if map_349_lines: + taxes_xmlid = map_349_lines.mapped("tax_xmlid_ids") + tax_ids = map_349_lines._get_tax_ids_from_xmlids( + taxes_xmlid, self.env.company + ) + if is_not_in: + tax_ids = list( + set(self.env["account.tax"].search([]).ids) - set(tax_ids) + ) + elif operator == "!=" and value: + taxes_without_operation_key = self._taxes_without_operation_key() + tax_ids += taxes_without_operation_key + return [("id", "in", tax_ids)] + + def _compute_l10n_es_aeat_349_operation_key(self): + # TODO: Improve performance + map_349 = self.env["aeat.349.map.line"].search([]) + for tax in self: + tax.l10n_es_aeat_349_operation_key = False + for line in map_349: + taxes_ids = line._get_tax_ids_from_xmlids( + line.tax_xmlid_ids, tax.company_id + ) + if taxes_ids and tax.id in taxes_ids: + tax.l10n_es_aeat_349_operation_key = line.operation_key + break diff --git a/l10n_es_aeat_mod349/models/aeat_349_map_line.py b/l10n_es_aeat_mod349/models/aeat_349_map_line.py new file mode 100644 index 00000000000..a70f3ab3cf3 --- /dev/null +++ b/l10n_es_aeat_mod349/models/aeat_349_map_line.py @@ -0,0 +1,47 @@ +# Copyright 2017 Luis M. Ontalba +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class Aeat349MapLines(models.Model): + _name = "aeat.349.map.line" + _description = "Aeat 349 Map Line" + _rec_name = "operation_key" + + _sql_constraints = [ + ( + "unique_operation_key", + "UNIQUE(operation_key)", + "There's already another record with the same operation key", + ), + ] + + def _selection_operation_key(self): + return self.env["account.move.line"].fields_get( + allfields=["l10n_es_aeat_349_operation_key"], + )["l10n_es_aeat_349_operation_key"]["selection"] + + physical_product = fields.Boolean(string="Involves physical product") + tax_xmlid_ids = fields.Many2many( + comodel_name="l10n.es.aeat.map.tax.line.tax", string="Taxes templates" + ) + operation_key = fields.Selection( + selection=_selection_operation_key, + required=True, + ) + + @api.model + def _get_tax_ids_from_xmlids(self, tax_templates, company=False): + if not company: + companies = self.env["res.company"].search([]) + else: + companies = company + taxes_ids = [] + for tax_template in tax_templates: + for company in companies: + tax_id = company._get_tax_id_from_xmlid(tax_template.name) + if tax_id: + taxes_ids.append(tax_id) + return taxes_ids diff --git a/l10n_es_aeat_mod349/models/mod349.py b/l10n_es_aeat_mod349/models/mod349.py new file mode 100644 index 00000000000..ff0810186b2 --- /dev/null +++ b/l10n_es_aeat_mod349/models/mod349.py @@ -0,0 +1,687 @@ +# Copyright 2004-2011 - Pexego Sistemas Informáticos. (http://pexego.es) +# Copyright 2013 - Top Consultant Software Creations S.L. +# - (http://www.topconsultant.es/) +# Copyright 2014-2021 Tecnativa - Pedro M. Baeza +# Copyright 2016 - Tecnativa - Angel Moya +# Copyright 2017 - Tecnativa - Luis M. Ontalba +# Copyright 2017 - ForgeFlow, S.L. +# +# Copyright 2018 - Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +import math + +from odoo import api, exceptions, fields, models +from odoo.fields import first +from odoo.tools import float_is_zero, float_round + + +class Mod349(models.Model): + _inherit = "l10n.es.aeat.report" + _name = "l10n.es.aeat.mod349.report" + _description = "AEAT Model 349 Report" + _period_monthly = True + _period_quarterly = True + _period_yearly = True + _aeat_number = "349" + + frequency_change = fields.Boolean() + total_partner_records = fields.Integer( + compute="_compute_report_regular_totals", + string="Partners records", + store=True, + ) + total_partner_records_amount = fields.Float( + compute="_compute_report_regular_totals", + string="Partners records amount", + store=True, + ) + total_partner_refunds = fields.Integer( + compute="_compute_report_refund_totals", + string="Partners refunds", + store=True, + ) + total_partner_refunds_amount = fields.Float( + compute="_compute_report_refund_totals", + string="Partners refunds amount", + store=True, + ) + partner_record_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_record", + inverse_name="report_id", + string="Partner records", + readonly=True, + ) + partner_record_detail_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_record_detail", + inverse_name="report_id", + string="Partner record details", + ) + partner_refund_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_refund", + inverse_name="report_id", + string="Partner refund IDS", + readonly=True, + ) + partner_refund_detail_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_refund_detail", + inverse_name="report_id", + string="Partner refund details", + ) + number = fields.Char(default="349") + + def _compute_error_count(self): + ret_val = super()._compute_error_count() + partner_records_error_dict = self.env[ + "l10n.es.aeat.mod349.partner_record" + ].read_group( + domain=[("partner_record_ok", "=", False), ("report_id", "in", self.ids)], + fields=["report_id"], + groupby=["report_id"], + ) + partner_records_error_dict = { + rec["report_id"][0]: rec["report_id_count"] + for rec in partner_records_error_dict + } + for report in self: + report.error_count += partner_records_error_dict.get(report.id, 0) + return ret_val + + @api.depends("partner_record_ids", "partner_record_ids.total_operation_amount") + def _compute_report_regular_totals(self): + for report in self: + report.total_partner_records = len(report.partner_record_ids) + report.total_partner_records_amount = sum( + report.mapped("partner_record_ids.total_operation_amount") + ) + + @api.depends("partner_refund_ids", "partner_refund_ids.total_operation_amount") + def _compute_report_refund_totals(self): + for report in self: + report.total_partner_refunds = len(report.partner_refund_ids) + total_origin_amount = sum( + report.mapped("partner_refund_ids.total_origin_amount") + ) + total_operation_amount = sum( + report.mapped("partner_refund_ids.total_operation_amount") + ) + report.total_partner_refunds_amount = ( + total_origin_amount - total_operation_amount + ) + + def _create_349_details(self, move_lines): + for move_line in move_lines: + if move_line.move_id.move_type in ("in_refund", "out_refund"): + # Check for refunds if the origin invoice period is different + # from the declaration + origin_invoice = move_line.move_id.reversed_entry_id + if origin_invoice: + if ( + origin_invoice.date < self.date_start + or origin_invoice.date > self.date_end + ): + self._create_349_refund_detail(move_line) + continue + self._create_349_record_detail(move_line) + + def _create_349_record_detail(self, move_line): + types = move_line.move_id.mapped("line_ids.account_id.account_type") + sign = 1 if "liability_payable" in types else -1 + return self.env["l10n.es.aeat.mod349.partner_record_detail"].create( + { + "report_id": self.id, + "move_line_id": move_line.id, + "amount_untaxed": sign * move_line.balance, + } + ) + + def _create_349_refund_detail(self, move_line): + types = move_line.move_id.mapped("line_ids.account_id.account_type") + sign = 1 if "asset_receivable" in types else -1 + return self.env["l10n.es.aeat.mod349.partner_refund_detail"].create( + { + "report_id": self.id, + "refund_line_id": move_line.id, + "amount_untaxed": sign * move_line.balance, + } + ) + + def _create_349_invoice_records(self): + """creates partner records in 349""" + rec_obj = self.env["l10n.es.aeat.mod349.partner_record"] + detail_obj = self.env["l10n.es.aeat.mod349.partner_record_detail"] + data = {} + for record_detail in self.partner_record_detail_ids: + move_line = record_detail.move_line_id + partner = move_line.partner_id + op_key = move_line.l10n_es_aeat_349_operation_key + partner_dict = data.setdefault(partner, {}) + op_key_dict = partner_dict.setdefault( + op_key, + {"record_details": detail_obj}, + ) + op_key_dict["record_details"] += record_detail + for partner in list(data.keys()): + for op_key in list(data[partner].keys()): + record_created = rec_obj.create( + { + "report_id": self.id, + "partner_id": partner.id, + "partner_vat": partner.vat, + "operation_key": op_key, + "country_id": partner.country_id.id, + } + ) + for record_detail in data[partner][op_key]["record_details"]: + record_detail.partner_record_id = record_created + rounding = self.env.user.company_id.currency_id.rounding + self.partner_record_ids.filtered( + lambda r: float_is_zero( + r.total_operation_amount, precision_rounding=rounding + ) + ).unlink() + return True + + def _create_349_refund_records(self): + """Creates restitution records in 349""" + self.ensure_one() + detail_obj = self.env["l10n.es.aeat.mod349.partner_record_detail"] + obj = self.env["l10n.es.aeat.mod349.partner_refund"] + refund_detail_obj = self.env["l10n.es.aeat.mod349.partner_refund_detail"] + move_line_obj = self.env["account.move.line"] + taxes = self._get_taxes() + data = {} + # This is for avoiding to find same lines several times + visited_details = self.env["l10n.es.aeat.mod349.partner_record_detail"] + visited_move_lines = self.env["account.move.line"] + groups = {} + for refund_detail in self.partner_refund_detail_ids: + move_line = refund_detail.refund_line_id + origin_invoice = move_line.move_id.reversed_entry_id + key = (origin_invoice, move_line.l10n_es_aeat_349_operation_key) + groups.setdefault(key, refund_detail_obj) + groups[key] += refund_detail + for (origin_invoice, op_key), refund_details in groups.items(): + refund_detail = first(refund_details) + move_line = refund_detail.refund_line_id + partner = move_line.partner_id + op_key = move_line.l10n_es_aeat_349_operation_key + if not origin_invoice: + # TODO: Instead continuing, generate an empty record and a msg + continue + # Fetch the latest presentation made for this move + original_details = detail_obj.search( + [ + ("move_line_id.move_id", "=", origin_invoice.id), + ("partner_record_id.operation_key", "=", op_key), + ("id", "not in", visited_details.ids), + ], + order="report_id desc", + ) + # we add all of them to visited, as we don't want to repeat + visited_details |= original_details + if original_details: + original_amls = move_line_obj.search( + [ + ("tax_ids", "in", taxes.ids), + ("l10n_es_aeat_349_operation_key", "=", op_key), + ("move_id", "=", origin_invoice.id), + ] + ) + # There's at least one previous 349 declaration report + report = original_details.mapped("report_id")[:1] + original_details = original_details.filtered( + lambda d, report=report: d.report_id == report + ) + origin_amount = sum(original_details.mapped("amount_untaxed")) + period_type = report.period_type + year = str(report.year) + # If there are intermediate periods between the original + # period and the period where the rectification is taking + # place, it's necessary to check if there is any rectification + # of the original period in between these periods. This + # happens in this way because the right original_amount + # will be the value of the total_operation_amount + # corresponding to the last period found in between the periods + last_refund_detail = refund_detail_obj.search( + [ + ("report_id.date_start", ">", report.date_end), + ("report_id.date_end", "<", self.date_start), + ("move_id", "in", origin_invoice.reversal_move_id.ids), + ], + order="date desc", + limit=1, + ) + if last_refund_detail: + origin_amount = last_refund_detail.refund_id.total_operation_amount + else: + # There's no previous 349 declaration report in Odoo + original_amls = move_line_obj.search( + [ + ("tax_ids", "in", taxes.ids), + ("l10n_es_aeat_349_operation_key", "=", op_key), + ("move_id", "=", origin_invoice.id), + ] + ) + origin_amount = abs( + sum((original_amls - visited_move_lines).mapped("balance")) + ) + visited_move_lines |= original_amls + # We have to guess the period type, as we don't have that info + # through move lines. Inferred from: + # * current record period scheme (monthly/quarterly/yearly) + # * date of the move line + if original_amls: + original_move = original_amls[:1] + year = str(original_move.date.year) + month = "%02d" % (original_move.date.month) + else: + continue # We can't find information to attach to + if self.period_type == "0A": + period_type = "0A" + elif self.period_type in ("1T", "2T", "3T", "4T"): + period_type = f"{int(math.ceil(int(month) / 3.0))}T" + else: + period_type = month + key = (partner, op_key, period_type, year) + key_vals = data.setdefault( + key, {"original_amount": 0, "refund_details": refund_detail_obj} + ) + key_vals["original_amount"] += origin_amount + key_vals["refund_details"] += refund_details + for key, key_vals in data.items(): + partner, op_key, period_type, year = key + partner_refund = obj.create( + { + "report_id": self.id, + "partner_id": partner.id, + "partner_vat": partner.vat, + "operation_key": op_key, + "country_id": partner.country_id.id, + "total_origin_amount": key_vals["original_amount"], + "period_type": period_type, + "year": year, + } + ) + key_vals["refund_details"].write({"refund_id": partner_refund.id}) + + def _account_move_line_domain(self, taxes): + """Return domain for searching move lines. + + :param: taxes: Taxes to look for in move lines. + """ + return [ + ("parent_state", "=", "posted"), + ("date", ">=", self.date_start), + ("date", "<=", self.date_end), + ("tax_ids", "in", taxes.ids), + ] + + @api.model + def _get_taxes(self): + """Obtain all the taxes to be considered for 349.""" + map_lines = self.env["aeat.349.map.line"].search([]) + tax_templates = map_lines.mapped("tax_xmlid_ids") + if not tax_templates: + raise exceptions.UserError(self.env._("No Tax Mapping was found")) + taxes_ids = self.env["aeat.349.map.line"]._get_tax_ids_from_xmlids( + tax_templates, self.company_id + ) + return self.env["account.tax"].search([("id", "in", taxes_ids)]) + + def _cleanup_report(self): + """Remove previous partner records and partner refunds in report.""" + self.ensure_one() + self.partner_record_ids.unlink() + self.partner_refund_ids.unlink() + self.partner_record_detail_ids.unlink() + self.partner_refund_detail_ids.unlink() + + def calculate(self): + """Computes the records in report.""" + self.ensure_one() + self._cleanup_report() + taxes = self._get_taxes() + # Get all the account moves + move_lines = self.env["account.move.line"].search( + self._account_move_line_domain(taxes) + ) + # If the type of presentation is complementary, remove records that + # already exist in other presentations + if self.statement_type == "C": + prev_details = self.partner_record_detail_ids.search( + [ + ("move_line_id", "in", move_lines.ids), + ("report_id", "!=", self.id), + ] + ) + move_lines -= prev_details.mapped("move_line_id") + prev_details = self.partner_refund_detail_ids.search( + [ + ("refund_line_id", "in", move_lines.ids), + ("report_id", "!=", self.id), + ] + ) + move_lines -= prev_details.mapped("refund_line_id") + self._create_349_details(move_lines) + self._create_349_invoice_records() + self._create_349_refund_records() + self.env.flush_all() + return True + + def button_recover(self): + """Clean children records in this state for allowing things like + cancelling an invoice that is inside this report. + """ + self._cleanup_report() + return super().button_recover() + + def _check_report_lines(self): + """Checks if all the fields of all the report lines + (partner records and partner refund) are filled + """ + for item in self: + for partner_record in item.partner_record_ids: + if not partner_record.partner_record_ok: + raise exceptions.UserError( + self.env._( + "All partner records fields (country, VAT number) " + "must be filled." + ) + ) + for partner_record in item.partner_refund_ids: + if not partner_record.partner_refund_ok: + raise exceptions.UserError( + self.env._( + "All partner refunds fields (country, VAT number) " + "must be filled." + ) + ) + + def _check_names(self): + """Checks that names are correct (not formed by only one string)""" + for item in self: + # Check Full name (contact_name) + if not item.contact_name or len(item.contact_name.split(" ")) < 2: + raise exceptions.UserError( + self.env._("Contact name (Full name) must have name and surname") + ) + + def button_confirm(self): + """Checks if all the fields of the report are correctly filled""" + self._check_names() + self._check_report_lines() + return super().button_confirm() + + +class Mod349PartnerRecord(models.Model): + """AEAT 349 Model - Partner record + Shows total amount per operation key (grouped) for each partner + """ + + _name = "l10n.es.aeat.mod349.partner_record" + _description = "AEAT 349 Model - Partner record" + _order = "partner_record_ok asc, operation_key asc, id" + _rec_name = "partner_vat" + + def _selection_operation_key(self): + return self.env["account.move.line"].fields_get( + allfields=["l10n_es_aeat_349_operation_key"], + )["l10n_es_aeat_349_operation_key"]["selection"] + + def _get_and_assign_country_code(self, record): + # Get country code from partner in a first place + country_code = record.partner_id._parse_aeat_vat_info()[0] + + # Map country code with _map_aeat_country_code + # and then to ISO code with _map_aeat_country_iso_code + country_code = record.partner_id._map_aeat_country_code(country_code) + country = self.env["res.country"].search([("code", "=", country_code)]) + country_code = record.partner_id._map_aeat_country_iso_code(country) + + # If country code is found, and it's not in the VAT, assign it + if country_code and not record.partner_vat.startswith(country_code): + vat_number = record.partner_id._parse_aeat_vat_info()[-1] + record.partner_vat = country_code + vat_number + return country_code + + def _process_vat(self, record, errors): + country_code = self._get_and_assign_country_code(record) + if not country_code: + errors.append(self.env._("VAT without country code")) + elif country_code not in record.partner_id._get_aeat_europe_codes(): + europe = self.env.ref("base.europe", raise_if_not_found=False) + map_european_codes = [ + record.partner_id._map_aeat_country_iso_code(c) + for c in europe.country_ids + ] + if country_code not in map_european_codes: + errors.append(self.env._("Country code not found in Europe")) + return errors + + @api.depends("partner_vat", "country_id", "total_operation_amount") + def _compute_partner_record_ok(self): + """Checks if all line fields are filled.""" + for record in self: + errors = [] + if not record.partner_vat: + errors.append(self.env._("Without VAT")) + if not record.country_id: + errors.append(self.env._("Without Country")) + if not record.total_operation_amount: + errors.append(self.env._("Without Total Operation Amount")) + if record.total_operation_amount and record.total_operation_amount < 0.0: + errors.append(self.env._("Negative amount")) + if record.partner_vat: + errors = self._process_vat(record, errors) + record.partner_record_ok = bool(not errors) + record.error_text = ", ".join(errors) + + report_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.report", + string="AEAT 349 Report ID", + ondelete="cascade", + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Partner", + required=True, + ) + partner_vat = fields.Char(string="VAT", size=15, index=True) + country_id = fields.Many2one(comodel_name="res.country", string="Country") + operation_key = fields.Selection( + selection=_selection_operation_key, + ) + total_operation_amount = fields.Float( + compute="_compute_total_operation_amount", + store=True, + ) + partner_record_ok = fields.Boolean( + compute="_compute_partner_record_ok", + string="Partner Record OK", + help="Checked if partner record is OK", + store=True, + ) + error_text = fields.Char( + compute="_compute_partner_record_ok", + store=True, + ) + record_detail_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_record_detail", + inverse_name="partner_record_id", + string="Partner record detail IDS", + ) + + @api.depends("record_detail_ids") + def _compute_total_operation_amount(self): + for record in self: + record.total_operation_amount = sum( + record.mapped("record_detail_ids.amount_untaxed") + ) + + +class Mod349PartnerRecordDetail(models.Model): + """AEAT 349 Model - Partner record detail + Shows detail lines for each partner record. + """ + + _name = "l10n.es.aeat.mod349.partner_record_detail" + _description = "AEAT 349 Model - Partner record detail" + + report_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.report", + required=True, + string="AEAT 349 Report ID", + ondelete="cascade", + ) + report_type = fields.Selection( + related="report_id.statement_type", + readonly=True, + store=True, + ) + partner_record_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.partner_record", + default=lambda self: self.env.context.get("partner_record_id"), + string="Partner record", + ondelete="set null", + index=True, + ) + move_line_id = fields.Many2one( + comodel_name="account.move.line", string="Journal Item", required=True + ) + move_id = fields.Many2one( + comodel_name="account.move", + string="Invoice", + related="move_line_id.move_id", + readonly=True, + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Partner", + related="partner_record_id.partner_id", + readonly=True, + ) + amount_untaxed = fields.Float() + date = fields.Date( + related="move_line_id.move_id.invoice_date", + readonly=True, + ) + + +class Mod349PartnerRefund(models.Model): + _name = "l10n.es.aeat.mod349.partner_refund" + _description = "AEAT 349 Model - Partner refund" + _order = "operation_key asc" + + def get_period_type_selection(self): + report_obj = self.env["l10n.es.aeat.mod349.report"] + return report_obj.get_period_type_selection() + + def _selection_operation_key(self): + return self.env["account.move.line"].fields_get( + allfields=["l10n_es_aeat_349_operation_key"], + )["l10n_es_aeat_349_operation_key"]["selection"] + + report_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.report", + string="AEAT 349 Report ID", + ondelete="cascade", + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Partner", + required=True, + index=True, + ) + partner_vat = fields.Char(string="VAT", size=15) + operation_key = fields.Selection( + selection=_selection_operation_key, + ) + country_id = fields.Many2one(comodel_name="res.country", string="Country") + total_operation_amount = fields.Float( + compute="_compute_total_operation_amount", + string="Total rectified amount", + store=True, + ) + total_origin_amount = fields.Float( + string="Original amount", help="Refund original amount" + ) + partner_refund_ok = fields.Boolean( + compute="_compute_partner_refund_ok", + string="Partner refund OK", + help="Checked if refund record is OK", + ) + period_type = fields.Selection( + selection="get_period_type_selection", + ) + year = fields.Integer() + refund_detail_ids = fields.One2many( + comodel_name="l10n.es.aeat.mod349.partner_refund_detail", + inverse_name="refund_id", + string="Partner refund detail IDS", + ) + + @api.depends( + "partner_vat", "country_id", "total_operation_amount", "total_origin_amount" + ) + def _compute_partner_refund_ok(self): + """Checks if partner refund line have all fields filled.""" + for record in self: + record.partner_refund_ok = bool( + record.partner_vat + and record.country_id + and record.total_operation_amount >= 0.0 + and record.total_origin_amount >= 0.0 + ) + + @api.depends("refund_detail_ids") + def _compute_total_operation_amount(self): + for record in self: + rectified_amount = sum(record.mapped("refund_detail_ids.amount_untaxed")) + rounding = self.env.user.company_id.currency_id.rounding + record.total_operation_amount = float_round( + record.total_origin_amount - rectified_amount, + precision_rounding=rounding, + ) + + +class Mod349PartnerRefundDetail(models.Model): + _name = "l10n.es.aeat.mod349.partner_refund_detail" + _description = "AEAT 349 Model - Partner refund detail" + + report_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.report", + required=True, + string="AEAT 349 Report ID", + ondelete="cascade", + ) + report_type = fields.Selection( + related="report_id.statement_type", + readonly=True, + store=True, + ) + refund_id = fields.Many2one( + comodel_name="l10n.es.aeat.mod349.partner_refund", + string="Partner refund ID", + ondelete="set null", + ) + partner_id = fields.Many2one( + comodel_name="res.partner", + string="Partner", + related="refund_id.partner_id", + readonly=True, + ) + refund_line_id = fields.Many2one( + comodel_name="account.move.line", string="Journal Item", required=True + ) + move_id = fields.Many2one( + comodel_name="account.move", + string="Invoice", + related="refund_line_id.move_id", + readonly=True, + ) + amount_untaxed = fields.Float() + date = fields.Date( + related="refund_line_id.date", + readonly=True, + store=True, # Necessary for sorting records + ) diff --git a/l10n_es_aeat_mod349/pyproject.toml b/l10n_es_aeat_mod349/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/l10n_es_aeat_mod349/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/l10n_es_aeat_mod349/readme/CONTRIBUTORS.md b/l10n_es_aeat_mod349/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..bf0e3653d2a --- /dev/null +++ b/l10n_es_aeat_mod349/readme/CONTRIBUTORS.md @@ -0,0 +1,37 @@ +- Luis Manuel Angueira Blanco (Pexego) + +- Omar Castiñeira Saavedra\<\> + +- Miguel López (Top Consultant) + +- Ignacio Martínez (Top Consultant) + +- [Tecnativa](https://www.tecnativa.com): + + - Pedro M. Baeza + - Ángel Moya + - Luis M. Ontalba + - Carlos Daudén + +- ForgeFlow () + + - Jordi Ballester \<\> + - Aarón Henríquez + +- Aitor Bouzas \<\> + +- Acysos: + + - Ignacio Ibeas + +- [Sygel](https://www.sygel.es): + + - Valentin Vinagre + - Manuel Regidor + +- Jairo Llopis (Moduon) + +- [Factor Libre](https://factorlibre.com): + + > - Luis J. Salvatierra \<\> + > - Alejandro Ji Cheung \<\> diff --git a/l10n_es_aeat_mod349/readme/DESCRIPTION.md b/l10n_es_aeat_mod349/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2b6b75be21a --- /dev/null +++ b/l10n_es_aeat_mod349/readme/DESCRIPTION.md @@ -0,0 +1,56 @@ +Módulo para la presentación del Modelo AEAT 349 (Declaración +Recapitulativa de Operaciones Intracomunitarias) + +Basado en la Orden EHA/769/2010 por el que se aprueban los diseños +físicos y lógicos del 349. + +De acuerdo con la normativa de la Hacienda Española, están obligados a +presentar el modelo 349: + +> - Todos aquellos sujetos pasivos del Impuesto sobre el Valor Añadido +> que hayan realizado las operaciones previstas en el artículo 79 del +> Reglamento del Impuesto sobre el Valor Añadido, es decir, quienes +> adquieran o vendan bienes a empresas situadas en países miembros de +> la UE, sino también aquellos que presten servicios a miembros de la +> UE y cumplan con las siguientes condiciones: +> +> > - Que conforme a las reglas de la localización aplicables a las +> > mismas, no se entiendan prestadas en el territorio de aplicación +> > del impuesto. +> > +> > - Que estén sometidas efectivamente a gravamen de otro Estado +> > miembro. +> > +> > - Que su destinatario sea un empresario o profesional actuando como +> > tal y radique en dicho Estado miembro la sede de su actividad +> > económica, o tenga en el mismo un establecimiento permanente o, en +> > su defecto, el lugar de su domicilio o residencia habitual, o que +> > dicho destinatario sea una persona jurídica que no actúe como +> > empresario o profesional pero tenga asignado un número de +> > identificación a efectos del Impuesto suministrado por ese Estado +> > miembro. +> > +> > - Que el sujeto pasivo sea dicho destinatario. +> > +> > El período de declaración comprenderá, con carácter general las +> > operaciones realizadas en cada mes natural, y se presentará +> > durante los veinte primeros días naturales del mes inmediato +> > siguiente al correspondiente período mensual. No obstante, la +> > presentación podrá ser bimestral, trimestral o anual en los +> > siguientes supuestos: +> +> - Bimestral: Si al final del segundo mes de un trimestre natural el +> importe total de las entregas de bienes y prestaciones de servicios +> que deban consignarse en la declaración recapitulativa supera +> 100.000 euros (a partir de 2012, el umbral se fija en 50.000 euros). +> - Trimestral: Cuando ni durante el trimestre de referencia ni en cada +> uno de los cuatro trimestres naturales anteriores el importe total +> de las entregas de bienes y prestaciones de servicios que deban +> consignarse en la declaración recapitulativa sea superior a 100.000 +> euros. +> - Anual: En los treinta primeros días de enero del año siguiente ( la +> primera sería en enero de 2011) si el importe total de las entregas +> de bienes o prestaciones de servicios del año ( excluido IVA), no +> supera los 35.000 € y el importe total de las entregas de bienes a +> otro Estado Miembro (salvo medios de transporte nuevos) exentas de +> IVA no sea superior a 15.000 €. diff --git a/l10n_es_aeat_mod349/readme/ROADMAP.md b/l10n_es_aeat_mod349/readme/ROADMAP.md new file mode 100644 index 00000000000..89e146194e6 --- /dev/null +++ b/l10n_es_aeat_mod349/readme/ROADMAP.md @@ -0,0 +1,3 @@ +- Las facturas rectificativas que no se hayan realizado desde otra + factura quedarán descolgadas y no se presentarán en el 349. +- Añadir aclaración de cuál es el error en los registros. diff --git a/l10n_es_aeat_mod349/readme/USAGE.md b/l10n_es_aeat_mod349/readme/USAGE.md new file mode 100644 index 00000000000..5cc31a53a0d --- /dev/null +++ b/l10n_es_aeat_mod349/readme/USAGE.md @@ -0,0 +1,17 @@ +Ir a: + +- Contabilidad / Informes AEAT / Modelo 349 +- Crear un nuevo registro e informar los datos básicos de la + declaración. +- Pulsar 'Calcular' y revisar el resultado. Pulsar el botón 'Imprimir' + para obtener el resultado en PDF. +- Para excluir ciertas operaciones de la declaración, ir a las pestañas + 'Registros de empresas' o 'Rectificaciones', y eliminar, en la seccion + 'Detalles', las operaciones que se desee excluir de la declaración. + +Consideraciones importantes: + +- En caso de indicar el tipo de declaración 'Suplementaria' o 'Normal' + se propondrán todas las operaciones que apliquen para el periodo. +- En caso de indicar 'Complementaria', se propondrán únicamente aquellas + operaciones que no hubieran sido aún presentadas en otra declaración. diff --git a/l10n_es_aeat_mod349/report/aeat_mod349.xml b/l10n_es_aeat_mod349/report/aeat_mod349.xml new file mode 100644 index 00000000000..a9dfd7b9c64 --- /dev/null +++ b/l10n_es_aeat_mod349/report/aeat_mod349.xml @@ -0,0 +1,50 @@ + + + + + diff --git a/l10n_es_aeat_mod349/report/common_templates.xml b/l10n_es_aeat_mod349/report/common_templates.xml new file mode 100644 index 00000000000..e6aa126d8e1 --- /dev/null +++ b/l10n_es_aeat_mod349/report/common_templates.xml @@ -0,0 +1,191 @@ + + + + + + + + diff --git a/l10n_es_aeat_mod349/report/report_views.xml b/l10n_es_aeat_mod349/report/report_views.xml new file mode 100644 index 00000000000..8111c16c3d6 --- /dev/null +++ b/l10n_es_aeat_mod349/report/report_views.xml @@ -0,0 +1,11 @@ + + + + AEAT Model 349 + l10n.es.aeat.mod349.report + qweb-pdf + l10n_es_aeat_mod349.report_l10n_es_mod349_pdf + l10n_es_aeat_mod349.report_l10n_es_mod349 + report + + diff --git a/l10n_es_aeat_mod349/security/ir.model.access.csv b/l10n_es_aeat_mod349/security/ir.model.access.csv new file mode 100644 index 00000000000..3b928a72750 --- /dev/null +++ b/l10n_es_aeat_mod349/security/ir.model.access.csv @@ -0,0 +1,14 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_l10n_es_aeat_mod349_report_user","AEAT 349 Model: Report - Account User","model_l10n_es_aeat_mod349_report","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_report_manager","AEAT 349 Model: Report - Account Manager","model_l10n_es_aeat_mod349_report","account.group_account_manager",1,1,1,1 +"access_l10n_es_aeat_mod349_partner_record_user","AEAT 349 Model: Partner record - Account User","model_l10n_es_aeat_mod349_partner_record","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_partner_record_manager","AEAT 349 Model: Partner record - Account Manager","model_l10n_es_aeat_mod349_partner_record","account.group_account_manager",1,1,1,1 +"access_l10n_es_aeat_mod349_partner_record_detail_user","AEAT 349 Model: Partner record detail - Account User","model_l10n_es_aeat_mod349_partner_record_detail","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_partner_record_detail_manager","AEAT 349 Model: Partner record detail - Account Manager","model_l10n_es_aeat_mod349_partner_record_detail","account.group_account_manager",1,1,1,1 +"access_l10n_es_aeat_mod349_partner_refund_user","AEAT 349 Model: Partner refund - Account User","model_l10n_es_aeat_mod349_partner_refund","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_partner_refund_manager","AEAT 349 Model: Partner refund - Account Manager","model_l10n_es_aeat_mod349_partner_refund","account.group_account_manager",1,1,1,1 +"access_l10n_es_aeat_mod349_partner_refund_detail_user","AEAT 349 Model: Partner refund detail - Account User","model_l10n_es_aeat_mod349_partner_refund_detail","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_partner_refund_detail_manager","AEAT 349 Model: Partner refund detail - Account Manager","model_l10n_es_aeat_mod349_partner_refund_detail","account.group_account_manager",1,1,1,1 +"access_l10n_es_aeat_mod349_aeat_349_map_line_billing","AEAT 349 Model: Operation key Map - Billing User","model_aeat_349_map_line","account.group_account_invoice",1,0,0,0 +"access_l10n_es_aeat_mod349_aeat_349_map_line_user","AEAT 349 Model: Operation key Map - Account User","model_aeat_349_map_line","account.group_account_user",1,0,0,0 +"access_l10n_es_aeat_mod349_aeat_349_map_line_manager","AEAT 349 Model: Operation key Map - Account Manager","model_aeat_349_map_line","account.group_account_manager",1,1,1,1 diff --git a/l10n_es_aeat_mod349/security/mod_349_security.xml b/l10n_es_aeat_mod349/security/mod_349_security.xml new file mode 100644 index 00000000000..2de008227a8 --- /dev/null +++ b/l10n_es_aeat_mod349/security/mod_349_security.xml @@ -0,0 +1,11 @@ + + + + AEAT Mod 349 + + + ['|',('company_id','=',False),('company_id','in',company_ids)] + + diff --git a/l10n_es_aeat_mod349/static/description/icon.png b/l10n_es_aeat_mod349/static/description/icon.png new file mode 100644 index 00000000000..fab89a97c9b Binary files /dev/null and b/l10n_es_aeat_mod349/static/description/icon.png differ diff --git a/l10n_es_aeat_mod349/static/description/icon_source.svg b/l10n_es_aeat_mod349/static/description/icon_source.svg new file mode 100644 index 00000000000..f4d00bcec5b --- /dev/null +++ b/l10n_es_aeat_mod349/static/description/icon_source.svg @@ -0,0 +1,99 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + 349 + diff --git a/l10n_es_aeat_mod349/static/description/index.html b/l10n_es_aeat_mod349/static/description/index.html new file mode 100644 index 00000000000..0ecbc9333b8 --- /dev/null +++ b/l10n_es_aeat_mod349/static/description/index.html @@ -0,0 +1,565 @@ + + + + + +AEAT modelo 349 + + + +
+

AEAT modelo 349

+ + +

Mature License: AGPL-3 OCA/l10n-spain Translate me on Weblate Try me on Runboat

+

Módulo para la presentación del Modelo AEAT 349 (Declaración +Recapitulativa de Operaciones Intracomunitarias)

+

Basado en la Orden EHA/769/2010 por el que se aprueban los diseños +físicos y lógicos del 349.

+

De acuerdo con la normativa de la Hacienda Española, están obligados a +presentar el modelo 349:

+
+
    +
  • Todos aquellos sujetos pasivos del Impuesto sobre el Valor Añadido +que hayan realizado las operaciones previstas en el artículo 79 +del Reglamento del Impuesto sobre el Valor Añadido, es decir, +quienes adquieran o vendan bienes a empresas situadas en países +miembros de la UE, sino también aquellos que presten servicios a +miembros de la UE y cumplan con las siguientes condiciones:
  • +
+ +
+
    +
  • Que conforme a las reglas de la localización aplicables a las +mismas, no se entiendan prestadas en el territorio de +aplicación del impuesto.

    +
  • +
  • Que estén sometidas efectivamente a gravamen de otro Estado +miembro.

    +
  • +
  • Que su destinatario sea un empresario o profesional actuando +como tal y radique en dicho Estado miembro la sede de su +actividad económica, o tenga en el mismo un establecimiento +permanente o, en su defecto, el lugar de su domicilio o +residencia habitual, o que dicho destinatario sea una persona +jurídica que no actúe como empresario o profesional pero tenga +asignado un número de identificación a efectos del Impuesto +suministrado por ese Estado miembro.

    +
  • +
  • Que el sujeto pasivo sea dicho destinatario.

    +

    El período de declaración comprenderá, con carácter general las +operaciones realizadas en cada mes natural, y se presentará +durante los veinte primeros días naturales del mes inmediato +siguiente al correspondiente período mensual. No obstante, la +presentación podrá ser bimestral, trimestral o anual en los +siguientes supuestos:

    +
  • +
+
+
    +
  • Bimestral: Si al final del segundo mes de un trimestre natural el +importe total de las entregas de bienes y prestaciones de +servicios que deban consignarse en la declaración recapitulativa +supera 100.000 euros (a partir de 2012, el umbral se fija en +50.000 euros).
  • +
  • Trimestral: Cuando ni durante el trimestre de referencia ni en +cada uno de los cuatro trimestres naturales anteriores el importe +total de las entregas de bienes y prestaciones de servicios que +deban consignarse en la declaración recapitulativa sea superior a +100.000 euros.
  • +
  • Anual: En los treinta primeros días de enero del año siguiente ( +la primera sería en enero de 2011) si el importe total de las +entregas de bienes o prestaciones de servicios del año ( excluido +IVA), no supera los 35.000 € y el importe total de las entregas de +bienes a otro Estado Miembro (salvo medios de transporte nuevos) +exentas de IVA no sea superior a 15.000 €.
  • +
+
+

Table of contents

+ +
+

Usage

+

Ir a:

+
    +
  • Contabilidad / Informes AEAT / Modelo 349
  • +
  • Crear un nuevo registro e informar los datos básicos de la +declaración.
  • +
  • Pulsar ‘Calcular’ y revisar el resultado. Pulsar el botón ‘Imprimir’ +para obtener el resultado en PDF.
  • +
  • Para excluir ciertas operaciones de la declaración, ir a las pestañas +‘Registros de empresas’ o ‘Rectificaciones’, y eliminar, en la +seccion ‘Detalles’, las operaciones que se desee excluir de la +declaración.
  • +
+

Consideraciones importantes:

+
    +
  • En caso de indicar el tipo de declaración ‘Suplementaria’ o ‘Normal’ +se propondrán todas las operaciones que apliquen para el periodo.
  • +
  • En caso de indicar ‘Complementaria’, se propondrán únicamente +aquellas operaciones que no hubieran sido aún presentadas en otra +declaración.
  • +
+
+
+

Known issues / Roadmap

+
    +
  • Las facturas rectificativas que no se hayan realizado desde otra +factura quedarán descolgadas y no se presentarán en el 349.
  • +
  • Añadir aclaración de cuál es el error en los registros.
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

pedrobaeza

+

This module is part of the OCA/l10n-spain project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/l10n_es_aeat_mod349/tests/__init__.py b/l10n_es_aeat_mod349/tests/__init__.py new file mode 100644 index 00000000000..e57bddb4ba4 --- /dev/null +++ b/l10n_es_aeat_mod349/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import test_l10n_es_aeat_mod349 diff --git a/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py b/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py new file mode 100644 index 00000000000..fb40b574154 --- /dev/null +++ b/l10n_es_aeat_mod349/tests/test_l10n_es_aeat_mod349.py @@ -0,0 +1,423 @@ +# Copyright 2017 ForgeFlow +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0 + +import logging + +from odoo.tests.common import tagged + +from odoo.addons.l10n_es_aeat.tests.test_l10n_es_aeat_mod_base import ( + TestL10nEsAeatModBase, +) + +_logger = logging.getLogger("aeat.349") + + +@tagged("post_install", "-at_install") +class TestL10nEsAeatMod349Base(TestL10nEsAeatModBase): + # Set 'debug' attribute to True to easy debug this test + # Do not forget to include '--log-handler aeat:DEBUG' in Odoo command line + debug = False + taxes_sale = { + "S_IVA0_IC": (2400, 0), + } + taxes_purchase = { + "P_IVA21_IC_BC": (150, 0), + "P_IVA21_IC_BC//2": (150, 0), + } + + @classmethod + def setUpClass(cls): + super().setUpClass() + # Compatibility with account_edi_ubl_cii + # It is necessary to set the value of company_registry so that if we define + # as country_id=BE the tests do not fail. + cls.customer.write({"company_registry": "0411905847"}) + + @classmethod + def _invoice_refund(cls, invoice, dt, price_unit=None): + _logger.debug( + f"Refund {invoice.move_type} " + f"invoice: date = {dt}: price_unit = {price_unit or 150.0}" + ) + default_values_list = [ + {"date": dt, "invoice_date": dt, "invoice_payment_term_id": None} + ] + inv = invoice.with_user(cls.billing_user)._reverse_moves(default_values_list) + if price_unit is not None: + for line in inv.invoice_line_ids: + line.price_unit = price_unit + inv.action_post() + if cls.debug: + cls._print_move_lines(inv.line_ids) + return inv + + def test_model_349(self): + # Add some test data + self.customer.write( + {"vat": "BE0411905847", "country_id": self.env.ref("base.be").id} + ) + self.supplier.write( + {"vat": "BG0000100159", "country_id": self.env.ref("base.bg").id} + ) + # Data for 1T 2017 + # Purchase invoices + p1 = self._invoice_purchase_create("2017-01-01") + p2 = self._invoice_purchase_create("2017-01-02") + self._invoice_refund(p2, "2017-01-02") + # Sale invoices + s1 = self._invoice_sale_create("2017-01-01") + s2 = self._invoice_sale_create("2017-01-02") + self._invoice_refund(s2, "2017-01-02") + # Create model + model349_model = self.env["l10n.es.aeat.mod349.report"].with_user( + self.account_manager + ) + model349 = model349_model.create( + { + "name": "3490000000001", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "1T", + "date_start": "2017-01-01", + "date_end": "2017-03-31", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 1T 2017") + model349.button_calculate() + self.assertEqual(model349.total_partner_records, 2) + # p1 + p2 -p3 + s1 + s2 - s3 = 2400 + 2400 - 2400 + 300 + 300 - 300 + self.assertEqual(model349.total_partner_records_amount, 2700.00) + self.assertEqual(model349.total_partner_refunds, 0) + self.assertEqual(model349.total_partner_refunds_amount, 0.0) + a_record = model349.partner_record_ids.filtered( + lambda x: x.operation_key == "A" + ) + self.assertEqual(len(a_record), 1) + self.assertEqual(len(a_record.record_detail_ids), 6) + self.assertEqual(a_record.partner_vat, self.supplier.vat) + self.assertEqual(a_record.country_id, self.supplier.country_id) + # p1 + p2 - p3 = 300 + 300 - 300 + self.assertEqual(a_record.total_operation_amount, 300) + e_record = model349.partner_record_ids.filtered( + lambda x: x.operation_key == "E" + ) + self.assertEqual(len(e_record), 1) + self.assertEqual(len(e_record.record_detail_ids), 3) + self.assertEqual(e_record.partner_vat, self.customer.vat) + self.assertEqual(e_record.country_id, self.customer.country_id) + # s1 + s2 - s3 = 2400 + 2400 - 2400 + self.assertEqual(e_record.total_operation_amount, 2400) + # Now we delete detailed records to see if totals are recomputed + model349.partner_record_detail_ids.filtered(lambda x: x.move_id == p1).unlink() + self.assertEqual(a_record.total_operation_amount, 0) + model349.partner_record_detail_ids.filtered(lambda x: x.move_id == s1).unlink() + self.assertEqual(e_record.total_operation_amount, 0) + # Create a complementary presentation for 1T 2017. We expect the + # application to propose the records that were not included in the + # first presentation. + model349_c = model349_model.create( + { + "name": "3490000000002", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "C", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "1T", + "date_start": "2017-01-01", + "date_end": "2017-03-31", + "previous_number": model349.name, + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 1T 2017 - complementary") + model349_c.button_calculate() + e_record = model349_c.partner_record_ids.filtered( + lambda x: x.operation_key == "E" + ) + self.assertEqual(len(e_record), 1) + self.assertEqual(e_record.total_operation_amount, 2400) + a_record = model349_c.partner_record_ids.filtered( + lambda x: x.operation_key == "A" + ) + self.assertEqual(len(a_record), 1) + self.assertEqual(a_record.total_operation_amount, 300) + # Create a substitutive presentation for 1T 2017. We expect that all + # records for 1T are proposed. + model349_s = model349_model.create( + { + "name": "3490000000003", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "S", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "1T", + "date_start": "2017-01-01", + "date_end": "2017-03-31", + "previous_number": model349.name, + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 1T 2017 - substitutive") + model349_s.button_calculate() + e_record = model349_s.partner_record_ids.filtered( + lambda x: x.operation_key == "E" + ) + self.assertEqual(e_record.total_operation_amount, 2400) + a_record = model349_s.partner_record_ids.filtered( + lambda x: x.operation_key == "A" + ) + self.assertEqual(a_record.total_operation_amount, 300) + # Create a substitutive presentation for 2T 2017. + # We create a refund of p1, and a new sale + self._invoice_refund(p1, "2017-04-01") + self._invoice_sale_create("2017-04-01") + model349_2t = model349_model.create( + { + "name": "3490000000004", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "2T", + "date_start": "2017-04-01", + "date_end": "2017-06-30", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 2T 2017") + model349_2t.button_calculate() + self.assertEqual(model349_2t.total_partner_records, 1) + self.assertEqual(model349_2t.total_partner_refunds, 1) + self.assertEqual(model349_2t.total_partner_refunds_amount, 300) + e_record = model349_2t.partner_record_ids.filtered( + lambda x: x.operation_key == "E" + ) + self.assertEqual(e_record.total_operation_amount, 2400) + a_records = model349_2t.partner_record_ids.filtered( + lambda x: x.operation_key == "A" + ) + self.assertEqual(len(a_records), 0) + e_refunds = model349_2t.partner_refund_ids.filtered( + lambda x: x.operation_key == "E" + ) + self.assertEqual(len(e_refunds), 0) + a_refund = model349_2t.partner_refund_ids.filtered( + lambda x: x.operation_key == "A" + ) + self.assertEqual(len(a_refund), 1) + self.assertEqual(len(a_refund.refund_detail_ids), 2) + self.assertEqual(a_refund.total_origin_amount, 300) + self.assertEqual(a_refund.total_operation_amount, 0) + self.assertEqual(a_refund.period_type, model349_s.period_type) + # Export to BOE + export_to_boe = self.env["l10n.es.aeat.report.export_to_boe"].create( + {"name": "test_export_to_boe.txt"} + ) + export_config_xml_ids = [ + "l10n_es_aeat_mod349.aeat_mod349_main_export_config", + ] + for xml_id in export_config_xml_ids: + export_config = self.env.ref(xml_id) + self.assertTrue(export_to_boe._export_config(model349, export_config)) + # Test report printing + self.env.ref("l10n_es_aeat_mod349.act_report_aeat_mod349_pdf")._render( + "l10n_es_aeat_mod349.report_l10n_es_mod349_pdf", model349.ids, {} + ) + + def test_model_349_with_intermediate_periods(self): + # Create vendor bill and 2 refunds in different periods + inv = self._invoice_purchase_create("2017-01-01") + self._invoice_refund(inv, "2017-02-01", price_unit=50.0) + self._invoice_refund(inv, "2017-03-01", price_unit=50.0) + # Create model + model349_model = self.env["l10n.es.aeat.mod349.report"].with_user( + self.account_manager + ) + model349_1 = model349_model.create( + { + "name": "3490000000001", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "01", + "date_start": "2017-01-01", + "date_end": "2017-01-31", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 January 2017") + model349_1.button_calculate() + self.assertEqual(model349_1.total_partner_records, 1) + self.assertEqual(model349_1.partner_record_ids.total_operation_amount, 300) + + model349_2 = model349_model.create( + { + "name": "3490000000002", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "02", + "date_start": "2017-02-01", + "date_end": "2017-02-28", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 February 2017") + model349_2.button_calculate() + self.assertEqual(model349_2.total_partner_records, 0) + self.assertEqual(model349_2.total_partner_refunds, 1) + self.assertEqual(model349_2.partner_refund_ids.total_origin_amount, 300) + self.assertEqual(model349_2.partner_refund_ids.total_operation_amount, 200) + + model349_3 = model349_model.create( + { + "name": "3490000000003", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2017, + "period_type": "03", + "date_start": "2017-03-01", + "date_end": "2017-03-31", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 March 2017") + model349_3.button_calculate() + self.assertEqual(model349_3.total_partner_records, 0) + self.assertEqual(model349_3.total_partner_refunds, 1) + self.assertEqual(model349_3.partner_refund_ids.total_origin_amount, 200) + self.assertEqual(model349_3.partner_refund_ids.total_operation_amount, 100) + + def test_mod349_errors(self): + # Add some test data + self.customer.write( + {"vat": "BE0411905847", "country_id": self.env.ref("base.be").id} + ) + self.supplier.write( + {"vat": "BG0000100159", "country_id": self.env.ref("base.bg").id} + ) + # Data for 1T 2023 + # Purchase invoices + self._invoice_purchase_create("2023-01-01") + p2 = self._invoice_purchase_create("2023-01-02") + self._invoice_refund(p2, "2023-01-02") + # Sale invoices + self._invoice_sale_create("2023-01-01") + s2 = self._invoice_sale_create("2023-01-02") + self._invoice_refund(s2, "2023-01-02") + # Create model + model349_model = self.env["l10n.es.aeat.mod349.report"].with_user( + self.account_manager + ) + model349_errors = model349_model.create( + { + "name": "3490000000001", + "company_id": self.company.id, + "company_vat": "1234567890", + "contact_name": "Test owner", + "statement_type": "N", + "support_type": "T", + "contact_phone": "911234455", + "year": 2023, + "period_type": "1T", + "date_start": "2023-01-01", + "date_end": "2023-03-31", + } + ) + # Calculate + _logger.debug("Calculate AEAT 349 1T 2023") + model349_errors.button_calculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == self.customer.vat + ) + self.assertTrue(partner_record.partner_record_ok) + + # EL vat + self.customer.write( + {"vat": "EL12345670", "country_id": self.env.ref("base.gr").id} + ) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == self.customer.vat + ) + self.assertTrue(partner_record.partner_record_ok) + + # No vat + self.customer.write({"vat": False, "country_id": self.env.ref("base.be").id}) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == self.customer.vat + ) + self.assertFalse(partner_record.partner_record_ok) + expected_note = self.env._("Without VAT") + self.assertIn(expected_note, partner_record.error_text) + + # No country code in vat and no country + self.customer.write({"vat": "12345670", "country_id": False}) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == self.customer.vat + ) + self.assertFalse(partner_record.partner_record_ok) + expected_notes = [ + self.env._("Without Country"), + self.env._("VAT without country code"), + ] + for expected_note in expected_notes: + self.assertIn(expected_note, partner_record.error_text) + + # No country code in vat and BE country + self.customer.write( + {"vat": "0477472701", "country_id": self.env.ref("base.be").id} + ) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == "BE0477472701" + ) + self.assertTrue(partner_record.partner_record_ok) + # No country code in vat and GR country + self.customer.write( + {"vat": "12345670", "country_id": self.env.ref("base.gr").id} + ) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == "EL12345670" + ) + self.assertTrue(partner_record.partner_record_ok) + # Reset vat and country + self.customer.write( + {"vat": "BE0411905847", "country_id": self.env.ref("base.be").id} + ) + model349_errors.button_recalculate() + partner_record = model349_errors.partner_record_ids.filtered( + lambda x: x.partner_vat == self.customer.vat + ) + self.assertTrue(partner_record.partner_record_ok) diff --git a/l10n_es_aeat_mod349/views/account_move_view.xml b/l10n_es_aeat_mod349/views/account_move_view.xml new file mode 100644 index 00000000000..2e75a680a9e --- /dev/null +++ b/l10n_es_aeat_mod349/views/account_move_view.xml @@ -0,0 +1,38 @@ + + + + account.move + + + + + + + + + + + + account.move.line + + + + + + + + diff --git a/l10n_es_aeat_mod349/views/account_tax_view.xml b/l10n_es_aeat_mod349/views/account_tax_view.xml new file mode 100644 index 00000000000..0c8d0579a85 --- /dev/null +++ b/l10n_es_aeat_mod349/views/account_tax_view.xml @@ -0,0 +1,13 @@ + + + + Tax | add 'aeat_349_operation_key' field (form) + account.tax + + + + + + + + diff --git a/l10n_es_aeat_mod349/views/aeat_349_map_view.xml b/l10n_es_aeat_mod349/views/aeat_349_map_view.xml new file mode 100644 index 00000000000..2465f5646f9 --- /dev/null +++ b/l10n_es_aeat_mod349/views/aeat_349_map_view.xml @@ -0,0 +1,25 @@ + + + + aeat 349 Map + aeat.349.map.line + list,form + + + + aeat.349.map.lines.view.list + aeat.349.map.line + + + + + + + + + diff --git a/l10n_es_aeat_mod349/views/mod349_view.xml b/l10n_es_aeat_mod349/views/mod349_view.xml new file mode 100644 index 00000000000..8890e33b1ae --- /dev/null +++ b/l10n_es_aeat_mod349/views/mod349_view.xml @@ -0,0 +1,272 @@ + + + + + + AEAT 349 Partner record detail (list) + l10n.es.aeat.mod349.partner_record_detail + + + + + + + + + + + + + AEAT 349 Partner record detail (form) + l10n.es.aeat.mod349.partner_record_detail + +
+ + + + + + + + +
+
+
+ + + + AEAT 349 Partner record (list) + l10n.es.aeat.mod349.partner_record + + + + + + + + + + + + + + + AEAT 349 Partner record (form) + l10n.es.aeat.mod349.partner_record + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + AEAT 349 Partner refund detail (list) + l10n.es.aeat.mod349.partner_refund_detail + + + + + + + + + + + + + AEAT 349 Partner refund detail (form) + l10n.es.aeat.mod349.partner_refund_detail + +
+ + + + + + + + +
+
+
+ + + + AEAT 349 Partner refund (list) + l10n.es.aeat.mod349.partner_refund + + + + + + + + + + + + + + + + AEAT 349 Partner refund (form) + l10n.es.aeat.mod349.partner_refund + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + + l10n_es.aeat.mod349.report.list + l10n.es.aeat.mod349.report + + + + AEAT 349 reports= + + + + + + + + + + + + l10n_es.aeat.mod349.report.form + l10n.es.aeat.mod349.report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + AEAT Model 349 + l10n.es.aeat.mod349.report + list,form + Create and query AEAT Model 349 reports + + + + list + + + + + + form + + + + + +
diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000000..97e7ffa0f1c --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,2 @@ +odoo-test-helper +odoo-addon-l10n_es_aeat @ git+https://github.com/OCA/l10n-spain.git@refs/pull/4033/head#subdirectory=l10n_es_aeat \ No newline at end of file