diff --git a/models/acc_enedis_cdc.py b/models/acc_enedis_cdc.py
index da0aa8092f22c73554ca112c3324c6f19c33817f..de8979ab0db8ac2f2b10299b856c45a1ef226df0 100644
--- a/models/acc_enedis_cdc.py
+++ b/models/acc_enedis_cdc.py
@@ -3,13 +3,15 @@
 from datetime import datetime
 
 from dateutil.relativedelta import relativedelta
-from ..tools.export_cdc import get_divider_from_row
+
 from odoo import _, api, models
 from odoo.exceptions import ValidationError
 from odoo.osv import expression
 
 from odoo.addons.api_connector.tools.date_utils import local_to_utc
 
+from ..tools.export_cdc import get_divider_from_row
+
 
 class AccEnedisCdc(models.Model):
     _inherit = "acc.enedis.cdc"
@@ -358,6 +360,7 @@ class AccEnedisCdc(models.Model):
         slot_type,
         start_date,
         end_date,
+        display_hourly_curves,
         prm_id=None,
         partner_id=None,
     ):
@@ -370,6 +373,7 @@ class AccEnedisCdc(models.Model):
                     "year")
                 datetime start_date: date début
                 datetime end_date: date de fin
+                bool display_hourly_curves: si step différent de day alors on calcule le total sinon il est calculé dans _get_cdc_by_query_daily_histo_cons()
                 int prm_id : PRM de soutirage à récupérer
                 int partner_id: contact associé à la courbe
         @returns: resultat de la requête
@@ -385,18 +389,25 @@ class AccEnedisCdc(models.Model):
             operation_id, slot_type, start_date, end_date, prm_id, partner_id
         )
 
+        if not display_hourly_curves:
+            total_autocons = 0
+            total_allocons = 0
+
         for row in raw_data:
             # use KW here, divider depend of the timestep
             # only use 30 or 15 minutes, by default its 30 minutes
 
             divider = get_divider_from_row(row)
             label.append(row[0])
-            data_cons.append({"x": row[0], "y": row[1] / divider})
-            data_autocons.append({"x": row[0], "y": row[2] / divider})
+            data_cons.append({"x": row[0], "y": round(row[1] / divider, 2)})
+            data_autocons.append({"x": row[0], "y": round(row[2] / divider, 2)})
             data_allocons.append(
-                {"x": row[0], "y": (row[1] - row[2]) / divider}
+                {"x": row[0], "y": round((row[1] - row[2]) / divider, 2)}
             )
-            data_prod.append({"x": row[0], "y": row[3] / divider})
+            data_prod.append({"x": row[0], "y": round(row[3] / divider, 2)})
+            if not display_hourly_curves:
+                total_autocons += row[2] / divider
+                total_allocons += (row[1] - row[2]) / divider
 
         cdc_cons = {
             "label": label,
@@ -405,6 +416,11 @@ class AccEnedisCdc(models.Model):
             "cons": data_cons,
             "prod": data_prod,
         }
+
+        if not display_hourly_curves:
+            cdc_cons["total_autocons"] = round(total_autocons, 2)
+            cdc_cons["total_allocons"] = round(total_allocons, 2)
+
         return cdc_cons
 
     @api.model
@@ -444,19 +460,26 @@ class AccEnedisCdc(models.Model):
             + self._group_clause(date_slot="day")
             + self._order_clause()
         )
-
         self.env.cr.execute(query)
         raw_data = self.env.cr.fetchall()
+
+        total_autocons = 0
+        total_allocons = 0
+
         for row in raw_data:
             divider = get_divider_from_row(row)
-            data_autocons_histo.append(row[1]/divider)
-            data_allocons_histo.append(row[2]/divider)
+            data_autocons_histo.append(round(row[1] / divider, 2))
+            data_allocons_histo.append(round(row[2] / divider, 2))
             label_histo.append(row[0])
+            total_autocons += row[1] / divider
+            total_allocons += row[2] / divider
 
         cdc_cons = {
             "autocons_histo": data_autocons_histo,
             "allocons_histo": data_allocons_histo,
             "label_histo": label_histo,
+            "total_autocons": round(total_autocons, 2),
+            "total_allocons": round(total_allocons, 2),
         }
         return cdc_cons
 
@@ -511,6 +534,7 @@ class AccEnedisCdc(models.Model):
         slot_type,
         start_date,
         end_date,
+        display_hourly_curves,
         prm_id=None,
         partner_id=None,
     ):
@@ -522,6 +546,7 @@ class AccEnedisCdc(models.Model):
                   "year")
                 datetime start_date: date début
                 datetime end_date: date de fin
