From 2761a0855cbe4321f713a40b04c3a6f4577afd24 Mon Sep 17 00:00:00 2001
From: Benjamin <benjamin@le-filament.com>
Date: Tue, 18 Aug 2020 16:31:21 +0200
Subject: [PATCH] [add] resync option from log

---
 models/riga_odoo_import.py | 19 ++++++++++++++++++-
 views/riga_odoo_import.xml |  4 ++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/models/riga_odoo_import.py b/models/riga_odoo_import.py
index 309565f..041f48c 100644
--- a/models/riga_odoo_import.py
+++ b/models/riga_odoo_import.py
@@ -28,6 +28,7 @@ class CgscopRigaOdooImport(models.Model):
     is_warning = fields.Boolean('Warning', default=False)
     log = fields.Text('Log')
     is_error = fields.Boolean('Erreur Synchro', default=False)
+    is_resync = fields.Boolean('Re-Synchronisé', default=False)
     filename = fields.Char('Nom du fichier')
 
     # ------------------------------------------------------
@@ -68,7 +69,7 @@ class CgscopRigaOdooImport(models.Model):
         except Exception as e:
             raise exceptions.Warning(e)
 
-    def _read_file(self, model, file, table, primary_key, header_key):
+    def _read_file(self, model, file, table, primary_key, header_key, resync=False):
         """ Cette fonction prend en paramètre un fichier CSV et lit
         chaque ligne pour mettre à jour la ligne de la table correspondante
         si elle existe ou la créer si l'organisme existe
@@ -80,6 +81,7 @@ class CgscopRigaOdooImport(models.Model):
         :param primary_key (string): header du fichier CSV correspondant à la clé
         :param parent_id (string):  header du fichier CSV pour lequel on va
                                     rechercher l'ID RIGA de l'organisme
+        :param resync (bool): le fichier a été synchronisé manuellement
         """
         try:
             file.seek(0)
@@ -143,6 +145,7 @@ class CgscopRigaOdooImport(models.Model):
                         " - Création de " + str(crea_nb) + " lignes\n" +
                         " - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log),
                 'is_warning': True if log else False,
+                'is_resync': resync,
             })
 
         except Exception as e:
@@ -235,3 +238,17 @@ class CgscopRigaOdooImport(models.Model):
                 table=table,
                 primary_key=model.primary_key,
                 header_key=model.header_key)
+
+    def resync_file(self):
+        model = self.env['riga.files.matching'].sudo().search([
+                ['model_id', '=', self.model_id.id]])
+        table = []
+        for header in model.matching_table_ids:
+            table.append([header.name, header.riga_name, header.relation])
+        self._read_file(
+            model=self.model_id,
+            file=self._get_ftp_file(self.filename, model.ftp_channel_id),
+            table=table,
+            primary_key=model.primary_key,
+            header_key=model.header_key,
+            resync=True)
diff --git a/views/riga_odoo_import.xml b/views/riga_odoo_import.xml
index 693908a..e84edf7 100644
--- a/views/riga_odoo_import.xml
+++ b/views/riga_odoo_import.xml
@@ -27,6 +27,9 @@
             <field name="model">riga.odoo.import</field>
             <field name="arch" type="xml">
                 <form>
+                    <header>
+                        <button type="object" string="Re-Synchroniser" name="resync_file"></button>
+                    </header>
                     <sheet>
                         <group>
                             <group>
@@ -38,6 +41,7 @@
                                 <field name="is_sync"/>
                                 <field name="is_warning" readonly="1" />
                                 <field name="is_error" readonly="1" />
+                                <field name="is_resync" readonly="1" />
                             </group>
                         </group>
                         <group>
-- 
GitLab