diff --git a/l10n_fr_ecotaxe/models/ecotaxe_line_product.py b/l10n_fr_ecotaxe/models/ecotaxe_line_product.py
index a599d4f99..cfe32bc99 100644
--- a/l10n_fr_ecotaxe/models/ecotaxe_line_product.py
+++ b/l10n_fr_ecotaxe/models/ecotaxe_line_product.py
@@ -51,3 +51,16 @@ def _compute_ecotaxe(self):
if ecotaxeline.force_ecotaxe_amount:
amt = ecotaxeline.force_ecotaxe_amount
ecotaxeline.ecotaxe_amount = amt
+
+ _sql_constraints = [
+ (
+ "unique_ecotaxe_classification_id_by_product",
+ "UNIQUE(ecotaxe_classification_id, product_id)",
+ "Only one ecotaxe classification occurrence by product",
+ ),
+ (
+ "unique_ecotaxe_classification_id_by_product_tmpl",
+ "UNIQUE(ecotaxe_classification_id, product_tmplt_id)",
+ "Only one ecotaxe classification occurrence by product Template",
+ ),
+ ]
diff --git a/l10n_fr_ecotaxe/views/account_move_view.xml b/l10n_fr_ecotaxe/views/account_move_view.xml
index 5ee715705..017bfd0f6 100644
--- a/l10n_fr_ecotaxe/views/account_move_view.xml
+++ b/l10n_fr_ecotaxe/views/account_move_view.xml
@@ -13,8 +13,16 @@
expr="//field[@name='invoice_line_ids']/tree/field[@name='tax_ids']"
position="after"
>
-
-
+
+
-
+
@@ -47,12 +59,21 @@
-
-
+
+
-
+
diff --git a/l10n_fr_ecotaxe/views/product_template_view.xml b/l10n_fr_ecotaxe/views/product_template_view.xml
index 93bd7d2cd..f36a182f4 100644
--- a/l10n_fr_ecotaxe/views/product_template_view.xml
+++ b/l10n_fr_ecotaxe/views/product_template_view.xml
@@ -11,7 +11,10 @@
-
+
diff --git a/l10n_fr_ecotaxe/views/product_view.xml b/l10n_fr_ecotaxe/views/product_view.xml
index 562be456f..db1d37d76 100644
--- a/l10n_fr_ecotaxe/views/product_view.xml
+++ b/l10n_fr_ecotaxe/views/product_view.xml
@@ -51,5 +51,30 @@
-
+
+ usability.product.product.form
+ product.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+