From 878fd3d6ed3758f9fe24e6c0f970ca21990087d1 Mon Sep 17 00:00:00 2001
From: Daniil Digtyar Vasilieva <daniildigtyar@gmail.com>
Date: Mon, 10 Jul 2023 11:57:15 +0200
Subject: [PATCH] [IMP] energy_selfconsumption: get dict object of line

---
 .../wizards/selfconsumption_import_wizard.py  | 28 +++++++++++++++----
 1 file changed, 22 insertions(+), 6 deletions(-)

diff --git a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
index c4a55cac4..89894f63a 100644
--- a/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
+++ b/energy_selfconsumption/wizards/selfconsumption_import_wizard.py
@@ -31,7 +31,8 @@ class SelfconsumptionImportWizard(models.TransientModel):
         active_id = self.env.context.get('active_id')
         project = self.env['energy_selfconsumption.selfconsumption'].browse(active_id)
         for index, line in enumerate(parsing_data[1:]):
-            error = self.import_line(line, project)
+            import_dict = self.get_line_dict(line)
+            error = self.import_line(import_dict, project)
             if error:
                 error_string_list = "".join(
                     [error_string_list, _('<li>Line {line}: {error}</li>\n').format(index, error)])
@@ -40,6 +41,22 @@ class SelfconsumptionImportWizard(models.TransientModel):
                                  body=_('Import errors found: <ul>{list}</ul>'.format(list=error_string_list)))
         return True
 
+    def get_line_dict(self, line):
+        return {
+            'partner_vat': line[0] or False,
+            'effective_date': line[1] or False,
+            'code': line[2] or False,
+            'street1': line[3] or False,
+            'street2': line[4] or False,
+            'city': line[5] or False,
+            'state': line[6] or False,
+            'postal_code': line[7] or False,
+            'country': line[8] or False,
+            'owner_vat': line[9] or False,
+            'owner_firstname': line[10] or False,
+            'owner_lastname': line[11] or False,
+        }
+
     def _parse_file(self, data_file):
         self.ensure_one()
         try:
@@ -64,11 +81,11 @@ class SelfconsumptionImportWizard(models.TransientModel):
 
     def import_line(self, line, project):
         partner = self.env['res.partner'].search([
-            '|', ('vat', '=', line[0]), ('vat', '=ilike', line[0])
+            '|', ('vat', '=', line['partner_vat']), ('vat', '=ilike', line['partner_vat'])
         ], limit=1)
 
         if not partner:
-            return _('Partner with VAT:<b>{vat}</b> was not found.').format(vat=line[0])
+            return _('Partner with VAT:<b>{vat}</b> was not found.').format(vat=line['partner_vat'])
 
         if not project.inscription_ids.filtered_domain([('partner_id', '=', partner.id)]):
             try:
@@ -78,10 +95,9 @@ class SelfconsumptionImportWizard(models.TransientModel):
                     'effective_date': fields.date.today()
                 })
             except:
-                return _('Could not create inscription.').format(vat=line[0])
+                return _('Could not create inscription for {vat}.').format(vat=line['partner_vat'])
 
-        supply_point = self.env['energy_selfconsumption.supply_point'].search(
-            [('code', '=', line[2]), ('company_id', '=', self.env.company)])
+        supply_point = self.env['energy_selfconsumption.supply_point'].search([('code', '=', line['code'])])
 
         if supply_point and supply_point.partner_id != partner:
             return _(
-- 
GitLab