diff --git a/l10n_es_aeat_mod347/data/aeat_export_mod347_partner_data.xml b/l10n_es_aeat_mod347/data/aeat_export_mod347_partner_data.xml
index e2030b403f0..f1239259295 100644
--- a/l10n_es_aeat_mod347/data/aeat_export_mod347_partner_data.xml
+++ b/l10n_es_aeat_mod347/data/aeat_export_mod347_partner_data.xml
@@ -381,14 +381,27 @@
\n"
-" Importe de transmisión de inmueble: ${object."
-"real_estate_transmissions_amount}
\n"
-" Inmuebles primer trimestre: ${object."
-"first_quarter_real_estate_transmission}
\n"
-" Inmuebles segundo trimestre: ${object."
-"second_quarter_real_estate_transmission}
\n"
-" Inmuebles tercer trimestre: ${object."
-"third_quarter_real_estate_transmission}
\n"
-" Inmuebles cuarto trimestre: ${object."
-"fourth_quarter_real_estate_transmission}
\n"
+" Importe de transmisión de inmueble: $"
+"{object.real_estate_transmissions_amount}
\n"
+" Inmuebles primer trimestre: $"
+"{object.first_quarter_real_estate_transmission}
\n"
+" Inmuebles segundo trimestre: $"
+"{object.second_quarter_real_estate_transmission}
\n"
+" Inmuebles tercer trimestre: $"
+"{object.third_quarter_real_estate_transmission}
\n"
+" Inmuebles cuarto trimestre: $"
+"{object.fourth_quarter_real_estate_transmission}
\n"
"
En el documento adjunto se incluyen las facturas en base a las cuales " @@ -113,8 +114,8 @@ msgid "" msgstr "" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:124 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:131 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:125 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:132 #, python-format msgid "- %s (%s)" msgstr "- %s (%s)" @@ -304,6 +305,18 @@ msgstr "" msgid "B - Entregas de bienes y servicios superiores al límite (1)" msgstr "B - Entregas de bienes y servicios superiores al límite (1)" +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__bdns_number +msgid "BDNS Call Number" +msgstr "" + +#. module: l10n_es_aeat_mod347 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:494 +#, python-format +msgid "" +"BDNS Call Number is mandatory for operation key E and it must have 6 digits" +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__partner_bank_id msgid "Bank account" @@ -432,7 +445,7 @@ msgid "Complementary" msgstr "Complemento" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:556 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:583 #, python-format msgid "Compose Email" msgstr "Compose Email" @@ -440,11 +453,11 @@ msgstr "Compose Email" #. module: l10n_es_aeat_mod347 #: model:mail.template,subject:l10n_es_aeat_mod347.email_template_347 msgid "" -"Comprobación datos de modelo 347 año ${object.report_id.year} de ${user." -"company_id.name}" +"Comprobación datos de modelo 347 año ${object.report_id.year} de $" +"{user.company_id.name}" msgstr "" -"Comprobación datos de modelo 347 año ${object.report_id.year} de ${user." -"company_id.name}" +"Comprobación datos de modelo 347 año ${object.report_id.year} de $" +"{user.company_id.name}" #. module: l10n_es_aeat_mod347 #: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod347.view_l10n_es_aeat_mod347_partner_record_form @@ -586,6 +599,12 @@ msgstr "" msgid "F - Ventas agencia viaje" msgstr "F - Ventas agencia viaje" +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__failed_message_ids +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__failed_message_ids +msgid "Failed Messages" +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__first_quarter msgid "First quarter operations" @@ -811,12 +830,24 @@ msgstr "NIF representante legal" msgid "Main Attachment" msgstr "" +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_content +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_content +msgid "Message Content" +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_has_error #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_has_error msgid "Message Delivery error" msgstr "" +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_content +#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_content +msgid "Message content, to be used only in searches" +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_ids #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_ids @@ -890,7 +921,7 @@ msgid "Next Activity Type" msgstr "" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:183 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:184 #, python-format msgid "No Tax Mapping was found" msgstr "No se ha encontrado mapeado de impuestos" @@ -1056,13 +1087,13 @@ msgid "Partner record" msgstr "Registro de empresa" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:137 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:138 #, python-format msgid "Partner record errors:\n" msgstr "Errores de registros de empresas:\n" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:155 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:156 #: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod347.view_l10n_es_aeat_mod347_report_form #, python-format msgid "Partner records" @@ -1101,7 +1132,7 @@ msgid "Planned" msgstr "" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:134 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:135 #, python-format msgid "" "Please review partner and real estate records, some of them are in red " @@ -1200,7 +1231,7 @@ msgid "Real estate info" msgstr "Información de inmuebles" #. module: l10n_es_aeat_mod347 -#: code:addons/l10n_es_aeat_mod347/models/mod347.py:141 +#: code:addons/l10n_es_aeat_mod347/models/mod347.py:142 #, python-format msgid "Real estate record errors:\n" msgstr "Errores de registros de inmuebles:\n" @@ -1246,6 +1277,13 @@ msgstr "Registros" msgid "Records in exception" msgstr "Registros con excepción" +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__bdns_number +msgid "" +"Reference of Call of the subsidy or assistance in National Grands Database " +"(BDNS)." +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__related_goods_operation msgid "Related Goods Operation" @@ -1563,6 +1601,11 @@ msgid "" msgstr "" "NIE de profesionales establecidos en otros países miembros sin NIF nacional." +#. module: l10n_es_aeat_mod347 +#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__visible_bdns_number +msgid "Visible Bdns Number" +msgstr "" + #. module: l10n_es_aeat_mod347 #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__website_message_ids #: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__website_message_ids @@ -1644,16 +1687,16 @@ msgstr "" #~ " % endif\n" #~ " % if object.real_estate_transmissions_amount:\n" #~ "
\n"
-#~ " Importe de transmisión de inmueble: ${object."
-#~ "real_estate_transmissions_amount}
\n"
-#~ " Inmuebles primer trimestre: ${object."
-#~ "first_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles segundo trimestre: ${object."
-#~ "second_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles tercer trimestre: ${object."
-#~ "third_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles cuarto trimestre: ${object."
-#~ "fourth_quarter_real_estate_transmission_amount}
\n"
+#~ " Importe de transmisión de inmueble: $"
+#~ "{object.real_estate_transmissions_amount}
\n"
+#~ " Inmuebles primer trimestre: $"
+#~ "{object.first_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles segundo trimestre: $"
+#~ "{object.second_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles tercer trimestre: $"
+#~ "{object.third_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles cuarto trimestre: $"
+#~ "{object.fourth_quarter_real_estate_transmission_amount}
\n"
#~ "
En el documento adjunto se incluyen las facturas en base a las " @@ -1738,16 +1781,16 @@ msgstr "" #~ " % endif\n" #~ " % if object.real_estate_transmissions_amount:\n" #~ "
\n"
-#~ " Importe de transmisión de inmueble: ${object."
-#~ "real_estate_transmissions_amount}
\n"
-#~ " Inmuebles primer trimestre: ${object."
-#~ "first_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles segundo trimestre: ${object."
-#~ "second_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles tercer trimestre: ${object."
-#~ "third_quarter_real_estate_transmission_amount}
\n"
-#~ " Inmuebles cuarto trimestre: ${object."
-#~ "fourth_quarter_real_estate_transmission_amount}
\n"
+#~ " Importe de transmisión de inmueble: $"
+#~ "{object.real_estate_transmissions_amount}
\n"
+#~ " Inmuebles primer trimestre: $"
+#~ "{object.first_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles segundo trimestre: $"
+#~ "{object.second_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles tercer trimestre: $"
+#~ "{object.third_quarter_real_estate_transmission_amount}
\n"
+#~ " Inmuebles cuarto trimestre: $"
+#~ "{object.fourth_quarter_real_estate_transmission_amount}
\n"
#~ "
En el documento adjunto se incluyen las facturas en base a las "
diff --git a/l10n_es_aeat_mod347/i18n/l10n_es_aeat_mod347.pot b/l10n_es_aeat_mod347/i18n/l10n_es_aeat_mod347.pot
index fa6ba46c329..ea5baa36955 100644
--- a/l10n_es_aeat_mod347/i18n/l10n_es_aeat_mod347.pot
+++ b/l10n_es_aeat_mod347/i18n/l10n_es_aeat_mod347.pot
@@ -6,6 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2026-02-26 08:51+0000\n"
+"PO-Revision-Date: 2026-02-26 08:51+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -91,8 +93,8 @@ msgid "\n"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:124
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:131
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:125
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:132
#, python-format
msgid "- %s (%s)"
msgstr ""
@@ -276,6 +278,17 @@ msgstr ""
msgid "B - Entregas de bienes y servicios superiores al límite (1)"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__bdns_number
+msgid "BDNS Call Number"
+msgstr ""
+
+#. module: l10n_es_aeat_mod347
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:494
+#, python-format
+msgid "BDNS Call Number is mandatory for operation key E and it must have 6 digits"
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__partner_bank_id
msgid "Bank account"
@@ -399,7 +412,7 @@ msgid "Complementary"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:556
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:583
#, python-format
msgid "Compose Email"
msgstr ""
@@ -540,6 +553,12 @@ msgstr ""
msgid "F - Ventas agencia viaje"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__failed_message_ids
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__failed_message_ids
+msgid "Failed Messages"
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__first_quarter
msgid "First quarter operations"
@@ -757,12 +776,24 @@ msgstr ""
msgid "Main Attachment"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_content
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_content
+msgid "Message Content"
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_has_error
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_has_error
msgid "Message Delivery error"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_content
+#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_content
+msgid "Message content, to be used only in searches"
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__message_ids
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__message_ids
@@ -835,7 +866,7 @@ msgid "Next Activity Type"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:183
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:184
#, python-format
msgid "No Tax Mapping was found"
msgstr ""
@@ -982,14 +1013,14 @@ msgid "Partner record"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:137
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:138
#, python-format
msgid "Partner record errors:\n"
""
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:155
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:156
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_mod347.view_l10n_es_aeat_mod347_report_form
#, python-format
msgid "Partner records"
@@ -1027,7 +1058,7 @@ msgid "Planned"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:134
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:135
#, python-format
msgid "Please review partner and real estate records, some of them are in red color:\n"
"\n"
@@ -1122,7 +1153,7 @@ msgid "Real estate info"
msgstr ""
#. module: l10n_es_aeat_mod347
-#: code:addons/l10n_es_aeat_mod347/models/mod347.py:141
+#: code:addons/l10n_es_aeat_mod347/models/mod347.py:142
#, python-format
msgid "Real estate record errors:\n"
""
@@ -1169,6 +1200,11 @@ msgstr ""
msgid "Records in exception"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,help:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__bdns_number
+msgid "Reference of Call of the subsidy or assistance in National Grands Database (BDNS)."
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__related_goods_operation
msgid "Related Goods Operation"
@@ -1427,6 +1463,11 @@ msgstr ""
msgid "VAT number for professionals established in other state member without national VAT"
msgstr ""
+#. module: l10n_es_aeat_mod347
+#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__visible_bdns_number
+msgid "Visible Bdns Number"
+msgstr ""
+
#. module: l10n_es_aeat_mod347
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_partner_record__website_message_ids
#: model:ir.model.fields,field_description:l10n_es_aeat_mod347.field_l10n_es_aeat_mod347_report__website_message_ids
diff --git a/l10n_es_aeat_mod347/models/mod347.py b/l10n_es_aeat_mod347/models/mod347.py
index 11997523a17..f7683ed7429 100644
--- a/l10n_es_aeat_mod347/models/mod347.py
+++ b/l10n_es_aeat_mod347/models/mod347.py
@@ -15,6 +15,7 @@
from calendar import monthrange
import odoo.addons.decimal_precision as dp
+
KEY_TAX_MAPPING = {
'A': 'l10n_es_aeat_mod347.aeat_mod347_map_a',
'B': 'l10n_es_aeat_mod347.aeat_mod347_map_b',
@@ -471,11 +472,30 @@ def _default_record_id(self):
store=True,
help='Checked if this record is OK',
)
+ bdns_number = fields.Char(
+ string="BDNS Call Number",
+ help="Reference of Call of the subsidy or assistance in National Grands "
+ "Database (BDNS).",
+ )
+ visible_bdns_number = fields.Boolean(
+ compute="_compute_visible_bdns_number")
@api.depends('partner_country_code', 'partner_state_code', 'partner_vat',
- 'community_vat')
+ 'community_vat', "operation_key", "bdns_number")
def _compute_check_ok(self):
for record in self:
+ if (record.operation_key == "E" and not record.bdns_number) or (
+ record.operation_key == "E"
+ and record.bdns_number
+ and len(record.bdns_number) != 6
+ ):
+ # BDSN can have a maximum of 6 digits
+ raise exceptions.ValidationError(
+ _(
+ "BDNS Call Number is mandatory for operation key E and it must"
+ " have 6 digits"
+ )
+ )
record.check_ok = (
record.partner_country_code and
record.partner_state_code and
@@ -483,6 +503,13 @@ def _compute_check_ok(self):
(record.partner_vat or record.partner_country_code != 'ES')
)
+ @api.depends("operation_key", "report_id.year")
+ def _compute_visible_bdns_number(self):
+ for record in self:
+ record.visible_bdns_number = (
+ record.operation_key == "E" and record.report_id.year >= 2025
+ )
+
@api.onchange('partner_id')
def _onchange_partner_id(self):
"""Loads some partner data when the selected partner changes."""
diff --git a/l10n_es_aeat_mod347/views/mod347_view.xml b/l10n_es_aeat_mod347/views/mod347_view.xml
index 413c96c867b..52a29144aa9 100644
--- a/l10n_es_aeat_mod347/views/mod347_view.xml
+++ b/l10n_es_aeat_mod347/views/mod347_view.xml
@@ -115,6 +115,11 @@