Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/02/2011, à 22:31

toitoinebzh

[script] correction fichier .qif fortuneo, credit mutuel, boursorama

Bonjour,

j'ai fait un petit script avec mes faibles connaissances en programmation

il permet de corriger les fichiers .qif du crédit mutuel et fortuneo, boursorama

les fichiers qif permettent d'exploiter les opérations bancaires que l'on fait sur son compte bancaire
ces deux banques ne respectent pas le format standard (j'ai essayé de les contacter la dessus, sans succès pour l'instant)

par conséquent lorsque je tentais d'importer leur fichier  dans homebank, ça fonctionnait mal roll
https://answers.launchpad.net/homebank/+question/143980

voila le script en question (écrit en python)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

# correctQif.py
##                                                   ##
# script pour corriger les fichiers .qif CMB FORTUNEO #
# nom du fichier à mettre en argument du script       #
# python correctQif fichier_a_corriger.qif            #
# un fichier sortie.qif est obtenue en sortie         #
##                                                   ##

import sys

if len(sys.argv) == 2 :
    
    fichier = sys.argv[1]
    print "Correction du fichier "+fichier
    fichier_entree=open(fichier,'r')
    fichier_sortie=open('sortie.qif','w')
    ligne=fichier_entree.readlines()
    for txt in ligne:
        
            if txt[0]=="P":
                    txt="M"+txt[1:]
            
            if txt[0]=="T":
                    txt=txt.replace("+","")  
            
            fichier_sortie.write(str(txt))
            
    fichier_entree.close()
    fichier_sortie.close()
    
else:
    print "Merci de mettre un seul fichier .qif en argument"

edit 10/06/2012 : mise a jour du script

Dernière modification par toitoinebzh (Le 10/06/2012, à 19:36)

Hors ligne

#2 Le 16/02/2011, à 22:51

Merle

Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama

