diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index bacea1797f7b6c3727a485e57b06a85072a40eea..c3cb525b888d70069da4b5bdf8b54b304c99336f 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -144,6 +144,8 @@ class EnercoopOperation(models.Model):
             date_start = date_end - relativedelta(days=6)
             date_start = date_utils.start_of(date_start, 'day')
         else:
+            date_first = date_end - relativedelta(months=1)
+            date_end = date_utils.end_of(date_first, 'month')
             date_start = date_utils.start_of(date_end, scale)
 
         return date_start, date_end
@@ -162,25 +164,35 @@ class EnercoopOperation(models.Model):
         date_min = first_record.date_slot
         return date_min
 
-    def get_step_from_date(self, date_start, date_end):
+    def get_step_from_date(self, date_start, date_end, scale=None):
         """
         Fonction retournant le pas des courbes en fonction de 2 dates.
         :return: step: hour/day/month/year
         """
         # Calculate delta between 2 dates
         delta = (date_end - date_start).days
-        if delta <= 1:
+        if delta < 1:
             step_display_courbe = 'hour'
             step = 'hour'
-        elif delta <= 7:
+            if not scale:
+                scale = 'day'
+        elif delta < 29:
             step_display_courbe = 'day'
             step = 'hour'
-        # elif delta <= 181:
+            if not scale:
+                scale = 'week'
+        elif delta <= 365:
+            step = 'month'
+            step_display_courbe = 'month'
+            if not scale:
+                scale = 'month'
         else:
             step = 'month'
             step_display_courbe = 'month'
+            if not scale:
+                scale = 'year'
 
-        return step, step_display_courbe
+        return scale, step, step_display_courbe
 
     def get_cdc_by_query_cons(self, slot_type, date_start, date_end, prm_ids=None):
         """
@@ -225,9 +237,9 @@ class EnercoopOperation(models.Model):
                 data_allocons.append(int(row[3]))
                 label.append(row[0])
             else:
-                data_autocons.append({'x': row[0], 'y': int(row[1])})
-                data_prod.append({'x': row[0], 'y': int(row[2])})
-                data_allocons.append({'x': row[0], 'y': int(row[3])})
+                data_autocons.append({'x': row[0], 'y': round(row[1], 2)})
+                data_prod.append({'x': row[0], 'y': round(row[2], 2)})
+                data_allocons.append({'x': row[0], 'y': round(row[3], 2)})
                 label.append(row[0])
 
         cdc_jour = {
@@ -273,8 +285,8 @@ class EnercoopOperation(models.Model):
         self.env.cr.execute(query, query_params)
         raw_data = self.env.cr.fetchall()
         for row in raw_data:
-            data_autocons_histo.append(int(row[1]))
-            data_allocons_histo.append(int(row[2]))
+            data_autocons_histo.append(round(row[1], 2))
+            data_allocons_histo.append(round(row[2], 2))
             label_histo.append(row[0])
 
         cdc_jour = {
@@ -327,12 +339,12 @@ class EnercoopOperation(models.Model):
                 data_surplus.append(int(row[2]))
                 label.append(row[0])
             elif slot_type == 'day':
-                data_autocons_histo.append(int(row[1]))
-                data_surplus_histo.append(int(row[2]))
+                data_autocons_histo.append(round(row[1], 2))
+                data_surplus_histo.append(round(row[2], 2))
                 label_histo.append(row[0])
             else:
-                data_autocons.append({'x': row[0], 'y': int(row[1])})
-                data_surplus.append({'x': row[0], 'y': int(row[2])})
+                data_autocons.append({'x': row[0], 'y': round(row[1], 2)})
+                data_surplus.append({'x': row[0], 'y': round(row[2], 2)})
                 label.append(row[0])
 
         cdc_jour = {
@@ -380,8 +392,8 @@ class EnercoopOperation(models.Model):
         self.env.cr.execute(query, query_params)
         raw_data = self.env.cr.fetchall()
         for row in raw_data:
-            data_autocons_prod_histo.append(int(row[1]))
-            data_surplus_histo.append(int(row[2]))
+            data_autocons_prod_histo.append(round(row[1], 2))
+            data_surplus_histo.append(round(row[2], 2))
             label_histo.append(row[0])
 
         cdc_jour = {
@@ -445,12 +457,12 @@ class EnercoopOperation(models.Model):
                 data_autocons_prod.append(int(row[6]))
                 label.append(row[0])
             else:
-                data_cons.append({'x': row[0], 'y': int(row[1])})
-                data_autocons.append({'x': row[0], 'y': int(row[2])})
-                data_prod.append({'x': row[0], 'y': int(row[3])})
-                data_surplus.append({'x': row[0], 'y': int(row[4])})
-                data_allocons.append({'x': row[0], 'y': int(row[5])})
-                data_autocons_prod.append({'x': row[0], 'y': int(row[6])})
+                data_cons.append({'x': row[0], 'y': round(row[1], 2)})
+                data_autocons.append({'x': row[0], 'y': round(row[2], 2)})
+                data_prod.append({'x': row[0], 'y': round(row[3], 2)})
+                data_surplus.append({'x': row[0], 'y': round(row[4], 2)})
+                data_allocons.append({'x': row[0], 'y': round(row[5], 2)})
+                data_autocons_prod.append({'x': row[0], 'y': round(row[6], 2)})
                 label.append(row[0])
 
         cdc_jour = {
@@ -504,10 +516,10 @@ class EnercoopOperation(models.Model):
         self.env.cr.execute(query, query_params)
         raw_data = self.env.cr.fetchall()
         for row in raw_data:
-            data_autocons_histo.append(int(row[1]))
-            data_surplus_histo.append(int(row[2]))
-            data_allocons_histo.append(int(row[3]))
-            data_autocons_prod_histo.append(int(row[4]))
+            data_autocons_histo.append(round(row[1], 2))
+            data_surplus_histo.append(round(row[2], 2))
+            data_allocons_histo.append(round(row[3], 2))
+            data_autocons_prod_histo.append(round(row[4], 2))
             label_histo.append(row[0])
 
         cdc_jour = {
@@ -526,7 +538,10 @@ class EnercoopOperation(models.Model):
         :param  chart_data: données à afficher dans les chart (labels et data)
         :return: un dictionnaire de chart
         """
