From bfc69d7c3ecd596fa8579d97aebd7232dbae70b4 Mon Sep 17 00:00:00 2001
From: Daniil Digtyar Vasilieva <daniildigtyar@gmail.com>
Date: Thu, 3 Aug 2023 15:20:28 +0200
Subject: [PATCH] [IMP]energy_selfconsumption: added date_format field for
 configuration of parsing effective_date

---
 .../wizards/selfconsumption_import_wizard.py  | 25 +++++++++++--------
 .../selfconsumption_import_wizard_views.xml   |  1 +
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
index 97e9a54d1..3c8538b98 100644
--- a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
+++ b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
@@ -1,5 +1,6 @@
 import base64
 import logging
+from datetime import datetime
 from csv import reader
 from io import StringIO
 
@@ -34,6 +35,12 @@ class SelfconsumptionImportWizard(models.TransientModel):
         string="File Encoding",
         help="Enconding format in import CSV file.",
     )
+    date_format = fields.Char(
+        default="%d/%m/%Y",
+        required=True,
+        string="Date Format",
+        help="Date format for effective date.",
+    )
 
     @api.constrains("import_file")
     def _constrains_import_file(self):
@@ -132,23 +139,19 @@ class SelfconsumptionImportWizard(models.TransientModel):
             )
 
         if not project.inscription_ids.filtered_domain(
-            [("partner_id", "=", partner.id)]
+                [("partner_id", "=", partner.id)]
         ):
-            if line_dict["effective_date"]:
-                try:
-                    effective_date_iso = fields.date.fromisoformat(line_dict["effective_date"])
-                except ValueError as e:
-                    return False, _("Could not create inscription for {vat}. {error}").format(
-                        vat=line_dict["partner_vat"], error=e
-                    )
-            else:
-                effective_date_iso = fields.date.today()
             try:
+                if line_dict["effective_date"]:
+                    effective_date = datetime.strptime(line_dict["effective_date"], self.date_format).date()
+                else:
+                    effective_date = fields.date.today()
+
                 self.env["energy_project.inscription"].create(
                     {
                         "project_id": project.id,
                         "partner_id": partner.id,
-                        "effective_date": effective_date_iso,
+                        "effective_date": effective_date,
                     }
                 )
             except Exception as e:
diff --git a/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml b/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
index 67f8b4e78..0824413e1 100644
--- a/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
+++ b/energy_selfconsumption/wizards/selfconsumption_import_wizard_views.xml
@@ -17,6 +17,7 @@
                             <field name="fname" invisible="1"></field>
                         </group>
                         <group>
+                            <field name="date_format"></field>
                             <field name="delimiter"></field>
                             <field name="quotechar"></field>
                             <field name="encoding"></field>
-- 
GitLab