diff --git a/__manifest__.py b/__manifest__.py
index 40f00ec5d909315d8bedb2a95c724fa1f542397b..2f2258d69ca26995363e55a18000a8b6f320d57e 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -17,9 +17,9 @@
         "views/financial_contract.xml",
         "views/financial_external_guarantee.xml",
         "views/financial_funding.xml",
+        "views/financial_product_category.xml",
         "views/financial_product_template.xml",
         "views/financial_suspensive_condition.xml",
-        "views/res_partner.xml",
         # views menu
         "views/menus.xml",
         # wizard
@@ -31,6 +31,7 @@
         "web.assets_tests": [],
         "web.assets_qweb": [],
     },
+    "application": True,
     "installable": True,
     "auto_install": False,
 }
diff --git a/models/__init__.py b/models/__init__.py
index da59c1d0124ce75869afd443f6ccc77c26c079d7..ef7ca807b4ba9cf45cb8163d98ce09bde83e1924 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,10 +1,8 @@
-from . import financial_contract_mixin
 from . import financial_contract
 from . import financial_contract_suspensive_condition
 from . import financial_external_guarantee
 from . import financial_funding
+from . import financial_product_category
 from . import financial_product_suspensive_condition
 from . import financial_product_template
 from . import financial_suspensive_condition
-from . import res_company
-from . import res_partner
diff --git a/models/financial_contract.py b/models/financial_contract.py
index 435e0682c5eab04f83e52361911d65573ae419f7..db60f305fe57a10767a8d202015968a709c9f7ef 100644
--- a/models/financial_contract.py
+++ b/models/financial_contract.py
@@ -5,18 +5,43 @@ from odoo import _, api, fields, models
 from odoo.exceptions import AccessError, UserError
 
 
-class FinancialContract(models.Model):
+class FinancialContract(models.AbstractModel):
     _name = "financial.contract"
     _description = "Financial Contract"
-    _inherit = ["financial.contract.mixin"]
     _order = "create_date desc"
 
