From 00b4c84c6c95b9920455383141cae7b457e68d8b Mon Sep 17 00:00:00 2001
From: Benjamin <35699580+benj-filament@users.noreply.github.com>
Date: Fri, 29 Nov 2019 18:57:09 +0100
Subject: [PATCH] fix bugs import + ajout ftp channel

---
 README.rst                    |  2 +-
 datas/riga.files.matching.csv |  8 +++---
 models/riga_files_matching.py | 10 +++++++
 models/riga_ftp_channel.py    |  8 ++++++
 models/riga_odoo_import.py    | 21 +++++++++++---
 views/riga_files_matching.xml | 54 ++++++++++++++++++++++++++---------
 views/riga_ftp_channel.xml    | 29 +++++++++++++------
 views/riga_lookup_table.xml   |  4 +--
 views/riga_odoo_import.xml    |  7 +++--
 9 files changed, 107 insertions(+), 36 deletions(-)

diff --git a/README.rst b/README.rst
index 8038ed8..e32dd71 100644
--- a/README.rst
+++ b/README.rst
@@ -25,7 +25,7 @@ Usage
 
 Pour configurer ce module, les données suivantes sont à renseigner 
 
-1. dans le menu **Configuration > Technique > CG Scop > FTP Imports RIGA** : 
+1. dans le menu **Configuration > APIs CG Scop > RIGA > FTP Imports RIGA** : 
 
 * *nom* : nom de la connexion
 * *login* : login de connexion au FTP
diff --git a/datas/riga.files.matching.csv b/datas/riga.files.matching.csv
index 00fb597..2264d8d 100644
--- a/datas/riga.files.matching.csv
+++ b/datas/riga.files.matching.csv
@@ -1,4 +1,4 @@
-id,model_id:id,riga_filename,primary_key,header_key
-odoo_scop_contribution,cgscop_partner.model_scop_contribution,"1800.csv","EVTID","PMID"
-odoo_scop_questionnaire,cgscop_partner.model_scop_questionnaire,"5100.csv","EVTID","PMID"
-odoo_scop_liasse_fiscale,cgscop_partner.model_scop_liasse_fiscale,"5900.csv","EVTID","PMID"
\ No newline at end of file
+id,model_id:id,riga_filename,primary_key,header_key,riga_extension
+odoo_scop_contribution,cgscop_partner.model_scop_contribution,"1800","EVTID","PMID","csv"
+odoo_scop_questionnaire,cgscop_partner.model_scop_questionnaire,"5100","EVTID","PMID","csv"
+odoo_scop_liasse_fiscale,cgscop_partner.model_scop_liasse_fiscale,"5900","EVTID","PMID","csv"
\ No newline at end of file
diff --git a/models/riga_files_matching.py b/models/riga_files_matching.py
index bc50fe0..c1a7c47 100644
--- a/models/riga_files_matching.py
+++ b/models/riga_files_matching.py
@@ -28,6 +28,7 @@ class CgscopRigaFilesMatching(models.Model):
         comodel_name='ir.model',
         string='Modèle')
     riga_filename = fields.Char('Nom Fichier RIGA')
+    riga_extension = fields.Char('Extension Fichier')
     is_active = fields.Boolean("Actif", default=True)
     header_key = fields.Char("Nom clé parent", default='PMID')
     primary_key = fields.Char("Clé primaire", default='EVTID')
@@ -35,3 +36,12 @@ class CgscopRigaFilesMatching(models.Model):
         comodel_name='riga.files.matching.header',
         inverse_name='parent_id',
         string='Table de correspondance Odoo - Riga')
+    suffix = fields.Char(
+        string="Suffixe",
+        trim=False)
+    day = fields.Integer("Décalage jour", default=False)
+    params_active = fields.Boolean('Extra params actifs')
+
+    def sync_data(self):
+        odoo_import = self.env['riga.odoo.import'].sudo()
+        odoo_import.sync_file(self)
diff --git a/models/riga_ftp_channel.py b/models/riga_ftp_channel.py
index a264ce4..187e412 100644
--- a/models/riga_ftp_channel.py
+++ b/models/riga_ftp_channel.py
@@ -15,3 +15,11 @@ class CgscopRigaFtpChannel(models.Model):
     path = fields.Char('Path')
     active = fields.Boolean('Actif', default=False)
 
