diff --git a/.eslintrc.yml b/.eslintrc.yml
index 88f2881b4c128fc4762338a8f420272c44cc29ef..9429bc688aab4993eae460767368f65089afa323 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -1,9 +1,16 @@
 env:
   browser: true
+  es6: true
 
 # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
 parserOptions:
-  ecmaVersion: 2017
+  ecmaVersion: 2019
+
+overrides:
+  - files:
+      - "**/*.esm.js"
+    parserOptions:
+      sourceType: module
 
 # Globals available in Odoo that shouldn't produce errorings
 globals:
@@ -14,7 +21,7 @@ globals:
   moment: readonly
   odoo: readonly
   openerp: readonly
-  Promise: readonly
+  owl: 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/.gitignore b/.gitignore
index 818770fb1bdc0a144e924c9a5940f0b035df8a0d..9c283fd41f6cc3330653f1d90a820b85e23caf65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,7 +15,6 @@ build/
 develop-eggs/
 dist/
 eggs/
-lib/
 lib64/
 parts/
 sdist/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index cb8b5ef27a4408c9767c962d0f4e70fb99715061..168470e2ed745631aefb772a4a864cf1de76d3cb 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -5,7 +5,9 @@ exclude: |
   # Files and folders generated by bots, to avoid loops
   ^setup/|/static/description/index\.html$|
   # We don't want to mess with tool-generated files
-  .svg$|/tests/([^/]+/)?cassettes/|
+  .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|
+  # Maybe reactivate this when all README files include prettier ignore tags?
+  ^README\.md$|
   # Library files can have extraneous formatting (even minimized)
   /static/(src/)?lib/|
   # Repos using Sphinx to generate docs don't need prettying
@@ -14,7 +16,7 @@ exclude: |
   (LICENSE.*|COPYING.*)
 default_language_version:
   python: python3
-  node: "14.13.0"
+  node: "14.18.0"
 repos:
   - repo: local
     hooks:
@@ -26,10 +28,12 @@ repos:
         language: fail
         files: "\\.rej$"
   - repo: https://github.com/oca/maintainer-tools
-    rev: ab1d7f6
+    rev: dfba427ba03900b69e0a7f2c65890dc48921d36a
     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.4
     hooks:
@@ -42,22 +46,22 @@ repos:
           - --remove-duplicate-keys
           - --remove-unused-variables
   - repo: https://github.com/psf/black
-    rev: 20.8b1
+    rev: 22.3.0
     hooks:
       - id: black
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: v2.1.2
+    rev: v2.4.1
     hooks:
       - id: prettier
         name: prettier (with plugin-xml)
         additional_dependencies:
-          - "prettier@2.1.2"
-          - "@prettier/plugin-xml@0.12.0"
+          - "prettier@2.4.1"
+          - "@prettier/plugin-xml@1.1.0"
         args:
           - --plugin=@prettier/plugin-xml
         files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
   - repo: https://github.com/pre-commit/mirrors-eslint
-    rev: v7.8.1
+    rev: v7.32.0
     hooks:
       - id: eslint
         verbose: true
@@ -65,7 +69,7 @@ repos:
           - --color
           - --fix
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v3.2.0
+    rev: v4.0.1
     hooks:
       - id: trailing-whitespace
         # exclude autogenerated files
@@ -87,12 +91,12 @@ repos:
       - id: mixed-line-ending
         args: ["--fix=lf"]
   - repo: https://github.com/asottile/pyupgrade
-    rev: v2.7.2
+    rev: v2.29.0
     hooks:
       - id: pyupgrade
         args: ["--keep-percent-format"]
   - repo: https://github.com/PyCQA/isort
-    rev: 5.5.1
+    rev: 5.9.3
     hooks:
       - id: isort
         name: isort except __init__.py
@@ -100,24 +104,20 @@ repos:
           - --settings=.
         exclude: /__init__\.py$
   - repo: https://gitlab.com/PyCQA/flake8
-    rev: 3.8.3
+    rev: 3.9.2
     hooks:
       - id: flake8
         name: flake8
-        additional_dependencies: ["flake8-bugbear==20.1.4"]
-  - repo: https://github.com/PyCQA/pylint
-    rev: pylint-2.5.3
+        additional_dependencies: ["flake8-bugbear==21.9.2"]
+  - repo: https://github.com/OCA/pylint-odoo
+    rev: 7.0.2
     hooks:
-      - id: pylint
+      - id: pylint_odoo
         name: pylint with optional checks
         args:
           - --rcfile=.pylintrc
           - --exit-zero
         verbose: true
-        additional_dependencies: &pylint_deps
-          - pylint-odoo==3.5.0
-      - id: pylint
-        name: pylint with mandatory checks
+      - id: pylint_odoo
         args:
           - --rcfile=.pylintrc-mandatory
-        additional_dependencies: *pylint_deps
diff --git a/.pylintrc b/.pylintrc
index c3d0a5c839baeee21312961c56158de4936fdc91..d431ca78d44080ba32c20c6991c2655f2ab6423b 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -8,7 +8,7 @@ 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=14.0
+valid_odoo_versions=15.0
 
 [MESSAGES CONTROL]
 disable=all
@@ -64,6 +64,38 @@ enable=anomalous-backslash-in-string,
     use-vim-comment,
     wrong-tabs-instead-of-spaces,
     xml-syntax-error,
