diff --git a/.copier-answers.yml b/.copier-answers.yml
index c13a05f74d25a7f451a6203def4158b8766e38d7..c7ffefe9b41f674af55a2782528f499139a37c32 100644
--- a/.copier-answers.yml
+++ b/.copier-answers.yml
@@ -1,9 +1,11 @@
 # Do NOT update manually; changes here will be overwritten by Copier
-_commit: v1.14.2
+_commit: v1.29
 _src_path: https://github.com/OCA/oca-addons-repo-template.git
-ci: false
-dependency_installation_mode: PIP
-generate_requirements_txt: false
+additional_ruff_rules: []
+ci: GitHub
+convert_readme_fragments_to_markdown: true
+enable_checklog_odoo: true
+generate_requirements_txt: true
 github_check_license: false
 github_ci_extra_env: {}
 github_enable_codecov: false
@@ -11,14 +13,15 @@ github_enable_makepot: false
 github_enable_stale_action: false
 github_enforce_dev_status_compatibility: false
 include_wkhtmltopdf: false
-odoo_version: 16.0
+odoo_test_flavor: OCB
+odoo_version: 17.0
 org_name: Le Filament
 org_slug: lefilament
 rebel_module_groups: []
-repo_description: null
-repo_name: Module Template
-repo_slug: template_module
-repo_website: https://le-filament.com 
-travis_apt_packages: []
-travis_apt_sources: []
+repo_description: ''
+repo_name: Template module
+repo_slug: lefilament
+repo_website: https://le-filament.com
+use_pyproject_toml: true
+use_ruff: true
 
diff --git a/.eslintrc.yml b/.eslintrc.yml
index 9429bc688aab4993eae460767368f65089afa323..0b382039586ae1303994e343dfca336fe46b0bdd 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -4,7 +4,7 @@ env:
 
 # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
 parserOptions:
-  ecmaVersion: 2019
+  ecmaVersion: 2022
 
 overrides:
   - files:
@@ -22,6 +22,7 @@ globals:
   odoo: readonly
   openerp: readonly
   owl: readonly
+  luxon: readonly
 
 # Styling is handled by Prettier, so we only need to enable AST rules;
 # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890
diff --git a/.flake8 b/.flake8
deleted file mode 100644
index e397e8ed4e3e7f7fe7785dd391bb80aa6d85575e..0000000000000000000000000000000000000000
--- a/.flake8
+++ /dev/null
@@ -1,12 +0,0 @@
-[flake8]
-max-line-length = 88
-max-complexity = 16
-# B = bugbear
-# B9 = bugbear opinionated (incl line length)
-select = C,E,F,W,B,B9
-# E203: whitespace before ':' (black behaviour)
-# E501: flake8 line length (covered by bugbear B950)
-# W503: line break before binary operator (black behaviour)
-ignore = E203,E501,W503
-per-file-ignores=
-    __init__.py:F401
diff --git a/.gitignore b/.gitignore
index 9c283fd41f6cc3330653f1d90a820b85e23caf65..c9f42387ef7051b2a868a9361f4f3cb6d562d4ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ __pycache__/
 *.py[cod]
 /.venv
 /.pytest_cache
+/.ruff_cache
 
 # C extensions
 *.so
@@ -23,6 +24,16 @@ var/
 .installed.cfg
 *.egg
 *.eggs
+.copier-answers.yml
+
+# Debian packages
+*.deb
+
+# Redhat packages
+*.rpm
+
+# MacOS packages
+*.dmg
 
 # Installer logs
 pip-log.txt
diff --git a/.isort.cfg b/.isort.cfg
deleted file mode 100644
index 0ec187efd1bf802844749f508cda0c8f138970f9..0000000000000000000000000000000000000000
--- a/.isort.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-[settings]
-; see https://github.com/psf/black
-multi_line_output=3
-include_trailing_comma=True
-force_grid_wrap=0
-combine_as_imports=True
-use_parentheses=True
-line_length=88
-known_odoo=odoo
-known_odoo_addons=odoo.addons
-sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
-default_section=THIRDPARTY
-ensure_newline_before_comments = True
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3c66a0116c6fb5fd335029bb9254e944523753fb..f58f2c6608a042bb13f2c7559889e33bf3f46733 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -12,6 +12,12 @@ exclude: |
   /static/(src/)?lib/|
   # Repos using Sphinx to generate docs don't need prettying
   ^docs/_templates/.*\.html$|
+  # Don't bother non-technical authors with formatting issues in docs
+  readme/.*\.(rst|md)$|
+  # Ignore build and dist directories in addons
+  /build/|/dist/|
+  # Ignore test files in addons
+  /tests/samples/.*|
   # You don't usually want a bot to modify your legal texts
   (LICENSE.*|COPYING.*)
 default_language_version:
@@ -31,35 +37,39 @@ repos:
         name: en.po files cannot exist
         entry: found a en.po file
         language: fail
-        files: '[a-zA-Z0-9_]*/i18n/en\.po$'
+        files:
+          '[a-zA-Z0-9_]*/i18n/en\.po$'
+          #  - repo: https://github.com/sbidoul/whool
+          #    rev: v0.5
+          #    hooks:
+          #      - id: whool-init
   - repo: https://github.com/oca/maintainer-tools
-    rev: 4cd2b852214dead80822e93e6749b16f2785b2fe
+    rev: d5fab7ee87fceee858a3d01048c78a548974d935
     hooks:
       # update the NOT INSTALLABLE ADDONS section above
       - id: oca-update-pre-commit-excluded-addons
       - id: oca-fix-manifest-website
         args: ["https://le-filament.com"]
-  - repo: https://github.com/myint/autoflake
-    rev: v1.6.1
-    hooks:
-      - id: autoflake
+      - id: oca-gen-addon-readme
         args:
-          - --expand-star-imports
-          - --ignore-init-module-imports
-          - --in-place
-          - --remove-all-unused-imports
-          - --remove-duplicate-keys
-          - --remove-unused-variables
-  - repo: https://github.com/psf/black
-    rev: 22.8.0
+          - --addons-dir=.
+          - --branch=17.0
+          - --org-name=lefilament
+          - --repo-name=template_module
+          - --if-source-changed
+          - --keep-source-digest
+          - --convert-fragments-to-markdown
+      # - id: oca-gen-external-dependencies
+  - repo: https://github.com/OCA/odoo-pre-commit-hooks
+    rev: v0.0.25
     hooks:
-      - id: black
+      - id: oca-checks-odoo-module
+      - id: oca-checks-po
   - repo: https://github.com/pre-commit/mirrors-prettier
     rev: v2.7.1
     hooks:
       - id: prettier
         name: prettier (with plugin-xml)
-        exclude: ^templates/
         additional_dependencies:
           - "prettier@2.7.1"
           - "@prettier/plugin-xml@2.2.0"
@@ -96,27 +106,14 @@ repos:
       - id: check-xml
       - id: mixed-line-ending
         args: ["--fix=lf"]
