mirror of
https://github.com/bringout/oca-ocb-l10n_europe.git
synced 2026-04-26 20:22:03 +02:00
Initial commit: L10N_Europe packages
This commit is contained in:
commit
9803722600
2377 changed files with 380711 additions and 0 deletions
60
odoo-bringout-oca-ocb-l10n_eu_oss/README.md
Normal file
60
odoo-bringout-oca-ocb-l10n_eu_oss/README.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# EU One Stop Shop (OSS)
|
||||
|
||||
|
||||
EU One Stop Shop (OSS) VAT
|
||||
==========================
|
||||
|
||||
From July 1st 2021, EU businesses that are selling goods within the EU above EUR 10 000 to buyers located in another EU Member State need to register and pay VAT in the buyers’ Member State.
|
||||
Below this new EU-wide threshold you can continue to apply the domestic rules for VAT on your cross-border sales. In order to simplify the application of this EU directive, the One Stop Shop (OSS) registration scheme allows businesses to make a unique tax declaration.
|
||||
|
||||
This module makes it possible by helping with the creation of the required EU fiscal positions and taxes in order to automatically apply and record the required taxes.
|
||||
|
||||
All you have to do is check that the proposed mapping is suitable for the products and services you sell.
|
||||
|
||||
References
|
||||
++++++++++
|
||||
Council Directive (EU) 2017/2455 Council Directive (EU) 2019/1995
|
||||
Council Implementing Regulation (EU) 2019/2026
|
||||
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
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`.
|
||||
|
||||
## 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
|
||||
32
odoo-bringout-oca-ocb-l10n_eu_oss/doc/ARCHITECTURE.md
Normal file
32
odoo-bringout-oca-ocb-l10n_eu_oss/doc/ARCHITECTURE.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph L10n_eu_oss Module - l10n_eu_oss
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/CONFIGURATION.md
Normal file
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/CONFIGURATION.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for l10n_eu_oss. Configure related models, access rights, and options as needed.
|
||||
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/CONTROLLERS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/CONTROLLERS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
5
odoo-bringout-oca-ocb-l10n_eu_oss/doc/DEPENDENCIES.md
Normal file
5
odoo-bringout-oca-ocb-l10n_eu_oss/doc/DEPENDENCIES.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [account](../../odoo-bringout-oca-ocb-account)
|
||||
4
odoo-bringout-oca-ocb-l10n_eu_oss/doc/FAQ.md
Normal file
4
odoo-bringout-oca-ocb-l10n_eu_oss/doc/FAQ.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon l10n_eu_oss or install in UI.
|
||||
7
odoo-bringout-oca-ocb-l10n_eu_oss/doc/INSTALL.md
Normal file
7
odoo-bringout-oca-ocb-l10n_eu_oss/doc/INSTALL.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-ocb-l10n_eu_oss"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-ocb-l10n_eu_oss"
|
||||
```
|
||||
14
odoo-bringout-oca-ocb-l10n_eu_oss/doc/MODELS.md
Normal file
14
odoo-bringout-oca-ocb-l10n_eu_oss/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in l10n_eu_oss.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class account_chart_template
|
||||
class res_company
|
||||
class res_config_settings
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
6
odoo-bringout-oca-ocb-l10n_eu_oss/doc/OVERVIEW.md
Normal file
6
odoo-bringout-oca-ocb-l10n_eu_oss/doc/OVERVIEW.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: l10n_eu_oss. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon l10n_eu_oss
|
||||
- License: LGPL-3
|
||||
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/REPORTS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/REPORTS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
8
odoo-bringout-oca-ocb-l10n_eu_oss/doc/SECURITY.md
Normal file
8
odoo-bringout-oca-ocb-l10n_eu_oss/doc/SECURITY.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Security
|
||||
|
||||
This module does not define custom security rules or access controls beyond Odoo defaults.
|
||||
|
||||
Default Odoo security applies:
|
||||
- Base user access through standard groups
|
||||
- Model access inherited from dependencies
|
||||
- No custom row-level security rules
|
||||
5
odoo-bringout-oca-ocb-l10n_eu_oss/doc/TROUBLESHOOTING.md
Normal file
5
odoo-bringout-oca-ocb-l10n_eu_oss/doc/TROUBLESHOOTING.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
7
odoo-bringout-oca-ocb-l10n_eu_oss/doc/USAGE.md
Normal file
7
odoo-bringout-oca-ocb-l10n_eu_oss/doc/USAGE.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon l10n_eu_oss
|
||||
```
|
||||
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/WIZARDS.md
Normal file
3
odoo-bringout-oca-ocb-l10n_eu_oss/doc/WIZARDS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
12
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/__init__.py
Normal file
12
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/__init__.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# 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');")
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
{
|
||||
'name': 'EU One Stop Shop (OSS)',
|
||||
'category': 'Accounting/Localizations',
|
||||
'description': """
|
||||
EU One Stop Shop (OSS) VAT
|
||||
==========================
|
||||
|
||||
From July 1st 2021, EU businesses that are selling goods within the EU above EUR 10 000 to buyers located in another EU Member State need to register and pay VAT in the buyers’ Member State.
|
||||
Below this new EU-wide threshold you can continue to apply the domestic rules for VAT on your cross-border sales. In order to simplify the application of this EU directive, the One Stop Shop (OSS) registration scheme allows businesses to make a unique tax declaration.
|
||||
|
||||
This module makes it possible by helping with the creation of the required EU fiscal positions and taxes in order to automatically apply and record the required taxes.
|
||||
|
||||
All you have to do is check that the proposed mapping is suitable for the products and services you sell.
|
||||
|
||||
References
|
||||
++++++++++
|
||||
Council Directive (EU) 2017/2455 Council Directive (EU) 2019/1995
|
||||
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',
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="tag_oss" model="account.account.tag">
|
||||
<field name="name">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="applicability">products</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/cs.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/cs.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"Language: cs\n"
|
||||
"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>=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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Společnosti"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Nastavení konfigurace"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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í"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "původ mimo EU"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/da.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/da.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Kontoplansskabelon"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Virksomheder"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Konfigurér indstillinger"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Oprindelse uden for EU"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/de.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/de.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Kontenplanvorlage"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Unternehmen"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Konfigurationseinstellungen"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Nicht-EU-Herkunft"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/es.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/es.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Plantilla de plan contable"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Compañías"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Ajustes de configuración"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Origen no UE"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/fi.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/fi.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Tilikarttamalli"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Yritykset"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Kokoonpanoasetukset"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "EU:n ulkopuolinen alkuperä"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/fr.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/fr.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"Language: fr\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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Entreprises"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Paramètres de configuration"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Origine hors UE"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/it.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/it.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Modello piano dei conti"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Aziende"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Configura impostazioni"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Origine non UE"
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
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_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"
|
||||
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 ""
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr ""
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/lt.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/lt.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"Language: lt\n"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Sąskaitų plano šablonas"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Įmonės"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Konfigūracijos nustatymai"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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ą"
|
||||
|
||||
#. 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"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/nl.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/nl.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Sjabloon grootboekschema"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Bedrijven"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Configuratie-instellingen"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Niet-EU-herkomst"
|
||||
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/pl.po
Normal file
52
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/i18n/pl.po
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * l10n_eu_oss
|
||||
#
|
||||
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"
|
||||
"Language: pl\n"
|
||||
"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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_account_chart_template
|
||||
msgid "Account Chart Template"
|
||||
msgstr "Szablon planu kont"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Firmy"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:ir.model,name:l10n_eu_oss.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Konfiguracja ustawień"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: l10n_eu_oss
|
||||
#: model:account.account.tag,name:l10n_eu_oss.tag_eu_import
|
||||
msgid "non-EU origin"
|
||||
msgstr "Pochodzenie spoza UE"
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import chart_template
|
||||
from . import eu_tax_map
|
||||
from . import eu_tag_map
|
||||
from . import res_company
|
||||
from . import res_config_settings
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# -*- 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
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
"""
|
||||
The EU_TAG_MAP answers the question: "which tag should I apply on the OSS tax repartition line?"
|
||||
|
||||
{
|
||||
'fiscal_country_code': {
|
||||
'invoice_base_tag': xml_id_of_the_tag or None,
|
||||
'invoice_tax_tag': xml_id_of_the_tag or None,
|
||||
'refund_base_tag': xml_id_of_the_tag or None,
|
||||
'refund_tax_tag': xml_id_of_the_tag or None,
|
||||
},
|
||||
}
|
||||
"""
|
||||
|
||||
EU_TAG_MAP = {
|
||||
# Austria
|
||||
'l10n_at.l10n_at_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Belgium
|
||||
'l10n_be.l10nbe_chart_template': {
|
||||
'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': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Croatia
|
||||
'l10n_hr.l10n_hr_chart_template_rrif': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Cyprus
|
||||
'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': {
|
||||
'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,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Estonia - Done in 13.0 - CoA not available yet
|
||||
'EE': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Finland
|
||||
'l10n_fi.fi_chart_template': {
|
||||
'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',
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': 'l10n_fr.tax_report_F8_tag',
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Germany SKR03
|
||||
'l10n_de_skr03.l10n_de_chart_template': {
|
||||
'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': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Greece
|
||||
'l10n_gr.l10n_gr_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Hungary
|
||||
'l10n_hu.hungarian_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Ireland
|
||||
'l10n_ie.l10n_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': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Latvia
|
||||
'LV': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Lithuania
|
||||
'l10n_lt.account_chart_template_lithuania': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Luxembourg
|
||||
'l10n_lu.lu_2011_chart_1': {
|
||||
'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': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Netherlands
|
||||
'l10n_nl.l10nnl_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Poland
|
||||
'l10n_pl.pl_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Portugal
|
||||
'l10n_pt.pt_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Romania
|
||||
'l10n_ro.ro_chart_template': {
|
||||
'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': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Slovenia
|
||||
'l10n_si.gd_chart': {
|
||||
'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",
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
# Sweden
|
||||
'l10n_se.l10nse_chart_template': {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
},
|
||||
}
|
||||
2278
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/models/eu_tax_map.py
Normal file
2278
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/models/eu_tax_map.py
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,148 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import Command, api, models
|
||||
from .eu_tag_map import EU_TAG_MAP
|
||||
from .eu_tax_map import EU_TAX_MAP
|
||||
|
||||
|
||||
class Company(models.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
@api.model
|
||||
def _map_all_eu_companies_taxes(self):
|
||||
''' Identifies EU companies and calls the _map_eu_taxes function
|
||||
'''
|
||||
eu_countries = self.env.ref('base.europe').country_ids
|
||||
companies = self.search([('account_fiscal_country_id', 'in', eu_countries.ids)])
|
||||
companies._map_eu_taxes()
|
||||
|
||||
def _map_eu_taxes(self):
|
||||
'''Creates or updates Fiscal Positions for each EU country excluding the company's account_fiscal_country_id
|
||||
'''
|
||||
eu_countries = self.env.ref('base.europe').country_ids
|
||||
oss_tax_groups = self.env['ir.model.data'].search([
|
||||
('module', '=', 'l10n_eu_oss'),
|
||||
('model', '=', 'account.tax.group')])
|
||||
for company in self:
|
||||
invoice_repartition_lines, refund_repartition_lines = company._get_repartition_lines_oss()
|
||||
taxes = self.env['account.tax'].search([
|
||||
('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'))])
|
||||
|
||||
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
|
||||
for destination_country in oss_countries:
|
||||
mapping = []
|
||||
fpos = self.env['account.fiscal.position'].search([
|
||||
('country_id', '=', destination_country.id),
|
||||
('company_id', '=', company.id),
|
||||
('auto_apply', '=', True),
|
||||
('vat_required', '=', False),
|
||||
('foreign_vat', '=', False)], limit=1)
|
||||
if not fpos:
|
||||
fpos = self.env['account.fiscal.position'].create({
|
||||
'name': f'OSS B2C {destination_country.name}',
|
||||
'country_id': destination_country.id,
|
||||
'company_id': company.id,
|
||||
'auto_apply': True,
|
||||
})
|
||||
|
||||
foreign_taxes = {tax.amount: tax for tax in fpos.tax_ids.tax_dest_id 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:
|
||||
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):
|
||||
self.env['ir.model.data'].create({
|
||||
'name': oss_tax_group_local_xml_id,
|
||||
'module': 'l10n_eu_oss',
|
||||
'model': 'account.tax.group',
|
||||
'res_id': self.env['account.tax.group'].create({'name': f'OSS {tax_amount}%'}).id,
|
||||
'noupdate': True,
|
||||
})
|
||||
foreign_taxes[tax_amount] = self.env['account.tax'].create({
|
||||
'name': f'{tax_amount}% {destination_country.code} {destination_country.vat_label}',
|
||||
'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,
|
||||
'country_id': company.account_fiscal_country_id.id,
|
||||
'sequence': 1000,
|
||||
'company_id': company.id,
|
||||
})
|
||||
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':
|
||||
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']
|
||||
|
||||
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):
|
||||
sales_tax_accounts = self.env['account.tax'].search([
|
||||
('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])
|
||||
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,
|
||||
'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}')
|
||||
|
||||
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, {
|
||||
'invoice_base_tag': None,
|
||||
'invoice_tax_tag': None,
|
||||
'refund_base_tag': None,
|
||||
'refund_tax_tag': None,
|
||||
})
|
||||
|
||||
mapping = {}
|
||||
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("+")
|
||||
mapping[repartition_line_key] = tag + oss_tag
|
||||
|
||||
return mapping
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
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
|
||||
for record in self:
|
||||
record.l10n_eu_oss_eu_country = record.company_id.account_fiscal_country_id in european_countries
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import test_oss
|
||||
118
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/tests/test_oss.py
Normal file
118
odoo-bringout-oca-ocb-l10n_eu_oss/l10n_eu_oss/tests/test_oss.py
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo.addons.l10n_eu_oss.models.eu_tag_map import EU_TAG_MAP
|
||||
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||
from odoo.tests import tagged
|
||||
|
||||
|
||||
@tagged('post_install', 'post_install_l10n', '-at_install')
|
||||
class OssTemplateTestCase(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
|
||||
|
||||
@tagged('post_install', 'post_install_l10n', '-at_install')
|
||||
class TestOSSBelgium(OssTemplateTestCase):
|
||||
|
||||
@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()
|
||||
|
||||
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.
|
||||
"""
|
||||
# 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)
|
||||
|
||||
for doc_type, report_expression_xml_id in (
|
||||
("invoice", "l10n_be.tax_report_line_47_tag"),
|
||||
("refund", "l10n_be.tax_report_line_49_tag"),
|
||||
):
|
||||
with self.subTest(doc_type=doc_type, report_expression_xml_id=report_expression_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(report_expression_xml_id)\
|
||||
._get_matching_tags()\
|
||||
.filtered(lambda t: not t.tax_negate)
|
||||
|
||||
self.assertIn(expected_tag_id, oss_tag_id, f"{doc_type} tag from Belgian CoA not correctly linked")
|
||||
|
||||
|
||||
@tagged('post_install', 'post_install_l10n', '-at_install')
|
||||
class TestOSSSpain(OssTemplateTestCase):
|
||||
|
||||
@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')
|
||||
cls.company_data['company']._map_eu_taxes()
|
||||
|
||||
def test_country_tag_from_spain(self):
|
||||
"""
|
||||
This test ensure that xml_id from `account.account.tag` in the EU_TAG_MAP are processed correctly by the oss
|
||||
tax creation mechanism.
|
||||
"""
|
||||
# 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)
|
||||
|
||||
for doc_type, tag_xml_id in (
|
||||
("invoice", "l10n_es.mod_303_124"),
|
||||
):
|
||||
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)
|
||||
|
||||
self.assertIn(expected_tag_id, oss_tag_id, f"{doc_type} tag from Spanish CoA not correctly linked")
|
||||
|
||||
|
||||
@tagged('post_install', 'post_install_l10n', '-at_install')
|
||||
class TestOSSUSA(OssTemplateTestCase):
|
||||
|
||||
@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')
|
||||
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)
|
||||
|
||||
self.assertFalse(len(tax_oss), "OSS tax shouldn't be instanced on a US company")
|
||||
|
||||
|
||||
@tagged('post_install', 'post_install_l10n', '-at_install')
|
||||
class TestOSSMap(OssTemplateTestCase):
|
||||
|
||||
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, {})
|
||||
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):
|
||||
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}")
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?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>
|
||||
42
odoo-bringout-oca-ocb-l10n_eu_oss/pyproject.toml
Normal file
42
odoo-bringout-oca-ocb-l10n_eu_oss/pyproject.toml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-ocb-l10n_eu_oss"
|
||||
version = "16.0.0"
|
||||
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",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"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.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["l10n_eu_oss"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue