diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index a00fabf7d2311f0c190784f85929ad7673d2aa45..a10c976ddc3811780e09a0c2d5ef343c688738a3 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -418,86 +418,63 @@ class EnercoopOperation(models.Model):
         if type == 'week':
             type_date = 'date_slot:hour'
 
-        enercoop_counter_id = self.env['enercoop.counter']
-        if prm_id:
-            enercoop_counter_id = self.env['enercoop.counter'].browse(prm_id)
+        domain_all = [
+                ('enercoop_operation_id', 'in', self.ids),
+                ('date_slot', '>=', date_start),
+                ('date_slot', '<', date_end),
+            ]
+        # Get PRM object if defined
+        enercoop_counter_id = self.env['enercoop.counter'].browse(prm_id) if prm_id else False
 
         if enercoop_counter_id:
+            domain_prm = domain_all + [('enercoop_counter_id', '=', enercoop_counter_id.id)]
             # Get all data group by curves type and date
             cdc_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end),
-                 '|', ('enercoop_counter_id', '=', False), ('enercoop_counter_id', '=', enercoop_counter_id.id)
-                 ],
+                domain_prm,
                 ['power', 'enercoop_operation_id', 'date_slot'],
                 ['comp_data_type', type_date], orderby='comp_data_type, date_slot ASC', lazy=False)
 
             if type == 'week':
                 cdc_histo_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                    [('enercoop_operation_id', 'in', self.ids),
-                     ('date_slot', '>=', date_start),
-                     ('date_slot', '<', date_end),
-                     '|', ('enercoop_counter_id', '=', False), ('enercoop_counter_id', '=', enercoop_counter_id.id)
-                     ],
+                    domain_prm,
                     ['power', 'enercoop_operation_id', 'date_slot'],
                     ['comp_data_type', type_date_histo], orderby='comp_data_type, date_slot ASC', lazy=False)
 
             # Get the date for the abscissa axis
             cdc_date_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end),
-                 '|', ('enercoop_counter_id', '=', False), ('enercoop_counter_id', '=', enercoop_counter_id.id)
-                 ],
+                domain_prm,
                 ['enercoop_operation_id', 'date_slot'],
                 [type_date_abs], orderby='date_slot ASC', lazy=False)
 
             # Get the date for the abscissa axis (histo)
             if type == 'day':
                 cdc_date_histo_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                    [('enercoop_operation_id', 'in', self.ids),
-                     ('date_slot', '>=', date_start),
-                     ('date_slot', '<', date_end),
-                     '|', ('enercoop_counter_id', '=', False), ('enercoop_counter_id', '=', enercoop_counter_id.id)
-                     ],
+                    domain_prm,
                     ['enercoop_operation_id', 'date_slot'],
                     [type_date], orderby='date_slot ASC', lazy=False)
         else:
             # Get all data group by curves type and date
             cdc_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end)
-                 ],
+                domain_all,
                 ['power', 'enercoop_operation_id', 'date_slot'],
                 ['comp_data_type', type_date], orderby='comp_data_type, date_slot ASC', lazy=False)
 
             if type == 'week':
                 cdc_histo_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                    [('enercoop_operation_id', 'in', self.ids),
-                     ('date_slot', '>=', date_start),
-                     ('date_slot', '<', date_end)
-                     ],
+                    domain_all,
                     ['power', 'enercoop_operation_id', 'date_slot'],
                     ['comp_data_type', type_date_histo], orderby='comp_data_type, date_slot ASC', lazy=False)
 
             # Get the date for the abscissa axis
             cdc_date_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end),
-                 ],
+                domain_all,
                 ['enercoop_operation_id', 'date_slot'],
                 [type_date_abs], orderby='date_slot ASC', lazy=False)
 
             # Get the date for the abscissa axis (histo)
             if type == 'day':
                 cdc_date_histo_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                    [('enercoop_operation_id', 'in', self.ids),
-                     ('date_slot', '>=', date_start),
-                     ('date_slot', '<', date_end),
-                     ],
+                    domain_all,
                     ['enercoop_operation_id', 'date_slot'],
                     [type_date], orderby='date_slot ASC', lazy=False)
 
@@ -547,6 +524,7 @@ class EnercoopOperation(models.Model):
                 if cdc['comp_data_type'] == 'surplus':
                     data_surplus.append(value_power)
 
+        # SQL Data Query
         if type == 'day' or type == 'week':
             if enercoop_counter_id:
                 query = """
@@ -604,21 +582,17 @@ class EnercoopOperation(models.Model):
         # Get the data to build the chart Bilan
         if enercoop_counter_id:
             bilan_cdc = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end),
-                 '|', ('enercoop_counter_id', '=', False), ('enercoop_counter_id', '=', enercoop_counter_id.id)],
+                domain_prm,
                 ['power', 'enercoop_operation_id'],
                 ['comp_data_type'], orderby='comp_data_type', lazy=False)
         else:
             bilan_cdc = self.env['enercoop.enedis.cdc'].sudo().read_group(
-                [('enercoop_operation_id', 'in', self.ids),
-                 ('date_slot', '>=', date_start),
-                 ('date_slot', '<', date_end)],
+                domain_all,
                 ['power', 'enercoop_operation_id'],
                 ['comp_data_type'], orderby='comp_data_type', lazy=False)
 
         # Build the ordinate axis for each data type (autoconso/conso/prod/surplus)
+        power_autocons = power_cons = power_surplus = power_prod = 0
         for bilan in bilan_cdc:
             if bilan['comp_data_type'] == 'autocons':
                 power_autocons = bilan['power'] / 1000 / 2