Salut ton script m'intéresse parce que je fais aussi mes comptes sur Homebank avec un compte au crédit mutuel comme toi, par contre je ne sais pas trop comment fonctionne un script ... tu pourrais m'expliquer ? (si c'est pas trop long).

Merci.

Hors ligne

#3 Le 17/02/2011, à 19:24

toitoinebzh

Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama

salut

en faite, ce script modifie légèrement les fichiers .qif que tu peux télécharger sur le site internet du crédit mutuel

1 > lance gedit ou autre logiciel de texte, colle le code que j'ai donné  et enregistre en tant que correctQif.py dans ton dossier personnel
2 > récupère un fichier qif (appelons le releve.qif) du credit mutuel et met le dans ton dossier personnel
3 > ouvre un terminal puis tape

python correctQif.py releve.qif

4 > un fichier sortie.qif sera créé
5 > lance homebank, fichier, importer qif, sélectionne le fichier sortie.qif
tes données sont maintenant accessibles, tu peux les associer à un compte que tu as déjà crée

Dernière modification par toitoinebzh (Le 17/02/2011, à 19:28)

Hors ligne

#4 Le 17/02/2011, à 20:03

Merle

Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama

Merci ça marche nickel.

Hors ligne

#5 Le 16/07/2012, à 19:56

toitoinebzh

Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama

salut

mise a jour du programme
cette fois il y a une interface graphique smile

#!/usr/bin/env python
# -*- coding:Utf-8 -*-

import pygtk
pygtk.require('2.0')
import gtk
import os

class FichierQif:
    def __init__(self,chemin):
        self.chemin=chemin
        return
        
    def corriger(self):
        #print "Lecture en cours"
        fichier_entree=open(self.chemin,'r')
        ligne=fichier_entree.readlines()
        self.version_corrigee=[]
        #print "Correction en cours"
        for txt in ligne:
            if txt[0]=="P":
                txt="M"+txt[1:]
            if txt[0]=="T":
                txt=txt.replace("+","")   
            self.version_corrigee.append(str(txt))
        fichier_entree.close()
        #print "Correction terminée"
        return
        
    def ecrire(self,fichier_sortie):
        #print "Ecriture en cours"                
        fichier_sortie=open(str(fichier_sortie),'w')
        for txt in self.version_corrigee:
            fichier_sortie.write(str(txt))
        fichier_sortie.close()
        #print "Ecriture terminée"
        return


class Interface :
    def __init__(self):
        self.filename,self.nom_fichier,self.extension=None,None,None
        # fenetre
        self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.fenetre.set_title("correctQif")
        self.fenetre.set_default_size(400,400)
        self.fenetre.set_position(gtk.WIN_POS_CENTER)
        self.fenetre.connect("destroy", gtk.main_quit)
        # label
        chaine_haut="<b>Programme pour corriger les fichiers .qif défectueux de\n Boursorama, Fortunéo et du Crédit Mutuel de Bretagne</b>"
        self.texte_haut = gtk.Label(chaine_haut) # on crée un label
        self.texte_haut.set_use_markup(True)
        self.texte_milieu = gtk.Label("En attente de sélection de fichier") # on crée un label
        self.texte_bas = gtk.Label("") # on crée un label
        # bouton
        self.bouton_selection_fichier = gtk.Button('Choisir le fichier')
        self.bouton_selection_fichier.set_border_width(10)
        self.bouton_selection_fichier.connect("clicked", self.ouvrir_fichier )
        
        self.bouton_correction_fichier = gtk.Button('Corriger le fichier')
        self.bouton_correction_fichier.set_border_width(10)
        self.bouton_correction_fichier.connect("clicked", self.corriger_fichier )
        # grille
        self.grille = gtk.VBox(homogeneous=True, spacing=0)
        self.grille.pack_start(self.texte_haut)
        self.grille.pack_start(self.bouton_selection_fichier)
        self.grille.pack_start(self.texte_milieu)
        self.grille.pack_start(self.bouton_correction_fichier)
        self.grille.pack_start(self.texte_bas)
        
        self.fenetre.add(self.grille)
        # 
        self.fenetre.show_all()
        return
        
    def corriger_fichier(self,widget):
        if self.filename :
            if  self.extension.lower()==".qif":
                fichier_qif=FichierQif(self.filename)
                fichier_qif.corriger()
                fichier_sortie=self.nom_fichier+"_correct.qif"
                fichier_qif.ecrire(fichier_sortie)
                self.texte_bas.set_text("<big><span foreground=\"green\">Correction terminée</span></big>")
                self.texte_bas.set_use_markup(True)
                self.filename,self.nom_fichier,self.extension=None,None,None
            else:
                self.texte_bas.set_text("<big><span foreground=\"red\">Mauvais fichier</span></big>")
                self.texte_bas.set_use_markup(True)
        return
        
    def ouvrir_fichier(self,widget) :
        self.texte_bas.set_text("")
        dialogue = gtk.FileChooserDialog("Sélection fichier .qif", 
                                        None,
                                        gtk.FILE_CHOOSER_ACTION_OPEN,
                                        (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                         gtk.STOCK_OPEN, gtk.RESPONSE_OK))
        dialogue.set_default_response(gtk.RESPONSE_OK)
        pathname=os.getcwdu()
        dialogue.set_current_folder(pathname)
        reponse = dialogue.run()
        if reponse == gtk.RESPONSE_OK:
            self.filename=dialogue.get_filename()
            self.nom_fichier,self.extension=os.path.splitext(self.filename)
            print self.filename
            self.texte_milieu.set_text(self.filename)
        elif reponse == gtk.RESPONSE_CANCEL:
            print 'On ferme, pas de fichier sélectionné'
        dialogue.destroy()
        return

if __name__ == "__main__":
    Interface()
    gtk.main()

pour utiliser le programme
1 -copier coller le texte dans un fichier que l'on nomme correcQif.py par exemple
2 - clic droit sur le fichier , aller dans les propriétés et rendre le fichier executable
3 - double clique sur le fichier, l'interface graphique se lancera toute seule

Hors ligne