From d15a7557f8fe28d2897dedaea4517fd0c4e7aae3 Mon Sep 17 00:00:00 2001
From: Juliana <juliana@le-filament.com>
Date: Wed, 10 May 2023 17:29:17 +0200
Subject: [PATCH] [ADD]Add control doublon cdc

---
 models/acc_operation.py | 64 +++++++++++++++++++++++++----------------
 1 file changed, 39 insertions(+), 25 deletions(-)

diff --git a/models/acc_operation.py b/models/acc_operation.py
index a342776..7b6574c 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -151,31 +151,45 @@ class AccOperation(models.Model):
                                 timezone.utc
                             ).replace(tzinfo=None)
 
-                            self.env["acc.enedis.cdc"].create(
-                                {
-                                    "name": file.name,
-                                    "acc_operation_id": self.id,
-                                    "acc_counter_id": counter_id.id or False,
-                                    "comp_data_type": computed_data_type,
-                                    "power": row[1],
-                                    "date_slot": slot_datetime_tz,
-                                    "date_slot_utc": date_slot_utc,
-                                }
-                            )
-                            # Create 2nd slot 30-60min
-                            self.env["acc.enedis.cdc"].create(
-                                {
-                                    "name": file.name,
-                                    "acc_operation_id": self.id,
-                                    "acc_counter_id": counter_id.id or False,
-                                    "comp_data_type": computed_data_type,
-                                    "power": row[2],
-                                    "date_slot": slot_datetime_tz
-                                    + timedelta(minutes=30),
-                                    "date_slot_utc": date_slot_utc
-                                    + timedelta(minutes=30),
-                                }
-                            )
+                            # Begin Check doublon
+                            domain_all = [
+                                ("date_slot", "=", slot_datetime_tz),
+                                ("acc_operation_id", "=", self.id),
+                                ("comp_data_type", "=", computed_data_type),
+                                ("acc_counter_id", "=", counter_id.id)
+                            ]
+
+                            acc_enedis_cdc_id = self.env["acc.enedis.cdc"].search(
+                                domain_all)
+                            # End check doublon
+
+                            if not acc_enedis_cdc_id:
+
+                                self.env["acc.enedis.cdc"].create(
+                                    {
+                                        "name": file.name,
+                                        "acc_operation_id": self.id,
+                                        "acc_counter_id": counter_id.id or False,
+                                        "comp_data_type": computed_data_type,
+                                        "power": row[1],
+                                        "date_slot": slot_datetime_tz,
+                                        "date_slot_utc": date_slot_utc,
+                                    }
+                                )
+                                # Create 2nd slot 30-60min
+                                self.env["acc.enedis.cdc"].create(
+                                    {
+                                        "name": file.name,
+                                        "acc_operation_id": self.id,
+                                        "acc_counter_id": counter_id.id or False,
+                                        "comp_data_type": computed_data_type,
+                                        "power": row[2],
+                                        "date_slot": slot_datetime_tz
+                                        + timedelta(minutes=30),
+                                        "date_slot_utc": date_slot_utc
+                                        + timedelta(minutes=30),
+                                    }
+                                )
 
                     # Logs information logs
                     self.env["acc.enedis.import.logs"].create(
-- 
GitLab