+    attribute-string-redundant,
+    character-not-valid-in-resource-link,
+    consider-merging-classes-inherited,
+    context-overridden,
+    create-user-wo-reset-password,
+    dangerous-filter-wo-user,
+    dangerous-qweb-replace-wo-priority,
+    deprecated-data-xml-node,
+    deprecated-openerp-xml-node,
+    duplicate-po-message-definition,
+    except-pass,
+    file-not-used,
+    invalid-commit,
+    manifest-maintainers-list,
+    missing-newline-extrafiles,
+    missing-readme,
+    missing-return,
+    odoo-addons-relative-import,
+    old-api7-method-defined,
+    po-msgstr-variables,
+    po-syntax-error,
+    renamed-field-parameter,
+    resource-not-exist,
+    str-format-used,
+    test-folder-imported,
+    translation-contains-variable,
+    translation-positional-used,
+    unnecessary-utf8-coding-comment,
+    website-manifest-key-not-valid-uri,
+    xml-attribute-translatable,
+    xml-deprecated-qweb-directive,
+    xml-deprecated-tree-attribute,
     # messages that do not cause the lint step to fail
     consider-merging-classes-inherited,
     create-user-wo-reset-password,
@@ -73,7 +105,7 @@ enable=anomalous-backslash-in-string,
     invalid-commit,
     missing-manifest-dependency,
     missing-newline-extrafiles,
-    # missing-readme,
+    missing-readme,
     no-utf8-coding-comment,
     odoo-addons-relative-import,
     old-api7-method-defined,
diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory
index 43ea23947166ff8080219007cfae43ec54a28f8e..189c548631665bef116fc4d0df3b986f9727df31 100644
--- a/.pylintrc-mandatory
+++ b/.pylintrc-mandatory
@@ -8,7 +8,7 @@ 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=14.0
+valid_odoo_versions=15.0
 
 [MESSAGES CONTROL]
 disable=all
@@ -56,7 +56,39 @@ enable=anomalous-backslash-in-string,
     unreachable,
     use-vim-comment,
     wrong-tabs-instead-of-spaces,
-    xml-syntax-error
+    xml-syntax-error,
+    attribute-string-redundant,
+    character-not-valid-in-resource-link,
+    consider-merging-classes-inherited,
+    context-overridden,
+    create-user-wo-reset-password,
+    dangerous-filter-wo-user,
+    dangerous-qweb-replace-wo-priority,
+    deprecated-data-xml-node,
+    deprecated-openerp-xml-node,
+    duplicate-po-message-definition,
+    except-pass,
+    file-not-used,
+    invalid-commit,
+    manifest-maintainers-list,
+    missing-newline-extrafiles,
+    missing-readme,
+    missing-return,
+    odoo-addons-relative-import,
+    old-api7-method-defined,
+    po-msgstr-variables,
+    po-syntax-error,
+    renamed-field-parameter,
+    resource-not-exist,
+    str-format-used,
+    test-folder-imported,
+    translation-contains-variable,
+    translation-positional-used,
+    unnecessary-utf8-coding-comment,
+    website-manifest-key-not-valid-uri,
+    xml-attribute-translatable,
+    xml-deprecated-qweb-directive,
+    xml-deprecated-tree-attribute
 
 [REPORTS]
 msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
diff --git a/__init__.py b/__init__.py
index 31660d6a9650857f10c9dbdcd139145e0897ef6e..0650744f6bc69b9f0b865e8c7174c813a5f5995e 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,3 +1 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-
 from . import models
diff --git a/__manifest__.py b/__manifest__.py
index 43e10caefd9e7027612385268c9e2276504c352e..c766518f5b49e0d3699e768f2a63a0d30f6c3a76 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -1,24 +1,28 @@
-# © 2021 Le Filament (<https://www.le-filament.com>)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-
 {
     "name": "Le Filament - Tableau de Bord",
     "summary": "Rapports Le Filament",
     "author": "Le Filament",
-    "category": "dashboard",
+    "category": "Productivity",
     "website": "https://le-filament.com",
-    "version": "14.0.1.0.0",
+    "version": "15.0.1.0.0",
     "license": "AGPL-3",
-    "depends": ["account", "crm", "hr_expense", "sale"],
+    "depends": ["automatic_statement_import", "crm", "hr_expense", "sale"],
     "data": [
         "security/lefilament_dashboard_security.xml",
         "security/ir.model.access.csv",
-        "views/assets.xml",
         "views/views.xml",
         "views/schedule.xml",
         "data/ir_module_category.xml",
     ],
-    "qweb": [
-        "static/src/xml/*.xml",
-    ],
+    "assets": {
+        "web.assets_qweb": [
+            "lefilament_tdb/static/src/xml/*.xml",
+        ],
+        "web.assets_backend": [
+            "lefilament_tdb/static/src/css/lefilament_tdb.css",
+            "lefilament_tdb/static/src/js/dashboard_year.js",
+            "lefilament_tdb/static/src/js/tresorerie.js",
+            "lefilament_tdb/static/src/js/previ_tresorerie.js",
+        ],
+    },
 }
diff --git a/data/ir_module_category.xml b/data/ir_module_category.xml
index 33396edca10d09b1cf61479e7f03b019d07a8f59..6fbfb384ef714f916e2d4d3406ec6f237fdb859e 100644
--- a/data/ir_module_category.xml
+++ b/data/ir_module_category.xml
@@ -1,12 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <odoo>
-  <data>
     <record model="ir.module.category" id="module_category_dashboard">
       <field name="name">Dashboard</field>
       <field name="description">Show main company dashboard</field>
       <field name="sequence">30</field>
     </record>
-  </data>
 </odoo>
diff --git a/models/__init__.py b/models/__init__.py
index f35384adde2fe69207e37b171d417cf8b17c29fa..e08731c1aae4421af4d5bad51cf766a6fda5bb37 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,5 +1,3 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-
 from . import lefilament_tdb
 from . import res_company
 from . import hr_employee