-  - repo: https://github.com/asottile/pyupgrade
-    rev: v2.38.2
-    hooks:
-      - id: pyupgrade
-        args: ["--keep-percent-format"]
-  - repo: https://github.com/PyCQA/isort
-    rev: 5.12.0
-    hooks:
-      - id: isort
-        name: isort except __init__.py
-        args:
-          - --settings=.
-        exclude: /__init__\.py$
-  - repo: https://github.com/PyCQA/flake8
-    rev: 3.9.2
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: v0.1.3
     hooks:
-      - id: flake8
-        name: flake8
-        additional_dependencies: ["flake8-bugbear==21.9.2"]
+      - id: ruff
+        args: [--fix, --exit-non-zero-on-fix]
+      - id: ruff-format
   - repo: https://github.com/OCA/pylint-odoo
-    rev: 7.0.2
+    rev: v9.0.4
     hooks:
       - id: pylint_odoo
         name: pylint with optional checks
diff --git a/.pylintrc b/.pylintrc
index 71c476d4f10ac08a7333729b93705c9573d240d5..4fb9ba5362fb402b42c1a587d56b28ed71e8f933 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -5,12 +5,12 @@ load-plugins=pylint_odoo
 score=n
 
 [ODOOLINT]
-readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
-manifest_required_authors=Le Filament
-manifest_required_keys=license
-manifest_deprecated_keys=description,active
-license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
-valid_odoo_versions=16.0
+readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
+manifest-required-authors=Le Filament
+manifest-required-keys=license
+manifest-deprecated-keys=description,active
+license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
+valid-odoo-versions=17.0
 
 [MESSAGES CONTROL]
 disable=all
diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory
index ed2c2171ffe63ac191e30ed0759c4b6211ad5f15..42885e9b5eb0cde47fa65d308683c29504934143 100644
--- a/.pylintrc-mandatory
+++ b/.pylintrc-mandatory
@@ -4,12 +4,12 @@ load-plugins=pylint_odoo
 score=n
 
 [ODOOLINT]
-readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
-manifest_required_authors=Le Filament
-manifest_required_keys=license
-manifest_deprecated_keys=description,active
-license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
-valid_odoo_versions=16.0
+readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
+manifest-required-authors=Le Filament
+manifest-required-keys=license
+manifest-deprecated-keys=description,active
+license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
+valid-odoo-versions=17.0
 
 [MESSAGES CONTROL]
 disable=all
diff --git a/.ruff.toml b/.ruff.toml
new file mode 100644
index 0000000000000000000000000000000000000000..0240c75f6a4ae4550f3473ad0a5faaef022bf6c7
--- /dev/null
+++ b/.ruff.toml
@@ -0,0 +1,30 @@
+
+target-version = "py310"
+fix = true
+
+[lint]
+extend-select = [
+    "B",
+    "C90",
+    "E501",  # line too long (default 88)
+    "I",  # isort
+    "UP",  # pyupgrade
+]
+exclude = ["setup/*"]
+
+[format]
+exclude = ["setup/*"]
+
+[per-file-ignores]
+"__init__.py" = ["F401", "I001"]  # ignore unused and unsorted imports in __init__.py
+"__manifest__.py" = ["B018"]  # useless expression
+
+[isort]
+section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"]
+
+[isort.sections]
+"odoo" = ["odoo"]
+"odoo-addons" = ["odoo.addons"]
+
+[mccabe]
+max-complexity = 16
diff --git a/__manifest__.py b/__manifest__.py
index 94f1afed630319439be0ce36d6d3cc2986c5735c..1de5461549e68e7c56b656bd79db2d26b9969cc0 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -6,35 +6,19 @@
     "author": "Le Filament",
     "category": "dashboard",
     "website": "https://le-filament.com",
-    "version": "16.0.1.0.0",
+    "version": "17.0.1.0.0",
     "license": "AGPL-3",
-    "depends": ["account", "crm", "hr_expense", "sale"],
+    "depends": ["account_usability", "crm", "hr_expense", "sale"],
     "data": [
         # security
         "security/lefilament_dashboard_security.xml",
         "security/ir.model.access.csv",
         # datas
-        # templates
-        "templates/dashboard_detail.xml",
-        "templates/lefilament_dashboard.xml",
         # views
-        "views/account_bank_statement_line.xml",
-        "views/account_move.xml",
         "views/lefilament_dashboard.xml",
         "views/res_company.xml",
+        # templates
         # menus
         "views/menus.xml",
     ],
-    "assets": {
-        "web._assets_primary_variables": [],
-        "web._assets_frontend_helpers": [],
-        "web.assets_frontend": [],
-        "web.assets_backend": [
-            "lefilament_tdb/static/src/js/dashboard_detail.js",
-            "lefilament_tdb/static/src/js/dashboard_overview.js",
-            "lefilament_tdb/static/src/css/lefilament_tdb.css",
-        ],
-        "web.assets_tests": [],
-        "web.assets_qweb": [],
-    },
 }
diff --git a/data/cron_dashboard.xml b/data/cron_dashboard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7438abab73890412432a0c3d01323ed282f7840
--- /dev/null
+++ b/data/cron_dashboard.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <record id="ir_cron_lefilament_tdb" forcecreate="True" model="ir.cron">
+        <field name="name">Tableau de Bord - Le Filament</field>
+        <field eval="True" name="active" />
+        <field name="user_id" ref="base.user_root" />
+        <field name="interval_number">1</field>
+        <field name="interval_type">months</field>
+        <field name="numbercall">-1</field>
+        <field name="model_id" ref="model_lefilament_dashboard" />
+        <field name="nextcall">2017-01-31 23:10:00</field>
+        <field name="state">code</field>
+        <field name="code">model.cron_new_data()</field>
+    </record>
+</odoo>
diff --git a/models/lefilament_tdb.py b/models/lefilament_tdb.py
index e6f6a8e06848fbc02f328554c5fac894c38f3172..8dc632617a918cb30290343680dceca3d50db070 100644
--- a/models/lefilament_tdb.py
+++ b/models/lefilament_tdb.py
@@ -4,7 +4,6 @@
 from datetime import date
 
 from dateutil.relativedelta import relativedelta
-from psycopg2.extensions import AsIs
 
 from odoo import api, fields, models
 from odoo.tools.safe_eval import safe_eval
@@ -150,7 +149,6 @@ class LeFilamentTdb(models.Model):
     # ------------------------------------------------------
     @api.model
     def open_detail(self, target_model, name=None, domain=None, views=None):
