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