+                bool display_hourly_curves: si step différent de day alors on calcule le total sinon il est calculé dans _get_cdc_by_query_daily_histo_prod()
                 int prm_id : PRM d'injection à récupérer
                 int partner_id: contact associé à la courbe
         :return: un dictionnaire de données
@@ -535,17 +560,27 @@ class AccEnedisCdc(models.Model):
             operation_id, slot_type, start_date, end_date, prm_id, partner_id
         )
 
+        if not display_hourly_curves:
+            total_autocons_prod = 0
+            total_surplus = 0
+
         for row in raw_data:
             divider = get_divider_from_row(row)
             label.append(row[0])
-            data_autocons.append({"x": row[0], "y": round(row[1]/divider, 2)})
-            data_surplus.append({"x": row[0], "y": round(row[2]/divider, 2)})
+            data_autocons.append({"x": row[0], "y": round(row[1] / divider, 2)})
+            data_surplus.append({"x": row[0], "y": round(row[2] / divider, 2)})
+            if not display_hourly_curves:
+                total_autocons_prod += row[1] / divider
+                total_surplus += row[2] / divider
 
         cdc_prod = {
             "label": label,
             "autocons_prod": data_autocons,
             "surplus": data_surplus,
         }
+        if not display_hourly_curves:
+            cdc_prod["total_autocons_prod"] = round(total_autocons_prod, 2)
+            cdc_prod["total_surplus"] = round(total_surplus, 2)
         return cdc_prod
 
     @api.model
@@ -582,16 +617,24 @@ class AccEnedisCdc(models.Model):
         )
         self.env.cr.execute(query)
         raw_data = self.env.cr.fetchall()
+
+        total_autocons_prod = 0
+        total_surplus = 0
+
         for row in raw_data:
             divider = get_divider_from_row(row)
             label_histo.append(row[0])
-            data_autocons_prod_histo.append(round(row[1]/divider, 2))
-            data_surplus_histo.append(round(row[2]/divider, 2))
+            data_autocons_prod_histo.append(round(row[1] / divider, 2))
+            data_surplus_histo.append(round(row[2] / divider, 2))
+            total_autocons_prod += row[1] / divider
+            total_surplus += row[2] / divider
 
         cdc_jour = {
             "label_histo": label_histo,
             "autocons_prod_histo": data_autocons_prod_histo,
             "surplus_histo": data_surplus_histo,
+            "total_autocons_prod": round(total_autocons_prod, 2),
+            "total_surplus": round(total_surplus, 2),
         }
         return cdc_jour
 
