From 42c850868bae8b4207f9b289cc2e56609b7ea59d Mon Sep 17 00:00:00 2001
From: Juliana <juliana@le-filament.com>
Date: Thu, 21 Oct 2021 10:55:48 +0200
Subject: [PATCH] [UPD]Change cron function

---
 __manifest__.py              |  2 +-
 models/api_enedis.py         |  3 ++-
 models/enercoop_operation.py | 28 ++++++++++++++--------------
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/__manifest__.py b/__manifest__.py
index 907a68d..178e51e 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -11,7 +11,7 @@
     'data': [
         "security/ir.model.access.csv",
         # datas
-        # 'data/service_cron.xml',
+        'data/service_cron.xml',
         'wizards/enercoop_operation_wizard_views.xml',
         # views
         'views/res_config_settings_views.xml',
diff --git a/models/api_enedis.py b/models/api_enedis.py
index c002b67..09a2dcf 100644
--- a/models/api_enedis.py
+++ b/models/api_enedis.py
@@ -289,6 +289,7 @@ class ApiEnedis(models.AbstractModel):
                     'operation_id': self.id,
                     'date_start_contract': date.fromisoformat(usage_point['start']),
                     'date_end_contract': date.fromisoformat(usage_point['end']),
+                    'partner_id': prm_id.partner_id.id or None
                 })
 
-        return True
\ No newline at end of file
+        return True
diff --git a/models/enercoop_operation.py b/models/enercoop_operation.py
index 9bb2b7e..c236480 100644
--- a/models/enercoop_operation.py
+++ b/models/enercoop_operation.py
@@ -40,18 +40,19 @@ class EnercoopOperation(models.Model):
         ''' This method is called from a cron job.
         It is used to get data from Enedis with API.
         '''
-        if date.today() == last_day_of_month(date.today()):
-            date_month_before = date.today() - relativedelta(months=1)
-            records = self.search([
-                ('birthday_date', '=', date_month_before.day),
-                ('date_end_contract', '>=', fields.Date.context_today(self)),
-            ])
-            records._get_curves(date_month_before)
-
-    def _get_curves(self, date_month_before):
-        for operation in self:
-            yesterday = date.today() - relativedelta(days=1)
-            operation.get_curves(date_month_before, yesterday)
+        records = self.search([
+            ('date_start_contract', '<', date.today()),
+            ('client_id', '!=', False),
+            ('secret_id', '!=', False),
+            ('active', '=', True)
+        ])
+        for rec in records:
+            d = rec.date_start_contract + relativedelta(days=10)
+            if d.day == date.today().day:
+                date_today_10 = date.today() - relativedelta(days=10)
+                first_date = datetime(date_today_10.year, date_today_10.month - 1, rec.date_start_contract.day)
+                last_date = first_date + relativedelta(months=1, days=-1)
+                rec.get_curves(first_date.date(), last_date.date())
 
     # ------------------------------------------------------
     # Actions
@@ -74,9 +75,8 @@ class EnercoopOperation(models.Model):
     def get_perimeter(self):
         for operation in self:
             res = operation.perimeter()
+
     # ------------------------------------------------------
     # Business methods
     # ------------------------------------------------------
-    def last_day_of_month(date_value):
-        return date_value.replace(day=monthrange(date_value.year, date_value.month)[1])
 
-- 
GitLab