diff --git a/models/hr_employee.py b/models/hr_employee.py
index 6e4f417a9b7652a6f3b6da14c0fd14af19474cbe..cbe9d1667bc636c46b1410ae74ab8e6a11bb88ae 100644
--- a/models/hr_employee.py
+++ b/models/hr_employee.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# Copyright 2019-2022 Le Filament (<https://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/lefilament_tdb.py b/models/lefilament_tdb.py
index 32b947176ff9ddf3156475213434533b55d9c811..c8de027cb81c4bd8aa1af88ca8281776620e59d6 100644
--- a/models/lefilament_tdb.py
+++ b/models/lefilament_tdb.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# Copyright 2019-2022 Le Filament (<https://le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from datetime import date, datetime
@@ -24,13 +24,11 @@ class LeFilamentTdb(models.Model):
     )
     pipe_mois = fields.Float("Pipe", compute="_compute_dashboard_values", store=True)
     treso = fields.Float("Trésorerie", compute="_compute_dashboard_values", store=True)
-    variation = fields.Float(
-        "Variation", compute="_compute_dashboard_values", store=True
-    )
+    variation = fields.Float(compute="_compute_dashboard_values", store=True)
     charges = fields.Float("Décaissé", compute="_compute_dashboard_values", store=True)
     encaisse = fields.Float("Encaissé", compute="_compute_dashboard_values", store=True)
-    charges_fixes = fields.Float("Charges Fixes", default=10000)
-    runway = fields.Float("Runway", compute="_compute_runway_value")
+    charges_fixes = fields.Float(default=10000)
+    runway = fields.Float(compute="_compute_runway_value")
 
     @api.depends("date_tdb")
     def _compute_dashboard_values(self):
@@ -316,15 +314,16 @@ class LeFilamentTdb(models.Model):
     def tresorerie(self):
         self._cr.execute(
             """
-            SELECT to_char(date_trunc('month', date),'YYYY-MM') AS mois,
-                SUM(CASE WHEN amount > 0
-                    THEN amount ELSE 0 END) AS entree,
-                SUM(CASE WHEN amount < 0
-                    THEN amount ELSE 0 END) AS sortie,
+            SELECT to_char(date_trunc('month', aml.date),'YYYY-MM') AS mois,
+                SUM(CASE WHEN absl.amount > 0
+                    THEN absl.amount ELSE 0 END) AS entree,
+                SUM(CASE WHEN absl.amount < 0
+                    THEN absl.amount ELSE 0 END) AS sortie,
                 SUM(amount) AS variation
-            FROM account_bank_statement_line
-            GROUP BY date_trunc('month', date)
-            ORDER BY date_trunc('month', date);
+            FROM account_bank_statement_line absl
+            LEFT JOIN account_move_line aml ON aml.id = absl.move_id
+            GROUP BY date_trunc('month', aml.date)
+            ORDER BY date_trunc('month', aml.date);
             """
         )
         tresorerie = self._cr.dictfetchall()
@@ -352,13 +351,14 @@ class LeFilamentTdb(models.Model):
     def previ_tresorerie(self):
         self._cr.execute(
             """
-            SELECT to_char(date_trunc('month', date),'YYYY-MM') AS mois,
-                SUM(SUM(amount)) OVER (
-                    ORDER BY date_trunc('month', date)
+            SELECT to_char(date_trunc('month', aml.date),'YYYY-MM') AS mois,
+                SUM(SUM(absl.amount)) OVER (
+                    ORDER BY date_trunc('month', aml.date)
                 ) AS treso
-            FROM account_bank_statement_line
-            GROUP BY date_trunc('month', date)
-            ORDER BY date_trunc('month', date) DESC LIMIT 6;
+            FROM account_bank_statement_line absl
+            LEFT JOIN account_move_line aml ON aml.id = absl.move_id
+            GROUP BY date_trunc('month', aml.date)
+            ORDER BY date_trunc('month', aml.date) DESC LIMIT 6;
             """
         )
         tresorerie = self._cr.dictfetchall()
diff --git a/models/res_company.py b/models/res_company.py
index b89844ebfd4f73822ab434cfe2122797993257f3..abd861701e6f61c36fb0c1c3a0dc4183de4912b6 100644
--- a/models/res_company.py
+++ b/models/res_company.py
@@ -1,4 +1,4 @@
-# © 2019 Le Filament (<http://www.le-filament.com>)
+# Copyright 2019-2022 Le Filament (<https://le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import fields, models
@@ -8,7 +8,7 @@ class ResCompany(models.Model):
     _inherit = "res.company"
 
     ca_target = fields.Integer("Objectif Chiffre d'Affaire")
-    charges_fixes = fields.Integer("Charges Fixes")
+    charges_fixes = fields.Integer()
     previ_treso_ids = fields.One2many("previ.treso", "company_id", "Prévisionnel")
 
 
@@ -24,5 +24,5 @@ class PreviTreso(models.Model):
     periode = fields.Selection(
         [("12", "Mensuel"), ("3", "Trimestriel"), ("1", "Annuel")], string="Période"
     )
-    date = fields.Date("Date")
-    montant = fields.Float("Montant")
+    date = fields.Date()
+    montant = fields.Float()
diff --git a/security/lefilament_dashboard_security.xml b/security/lefilament_dashboard_security.xml
index a305afe1d7980039e827ecd1adc09e8e0943ae60..db09e29044d8658bc83b529cee4f10f77cc579be 100644
--- a/security/lefilament_dashboard_security.xml
+++ b/security/lefilament_dashboard_security.xml
@@ -1,15 +1,11 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <odoo>
-  <data noupdate="0">
-
     <!-- Définition des groupes utilisateurs -->
-        <record id="group_dashboard" model="res.groups">
-            <field name="name">Voir les tableaux de bord</field>
-            <field name="category_id" ref="base.module_category_dashboard" />
-            <field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
-        </record>
-
-  </data>
+    <record id="group_dashboard" model="res.groups">
+        <field name="name">Voir les tableaux de bord</field>
+        <field name="category_id" ref="base.module_category_dashboard" />
+        <field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
+    </record>
 </odoo>