+    def toogle_active_config(self):
+        """ Active la connexion sélectionnée et désactive
+            toutes les autres connexions
+        """
+        for item in self.env['riga.ftp.channel'].search([]):
+            item.active = False
+        self.active = True
+
diff --git a/models/riga_odoo_import.py b/models/riga_odoo_import.py
index a820c43..ea77df5 100644
--- a/models/riga_odoo_import.py
+++ b/models/riga_odoo_import.py
@@ -7,7 +7,7 @@ import datetime
 import logging
 from ftplib import FTP
 
-from odoo import models, fields, tools, exceptions
+from odoo import models, fields, exceptions
 
 _logger = logging.getLogger(__name__)
 
@@ -194,7 +194,13 @@ class CgscopRigaOdooImport(models.Model):
     # ------------------------------------------------------
     # Import données
     # ------------------------------------------------------
+
     def odoo_sync(self):
+        model_sync = self.env['riga.files.matching'].sudo().search([
+            ['is_active', '=', True]])
+        self.sync_file(model_sync)
+
+    def sync_file(self, model_sync):
         """ Fonction de synchronisation des fichiers CSV RIGA
         avec les tables associées Odoo.
 
@@ -203,13 +209,20 @@ class CgscopRigaOdooImport(models.Model):
         de correspondance de string à list puis appelle la fonction
         _read_file qui permet d'intégrer ou de metre à jour les valeurs
         """
-        model_sync = self.env['riga.files.matching'].sudo().search([
-            ['is_active', '=', True]])
         for model in model_sync:
             table = []
+            # Calcul nom du fichier
+            if model.params_active:
+                date_value = fields.Datetime.now() + datetime.timedelta(days=model.day)
+                filename = (model.riga_filename +
+                            date_value.strftime(model.suffix) + '.' +
+                            model.riga_extension)
+            else:
+                filename = (model.riga_filename + '.' +
+                            model.riga_extension)
             _logger.info(
                 "Lecture Fichier %s pour le modèle %s",
-                model.riga_filename,
+                filename,
                 model.model_id.name
             )
             for header in model.matching_table_ids:
diff --git a/views/riga_files_matching.xml b/views/riga_files_matching.xml
index 738068e..576232c 100644
--- a/views/riga_files_matching.xml
+++ b/views/riga_files_matching.xml
@@ -25,11 +25,15 @@
             <field name="model">riga.files.matching</field>
             <field name="arch" type="xml">
                 <form>
+                    <header>
+                        <button type="object" string="Synchroniser" name="sync_data"></button>
+                    </header>
                     <sheet>
                         <group>
                             <group>
                                 <field name="model_id" />
                                 <field name="riga_filename"/>
+                                <field name="riga_extension"/>
                             </group>
                             <group>
                                 <field name="primary_key"/>
@@ -37,14 +41,36 @@
                                 <field name="is_active" widget="boolean_toggle"/>
                             </group>
                         </group>
+                        <notebook>
+                            <page name="file_config" string="Paramètres fichier">
+                                <group>
+                                    <group>
+                                        <field name="params_active"/>
+                                        <field name="suffix" options="{'readonly': [('params_active', '=', False')]}"/>
+                                        <field name="day" options="{'readonly': [('params_active', '=', False')]}"/>
+                                    </group>
+                                    <group col="2" string="Légende">
+                                        <group>
+                                            <span colspan="2">Année sur 4 chiffres : %Y</span>
+                                            <span colspan="2">Année sur 2 chiffres : %y</span>
+                                            <span colspan="2">Mois : %m</span>
+                                            <span colspan="2">Jour : %d</span>
+                                        </group>
+                                    </group>
+                                </group>
+                            </page>
+                            <page name="page_header" string="Headers">
+                                <field name="matching_table_ids">
+                                    <tree editable="bottom">
+                                        <field name="name"/>
+                                        <field name="riga_name"/>
+                                        <field name="relation"/>
+                                    </tree>
+                                </field>
+                            </page>
+                        </notebook>
                         <group>
-                            <field name="matching_table_ids">
-                                <tree editable="bottom">
-                                    <field name="name"/>
-                                    <field name="riga_name"/>
-                                    <field name="relation"/>
-                                </tree>
-                            </field>
+                            
                         </group>
                     </sheet>
                 </form>