-
+        if scale == 'day':
+            offsetGridLines = False
+        else:
+            offsetGridLines = True
         result = {}
 
         result['line_chart_conso_line'] = {
@@ -571,7 +586,7 @@ class EnercoopOperation(models.Model):
                                 'unit': scale,
                             },
                             'gridLines': {
-                                'offsetGridLines': True
+                                'offsetGridLines': offsetGridLines
                             }
                         }],
                         'yAxes': [{
@@ -715,7 +730,7 @@ class EnercoopOperation(models.Model):
             sum_res2 = sum(chart_data['allocons'])
 
         tot_res = sum_res1 + sum_res2
-        res = [int((sum_res1 * 100) / tot_res), int((sum_res2 * 100) / tot_res)]
+        res = [(sum_res1 * 100) / tot_res, (sum_res2 * 100) / tot_res]
 
         result['donuts_chart_conso'] = {
             'type': 'doughnut',
@@ -735,6 +750,9 @@ class EnercoopOperation(models.Model):
                 'cutoutPercentage': 60,
                 'animation': {
                     'animateScale': True,
+                },
+                'plugins': {
+
                 },
                 'tooltips': {
                     'backgroundColor': '#f5f5f5',
@@ -756,7 +774,10 @@ class EnercoopOperation(models.Model):
         :param  chart_data: données à afficher dans les chart (labels et data)
         :return: un dictionnaire de chart
         """
-
+        if scale == 'day':
+            offsetGridLines = False
+        else:
+            offsetGridLines = True
         result = {}
         result['line_chart_prod_line'] = {
             'type': 'line',
@@ -764,7 +785,7 @@ class EnercoopOperation(models.Model):
                 'labels': chart_data['label'],
                 'datasets': [
                     {
-                        'label': 'Autoconso',
+                        'label': 'AutoProd',
                         'data': chart_data['autocons_prod'],
                         'backgroundColor': 'rgba(91, 154, 81, 0.4)',
                         'borderColor': 'rgba(91, 154, 81, 1)',
@@ -796,7 +817,7 @@ class EnercoopOperation(models.Model):
                             # 'min': result.date_start,
                         },
                         'gridLines': {
-                            'offsetGridLines': True
+                            'offsetGridLines': offsetGridLines
                         }
                     }],
                     'yAxes': [{
@@ -842,12 +863,13 @@ class EnercoopOperation(models.Model):
             sum_res2 = sum(chart_data['surplus'])
 
         tot_res = sum_res1 + sum_res2
-        res = [int((sum_res1 * 100) / tot_res), int((sum_res2 * 100) / tot_res)]
+        # res = [(sum_res1 * 100) / tot_res, (sum_res2 * 100) / tot_res]
+        res = [sum_res1, sum_res2]
 
         result['donuts_chart_prod'] = {
             'type': 'doughnut',
             'data': {
-                'labels': ['Autoconso', 'Surplus'],
+                'labels': ['AutoProd', 'Surplus'],
                 'datasets': [{
                     'label': 'Inférieur à 3',
                     'data': res,
@@ -901,7 +923,7 @@ class EnercoopOperation(models.Model):
                 'labels': data_label,
                 'datasets': [
                     {
-                        'label': 'AutoConso',
+                        'label': 'AutoProd',
                         'data': data_autocons,
                         'backgroundColor': 'rgba(91, 154, 81, 0.4)',
                         'borderColor': 'rgba(91, 154, 81, 1)',
@@ -1014,7 +1036,8 @@ class EnercoopOperation(models.Model):
             if enercoop_counter_id:
                 counter_ids = self.env['enercoop.counter'].search([('name', '=', enercoop_counter_id)]).ids
 
-            step_courbe, step_display_courbe = operation_ids.get_step_from_date(date_start=date_start, date_end=date_end)
+            scale, step_courbe, step_display_courbe = operation_ids.get_step_from_date(
+                date_start=date_start, date_end=date_end, scale=scale)
             # Get the data to display in chart
             chart_data = operation_ids.get_cdc(scale=scale, step_courbe=step_courbe, date_start=date_start, date_end=date_end,
                                                prm_ids=counter_ids)
@@ -1104,8 +1127,11 @@ class EnercoopOperation(models.Model):
         result_graph = {}
         if not date_start and not date_end:
             date_start, date_end = self.get_last_day(scale)
+        else:
+            date_end = date_utils.end_of(date_end, 'day')
 
-        step_courbe, step_display_courbe = self.get_step_from_date(date_start=date_start, date_end=date_end)
+        scale, step_courbe, step_display_courbe = self.get_step_from_date(
+            date_start=date_start, date_end=date_end, scale=scale)
         # Get the data to display in chart
         chart_data = self.get_cdc(
             scale=scale, step_courbe=step_courbe, date_start=date_start,
@@ -1147,7 +1173,8 @@ class EnercoopOperation(models.Model):
             date_start, date_end = self.get_last_day(scale)
 
         # Get the step to display curve in chart
-        step_courbe, step_display_courbe = self.get_step_from_date(date_start=date_start, date_end=date_end)
+        scale, step_courbe, step_display_courbe = self.get_step_from_date(
+            date_start=date_start, date_end=date_end, scale=scale)
 
         # Get PRM ids
         if prm_id:
diff --git a/static/src/js/operation_graph.js b/static/src/js/operation_graph.js
index 6298c946a7ba90afdb324530ed2c5bc93275defb..39447bcb50eee4b8a2ed2dda7309d7f558a950ab 100644
--- a/static/src/js/operation_graph.js
+++ b/static/src/js/operation_graph.js
@@ -66,6 +66,18 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
 	    		donuts_conso,
 	    		Object.assign({}, result.donuts_chart_conso)
 	    	);
+//	    	chart_donuts_conso.config.options.plugins =
+//	            {
+//                    color: "#1f4e56",
+//                    font: {
+//                      weight: "bold",
+//                      size: 16
+//                    },
+//                    formatter: (value) => {
+//                      return value + "%";
+//                    }
+//                };
+//            console.log(chart_donuts_conso);
 
 	    	chart_histo_conso = new Chart(
 	    		histo_conso,
@@ -77,7 +89,6 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
                     line_prod,
                     Object.assign({}, result.line_chart_prod_line)
                 );
-                console.log(chart_line_prod);
             }
 
 	    	chart_donuts_prod = new Chart(