-    tool = fields.Selection(
-        [],
-        string="Outil",
+    name = fields.Char(compute="_compute_name")
+    number = fields.Char("Numéro", readonly=True)
+    partner_id = fields.Many2one(
+        comodel_name="res.partner",
+        string="Client",
         required=True,
     )
-    tool_id = fields.Many2oneReference("ID Outil", model_field="tool", required=True,)
+    active = fields.Boolean(
+        default=True,
+    )
+    amount = fields.Monetary("Montant")
+    company_id = fields.Many2one(
+        comodel_name="res.company",
+        string="Société",
+        default=lambda self: self.env.company,
+    )
+    currency_id = fields.Many2one(
+        comodel_name="res.currency", related="company_id.currency_id"
+    )
+    comment = fields.Text("Commentaire")
+    expiration_date = fields.Date("Date d'expiration")
+
+    guarantee_id = fields.Many2one(
+        comodel_name="financial.external.guarantee",
+        string="Garantie",
+        ondelete="restrict",
+    )
+    funding_id = fields.Many2one(
+        comodel_name="financial.funding",
+        string="Fonds financeur",
+        ondelete="restrict",
+    )
     state = fields.Selection(
         [
             ("init", "Initialisation"),
@@ -39,41 +64,18 @@ class FinancialContract(models.Model):
         for contract in self:
             if contract.state in ["proposal", "contract", "done", "cancel"]:
                 if contract.company_id not in self.env.user.company_ids:
-                    raise AccessError(_(
-                        "vous n'êtes pas autorisé à modifier ce contrat"
-                    ))
+                    raise AccessError(
+                        _("Vous n'êtes pas autorisé à modifier ce contrat.")
+                    )
 
     # ------------------------------------------------------
     # Computed fields / Search Fields
     # ------------------------------------------------------
-    @api.depends("tool", "tool_id")
-    def _compute_contract_fields(self):
+    def _compute_name(self):
         for contract in self:
-            contract_id = contract._get_tool_object()
-            if contract_id:
-                contract.company_id = contract_id.company_id
-                contract.product_id = contract_id.product_id
-                contract.amount = contract_id.amount
-
-    @api.depends("product_id")
-    def _compute_suspensive_condition_ids(self):
-        for contract in self:
-            # contract.suspensive_condition_ids.unlink()
-            condition_to_create = [(5, 0, 0)]
-            if contract.product_id:
-                for condition in self.product_id.suspensive_condition_ids:
-                    condition_to_create.append(
-                        (
-                            0,
-                            None,
-                            {
-                                "condition_id": condition.id,
-                                "condition_comment": condition.condition_comment,
-                            },
-                        )
-                    )
-                if condition_to_create:
-                    contract.update({"suspensive_condition_ids": condition_to_create})
+            contract.name = (
+                f"{contract.number or '#'} - " f"{contract.partner_id.name} "
+            )
 
     # ------------------------------------------------------
     # Onchange
@@ -86,6 +88,16 @@ class FinancialContract(models.Model):
     # ------------------------------------------------------
     # CRUD (Override ORM)
     # ------------------------------------------------------
+    def unlink(self):
+        """
+        Restrict contract deletion depending on state
+        """
+        for contract in self:
+            if contract.state != "init":
+                raise UserError(
+                    _("Seuls les deals à l'état Projet peuvent être supprimés")
+                )
+        return super().unlink()
 
     # ------------------------------------------------------
     # Override ORM
@@ -94,6 +106,3 @@ class FinancialContract(models.Model):
     # ------------------------------------------------------
     # Business functions
     # ------------------------------------------------------
-    def _get_tool_object(self):
-        self.ensure_one()
-        return self.env[self.tool].browse(self.tool_id) if self.tool else False
diff --git a/models/financial_contract_mixin.py b/models/financial_contract_mixin.py
deleted file mode 100644
index 4349bb324a0b8478d54490490bcb778242faf0a2..0000000000000000000000000000000000000000
--- a/models/financial_contract_mixin.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# © 2024 Le Filament (<http://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
-from odoo import _, api, fields, models
-from odoo.exceptions import AccessError, UserError
-
-
-class FinancialContractMixin(models.AbstractModel):
-    _name = "financial.contract.mixin"
-    _inherit = ["mail.thread", "mail.activity.mixin"]
-    _description = "Financial Contract Mixin"
-
-    name = fields.Char(compute="_compute_name")
-    number = fields.Char("Numéro", readonly=True)
-    partner_id = fields.Many2one(
-        comodel_name="res.partner",
-        string="Client",
-        required=True,
-    )
-    product_id = fields.Many2one(
-        comodel_name="financial.product.template",
-        string="Gamme",
-    )
-    active = fields.Boolean(
-        default=True,
-        tracking=1,
-    )
-    amount = fields.Monetary("Montant")
-    company_id = fields.Many2one(
-        comodel_name="res.company",
-        string="Société",
-        default=lambda self: self.env.company,
-    )
-    currency_id = fields.Many2one(
-        comodel_name="res.currency", compute="_compute_currency_id"
-    )
-    suspensive_condition_ids = fields.One2many(
-        comodel_name="financial.contract.suspensive.condition",
-        inverse_name="contract_id",
-        string="Conditions suspensives",
-        compute="_compute_suspensive_condition_ids",
-        store=True,
-        readonly=False,
-    )
-    comment = fields.Text("Commentaire")
-    expiration_date = fields.Date("Date d'expiration")
-
-    guarantee_id = fields.Many2one(
-        comodel_name="financial.external.guarantee",
-        string="Garantie",
-        ondelete="restrict",
-    )
-    funding_id = fields.Many2one(
-        comodel_name="financial.funding",
-        string="Fonds financeur",
-        ondelete="restrict",
-    )
-
-    # ------------------------------------------------------
-    # Constrains
-    # ------------------------------------------------------
-    @api.constrains("state", "company_id")
-    def _check_user_company(self):
-        for contract in self:
-            if contract.state in ["proposal", "contract", "done", "cancel"]:
-                if contract.company_id not in self.env.user.company_ids:
-                    raise AccessError(_(
-                        "vous n'êtes pas autorisé à modifier ce contrat"
-                    ))
-
-    # ------------------------------------------------------
-    # Computed fields / Search Fields
-    # ------------------------------------------------------
-    def _compute_currency_id(self):
-        for contract in self:
-            contract.currency_id = self.env.company.currency_id
-
-    def _compute_name(self):
-        for contract in self:
-            contract.name = (
-                f"{contract.number or '#'} - "
-                f"{contract.partner_id.name} "
-            )
-
-    @api.depends("product_id")
-    def _compute_suspensive_condition_ids(self):
-        for contract in self:
-            # contract.suspensive_condition_ids.unlink()
-            condition_to_create = [(5, 0, 0)]
-            if contract.product_id:
-                for condition in self.product_id.suspensive_condition_ids:
-                    condition_to_create.append(
-                        (
-                            0,
-                            None,
-                            {
-                                "condition_id": condition.id,
-                                "condition_comment": condition.condition_comment,
-                            },
-                        )
-                    )
-                if condition_to_create:
-                    contract.update({"suspensive_condition_ids": condition_to_create})
-
-    # ------------------------------------------------------
-    # Onchange
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Actions
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # CRUD (Override ORM)
-    # ------------------------------------------------------
-    @api.model_create_multi
-    def create(self, vals):
-        tools = super().write(vals)
-        for tool in tools:
-            contract = self.env["financial.contract"].create({
-                "tool": self._name,
-                "tool_id": tool.id,
-            })
-            tool.contract_id = contract.id
-        return tools
-
-    def unlink(self):
-        """
-        Restrict contract deletion depending on state
-        """
-        for contract in self:
-            if contract.state != "init":
-                raise UserError(
-                    _("Seuls les deals à l'état Projet peuvent être supprimés")
-                )
-        return super().unlink()
-
-    # ------------------------------------------------------
-    # Override ORM
-    # ------------------------------------------------------
-    def unlink(self):
-        if self.contract_id:
-            self.contract_id.unlink()
-        return super().unlink()
-
-    # ------------------------------------------------------
-    # Business functions
-    # ------------------------------------------------------
diff --git a/models/financial_contract_suspensive_condition.py b/models/financial_contract_suspensive_condition.py
index aef984e5034e3b772367c56a21fbfa62e5531b1a..25ef8276a0c5f641614beae80e61c08f42c11238 100644
--- a/models/financial_contract_suspensive_condition.py
+++ b/models/financial_contract_suspensive_condition.py
@@ -1,10 +1,10 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2024 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models
 
 
-class FinancialContractSuspensiveCondition(models.Model):
+class FinancialContractSuspensiveCondition(models.AbstractModel):
     _name = "financial.contract.suspensive.condition"
     _description = "Financial contract suspensive condition"
 
diff --git a/models/financial_funding.py b/models/financial_funding.py
index 626a778381f0fca3aae4a5cf4c7976d7bfbee5f8..d3bed48faa48443ea52386cdede762455d4aad6c 100644
--- a/models/financial_funding.py
+++ b/models/financial_funding.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2024 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models
diff --git a/models/financial_product_category.py b/models/financial_product_category.py
new file mode 100644
index 0000000000000000000000000000000000000000..67d842137d2211f922d9c928f7f072c3494b3568
--- /dev/null
+++ b/models/financial_product_category.py
@@ -0,0 +1,46 @@
+# © 2024 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models
+
+
+class FinancialProductTemplate(models.Model):
+    _name = "financial.product.category"
+    _description = "Financial product category"
+
+    name = fields.Char("Nom de la gamme", required=True)
+    active = fields.Boolean(
+        default=True,
+    )
+    company_id = fields.Many2one(
+        comodel_name="res.company",
+        string="Société",
+        change_default=True,
+        required=True,
+        readonly=True,
+        default=lambda self: self.env.company,
+    )
+
+    # ------------------------------------------------------
+    # Constrains functions
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Computed fields / Search Fields
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Actions
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Override ORM
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # CRUD (Override ORM)
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Business functions
+    # ------------------------------------------------------
diff --git a/models/financial_product_suspensive_condition.py b/models/financial_product_suspensive_condition.py
index 8bb32bb7965424d5dd2f5d10d474e519a2cdac19..f28ba3b333ff5b0404cc4a7039678d614101ebab 100644
--- a/models/financial_product_suspensive_condition.py
+++ b/models/financial_product_suspensive_condition.py
@@ -1,10 +1,10 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2024 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models
 
 
-class FinancialProductSuspensiveCondition(models.Model):
+class FinancialProductSuspensiveCondition(models.AbstractModel):
     _name = "financial.product.suspensive.condition"
     _description = "Financial product suspensive condition"
 
diff --git a/models/financial_product_template.py b/models/financial_product_template.py
index 8e7e7f76edeca3c44cf157905cc5aa8d141a0180..234207db3c846652ff658496af5be0cbd3300b66 100644
--- a/models/financial_product_template.py
+++ b/models/financial_product_template.py
@@ -5,28 +5,22 @@ from odoo import _, api, fields, models
 from odoo.exceptions import UserError
 
 
-class FinancialProductTemplate(models.Model):
+class FinancialProductTemplate(models.AbstractModel):
     _name = "financial.product.template"
-    _inherit = ["mail.thread", "mail.activity.mixin",]
     _description = "Financial product template"
 
     name = fields.Char(required=True)
+    category_id = fields.Many2one(
+        comodel_name="financial.product.category",
+        string="Nom de la gamme",
+        required=True,
+        ondelete="restrict",
+    )
     active = fields.Boolean(
         default=True,
         tracking=1,
     )
-    tool = fields.Selection(
-        [],
-        string="Type d'outil",
-        required=True,
-    )
-    tool_id = fields.Many2oneReference("ID Outil", model_field="tool", required=True,)
     description = fields.Text()
-    suspensive_condition_ids = fields.One2many(
-        comodel_name="financial.product.suspensive.condition",
-        inverse_name="product_id",
-        string="Conditions suspensives",
-    )
     company_id = fields.Many2one(
         comodel_name="res.company",
         string="Société",
@@ -38,10 +32,23 @@ class FinancialProductTemplate(models.Model):
     currency_id = fields.Many2one(
         comodel_name="res.currency", related="company_id.currency_id"
     )
+    date_start = fields.Date("Début de validité")
+    date_end = fields.Date("Fin de validité")
 
     # ------------------------------------------------------
     # Constrains functions
     # ------------------------------------------------------
+    @api.constrains("date_start", "date_end")
+    def _check_date_validity(self):
+        for product in self:
+            if (
+                product.date_start
+                and product.date_end
+                and product.date_end <= product.date_start
+            ):
+                raise UserError(
+                    _("La date de fin doit être supérieure à la date de début")
+                )
 
     # ------------------------------------------------------
     # Computed fields / Search Fields
@@ -58,22 +65,6 @@ class FinancialProductTemplate(models.Model):
     # ------------------------------------------------------
     # CRUD (Override ORM)
     # ------------------------------------------------------
-    def unlink(self):
-        """
-        Restrict product deletion if used in
-        """
-        for product in self:
-            contract_ids = self.env["financial.contract"].search(
-                [("product_id", "=", product.id)]
-            )
-            if contract_ids:
-                raise UserError(
-                    _(
-                        "Ce produit est utilisé dans un ou plusieurs dossiers, il n'est "
-                        "pas possible de le supprimer. Il peut être archivé."
-                    )
-                )
-        return super().unlink()
 
     # ------------------------------------------------------
     # Business functions
diff --git a/models/financial_suspensive_condition.py b/models/financial_suspensive_condition.py
index 4d8938da80d7dad755ef21d26247203ebfda68d9..271cfc33d73b39528d764d94eb1e26789ba2d17a 100644
--- a/models/financial_suspensive_condition.py
+++ b/models/financial_suspensive_condition.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# © 2024 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models
diff --git a/models/res_company.py b/models/res_company.py
deleted file mode 100644
index ddd669ab0d6d103b8eab30e44bdde145ffb95cd1..0000000000000000000000000000000000000000
--- a/models/res_company.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2023- Le Filament (https://le-filament.com)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
-
-from odoo import api, fields, models
-
-
-class ResCompany(models.Model):
-    _inherit = "res.company"
-
-    contract_sequence_id = fields.Many2one("ir.sequence")
-
-    # ------------------------------------------------------
-    # Fields declaration
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # SQL Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Default methods
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Computed fields / Search Fields
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Onchange / Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # CRUD methods (ORM overrides)
-    # ------------------------------------------------------
-    @api.model
-    def create(self, values):
-        # Crée une séquence dédiée à la société
-        res = super().create(values)
-
-        res.contract_sequence_id = self.env["ir.sequence"].create(
-            {
-                "name": f"Contrats Financiers - {res.name}",
-                "company_id": res.id,
-                "number_next": 1,
-                "number_increment": 1,
-                "use_date_range": True,
-                "prefix": "C%(year)s%(month)s",
-                "padding": 4,
-                "implementation": "no_gap",
-                "code": f"financial.contract.company_{res.id}",
-            }
-        )
-        return res
-
-    # ------------------------------------------------------
-    # Actions
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Business methods
-    # ------------------------------------------------------
diff --git a/models/res_partner.py b/models/res_partner.py
deleted file mode 100644
index f1dce52cef536ece85e2a960bdf4cd37b1f4413f..0000000000000000000000000000000000000000
--- a/models/res_partner.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2023- Le Filament (https://le-filament.com)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
-
-from odoo import fields, models
-
-
-class ResPartner(models.Model):
-    _inherit = "res.partner"
-
-    # ------------------------------------------------------
-    # Fields declaration
-    # ------------------------------------------------------
-    financial_contract_ids = fields.One2many(
-        comodel_name="financial.contract",
-        inverse_name="partner_id",
-        string="Contrats",
-    )
-    financial_contract_count = fields.Integer(
-        compute="_compute_financial_contract_count"
-    )
-
-    # ------------------------------------------------------
-    # SQL Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Default methods
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Computed fields / Search Fields
-    # ------------------------------------------------------
-    def _compute_financial_contract_count(self):
-        for partner in self:
-            partner.financial_contract_count = partner.financial_contract_ids.__len__()
-
-    # ------------------------------------------------------
-    # Onchange / Constraints
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # CRUD methods (ORM overrides)
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Actions
-    # ------------------------------------------------------
-    def action_view_contract(self):
-        self.ensure_one()
-        return {
-            "type": "ir.actions.act_window",
-            "name": "Contrats",
-            "res_model": "financial.contract",
-            "view_mode": "tree,form",
-            "domain": [("partner_id", "=", self.id)],
-            "flags": {"mode": "readonly"},
-        }
-
-    # ------------------------------------------------------
-    # Business methods
-    # ------------------------------------------------------
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 865ccf0306db6237c0f248cc41a7bc54b5b664e1..d0323612ba6d75db8bce5f617a0f2c092a5ce66d 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,6 +1,8 @@
 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
 access_financial_contract,access_financial_contract,model_financial_contract,group_financial_user,1,1,1,1
 access_financial_contract_suspensive_condition,access_financial_contract_suspensive_condition,model_financial_contract_suspensive_condition,group_financial_user,1,1,1,1
+access_financial_product_category,access_financial_product_category,model_financial_product_category,group_financial_user,1,0,0,0
+access_financial_product_category_admin,access_financial_product_category_admin,model_financial_product_category,group_financial_admin,1,1,1,1
 access_financial_product_template,access_financial_product_template,model_financial_product_template,group_financial_user,1,0,0,0
 access_financial_product_template_admin,access_financial_product_template_admin,model_financial_product_template,group_financial_admin,1,1,1,1
 access_financial_product_suspensive_condition,access_financial_product_suspensive_condition,model_financial_product_suspensive_condition,group_financial_user,1,0,0,0
diff --git a/security/security_rules.xml b/security/security_rules.xml
index e53a19aab842a087ed6844ed2fee133252dcb8d4..81210a6e326834fe14b931e9be17abbcdbcf5eda 100644
--- a/security/security_rules.xml
+++ b/security/security_rules.xml
@@ -26,6 +26,36 @@
     <!--
         Group rules
     -->
+    <record id="financial_product_category_multi_company_rule" model="ir.rule">
+        <field name="name">Financial Product Category Multi Company</field>
+        <field name="model_id" ref="model_financial_product_category" />
+        <field
+            name="domain_force"
+        >[('company_id', 'in', company_ids + [False])]</field>
+        <field
+            name="groups"
+            eval="[(6, 0, [ref('financial_contract.group_financial_user')])]"
+        />
+        <field name="perm_read" eval="False" />
+        <field name="perm_write" eval="True" />
+        <field name="perm_create" eval="True" />
+        <field name="perm_unlink" eval="True" />
+    </record>
+    <record id="financial_product_template_multi_company_rule" model="ir.rule">
+        <field name="name">Financial Product Template Multi Company</field>
+        <field name="model_id" ref="model_financial_product_template" />
+        <field
+            name="domain_force"
+        >[('company_id', 'in', company_ids + [False])]</field>
+        <field
+            name="groups"
+            eval="[(6, 0, [ref('financial_contract.group_financial_user')])]"
+        />
+        <field name="perm_read" eval="False" />
+        <field name="perm_write" eval="True" />
+        <field name="perm_create" eval="True" />
+        <field name="perm_unlink" eval="True" />
+    </record>
     <record id="financial_contract_multi_company_rule" model="ir.rule">
         <field name="name">Financial Contract Multi Company</field>
         <field name="model_id" ref="model_financial_contract" />
diff --git a/views/financial_contract.xml b/views/financial_contract.xml
index 427a35f063543c89303a0159375de14c4368e602..200d258a7c031b25036b9086efb88d54eecb9933 100644
--- a/views/financial_contract.xml
+++ b/views/financial_contract.xml
@@ -5,17 +5,16 @@
         <field name="name">financial.contract.tree</field>
         <field name="model">financial.contract</field>
         <field name="arch" type="xml">
-            <tree>
+            <tree create="0" edit="0" delete="0">
                 <field name="partner_id" />
-                <field name="tool" />
-                <field name="product_id" />
                 <field name="amount" string="Montant" />
                 <field name="company_id" />
                 <field name="currency_id" invisible="1" />
             </tree>
         </field>
     </record>
-    <!-- From -->
+
+    <!-- Form -->
     <record id="financial_contract_form_view" model="ir.ui.view">
         <field name="name">financial.contract.form</field>
         <field name="model">financial.contract</field>
@@ -24,29 +23,25 @@
                 <sheet>
                     <group>
                         <group>
-                            <field name="partner_id" />
-                            <field name="tool" />
-                            <field name="product_id" />
-                        </group>
-                        <group>
-                            <field name="amount" string="Montant" />
-                            <field name="company_id" />
+                            <field
+                                name="partner_id"
+                                options="{'no_create': 1}"
+                            />
+                            <field
+                                name="company_id"
+                                options="{'no_create': 1}"
+                            />
                             <field name="currency_id" invisible="1" />
+                            <field name="amount" string="Montant emprunté" />
                         </group>
                     </group>
                     <separator string="Description" />
                     <field name="comment" />
-                    <separator string="Conditions suspensives" />
-                    <field name="suspensive_condition_ids" />
                 </sheet>
-                <div class="oe_chatter">
-                    <field name="message_follower_ids" />
-                    <field name="activity_ids" />
-                    <field name="message_ids" />
-                </div>
             </form>
         </field>
     </record>
+
     <!-- Search -->
     <record id="financial_contract_search_view" model="ir.ui.view">
        <field name="name">financial.contract.search</field>
@@ -95,22 +90,8 @@
                         string="Statut"
                         context="{'group_by': 'state'}"
                     />
-                    <filter
-                        string="Type d'outil"
-                        name="group_toll"
-                        context="{'group_by':'tool'}"
-                    />
                 </group>
             </search>
         </field>
     </record>
-    <!--
-        Actions
-     -->
-    <!-- All -->
-    <record model="ir.actions.act_window" id="financial_contract_action">
-        <field name="name">Tous les contrats</field>
-        <field name="res_model">financial.contract</field>
-        <field name="view_mode">tree,form</field>
-    </record>
 </odoo>
diff --git a/views/financial_product_category.xml b/views/financial_product_category.xml
new file mode 100644
index 0000000000000000000000000000000000000000..02ce8a91e30d5a818b25b60484b3c9a2d7674db2
--- /dev/null
+++ b/views/financial_product_category.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" ?>
+<!-- Copyright 2024 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+<odoo>
+    <!-- Search -->
+    <record model="ir.ui.view" id="financial_product_category_search_view">
+        <field name="name">financial.product.category.search</field>
+        <field name="model">financial.product.category</field>
+        <field name="arch" type="xml">
+            <search>
+                <field name="name" />
+                <filter
+                    string="Archivé"
+                    name="inactive"
+                    domain="[('active','=',False)]"
+                />
+                <filter
+                    string="Tous"
+                    name="all"
+                    domain="['|', ('active','=',False), ('active','=',True)]"
+                />
+            </search>
+        </field>
+    </record>
+
+    <!-- Tree -->
+    <record model="ir.ui.view" id="financial_product_category_tree_view">
+        <field name="name">financial.product.category.tree</field>
+        <field name="model">financial.product.category</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="name" />
+                <field name="active" invisible="1" />
+                <field name="company_id" />
+            </tree>
+        </field>
+    </record>
+
+    <!-- Form -->
+    <record model="ir.ui.view" id="financial_product_category_form_view">
+        <field name="name">financial.product.category.form</field>
+        <field name="model">financial.product.category</field>
+        <field name="arch" type="xml">
+            <form>
+                <sheet>
+                    <field name="active" invisible="1" />
+                    <widget
+                        name="web_ribbon"
+                        title="Archived"
+                        bg_color="bg-danger"
+                        attrs="{'invisible': [('active', '=', True)]}"
+                    />
+                    <!-- Title -->
+                    <div class="oe_title">
+                        <label for="name" string="Nom" />
+                        <h1>
+                            <field
+                                name="name"
+                                default_focus="1"
+                                placeholder="Nom du produit"
+                            />
+                        </h1>
+                    </div>
+                    <group>
+                        <group>
+                            <field name="company_id" />
+                        </group>
+                    </group>
+<!--                    <separator string="Produits" />-->
+<!--                    <field name="product_ids" readonly="1" />-->
+                </sheet>
+            </form>
+        </field>
+    </record>
+
+    <!-- Action -->
+    <record
+        model="ir.actions.act_window"
+        id="financial_product_category_act_window"
+    >
+        <field name="name">Gammes de produits</field>
+        <field name="res_model">financial.product.category</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+</odoo>
diff --git a/views/financial_product_template.xml b/views/financial_product_template.xml
index df38fddc8ef1f9f2cde90c533c97d81b101e1d02..ba95a6e420c016c415a5ebfd061c8797e4dee1de 100644
--- a/views/financial_product_template.xml
+++ b/views/financial_product_template.xml
@@ -1,13 +1,15 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <odoo>
-<!-- Tree -->
+    <!-- Tree -->
     <record id="financial_product_template_tree_view" model="ir.ui.view">
         <field name="name">financial.product.template.tree</field>
         <field name="model">financial.product.template</field>
         <field name="arch" type="xml">
-            <tree>
+            <tree create="0" edit="0" delete="0">
                 <field name="name" />
-                <field name="tool" />
+                <field name="category_id" />
+                <field name="date_start" />
+                <field name="date_end" />
                 <field
                     name="company_id"
                     options="{'no_create': 1, 'no_edit': 1}"
@@ -23,6 +25,7 @@
         <field name="model">financial.product.template</field>
         <field name="arch" type="xml">
             <form>
+                <header />
                 <sheet>
                     <field name="active" invisible="1" />
                     <widget
@@ -38,14 +41,19 @@
                             <field
                                 name="name"
                                 default_focus="1"
-                                placeholder="Nom de la gamme"
+                                placeholder="Nom du produit"
                             />
                         </h1>
                     </div>
                     <!-- Product Type -->
                     <group>
                         <group>
-                            <field name="tool" widget="radio" />
+                            <field
+                                name="category_id"
+                                options="{'no_create': 1, 'no_edit': 1}"
+                            />
+                            <field name="date_start" />
+                            <field name="date_end" />
                         </group>
                         <group>
                             <field
@@ -60,43 +68,10 @@
                         <page string="Description" name="description">
                             <field name="description" />
                         </page>
-                        <page
-                            string="Conditions suspensives"
-                            name="suspensive_condition"
-                        >
-                            <field
-                                name="suspensive_condition_ids"
-                                context="{'default_product_id': active_id}"
-                            >
-                                <tree editable="top">
-                                    <field name="product_id" invisible="1" />
-                                    <field
-                                        name="condition_id"
-                                        options="{'no_create': 1, 'no_edit': 1}"
-                                    />
-                                    <field name="condition_comment" />
-                                </tree>
-                            </field>
-                        </page>
                     </notebook>
                 </sheet>
-                <div class="oe_chatter">
-                    <field name="message_follower_ids" />
-                    <field name="activity_ids" />
-                    <field name="message_ids" />
-                </div>
             </form>
         </field>
     </record>
 
-    <!-- Action -->
-    <record
-        model="ir.actions.act_window"
-        id="financial_product_template_act_window"
-    >
-        <field name="name">Catalogue</field>
-        <field name="res_model">financial.product.template</field>
-        <field name="view_mode">tree,form</field>
-    </record>
-
 </odoo>
diff --git a/views/menus.xml b/views/menus.xml
index 08209bb4e03b4f3f63823910f6a0b06aaaea671e..79804ef4b7256107ac3c913f90346223a5e96149 100644
--- a/views/menus.xml
+++ b/views/menus.xml
@@ -9,18 +9,10 @@
     />
 
     <!-- Menu -->
-    <menuitem
-        id="menu_financial_contract_all"
-        name="Tous les contrats"
-        parent="financial_contract_menu_root"
-        action="financial_contract_action"
-        sequence="10"
-    />
     <menuitem
         id="menu_financial_product_template"
         name="Catalogue"
         parent="financial_contract_menu_root"
-        action="financial_product_template_act_window"
         sequence="100"
     />
 
@@ -31,6 +23,13 @@
         parent="financial_contract_menu_root"
         sequence="100"
     />
+    <menuitem
+        id="menu_financial_product_category"
+        name="Gammes de produits"
+        parent="menu_financial_contract_configuration"
+        action="financial_product_category_act_window"
+        sequence="10"
+    />
     <menuitem
         id="menu_financial_suspensive_condition"
         name="Conditions suspensives"
@@ -53,6 +52,4 @@
         sequence="40"
     />
 
-
-
 </odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
deleted file mode 100644
index 6af34ad0612178a804549d3ec7e7eb8731605500..0000000000000000000000000000000000000000
--- a/views/res_partner.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2023- Le Filament (https://le-filament.com)
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-    <!-- Form View -->
-    <record id="res_partner_financial_contract_form" model="ir.ui.view">
-        <field name="name">res.partner.financial.contract.form</field>
-        <field name="model">res.partner</field>
-        <field name="inherit_id" ref="base.view_partner_form" />
-        <field name="arch" type="xml">
-            <xpath expr="//div[@name='button_box']" position="inside">
-                <button
-                    name="action_view_contract"
-                    class="oe_stat_button"
-                    icon="fa-file-text-o"
-                    attrs="{'invisible': [('financial_contract_count', '=', 0)]}"
-                    type="object"
-                >
-                    <field
-                        name="financial_contract_count"
-                        widget="statinfo"
-                        string="Contrat(s)"
-                    />
-                </button>
-            </xpath>
-            <xpath expr="//notebook" position="inside">
-                <page name="contracts" string="Contracts">
-                    <field name="financial_contract_ids" readonly="1" />
-                </page>
-            </xpath>
-        </field>
-    </record>
-
-</odoo>