diff --git a/models/acc_operation.py b/models/acc_operation.py
index 699514f1735684fb34bfb74f8c522606c6b80da5..73619b563b13a25a4e168115c6483be684688477 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -1,9 +1,8 @@
 # Copyright 2023 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+import pytz
 from datetime import datetime, time
-
 from dateutil.relativedelta import relativedelta
-
 from odoo import _, models
 from odoo.exceptions import ValidationError, UserError
 from odoo.osv import expression
@@ -47,9 +46,10 @@ class AccOperation(models.Model):
         # Get last date slot recorded
         last_record = self.get_last_cdc_record()
         start_date, end_date = self.get_interval("month", last_record)
+        end_date_mounth = end_date + relativedelta(days=1)
         query = """
             SELECT
-                date_trunc('month', cdc.date_slot) AS date_slot,
+                date_trunc('month', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris') AS date_slot,
                 (SUM( (CASE
                     WHEN cdc.comp_data_type = 'cons' THEN cdc.power
                     ELSE 0 END) )/2) / 1000 as conso_tot,
@@ -66,13 +66,13 @@ class AccOperation(models.Model):
             WHERE
                 cdc.acc_operation_id = %s
                 AND cdc.date_slot >= %s
-                AND cdc.date_slot <= %s
-            GROUP BY date_trunc('month', cdc.date_slot);
+                AND cdc.date_slot < %s
+            GROUP BY date_trunc('month', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris');
         """
         query_params = (
             self.id,
-            start_date,
-            end_date,
+            self._convert_time(start_date),
+            self._convert_time(end_date_mounth),
         )
         self.env.cr.execute(query, query_params)
         raw_data = self.env.cr.fetchone()
@@ -159,7 +159,7 @@ class AccOperation(models.Model):
         step = "hour"
         step_display_curve = "hour"
         # Calculate delta between 2 dates
-        delta = (end_date - start_date).days
+        delta = (self._convert_time(end_date) - self._convert_time(start_date)).days
         if delta < 32:
             step_display_curve = "day"
             display_hourly_curves = True
@@ -197,7 +197,7 @@ class AccOperation(models.Model):
 
         query = """
             SELECT
-                date_trunc(%s, cdc.date_slot) AS date_slot,
+                date_trunc(%s, cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris') AS date_slot,
                 (SUM( (CASE
                     WHEN cdc.comp_data_type = 'cons'
                     THEN cdc.power ELSE 0 END) )/2) / 1000 as cons,
@@ -217,7 +217,7 @@ class AccOperation(models.Model):
                 AND cdc.date_slot >= %s
                 AND cdc.date_slot <= %s
                 AND cdc.partner_id IN %s
-            GROUP BY date_trunc(%s, cdc.date_slot)
+            GROUP BY date_trunc(%s, cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris')
             ORDER BY date_slot ASC;
             """
         query_params = (
@@ -266,7 +266,7 @@ class AccOperation(models.Model):
 
         query = """
             SELECT
-                date_trunc('day', cdc.date_slot) AS date_slot,
+                date_trunc('day', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris') AS date_slot,
                 (SUM( (CASE
                     WHEN cdc.comp_data_type = 'autocons'
                     THEN cdc.power ELSE 0 END) )/2) / 1000 as autocons,
@@ -284,7 +284,7 @@ class AccOperation(models.Model):
                     AND cdc.date_slot >= %s
                     AND cdc.date_slot <= %s
                     AND cdc.partner_id IN %s
-                GROUP BY date_trunc('day', cdc.date_slot)
+                GROUP BY date_trunc('day', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris')
                 ORDER BY date_slot ASC;
             """
         query_params = (
@@ -329,7 +329,7 @@ class AccOperation(models.Model):
 
         query = """
             SELECT
-                date_trunc(%s, cdc.date_slot) AS date_slot,
+                date_trunc(%s, cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris') AS date_slot,
                 ((SUM((CASE
                     WHEN cdc.comp_data_type = 'prod' THEN cdc.power
                     ELSE 0 END))
@@ -348,7 +348,7 @@ class AccOperation(models.Model):
                 AND cdc.date_slot >= %s
                 AND cdc.date_slot <= %s
                 AND cdc.partner_id IN %s
-            GROUP BY date_trunc(%s, cdc.date_slot)
+            GROUP BY date_trunc(%s, cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris')
             ORDER BY date_slot ASC;
             """
         query_params = (
@@ -393,7 +393,7 @@ class AccOperation(models.Model):
 
         query = """
             SELECT
-                date_trunc('day', cdc.date_slot) AS date_slot,
+                date_trunc('day', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris') AS date_slot,
                 ((SUM((CASE
                     WHEN cdc.comp_data_type = 'prod' THEN cdc.power
                     ELSE 0 END))
@@ -412,7 +412,7 @@ class AccOperation(models.Model):
                 AND cdc.date_slot >= %s
                 AND cdc.date_slot <= %s
                 AND cdc.partner_id IN %s
-            GROUP BY date_trunc('day', cdc.date_slot)
+            GROUP BY date_trunc('day', cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris')
             ORDER BY date_slot ASC;
                 """
         query_params = (
@@ -470,8 +470,10 @@ class AccOperation(models.Model):
         """
         self.ensure_one()
         result_graph = {}
-        start_date = datetime.strptime(start_date, "%d/%m/%Y")
-        end_date = datetime.combine(datetime.strptime(end_date, "%d/%m/%Y"), time.max)
+        start_date = self._convert_time(datetime.strptime(start_date, "%d/%m/%Y"))
+        end_date = self._convert_time(
+            datetime.combine(datetime.strptime(end_date, "%d/%m/%Y"), time.max)
+        )
         display_hourly_curves, step_curve, step_display_curve = self.get_step_from_date(
             start_date=start_date, end_date=end_date
         )
@@ -528,3 +530,11 @@ class AccOperation(models.Model):
             }
         )
         return result_graph
+
+    def _convert_time(self, intitial_time):
+        return (
+            pytz.timezone("Europe/Paris")
+            .localize(intitial_time)
+            .astimezone(pytz.UTC)
+            .replace(tzinfo=None)
+        )