19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:28 +01:00
parent ff721d030e
commit 7721452493
1826 changed files with 124775 additions and 274114 deletions

View file

@ -26,35 +26,14 @@ pip install odoo-bringout-oca-ocb-l10n_eu_oss
## Dependencies
This addon depends on:
- account
## Manifest Information
- **Name**: EU One Stop Shop (OSS)
- **Version**: N/A
- **Category**: Accounting/Localizations
- **License**: LGPL-3
- **Installable**: False
## Source
Based on [OCA/OCB](https://github.com/OCA/OCB) branch 16.0, addon `l10n_eu_oss`.
- Repository: https://github.com/OCA/OCB
- Branch: 19.0
- Path: addons/l10n_eu_oss
## License
This package maintains the original LGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md
This package preserves the original LGPL-3 license.

View file

@ -2,11 +2,6 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
from odoo import api, SUPERUSER_ID
def l10n_eu_oss_post_init(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {})
env['res.company']._map_all_eu_companies_taxes()
def l10n_eu_oss_uninstall(cr, registry):
cr.execute("DELETE FROM ir_model_data WHERE module = 'l10n_eu_oss' and model in ('account.tax.group', 'account.account');")
def l10n_eu_oss_uninstall(env):
env.cr.execute("DELETE FROM ir_model_data WHERE module = 'l10n_eu_oss' and model in ('account.tax.group', 'account.account');")

View file

@ -23,10 +23,9 @@ Council Implementing Regulation (EU) 2019/2026
""",
'depends': ['account'],
'data': [
'views/res_config_settings_views.xml',
'data/account_account_tag.xml',
],
'post_init_hook': 'l10n_eu_oss_post_init',
'uninstall_hook': 'l10n_eu_oss_uninstall',
'author': 'Odoo S.A.',
'license': 'LGPL-3',
}

View file

@ -4,11 +4,29 @@
<record id="tag_oss" model="account.account.tag">
<field name="name">OSS</field>
<field name="name@cs">OSS</field>
<field name="name@nl">OSS</field>
<field name="name@fr">OSS</field>
<field name="name@it">OSS</field>
<field name="name@de">OSS</field>
<field name="name@pl">OSS</field>
<field name="name@fi">OSS</field>
<field name="name@lt">OSS</field>
<field name="name@es">OSS</field>
<field name="applicability">taxes</field>
</record>
<record id="tag_eu_import" model="account.account.tag">
<field name="name">non-EU origin</field>
<field name="name@cs">Původ mimo EU</field>
<field name="name@nl">Niet-EU-oorsprong</field>
<field name="name@fr">Origine hors UE</field>
<field name="name@it">Origine non UE</field>
<field name="name@de">Nicht-EU-Ursprung</field>
<field name="name@pl">Pochodzenie spoza UE</field>
<field name="name@fi">EU:n ulkopuolinen alkuperä</field>
<field name="name@lt">Ne ES kilmės šalis</field>
<field name="name@es">Origen no UE</field>
<field name="applicability">products</field>
</record>

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Bulgarian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/bg/>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Фирми"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Конфигурационни настройки"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Име за показване"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -17,9 +17,10 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Šablon účtové osnovy"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopie)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +32,39 @@ msgstr "Společnosti"
msgid "Config Settings"
msgstr "Nastavení konfigurace"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Zobrazovací název"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Je evropskou zemi?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Obnovit daňové mapování"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "původ mimo EU"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Danish <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/da/>\n"
"Language: da\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 5.12.2\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Kontoplansskabelon"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,39 @@ msgstr "Virksomheder"
msgid "Config Settings"
msgstr "Konfigurér indstillinger"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Vis navn"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Er det et europæisk land?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Genindlæs skatteallokering"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Oprindelse uden for EU"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# "Larissa Manderfeld (lman)" <lman@odoo.com>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-12-24 10:24+0000\n"
"Last-Translator: \"Larissa Manderfeld (lman)\" <lman@odoo.com>\n"
"Language-Team: German <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/de/>\n"
"Language: de\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Kontenplanvorlage"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopie)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,42 @@ msgstr "Unternehmen"
msgid "Config Settings"
msgstr "Konfigurationseinstellungen"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Ist ein europäisches Land?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Steuergruppen"
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Steuerzuordnung aktualisieren"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
"Um die OSS-Steuerzuordnung ordnungsgemäß zu konfigurieren, müssen in der von "
"Ihnen verwendeten inländischen Steuergruppe die erforderlichen Konten "
"definiert sein."
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Nicht-EU-Herkunft"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr "Steuergruppen anzeigen"

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Greek <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/el/>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Εταιρίες"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Ρυθμίσεις διαμόρφωσης"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Εμφάνιση Ονόματος"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "Κωδικός"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# "Noemi Pla Garcia (nopl)" <nopl@odoo.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2026-02-21 10:10+0000\n"
"Last-Translator: \"Noemi Pla Garcia (nopl)\" <nopl@odoo.com>\n"
"Language-Team: Spanish <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/es/>\n"
"Language: es\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Plantilla de plan contable"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Copia)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,39 @@ msgstr "Compañías"
msgid "Config Settings"
msgstr "Ajustes de configuración"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "¿Se trata de un país europeo?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Grupos de impuestos"
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Actualizar el mapeo de impuestos"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Origen no UE"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr "Ver grupos de impuestos"

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Estonian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/et/>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Ettevõtted"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Seadistused"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Kuvatav nimi"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# Saara Hakanen <sahak@odoo.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2026-01-24 19:10+0000\n"
"Last-Translator: Saara Hakanen <sahak@odoo.com>\n"
"Language-Team: Finnish <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/fi/>\n"
"Language: fi\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Tilikarttamalli"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopio)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,41 @@ msgstr "Yritykset"
msgid "Config Settings"
msgstr "Kokoonpanoasetukset"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Näyttönimi"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Onko Euroopan maa?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Veroryhmät"
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Päivitä verokartoitus"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
"Määrittääksesi kunnolla OSS-verokartoituksen, käyttämässäsi kotimaisessa "
"veroryhmässä on oltava eriteltynä pakolliset tilit."
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "EU:n ulkopuolinen alkuperä"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr "Katso veroryhmät"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -14,12 +14,13 @@ msgstr ""
"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"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Modèle de plan comptable"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Copie)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +32,39 @@ msgstr "Entreprises"
msgid "Config Settings"
msgstr "Paramètres de configuration"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nom d'affichage"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Est un pays européen ?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Actualiser le mappage fiscal"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Origine hors UE"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,74 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Croatian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/hr/>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Tvrtke"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Konfiguracijske postavke"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Naziv"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Hungarian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/hu/>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Vállalatok"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Beállítások"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Megjelenített név"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# "Marianna Ciofani (cima)" <cima@odoo.com>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-12-20 09:33+0000\n"
"Last-Translator: \"Marianna Ciofani (cima)\" <cima@odoo.com>\n"
"Language-Team: Italian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/it/>\n"
"Language: it\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Modello piano dei conti"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Copia)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,41 @@ msgstr "Aziende"
msgid "Config Settings"
msgstr "Configura impostazioni"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "È un Paese europeo?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Gruppi imposta"
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Aggiorna mappatura imposte"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
"Per configurare correttamente la mappatura fiscale OSS, il gruppo fiscale "
"nazionale che stai utilizzando deve avere i conti necessari definiti."
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Origine non UE"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr "Visualizza gruppi imposte"

View file

@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-12-30 19:06+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -16,8 +16,9 @@ msgstr ""
"Plural-Forms: \n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
@ -30,22 +31,39 @@ msgstr ""
msgid "Config Settings"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -14,12 +14,15 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > "
"19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? "
"1 : 2);\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Sąskaitų plano šablonas"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopija)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +34,39 @@ msgstr "Įmonės"
msgid "Config Settings"
msgstr "Konfigūracijos nustatymai"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Rodomas pavadinimas"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Ar Europos šalis?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Atnaujinti mokesčių susiejimą"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Ne ES kilmės šalis"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Latvian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/lv/>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Uzņēmumi"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Konfigurācijas uzstādījumi"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Parādīt vārdu"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,25 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
# * l10n_eu_oss
#
# Bren Driesen <brdri@odoo.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2026-02-28 09:33+0000\n"
"Last-Translator: Bren Driesen <brdri@odoo.com>\n"
"Language-Team: Dutch <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/nl/>\n"
"Language: nl\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Sjabloon grootboekschema"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopie)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +35,41 @@ msgstr "Bedrijven"
msgid "Config Settings"
msgstr "Configuratie-instellingen"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Schermnaam"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Is een Europees land?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Btw-groepen"
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Btw-mapping vernieuwen"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
"Om OSS-btw-codetoewijzing correct te configureren, moet de binnenlandse "
"belastinggroep die u gebruikt over de nodige accounts beschikken."
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Niet-EU-herkomst"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr "Belastinggroepen bekijken"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-28 08:32+0000\n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-01-28 08:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -14,12 +14,14 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
msgid "Account Chart Template"
msgstr "Szablon planu kont"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s (Kopiuj)"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
@ -31,22 +33,39 @@ msgstr "Firmy"
msgid "Config Settings"
msgstr "Konfiguracja ustawień"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nazwa wyświetlana"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Jest krajem europejskim?"
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_oss
msgid "OSS"
msgstr "OSS"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#: model_terms:ir.ui.view,arch_db:l10n_eu_oss.res_config_settings_view_form
msgid "Refresh tax mapping"
msgstr "Odśwież mapowanie podatkowe"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
msgid "non-EU origin"
msgstr "Pochodzenie spoza UE"
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Portuguese <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/pt/>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Empresas"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Configurações"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nome"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,76 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
# Betty Keresztesi <betty@soft4biz.ro>, 2025.
# Dorin Hongu <dhongu@gmail.com>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-12-31 14:56+0000\n"
"Last-Translator: Dorin Hongu <dhongu@gmail.com>\n"
"Language-Team: Romanian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/ro/>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2;\n"
"X-Generator: Weblate 5.14.3\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr "%(tax_name)s"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Companii"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Setări de configurare"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Nume afișat"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr "Este o țară europeană?"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr "Grupuri taxă"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Slovak <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/sk/>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Spoločnosti"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Nastavenia konfigurácie"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Zobrazovaný názov"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,74 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Slovenian <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/sl/>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
"n%100==4 ? 2 : 3;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Podjetja"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Uredi nastavitve"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_eu_oss
#
# Weblate <noreply-mt-weblate@weblate.org>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 19.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-30 19:06+0000\n"
"PO-Revision-Date: 2025-11-17 03:11+0000\n"
"Last-Translator: Weblate <noreply-mt-weblate@weblate.org>\n"
"Language-Team: Swedish <https://translate.odoo.com/projects/odoo-19-l10n/"
"l10n_eu_oss/sv/>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n"
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "%(tax_name)s (Copy)"
msgstr ""
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_company
msgid "Companies"
msgstr "Bolag"
#. module: l10n_eu_oss
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
msgid "Config Settings"
msgstr "Inställningar"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__display_name
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__display_name
msgid "Display Name"
msgstr "Visningsnamn"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_company__id
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__id
msgid "ID"
msgstr "ID"
#. module: l10n_eu_oss
#: model:ir.model.fields,field_description:l10n_eu_oss.field_res_config_settings__l10n_eu_oss_eu_country
msgid "Is European country?"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "Tax Groups"
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid ""
"To properly configure OSS tax mapping, the domestic tax group you are using "
"must have the necessary accounts defined."
msgstr ""
#. module: l10n_eu_oss
#. odoo-python
#: code:addons/l10n_eu_oss/models/res_company.py:0
msgid "View Tax Groups"
msgstr ""

View file

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import chart_template
from . import eu_account_map
from . import eu_field_map
from . import eu_tax_map
from . import eu_tag_map
from . import res_company

View file

@ -1,15 +0,0 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
class AccountChartTemplate(models.Model):
_inherit = 'account.chart.template'
def _load(self, company):
rslt = super()._load(company)
if company.account_fiscal_country_id in self.env.ref('base.europe').country_ids:
company._map_eu_taxes()
return rslt

View file

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
"""
The EU_ACCOUNT_MAP answers the question: "which existing account should be used for VAT Payable OSS?"
{
'coa': 'account_code'
}
"""
EU_ACCOUNT_MAP = {
'de_skr03': '1767',
'de_skr04': '3817',
}

View file

@ -0,0 +1,17 @@
"""
The EU_FIELD_MAP contains localization specific fields for account.tax
"""
EU_FIELD_MAP = {
'es_assec': {
'l10n_es_type': 'no_sujeto_loc',
},
'es_common': {
'l10n_es_type': 'no_sujeto_loc',
},
'es_full': {
'l10n_es_type': 'no_sujeto_loc',
},
'es_pymes': {
'l10n_es_type': 'no_sujeto_loc',
},
}

View file

@ -16,196 +16,220 @@ The EU_TAG_MAP answers the question: "which tag should I apply on the OSS tax re
EU_TAG_MAP = {
# Austria
'l10n_at.l10n_at_chart_template': {
'at': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Belgium
'l10n_be.l10nbe_chart_template': {
'be_comp': {
'invoice_base_tag': 'l10n_be.tax_report_line_47_tag',
'invoice_tax_tag': None,
'refund_base_tag': 'l10n_be.tax_report_line_49_tag',
'refund_tax_tag': None,
},
'be_asso': {
'invoice_base_tag': 'l10n_be.tax_report_line_47_tag',
'invoice_tax_tag': None,
'refund_base_tag': 'l10n_be.tax_report_line_49_tag',
'refund_tax_tag': None,
},
# Bulgaria
'BG': {
'bg': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Croatia
'l10n_hr.l10n_hr_chart_template_rrif': {
'hr': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Cyprus
'CY': {
'cy': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Czech - Done in 13.0 - CoA not available yet
'l10n_cz.cz_chart_template': {
'cz': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Denmark
'l10n_dk.dk_chart_template': {
'invoice_base_tag': None,
'dk': {
'invoice_base_tag': 'l10n_dk.account_tax_report_line_section_b_products_non_eu_tag',
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Estonia - Done in 13.0 - CoA not available yet
'EE': {
'ee': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Finland
'l10n_fi.fi_chart_template': {
'fi': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# France
'l10n_fr.l10n_fr_pcg_chart_template': {
'invoice_base_tag': 'l10n_fr.tax_report_E3_tag',
'fr': {
'invoice_base_tag': 'l10n_fr_account.tax_report_E3_tag',
'invoice_tax_tag': None,
'refund_base_tag': 'l10n_fr.tax_report_F8_tag',
'refund_base_tag': 'l10n_fr_account.tax_report_F8_tag',
'refund_tax_tag': None,
},
# Germany SKR03
'l10n_de_skr03.l10n_de_chart_template': {
'de_skr03': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Germany SKR04
'l10n_de_skr04.l10n_chart_de_skr04': {
'de_skr04': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Greece
'l10n_gr.l10n_gr_chart_template': {
'gr': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Hungary
'l10n_hu.hungarian_chart_template': {
'hu': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Ireland
'l10n_ie.l10n_ie': {
'ie': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Italy
'l10n_it.l10n_it_chart_template_generic': {
'it': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Latvia
'LV': {
'lv': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Lithuania
'l10n_lt.account_chart_template_lithuania': {
'lt': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Luxembourg
'l10n_lu.lu_2011_chart_1': {
'lu': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Malta - Done in 13.0 - CoA not available yet
'MT': {
'mt': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Netherlands
'l10n_nl.l10nnl_chart_template': {
'nl': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Poland
'l10n_pl.pl_chart_template': {
'pl': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Portugal
'l10n_pt.pt_chart_template': {
'pt': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Romania
'l10n_ro.ro_chart_template': {
'ro': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Slovakia - Done in 13.0 - CoA not available yet
'l10n_sk.sk_chart_template': {
'sk': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Slovenia
'l10n_si.gd_chart': {
'si': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Spain
'l10n_es.account_chart_template_common': {
'invoice_base_tag': "l10n_es.mod_303_124",
'es_assec': {
'invoice_base_tag': "l10n_es.mod_303_casilla_124_balance",
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
'es_common': {
'invoice_base_tag': "l10n_es.mod_303_casilla_124_balance",
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
'es_full': {
'invoice_base_tag': "l10n_es.mod_303_casilla_124_balance",
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
'es_pymes': {
'invoice_base_tag': "l10n_es.mod_303_casilla_124_balance",
'invoice_tax_tag': None,
'refund_base_tag': None,
'refund_tax_tag': None,
},
# Sweden
'l10n_se.l10nse_chart_template': {
'se': {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,

View file

@ -1,12 +1,17 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import re
from itertools import product
from odoo import Command, api, models
from odoo import Command, _, api, models
from odoo.exceptions import RedirectWarning
from .eu_account_map import EU_ACCOUNT_MAP
from .eu_field_map import EU_FIELD_MAP
from .eu_tag_map import EU_TAG_MAP
from .eu_tax_map import EU_TAX_MAP
class Company(models.Model):
class ResCompany(models.Model):
_inherit = 'res.company'
@api.model
@ -22,27 +27,80 @@ class Company(models.Model):
'''
eu_countries = self.env.ref('base.europe').country_ids
oss_tax_groups = self.env['ir.model.data'].search([
('module', '=', 'l10n_eu_oss'),
('name', 'ilike', 'oss_tax_group'),
('module', '=', 'account'),
('model', '=', 'account.tax.group')])
for company in self:
# instantiate OSS taxes on the first branch with a TAX ID, default on root company
company = company.parent_ids.filtered(lambda c: c.vat)[-1:] or company.root_id
invoice_repartition_lines, refund_repartition_lines = company._get_repartition_lines_oss()
taxes = self.env['account.tax'].search([
*self.env['account.tax']._check_company_domain(company),
('type_tax_use', '=', 'sale'),
('amount_type', '=', 'percent'),
('company_id', '=', company.id),
('country_id', '=', company.account_fiscal_country_id.id),
('tax_group_id', 'not in', oss_tax_groups.mapped('res_id'))])
('tax_group_id', 'not in', oss_tax_groups.mapped('res_id'))
])
multi_tax_reports_countries_fpos = self.env['account.fiscal.position'].search([
('company_id', '=', company.id),
('foreign_vat', '!=', False),
])
oss_countries = eu_countries - company.account_fiscal_country_id - multi_tax_reports_countries_fpos.country_id
tg = self.env['account.tax.group'].search([
*self.env['account.tax.group']._check_company_domain(company),
('tax_payable_account_id', '!=', False),
('tax_receivable_account_id', '!=', False)], limit=1)
if not tg:
raise RedirectWarning(
self.env._("To properly configure OSS tax mapping, the domestic tax group you are using must have the necessary accounts defined."),
self.env['account.tax.group'].search(self.env['account.tax.group']._check_company_domain(company))._get_records_action(name=self.env._("Tax Groups")),
self.env._("View Tax Groups"),
)
default_oss_payable_account = self.env['account.account']
eu_vat_country_group_id = self.env.ref('account.europe_vat').id
eu_b2c_fp = self.env['account.fiscal.position'].search([
('company_id', '=', company.id),
('country_group_id', '=', eu_vat_country_group_id),
('auto_apply', '=', True),
('vat_required', '=', False),
], limit=1)
offset = 1
if eu_b2c_fp:
# oss fp must come before eu b2c fp
oss_fp_sequence = eu_b2c_fp.sequence
to_bump = eu_b2c_fp | self.env['account.fiscal.position'].search([
('company_id', '=', company.id),
('sequence', '>', oss_fp_sequence),
])
else:
eu_b2b_fp = self.env['account.fiscal.position'].search([
('company_id', '=', company.id),
('country_group_id', '=', eu_vat_country_group_id),
('auto_apply', '=', True),
('vat_required', '=', True),
], limit=1)
if eu_b2b_fp:
# oss fp must come after eu b2b fp
oss_fp_sequence = eu_b2b_fp.sequence + 1
offset = 2
to_bump = self.env['account.fiscal.position'].search([
('company_id', '=', company.id),
('sequence', '>', eu_b2b_fp.sequence),
])
else:
oss_fp_sequence = self.env['account.fiscal.position'].search([
('company_id', '=', company.id)],
limit=1, order='sequence desc',
).sequence + 1
to_bump = []
for fp in to_bump:
fp.sequence += offset
for destination_country in oss_countries:
mapping = []
fpos = self.env['account.fiscal.position'].search([
('country_id', '=', destination_country.id),
('company_id', '=', company.id),
('country_id', '=', destination_country.id),
('auto_apply', '=', True),
('vat_required', '=', False),
('foreign_vat', '=', False)], limit=1)
@ -52,86 +110,138 @@ class Company(models.Model):
'country_id': destination_country.id,
'company_id': company.id,
'auto_apply': True,
'sequence': oss_fp_sequence,
})
foreign_taxes = {tax.amount: tax for tax in fpos.tax_ids.tax_dest_id if tax.amount_type == 'percent'}
foreign_taxes = {tax.amount: tax for tax in fpos.tax_ids if tax.amount_type == 'percent'}
for domestic_tax in taxes:
tax_amount = EU_TAX_MAP.get((company.account_fiscal_country_id.code, domestic_tax.amount, destination_country.code), False)
if tax_amount and domestic_tax not in fpos.tax_ids.tax_src_id:
tax_amount = EU_TAX_MAP.get((domestic_tax.country_id.code, domestic_tax.amount, destination_country.code), False)
if tax_amount and domestic_tax not in fpos.tax_ids.original_tax_ids:
if not foreign_taxes.get(tax_amount, False):
oss_tax_group_local_xml_id = f"oss_tax_group_{str(tax_amount).replace('.', '_')}"
if not self.env.ref(f"l10n_eu_oss.{oss_tax_group_local_xml_id}", raise_if_not_found=False):
oss_tax_group_local_xml_id = f"{company.id}_oss_tax_group_{str(tax_amount).replace('.', '_')}_{company.account_fiscal_country_id.code}"
if not self.env.ref(f"account.{oss_tax_group_local_xml_id}", raise_if_not_found=False):
if not default_oss_payable_account:
default_oss_payable_account = self.env['account.account'].create([{
'name': f'{tg.tax_payable_account_id.name} OSS',
'code': self.env['account.account']._search_new_account_code(tg.tax_payable_account_id.with_company(company).code),
'account_type': tg.tax_payable_account_id.account_type,
'reconcile': tg.tax_payable_account_id.reconcile,
'non_trade': tg.tax_payable_account_id.non_trade,
'company_ids': [Command.link(company.id)],
}])
default_oss_receivable_account = self.env['account.account'].create([{
'name': f'{tg.tax_receivable_account_id.name} OSS',
'code': self.env['account.account']._search_new_account_code(tg.tax_receivable_account_id.with_company(company).code),
'account_type': tg.tax_receivable_account_id.account_type,
'reconcile': tg.tax_receivable_account_id.reconcile,
'non_trade': tg.tax_receivable_account_id.non_trade,
'company_ids': [Command.link(company.id)],
}])
self.env['ir.model.data'].create({
'name': oss_tax_group_local_xml_id,
'module': 'l10n_eu_oss',
'module': 'account',
'model': 'account.tax.group',
'res_id': self.env['account.tax.group'].create({'name': f'OSS {tax_amount}%'}).id,
'res_id': self.env['account.tax.group'].create({
'name': f'OSS {tax_amount}%',
'country_id': company.account_fiscal_country_id.id,
'company_id': company.id,
'tax_payable_account_id': default_oss_payable_account.id,
'tax_receivable_account_id': default_oss_receivable_account.id,
}).id,
'noupdate': True,
})
foreign_tax_name = f'{tax_amount}% {destination_country.code} {destination_country.vat_label}'
existing_foreign_tax = self.env['account.tax'].search([
('company_id', 'child_of', company.root_id.id),
('name', 'like', foreign_tax_name),
('type_tax_use', '=', 'sale'),
('country_id', '=', company.account_fiscal_country_id.id),
], order='sequence,id desc', limit=1)
foreign_tax_copy_name = existing_foreign_tax and _('%(tax_name)s (Copy)', tax_name=existing_foreign_tax.name)
extra_fields = company._get_country_specific_account_tax_fields()
foreign_taxes[tax_amount] = self.env['account.tax'].create({
'name': f'{tax_amount}% {destination_country.code} {destination_country.vat_label}',
'name': foreign_tax_copy_name or foreign_tax_name,
'amount': tax_amount,
'invoice_repartition_line_ids': invoice_repartition_lines,
'refund_repartition_line_ids': refund_repartition_lines,
'type_tax_use': 'sale',
'description': f"{tax_amount}%",
'tax_group_id': self.env.ref(f'l10n_eu_oss.{oss_tax_group_local_xml_id}').id,
'tax_group_id': self.env.ref(f'account.{oss_tax_group_local_xml_id}').id,
'country_id': company.account_fiscal_country_id.id,
'sequence': 1000,
'company_id': company.id,
'fiscal_position_ids': [Command.link(fpos.id)],
'original_tax_ids': [Command.link(domestic_tax.id)],
**extra_fields,
})
mapping.append((0, 0, {'tax_src_id': domestic_tax.id, 'tax_dest_id': foreign_taxes[tax_amount].id}))
if mapping:
fpos.write({
'tax_ids': mapping
})
def _get_repartition_lines_oss(self):
self.ensure_one()
defaults = self.env['account.tax'].with_company(self).default_get(['invoice_repartition_line_ids', 'refund_repartition_line_ids'])
oss_account, oss_tags = self._get_oss_account(), self._get_oss_tags()
base_line, tax_line, vals = 0, 1, 2
for doc_type in 'invoice', 'refund':
repartition_line_ids = {}
for doc_type, rep_type in product(('invoice', 'refund'), ('base', 'tax')):
vals = {'document_type': doc_type, 'repartition_type': rep_type, 'tag_ids': [Command.link(tag.id) for tag in oss_tags[f'{doc_type}_{rep_type}_tag']]}
if oss_account:
defaults[f'{doc_type}_repartition_line_ids'][tax_line][vals]['account_id'] = oss_account.id
if oss_tags:
defaults[f'{doc_type}_repartition_line_ids'][base_line][vals]['tag_ids'] += [Command.link(tag.id) for tag in oss_tags[f'{doc_type}_base_tag']]
defaults[f'{doc_type}_repartition_line_ids'][tax_line][vals]['tag_ids'] += [Command.link(tag.id) for tag in oss_tags[f'{doc_type}_tax_tag']]
return defaults['invoice_repartition_line_ids'], defaults['refund_repartition_line_ids']
vals['account_id'] = oss_account.id
repartition_line_ids.setdefault(doc_type, []).append(Command.create(vals))
return repartition_line_ids['invoice'], repartition_line_ids['refund']
def _get_oss_account(self):
self.ensure_one()
if not self.env.ref(f'l10n_eu_oss.oss_tax_account_company_{self.id}', raise_if_not_found=False):
if not (oss_account := self.env.ref(f'l10n_eu_oss.oss_tax_account_company_{self.id}', raise_if_not_found=False)):
oss_account = self._create_oss_account()
return oss_account
def _create_oss_account(self):
if (
self.chart_template in EU_ACCOUNT_MAP
and (oss_account_if_exists :=
self.env['account.account'].with_company(self).search([
('company_ids', '=', self.id),
('code', '=', EU_ACCOUNT_MAP[self.chart_template])
])
)
):
oss_account = oss_account_if_exists
else:
sales_tax_accounts = self.env['account.tax'].search([
*self.env['account.tax']._check_company_domain(self),
('type_tax_use', '=', 'sale'),
('company_id', '=', self.id)
]).invoice_repartition_line_ids.mapped('account_id')
if not sales_tax_accounts:
return False
new_code = self.env['account.account']._search_new_account_code(self, len(sales_tax_accounts[0].code), sales_tax_accounts[0].code[:-2])
new_code = self.env['account.account'].with_company(self)._search_new_account_code(sales_tax_accounts[0].with_company(self).code)
oss_account = self.env['account.account'].create({
'name': f'{sales_tax_accounts[0].name} OSS',
'code': new_code,
'account_type': sales_tax_accounts[0].account_type,
'company_id': self.id,
'company_ids': [Command.link(self.id)],
'tag_ids': [(4, tag.id, 0) for tag in sales_tax_accounts[0].tag_ids],
})
self.env['ir.model.data'].create({
'name': f'oss_tax_account_company_{self.id}',
'module': 'l10n_eu_oss',
'model': 'account.account',
'res_id': oss_account.id,
'noupdate': True,
})
return self.env.ref(f'l10n_eu_oss.oss_tax_account_company_{self.id}')
})
self.env['ir.model.data'].create({
'name': f'oss_tax_account_company_{self.id}',
'module': 'l10n_eu_oss',
'model': 'account.account',
'res_id': oss_account.id,
'noupdate': True,
})
return oss_account
def _get_oss_tags(self):
oss_tag = self.env.ref('l10n_eu_oss.tag_oss')
chart_template_xml_id = ''
if self.chart_template_id:
[chart_template_xml_id] = self.chart_template_id.parent_id.get_external_id().values() or self.chart_template_id.get_external_id().values()
tag_for_country = EU_TAG_MAP.get(chart_template_xml_id, {
country = self._get_country_from_vat()
chart_template = self.env['account.chart.template']._guess_chart_template(country)
# If that l10n module isn't installed, it means the company doesn't use any tax report for that country
# and thus hasn't nor need those tax report tag
is_coa_module_installed = self.env['account.chart.template']._get_chart_template_mapping()[chart_template]['installed']
if not is_coa_module_installed:
chart_template = None
tag_for_country = EU_TAG_MAP.get(chart_template, {
'invoice_base_tag': None,
'invoice_tax_tag': None,
'refund_base_tag': None,
@ -142,7 +252,29 @@ class Company(models.Model):
for repartition_line_key, tag_xml_id in tag_for_country.items():
tag = self.env.ref(tag_xml_id) if tag_xml_id else self.env['account.account.tag']
if tag and tag._name == "account.report.expression":
tag = tag._get_matching_tags("+")
tag = tag._get_matching_tags()
mapping[repartition_line_key] = tag + oss_tag
return mapping
def _get_country_from_vat(self):
self.ensure_one()
country = None
# Try to use the VAT country if vat is set and easily guessable
if self.vat:
country_prefix = re.match(r'^[a-zA-Z]{2}|^', self.vat).group()
if country_prefix:
country = self.env['res.country'].search([('code', '=', country_prefix)], limit=1)
# otherwise fallback on the fiscal country
if not country:
country = self.account_fiscal_country_id
return country
def _get_country_specific_account_tax_fields(self):
country = self._get_country_from_vat()
chart_template = self.env['account.chart.template']._guess_chart_template(country)
is_coa_module_installed = self.env['account.chart.template']._get_chart_template_mapping()[chart_template]['installed']
if is_coa_module_installed:
return EU_FIELD_MAP.get(chart_template, {})
return {}

View file

@ -9,9 +9,6 @@ class ResConfigSettings(models.TransientModel):
l10n_eu_oss_eu_country = fields.Boolean('Is European country?', compute='_compute_l10n_eu_oss_european_country')
def refresh_eu_tax_mapping(self):
self.env.companies._map_eu_taxes()
@api.depends('company_id')
def _compute_l10n_eu_oss_european_country(self):
european_countries = self.env.ref('base.europe').country_ids

View file

@ -1,40 +1,56 @@
# -*- coding: utf-8 -*-
from odoo.addons.l10n_eu_oss.models.eu_tag_map import EU_TAG_MAP
from odoo import Command
from odoo.exceptions import RedirectWarning
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.addons.l10n_eu_oss.models.eu_tag_map import EU_TAG_MAP
from odoo.tests import tagged
@tagged('post_install', 'post_install_l10n', '-at_install')
class OssTemplateTestCase(AccountTestInvoicingCommon):
class TestOSSBelgium(AccountTestInvoicingCommon):
@classmethod
def load_specific_chart_template(cls, chart_template_ref):
try:
super().setUpClass(chart_template_ref=chart_template_ref)
except ValueError as e:
if e.args[0] == f"External ID not found in the system: {chart_template_ref}":
cls.skipTest(cls, reason=f"The {chart_template_ref} CoA is required for this testSuite but the corresponding localization module isn't installed")
else:
raise e
@AccountTestInvoicingCommon.setup_country('be')
def setUpClass(cls):
super().setUpClass()
cls.root_company = cls.company_data['company']
cls.root_company.child_ids = [Command.create({'name': 'Branch A'})]
cls.cr.precommit.run() # load the CoA
cls.child_company = cls.root_company.child_ids
cls.child_company.child_ids = [Command.create({'name': 'sub Branch B'})]
cls.sub_child_company = cls.root_company.child_ids.child_ids
cls.cr.precommit.run() # load the CoA
@tagged('post_install', 'post_install_l10n', '-at_install')
class TestOSSBelgium(OssTemplateTestCase):
def test_oss_tax_should_be_instantiated_on_root_company_if_no_tax_id_on_sub_branch(self):
self.sub_child_company._map_eu_taxes()
# simulate sub child selection in the switcher
self.env.user.company_id, self.env.user.company_ids = self.sub_child_company, self.sub_child_company
@classmethod
def setUpClass(cls, chart_template_ref='l10n_be.l10nbe_chart_template'):
cls.load_specific_chart_template(chart_template_ref)
cls.company_data['company'].country_id = cls.env.ref('base.be')
cls.company_data['company']._map_eu_taxes()
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.sub_child_company.country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%"{another_eu_country_code}"%')], limit=1)
self.assertTrue(tax_oss)
self.assertEqual(tax_oss.company_id, self.root_company)
def test_oss_tax_should_be_instantiated_on_first_branch_having_a_tax_id(self):
# simulate sub child selection in the switcher
self.env.user.company_id, self.env.user.company_ids = self.sub_child_company, self.sub_child_company
self.sub_child_company.vat = "BE0477472701"
self.sub_child_company._map_eu_taxes()
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.sub_child_company.country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%{another_eu_country_code}%')], limit=1)
self.assertTrue(tax_oss)
self.assertEqual(tax_oss.company_id, self.sub_child_company)
def test_country_tag_from_belgium(self):
"""
This test ensure that xml_id from `account.tax.report.line` in the EU_TAG_MAP are processed correctly by the oss
tax creation mechanism.
"""
self.sub_child_company._map_eu_taxes()
# get an eu country which isn't the current one:
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.company_data['company'].country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%{another_eu_country_code}%')], limit=1)
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%"{another_eu_country_code}"%')], limit=1)
for doc_type, report_expression_xml_id in (
("invoice", "l10n_be.tax_report_line_47_tag"),
@ -45,20 +61,34 @@ class TestOSSBelgium(OssTemplateTestCase):
.filtered(lambda x: x.repartition_type == 'base')\
.tag_ids
expected_tag_id = self.env.ref(report_expression_xml_id)\
._get_matching_tags()\
.filtered(lambda t: not t.tax_negate)
expected_tag_id = self.env.ref(report_expression_xml_id)._get_matching_tags()
self.assertIn(expected_tag_id, oss_tag_id, f"{doc_type} tag from Belgian CoA not correctly linked")
def test_oss_tax_copied_name(self):
"""
This test ensures that when refreshing the mapping, if a tax that already exists has to be created, it is created
with (Copy) in the name instead of stopping the refresh process.
"""
self.sub_child_company._map_eu_taxes()
# get the fiscal position for another eu country
another_eu_country = (self.env.ref('base.europe').country_ids - self.company_data['company'].country_id)[0]
fpos = self.env['account.fiscal.position'].search([('country_id', '=', another_eu_country.id)], limit=1)
original_name = fpos.tax_ids[0].name
fpos.unlink()
self.sub_child_company._map_eu_taxes()
fpos = self.env['account.fiscal.position'].search([('country_id', '=', another_eu_country.id)], limit=1)
new_name = fpos.tax_ids[0].name
self.assertEqual(new_name, f"{original_name} (Copy)", "The tax name should be the same as the original one with (Copy) appended to it.")
@tagged('post_install', 'post_install_l10n', '-at_install')
class TestOSSSpain(OssTemplateTestCase):
class TestOSSSpain(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls, chart_template_ref='l10n_es.account_chart_template_common'):
cls.load_specific_chart_template(chart_template_ref)
cls.company_data['company'].country_id = cls.env.ref('base.es')
@AccountTestInvoicingCommon.setup_country('es')
def setUpClass(cls):
super().setUpClass()
cls.company_data['company']._map_eu_taxes()
def test_country_tag_from_spain(self):
@ -68,51 +98,118 @@ class TestOSSSpain(OssTemplateTestCase):
"""
# get an eu country which isn't the current one:
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.company_data['company'].country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%{another_eu_country_code}%')], limit=1)
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%"{another_eu_country_code}"%')], limit=1)
for doc_type, tag_xml_id in (
("invoice", "l10n_es.mod_303_124"),
("invoice", "l10n_es.mod_303_casilla_124_balance"),
):
with self.subTest(doc_type=doc_type, report_line_xml_id=tag_xml_id):
oss_tag_id = tax_oss[f"{doc_type}_repartition_line_ids"]\
.filtered(lambda x: x.repartition_type == 'base')\
.tag_ids
expected_tag_id = self.env.ref(tag_xml_id)
expected_tag_id = self.env.ref(tag_xml_id)._get_matching_tags()
self.assertIn(expected_tag_id, oss_tag_id, f"{doc_type} tag from Spanish CoA not correctly linked")
def test_l10n_es_type_oss_tax(self):
"""
Test that the foreign oss taxes generate with l10n_es_type as no_sujeto_loc
"""
if self.env['ir.module.module']._get('l10n_es').state != 'installed':
self.skipTest(reason="L10n_es is required for this test.")
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.company_data['company'].country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%"{another_eu_country_code}"%')], limit=1)
self.assertEqual(tax_oss.l10n_es_type, 'no_sujeto_loc')
@tagged('post_install', 'post_install_l10n', '-at_install')
class TestOSSUSA(OssTemplateTestCase):
class TestOSSUSA(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
cls.load_specific_chart_template(chart_template_ref)
cls.company_data['company'].country_id = cls.env.ref('base.us')
def setUpClass(cls):
super().setUpClass()
cls.company_data['company']._map_eu_taxes()
def test_no_oss_tax(self):
# get an eu country which isn't the current one:
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.company_data['company'].country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%{another_eu_country_code}%')], limit=1)
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%"{another_eu_country_code}"%')], limit=1)
self.assertFalse(len(tax_oss), "OSS tax shouldn't be instanced on a US company")
def test_oss_tax_on_eu_branch(self):
"""Ensure a company outside EU can have an EU branch with an EU VAT and that the OSS feature could be used on those"""
# This test can only be run if l10n_be is installed
if not self.env['ir.module.module'].search_count([('name', '=', 'l10n_be'), ('state', '=', 'installed')], limit=1):
self.skipTest(reason="The belgian CoA is required for this test to be performed but the corresponding localization module isn't installed")
self.root_company = self.company_data['company']
self.root_company.child_ids = [Command.create({'name': 'Branch A'})]
self.cr.precommit.run() # load the CoA
self.child_company = self.root_company.child_ids
self.child_company.child_ids = [Command.create({'name': 'sub Branch B'})]
self.sub_child_company = self.root_company.child_ids.child_ids
self.cr.precommit.run() # load the CoA
# simulate sub child selection in the switcher
self.env.user.company_id, self.env.user.company_ids = self.sub_child_company, self.sub_child_company
foreign_country = self.env.ref('base.be')
foreign_state = self.env.ref('base.state_be_1')
self.sub_child_company.country_id = foreign_country
self.sub_child_company.account_fiscal_country_id = self.sub_child_company.country_id
self.sub_child_company.vat = "BE0477472701"
self.foreign_vat_fpos = self.env["account.fiscal.position"].create({
"name": "sub branch BE foreign VAT",
"auto_apply": True,
"country_id": foreign_country.id,
"state_ids": foreign_state.ids,
"foreign_vat": "BE0477472701",
"company_id": self.sub_child_company.id,
})
self.foreign_vat_fpos.action_create_foreign_taxes()
self.sub_child_company._map_eu_taxes()
another_eu_country_code = (self.env.ref('base.europe').country_ids - self.sub_child_company.country_id)[0].code
tax_oss = self.env['account.tax'].search([('name', 'ilike', f'%{another_eu_country_code}%')], limit=1)
self.assertTrue(tax_oss)
self.assertEqual(tax_oss.company_id, self.sub_child_company)
self.assertEqual(tax_oss.country_id, self.foreign_vat_fpos.country_id)
@tagged('post_install', 'post_install_l10n', '-at_install')
class TestOSSMap(OssTemplateTestCase):
class TestOSSMap(AccountTestInvoicingCommon):
def test_oss_eu_tag_map(self):
""" Checks that the xml_id referenced in the map are correct.
In case of failure display the couple (chart_template_xml_id, tax_report_line_xml_id).
The test doesn't fail for unreferenced char_template or unreferenced tax_report_line.
"""
chart_templates = self.env['account.chart.template'].search([])
for chart_template in chart_templates:
[chart_template_xml_id] = chart_template.get_external_id().values()
oss_tags = EU_TAG_MAP.get(chart_template_xml_id, {})
chart_templates = self.env['account.chart.template']._get_chart_template_mapping()
for chart_template, template_vals in chart_templates.items():
if self.env.ref(f"base.module_{template_vals['module']}").state != 'installed':
continue
oss_tags = EU_TAG_MAP.get(chart_template, {})
for tax_report_line_xml_id in filter(lambda d: d, oss_tags.values()):
with self.subTest(chart_template_xml_id=chart_template_xml_id, tax_report_line_xml_id=tax_report_line_xml_id):
with self.subTest(chart_template=chart_template, tax_report_line_xml_id=tax_report_line_xml_id):
tag = self.env.ref(tax_report_line_xml_id, raise_if_not_found=False)
self.assertIsNotNone(tag, f"The following xml_id is incorrect in EU_TAG_MAP.py:{tax_report_line_xml_id}")
self.assertIsNotNone(tag, f"The following xml_id is incorrect in EU_TAG_MAP.py: {tax_report_line_xml_id}")
def test_oss_missing_account_in_tax_groups(self):
""" Checks that a warning is thrown in case of missing payable
and receivable accounts from all company's tax groups instead
of traceback error.
"""
company = self.company_data['company']
TaxGroup = self.env['account.tax.group']
for tax_group in TaxGroup.search(TaxGroup._check_company_domain(company)):
tax_group.tax_payable_account_id = False
tax_group.tax_receivable_account_id = False
with self.assertRaises(RedirectWarning):
company._map_eu_taxes()

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.l10n.eu.service</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
<field name="arch" type="xml">
<div name="l10n_eu_oss_right_pane" position="inside">
<div class="content-group" attrs="{'invisible': [('module_l10n_eu_oss', '=', False)]}">
<div class="mt8">
<button type="object" name="refresh_eu_tax_mapping" icon="fa-refresh" string="Refresh tax mapping" class="btn-link"/>
</div>
</div>
</div>
</field>
</record>
</odoo>

View file

@ -1,12 +1,14 @@
[project]
name = "odoo-bringout-oca-ocb-l10n_eu_oss"
version = "16.0.0"
description = "EU One Stop Shop (OSS) - Odoo addon"
description = "EU One Stop Shop (OSS) -
Odoo addon
"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-account>=16.0.0",
"odoo-bringout-oca-ocb-account>=19.0.0",
"requests>=2.25.1"
]
readme = "README.md"
@ -16,7 +18,7 @@ classifiers = [
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]