diff --git a/models/acc_operation.py b/models/acc_operation.py
index 56027620cd9546b678fb48aa1e3fd684579ed171..0ac57cbc19cd3cd9cc0963e4be9a5f662c79a5b0 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -89,7 +89,13 @@ class AccOperation(models.Model):
         chart_data = {}
         if data_type == "cons" or data_type == "pmo":
             chart_data_cons = Cdc_model._get_cdc_by_query_cons(
-                self.id, step_curve, start_date, end_date, prm_id, partner_id
+                self.id,
+                step_curve,
+                start_date,
+                end_date,
+                display_hourly_curves,
+                prm_id,
+                partner_id,
             )
             if display_hourly_curves:
                 chart_data_histo = Cdc_model._get_cdc_by_query_daily_histo_cons(
@@ -99,7 +105,13 @@ class AccOperation(models.Model):
             chart_data.update(chart_data_cons)
         if data_type == "prod" or data_type == "pmo":
             chart_data_prod = Cdc_model._get_cdc_by_query_prod(
-                self.id, step_curve, start_date, end_date, prm_id, partner_id
+                self.id,
+                step_curve,
+                start_date,
+                end_date,
+                display_hourly_curves,
+                prm_id,
+                partner_id,
             )
             if display_hourly_curves:
                 chart_data_histo = Cdc_model._get_cdc_by_query_daily_histo_prod(
diff --git a/static/src/js/operation_chart.js b/static/src/js/operation_chart.js
index 5b5eeac10de66979cb00efe6b449fd84d89b2a3c..c7e3b5081c07543b0212d7e1d44df27e3833867b 100644
--- a/static/src/js/operation_chart.js
+++ b/static/src/js/operation_chart.js
@@ -346,36 +346,11 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
         _getPieChartData: function (typeData) {
             var data = {};
             var res = [];
-            var sum_res1 = 0;
-            var sum_res2 = 0;
             if (typeData === "cons") {
-                this.chartData.autocons.forEach((item) => {
-                    if ("y" in item) {
-                        sum_res1 += item.y;
-                    } else {
-                        sum_res1 += item;
-                    }
-                });
-                this.chartData.allocons.forEach((item) => {
-                    if ("y" in item) {
-                        sum_res2 += item.y;
-                    } else {
-                        sum_res2 += item;
-                    }
-                });
-                /*
-                    autocons, allocons, cons, prod
-                        - sert à construire bar et pie
-                            - sur 2  mois on a 2 éléments donc regroupé par mois
-                        - sert à construire la courbe
-                            - par 7 jours on a regroupé par heure 7x24
-                            - par mois on a regroupé par heure 30x24
-                    autocons_histo, allocons_histo
-                        - sert à construire bar et pie
-                            - par 7 jours, regroupé par jour
-                            - par mois, regroupé par jour
-                */
-                res = [Math.floor(sum_res1), Math.floor(sum_res2)];
+                res = [
+                    Math.round(this.chartData.total_autocons),
+                    Math.round(this.chartData.total_allocons),
+                ];
                 data = {
                     labels: ["AutoConso", "AlloConso"],
                     datasets: [
@@ -395,21 +370,10 @@ odoo.define("oacc_portal_overview_cdc.operation_chart", function (require) {
                     ],
                 };
             } else {
-                this.chartData.autocons_prod.forEach((item) => {
-                    if ("y" in item) {
-                        sum_res1 += item.y;
-                    } else {
-                        sum_res1 += item;
-                    }
-                });
-                this.chartData.surplus.forEach((item) => {
-                    if ("y" in item) {
-                        sum_res2 += item.y;
-                    } else {
-                        sum_res2 += item;
-                    }
-                });
-                res = [Math.floor(sum_res1), Math.floor(sum_res2)];
+                res = [
+                    Math.round(this.chartData.total_autocons_prod),
+                    Math.round(this.chartData.total_surplus),
+                ];
                 data = {
                     labels: ["AutoConso", "Surplus"],
                     datasets: [
diff --git a/tools/export_cdc.py b/tools/export_cdc.py
index b250261974d42971df0294298fb182476f11e313..37b07ba199d43490209c12404bdacc311bda0809 100644
--- a/tools/export_cdc.py
+++ b/tools/export_cdc.py
@@ -101,20 +101,20 @@ def make_cons_data(raw_data):
                     # horodatage
                     row[0].strftime("%d/%m/%Y %H:%M"),
                     # consommation en watt
-                    str(round((row[1] * 2000)/divider, rounding)),
+                    str(round((row[1] * 2000) / divider, rounding)),
                     # consommation en kwh
-                    str(round(row[1]/divider, rounding)),
+                    str(round(row[1] / divider, rounding)),
                     # allocons
-                    str(round(row[3]/divider, rounding)),
+                    str(round(row[3] / divider, rounding)),
                     # autocons
-                    str(round(row[2]/divider, rounding)),
+                    str(round(row[2] / divider, rounding)),
                 ]
             )
         )
 
-        sum_value["cons"] += round(row[1]/divider, rounding)
-        sum_value["allo_cons"] += round(row[3]/divider, rounding)
-        sum_value["auto_cons"] += round(row[2]/divider, rounding)
+        sum_value["cons"] += round(row[1] / divider, rounding)
+        sum_value["allo_cons"] += round(row[3] / divider, rounding)
+        sum_value["auto_cons"] += round(row[2] / divider, rounding)
 
     tot = ";".join(
         [
@@ -147,19 +147,19 @@ def make_prod_data(raw_data):
                     # horodatage
                     row[0].strftime("%d/%m/%Y %H:%M"),
                     # production en watt
-                    str(round((row[3] * 2000)/divider, rounding)),
+                    str(round((row[3] * 2000) / divider, rounding)),
                     # production en kwh
-                    str(round(row[3]/divider, rounding)),
+                    str(round(row[3] / divider, rounding)),
                     # surplus
-                    str(round(row[2]/divider, rounding)),
+                    str(round(row[2] / divider, rounding)),
                     # autocons
-                    str(round(row[1]/divider, rounding)),
+                    str(round(row[1] / divider, rounding)),
                 ]
             )
         )
-        sum_value["prod"] += round(row[3]/divider, rounding)
-        sum_value["surplus"] += round(row[2]/divider, rounding)
-        sum_value["auto_cons"] += round(row[1]/divider, rounding)
+        sum_value["prod"] += round(row[3] / divider, rounding)
+        sum_value["surplus"] += round(row[2] / divider, rounding)
+        sum_value["auto_cons"] += round(row[1] / divider, rounding)
 
     tot = ";".join(
         [