-
         action = {
             "name": name or target_model,
             "type": "ir.actions.act_window",
@@ -169,337 +167,3 @@ class LeFilamentTdb(models.Model):
     def get_month_values(self):
         for data in self:
             data._compute_dashboard_values()
-
-    @api.model
-    def retrieve_datas_dashboard(self):
-        # Get fiscal years
-        fiscal_date = date(
-            date.today().year,
-            int(self.env.company.fiscalyear_last_month),
-            int(self.env.company.fiscalyear_last_day),
-        )
-        if date.today() > fiscal_date:
-            fiscal_year = fiscal_date
-            fiscal_year_next = fiscal_date + relativedelta(years=1)
-        else:
-            fiscal_year = fiscal_date - relativedelta(years=1)
-            fiscal_year_next = fiscal_date
-
-        res = {}
-        res["fiscal_year"] = fiscal_year
-        res["fiscal_year_next"] = fiscal_year_next
-        res["target"] = self.env.company.ca_target
-        # Invoices
-        res["invoice_ids"] = self.env["account.move"].search(
-            [
-                ("move_type", "in", ("out_invoice", "out_refund")),
-                ("state", "=", "posted"),
-                ("invoice_date", ">", fiscal_year),
-                ("invoice_date", "<=", fiscal_year_next),
-            ]
-        )
-        # Orders
-        res["order_line_ids"] = self.env["sale.order.line"].search(
-            [
-                ("invoice_status", "=", "to invoice"),
-            ]
-        )
-        # Opportunities
-        res["lead_ids"] = self.env["crm.lead"].search(
-            [
-                "|",
-                ("date_deadline", ">", fiscal_year_next),
-                ("date_deadline", "=", False),
-            ]
-        )
-
-        res["progress"] = (
-            sum(res["invoice_ids"].mapped("amount_untaxed_signed"))
-            / self.env.company.ca_target
-            if self.env.company.ca_target
-            else 0
-        )
-
-        res["pipe_win"] = sum(
-            self.env["crm.lead"]
-            .search(
-                [
-                    ("probability", "=", 100),
-                    "|",
-                    ("date_deadline", "<=", fiscal_year_next),
-                    ("date_deadline", "=", False),
-                ]
-            )
-            .mapped(lambda l: l.expected_revenue * l.probability / 100)
-        )
-        res["pipe_to_win"] = sum(
-            self.env["crm.lead"]
-            .search(
-                [
-                    ("probability", "!=", 100),
-                    "|",
-                    ("date_deadline", "<=", fiscal_year_next),
-                    ("date_deadline", "=", False),
-                ]
-            )
-            .mapped(lambda l: l.expected_revenue * l.probability / 100)
-        )
-
-        res["to_get"] = self.env["account.move"].search(
-            [
-                ("move_type", "in", ("out_invoice", "out_refund")),
-                ("state", "=", "posted"),
-                ("payment_state", "in", ["not_paid", "partial", "in_payment"]),
-            ]
-        )
-        res["to_pay"] = self.env["account.move"].search(
-            [
-                ("move_type", "in", ("in_invoice", "in_refund")),
-                ("state", "=", "posted"),
-                ("payment_state", "in", ["not_paid", "partial", "in_payment"]),
-            ]
-        )
-
-        res["date_maj"] = (
-            self.env["account.bank.statement.line"]
-            .search([], order="date desc", limit=1)
-            .date
-        )
-        res["statement_line_ids"] = self.env["account.bank.statement.line"].search([])
-        res["cash_by_bank"] = self.env["account.bank.statement.line"].read_group(
-            domain=[],
-            fields=["journal_id", "amount"],
-            groupby=["journal_id"],
-            orderby="journal_id",
-        )
-
-        res["in"] = self.env["account.bank.statement.line"].search(
-            [
-                ("amount", ">", 0),
-                ("date", ">", fiscal_year),
-            ]
-        )
-        res["out"] = self.env["account.bank.statement.line"].search(
-            [
-                ("amount", "<", 0),
-                ("date", ">", fiscal_year),
-            ]
-        )
-        res["variation"] = self.env["account.bank.statement.line"].search(
-            [
-                ("date", ">", fiscal_year),
-            ]
-        )
-        res["company_id"] = self.env.company
-
-        return res
-
-    @api.model
-    def dashboard_detail_values(self, date_start=None, date_end=None):
-        return {
-            "customer": self._customer_detail(date_start, date_end),
-            "employee_time": self._employee_time(date_start, date_end),
-            "date_start": date_start,
-            "date_end": date_end,
-        }
-
-    @api.model
-    def dashboard_detail_values_template(self, date_start=None, date_end=None):
-        return self.env["ir.ui.view"]._render_template(
-            "lefilament_tdb.dashboard_detail_values",
-            self.dashboard_detail_values(date_start, date_end),
-        )
-
-    def _customer_detail(self, date_start=None, date_end=None):
-        clause = "where 1=1 "
-        if date_start:
-            clause += f"and line_date >= '{date_start}' "
-        if date_end:
-            clause += f"and line_date <= '{date_end}' "
-
-        query = """
-        select
-            customer as "Client",
-            sum(prod) as "Imput.",
-            sum(invoiced + purchase + expense)::int as "Balance Prod",
-            sum(invoiced + purchase + expense)/NULLIF(sum(prod), 0) as "Taux Horaire",
-            sum(invoiced + invoiced_mco) as "Tot. Fact.",
-            sum(invoiced)::int as "Fact. Prod",
-            sum(invoiced_mco)::int as "Fact. Maint",
-            sum(purchase)::int as "Achats",
-            sum(expense)::int as "NdF"
-        from
-        (
-            -- Sélection des heures
-            select
-                aal.date as line_date,
-                p.name as customer,
-                -- contact != Filament et projet != Maintenance et pas flagué vacances
-                case when aal.partner_id != 1 or aal.partner_id is null and aal.holiday_id is null and project_id != 19 then unit_amount else 0 end as prod,
-                0 as invoiced,
-                0 as invoiced_mco,
-                0 as purchase,
-                0 as expense
-            from
-                account_analytic_line aal
-            left join
-                res_partner p on aal.partner_id = p.id
-            left join
-                hr_leave l on aal.holiday_id = l.id
-            left join
-                hr_leave_type lt on l.holiday_status_id = lt.id
-            where
-                aal.project_id is not null
-                and aal.date <= CURRENT_DATE
-                and (lt.active is true or lt.active is null)
-                and partner_id != 1
-
-          -- Sélection du facturé hors maintenance
-          union all
-            select
-                aml.date as line_date,
-                p.name as customer,
-                0 as prod,
-                (aml.credit - aml.debit) as invoiced,
-                0 as invoiced_mco,
-                0 as purchase,
-                0 as expense
-            from account_move_line aml
-            left join account_move i on aml.move_id = i.id
-            left join res_partner p on i.beneficiary_id = p.id
-            where
-                i.move_type in ('out_invoice', 'out_refund')
-                and i.state = 'posted'
-                and aml.product_id is not null
-                and aml.product_id not in (33, 34, 50, 51, 61, 62)
-
-          -- Sélection du facturé Maintenance
-          union all
-            select
-                aml.date as line_date,
-                p.name as customer,
-                0 as prod,
-                0 as invoiced,
-                (aml.credit - aml.debit) as invoiced_mco,
-                0 as purchase,
-                0 as expense
-            from account_move_line aml
-            left join account_move i on aml.move_id = i.id
-            left join res_partner p on i.beneficiary_id = p.id
-            where
-                i.move_type in ('out_invoice', 'out_refund')
-                and i.state = 'posted'
-                and aml.product_id is not null
-                and aml.product_id in (33, 34, 50, 51, 61, 62)
-
-          -- Sélection des charges
-          union all
-            select
-                aal.date as line_date,
-                p.name as customer,
-                0 as prod,
-                0 as invoiced,
-                0 as invoiced_mco,
-                amount as purchase,
-                0 as expense
-            from account_analytic_line aal
-            left join account_move_line aml on aal.move_line_id = aml.id
-            left join account_move i on aml.move_id = i.id
-            left join account_analytic_account a on aal.account_id = a.id
-            left join res_partner p on a.partner_id = p.id
-            where
-                (aal.plan_id is null or aal.plan_id = 1)
-                and i.state = 'posted'
-                and aml.journal_id = 2
-
-          -- Sélection des NDF
-          union all
-            select
-                aal.date as line_date,
-                p.name as customer,
-                0 as prod,
-                0 as invoiced,
-                0 as invoiced_mco,
-                0 as purchase,
-                amount as expense
-            from account_analytic_line aal
-            left join account_move_line aml on aal.move_line_id = aml.id
-            left join account_move i on aml.move_id = i.id
-            left join account_analytic_account a on aal.account_id = a.id
-            left join res_partner p on a.partner_id = p.id
-            where
-                (aal.plan_id is null or aal.plan_id = 1)
-                and i.state = 'posted'
-                and aml.journal_id = 9
-        ) query
-        %s
-        group by
-            customer
-        order by
-            sum(invoiced) desc
-        """
-        self.env.cr.execute(query, (AsIs(clause),))
-
-        result = self.env.cr.dictfetchall()
-        return result
-
-    def _employee_time(self, date_start=None, date_end=None):
-        clause = ""
-        if date_start:
-            clause += f" and aal.date >= '{date_start}'"
-        if date_end:
-            clause += f" and aal.date <= '{date_end}'"
-
-        query = """
-        select
-            employee as "Employé",
-            sum(production) as "Prod",
-            sum(internal) as "Interne",
-            sum(revenue) as "CA"
-
-        from (
-            select
-                p.name as employee,
-                0 as production,
-                0 as internal,
-                sum(aal.amount) as revenue
-            from
-                account_analytic_line aal
-            left join
-                account_analytic_account aa on aal.account_id = aa.id
-            left join
-                account_analytic_plan aap on aa.plan_id = aap.id
-            left join
-                res_partner p on aa.partner_id = p.id
-            where
-                aap.id = 3
-                %s
-            group by p.name
-
-            union
-
-            select
-                e.name as employee,
-                sum(case when aal.partner_id != 1 or aal.partner_id is null and aal.holiday_id is null then unit_amount else 0 end) as production,
-                sum(case when aal.partner_id = 1 and aal.holiday_id is null then unit_amount else 0 end) as internal,
-                0 as revenue
-            from
-                account_analytic_line aal
-            left join
-                hr_employee e on aal.employee_id = e.id
-            left join
-                hr_leave l on aal.holiday_id = l.id
-            left join
-                hr_leave_type lt on l.holiday_status_id = lt.id
-            where
-                aal.project_id is not null
-                %s
-            group by e.name
-            ) query
-        group by employee
-        order by sum(production) desc
-        """
-        self.env.cr.execute(query, (AsIs(clause), AsIs(clause),))
-
-        result = self.env.cr.dictfetchall()
-        return result
diff --git a/static/src/css/lefilament_tdb.css b/static/src/css/lefilament_tdb.css
deleted file mode 100644
index 07acd844cc7d993bab748c415fb0098557c8ecb5..0000000000000000000000000000000000000000
--- a/static/src/css/lefilament_tdb.css
+++ /dev/null
@@ -1,43 +0,0 @@
-.lefilament_dashboard {
-    padding-top: 40px;
-    padding-bottom: 40px;
-    background-color: #fefefe;
-}
-.lefilament_dashboard .display-6,
-.lefilament_dashboard .card-title {
-    color: #495057;
-}
-.lefilament_dashboard a.dashboard_view {
-    cursor: pointer;
-}
-
-p.card-maj {
-    font-size: 10px;
-    font-style: italic;
-    font-weight: 300;
-}
-
-/* Legende ProgressBar */
-.table-legend {
-    width: 100%;
-    max-width: 100%;
-    margin: 10px 0;
-    border-collapse: separate;
-    border-spacing: 8px;
-    font-size: 11px;
-}
-.table-legend .nb {
-    text-align: right;
-}
-.table-legend-total td {
-    border-top: 1px solid #eee;
-    border-bottom: 1px solid #eee;
-    font-weight: 700;
-    padding: 2px 0;
-}
-
-.dashboard_detail {
-    padding-top: 10px;
-    padding-bottom: 40px;
-    background-color: #fefefe;
-}
diff --git a/static/src/js/dashboard_detail.js b/static/src/js/dashboard_detail.js
deleted file mode 100644
index 53ba80332ec77819e507f0ecc78799205b83bdbc..0000000000000000000000000000000000000000
--- a/static/src/js/dashboard_detail.js
+++ /dev/null
@@ -1,61 +0,0 @@
-odoo.define("lefilament_tdb.dashboard_detail", function (require) {
-    "use strict";
-
-    const qweb = require("web.qweb");
-    const viewRegistry = require("web.view_registry");
-
-    const Controller = qweb.Controller.extend({
-        events: _.extend({}, qweb.Controller.prototype.events, {
-            "click .button-period": "_onClickButtonPeriod",
-            "click #button-custom-date": "_onClickButtonCustomDate",
-        }),
-
-        async _onClickButtonPeriod(e) {
-            e.preventDefault();
-            var $target = $(e.currentTarget);
-            var data = $target.data();
-            var dashboard_detail_values = this.$el.find("#dashboard_detail_values");
-
-            await this._rpc({
-                model: "lefilament.dashboard",
-                method: "dashboard_detail_values_template",
-                args: [],
-                kwargs: {
-                    date_start: data.dateStart || null,
-                    date_end: data.dateEnd || null,
-                },
-            }).then(function (result) {
-                dashboard_detail_values.html(result);
-            });
-        },
-
-        async _onClickButtonCustomDate(e) {
-            e.preventDefault();
-            var dashboard_detail_values = this.$el.find("#dashboard_detail_values");
-            var date_start = this.$el.find("#custom-date-start")[0];
-            var date_end = this.$el.find("#custom-date-end")[0];
-
-            await this._rpc({
-                model: "lefilament.dashboard",
-                method: "dashboard_detail_values_template",
-                args: [],
-                kwargs: {
-                    date_start: date_start.value || null,
-                    date_end: date_end.value || null,
-                },
-            }).then(function (result) {
-                dashboard_detail_values.html(result);
-            });
-        },
-    });
-
-    const DashboardDetail = qweb.View.extend({
-        withSearchBar: false,
-        searchMenuTypes: [],
-        config: _.extend({}, qweb.View.prototype.config, {
-            Controller: Controller,
-        }),
-    });
-
-    viewRegistry.add("dashboard_detail", DashboardDetail);
-});
diff --git a/static/src/js/dashboard_overview.js b/static/src/js/dashboard_overview.js
deleted file mode 100644
index 1f7d69926a47947010540a0b49529eb7e5d08607..0000000000000000000000000000000000000000
--- a/static/src/js/dashboard_overview.js
+++ /dev/null
@@ -1,49 +0,0 @@
-odoo.define("lefilament_tdb.dashboard_overview", function (require) {
-    "use strict";
-
-    const qweb = require("web.qweb");
-    const viewRegistry = require("web.view_registry");
-
-    const Controller = qweb.Controller.extend({
-        events: _.extend({}, qweb.Controller.prototype.events, {
-            "click #update_view": "_onClickUpdateView",
-            "click .dashboard_view": "_onClickDashboardAction",
-        }),
-
-        _onClickUpdateView() {
-            this.reload();
-        },
-
-        async _onClickDashboardAction(e) {
-            e.preventDefault();
-            var $target = $(e.currentTarget);
-            var self = this;
-            var data = $target.data();
-
-            await this._rpc({
-                model: "lefilament.dashboard",
-                method: "open_detail",
-                args: [data.targetModel],
-                kwargs: {
-                    name: data.title,
-                    domain: data.domain || null,
-                    views: data.views || null,
-                },
-            }).then(function (action) {
-                if (action !== undefined) {
-                    self.do_action(action);
-                }
-            });
-        },
-    });
-
-    const DashboardOverview = qweb.View.extend({
-        withSearchBar: false,
-        searchMenuTypes: [],
-        config: _.extend({}, qweb.View.prototype.config, {
-            Controller: Controller,
-        }),
-    });
-
-    viewRegistry.add("dashboard_overview", DashboardOverview);
-});
diff --git a/templates/dashboard_detail.xml b/templates/dashboard_detail.xml
deleted file mode 100644
index 46ef24eade833c23cbc6a41e16c0304a0600d295..0000000000000000000000000000000000000000
--- a/templates/dashboard_detail.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<odoo>
-    <!-- Template layout -->
-    <record id="lefilament_dashboard_detail" model="ir.ui.view">
-        <field name="name">lefilament.dashboard.detail</field>
-        <field name="type">qweb</field>
-        <field name="model">lefilament.dashboard</field>
-        <field name="arch" type="xml">
-            <qweb js_class="dashboard_detail">
-                <nav class="o_qweb_cp_buttons">
-                    <div class="btn-group" role="group" aria-label="Dates buttons">
-                        <button
-                            type="object"
-                            class="btn btn-outline-primary button-period"
-                            name="this_month"
-                            t-att-data-date-start="datetime.date.today().replace(day=1).strftime('%Y-%m-%d')"
-                            t-att-data-date-end="(datetime.date.today().replace(day=1) + relativedelta(months=1, days=-1)).strftime('%Y-%m-%d')"
-                        >
-                            Ce mois-ci
-                        </button>
-                        <button
-                            type="object"
-                            class="btn btn-outline-primary button-period"
-                            name="last_month"
-                            t-att-data-date-start="(datetime.date.today().replace(day=1) + relativedelta(months=-1)).strftime('%Y-%m-%d')"
-                            t-att-data-date-end="(datetime.date.today().replace(day=1) + relativedelta(days=-1)).strftime('%Y-%m-%d')"
-                        >
-                            Le mois dernier
-                        </button>
-                        <button
-                            type="object"
-                            class="btn btn-outline-primary button-period"
-                            name="this_year"
-                            t-att-data-date-start="datetime.date.today().replace(day=1, month=1).strftime('%Y-%m-%d')"
-                            t-att-data-date-end="datetime.date.today().replace(day=31, month=12).strftime('%Y-%m-%d')"
-                        >
-                            Cette année
-                        </button>
-                        <button
-                            type="object"
-                            class="btn btn-outline-primary button-period"
-                            name="last_year"
-                            t-att-data-date-start="(datetime.date.today().replace(day=1, month=1) + relativedelta(years=-1)).strftime('%Y-%m-%d')"
-                            t-att-data-date-end="(datetime.date.today().replace(day=31, month=12) + relativedelta(years=-1)).strftime('%Y-%m-%d')"
-                        >
-                            L'année dernière
-                        </button>
-                        <button
-                            type="object"
-                            class="btn btn-outline-primary button-period"
-                            name="all"
-                            data-date-start=""
-                            data-date-end=""
-                        >
-                            Tout
-                        </button>
-                    </div>
-
-                    <div class="btn-group ms-5" role="group">
-                        <input type="date" class="form-control text-center" id="custom-date-start" />
-                        <input type="date" class="form-control text-center" id="custom-date-end" />
-                        <button
-                            type="object"
-                            id="button-custom-date"
-                            class="btn btn-outline-primary"
-                        >
-                            Mettre à jour
-                        </button>
-                    </div>
-                </nav>
-                <div id="dashboard_detail_values">
-                    <t t-value="records.dashboard_detail_values()" t-set="init_data" />
-                    <t t-value="init_data.get('customer')" t-set="customer" />
-                    <t t-value="init_data.get('employee_time')" t-set="employee_time" />
-                    <t t-call="lefilament_tdb.dashboard_detail_values" />
-                </div>
-            </qweb>
-        </field>
-    </record>
-
-    <!-- Dashboard Values -->
-    <template id="dashboard_detail_values" name="dashboard_detail_values">
-        <div class="dashboard_detail">
-            <div class="container-fluid">
-                <div class="row">
-                    <div class="col-12">
-                        <div class="mt-2 mb-4 display-6 text-center">
-                            Période :
-                            <t t-out="date_start" t-options="{'widget': 'date', 'format': 'dd/MM/YYYY'}" /> -
-                            <t t-out="date_end" t-options="{'widget': 'date', 'format': 'dd/MM/YYYY'}" />
-                        </div>
-                    </div>
-                    <div class="col-7">
-                        <h3 class="text-uppercase py-2 mb-0">Rentabilité client</h3>
-                        <hr class="mt-0" />
-                        <t t-call="lefilament_tdb.dashboard_detail_table">
-                            <t t-set="data" t-value="customer" />
-                        </t>
-                    </div>
-                    <div class="col-5">
-                        <h3 class="text-uppercase py-2 mb-0">Imputations</h3>
-                        <hr class="mt-0" />
-                        <t t-call="lefilament_tdb.dashboard_detail_table">
-                            <t t-set="data" t-value="employee_time" />
-                        </t>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </template>
-
-    <!-- Table Template -->
-    <template id="dashboard_detail_table" name="dashboard_detail_table">
-        <div t-if="data" class="px-4 mb-5" style="max-height: 600px; overflow: scroll; border: 1px solid #eee;">
-            <table class="table table-hover table-striped">
-                <thead>
-                    <tr class="bg-100">
-                        <th>#</th>
-                        <th t-foreach="data[0].keys()" t-as="header">
-                            <t t-out="header" />
-                        </th>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tr t-foreach="data" t-as="line">
-                        <td t-out="line_index + 1" />
-                        <t t-foreach="line.values()" t-as="v">
-                            <td t-if="isinstance(v, (int, float))" class="text-end">
-                                <t t-out="v" t-options="{'widget': 'float', 'precision': 0}" />
-                            </td>
-                            <td t-else="">
-                                <t t-out="v" />
-                            </td>
-                        </t>
-                    </tr>
-                </tbody>
-                <tfoot>
-                    <tr class="bg-100">
-                        <th>Total</th>
-                        <th t-foreach="data[-1].items()" t-as="footer" class="text-end">
-                            <t t-if="isinstance(footer[1], (int, float))">
-                                <t
-                                    t-out="sum(list(map(lambda d: d.get(footer[0]) if d.get(footer[0]) else 0.0, data)))"
-                                    t-options="{'widget': 'float', 'precision': 0}"
-                                />
-                            </t>
-                        </th>
-                    </tr>
-                </tfoot>
-            </table>
-        </div>
-    </template>
-
-    <!-- Action -->
-    <record id="le_filament_dashboard_detail_action" model="ir.actions.act_window">
-        <field name="name">Détail</field>
-        <field name="res_model">lefilament.dashboard</field>
-        <field name="view_mode">qweb</field>
-        <field name="view_id" ref="lefilament_dashboard_detail"/>
-        <field name="context">{'active_test': False}</field>
-    </record>
-</odoo>
diff --git a/templates/lefilament_dashboard.xml b/templates/lefilament_dashboard.xml
deleted file mode 100644
index 3e451a750b8be851548db33f334e0a704ac958f3..0000000000000000000000000000000000000000
--- a/templates/lefilament_dashboard.xml
+++ /dev/null
@@ -1,541 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<odoo>
-    <record id="lefilament_dashboard_overview_form" model="ir.ui.view">
-        <field name="name">lefilament.dashboard.overview</field>
-        <field name="type">qweb</field>
-        <field name="model">lefilament.dashboard</field>
-        <field name="arch" type="xml">
-            <qweb js_class="dashboard_overview">
-                <nav class="o_qweb_cp_buttons">
-                    <button type="object" class="btn" id="update_view">
-                        <i class="fa fa-refresh" />
-                    </button>
-                </nav>
-                <div class="lefilament_dashboard">
-                    <div class="container">
-                        <t
-                            t-set="values"
-                            t-value="records.retrieve_datas_dashboard()"
-                        />
-                        <div class="row">
-                            <!-- Column 1 -->
-                            <div class="col-12 col-md-6 col-lg-4">
-                                <h3
-                                    class="text-uppercase fw-bolder o_horizontal_separator mb-4"
-                                >En Cours</h3>
-                                <!-- Facturé -->
-                                <div class="card mb32">
-                                    <t
-                                        t-set="invoiced"
-                                        t-value="sum(values.get('invoice_ids').mapped('amount_untaxed_signed'))"
-                                    />
-                                    <div class="card-body">
-                                        <a
-                                            class="dashboard_view"
-                                            data-target-model="account.move"
-                                            data-method="open_detail"
-                                            t-att-data-domain="[('id', 'in', values.get('invoice_ids').ids)]"
-                                            data-title="Factures client"
-                                            t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]"
-                                        >
-                                            <h5 class="card-title">Facturé</h5>
-                                            <p class="display-6">
-                                                <t
-                                                    t-out="invoiced"
-                                                    t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                />
-                                            </p>
-                                        </a>
-                                    </div>
-                                </div>
-                                <!-- Commandes -->
-                                <div class="card mb32">
-                                    <t
-                                        t-set="ordered"
-                                        t-value="sum(values.get('order_line_ids').mapped('price_subtotal'))"
-                                    />
-                                    <div class="card-body">
-                                        <a
-                                            type="action"
-                                            data-model="sale.order"
-                                            t-att-data-domain="[('id','in', values.get('order_line_ids').mapped('order_id').ids)]"
-                                            data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]'
-                                            tabindex="-1"
-                                        >
-                                            <h5
-                                                class="card-title"
-                                            >Commandes en cours</h5>
-                                            <p class="display-6">
-                                                <t
-                                                    t-out="ordered"
-                                                    t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                />
-
-                                            </p>
-                                        </a>
-                                    </div>
-                                </div>
-                                <!-- Pipe -->
-                                <div class="card mb32">
-                                    <div class="card-body">
-                                        <a
-                                            type="action"
-                                            data-model="crm.lead"
-                                            t-att-data-domain="[('id','in', values.get('lead_ids').ids)]"
-                                            data-views='[[0, "kanban"],[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]'
-                                            tabindex="-1"
-                                        >
-                                            <h5 class="card-title">Pipe</h5>
-                                            <p class="display-6">
-                                                <t
-                                                    t-out="sum(values.get('lead_ids').mapped('prorated_revenue'))"
-                                                    t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                />
-
-                                            </p>
-                                        </a>
-                                    </div>
-                                </div>
-                            </div>
-
-                            <!-- Column 2 -->
-                            <div class="col-12 col-md-6 col-lg-4">
-                                <h3
-                                    class="text-uppercase fw-bolder o_horizontal_separator mb-4"
-                                >Objectif</h3>
-                                <div class="card">
-                                    <div class="card-body">
-                                        <p class="display-5 mb16">
-                                            <t
-                                                t-out="values.get('target')"
-                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                            />
-
-                                        </p>
-                                        <div class="progress" style="height: 60px;">
-                                            <div
-                                                class="progress-bar progress-bar-striped bg-success"
-                                                role="progressbar"
-                                                t-att-aria-valuenow="values['progress'] * 100"
-                                                aria-valuemin="0"
-                                                aria-valuemax="100"
-                                                t-attf-style="width: {{values['progress'] * 100}}%; font-size: 14px; font-weight: 600;"
-                                            >
-                                                <t
-                                                    t-out="round(values.get('progress') * 100, 0)"
-                                                    t-options="{'widget': 'float', 'precision': 0}"
-                                                /> %
-                                            </div>
-                                        </div>
-                                        <table class="table-legend mt16">
-                                            <tr>
-                                                <td
-                                                    style="background-color: #8ED8A2; width: 20px;"
-                                                    class="progress-bar-striped"
-                                                />
-                                                <td>Facturé</td>
-                                                <td class="nb"><t
-                                                        t-out="invoiced"
-                                                        t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                    /></td>
-                                                <td class="nb">
-                                                    <t
-                                                        t-out="values['progress'] * 100"
-                                                        t-options="{'widget': 'float', 'precision': 0}"
-                                                    /> %
-                                                </td>
-                                            </tr>
-                                            <tr>
-                                                <td
-                                                    style="background-color: #F6DCA2; width: 20px;"
-                                                    class="progress-bar-striped"
-                                                />
-                                                <td>Commandes</td>
-                                                <td class="nb"><t
-                                                        t-out="ordered"
-                                                        t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                    /></td>
-                                                <td class="nb">
-                                                    <t
-                                                        t-out="round(ordered / values['target'], 2) * 100"
-                                                        t-options="{'widget': 'float', 'precision': 0}"
-                                                    /> %
-                                                </td>
-                                            </tr>
-                                            <tr>
-                                                <td
-                                                    style="background-color: #F6CCA2; width: 20px;"
-                                                    class="progress-bar-striped"
-                                                />
-                                                <td>Pipe Gagné</td>
-                                                <td class="nb"><t
-                                                        t-out="values['pipe_win']"
-                                                        t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                    /></td>
-                                                <td class="nb"><t
-                                                        t-out="round(values['pipe_win'] / values['target'], 2) * 100"
-                                                        t-options="{'widget': 'float', 'precision': 0}"
-                                                    /> %</td>
-                                            </tr>
-                                            <tr class="table-legend-total">
-                                                <td style="width: 20px;" />
-                                                <td>Total</td>
-                                                <td class="nb"><t
-                                                        t-out="(values['pipe_win'] + ordered + invoiced)"
-                                                        t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                    /></td>
-                                                <td class="nb">
-                                                    <t
-                                                        t-out="round((values['pipe_win'] + ordered + invoiced) / values['target'], 2) * 100"
-                                                        t-options="{'widget': 'float', 'precision': 0}"
-                                                    /> %
-                                                </td>
-                                            </tr>
-                                            <tr>
-                                                <td style="width: 20px;" />
-                                                <td />
-                                                <td class="nb" />
-                                                <td class="nb" />
-                                            </tr>
-                                            <tr>
-                                                <td
-                                                    style="background-color: #eee; width: 20px;"
-                                                    class="progress-bar-striped"
-                                                />
-                                                <td>À facturer</td>
-                                                <td class="nb">
-                                                    <t
-                                                        t-out="values['target'] - invoiced"
-                                                        t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                    />
-                                                </td>
-                                                <td class="nb">
-                                                    <t
-                                                        t-out="round((values['target'] - invoiced) / values['target'], 2) * 100"
-                                                        t-options="{'widget': 'float', 'precision': 0}"
-                                                    /> %
-                                                </td>
-                                            </tr>
-                                        </table>
-                                    </div>
-                                </div>
-                            </div>
-
-                            <!-- Column 3 -->
-                            <div class="col-12 col-md-6 col-lg-4">
-                                <h3
-                                    class="text-uppercase fw-bolder o_horizontal_separator mb-4"
-                                >Trésorerie</h3>
-                                <!-- Banques -->
-                                <div class="card mb32">
-                                    <div class="card-body">
-                                        <ul
-                                            class="nav nav-tabs"
-                                            id="cash-tab"
-                                            role="tablist"
-                                        >
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link active"
-                                                    id="cash-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#cash"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="cash"
-                                                    aria-selected="true"
-                                                >
-                                                    Trésorerie
-                                                </button>
-                                            </li>
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link"
-                                                    id="bank-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#bank"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="bank"
-                                                    aria-selected="false"
-                                                >Banques
-                                                </button>
-                                            </li>
-                                        </ul>
-                                        <div
-                                            class="tab-content mt16"
-                                            id="cashContent"
-                                        >
-                                            <div
-                                                class="tab-pane fade show active"
-                                                id="cash"
-                                                role="tabpanel"
-                                                aria-labelledby="cash-tab"
-                                            >
-                                                <p class="card-maj">
-                                                    Denière mise à jour le <t
-                                                        t-out="values['date_maj']"
-                                                        t-options="{'widget': 'date', 'format': 'dd MMM yyyy'}"
-                                                    /></p>
-                                                <a
-                                                    type="action"
-                                                    data-model="account.bank.statement"
-                                                    t-att-data-domain="[('id','in', values.get('statement_line_ids').mapped('statement_id').ids)]"
-                                                    data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]'
-                                                    tabindex="-1"
-                                                >
-                                                    <p class="display-6">
-                                                        <t
-                                                            t-out="sum(values.get('statement_line_ids').mapped('amount'))"
-                                                            t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                        />
-
-                                                    </p>
-                                                </a>
-                                            </div>
-                                            <div
-                                                class="tab-pane fade"
-                                                id="bank"
-                                                role="tabpanel"
-                                                aria-labelledby="bank-tab"
-                                            >
-                                                <table
-                                                    class="table table-striped table-sm table-bordered table-hover"
-                                                >
-                                                    <t
-                                                        t-foreach="values['cash_by_bank']"
-                                                        t-as="bank"
-                                                    >
-                                                        <tr>
-                                                            <td
-                                                                t-out="bank['journal_id'][1]"
-                                                            />
-                                                            <td
-                                                                class="text-right"
-                                                                t-out="bank['amount']"
-                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                            />
-                                                        </tr>
-                                                    </t>
-                                                </table>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
-
-                                <!-- To paid -->
-                                <div class="card mb32">
-                                    <div class="card-body">
-                                        <ul
-                                            class="nav nav-tabs"
-                                            id="cash-tab"
-                                            role="tablist"
-                                        >
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link active"
-                                                    id="cust_to_pay-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#cust_to_pay"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="cust_to_pay"
-                                                    aria-selected="true"
-                                                >
-                                                    Facturé non encaissé
-                                                </button>
-                                            </li>
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link"
-                                                    id="provider_to_pay-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#provider_to_pay"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="provider_to_pay"
-                                                    aria-selected="false"
-                                                >Fournisseurs
-                                                </button>
-                                            </li>
-                                        </ul>
-                                        <div
-                                            class="tab-content mt16"
-                                            id="toPayContent"
-                                        >
-                                            <div
-                                                class="tab-pane fade show active"
-                                                id="cust_to_pay"
-                                                role="tabpanel"
-                                                aria-labelledby="cust_to_pay-tab"
-                                            >
-                                                <a
-                                                    class="dashboard_view"
-                                                    data-target-model="account.move"
-                                                    data-method="open_detail"
-                                                    t-att-data-domain="[('id', 'in', values.get('to_get').ids)]"
-                                                    data-title="Factures à encaisser"
-                                                    t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]"
-                                                >
-                                                    <p class="display-6">
-                                                        <t
-                                                            t-out="sum(values.get('to_get').mapped('amount_residual_signed'))"
-                                                            t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                        />
-                                                    </p>
-                                                </a>
-                                            </div>
-                                            <div
-                                                class="tab-pane fade"
-                                                id="provider_to_pay"
-                                                role="tabpanel"
-                                                aria-labelledby="provider_to_pay-tab"
-                                            >
-                                                <a
-                                                    class="dashboard_view"
-                                                    data-target-model="account.move"
-                                                    data-method="open_detail"
-                                                    t-att-data-domain="[('id', 'in', values.get('to_pay').ids)]"
-                                                    data-title="Factures fournisseurs"
-                                                    t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]"
-                                                >
-                                                    <p class="display-6">
-                                                        <t
-                                                            t-out="sum(values.get('to_pay').mapped('amount_residual_signed'))"
-                                                            t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                        />
-                                                    </p>
-                                                </a>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
-
-                                <!-- Variation -->
-                                <div class="card mb32">
-                                    <div class="card-body">
-                                        <ul
-                                            class="nav nav-tabs"
-                                            id="variation-tab"
-                                            role="tablist"
-                                        >
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link active"
-                                                    id="variation-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#variation"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="variation"
-                                                    aria-selected="true"
-                                                >
-                                                    Variation
-                                                </button>
-                                            </li>
-                                            <li
-                                                class="nav-item"
-                                                role="presentation"
-                                            >
-                                                <button
-                                                    class="nav-link"
-                                                    id="inout-tab"
-                                                    data-bs-toggle="tab"
-                                                    data-bs-target="#inout"
-                                                    type="button"
-                                                    role="tab"
-                                                    aria-controls="inout"
-                                                    aria-selected="false"
-                                                >Entrées/Sorties
-                                                </button>
-                                            </li>
-                                        </ul>
-                                        <div
-                                            class="tab-content mt16"
-                                            id="variationContent"
-                                        >
-                                            <div
-                                                class="tab-pane fade show active"
-                                                id="variation"
-                                                role="tabpanel"
-                                                aria-labelledby="variation-tab"
-                                            >
-                                                <a
-                                                    type="action"
-                                                    data-model="account.bank.statement.line"
-                                                    t-att-data-domain="[('id','in', values.get('variation').ids)]"
-                                                    data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]'
-                                                    tabindex="-1"
-                                                >
-                                                    <p class="display-6">
-                                                        <t
-                                                            t-out="sum(values.get('variation').mapped('amount'))"
-                                                            t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                        />
-
-                                                    </p>
-                                                </a>
-                                            </div>
-                                            <div
-                                                class="tab-pane fade"
-                                                id="inout"
-                                                role="tabpanel"
-                                                aria-labelledby="inout-tab"
-                                            >
-                                                <div class="row">
-                                                    <div class="col-6">
-                                                        <p><strong
-                                                            >Encaissé</strong></p>
-                                                        <p class="display-6">
-                                                            <t
-                                                                t-out="sum(values.get('in').mapped('amount'))"
-                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                            />
-                                                        </p>
-                                                    </div>
-                                                    <div class="col-6">
-                                                        <p><strong
-                                                            >Décaissé</strong></p>
-                                                        <p class="display-6">
-                                                            <t
-                                                                t-out="sum(values.get('out').mapped('amount'))"
-                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
-                                                            />
-                                                        </p>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </qweb>
-        </field>
-    </record>
-
-    <record id="le_filament_dashboard_overview_action" model="ir.actions.act_window">
-        <field name="name">Rapport Annuel</field>
-        <field name="res_model">lefilament.dashboard</field>
-        <field name="view_mode">qweb</field>
-        <field name="view_id" ref="lefilament_dashboard_overview_form" />
-        <field name="context">{'active_test': False}</field>
-    </record>
-</odoo>
diff --git a/views/account_bank_statement_line.xml b/views/account_bank_statement_line.xml
deleted file mode 100644
index 4bda0cdf2692f5e407230a28c6a8725a7b31d9d5..0000000000000000000000000000000000000000
--- a/views/account_bank_statement_line.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2023 Le Filament (<https://www.le-filament.com>)
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-    <record id="account_bank_statement_line_tree" model="ir.ui.view">
-        <field name="name">account.bank.statement.line.tree</field>
-        <field name="model">account.bank.statement.line</field>
-        <field name="arch" type="xml">
-            <tree>
-                <field name="statement_id" />
-                <field name="move_id" />
-                <field name="date" />
-                <field name="payment_ref" optional="show" />
-                <field name="ref" optional="show" />
-                <field name="partner_id" />
-                <field name="amount" />
-                <field name="running_balance" optional="hide" />
-                <field name="transaction_type" optional="hide" />
-            </tree>
-        </field>
-    </record>
-</odoo>
diff --git a/views/account_move.xml b/views/account_move.xml
deleted file mode 100644
index 2ab14c8c8d0e6c40d125e242d9f3bc496e61ee42..0000000000000000000000000000000000000000
--- a/views/account_move.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
-     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-
-    <record id="view_invoice_tree" model="ir.ui.view">
-        <field name="name">account.invoice.tree</field>
-        <field name="model">account.move</field>
-        <field name="arch" type="xml">
-            <tree>
-                <field name="name" decoration-bf="1" />
-                <field name="invoice_date" string="Date Facturation" />
-                <field name="partner_id" string="Client" />
-                <field name="invoice_date_due" />
-                <field name="invoice_origin" />
-                <field name="payment_reference" optional="hide" />
-                <field name="ref" optional="hide" />
-                <field name="invoice_user_id" widget="many2one_avatar_user" />
-                <field
-                    name="amount_untaxed_signed"
-                    string="Montant HT"
-                    sum="Total"
-                    decoration-bf="1"
-                />
-                <field name="amount_tax_signed" sum="Total" optional="hide" />
-                <field
-                    name="amount_total_signed"
-                    string="Total"
-                    sum="Total"
-                    optional="show"
-                />
-                <field
-                    name="amount_residual_signed"
-                    string="Montant Dû"
-                    sum="Amount Due"
-                    optional="show"
-                />
-                <field name="currency_id" invisible="1" />
-                <field name="company_currency_id" invisible="1" />
-                <field
-                    name="state"
-                    widget="badge"
-                    decoration-success="state == 'posted'"
-                    decoration-info="state == 'draft'"
-                    optional="show"
-                />
-                <field
-                    name="payment_state"
-                    widget="badge"
-                    decoration-danger="payment_state == 'not_paid'"
-                    decoration-warning="payment_state in ('partial', 'in_payment')"
-                    decoration-success="payment_state in ('paid', 'reversed')"
-                    attrs="{'invisible': [('payment_state', 'in', ('invoicing_legacy'))]}"
-                />
-                <field name="move_type" invisible="1" />
-              </tree>
-        </field>
-    </record>
-</odoo>
diff --git a/views/lefilament_dashboard.xml b/views/lefilament_dashboard.xml
index d9331aaf94c2901f61b9ab478e6633bbffd57fc4..af9db75f1da180c036f4604d599aa79b7921c6b2 100644
--- a/views/lefilament_dashboard.xml
+++ b/views/lefilament_dashboard.xml
@@ -28,11 +28,11 @@
         <field name="model">lefilament.dashboard</field>
         <field name="type">pivot</field>
         <field name="arch" type="xml">
-             <graph string="TDB Le Filament">
+             <pivot string="TDB Le Filament">
                   <field name="ca_mois" type="measure" />
                   <field name="pipe_mois" type="measure" />
                   <field name="date_tdb" type="row" />
-            </graph>
+            </pivot>
         </field>
     </record>
 
diff --git a/views/menus.xml b/views/menus.xml
index 90d346f15bbf8059b7517eb462c0ebb69aa716f2..91f611f6d41a3945bead3372ed2b5178e74c01ba 100644
--- a/views/menus.xml
+++ b/views/menus.xml
@@ -10,27 +10,6 @@
         web_icon="lefilament_tdb,static/description/icon_menu.png"
     />
 
-    <menuitem
-        id="lefilament_dashboard_report"
-        parent="lefilament_dashboard_menu"
-        name="Rapports"
-        sequence="1"
-    />
-
-    <menuitem
-        id="lefilament_dashboard_report_year"
-        parent="lefilament_dashboard_report"
-        name="Annuel"
-        sequence="1"
-        action="lefilament_tdb.le_filament_dashboard_overview_action"
-    />
-    <menuitem
-        id="lefilament_dashboard_report_detail"
-        parent="lefilament_dashboard_report"
-        name="Détail"
-        sequence="1"
-        action="lefilament_tdb.le_filament_dashboard_detail_action"
-    />
     <menuitem
         id="lefilament_dashboard_conf"
         parent="lefilament_dashboard_menu"