Initial commit: OCA Financial packages (186 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:04 +02:00
commit 3e0e8473fb
8757 changed files with 947473 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Ecotax Management
Odoo addon: account_ecotax
## Installation
```bash
pip install odoo-bringout-oca-account-fiscal-rule-account_ecotax
```
## Dependencies
This addon depends on:
- account
## Manifest Information
- **Name**: Ecotax Management
- **Version**: 16.0.1.1.2
- **Category**: Localization/Account Taxes
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/account-fiscal-rule](https://github.com/OCA/account-fiscal-rule) branch 16.0, addon `account_ecotax`.
## License
This package maintains the original AGPL-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

View file

@ -0,0 +1,142 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
=================
Ecotax Management
=================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d59b99ae4a615ce54d498aa6df2ce73001fac36b758c8646661ddcff54e74264
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--fiscal--rule-lightgray.png?logo=github
:target: https://github.com/OCA/account-fiscal-rule/tree/16.0/account_ecotax
:alt: OCA/account-fiscal-rule
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_ecotax
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-fiscal-rule&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds ecotax amount on invoice line.
furthermore, a total ecotax is added at the footer of each document.
To make easy ecotaxe management and to factor the data, ecotaxes are set on products via ECOTAXE classifications.
ECOTAXE classification can either be a fixed or weight based ecotax.
A product can have one or serveral ecotax classifications. For example, wooden window blinds equipped with electric motor can
have ecotax for wood and ecotax for electric motor.
This module has some limits :
- The ecotax amount is always included in the price of the product.
- The ecotax amount is not isolated in an specific accounting account but is included in the product income account.
If one of these limits is an issue, you could install the submodule account_ecotax_tax.
This second module lets you manage the ecotax as a tax, so you can configure if you want it to be included or excluded of product price and also configuring an accounting account to isolate it.
The main consequence of this approach is that the ecotax won't be considered in the turnover, since it is considered as a tax.
This module version add the possibility to manage several ecotax classifications by product.
A migration script is necessary to update from previous versions.
There is the main change to manage in migration script:
renamed field
model old field new field
account.move.line unit_ecotaxe_amount ecotaxe_amount_unit
product.template manual_fixed_ecotaxe force_ecotaxe_amount
changed fields
model old field new field
product.template ecotaxe_classification_id ecotaxe_classification_ids
added fields
model new field
account.move.line ecotaxe_line_ids
product.template ecotaxe_line_product_ids
**Table of contents**
.. contents::
:local:
Usage
=====
1. Add an ecotax classification via the menu **Accounting > Configuration > Taxes > Ecotax Classification**.
- The ecotax classification can be either a fixed ecotax or a weight-based ecotax.
- Ecotax classification information can be used for legal declarations.
- For the fixed ecotax, the ecotax amount is used as a default value, which can be overridden on the product.
- For the weight-based ecotax, define one ecotax by a coefficient applied to the weight (depending on the product's materials).
2. Assign one or more ecotax classifications to a product.
- The ecotax amount can also be manually overridden on the product.
3. Create an invoice with this product
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-fiscal-rule/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-fiscal-rule/issues/new?body=module:%20account_ecotax%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Akretion
Contributors
~~~~~~~~~~~~
* Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
* Florian da Costa <florian.dacosta@akretion.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-mourad-ehm| image:: https://github.com/mourad-ehm.png?size=40px
:target: https://github.com/mourad-ehm
:alt: mourad-ehm
.. |maintainer-florian-dacosta| image:: https://github.com/florian-dacosta.png?size=40px
:target: https://github.com/florian-dacosta
:alt: florian-dacosta
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-mourad-ehm| |maintainer-florian-dacosta|
This module is part of the `OCA/account-fiscal-rule <https://github.com/OCA/account-fiscal-rule/tree/16.0/account_ecotax>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from .hook import pre_init_hook

View file

@ -0,0 +1,32 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Ecotax Management",
"summary": "Ecotax Management: in French context is a 'cost' "
"added to the sale price of electrical or electronic appliances or furnishing items",
"version": "16.0.1.1.2",
"author": "Akretion, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-fiscal-rule",
"category": "Localization/Account Taxes",
"license": "AGPL-3",
"maintainers": ["mourad-ehm", "florian-dacosta"],
"depends": [
"account",
],
"data": [
"data/decimal_precision.xml",
"security/ir_rule.xml",
"security/ir.model.access.csv",
"views/account_ecotax_category_view.xml",
"views/ecotax_sector_view.xml",
"views/ecotax_collector_view.xml",
"views/account_ecotax_classification_view.xml",
"views/account_move_view.xml",
"views/product_template_view.xml",
"views/product_view.xml",
"report/invoice.xml",
],
"installable": True,
"pre_init_hook": "pre_init_hook",
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="ecotaxe_decimal" model="decimal.precision">
<field name="name">Ecotax</field>
<field name="digits">4</field>
</record>
</odoo>

View file

@ -0,0 +1,29 @@
def pre_init_hook(cr):
cr.execute(
"""
ALTER TABLE account_move ADD COLUMN IF NOT EXISTS amount_ecotax numeric
"""
)
cr.execute(
"""
UPDATE account_move SET amount_ecotax = 0.0 WHERE amount_ecotax IS NULL
"""
)
cr.execute(
"""
ALTER TABLE account_move_line ADD COLUMN IF NOT EXISTS subtotal_ecotax numeric
"""
)
cr.execute(
"""
ALTER TABLE account_move_line ADD COLUMN IF NOT EXISTS ecotax_amount_unit numeric
"""
)
cr.execute(
"""
UPDATE account_move_line
SET ecotax_amount_unit = 0.0, subtotal_ecotax = 0.0
WHERE ecotax_amount_unit IS NULL
"""
)

View file

@ -0,0 +1,682 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ecotax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.report_invoice_document
msgid "<span name=\"ecotax_line_label\">Eco Part Unit</span>"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_category
msgid "Account Ecotax Category"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_classification
msgid "Account Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__account_move_line_id
msgid "Account move line"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line_ecotax
msgid "Account move line ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__active
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__active
msgid "Active"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Additional Ecotaxe classif"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__additional_ecotax_line_product_ids
msgid "Additional ecotax lines"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid "All ecotax lines"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__amount
msgid "Amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_total
msgid "Amount Total"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Amount Unit"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Archived"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__categ_id
msgid "Category"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__classification_id
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Classification"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_classification
msgid "Click to start a new Ecotaxe Classification."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_category
msgid "Click to start a new Ecotaxe category."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_collector
msgid "Click to start a new Ecotaxe collector."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_sector
msgid "Click to start a new Ecotaxe sector."
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__code
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__code
msgid "Code"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__company_id
msgid "Company"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid ""
"Contain all ecotaxs classification defined in product templateand the additionnal.\n"
"ecotaxs defined in product variant. For more detailssee the product variant accounting tab"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_uid
msgid "Created by"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_date
msgid "Created on"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__currency_id
msgid "Currency"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default Fixed Ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default fixed ecotax amount."
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__description
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__description
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Description"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Disc.%"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__display_name
msgid "Display Name"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__subtotal_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_form_inherit
msgid "Ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_amount
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__amount
msgid "Ecotax Amount computed form Classification or forced ecotax amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__ecotax_amount
msgid "Ecotax Amount computed form all ecotax line classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount computed from Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Ecotax Amount computed from Classification or Manual ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_total
msgid ""
"Ecotax Amount total computed from Classification or forced ecotax amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_coef
msgid "Ecotax Coef"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_mixin
msgid "Ecotax Line Mixin"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_product
msgid "Ecotax Line product"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_sector
msgid "Ecotax Sector"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid "Ecotax Type"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_amount_unit
msgid "Ecotax Unit"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_collector
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__collector_id
msgid "Ecotax collector"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_line_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_line_product_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_line_product_ids
msgid "Ecotax lines"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__sector_id
msgid "Ecotax sector"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__weight_based_ecotax
msgid ""
"Ecotax value :\n"
"product weight * ecotax coef of Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_classification
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_classification
msgid "Ecotaxe Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_category
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_category
msgid "Ecotaxe category"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
msgid "Ecotaxe classif"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Ecotaxe classification"
msgstr ""
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_collector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_collector
msgid "Ecotaxe collector"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Ecotaxe lines"
msgstr ""
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_sector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_sector
msgid "Ecotaxe sector"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
msgid "Ecotaxes settings"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__fixed
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Fixed"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed Ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed ecotax of the Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__force_amount
msgid "Force Amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid "Force Amount Unit"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__force_amount
msgid ""
"Force ecotax amount.\n"
"Allow to substitute default Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid ""
"Force ecotax.\n"
"Allow to add a subtitle to the default Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Group By"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__id
msgid "ID"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid ""
"If ecotax is weight based,the ecotax coef must take into account\n"
"the weight unit of measure (kg by default)"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__imp
msgid "Importer"
msgstr ""
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: model:ir.model.fields,field_description:account_ecotax.field_account_bank_statement_line__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_payment__amount_ecotax
#, python-format
msgid "Included Ecotax"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.document_tax_totals
msgid "Including Eco Part"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__intrastat_code
msgid "Intrastat Code"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__int
msgid "Introducer"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector____last_update
msgid "Last Modified on"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__supplier_status
msgid ""
"MAN ==> Manufacturer: is locally established in the country, and manufactures goods which are subject to ecotaxes\n"
"under their own name and brand, or designs such goods, subcontracts the manufacturing and then sells them under their own name and brand\n"
"RES ==> Reseller, under their own brand: is locally established in the country, and sells under their own name or brand goods subject to ecotax manufactured by others\n"
"INT ==> Introducer: is locally established and sells on the local market goods subject to ecotax coming from other countries of the European Union\n"
"IMP ==> Importer: is established in France, and sells on the local market goods subject to ecotax coming from countries outsidethe European Union\n"
"REM ==> Remote vendor: is established in another country of the European Union or outside the EU, and remotely sells good subject to ecotaxes to customers in the country"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__man
msgid "Manufacturer"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__m
msgid "Menager"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__name
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Name"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Note"
msgstr ""
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product
msgid "Only one ecotax classification occurrence by product"
msgstr ""
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product_tmpl
msgid "Only one ecotax classification occurrence by product Template"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__partner_id
msgid "Partner"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_template
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_id
msgid "Product"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__product_status
msgid "Product Status"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_tmpl_id
msgid "Product Template"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_template_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Product Template Ecotaxe classif"
msgstr ""
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_product
msgid "Product Variant"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__p
msgid "Professionnel"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__quantity
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__quantity
msgid "Quantity"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__rem
msgid "Remote vendor"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__res
msgid "Reseller, under their own brand"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__scale_code
msgid "Scale Code"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Search Ecotaxe Classification"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "Search Ecotaxe category"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "Search Ecotaxe collector"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "Search Ecotaxe sector"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Section"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__company_id
msgid ""
"Specify a company if you want to define this Ecotax Classification only for "
"specific company. Otherwise, this Fiscal Classification will be available "
"for all companies."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Subtotal"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__supplier_status
msgid "Supplier Status"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__quantity
msgid ""
"The optional quantity expressed by this line, eg: number of product sold. "
"The quantity is not a legal requirement but is very useful for some reports."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total Ecotaxe"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Type"
msgstr ""
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: code:addons/account_ecotax/models/account_move.py:0
#, python-format
msgid "Untaxed Amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__weight_based_ecotax
msgid "Weight Based Ecotax"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__weight_based
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Weight based"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "category"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "collector"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "sector"
msgstr ""

View file

@ -0,0 +1,682 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ecotax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.report_invoice_document
msgid "<span name=\"ecotax_line_label\">Eco Part Unit</span>"
msgstr "<span name=\"ecotax_line_label\">Eko dio jedinice</span>"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_category
msgid "Account Ecotax Category"
msgstr "Ecotax kategorija računa"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_classification
msgid "Account Ecotax Classification"
msgstr "Ecotax klasifikacija računa"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__account_move_line_id
msgid "Account move line"
msgstr "Linija pokreta računa"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line_ecotax
msgid "Account move line ecotax"
msgstr "Ecotax linije pokreta računa"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__active
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__active
msgid "Active"
msgstr "Aktivan"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Additional Ecotaxe classif"
msgstr "Dodatna ecotax klasif"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__additional_ecotax_line_product_ids
msgid "Additional ecotax lines"
msgstr "Dodatne ecotax linije"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid "All ecotax lines"
msgstr "Sve ecotax linije"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__amount
msgid "Amount"
msgstr "Iznos"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_total
msgid "Amount Total"
msgstr "Ukupni iznos"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Amount Unit"
msgstr "Jedinica iznosa"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Archived"
msgstr "Arhivirano"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__categ_id
msgid "Category"
msgstr "Kategorija"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__classification_id
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Classification"
msgstr "Klasifikacija"
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_classification
msgid "Click to start a new Ecotaxe Classification."
msgstr "Kliknite da pokrenete novu ecotax klasifikaciju."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_category
msgid "Click to start a new Ecotaxe category."
msgstr "Kliknite da pokrenete novu ecotax kategoriju."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_collector
msgid "Click to start a new Ecotaxe collector."
msgstr "Kliknite da pokrenete novog ecotax kolektora."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_sector
msgid "Click to start a new Ecotaxe sector."
msgstr "Kliknite da pokrenete novi ecotax sektor."
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__code
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__code
msgid "Code"
msgstr "Šifra"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__company_id
msgid "Company"
msgstr "Preduzeće"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid ""
"Contain all ecotaxs classification defined in product templateand the additionnal.\n"
"ecotaxs defined in product variant. For more detailssee the product variant accounting tab"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default Fixed Ecotax"
msgstr "Zadani fiksni ecotax"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default fixed ecotax amount."
msgstr "Zadani fiksni ecotax iznos."
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__description
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__description
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Description"
msgstr "Opis"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Disc.%"
msgstr "Pop.%"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__subtotal_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_form_inherit
msgid "Ecotax"
msgstr "Ecotax"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_amount
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount"
msgstr "Ecotax iznos"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__amount
msgid "Ecotax Amount computed form Classification or forced ecotax amount"
msgstr "Iznos ecotax-a izračunat iz klasifikacije ili forsiranog ecotax iznosa"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__ecotax_amount
msgid "Ecotax Amount computed form all ecotax line classification"
msgstr "Iznos ecotax-a izračunat iz svih ecotax klasifikacija linija"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount computed from Classification"
msgstr "Iznos ecotax-a izračunat iz klasifikacije"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Ecotax Amount computed from Classification or Manual ecotax"
msgstr "Iznos ecotax-a izračunat iz klasifikacije ili ručnog ecotax-a"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_total
msgid ""
"Ecotax Amount total computed from Classification or forced ecotax amount"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_coef
msgid "Ecotax Coef"
msgstr "Ecotax koef"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_mixin
msgid "Ecotax Line Mixin"
msgstr "Ecotax linija miješanje"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_product
msgid "Ecotax Line product"
msgstr "Ecotax proizvod linije"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_sector
msgid "Ecotax Sector"
msgstr "Ecotax sektor"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid "Ecotax Type"
msgstr "Ecotax tip"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_amount_unit
msgid "Ecotax Unit"
msgstr "Ecotax jedinica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_collector
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__collector_id
msgid "Ecotax collector"
msgstr "Ecotax kolektor"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_line_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_line_product_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_line_product_ids
msgid "Ecotax lines"
msgstr "Ecotax linije"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__sector_id
msgid "Ecotax sector"
msgstr "Ecotax sektor"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__weight_based_ecotax
msgid ""
"Ecotax value :\n"
"product weight * ecotax coef of Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_classification
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_classification
msgid "Ecotaxe Classification"
msgstr "Ecotax klasifikacija"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_category
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_category
msgid "Ecotaxe category"
msgstr "Ecotax kategorija"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
msgid "Ecotaxe classif"
msgstr "Ecotax klasif"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Ecotaxe classification"
msgstr "Ecotax klasifikacija"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_collector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_collector
msgid "Ecotaxe collector"
msgstr "Ecotax kolektor"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Ecotaxe lines"
msgstr "Ecotax linije"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_sector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_sector
msgid "Ecotaxe sector"
msgstr "Ecotax sektor"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
msgid "Ecotaxes settings"
msgstr "Ecotax podešavanja"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__fixed
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Fixed"
msgstr "Fiksno"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed Ecotax"
msgstr "Fiksni ecotax"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed ecotax of the Ecotax Classification"
msgstr "Fiksni ecotax ecotax klasifikacije"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__force_amount
msgid "Force Amount"
msgstr "Forsiraj iznos"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid "Force Amount Unit"
msgstr "Forsiraj jedinicu iznosa"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__force_amount
msgid ""
"Force ecotax amount.\n"
"Allow to substitute default Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid ""
"Force ecotax.\n"
"Allow to add a subtitle to the default Ecotax Classification"
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Group By"
msgstr "Grupiši po"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__id
msgid "ID"
msgstr "ID"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid ""
"If ecotax is weight based,the ecotax coef must take into account\n"
"the weight unit of measure (kg by default)"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__imp
msgid "Importer"
msgstr "Uvoznik"
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: model:ir.model.fields,field_description:account_ecotax.field_account_bank_statement_line__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_payment__amount_ecotax
#, python-format
msgid "Included Ecotax"
msgstr "Uključen ecotax"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.document_tax_totals
msgid "Including Eco Part"
msgstr "Uključujući eko dio"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__intrastat_code
msgid "Intrastat Code"
msgstr "Intrastat kod"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__int
msgid "Introducer"
msgstr "Uvodnik"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move
msgid "Journal Entry"
msgstr "Žurnal"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line
msgid "Journal Item"
msgstr "Stavka žurnala"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__supplier_status
msgid ""
"MAN ==> Manufacturer: is locally established in the country, and manufactures goods which are subject to ecotaxes\n"
"under their own name and brand, or designs such goods, subcontracts the manufacturing and then sells them under their own name and brand\n"
"RES ==> Reseller, under their own brand: is locally established in the country, and sells under their own name or brand goods subject to ecotax manufactured by others\n"
"INT ==> Introducer: is locally established and sells on the local market goods subject to ecotax coming from other countries of the European Union\n"
"IMP ==> Importer: is established in France, and sells on the local market goods subject to ecotax coming from countries outsidethe European Union\n"
"REM ==> Remote vendor: is established in another country of the European Union or outside the EU, and remotely sells good subject to ecotaxes to customers in the country"
msgstr ""
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__man
msgid "Manufacturer"
msgstr "Proizvođač"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__m
msgid "Menager"
msgstr "Menadžer"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__name
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Name"
msgstr "Naziv:"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Note"
msgstr "Zabilješka"
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product
msgid "Only one ecotax classification occurrence by product"
msgstr "Samo jedna pojava ecotax klasifikacije po proizvodu"
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product_tmpl
msgid "Only one ecotax classification occurrence by product Template"
msgstr "Samo jedna pojava ecotax klasifikacije po templejtu proizvoda"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_template
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_id
msgid "Product"
msgstr "Artikal"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__product_status
msgid "Product Status"
msgstr "Status proizvoda"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_tmpl_id
msgid "Product Template"
msgstr "Predložak artikla"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_template_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Product Template Ecotaxe classif"
msgstr "Ecotax klasifikacija templejta proizvoda"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_product
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__p
msgid "Professionnel"
msgstr "Profesionalac"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__quantity
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__quantity
msgid "Quantity"
msgstr "Količina"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__rem
msgid "Remote vendor"
msgstr "Udaljeni prodavač"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__res
msgid "Reseller, under their own brand"
msgstr "Preprodavač, pod vlastitim brendom"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__scale_code
msgid "Scale Code"
msgstr "Kod skale"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Search Ecotaxe Classification"
msgstr "Pretraži ecotax klasifikaciju"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "Search Ecotaxe category"
msgstr "Pretraži ecotax kategoriju"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "Search Ecotaxe collector"
msgstr "Pretraži ecotax kolektora"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "Search Ecotaxe sector"
msgstr "Pretraži ecotax sektor"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Section"
msgstr "Odjel"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__company_id
msgid ""
"Specify a company if you want to define this Ecotax Classification only for "
"specific company. Otherwise, this Fiscal Classification will be available "
"for all companies."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Subtotal"
msgstr "Podukupno"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__supplier_status
msgid "Supplier Status"
msgstr "Status dobavljača"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__quantity
msgid ""
"The optional quantity expressed by this line, eg: number of product sold. "
"The quantity is not a legal requirement but is very useful for some reports."
msgstr ""
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total"
msgstr "Ukupno"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total Ecotaxe"
msgstr "Ukupan ecotax"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Type"
msgstr "Tip"
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: code:addons/account_ecotax/models/account_move.py:0
#, python-format
msgid "Untaxed Amount"
msgstr "Iznos bez PDV"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__weight_based_ecotax
msgid "Weight Based Ecotax"
msgstr "Ecotax na osnovu težine"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__weight_based
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Weight based"
msgstr "Na osnovu težine"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "category"
msgstr "kategorija"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "collector"
msgstr "kolektor"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "sector"
msgstr "sektor"

View file

@ -0,0 +1,730 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ecotax
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-03-14 08:45+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\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"
"X-Generator: Weblate 5.10.2\n"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.report_invoice_document
msgid "<span name=\"ecotax_line_label\">Eco Part Unit</span>"
msgstr "<span name=\"ecotax_line_label\">Unità componente ecologica</span>"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_category
msgid "Account Ecotax Category"
msgstr "Categoria conto imposta ecologica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_ecotax_classification
msgid "Account Ecotax Classification"
msgstr "Classificazione conto imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__account_move_line_id
msgid "Account move line"
msgstr "Riga movimento contabile"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line_ecotax
msgid "Account move line ecotax"
msgstr "Riga movimento contabile imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__active
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__active
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__active
msgid "Active"
msgstr "Attivo"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Additional Ecotaxe classif"
msgstr "Classificazione imposta ecologica aggiuntiva"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__additional_ecotax_line_product_ids
msgid "Additional ecotax lines"
msgstr "Righe aggiuntive imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid "All ecotax lines"
msgstr "Tutte le righe imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__amount
msgid "Amount"
msgstr "Valore"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_total
msgid "Amount Total"
msgstr "Importo totale"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Amount Unit"
msgstr "Unità valore"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Archived"
msgstr "In archivio"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__categ_id
msgid "Category"
msgstr "Categoria"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__classification_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__classification_id
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Classification"
msgstr "Classificazione"
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_classification
msgid "Click to start a new Ecotaxe Classification."
msgstr "Fare clic per iniziare una nuova classificazione imposta ecologica."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_category
msgid "Click to start a new Ecotaxe category."
msgstr "Fare clic per iniziare una nuova categoria imposta ecologica."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_collector
msgid "Click to start a new Ecotaxe collector."
msgstr "Fare clic per iniziare un nuovo collettore imposta ecologica."
#. module: account_ecotax
#: model_terms:ir.actions.act_window,help:account_ecotax.action_ecotax_sector
msgid "Click to start a new Ecotaxe sector."
msgstr "Fare clic per iniziare un nuovo settore imposta ecologica."
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__code
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__code
msgid "Code"
msgstr "Codice"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__company_id
msgid "Company"
msgstr "Azienda"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__all_ecotax_line_product_ids
msgid ""
"Contain all ecotaxs classification defined in product templateand the additionnal.\n"
"ecotaxs defined in product variant. For more detailssee the product variant accounting tab"
msgstr ""
"Contiene tutte le classificazioni imposte ecologiche definite nel modello di "
"prodotto e le imposte ecologiche \n"
"aggiuntive definite nella variante di prodotto. Per maggiori dettagli, "
"vedere la scheda di contabilità delle varianti di prodotto"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__create_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__create_date
msgid "Created on"
msgstr "Creato il"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__currency_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default Fixed Ecotax"
msgstr "Imposta ecologica fissa predefinita"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__default_fixed_ecotax
msgid "Default fixed ecotax amount."
msgstr "Valore imposta ecologica fissa predefinita."
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__description
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__description
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Description"
msgstr "Descrizione"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Disc.%"
msgstr "Sconto (%)"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__display_name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__subtotal_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_form_inherit
msgid "Ecotax"
msgstr "Imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_amount
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount"
msgstr "Valore imposta ecologica"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__amount
msgid "Ecotax Amount computed form Classification or forced ecotax amount"
msgstr ""
"Valore imposta ecologica calcolato dalla classificazione o valore imposta "
"ecologica forzato"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__ecotax_amount
msgid "Ecotax Amount computed form all ecotax line classification"
msgstr ""
"Valore imposta ecologica calcolato dalla riga classificazione di tutte le "
"imposte ecologiche"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__ecotax_amount
msgid "Ecotax Amount computed from Classification"
msgstr "Valore imposte ecologica calcolato dalla classificazione"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_unit
msgid "Ecotax Amount computed from Classification or Manual ecotax"
msgstr ""
"Valore imposte ecologica calcolato dalla classificazione o imposta ecologica "
"manuale"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__amount_total
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__amount_total
msgid ""
"Ecotax Amount total computed from Classification or forced ecotax amount"
msgstr ""
"Totale valore imposte ecologica calcolato dalla classificazione o valore "
"imposte ecologica forzato"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_coef
msgid "Ecotax Coef"
msgstr "Coef. imposta ecologica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_mixin
msgid "Ecotax Line Mixin"
msgstr "Mixin riga imposte ecologica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_line_product
msgid "Ecotax Line product"
msgstr "Prodotto riga imposte ecologica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_sector
msgid "Ecotax Sector"
msgstr "Settore imposte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid "Ecotax Type"
msgstr "Tipo imposte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_amount_unit
msgid "Ecotax Unit"
msgstr "Unità imposta ecologica"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_ecotax_collector
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__collector_id
msgid "Ecotax collector"
msgstr "Collettore imposte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line__ecotax_line_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__ecotax_line_product_ids
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__ecotax_line_product_ids
msgid "Ecotax lines"
msgstr "Righe imposte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__sector_id
msgid "Ecotax sector"
msgstr "Settore imposte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__weight_based_ecotax
msgid ""
"Ecotax value :\n"
"product weight * ecotax coef of Ecotax Classification"
msgstr ""
"Valore imposte ecologica\n"
"peso prodotto * coef. della classificazione imposta ecologica"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_classification
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_classification
msgid "Ecotaxe Classification"
msgstr "Classificazione imposta ecologica"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_category
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_category
msgid "Ecotaxe category"
msgstr "Categoria imposte ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_normal_form_view
msgid "Ecotaxe classif"
msgstr "Classificazione imposte ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Ecotaxe classification"
msgstr "Classificazione imposta ecologica"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_collector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_collector
msgid "Ecotaxe collector"
msgstr "Collettore imposte ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Ecotaxe lines"
msgstr "Righe imposte ecologica"
#. module: account_ecotax
#: model:ir.actions.act_window,name:account_ecotax.action_ecotax_sector
#: model:ir.ui.menu,name:account_ecotax.menu_ecotax_sector
msgid "Ecotaxe sector"
msgstr "Settore imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
msgid "Ecotaxes settings"
msgstr "Impostazioni imposte ecologiche"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__fixed
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Fixed"
msgstr "Fissa"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed Ecotax"
msgstr "Imposte ecologica fissa"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_product__fixed_ecotax
#: model:ir.model.fields,help:account_ecotax.field_product_template__fixed_ecotax
msgid "Fixed ecotax of the Ecotax Classification"
msgstr "Imposte ecologica fissa della classificazione"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__force_amount
msgid "Force Amount"
msgstr "Forza valore"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid "Force Amount Unit"
msgstr "Forza unità valore"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_product__force_amount
msgid ""
"Force ecotax amount.\n"
"Allow to substitute default Ecotax Classification"
msgstr ""
"Forza valore imposta ecologica.\n"
"Consente di sostituire la classificazione imposta ecologia predefinita"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__force_amount_unit
#: model:ir.model.fields,help:account_ecotax.field_ecotax_line_mixin__force_amount_unit
msgid ""
"Force ecotax.\n"
"Allow to add a subtitle to the default Ecotax Classification"
msgstr ""
"Forza imposta ecologica.\n"
"Consente di aggiungere un sotto titolo alla classificazione imposta "
"ecologica predefinita"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Group By"
msgstr "Raggruppa per"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__id
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__id
msgid "ID"
msgstr "ID"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__ecotax_type
msgid ""
"If ecotax is weight based,the ecotax coef must take into account\n"
"the weight unit of measure (kg by default)"
msgstr ""
"Se l'imposta ecologica è basata sul peso, il coefficiente imposta ecologica "
"\n"
"deve tenere conto dell'unità di misura del peso (kg per impostazione "
"predefinita)"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__imp
msgid "Importer"
msgstr "Importatore"
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: model:ir.model.fields,field_description:account_ecotax.field_account_bank_statement_line__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move__amount_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_payment__amount_ecotax
#, python-format
msgid "Included Ecotax"
msgstr "Imposta ecologica inclusa"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.document_tax_totals
msgid "Including Eco Part"
msgstr "Include parte ecologica"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__intrastat_code
msgid "Intrastat Code"
msgstr "Codice Intrastat"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__int
msgid "Introducer"
msgstr "Introduttore"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move
msgid "Journal Entry"
msgstr "Registrazione contabile"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_account_move_line
msgid "Journal Item"
msgstr "Movimento contabile"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product____last_update
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_uid
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__write_date
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__supplier_status
msgid ""
"MAN ==> Manufacturer: is locally established in the country, and manufactures goods which are subject to ecotaxes\n"
"under their own name and brand, or designs such goods, subcontracts the manufacturing and then sells them under their own name and brand\n"
"RES ==> Reseller, under their own brand: is locally established in the country, and sells under their own name or brand goods subject to ecotax manufactured by others\n"
"INT ==> Introducer: is locally established and sells on the local market goods subject to ecotax coming from other countries of the European Union\n"
"IMP ==> Importer: is established in France, and sells on the local market goods subject to ecotax coming from countries outsidethe European Union\n"
"REM ==> Remote vendor: is established in another country of the European Union or outside the EU, and remotely sells good subject to ecotaxes to customers in the country"
msgstr ""
"MAN ==> Produttore: è stabilito localmente nel paese e produce beni soggetti "
"a imposte ecologiche con il proprio nome e marchio, \n"
"oppure progetta tali beni, ne subappalta la fabbricazione e poi li vende con "
"il proprio nome e marchio\n"
"RES ==> Rivenditore, con il proprio marchio: è stabilito localmente nel "
"paese e vende con il proprio nome o marchio beni soggetti a imposte "
"ecologiche fabbricati da altri\n"
"INT ==> Introduttore: è stabilito localmente e vende sul mercato locale beni "
"soggetti a imposte ecologiche provenienti da altri paesi dell'Unione "
"Europea\n"
"IMP ==> Importatore: è stabilito in Francia e vende sul mercato locale beni "
"soggetti a imposte ecologiche provenienti da paesi al di fuori dell'Unione "
"Europea\n"
"REM ==> Venditore remoto: è stabilito in un altro paese dell'Unione Europea "
"o al di fuori dell'UE e vende a distanza beni soggetti a imposte ecologiche "
"a clienti nel paese"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__man
msgid "Manufacturer"
msgstr "Produttore"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__m
msgid "Menager"
msgstr "Responsabile"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_category__name
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__name
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_sector__name
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_form
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_form
msgid "Name"
msgstr "Nome"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Note"
msgstr "Nota"
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product
msgid "Only one ecotax classification occurrence by product"
msgstr "Solo una classificazione imposte ecologica per prodotto"
#. module: account_ecotax
#: model:ir.model.constraint,message:account_ecotax.constraint_ecotax_line_product_unique_classification_id_by_product_tmpl
msgid "Only one ecotax classification occurrence by product Template"
msgstr "Solo una classificazione imposte ecologica per modello prodotto"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_collector__partner_id
msgid "Partner"
msgstr "Partner"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_template
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__product_id
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_id
msgid "Product"
msgstr "Prodotto"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__product_status
msgid "Product Status"
msgstr "Stato prodotto"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_product__product_tmpl_id
msgid "Product Template"
msgstr "Modello prodotto"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_template_form_view
#: model_terms:ir.ui.view,arch_db:account_ecotax.product_variant_easy_edit_view
msgid "Product Template Ecotaxe classif"
msgstr "Classificazione imposta ecologica modello prodotto"
#. module: account_ecotax
#: model:ir.model,name:account_ecotax.model_product_product
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__product_status__p
msgid "Professionnel"
msgstr "Professionale"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_move_line_ecotax__quantity
#: model:ir.model.fields,field_description:account_ecotax.field_ecotax_line_mixin__quantity
msgid "Quantity"
msgstr "Quantità"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__rem
msgid "Remote vendor"
msgstr "Venditore remoto"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__supplier_status__res
msgid "Reseller, under their own brand"
msgstr "Rivenditore, con la propria marca"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__scale_code
msgid "Scale Code"
msgstr "Codice bilancia"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Search Ecotaxe Classification"
msgstr "Ricerca classificazione imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "Search Ecotaxe category"
msgstr "Cerca categoria imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "Search Ecotaxe collector"
msgstr "Cerca collettore imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "Search Ecotaxe sector"
msgstr "Cerca settore imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Section"
msgstr "Sezione"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_ecotax_classification__company_id
msgid ""
"Specify a company if you want to define this Ecotax Classification only for "
"specific company. Otherwise, this Fiscal Classification will be available "
"for all companies."
msgstr ""
"Specificare un'azienda se si desidera definire questa classificazione "
"imposte ecologica solo per un'azienda specifica. Altrimenti, questa "
"classificazione fiscale sarà disponibile per tutte le aziende."
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Subtotal"
msgstr "Subtotale"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_account_ecotax_classification__supplier_status
msgid "Supplier Status"
msgstr "Stato fornitore"
#. module: account_ecotax
#: model:ir.model.fields,help:account_ecotax.field_account_move_line_ecotax__quantity
msgid ""
"The optional quantity expressed by this line, eg: number of product sold. "
"The quantity is not a legal requirement but is very useful for some reports."
msgstr ""
"La quantità opzionale indicata in questa riga, es: numero di prodotti "
"venduti. La quantità non è un requisito legale ma è molto utile in diversi "
"resoconti."
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total"
msgstr "Totale"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.view_move_line_ecotax_form
msgid "Total Ecotaxe"
msgstr "Totale imposta ecologica"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Type"
msgstr "Tipo"
#. module: account_ecotax
#. odoo-python
#: code:addons/account_ecotax/models/account_move.py:0
#: code:addons/account_ecotax/models/account_move.py:0
#, python-format
msgid "Untaxed Amount"
msgstr "Imponibile"
#. module: account_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_product__weight_based_ecotax
#: model:ir.model.fields,field_description:account_ecotax.field_product_template__weight_based_ecotax
msgid "Weight Based Ecotax"
msgstr "Imposta ecologica in base al peso"
#. module: account_ecotax
#: model:ir.model.fields.selection,name:account_ecotax.selection__account_ecotax_classification__ecotax_type__weight_based
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_classification_search
msgid "Weight based"
msgstr "In base al peso"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_category_search
msgid "category"
msgstr "categoria"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_collector_search
msgid "collector"
msgstr "collettore"
#. module: account_ecotax
#: model_terms:ir.ui.view,arch_db:account_ecotax.ecotax_sector_search
msgid "sector"
msgstr "settore"

View file

@ -0,0 +1,42 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
def migrate(cr, version):
if not version:
return
cr.execute(
"""
SELECT *
FROM information_schema.columns
WHERE table_name='account_move_line_ecotax' and column_name='product_id';
"""
)
# field could already be stored in case account_ecotax_report is installed.
# then no need to managed these new stored fields.
if cr.fetchall():
return
cr.execute(
"""
ALTER TABLE account_move_line_ecotax ADD COLUMN product_id integer
"""
)
cr.execute(
"""
ALTER TABLE account_move_line_ecotax ADD COLUMN quantity numeric
"""
)
cr.execute(
"""
ALTER TABLE account_move_line_ecotax ADD COLUMN currency_id integer
"""
)
cr.execute(
"""
UPDATE account_move_line_ecotax
SET product_id = l.product_id,
quantity = l.quantity,
currency_id = l.currency_id
FROM account_move_line l
WHERE l.id = account_move_line_ecotax.account_move_line_id
"""
)

View file

@ -0,0 +1,11 @@
from . import account_ecotax_category
from . import account_ecotax_classification
from . import account_move
from . import account_move_line
from . import ecotax_line_product
from . import product_template
from . import ecotax_line_mixin
from . import account_move_line_ecotax
from . import product_product
from . import ecotax_sector
from . import ecotax_collector

View file

@ -0,0 +1,15 @@
# Copyright 2021 Camptocamp
# @author Silvio Gregorini <silvio.gregorini@camptocamp.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class AccountEcotaxCategory(models.Model):
_name = "account.ecotax.category"
_description = "Account Ecotax Category"
name = fields.Char(required=True)
code = fields.Char(required=True)
description = fields.Char()
active = fields.Boolean(default=True)

View file

@ -0,0 +1,92 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class AccountEcotaxClassification(models.Model):
_name = "account.ecotax.classification"
_description = "Account Ecotax Classification"
name = fields.Char(required=True)
code = fields.Char()
ecotax_type = fields.Selection(
[("fixed", "Fixed"), ("weight_based", "Weight based")],
required=True,
help="If ecotax is weight based,"
"the ecotax coef must take into account\n"
"the weight unit of measure (kg by default)",
)
ecotax_coef = fields.Float(
digits="Ecotax", compute="_compute_ecotax_vals", readonly=False, store=True
)
default_fixed_ecotax = fields.Float(
digits="Ecotax",
help="Default fixed ecotax amount.",
compute="_compute_ecotax_vals",
readonly=False,
store=True,
)
categ_id = fields.Many2one(
comodel_name="account.ecotax.category",
string="Category",
)
sector_id = fields.Many2one(
comodel_name="ecotax.sector",
string="Ecotax sector",
)
collector_id = fields.Many2one(
comodel_name="ecotax.collector",
string="Ecotax collector",
)
active = fields.Boolean(default=True)
company_id = fields.Many2one(
comodel_name="res.company",
default=lambda self: self.env.company,
help="Specify a company"
" if you want to define this Ecotax Classification only for specific"
" company. Otherwise, this Fiscal Classification will be available"
" for all companies.",
)
product_status = fields.Selection(
[("M", "Menager"), ("P", "Professionnel")],
required=True,
)
supplier_status = fields.Selection(
[
("MAN", "Manufacturer"),
("RES", "Reseller, under their own brand"),
("INT", "Introducer"),
("IMP", "Importer"),
("REM", "Remote vendor"),
],
required=True,
help="MAN ==> Manufacturer: is locally established in the country, "
"and manufactures goods which are subject to ecotaxes\n"
"under their own name and brand, or designs such goods, "
"subcontracts the manufacturing and then sells them under "
"their own name and brand\n"
"RES ==> Reseller, under their own brand: is locally established "
"in the country, and sells under their own name or brand goods"
" subject to ecotax manufactured by others\n"
"INT ==> Introducer: is locally established and sells on the local "
"market goods subject to ecotax coming from other countries "
"of the European Union\n"
"IMP ==> Importer: is established in France, and sells on the local"
" market goods subject to ecotax coming from countries outside"
"the European Union\n"
"REM ==> Remote vendor: is established in another country of "
"the European Union or outside the EU, and remotely sells good "
"subject to ecotaxes to customers in the country",
)
intrastat_code = fields.Char()
scale_code = fields.Char()
@api.depends("ecotax_type")
def _compute_ecotax_vals(self):
for classif in self:
if classif.ecotax_type == "weight_based":
classif.default_fixed_ecotax = 0
elif classif.ecotax_type == "fixed":
classif.ecotax_coef = 0

View file

@ -0,0 +1,65 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.tools.misc import formatLang
class AccountMove(models.Model):
_inherit = "account.move"
amount_ecotax = fields.Float(
digits="Ecotax",
string="Included Ecotax",
store=True,
compute="_compute_ecotax",
)
@api.depends("invoice_line_ids.subtotal_ecotax")
def _compute_ecotax(self):
for move in self:
move.amount_ecotax = sum(move.line_ids.mapped("subtotal_ecotax"))
@api.model
def _get_tax_totals(
self, partner, tax_lines_data, amount_total, amount_untaxed, currency
):
"""Include Ecotax when this method is called upon a single invoice
NB: `_get_tax_totals()` is called when field `tax_totals_json` is
computed, which is used in invoice form view to display taxes and
totals.
"""
res = super()._get_tax_totals(
partner, tax_lines_data, amount_total, amount_untaxed, currency
)
if len(self) != 1:
return res
base_amt = self.amount_total
ecotax_amt = self.amount_ecotax
if not ecotax_amt:
return res
env = self.with_context(lang=partner.lang).env
fmt_ecotax_amt = formatLang(env, ecotax_amt, currency_obj=currency)
fmt_base_amt = formatLang(env, base_amt, currency_obj=currency)
data = list(res["groups_by_subtotal"].get(_("Untaxed Amount")) or [])
data.append(
{
"tax_group_name": _("Included Ecotax"),
"tax_group_amount": ecotax_amt,
"formatted_tax_group_amount": fmt_ecotax_amt,
"tax_group_base_amount": base_amt,
"formatted_tax_group_base_amount": fmt_base_amt,
"tax_group_id": False, # Not an actual tax
"group_key": "Included Ecotax",
}
)
res["groups_by_subtotal"][_("Untaxed Amount")] = data
return res
def _get_formatted_ecotax_amount(self):
self.ensure_one()
return formatLang(self.env, self.amount_ecotax, currency_obj=self.currency_id)

View file

@ -0,0 +1,84 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import Command, api, fields, models
class AcountMoveLine(models.Model):
_inherit = "account.move.line"
ecotax_line_ids = fields.One2many(
"account.move.line.ecotax",
"account_move_line_id",
compute="_compute_ecotax_line_ids",
store=True,
readonly=False,
string="Ecotax lines",
copy=True,
)
subtotal_ecotax = fields.Float(
string="Ecotax", digits="Ecotax", store=True, compute="_compute_ecotax"
)
ecotax_amount_unit = fields.Float(
digits="Ecotax",
string="Ecotax Unit",
store=True,
compute="_compute_ecotax",
)
def _get_ecotax_amounts(self):
self.ensure_one()
amount_unit = sum(self.ecotax_line_ids.mapped("amount_unit"))
subtotal_ecotax = sum(self.ecotax_line_ids.mapped("amount_total"))
return amount_unit, subtotal_ecotax
@api.depends(
"currency_id",
"ecotax_line_ids.amount_unit",
"ecotax_line_ids.amount_total",
)
def _compute_ecotax(self):
for line in self:
amount_unit, amount_total = line._get_ecotax_amounts()
line.ecotax_amount_unit = amount_unit
line.subtotal_ecotax = amount_total
def _get_new_vals_list(self):
self.ensure_one()
new_vals_list = [
Command.create(
{
"classification_id": ecotaxline_prod.classification_id.id,
"force_amount_unit": ecotaxline_prod.force_amount,
}
)
for ecotaxline_prod in self.product_id.all_ecotax_line_product_ids
]
return new_vals_list
@api.depends("product_id")
def _compute_ecotax_line_ids(self):
"""Unlink and recreate ecotax_lines when modifying the product_id."""
for line in self:
if line.move_id.move_type not in ("out_invoice", "out_refund"):
continue
delete_vals_list = [
Command.delete(taxline.id) for taxline in line.ecotax_line_ids
]
new_vals_list = line._get_new_vals_list()
update = new_vals_list + delete_vals_list
line.ecotax_line_ids = update
def edit_ecotax_lines(self):
view = {
"name": ("Ecotax classification"),
"view_type": "form",
"view_mode": "form",
"res_model": "account.move.line",
"view_id": self.env.ref("account_ecotax.view_move_line_ecotax_form").id,
"type": "ir.actions.act_window",
"target": "new",
"res_id": self.id,
}
return view

View file

@ -0,0 +1,33 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class AccountMoveLineEcotax(models.Model):
_name = "account.move.line.ecotax"
_inherit = "ecotax.line.mixin"
_description = "Account move line ecotax"
account_move_line_id = fields.Many2one(
comodel_name="account.move.line",
string="Account move line",
required=True,
readonly=True,
index=True,
auto_join=True,
ondelete="cascade",
)
product_id = fields.Many2one(
"product.product",
related="account_move_line_id.product_id",
readonly=True,
store=True,
)
quantity = fields.Float(
related="account_move_line_id.quantity", readonly=True, store=True
)
currency_id = fields.Many2one(
related="account_move_line_id.currency_id", readonly=True, store=True
)

View file

@ -0,0 +1,14 @@
# Copyright 2021 Camptocamp
# @author Silvio Gregorini <silvio.gregorini@camptocamp.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class EcotaxCollector(models.Model):
_name = "ecotax.collector"
_description = "Ecotax collector"
name = fields.Char(required=True)
partner_id = fields.Many2one("res.partner", string="Partner", required=False)
active = fields.Boolean(default=True)

View file

@ -0,0 +1,66 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class EcotaxLineMixin(models.AbstractModel):
"""Mixin class for objects which can be used to save
multi ecotax classification by account move line
or sale order line."""
_name = "ecotax.line.mixin"
_description = "Ecotax Line Mixin"
product_id = fields.Many2one("product.product", string="Product", readonly=True)
currency_id = fields.Many2one("res.currency", string="Currency")
classification_id = fields.Many2one(
"account.ecotax.classification",
string="Classification",
ondelete="restrict",
)
amount_unit = fields.Float(
digits="Ecotax",
compute="_compute_ecotax",
help="Ecotax Amount computed from Classification or Manual ecotax",
store=True,
)
force_amount_unit = fields.Float(
digits="Ecotax",
help="Force ecotax.\n"
"Allow to add a subtitle to the default Ecotax Classification",
)
amount_total = fields.Float(
digits="Ecotax",
compute="_compute_ecotax",
help="Ecotax Amount total computed from Classification or forced ecotax amount",
store=True,
)
quantity = fields.Float(digits="Product Unit of Measure", readonly=True)
@api.depends(
"classification_id",
"force_amount_unit",
"product_id",
"quantity",
)
def _compute_ecotax(self):
for ecotaxline in self:
ecotax_classif = ecotaxline.classification_id
if ecotaxline.force_amount_unit:
# force ecotax amount
amount = ecotaxline.force_amount_unit
elif ecotax_classif.ecotax_type == "weight_based":
amount = ecotax_classif.ecotax_coef * (
ecotaxline.product_id.weight or 0.0
)
else:
amount = ecotax_classif.default_fixed_ecotax
ecotaxline.amount_unit = amount
total = ecotaxline.amount_unit * ecotaxline.quantity
if ecotaxline.currency_id:
total = ecotaxline.currency_id.round(total)
ecotaxline.amount_total = total

View file

@ -0,0 +1,83 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class EcotaxLineProduct(models.Model):
"""class for objects which can be used to save mutiple ecotax classifications
by product."""
_name = "ecotax.line.product"
_description = "Ecotax Line product"
product_tmpl_id = fields.Many2one(
"product.template", string="Product Template", readonly=True
)
product_id = fields.Many2one("product.product", string="Product", readonly=True)
currency_id = fields.Many2one(related="product_tmpl_id.currency_id", readonly=True)
classification_id = fields.Many2one(
"account.ecotax.classification",
string="Classification",
)
force_amount = fields.Float(
digits="Ecotax",
help="Force ecotax amount.\n"
"Allow to substitute default Ecotax Classification",
)
amount = fields.Float(
digits="Ecotax",
compute="_compute_ecotax",
help="Ecotax Amount computed form Classification or forced ecotax amount",
store=True,
)
display_name = fields.Char(compute="_compute_display_name")
@api.depends("classification_id", "amount")
def _compute_display_name(self):
for rec in self:
rec.display_name = "%s (%s)" % (
rec.classification_id.name,
rec.amount,
)
@api.depends(
"classification_id",
"classification_id.ecotax_type",
"classification_id.ecotax_coef",
"product_tmpl_id",
"product_tmpl_id.weight",
"product_id",
"product_id.weight",
"force_amount",
)
def _compute_ecotax(self):
for ecotaxline in self:
ecotax_cls = ecotaxline.classification_id
if ecotax_cls.ecotax_type == "weight_based":
amount = ecotax_cls.ecotax_coef * (
ecotaxline.product_tmpl_id.weight
or ecotaxline.product_id.weight
or 0.0
)
else:
amount = ecotax_cls.default_fixed_ecotax
# force ecotax amount
if ecotaxline.force_amount:
amount = ecotaxline.force_amount
ecotaxline.amount = amount
_sql_constraints = [
(
"unique_classification_id_by_product",
"UNIQUE(classification_id, product_id)",
"Only one ecotax classification occurrence by product",
),
(
"unique_classification_id_by_product_tmpl",
"UNIQUE(classification_id, product_tmpl_id)",
"Only one ecotax classification occurrence by product Template",
),
]

View file

@ -0,0 +1,14 @@
# Copyright 2021 Camptocamp
# @author Silvio Gregorini <silvio.gregorini@camptocamp.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class EcotaxSector(models.Model):
_name = "ecotax.sector"
_description = "Ecotax Sector"
name = fields.Char(required=True)
description = fields.Char()
active = fields.Boolean(default=True)

View file

@ -0,0 +1,90 @@
# Copyright 2021 Camptocamp
# @author Silvio Gregorini <silvio.gregorini@camptocamp.com>
# Copyright 2023 Akretion (http://www.akretion.com)
# # @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo.osv import expression
class ProductProduct(models.Model):
_inherit = "product.product"
additional_ecotax_line_product_ids = fields.One2many(
"ecotax.line.product",
"product_id",
string="Additional ecotax lines",
copy=True,
domain="[('id', 'not in', ecotax_line_product_ids)]",
)
all_ecotax_line_product_ids = fields.One2many(
"ecotax.line.product",
compute="_compute_all_ecotax_line_product_ids",
search="_search_all_ecotax_line_product_ids",
string="All ecotax lines",
help="Contain all ecotaxs classification defined in product template"
"and the additionnal.\n"
"ecotaxs defined in product variant. For more details"
"see the product variant accounting tab",
)
ecotax_amount = fields.Float(
digits="Ecotax",
compute="_compute_product_ecotax",
store=True,
help="Ecotax Amount computed form all ecotax line classification",
)
fixed_ecotax = fields.Float(
compute="_compute_product_ecotax",
store=True,
help="Fixed ecotax of the Ecotax Classification",
)
weight_based_ecotax = fields.Float(
compute="_compute_product_ecotax",
store=True,
help="Ecotax value :\n" "product weight * ecotax coef of Ecotax Classification",
)
@api.depends("ecotax_line_product_ids", "additional_ecotax_line_product_ids")
def _compute_all_ecotax_line_product_ids(self):
for product in self:
product.all_ecotax_line_product_ids = (
product.ecotax_line_product_ids
| product.additional_ecotax_line_product_ids
)
def _search_all_ecotax_line_product_ids(self, operator, operand):
if operator in expression.NEGATIVE_TERM_OPERATORS:
return [
("ecotax_line_product_ids", operator, operand),
("additional_ecotax_line_product_ids", operator, operand),
]
return [
"|",
("ecotax_line_product_ids", operator, operand),
("additional_ecotax_line_product_ids", operator, operand),
]
@api.depends(
"all_ecotax_line_product_ids",
"all_ecotax_line_product_ids.classification_id",
"all_ecotax_line_product_ids.classification_id.ecotax_type",
"all_ecotax_line_product_ids.classification_id.ecotax_coef",
"all_ecotax_line_product_ids.force_amount",
"weight",
)
def _compute_product_ecotax(self):
for product in self:
amount_ecotax = 0.0
weight_based_ecotax = 0.0
fixed_ecotax = 0.0
for ecotaxline_prod in product.all_ecotax_line_product_ids:
ecotax_cls = ecotaxline_prod.classification_id
if ecotax_cls.ecotax_type == "weight_based":
weight_based_ecotax += ecotaxline_prod.amount
else:
fixed_ecotax += ecotaxline_prod.amount
amount_ecotax += ecotaxline_prod.amount
product.fixed_ecotax = fixed_ecotax
product.weight_based_ecotax = weight_based_ecotax
product.ecotax_amount = amount_ecotax

View file

@ -0,0 +1,56 @@
# © 2014-2023 Akretion (http://www.akretion.com)
# @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class ProductTemplate(models.Model):
_inherit = "product.template"
ecotax_line_product_ids = fields.One2many(
"ecotax.line.product",
"product_tmpl_id",
string="Ecotax lines",
copy=True,
)
ecotax_amount = fields.Float(
digits="Ecotax",
compute="_compute_ecotax",
help="Ecotax Amount computed from Classification",
store=True,
)
fixed_ecotax = fields.Float(
compute="_compute_ecotax",
help="Fixed ecotax of the Ecotax Classification",
store=True,
)
weight_based_ecotax = fields.Float(
compute="_compute_ecotax",
help="Ecotax value :\nproduct weight * ecotax coef of Ecotax Classification",
store=True,
)
@api.depends(
"ecotax_line_product_ids",
"ecotax_line_product_ids.classification_id",
"ecotax_line_product_ids.classification_id.ecotax_type",
"ecotax_line_product_ids.classification_id.ecotax_coef",
"ecotax_line_product_ids.force_amount",
"weight",
)
def _compute_ecotax(self):
for tmpl in self:
amount_ecotax = 0.0
weight_based_ecotax = 0.0
fixed_ecotax = 0.0
for ecotaxline_prod in tmpl.ecotax_line_product_ids:
ecotax_cls = ecotaxline_prod.classification_id
if ecotax_cls.ecotax_type == "weight_based":
weight_based_ecotax += ecotaxline_prod.amount
else:
fixed_ecotax += ecotaxline_prod.amount
amount_ecotax += ecotaxline_prod.amount
tmpl.fixed_ecotax = fixed_ecotax
tmpl.weight_based_ecotax = weight_based_ecotax
tmpl.ecotax_amount = amount_ecotax

View file

@ -0,0 +1,2 @@
* Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
* Florian da Costa <florian.dacosta@akretion.com>

View file

@ -0,0 +1,35 @@
This module adds ecotax amount on invoice line.
furthermore, a total ecotax is added at the footer of each document.
To make easy ecotaxe management and to factor the data, ecotaxes are set on products via ECOTAXE classifications.
ECOTAXE classification can either be a fixed or weight based ecotax.
A product can have one or serveral ecotax classifications. For example, wooden window blinds equipped with electric motor can
have ecotax for wood and ecotax for electric motor.
This module has some limits :
- The ecotax amount is always included in the price of the product.
- The ecotax amount is not isolated in an specific accounting account but is included in the product income account.
If one of these limits is an issue, you could install the submodule account_ecotax_tax.
This second module lets you manage the ecotax as a tax, so you can configure if you want it to be included or excluded of product price and also configuring an accounting account to isolate it.
The main consequence of this approach is that the ecotax won't be considered in the turnover, since it is considered as a tax.
This module version add the possibility to manage several ecotax classifications by product.
A migration script is necessary to update from previous versions.
There is the main change to manage in migration script:
renamed field
model old field new field
account.move.line unit_ecotaxe_amount ecotaxe_amount_unit
product.template manual_fixed_ecotaxe force_ecotaxe_amount
changed fields
model old field new field
product.template ecotaxe_classification_id ecotaxe_classification_ids
added fields
model new field
account.move.line ecotaxe_line_ids
product.template ecotaxe_line_product_ids

View file

@ -0,0 +1,12 @@
1. Add an ecotax classification via the menu **Accounting > Configuration > Taxes > Ecotax Classification**.
- The ecotax classification can be either a fixed ecotax or a weight-based ecotax.
- Ecotax classification information can be used for legal declarations.
- For the fixed ecotax, the ecotax amount is used as a default value, which can be overridden on the product.
- For the weight-based ecotax, define one ecotax by a coefficient applied to the weight (depending on the product's materials).
2. Assign one or more ecotax classifications to a product.
- The ecotax amount can also be manually overridden on the product.
3. Create an invoice with this product

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="report_invoice_document"
inherit_id="account.report_invoice_document"
priority="100"
>
<xpath expr="//th[@name='th_price_unit']" position="after">
<th
name="th_ecotax"
t-if="o.amount_ecotax"
t-attf-class="text-right {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"
>
<span name="ecotax_line_label">Eco Part Unit</span>
</th>
</xpath>
<xpath expr="//td[span[@t-field='line.discount']]" position="after">
<td
t-if="o.amount_ecotax"
t-attf-class="text-center {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"
>
<span
class="text-nowrap"
t-field="line.ecotax_amount_unit"
/>
</td>
</xpath>
</template>
<template
id="document_tax_totals"
inherit_id="account.document_tax_totals"
priority="100"
>
<xpath expr="//t[@t-set='subtotal_to_show']" position="before">
<tr
t-if="o and o._name == 'account.move' and o.amount_ecotax"
name="ecotax_line"
>
<td name="ecotax_label">Including Eco Part</td>
<td class="text-end">
<span
t-esc="o._get_formatted_ecotax_amount()"
/>
</td>
</tr>
</xpath>
</template>
</odoo>

View file

@ -0,0 +1,13 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
ir_model_access_account_ecotax_classification_manager,Full access account_ecotax_classification to accountant,model_account_ecotax_classification,account.group_account_manager,1,1,1,1
ir_model_access_account_ecotax_category_manager,Full access to account.ecotax.category to accoutant,model_account_ecotax_category,account.group_account_manager,1,1,1,1
ir_model_access_ecotax_sector_manager,Full access to ecotax.sector to accoutant,model_ecotax_sector,account.group_account_manager,1,1,1,1
ir_model_access_ecotax_collector_manager,Full access to ecotax.collector to accoutant,model_ecotax_collector,account.group_account_manager,1,1,1,1
ir_model_access_account_ecotax_classification_user,Read access account_ecotax_classification to group invoice,model_account_ecotax_classification,account.group_account_invoice,1,0,0,0
ir_model_access_account_ecotax_category_user,Read access to account.ecotax.category to group invoice,model_account_ecotax_category,account.group_account_invoice,1,0,0,0
ir_model_access_ecotax_sector_user,Read access to ecotax.sector to group invoice,model_ecotax_sector,account.group_account_invoice,1,0,0,0
ir_model_access_ecotax_collector_user,Read access to ecotax.collector to group invoice,model_ecotax_collector,account.group_account_invoice,1,0,0,0
access_account_move_line_ecotax_readonly,account.move.line.ecotax readonly,model_account_move_line_ecotax,account.group_account_readonly,1,0,0,0
ir_model_access_account_move_line_ecotax_group_invoice,Read Full acess to model_account_move_line_ecotax to group invoice,model_account_move_line_ecotax,account.group_account_invoice,1,1,1,1
ir_model_access_ecotax_line_product_group_invoice,Read Full acess to model_ecotax_line_product to group invoice,model_ecotax_line_product,account.group_account_invoice,1,1,1,1
access_ecotax_line_product_readonly,ecotax.line.product readonly,model_ecotax_line_product,account.group_account_readonly,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 ir_model_access_account_ecotax_classification_manager Full access account_ecotax_classification to accountant model_account_ecotax_classification account.group_account_manager 1 1 1 1
3 ir_model_access_account_ecotax_category_manager Full access to account.ecotax.category to accoutant model_account_ecotax_category account.group_account_manager 1 1 1 1
4 ir_model_access_ecotax_sector_manager Full access to ecotax.sector to accoutant model_ecotax_sector account.group_account_manager 1 1 1 1
5 ir_model_access_ecotax_collector_manager Full access to ecotax.collector to accoutant model_ecotax_collector account.group_account_manager 1 1 1 1
6 ir_model_access_account_ecotax_classification_user Read access account_ecotax_classification to group invoice model_account_ecotax_classification account.group_account_invoice 1 0 0 0
7 ir_model_access_account_ecotax_category_user Read access to account.ecotax.category to group invoice model_account_ecotax_category account.group_account_invoice 1 0 0 0
8 ir_model_access_ecotax_sector_user Read access to ecotax.sector to group invoice model_ecotax_sector account.group_account_invoice 1 0 0 0
9 ir_model_access_ecotax_collector_user Read access to ecotax.collector to group invoice model_ecotax_collector account.group_account_invoice 1 0 0 0
10 access_account_move_line_ecotax_readonly account.move.line.ecotax readonly model_account_move_line_ecotax account.group_account_readonly 1 0 0 0
11 ir_model_access_account_move_line_ecotax_group_invoice Read Full acess to model_account_move_line_ecotax to group invoice model_account_move_line_ecotax account.group_account_invoice 1 1 1 1
12 ir_model_access_ecotax_line_product_group_invoice Read Full acess to model_ecotax_line_product to group invoice model_ecotax_line_product account.group_account_invoice 1 1 1 1
13 access_ecotax_line_product_readonly ecotax.line.product readonly model_ecotax_line_product account.group_account_readonly 1 0 0 0

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- ********************************************************************** -->
<!-- Account Product - France Ecotax localisation module for Odoo -->
<!-- Copyright (C) 2015 Akretion (http://www.akretion.com). -->
<!-- @author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com> -->
<!--You should have received a copy of the GNU Affero General Public License-->
<!--along with this program. If not, see <http://www.gnu.org/licenses/>. -->
<!-- ********************************************************************** -->
<odoo>
<record id="ir_rule_tax_group" model="ir.rule">
<field name="name">Ecotax Classification</field>
<field name="model_id" ref="model_account_ecotax_classification" />
<field name="global" eval="True" />
<field name="domain_force">
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]
</field>
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -0,0 +1,475 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="ecotax-management">
<h1>Ecotax Management</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d59b99ae4a615ce54d498aa6df2ce73001fac36b758c8646661ddcff54e74264
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-fiscal-rule/tree/16.0/account_ecotax"><img alt="OCA/account-fiscal-rule" src="https://img.shields.io/badge/github-OCA%2Faccount--fiscal--rule-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-fiscal-rule-16-0/account-fiscal-rule-16-0-account_ecotax"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-fiscal-rule&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module adds ecotax amount on invoice line.
furthermore, a total ecotax is added at the footer of each document.</p>
<p>To make easy ecotaxe management and to factor the data, ecotaxes are set on products via ECOTAXE classifications.
ECOTAXE classification can either be a fixed or weight based ecotax.</p>
<p>A product can have one or serveral ecotax classifications. For example, wooden window blinds equipped with electric motor can
have ecotax for wood and ecotax for electric motor.</p>
<p>This module has some limits :
- The ecotax amount is always included in the price of the product.
- The ecotax amount is not isolated in an specific accounting account but is included in the product income account.</p>
<p>If one of these limits is an issue, you could install the submodule account_ecotax_tax.
This second module lets you manage the ecotax as a tax, so you can configure if you want it to be included or excluded of product price and also configuring an accounting account to isolate it.
The main consequence of this approach is that the ecotax wont be considered in the turnover, since it is considered as a tax.</p>
<p>This module version add the possibility to manage several ecotax classifications by product.
A migration script is necessary to update from previous versions.</p>
<p>There is the main change to manage in migration script:</p>
<p>renamed field
model old field new field
account.move.line unit_ecotaxe_amount ecotaxe_amount_unit
product.template manual_fixed_ecotaxe force_ecotaxe_amount</p>
<p>changed fields
model old field new field
product.template ecotaxe_classification_id ecotaxe_classification_ids</p>
<p>added fields
model new field
account.move.line ecotaxe_line_ids
product.template ecotaxe_line_product_ids</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
<ol class="arabic simple">
<li>Add an ecotax classification via the menu <strong>Accounting &gt; Configuration &gt; Taxes &gt; Ecotax Classification</strong>.<ul>
<li>The ecotax classification can be either a fixed ecotax or a weight-based ecotax.</li>
<li>Ecotax classification information can be used for legal declarations.</li>
<li>For the fixed ecotax, the ecotax amount is used as a default value, which can be overridden on the product.</li>
<li>For the weight-based ecotax, define one ecotax by a coefficient applied to the weight (depending on the products materials).</li>
</ul>
</li>
<li>Assign one or more ecotax classifications to a product.<ul>
<li>The ecotax amount can also be manually overridden on the product.</li>
</ul>
</li>
<li>Create an invoice with this product</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-fiscal-rule/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-fiscal-rule/issues/new?body=module:%20account_ecotax%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-3">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-4">Authors</a></h3>
<ul class="simple">
<li>Akretion</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-5">Contributors</a></h3>
<ul class="simple">
<li>Mourad EL HADJ MIMOUNE &lt;<a class="reference external" href="mailto:mourad.elhadj.mimoune&#64;akretion.com">mourad.elhadj.mimoune&#64;akretion.com</a>&gt;</li>
<li>Florian da Costa &lt;<a class="reference external" href="mailto:florian.dacosta&#64;akretion.com">florian.dacosta&#64;akretion.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/mourad-ehm"><img alt="mourad-ehm" src="https://github.com/mourad-ehm.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/florian-dacosta"><img alt="florian-dacosta" src="https://github.com/florian-dacosta.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-fiscal-rule/tree/16.0/account_ecotax">OCA/account-fiscal-rule</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_ecotax

View file

@ -0,0 +1,423 @@
# Copyright 2016-2023 Akretion France
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# Copyright 2021 Camptocamp
# @author Silvio Gregorini <silvio.gregorini@camptocamp.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from random import choice
from odoo import Command
from odoo.tests.common import Form, TransactionCase
class TestInvoiceEcotaxCommon(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
# ACCOUNTING STUFF
# 1- Tax account
cls.invoice_tax_account = cls.env["account.account"].create(
{
"code": "47590",
"name": "Invoice Tax Account",
"account_type": "liability_current",
"company_id": cls.env.user.company_id.id,
}
)
# 2- Invoice tax with included price to avoid unwanted amounts in tests
cls.invoice_tax = cls.env["account.tax"].create(
{
"name": "Tax 10%",
"price_include": True,
"type_tax_use": "sale",
"company_id": cls.env.user.company_id.id,
"amount": 10,
"tax_exigibility": "on_invoice",
"invoice_repartition_line_ids": [
(
0,
0,
{
"factor_percent": 100,
"repartition_type": "base",
},
),
(
0,
0,
{
"factor_percent": 100,
"repartition_type": "tax",
"account_id": cls.invoice_tax_account.id,
},
),
],
"refund_repartition_line_ids": [
(
0,
0,
{
"factor_percent": 100,
"repartition_type": "base",
},
),
(
0,
0,
{
"factor_percent": 100,
"repartition_type": "tax",
"account_id": cls.invoice_tax_account.id,
},
),
],
}
)
# ECOTAXES
# 1- Fixed ecotax
cls.ecotax_fixed = cls.env["account.ecotax.classification"].create(
{
"name": "Fixed Ecotax",
"ecotax_type": "fixed",
"default_fixed_ecotax": 5.0,
"product_status": "M",
"supplier_status": "MAN",
}
)
# 2- Weight-based ecotax
cls.ecotax_weight = cls.env["account.ecotax.classification"].create(
{
"name": "Weight Based Ecotax",
"ecotax_type": "weight_based",
"ecotax_coef": 0.04,
"product_status": "P",
"supplier_status": "MAN",
}
)
# MISC
# 1- Invoice partner
cls.invoice_partner = cls.env["res.partner"].create({"name": "Test"})
@classmethod
def _make_invoice(cls, products):
"""Creates a new customer invoice with given products and returns it"""
move_form = Form(
cls.env["account.move"].with_context(default_move_type="out_invoice")
)
move_form.partner_id = cls.invoice_partner
for product in products or []:
with move_form.invoice_line_ids.new() as line_form:
line_form.product_id = product
invoice = move_form.save()
return invoice
@classmethod
def _make_product(cls, ecotax_classification):
"""Creates a product template with given ecotax classification
Returns the newly created template variant
"""
tmpl = cls.env["product.template"].create(
{
"name": " - ".join(["Product", ecotax_classification.name]),
"ecotax_line_product_ids": [
(
0,
0,
{
"classification_id": ecotax_classification.id,
},
)
],
# For the sake of simplicity, every product will have a price
# and weight of 100
"list_price": 100.00,
"weight": 100.00,
"taxes_id": [Command.set(cls.invoice_tax.ids)],
}
)
return tmpl.product_variant_ids[0]
@classmethod
def _make_product_variants(cls, ecotax_classification):
"""Creates a product variants with given ecotax classification
Returns the newly created template variants
"""
size_attr = cls.env["product.attribute"].create(
{
"name": "Size",
"create_variant": "always",
"value_ids": [(0, 0, {"name": "S"}), (0, 0, {"name": "M"})],
}
)
tmpl = cls.env["product.template"].create(
{
"name": " - ".join(["Product", ecotax_classification.name]),
"ecotax_line_product_ids": [
(
0,
0,
{
"classification_id": ecotax_classification.id,
},
)
],
# For the sake of simplicity, every product will have a price
# and weight of 100
"list_price": 100.00,
"weight": 100.00,
"attribute_line_ids": [
(
0,
0,
{
"attribute_id": size_attr.id,
"value_ids": [(6, 0, size_attr.value_ids.ids)],
},
)
],
}
)
return tmpl.product_variant_ids
@staticmethod
def _set_invoice_lines_random_quantities(invoice) -> list:
"""For each invoice line, sets a random qty between 1 and 10
Returns the list of new quantities as a list
"""
new_qtys = []
with Form(invoice) as invoice_form:
for index in range(len(invoice.invoice_line_ids)):
with invoice_form.invoice_line_ids.edit(index) as line_form:
new_qty = choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
line_form.quantity = new_qty
new_qtys.insert(index, new_qty)
line_form.save()
invoice_form.save()
return new_qtys
def _run_checks(self, inv, inv_expected_amounts, inv_lines_expected_amounts):
self.assertAlmostEqual(inv.amount_ecotax, inv_expected_amounts["amount_ecotax"])
self.assertAlmostEqual(inv.amount_total, inv_expected_amounts["amount_total"])
self.assertEqual(len(inv.invoice_line_ids), len(inv_lines_expected_amounts))
for inv_line, inv_line_expected_amounts in zip(
inv.invoice_line_ids, inv_lines_expected_amounts
):
self.assertEqual(
inv_line.ecotax_amount_unit,
inv_line_expected_amounts["ecotax_amount_unit"],
)
self.assertEqual(
inv_line.subtotal_ecotax, inv_line_expected_amounts["subtotal_ecotax"]
)
def _test_01_default_fixed_ecotax(self):
"""Test default fixed ecotax
Ecotax classification data for this test:
- fixed type
- default amount: 5.0
Product data for this test:
- list price: 100
- fixed ecotax
- no manual amount
Expected results (with 1 line and qty = 1):
- invoice ecotax amount: 5.0
- invoice total amount: 100.0
- line ecotax unit amount: 5.0
- line ecotax total amount: 5.0
"""
invoice = self._make_invoice(products=self._make_product(self.ecotax_fixed))
self._run_checks(
invoice,
{"amount_ecotax": 5.0, "amount_total": 100.0},
[{"ecotax_amount_unit": 5.0, "subtotal_ecotax": 5.0}],
)
new_qty = self._set_invoice_lines_random_quantities(invoice)[0]
self._run_checks(
invoice,
{"amount_ecotax": 5.0 * new_qty, "amount_total": 100.0 * new_qty},
[{"ecotax_amount_unit": 5.0, "subtotal_ecotax": 5.0 * new_qty}],
)
def _test_02_force_fixed_ecotax_on_product(self):
"""Test manual fixed ecotax
Ecotax classification data for this test:
- fixed type
- default amount: 5.0
Product data for this test:
- list price: 100
- fixed ecotax
- Force ecotax amount: 10
Expected results (with 1 line and qty = 1):
- invoice ecotax amount: 10.0
- invoice total amount: 100.0
- line ecotax unit amount: 10.0
- line ecotax total amount: 10.0
"""
product = self._make_product(self.ecotax_fixed)
product.ecotax_line_product_ids[0].force_amount = 10
invoice = self._make_invoice(products=product)
self._run_checks(
invoice,
{"amount_ecotax": 10.0, "amount_total": 100.0},
[{"ecotax_amount_unit": 10.0, "subtotal_ecotax": 10.0}],
)
new_qty = self._set_invoice_lines_random_quantities(invoice)[0]
self._run_checks(
invoice,
{"amount_ecotax": 10.0 * new_qty, "amount_total": 100.0 * new_qty},
[{"ecotax_amount_unit": 10.0, "subtotal_ecotax": 10.0 * new_qty}],
)
def _test_03_weight_based_ecotax(self):
"""Test weight based ecotax
Ecotax classification data for this test:
- weight based type
- coefficient: 0.04
Product data for this test:
- list price: 100
- weight based ecotax
- weight: 100
Expected results (with 1 line and qty = 1):
- invoice ecotax amount: 4.0
- invoice total amount: 100.0
- line ecotax unit amount: 4.0
- line ecotax total amount: 4.0
"""
invoice = self._make_invoice(products=self._make_product(self.ecotax_weight))
self._run_checks(
invoice,
{"amount_ecotax": 4.0, "amount_total": 100.0},
[{"ecotax_amount_unit": 4.0, "subtotal_ecotax": 4.0}],
)
new_qty = self._set_invoice_lines_random_quantities(invoice)[0]
self._run_checks(
invoice,
{"amount_ecotax": 4.0 * new_qty, "amount_total": 100.0 * new_qty},
[{"ecotax_amount_unit": 4.0, "subtotal_ecotax": 4.0 * new_qty}],
)
def _test_04_mixed_ecotax(self):
"""Test mixed ecotax within the same invoice
Creating an invoice with 3 lines (one per type with types tested above)
Expected results (with 3 lines and qty = 1):
- invoice ecotax amount: 19.0
- invoice total amount: 300.0
- line ecotax unit amount (fixed ecotax): 5.0
- line ecotax total amount (fixed ecotax): 5.0
- line ecotax unit amount (manual ecotax): 10.0
- line ecotax total amount (manual ecotax): 10.0
- line ecotax unit amount (weight based ecotax): 4.0
- line ecotax total amount (weight based ecotax): 4.0
"""
default_fixed_product = self._make_product(self.ecotax_fixed)
manual_fixed_product = self._make_product(self.ecotax_fixed)
manual_fixed_product.ecotax_line_product_ids[0].force_amount = 10
weight_based_product = self._make_product(self.ecotax_weight)
invoice = self._make_invoice(
products=default_fixed_product | manual_fixed_product | weight_based_product
)
self._run_checks(
invoice,
{"amount_ecotax": 19.0, "amount_total": 300.0},
[
{"ecotax_amount_unit": 5.0, "subtotal_ecotax": 5.0},
{"ecotax_amount_unit": 10.0, "subtotal_ecotax": 10.0},
{"ecotax_amount_unit": 4.0, "subtotal_ecotax": 4.0},
],
)
new_qtys = self._set_invoice_lines_random_quantities(invoice)
self._run_checks(
invoice,
{
"amount_ecotax": 5.0 * new_qtys[0]
+ 10.0 * new_qtys[1]
+ 4.0 * new_qtys[2],
"amount_total": 100.0 * sum(new_qtys),
},
[
{"ecotax_amount_unit": 5.0, "subtotal_ecotax": 5.0 * new_qtys[0]},
{"ecotax_amount_unit": 10.0, "subtotal_ecotax": 10.0 * new_qtys[1]},
{"ecotax_amount_unit": 4.0, "subtotal_ecotax": 4.0 * new_qtys[2]},
],
)
def _test_05_product_variants(self):
"""
Data:
A product template with two variants
Test Case:
Add additional ecotax line to one variant
Expected result:
The additional ecotax line is not associated to second variant
the all ecotax lines of the variant contains both the ecotax
line of the product template and the additional ecotax line
"""
variants = self._make_product_variants(self.ecotax_fixed)
self.assertEqual(len(variants), 2)
variant_1 = variants[0]
variant_2 = variants[1]
self.assertEqual(
variant_1.all_ecotax_line_product_ids,
variant_2.all_ecotax_line_product_ids,
)
variant_1.additional_ecotax_line_product_ids = [
(
0,
0,
{
"classification_id": self.ecotax_weight.id,
},
)
]
all_additional_ecotax = (
variant_1.additional_ecotax_line_product_ids
| variant_1.product_tmpl_id.ecotax_line_product_ids
)
self.assertEqual(
len(variant_1.all_ecotax_line_product_ids),
2,
)
self.assertEqual(
len(variant_2.all_ecotax_line_product_ids),
1,
)
self.assertEqual(
variant_1.all_ecotax_line_product_ids,
all_additional_ecotax,
)
self.assertEqual(
variant_2.all_ecotax_line_product_ids,
variant_2.product_tmpl_id.ecotax_line_product_ids,
)
class TestInvoiceEcotax(TestInvoiceEcotaxCommon):
def test_01_default_fixed_ecotax(self):
self._test_01_default_fixed_ecotax()
def test_02_force_fixed_ecotax_on_product(self):
self._test_02_force_fixed_ecotax_on_product()
def test_03_weight_based_ecotax(self):
self._test_03_weight_based_ecotax()
def test_04_mixed_ecotax(self):
self._test_04_mixed_ecotax()
def test_05_product_variants(self):
self._test_05_product_variants()

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="ecotax_category_tree" model="ir.ui.view">
<field name="model">account.ecotax.category</field>
<field name="arch" type="xml">
<tree>
<field name="code" />
<field name="name" />
<field name="active" invisible="1" />
</tree>
</field>
</record>
<record id="ecotax_category_form" model="ir.ui.view">
<field name="model">account.ecotax.category</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title oe_left">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" default_focus="1" placeholder="Name" />
</h1>
</div>
<group col="4">
<field name="code" />
<field name="active" invisible="1" />
</group>
</sheet>
</form>
</field>
</record>
<record id="ecotax_category_search" model="ir.ui.view">
<field name="model">account.ecotax.category</field>
<field name="arch" type="xml">
<search string="Search Ecotaxe category">
<field
name="name"
filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]"
string="category"
/>
</search>
</field>
</record>
<record id="action_ecotax_category" model="ir.actions.act_window">
<field name="name">Ecotaxe category</field>
<field name="res_model">account.ecotax.category</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new Ecotaxe category.
</p>
</field>
</record>
<menuitem
id="menu_ecotax_category"
parent="account.account_account_menu"
action="action_ecotax_category"
sequence="16"
/>
</odoo>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="ecotax_classification_tree" model="ir.ui.view">
<field name="model">account.ecotax.classification</field>
<field name="arch" type="xml">
<tree decoration-muted="not active">
<field name="active" invisible="1" />
<field name="code" />
<field name="name" />
<field name="ecotax_type" />
<field
name="ecotax_coef"
attrs="{'invisible': [['ecotax_type', '!=', 'weight_based']]}"
/>
<field
name="default_fixed_ecotax"
attrs="{'invisible': [['ecotax_type', '!=', 'fixed']]}"
/>
<field name="categ_id" />
<field name="product_status" />
</tree>
</field>
</record>
<record id="ecotax_classification_form" model="ir.ui.view">
<field name="model">account.ecotax.classification</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title oe_left">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" default_focus="1" placeholder="Name" />
</h1>
</div>
<group name="Informations" col="4">
<field name="code" />
<field name="categ_id" />
<field name="sector_id" />
<field name="collector_id" />
<field name="product_status" />
<field name="supplier_status" />
<field name="intrastat_code" />
<field name="scale_code" />
<field name="company_id" groups="base.group_multi_company" />
<field name="active" invisible="1" />
</group>
<separator string="Ecotaxes settings" />
<group col="4" name="ecotax_settings">
<field name="ecotax_type" />
<field
name="ecotax_coef"
attrs="{'invisible': [['ecotax_type', '!=', 'weight_based']]}"
/>
<field
name="default_fixed_ecotax"
attrs="{'invisible': [['ecotax_type', '!=', 'fixed']]}"
/>
</group>
</sheet>
</form>
</field>
</record>
<record id="ecotax_classification_search" model="ir.ui.view">
<field name="model">account.ecotax.classification</field>
<field name="arch" type="xml">
<search string="Search Ecotaxe Classification">
<field
name="name"
filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]"
string="Classification"
/>
<filter
name="fixed"
string="Fixed"
domain="[('ecotax_type','=','fixed')]"
icon="terp-camera_test"
/>
<filter
name="weight_based"
string="Weight based"
domain="[('ecotax_type','=','weight_based')]"
icon="terp-dialog-close"
/>
<group expand="0" string="Group By">
<filter
name="type"
string="Type"
context="{'group_by': 'ecotax_type'}"
icon="terp-stock_effects-object-colorize"
/>
</group>
</search>
</field>
</record>
<record id="action_ecotax_classification" model="ir.actions.act_window">
<field name="name">Ecotaxe Classification</field>
<field name="res_model">account.ecotax.classification</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new Ecotaxe Classification.
</p>
</field>
</record>
<menuitem
id="menu_ecotax_classification"
parent="account.account_account_menu"
action="action_ecotax_classification"
sequence="15"
/>
</odoo>

View file

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="view_move_form_inherit" model="ir.ui.view">
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='invoice_line_ids']/tree/field[last()]"
position="after"
>
<field
name="subtotal_ecotax"
optional="show"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
/>
<field
name="ecotax_amount_unit"
optional="hide"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
/>
<button
name="edit_ecotax_lines"
type="object"
string="Ecotax"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
/>
<field name="ecotax_line_ids" invisible="1">
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount_unit" />
<field name="amount_unit" />
<field name="amount_total" />
</tree>
</field>
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']/form/sheet/field[@name='name']"
position="after"
>
<field
name="ecotax_line_ids"
colspan="2"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
>
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount_unit" />
<field name="amount_unit" />
<field name="amount_total" />
</tree>
</field>
<field
name="subtotal_ecotax"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
/>
<field
name="ecotax_amount_unit"
attrs="{'invisible': [('parent.move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt'))]}"
/>
</xpath>
<xpath expr="//field[@name='tax_totals']" position="after">
<field
name="amount_ecotax"
class="oe_subtotal_footer_separator"
attrs="{'invisible': [ '|', ('move_type', 'not in', ('out_invoice', 'out_refund', 'out_receipt')), ('amount_ecotax', '=', 0)]}"
/>
</xpath>
</field>
</record>
<record id="view_move_line_ecotax_form" model="ir.ui.view">
<field name="name">account.move.line.ecotax.form</field>
<field name="model">account.move.line</field>
<field name="arch" type="xml">
<form create="false">
<sheet>
<field name="product_uom_category_id" invisible="1" />
<field name="display_type" invisible="1" />
<field name="parent_state" invisible="1" />
<group>
<field name="partner_id" invisible="1" />
<field name="company_id" invisible="1" />
<field name="debit" invisible="1" />
<field name="credit" invisible="1" />
<field
name="product_id"
widget="many2one_barcode"
readonly="1"
/>
<field name="quantity" readonly="1" />
<field
name="product_uom_id"
groups="uom.group_uom"
readonly="1"
/>
<field name="price_unit" readonly="1" />
<field name="discount" string="Disc.%" readonly="1" />
<field name="currency_id" invisible="1" />
</group>
<group>
<field
name="analytic_line_ids"
groups="analytic.group_analytic_accounting"
widget="many2many_tags"
readonly="1"
/>
<field
name="account_id"
options="{'no_create': True}"
domain="[('company_id', '=', company_id)]"
readonly="1"
/>
<field name="tax_ids" widget="many2many_tags" readonly="1" />
<field
name="analytic_distribution"
groups="analytic.group_analytic_accounting"
readonly="1"
/>
</group>
<label
for="name"
string="Description"
attrs="{'invisible': [('display_type', '!=', False)]}"
/>
<label
for="name"
string="Section"
attrs="{'invisible': [('display_type', '!=', 'line_section')]}"
/>
<label
for="name"
string="Note"
attrs="{'invisible': [('display_type', '!=', 'line_note')]}"
/>
<field name="name" widget="text" readonly="1" />
<notebook>
<page string="Ecotaxe lines" name="ecotax_line">
<field
name="ecotax_line_ids"
nolabel="1"
attrs="{'readonly': [('parent_state', '!=', 'draft')]}"
>
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount_unit" />
<field name="amount_unit" />
<field
name="amount_total"
sum="Total Ecotaxe"
/>
</tree>
</field>
</page>
</notebook>
<group>
<field
name="price_subtotal"
string="Subtotal"
groups="account.group_show_line_subtotals_tax_excluded"
/>
<field
name="price_total"
string="Total"
groups="account.group_show_line_subtotals_tax_included"
/>
</group>
</sheet>
</form>
</field>
</record>
</odoo>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="ecotax_collector_tree" model="ir.ui.view">
<field name="model">ecotax.collector</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="partner_id" />
<field name="active" invisible="1" />
</tree>
</field>
</record>
<record id="ecotax_collector_form" model="ir.ui.view">
<field name="model">ecotax.collector</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title oe_left">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" default_focus="1" placeholder="Name" />
</h1>
</div>
<group col="4">
<field name="partner_id" />
<field name="active" invisible="1" />
</group>
</sheet>
</form>
</field>
</record>
<record id="ecotax_collector_search" model="ir.ui.view">
<field name="model">ecotax.collector</field>
<field name="arch" type="xml">
<search string="Search Ecotaxe collector">
<field
name="name"
filter_domain="[('name','ilike',self)]"
string="collector"
/>
</search>
</field>
</record>
<record id="action_ecotax_collector" model="ir.actions.act_window">
<field name="name">Ecotaxe collector</field>
<field name="res_model">ecotax.collector</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new Ecotaxe collector.
</p>
</field>
</record>
<menuitem
id="menu_ecotax_collector"
parent="account.account_account_menu"
action="action_ecotax_collector"
sequence="18"
/>
</odoo>

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author: Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="ecotax_sector_tree" model="ir.ui.view">
<field name="model">ecotax.sector</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="active" invisible="1" />
</tree>
</field>
</record>
<record id="ecotax_sector_form" model="ir.ui.view">
<field name="model">ecotax.sector</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="bg-danger"
attrs="{'invisible': [('active', '=', True)]}"
/>
<div class="oe_title oe_left">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" default_focus="1" placeholder="Name" />
</h1>
</div>
<group col="4">
<field name="active" invisible="1" />
</group>
</sheet>
</form>
</field>
</record>
<record id="ecotax_sector_search" model="ir.ui.view">
<field name="model">ecotax.sector</field>
<field name="arch" type="xml">
<search string="Search Ecotaxe sector">
<field
name="name"
filter_domain="[('name','ilike',self)]"
string="sector"
/>
</search>
</field>
</record>
<record id="action_ecotax_sector" model="ir.actions.act_window">
<field name="name">Ecotaxe sector</field>
<field name="res_model">ecotax.sector</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to start a new Ecotaxe sector.
</p>
</field>
</record>
<menuitem
id="menu_ecotax_sector"
parent="account.account_account_menu"
action="action_ecotax_sector"
sequence="17"
/>
</odoo>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<record id="product_template_form_view" model="ir.ui.view">
<field name="name">ecotax.base.product.template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="account.product_template_form_view" />
<field name="arch" type="xml">
<group name="properties" position="after">
<group name="ecotax" col="4">
<label
for="ecotax_line_product_ids"
string="Product Template Ecotaxe classif"
/>
<div>
<field name="ecotax_line_product_ids" colspan="2" nolabel="1">
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount" />
<field name="amount" />
</tree>
</field>
</div>
<field name="ecotax_amount" />
</group>
</group>
</field>
</record>
</odoo>

View file

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright (C) 2023 Akretion (http://www.akretion.com/)
@author Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
-->
<odoo>
<!-- Variants view -->
<record id="product_variant_easy_edit_view" model="ir.ui.view">
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_variant_easy_edit_view" />
<field name="arch" type="xml">
<group name="tags" position="after">
<group name="ecotax_classif" string="Ecotaxe classification">
<label
for="ecotax_line_product_ids"
string=" Product Template Ecotaxe classif"
/>
<div>
<field
name="ecotax_line_product_ids"
colspan="2"
nolabel="1"
readonly="1"
>
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount" />
<field name="amount" />
</tree>
</field>
</div>
<label
for="additional_ecotax_line_product_ids"
string="Additional Ecotaxe classif"
/>
<div>
<field
name="additional_ecotax_line_product_ids"
colspan="2"
nolabel="1"
>
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount" />
<field name="amount" />
</tree>
</field>
</div>
<field name="fixed_ecotax" />
<field name="weight_based_ecotax" />
<field name="ecotax_amount" />
</group>
</group>
</field>
</record>
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">usability.product.product.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='ecotax_line_product_ids']/.." position="after">
<label
for="additional_ecotax_line_product_ids"
string="Additional Ecotaxe classif"
/>
<div>
<field
name="additional_ecotax_line_product_ids"
colspan="2"
nolabel="1"
>
<tree editable="bottom">
<field name="classification_id" />
<field name="force_amount" />
<field name="amount" />
</tree>
</field>
</div>
</xpath>
<xpath expr="//label[@for='standard_price']" position="before">
<label for="all_ecotax_line_product_ids" string="Ecotaxe classif" />
<div>
<field
name="all_ecotax_line_product_ids"
colspan="2"
nolabel="1"
widget="many2many_tags"
>
</field>
</div>
</xpath>
</field>
</record>
</odoo>

View 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 Account_ecotax Module - account_ecotax
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.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for account_ecotax. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [account](../../odoo-bringout-oca-ocb-account)

View 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 account_ecotax or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-account-fiscal-rule-account_ecotax"
# or
uv pip install odoo-bringout-oca-account-fiscal-rule-account_ecotax"
```

View file

@ -0,0 +1,23 @@
# Models
Detected core models and extensions in account_ecotax.
```mermaid
classDiagram
class account_ecotax_category
class account_ecotax_classification
class account_move_line_ecotax
class ecotax_collector
class ecotax_line_mixin
class ecotax_line_product
class ecotax_sector
class account_move
class account_move_line
class ecotax_line_mixin
class product_product
class product_template
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: account_ecotax. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon account_ecotax
- License: LGPL-3

View file

@ -0,0 +1,22 @@
# Reports
Report definitions and templates in account_ecotax.
```mermaid
classDiagram
```
## Available Reports
No named reports found in XML files.
## Report Files
- **invoice.xml** (XML template/definition)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,42 @@
# Security
Access control and security definitions in account_ecotax.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../account_ecotax/security/ir.model.access.csv)**
- 12 model access rules
## Record Rules
Row-level security rules defined in:
- **[ir_rule.xml](../account_ecotax/security/ir_rule.xml)**
## Security Groups & Configuration
Security groups and permissions defined in:
- **[ir_rule.xml](../account_ecotax/security/ir_rule.xml)**
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../account_ecotax/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
- **[ir_rule.xml](../account_ecotax/security/ir_rule.xml)**
- Security groups, categories, and XML-based rules
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View 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.

View 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 account_ecotax
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-account-fiscal-rule-account_ecotax"
version = "16.0.0"
description = "Ecotax Management - Ecotax Management: in French context is a 'cost' added to the sale price of electrical or electronic appliances or furnishing items"
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 = ["account_ecotax"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]