diff --git a/static/src/js/dashboard_year.js b/static/src/js/dashboard_year.js
index 82b69e7c48d5a9086dbf7e1a1dc9c50cc57817fb..cff4ec012d9d5dd7ad784808216fb38c4201a01b 100644
--- a/static/src/js/dashboard_year.js
+++ b/static/src/js/dashboard_year.js
@@ -1,4 +1,4 @@
-// © 2019 Le Filament (<http://www.le-filament.com>)
+// Copyright 2019-2022 Le Filament (<https://le-filament.com>)
 // License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 odoo.define("lefilament_tdb.dashboard_year", function (require) {
@@ -52,30 +52,6 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
             this.values = {};
             this.progess = 0;
 
-            this._rpc({
-                model: "ir.model.data",
-                method: "xmlid_to_res_id",
-                args: ["account.view_invoice_form"],
-            }).then(function (results) {
-                self.invoice_view_id = results;
-            });
-
-            this._rpc({
-                model: "ir.model.data",
-                method: "xmlid_to_res_id",
-                args: ["lefilament_tdb.view_invoice_tree"],
-            }).then(function (results) {
-                self.invoice_tree_id = results;
-            });
-
-            this._rpc({
-                model: "ir.model.data",
-                method: "xmlid_to_res_id",
-                args: ["crm.crm_case_form_view_oppor"],
-            }).then(function (results) {
-                self.pipe_view_id = results;
-            });
-
             this._rpc({
                 model: "lefilament.dashboard",
                 method: "retrieve_datas_dashboard",
@@ -209,7 +185,7 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                     titleFontColor: "#999",
                     bodyFontColor: "#777",
                     callbacks: {
-                        label: function (tooltipItems, data) {
+                        label: function (tooltipItems) {
                             return (
                                 (
                                     (tooltipItems.xLabel * yeartarget) /
@@ -277,10 +253,10 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                 res_model: "account.move",
                 view_mode: "tree,pivot,graph,form",
                 views: [
-                    [self.invoice_tree_id, "list"],
+                    [false, "list"],
                     [false, "pivot"],
                     [false, "graph"],
-                    [self.invoice_view_id, "form"],
+                    [false, "form"],
                 ],
                 domain: [
                     ["move_type", "in", ["out_invoice", "out_refund"]],
@@ -321,7 +297,7 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                 views: [
                     [false, "kanban"],
                     [false, "list"],
-                    [this.pipe_view_id, "form"],
+                    [false, "form"],
                 ],
                 domain: [
                     "|",
@@ -346,7 +322,7 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                 views: [
                     [false, "kanban"],
                     [false, "list"],
-                    [this.pipe_view_id, "form"],
+                    [false, "form"],
                 ],
                 domain: [
                     ["type", "=", "opportunity"],
@@ -368,10 +344,10 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                 res_model: "account.move",
                 view_mode: "tree,pivot,graph,form",
                 views: [
-                    [self.invoice_tree_id, "list"],
+                    [false, "list"],
                     [false, "pivot"],
                     [false, "graph"],
-                    [self.invoice_view_id, "form"],
+                    [false, "form"],
                 ],
                 domain: [
                     ["state", "=", "posted"],
@@ -394,7 +370,7 @@ odoo.define("lefilament_tdb.dashboard_year", function (require) {
                 res_model: "account.move",
                 view_mode: "tree,form",
                 views: [
-                    [self.invoice_tree_id, "list"],
+                    [false, "list"],
                     [false, "form"],
                 ],
                 domain: [
diff --git a/static/src/js/previ_tresorerie.js b/static/src/js/previ_tresorerie.js
index 3cd0838d53f220adbae8f0ecb328a71ef6ddc7fd..7d13dbb1eb86e9ffd9d44789c858d52513fbd7da 100644
--- a/static/src/js/previ_tresorerie.js
+++ b/static/src/js/previ_tresorerie.js
@@ -1,4 +1,4 @@
-// © 2017 Le Filament (<http://www.le-filament.com>)
+// Copyright 2017-2022 Le Filament (<https://le-filament.com>)
 // License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 odoo.define("lefilament_tdb.previ_tresorerie", function (require) {
@@ -140,20 +140,17 @@ odoo.define("lefilament_tdb.previ_tresorerie", function (require) {
                     charges_fixes.push(null);
                 } else if (k === 5) {
                     charges_fixes.push(treso_r[5].treso);
-                } else {
-                    // Trimestres
-                    if (this.values.charges_periode.length > 0) {
-                        if (["01", "04", "07", "10"].indexOf(data_months[k]) >= 0) {
-                            charges_fixes.push(
-                                this.values.charges_periode[0].sum +
-                                    this.values.charges_periode[1].sum
-                            );
-                        } else {
-                            charges_fixes.push(this.values.charges_periode[1].sum);
-                        }
+                } else if (this.values.charges_periode.length > 0) {
+                    if (["01", "04", "07", "10"].indexOf(data_months[k]) >= 0) {
+                        charges_fixes.push(
+                            this.values.charges_periode[0].sum +
+                                this.values.charges_periode[1].sum
+                        );
                     } else {
-                        charges_fixes.push(null);
+                        charges_fixes.push(this.values.charges_periode[1].sum);
                     }
+                } else {
+                    charges_fixes.push(null);
                 }
             }
 
diff --git a/static/src/js/tresorerie.js b/static/src/js/tresorerie.js
index a1f6d7837d5e6b0c0c1c9be7622dfebe836a233b..86aa054f8c7dfaa8a662358eb48a45dc451db33b 100644
--- a/static/src/js/tresorerie.js
+++ b/static/src/js/tresorerie.js
@@ -1,4 +1,4 @@
-// © 2019 Le Filament (<http://www.le-filament.com>)
+// Copyright 2019-2022 Le Filament (<https://le-filament.com>)
 // License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 odoo.define("lefilament_tdb.tresorerie", function (require) {
diff --git a/static/src/xml/lefilament_tdb.xml b/static/src/xml/lefilament_tdb.xml
index 5c8c32ef56f181b8b065f3ecaf341fb4d4bf5458..c7680cae9b928bff76ba21b3ebcc200475912297 100644
--- a/static/src/xml/lefilament_tdb.xml
+++ b/static/src/xml/lefilament_tdb.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <templates xml:space="preserve">
 
@@ -247,7 +247,7 @@
                 <p class="card-number">
                     <a id="statement_lines">
                         <t
-                                            t-raw="widget.render_monetary_color(widget.values.variation)"
+                                            t-esc="widget.render_monetary_color(widget.values.variation)"
                                         />
                     </a>
                 </p>
diff --git a/static/src/xml/lefilament_treso.xml b/static/src/xml/lefilament_treso.xml
index bb04b7787310d5628e0e7be7498a9f4b5717a357..cca491c23b7411288a41fba9f9b0c76868090679 100644
--- a/static/src/xml/lefilament_treso.xml
+++ b/static/src/xml/lefilament_treso.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <templates xml:space="preserve">
 
diff --git a/views/assets.xml b/views/assets.xml
deleted file mode 100644
index aa3657ebb6a71a1bd0a00c3b9364466bcd754bbb..0000000000000000000000000000000000000000
--- a/views/assets.xml
+++ /dev/null
@@ -1,32 +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>
-    <data>
-
-        <template id="lefilament_tdb_assets_backend" inherit_id="web.assets_backend">
-            <xpath expr="." position="inside">
-
-                <link
-                    href="/lefilament_tdb/static/src/css/lefilament_tdb.css"
-                    rel="stylesheet"
-                />
-
-                <script
-                    type="text/javascript"
-                    src="/lefilament_tdb/static/src/js/dashboard_year.js"
-                />
-                <script
-                    type="text/javascript"
-                    src="/lefilament_tdb/static/src/js/tresorerie.js"
-                />
-                <script
-                    type="text/javascript"
-                    src="/lefilament_tdb/static/src/js/previ_tresorerie.js"
-                />
-
-            </xpath>
-        </template>
-
-    </data>
-</odoo>
diff --git a/views/schedule.xml b/views/schedule.xml
index 08af0799a9e444c6c902d70d640ce2802746caaf..17facbc1ff10ead2e6c0f777a34713016a7ab6e9 100644
--- a/views/schedule.xml
+++ b/views/schedule.xml
@@ -1,21 +1,19 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
-<odoo>
-    <data noupdate="1">
-        <record id="ir_cron_lefilament_tdb" model="ir.cron">
-            <field name="name">Tableau de Bord - Le Filament</field>
-            <field name="active" eval="True" />
-            <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="doall" eval="True" />
-            <field name="nextcall">2017-01-31 23:10:00</field>
-            <field name="model_id" ref="model_lefilament_dashboard" />
-            <field name="code">model._new_data()</field>
-            <field name="state">code</field>
-            <field name="priority" eval="5" />
-        </record>
-    </data>
+<odoo noupdate="1">
+    <record id="ir_cron_lefilament_tdb" model="ir.cron">
+        <field name="name">Tableau de Bord - Le Filament</field>
+        <field name="active" eval="True" />
+        <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="doall" eval="True" />
+        <field name="nextcall">2017-01-31 23:10:00</field>
+        <field name="model_id" ref="model_lefilament_dashboard" />
+        <field name="code">model._new_data()</field>
+        <field name="state">code</field>
+        <field name="priority" eval="5" />
+    </record>
 </odoo>
diff --git a/views/views.xml b/views/views.xml
index 1be129bc7e73edf22826bf5aebfa81055ebb5283..64dc9418374d3afbbdb459fabac65f193546d32c 100644
--- a/views/views.xml
+++ b/views/views.xml
@@ -1,340 +1,332 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<!-- Copyright 2017 Le Filament (<https://www.le-filament.com>)
+<!-- Copyright 2017-2022 Le Filament (<https://le-filament.com>)
      License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
 <odoo>
-    <data>
+    <record id="lefilament_dashboard_action" model="ir.actions.act_window">
+        <field name="name">Dashboard - Le Filament</field>
+        <field name="res_model">lefilament.dashboard</field>
+        <field name="view_mode">tree,graph,form,pivot</field>
+    </record>
 
-        <record id="lefilament_dashboard_action" model="ir.actions.act_window">
-            <field name="name">Dashboard - Le Filament</field>
-            <field name="res_model">lefilament.dashboard</field>
-            <field name="view_mode">tree,graph,form,pivot</field>
-        </record>
 
+    <record id="lefilament_dashboard_variables_action" model="ir.actions.act_window">
+        <field name="name">Variables Dashboard Le Filament</field>
+        <field name="res_model">res.company</field>
+        <field name="res_id">1</field>
+        <field name="view_mode">form</field>
+    </record>
 
-        <record
-            id="lefilament_dashboard_variables_action"
-            model="ir.actions.act_window"
-        >
-            <field name="name">Variables Dashboard Le Filament</field>
-            <field name="res_model">res.company</field>
-            <field name="res_id">1</field>
-            <field name="view_mode">form</field>
-        </record>
+    <record id="action_year_page" model="ir.actions.client">
+        <field name="name">Rapport Annuel</field>
+        <field name="tag">lefilament_tdb.dashboard_year</field>
+        <field name="binding_model_id" ref="model_lefilament_dashboard" />
+        <field name="binding_type">action</field>
+    </record>
 
-        <record id="action_year_page" model="ir.actions.client">
-            <field name="name">Rapport Annuel</field>
-            <field name="tag">lefilament_tdb.dashboard_year</field>
-            <field name="binding_model_id" ref="model_lefilament_dashboard" />
-            <field name="binding_type">action</field>
-        </record>
+    <record id="action_tresorerie" model="ir.actions.client">
+        <field name="name">Trésorerie</field>
+        <field name="tag">lefilament_tdb.tresorerie</field>
+        <field name="target">current</field>
+        <field name="binding_model_id" ref="model_lefilament_dashboard" />
+        <field name="binding_type">action</field>
+    </record>
 
-        <record id="action_tresorerie" model="ir.actions.client">
-            <field name="name">Trésorerie</field>
-            <field name="tag">lefilament_tdb.tresorerie</field>
-            <field name="target">current</field>
-            <field name="binding_model_id" ref="model_lefilament_dashboard" />
-            <field name="binding_type">action</field>
-        </record>
+    <record id="action_previ_tresorerie" model="ir.actions.client">
+        <field name="name">Prévisionnel Trésorerie</field>
+        <field name="tag">lefilament_tdb.previ_tresorerie</field>
+        <field name="target">current</field>
+        <field name="binding_model_id" ref="model_lefilament_dashboard" />
+        <field name="binding_type">action</field>
+    </record>
 
-        <record id="action_previ_tresorerie" model="ir.actions.client">
-            <field name="name">Prévisionnel Trésorerie</field>
-            <field name="tag">lefilament_tdb.previ_tresorerie</field>
-            <field name="target">current</field>
-            <field name="binding_model_id" ref="model_lefilament_dashboard" />
-            <field name="binding_type">action</field>
-        </record>
+    <menuitem
+        id="lefilament_dashboard_menu"
+        name="Dashboard"
+        sequence="10"
+        groups="group_dashboard"
+        web_icon="lefilament_tdb,static/description/icon_menu.png"
+    />
 
-        <menuitem
-            id="lefilament_dashboard_menu"
-            name="Dashboard"
-            sequence="10"
-            groups="group_dashboard"
-            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"
-            parent="lefilament_dashboard_menu"
-            name="Rapports"
-            sequence="1"
-        />
+    <menuitem
+        id="lefilament_dashboard_report_year"
+        parent="lefilament_dashboard_report"
+        name="Annuel"
+        sequence="1"
+        action="action_year_page"
+    />
+    <menuitem
+        id="lefilament_tresorerie"
+        parent="lefilament_dashboard_report"
+        name="Tréso"
+        sequence="3"
+        action="action_tresorerie"
+    />
+    <menuitem
+        id="lefilament_previ_tresorerie"
+        parent="lefilament_dashboard_report"
+        name="Prévi Tréso"
+        sequence="3"
+        action="action_previ_tresorerie"
+    />
 
-        <menuitem
-            id="lefilament_dashboard_report_year"
-            parent="lefilament_dashboard_report"
-            name="Annuel"
-            sequence="1"
-            action="action_year_page"
-        />
-        <menuitem
-            id="lefilament_tresorerie"
-            parent="lefilament_dashboard_report"
-            name="Tréso"
-            sequence="3"
-            action="action_tresorerie"
-        />
-        <menuitem
-            id="lefilament_previ_tresorerie"
-            parent="lefilament_dashboard_report"
-            name="Prévi Tréso"
-            sequence="3"
-            action="action_previ_tresorerie"
-        />
+    <menuitem
+        id="lefilament_dashboard_conf"
+        parent="lefilament_dashboard_menu"
+        name="Configuration"
+        sequence="10"
+    />
+    <menuitem
+        id="lefilament_dashboard_datas"
+        parent="lefilament_dashboard_conf"
+        name="Données"
+        action="lefilament_dashboard_action"
+        sequence="10"
+    />
+    <menuitem
+        id="lefilament_dashboard_variables"
+        parent="lefilament_dashboard_conf"
+        name="Variables"
+        action="lefilament_dashboard_variables_action"
+        sequence="10"
+    />
 
-        <menuitem
-            id="lefilament_dashboard_conf"
-            parent="lefilament_dashboard_menu"
-            name="Configuration"
-            sequence="10"
-        />
-        <menuitem
-            id="lefilament_dashboard_datas"
-            parent="lefilament_dashboard_conf"
-            name="Données"
-            action="lefilament_dashboard_action"
-            sequence="10"
-        />
-        <menuitem
-            id="lefilament_dashboard_variables"
-            parent="lefilament_dashboard_conf"
-            name="Variables"
-            action="lefilament_dashboard_variables_action"
-            sequence="10"
-        />
-
-        <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 string="Invoices">
-                    <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>
+    <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>
 
 
-        <record id="lefilament_dashboard_tree" model="ir.ui.view">
-            <field name="name">Le Filament Dashboard Treeview</field>
-            <field name="model">lefilament.dashboard</field>
-            <field name="arch" type="xml">
-                <tree string="Liste des Mois">
-                    <field name="date_tdb" widget="date" />
-                    <field name="name" />
-                    <field name="ca_mois" sum="Chiffre d'Affaire" />
-                    <field name="pipe_mois" avg="pipe" />
-                    <field name="treso" avg="Treso" />
-                    <field name="variation" avg="Variation" />
-                    <field name="charges" avg="Décaissé" />
-                    <field name="encaisse" avg="Encaissé" />
-                    <field name="charges_fixes" />
-                    <field name="runway" />
-                </tree>
-            </field>
-        </record>
+    <record id="lefilament_dashboard_tree" model="ir.ui.view">
+        <field name="name">Le Filament Dashboard Treeview</field>
+        <field name="model">lefilament.dashboard</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="date_tdb" widget="date" />
+                <field name="name" />
+                <field name="ca_mois" sum="Chiffre d'Affaire" />
+                <field name="pipe_mois" avg="pipe" />
+                <field name="treso" avg="Treso" />
+                <field name="variation" avg="Variation" />
+                <field name="charges" avg="Décaissé" />
+                <field name="encaisse" avg="Encaissé" />
+                <field name="charges_fixes" />
+                <field name="runway" />
+            </tree>
+        </field>
+    </record>
 
-        <record model="ir.ui.view" id="lefilament_dashboard_pivot">
-            <field name="name">Le Filament Dashboard Pivot</field>
-            <field name="model">lefilament.dashboard</field>
-            <field name="type">pivot</field>
-            <field name="arch" type="xml">
-                 <graph string="TDB Le Filament">
-                      <field name="ca_mois" type="measure" />
-                      <field name="pipe_mois" type="measure" />
-                      <field name="date_tdb" type="row" />
-                </graph>
-            </field>
-        </record>
+    <record model="ir.ui.view" id="lefilament_dashboard_pivot">
+        <field name="name">Le Filament Dashboard Pivot</field>
+        <field name="model">lefilament.dashboard</field>
+        <field name="type">pivot</field>
+        <field name="arch" type="xml">
+             <graph string="TDB Le Filament">
+                  <field name="ca_mois" type="measure" />
+                  <field name="pipe_mois" type="measure" />
+                  <field name="date_tdb" type="row" />
+            </graph>
+        </field>
+    </record>
 
-        <record model="ir.ui.view" id="lefilament_dashboard_graph">
-           <field name="name">Le Filament Dashboard Graph</field>
-            <field name="model">lefilament.dashboard</field>
-           <field name="type">graph</field>
-           <field name="arch" type="xml">
-                 <graph string="TDB Le Filament">
-                      <field name="ca_mois" type="measure" />
-                      <field name="date_tdb" type="col" />
-                </graph>
-            </field>
-        </record>
+    <record model="ir.ui.view" id="lefilament_dashboard_graph">
+       <field name="name">Le Filament Dashboard Graph</field>
+        <field name="model">lefilament.dashboard</field>
+       <field name="type">graph</field>
+       <field name="arch" type="xml">
+             <graph string="TDB Le Filament">
+                  <field name="ca_mois" type="measure" />
+                  <field name="date_tdb" type="col" />
+            </graph>
+        </field>
+    </record>
 
-        <record id="lefilament_dashboard_form" model="ir.ui.view">
-            <field name="name">Le Filament Dashboard Formview</field>
-            <field name="model">lefilament.dashboard</field>
-            <field name="arch" type="xml">
-                <form string="Liste des Mois">
-                    <header>
-                        <button
-                            string="MaJ Valeurs"
-                            type="object"
-                            name="get_month_values"
-                            class="oe_highlight"
-                        />
-                    </header>
-                    <div class="container">
-                        <div class="col-xs-12 tdb_form">
-                            <h3>Mois</h3>
-                            <hr />
-                            <group>
-                                <field name="date_tdb" widget="date" />
-                                <field name="name" />
-                            </group>
-                        </div>
-                        <div class="col-xs-6 tdb_form">
-                            <h3>Chiffres</h3>
-                            <hr />
-                            <group>
-                                <field name="ca_mois" widget="monetary" />
-                                <field name="cmd_mois" widget="monetary" />
-                                <field name="pipe_mois" widget="monetary" />
-                            </group>
-                        </div>
-                        <div class="col-xs-6 tdb_form">
-                            <h3>Trésorerie</h3>
-                            <hr />
-                            <group>
-                                <field name="treso" widget="monetary" />
-                                <field name="variation" widget="monetary" />
-                                <field name="charges" widget="monetary" />
-                                <field name="encaisse" widget="monetary" />
-                                <field name="charges_fixes" widget="monetary" />
-                                <field name="runway" widget="monetary" />
-                            </group>
-                        </div>
+    <record id="lefilament_dashboard_form" model="ir.ui.view">
+        <field name="name">Le Filament Dashboard Formview</field>
+        <field name="model">lefilament.dashboard</field>
+        <field name="arch" type="xml">
+            <form string="Liste des Mois">
+                <header>
+                    <button
+                        string="MaJ Valeurs"
+                        type="object"
+                        name="get_month_values"
+                        class="oe_highlight"
+                    />
+                </header>
+                <div class="container">
+                    <div class="col-xs-12 tdb_form">
+                        <h3>Mois</h3>
+                        <hr />
+                        <group>
+                            <field name="date_tdb" widget="date" />
+                            <field name="name" />
+                        </group>
+                    </div>
+                    <div class="col-xs-6 tdb_form">
+                        <h3>Chiffres</h3>
+                        <hr />
+                        <group>
+                            <field name="ca_mois" widget="monetary" />
+                            <field name="cmd_mois" widget="monetary" />
+                            <field name="pipe_mois" widget="monetary" />
+                        </group>
                     </div>
-                </form>
-            </field>
-        </record>
+                    <div class="col-xs-6 tdb_form">
+                        <h3>Trésorerie</h3>
+                        <hr />
+                        <group>
+                            <field name="treso" widget="monetary" />
+                            <field name="variation" widget="monetary" />
+                            <field name="charges" widget="monetary" />
+                            <field name="encaisse" widget="monetary" />
+                            <field name="charges_fixes" widget="monetary" />
+                            <field name="runway" widget="monetary" />
+                        </group>
+                    </div>
+                </div>
+            </form>
+        </field>
+    </record>
 
-        <!-- FILTRES  -->
-        <record id="lefilament_dashboard_search" model="ir.ui.view">
-            <field name="name">Le Filament Dashboard Searchview</field>
-            <field name="model">lefilament.dashboard</field>
-            <field name="arch" type="xml">
-                <search>
-                    <field name="name" />
+    <!-- FILTRES  -->
+    <record id="lefilament_dashboard_search" model="ir.ui.view">
+        <field name="name">Le Filament Dashboard Searchview</field>
+        <field name="model">lefilament.dashboard</field>
+        <field name="arch" type="xml">
+            <search>
+                <field name="name" />
+                <filter
+                    string="Cette année"
+                    name="this_year"
+                    domain="[ ('date_tdb', '&gt;=', (context_today()-relativedelta(years=0)).strftime('%Y-01-01')),]"
+                />
+                <filter
+                    string="L'année dernière"
+                    name="last_year"
+                    domain="[ ('date_tdb', '&gt;=', (context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('date_tdb', '&lt;=', (context_today()-relativedelta(years=1)).strftime('%Y-12-31'))]"
+                />
+
+                <group expand="0" name="group_by" string="Group By">
                     <filter
-                        string="Cette année"
-                        name="this_year"
-                        domain="[ ('date_tdb', '&gt;=', (context_today()-relativedelta(years=0)).strftime('%Y-01-01')),]"
+                        string="Trimestre"
+                        name="trimestre"
+                        context="{'group_by':'date_tdb:quarter'}"
+                        domain="[]"
                     />
                     <filter
-                        string="L'année dernière"
-                        name="last_year"
-                        domain="[ ('date_tdb', '&gt;=', (context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('date_tdb', '&lt;=', (context_today()-relativedelta(years=1)).strftime('%Y-12-31'))]"
+                        string="An"
+                        name="an"
+                        context="{'group_by':'date_tdb:year'}"
+                        domain="[]"
                     />
+                </group>
+            </search>
+        </field>
+    </record>
 
-                    <group expand="0" name="group_by" string="Group By">
-                        <filter
-                            string="Trimestre"
-                            name="trimestre"
-                            context="{'group_by':'date_tdb:quarter'}"
-                            domain="[]"
-                        />
-                        <filter
-                            string="An"
-                            name="an"
-                            context="{'group_by':'date_tdb:year'}"
-                            domain="[]"
-                        />
-                    </group>
-                </search>
-            </field>
-        </record>
-
-        <!-- Company Form -->
-        <record id="view_form_lefilament_company_form_inherited" model="ir.ui.view">
-            <field name="name">res.company.form.tdb</field>
-            <field name="model">res.company</field>
-            <field name="inherit_id" ref="base.view_company_form" />
-            <field name="arch" type="xml">
-                <xpath expr="//page[1]" position="after">
-                    <page name="tdb" string="Tableau de Bord">
-                        <group>
-                            <group string="Données Annuelles">
-                                <field name="ca_target" />
-                            </group>
-                            <group string="Données Mensuelles">
-                                <field name="charges_fixes" />
-                            </group>
+    <!-- Company Form -->
+    <record id="view_form_lefilament_company_form_inherited" model="ir.ui.view">
+        <field name="name">res.company.form.tdb</field>
+        <field name="model">res.company</field>
+        <field name="inherit_id" ref="base.view_company_form" />
+        <field name="arch" type="xml">
+            <xpath expr="//page[1]" position="after">
+                <page name="tdb" string="Tableau de Bord">
+                    <group>
+                        <group string="Données Annuelles">
+                            <field name="ca_target" />
                         </group>
-                    </page>
-                    <page name="tdb" string="Prévisonnel">
-                        <field name="previ_treso_ids" />
-                    </page>
-                </xpath>
-            </field>
-        </record>
-
-        <!-- Company Form -->
-        <record id="view_form_lefilament_emplyee_form_inherited" model="ir.ui.view">
-            <field name="name">hr.employee.form.tdb</field>
-            <field name="model">hr.employee</field>
-            <field name="inherit_id" ref="hr.view_employee_form" />
-            <field name="arch" type="xml">
-                <xpath expr="//field[@name='work_phone']" position="after">
-                        <field name="capital" />
-                </xpath>
-            </field>
-        </record>
-
-        <!-- Prévi Tréso -->
-        <record id="view_tree_lefilament_previ_treso" model="ir.ui.view">
-            <field name="name">previ.treso</field>
-            <field name="model">previ.treso</field>
-            <field name="arch" type="xml">
-                <tree string="Prévisionnel Tréso" editable="top">
-                    <field name="name" />
-                    <field name="periode" />
-                    <field name="date" />
-                    <field name="montant" sum="Total" />
-                </tree>
-            </field>
-        </record>
+                        <group string="Données Mensuelles">
+                            <field name="charges_fixes" />
+                        </group>
+                    </group>
+                </page>
+                <page name="tdb" string="Prévisonnel">
+                    <field name="previ_treso_ids" />
+                </page>
+            </xpath>
+        </field>
+    </record>
 
+    <!-- Company Form -->
+    <record id="view_form_lefilament_emplyee_form_inherited" model="ir.ui.view">
+        <field name="name">hr.employee.form.tdb</field>
+        <field name="model">hr.employee</field>
+        <field name="inherit_id" ref="hr.view_employee_form" />
+        <field name="arch" type="xml">
+            <xpath expr="//field[@name='work_phone']" position="after">
+                    <field name="capital" />
+            </xpath>
+        </field>
+    </record>
 
-    </data>
+    <!-- Prévi Tréso -->
+    <record id="view_tree_lefilament_previ_treso" model="ir.ui.view">
+        <field name="name">previ.treso</field>
+        <field name="model">previ.treso</field>
+        <field name="arch" type="xml">
+            <tree editable="top">
+                <field name="name" />
+                <field name="periode" />
+                <field name="date" />
+                <field name="montant" sum="Total" />
+            </tree>
+        </field>
+    </record>
 </odoo>