@@ -56,17 +82,17 @@
             <field name="res_model">riga.files.matching</field>
             <field name="view_mode">tree,form</field>
         </record>
-        
-        <menuitem id="menu_cgscop_riga_import"
-            parent="contacts.res_partner_menu_config"
-            sequence="190"
-            name="Import RIGA"
+
+        <menuitem id="menu_cgscop_tecnhical_config"
+            parent="cgscop_partner.menu_cgscop_api_config"
+            sequence="20"
+            name="RIGA"
             groups="base.group_no_one"/>
 
         <menuitem id="menu_riga_files_matching"
-            parent="menu_cgscop_riga_import"
+            parent="menu_cgscop_tecnhical_config"
             action="action_view_riga_files_matching_tree"
             name="Configuration imports RIGA"
-            sequence="190"/>
+            sequence="50"/>
     </data>
 </odoo>
diff --git a/views/riga_ftp_channel.xml b/views/riga_ftp_channel.xml
index c3ba93d..f2460d9 100644
--- a/views/riga_ftp_channel.xml
+++ b/views/riga_ftp_channel.xml
@@ -24,6 +24,9 @@
             <field name="model">riga.ftp.channel</field>
             <field name="arch" type="xml">
                 <form>
+                    <header>
+                        <button name="toogle_active_config" type="object" string="Activer" />
+                    </header>
                     <sheet>
                         <group>
                             <group>
@@ -42,22 +45,32 @@
             </field>
         </record>
 
+        <record id="view_riga_ftp_channel_search" model="ir.ui.view">
+            <field name="name">riga.ftp.channel.search</field>
+            <field name="model">riga.ftp.channel</field>
+            <field name="arch" type="xml">
+                <search string="Synchronisation Odoo">
+                    <!-- Champs de recherche -->
+                    <field name="name"/>
+                    <!-- Filtres -->
+                    <filter name="active_filter" string="Actifs" domain="[('active','=',True)]"/>
+                    <filter name="inctive_filter" string="Inactifs" domain="[('active','=',False)]" />
+                    <filter name="all_filter" string="Tous" domain="['|', ('active','=',True), ('active','=',False)]" />
+                </search>
+            </field>
+        </record>
+
         <record id="action_view_riga_ftp_channel" model="ir.actions.act_window">
             <field name="name">Configuration FTP RIGA</field>
             <field name="res_model">riga.ftp.channel</field>
             <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_riga_ftp_channel_search"/>
         </record>
-        
-        <menuitem id="menu_cgscop_tecnhical_config"
-            parent="base.menu_custom"
-            sequence="100"
-            name="CG Scop"
-            groups="base.group_no_one"/>
 
         <menuitem id="menu_riga_ftp_channel"
             parent="menu_cgscop_tecnhical_config"
             action="action_view_riga_ftp_channel"
-            name="FTP imports RIGA"
-            sequence="190"/>
+            name="Configuration FTP"
+            sequence="100"/>
     </data>
 </odoo>
diff --git a/views/riga_lookup_table.xml b/views/riga_lookup_table.xml
index dc68623..3bdda2e 100644
--- a/views/riga_lookup_table.xml
+++ b/views/riga_lookup_table.xml
@@ -24,9 +24,9 @@
         </record>
 
         <menuitem id="menu_riga_lookup_table"
-            parent="menu_cgscop_riga_import"
+            parent="menu_cgscop_tecnhical_config"
             action="action_view_riga_lookup_table_tree"
             name="Table de correspondance"
-            sequence="200"/>
+            sequence="90"/>
     </data>
 </odoo>
diff --git a/views/riga_odoo_import.xml b/views/riga_odoo_import.xml
index e989c69..6c2607c 100644
--- a/views/riga_odoo_import.xml
+++ b/views/riga_odoo_import.xml
@@ -53,9 +53,10 @@
         </record>
 
         <menuitem id="menu_riga_odoo_import_config"
-            parent="cgscop_riga_import.menu_cgscop_riga_import"
+            parent="menu_cgscop_tecnhical_config"
             action="action_view_riga_odoo_import_tree"
-            name="RIGA vers Odoo"
-            sequence="90"/>
+            name="Logs imports RIGA"
+            sequence="10"/>
+
     </data>
 </odoo>
-- 
GitLab