Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Rabobank internetbankieren en KMyMoney  (gelezen 24348 keer)

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Rabobank internetbankieren en KMyMoney
« Gepost op: 2009/02/06, 22:43:08 »
Als je Rabobank internetbankieren gebruikt, en je wilt graag je rekeningoverzicht importeren in KMyMoney, dan heb je daar een scriptje voor nodig. Hieronder een korte uitleg hoe je dat kan doen.


vervang hieronder overal "gebruikersnaamhierinvullen" door je gebruikersnaam:
1) Open een terminal

2) Maak een nieuwe (verborgen) map aan in je thuismap: ("." voor mapnaam maakt map verborgen!)
mkdir /home/gebruikersnaamhierinvullen/.Rabobank
2) Maak een scriptje aan in deze map:
(ipv nano kan je ook gedit gebruiken)
nano /home/gebruikersnaamhierinvullen/.Rabobank/rabocvs2qifen plak hierin de volgende tekst:
#!/usr/bin/python                                 

# A script to convert the comma separated data as supplied by the Rabobank (the Netherlands) to QIF file format.
# Based on csv2qif by Baruch Even, which can be downloaded from http://baruch.ev-en.org/proj/gnucash.html.     
# Amounts are positive when added to the account, negative when subtracted.                                     
# (C)2004 Jeroen van der Vegt, ajvdvegt (@) 123mail (.) org.                                                   
# Beetje veranderd door Thomas en Raymond                                                                       

import csv, string

def cleanrow(row):
        newrow = []
        for cell in row:
                cell = string.strip(cell, '\xa0')
                newrow.append(cell)             
        return newrow                           

class CSV2QIF_Base:
        def __init__(self):
                return     

        def run(self, filename):
                reader = csv.reader(file(filename))
                writer = file(self.basename() + '.qif', 'w')
                writer.write(self.qif_header())             
                writer.write('\n')                         
                for row in reader:                         
                        qifdata = self.row2qif(cleanrow(row))
                        if not qifdata: continue             
                        writer.write(self.qifdata2str(qifdata))
                        writer.write('^\n')                   
                writer.close()                                 

class Rabobank(CSV2QIF_Base):
        def basename(self): 
                return 'Rabobank'

        def qif_header(self):
                return '!Type:Bank'

        def row2qif(self, row):
                if len(row) < 11: return None
# orginele script:
#               return {'D': row[2], 'T': self.creditdebit(row[4], row[3]), 'P': row[6] + ", " + row[10], 'N': row[5]}
# aanpassing door thomas, weghalen bepaalde info ivm. bruikbaarheid in Kmymoney
#               return {'D': row[2], 'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'N': row[5]}
# aanpassing door Raymond, extra info gaat in memo veld
                return {'D': row[2],  'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'M': '[' + row[8] + '] ' + row[10] + " " + row[11] + " " + row[12] + " " + row[13], 'N': row[5]}

        def qifdata2str(self, data):
                s = ''
                for key in data.keys():
                        if key == 'D':
                                date = data[key]
                                s = s + key + date[0:4] + '-' + date[4:6] + '-' + date[6:8]
                        else:
                                s = s + key + data[key]

                        s = s + '\n'
                return s

# creditdebit returns a single number: a positive value indicate money added,
# a negative value indicated money spend. A 'D' in the transfertype field indicates
# that is is debit, 'C' (or actually anything but 'D') indicates credit.
        def creditdebit(self, credit, transfertype):
                if transfertype == 'D':
                        return '-' + credit;
                return credit;


if __name__ == '__main__':
        inputfilename = 'mut.txt'
        import sys
        instance = Rabobank()
        instance.run(inputfilename)
        print 'Done'

bewaar dit bestand en verlaat nano.
3) Maak nog een bestandje aan:
nano /home/gebruikersnaamhierinvullen/.Rabobank/RaboConvertplak hierin de volgende tekst, waar je "gebruikersnaamhierinvullen" vervangt door je gebruikersnaam, en wanneer je een Nederlandstalig systeem hebt "Desktop" door "Bureaublad":
#! /bin/bash
cd /home/gebruikersnaamhierinvullen/.Rabobank
cp /home/gebruikersnaamhierinvullen/Desktop/mut.txt /home/gebruikersnaamhierinvullen/.Rabobank/mut.txt
./rabocsv2qif mut.txt
rm /home/gebruikersnaamhierinvullen/Desktop/mut.txt
opslaan en nano verlaten
4) maak bestandjes uitvoerbaar: (verander weer gebruikersnaamhierinvullen door je gebruikersnaam)
chmod a+x /home/gebruikersnaamhierinvullen/.Rabobank/*5) maak een snelstarter knop naar het scriptje /home/gebruikersnaamhierinvullen/.Rabobank/RaboConvert zodat je deze makkelijk kan uitvoeren, of maak hiervoor een nieuw menu item aan.

Nu kan je naar de Rabobank site gaan, en daar download klikken, vervolgens data invullen, kiezen voor bestandsformaat kommagescheiden, aanmaken, en downloaden naar je desktop (bureaublad).
-> mut.txt verschijnt op je desktop
Vervolgens voer je het RaboConvert scriptje uit.
-> mut.txt verdwijnt van je desktop (bureaublad)
Start KMyMoney op, file->import->QIF
browse naar /home/gebruikersnaamhierinvullen/.Rabobank/Rabobank.qif (dit hoef je alleen de eerste keer te doen)
en druk op de knop import

kies het juiste acount en druk op ok.

De rest wijst zich van zelf, en zo niet, hoor ik het hier wel.
« Laatst bewerkt op: 2009/11/08, 20:26:49 door Thomas de Graaff »

Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #1 Gepost op: 2009/02/13, 14:38:30 »
Al vast bedankt voor je scripts om Rabo mutaties in te lezen. Ik heb je
beschrijving keurig gevolgd. Op mijn bureaublad staat een bestand mut.txt. In de map .Rabobank zie ik ook twee
uitvoerbare tekstbestanden met de juiste namen (rabocvs2qif en
Raboconvert) echter als ik ze uitvoer gebeurt er niets. Wat vergeet ik
hier?

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #2 Gepost op: 2009/02/13, 14:47:39 »
Al vast bedankt voor je scripts om Rabo mutaties in te lezen. Ik heb je
beschrijving keurig gevolgd. Op mijn bureaublad staat een bestand mut.txt. In de map .Rabobank zie ik ook twee
uitvoerbare tekstbestanden met de juiste namen (rabocvs2qif en
Raboconvert) echter als ik ze uitvoer gebeurt er niets. Wat vergeet ik
hier?
Als het goed zou werken, dan was de mut.txt verdwenen van je desktop na het uitvoeren van Raboconvert, en zou er in de map .Rabobank een nieuw bestand moeten staan, nl. Rabobank.qif. Aangezien dit blijkbaar niet gebeurt is er iets mis, wat dat weet ik niet.

Om te kijken waar er iets misgaat kan je het beste eerst even het mut.txt bestandje copieren naar de .Rabobank map waar ook de twee scrtipts staan. Navigeer naar deze map, en voer nu in die map het script rabocsv2qif uit. Als het goed is verschijnt dan een nieuw bestand in de map: Rabobank.qif.
Dus,
in een terminal:
./rabocsv2qif mut.txt
Als dat werkt, laat dat dan maar even weten. Dan zit de fout ergens anders.

met vriendelijke groet,
Thomas.

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #3 Gepost op: 2009/02/13, 14:55:09 »
Ik denk dat het ook nodig is om Python te installeren. Dat heb ik niet gedaan omdat deze op mijn systeem al geïnstalleerd is. Je kan Python vinden in synaptic.

edit: Je kan denk ik nakijken of je python heb door te kijken of het bestand /usr/bin/python aanwezig is. Dit bestand heeft het script nodig om uitgevoerd te kunnen worden.
« Laatst bewerkt op: 2009/02/13, 15:00:18 door tommie74 »

Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #4 Gepost op: 2009/02/17, 21:38:24 »
Als ik het script rabocvs2qif uitvoer in de map Rabobank, werkt het wel, er verschijnt nu een qif. bestand, het mut.txt bestandje blijft op het bureaublad staan. Via het terminalvenster en de code krijg ik de melding Map of bestand bestaat niet.
Verder heb ik een probleem bij het inrichten van Kmymoney: voordat ik kan importeren, moet ik een nieuwe rekening aanmaken. Nadat ik alle tabbladen heb doorlopen, kan ik op het laatste tabblad niet voor voltooien kiezen omdat de knop lichtgrijs blijft.

Groeten
Lambert

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #5 Gepost op: 2009/02/17, 22:04:59 »
Kan je in een terminal navigeren naar de .Rabobank map, en dan de output van het volgende commando hier posten, inclusief de hele regel waar je het commando in hebt getikt?
cat RaboConvert
Je vraag over het aanmaken van een nieuwe rekening, ik zou niet weten wat het probleem kan zijn. Als ik nadat ik in het menu heb gekozen voor Add new account in het venster dat verschijnt steeds kies voor next, en een naam invul voor de rekening als dat gevraagd wordt, dan wordt er bij mij zonder problemen een rekening toegevoegd (checking).

Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #6 Gepost op: 2009/02/20, 16:00:04 »

lve@lve-desktop:~$ /home/lve/.Rabobank
bash: /home/lve/.Rabobank: is een map
lve@lve-desktop:~$ cat Raboconvert
cat: Raboconvert: Bestand of map bestaat niet
lve@lve-desktop:~$

Is dit wat je vraagt? Probleem van de nieuwe rekening is opgelost.

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #7 Gepost op: 2009/02/20, 16:15:09 »
Als je naar een directory wilt navigeren in een terminal moet je voor het pad het commando "cd" zetten.

dus

cd /home/lve/.Rabobank
vervolgens het commando:

cat RaboConvert
Let op de hoofdletters: Raboconvert is niet hetzelfde als RaboConvert.

Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #8 Gepost op: 2009/02/20, 16:29:37 »
lve@lve-desktop:~$ cd /home/lve/.Rabobank
lve@lve-desktop:~/.Rabobank$ cat RaboConvert
#! /bin/bash
cd /home/lve/.Rabobank
cp /home/lve/Desktop/mut.txt /home/lve/.Rabobank/mut.txt
./rabocsv2qif mut.txt
rm /home/lve/Desktop/mut.txt
lve@lve-desktop:~/.Rabobank$


Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #9 Gepost op: 2009/02/20, 16:48:12 »
Ziet er toch goed uit..

Heb je misschien eerder ook Raboconvert uitgevoerd ipv. RaboConvert?

zet maar eens een mut.txt op de desktop, en dan in een terminal:
/home/lve/.Rabobank/RaboConvertdan zou er volgens mij in de map .Rabobank een nieuwe Rabobank.qif moeten staan.

Als het niet werkt, post dan de melding in de terminal eens?


Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #10 Gepost op: 2009/02/20, 18:56:58 »
Vooraf: op de desktop staat een mut.txt-bestandje. Bij het uitvoeren van de opdracht krijg ik de volgende reactie:
lve@lve-desktop:~$ /home/lve/.Rabobank/RaboConvert
cp: kan status van `/home/lve/Desktop/mut.txt' niet opvragen: Bestand of map bestaat niet
Traceback (most recent call last):
  File "./rabocsv2qif", line 71, in <module>
    instance.run(inputfilename)
  File "./rabocsv2qif", line 23, in run
    reader = csv.reader(file(filename))
IOError: [Errno 2] No such file or directory: 'mut.txt'
rm: kan `/home/lve/Desktop/mut.txt' niet verwijderen: Bestand of map bestaat niet
lve@lve-desktop:~$

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #11 Gepost op: 2009/02/20, 20:17:12 »
klopt het pad naar je desktop zoals in het script wel?

/home/lve/Desktop/mut.txt

of heeft jouw desktop misschien een ander pad?


Offline lve

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #12 Gepost op: 2009/02/21, 15:39:30 »
Yes, we are in business!! Ja natuurlijk, was de oplossing. Op mijn computer heet Desktop Bureaublad. Na wijziging van het scriptje functioneert alles naar behoren. Ik heb ook al de eerste gegevens geïmporteerd in Kmymoney, ziet er allemaal prima uit.
Rest me alleen nog om je hartelijk te bedanken voor de assistentie.

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #13 Gepost op: 2009/02/21, 15:55:23 »
Gelukkig!

Ik wist niet dat de naam van de bureaubladmap in een Nederlandstalig systeem ook Nederlands is. Ik gebruik zelf een Engelstalig systeem. Bedankt voor de feed-back, dan kan ik de instructies aanpassen zodat iemand anders niet weer dat probleem tegenkomt!

r1z8

  • Gast
Re: Rabobank internetbankieren en KMyMoney
« Reactie #14 Gepost op: 2009/10/03, 12:07:41 »
Hallo Thomas,

Hoop dat deze topic je nog bereikt, bedankt vooraleerst voor al je moeite ... Ik heb je scripts geinstalleerd, de paden goedstaan (*username/Bureaublad*) , ik heb python geinstalleerd en rechten uitgedeeld over de map .Rabob* zoals je hebt aangegeven..
In het menu heb ik de shortcut geinstalleerd.
Maar mut.txt wordt niet opgepakt door het conversiescript. Hij blijft in .Rabo* staan en er gebeurt nikss. Als ik in de terminal in .Rabob ga staan en de scripts uitvoer dan krijg ik "bash: rabocvs2qif: opdracht niet gevonden" c.q. "bash: RaboConvert: opdracht niet gevonden"

Ik heb alles uitgevoerd als gewone user. Is vast iets heel sufs ... ben nog niet zo thuis in Linux.
Any ideas?

mvg,
Ruben

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #15 Gepost op: 2009/10/04, 23:00:36 »
Allereerst, als je in de .Rabobank map staat, dan kan je de scripts niet uitvoeren door de naam in te toetsen en enter. Je moet dan het volgende intoetsen:
./rabocvs2qif
Als ik het goed begrijp werkt het mut.txt bestandje door het script wel verplaatst van de desktop waar je deze gedownload hebt naar de .Rabobank directory in je thuismap?

Is dat het geval, probeer dan het rabo2qif scriptje eens uit te voeren op de bovenstaande manier (met ./ ervoor dus). Kijk dan eens of je een foutmelding krijgt?

Is dat niet het geval, laat het dan even weten.

Offline canti

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #16 Gepost op: 2009/10/05, 13:49:50 »
beste Thomas,

Dat ziet interessant uit. Ik gebruik ook Rabobank Internetbankieren, maar ik heb een Gnome, geen KDE. Ik kan dus waarschijnlijk geen KMyMoney gebruiken. Zou jouw methode in principe ook uitvoerbaar kunnen zijn voor andere vergelijkbare programma's voor Gnome, zoals Gnucash?

canti

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #17 Gepost op: 2009/10/05, 14:57:39 »
Ik gebruik Kmymoney op een xfce desktop. Onder gnome gaat ook prima. Het opstarten van het programma duurt alleen wat langer omdat er ook een boel KDE pakketten geladen moeten worden. Daarnaast is de integratie iets minder, maar goed, dat is niet zo erg, het ziet er wat anders uit.

Offline rymnd

  • Lid
    • Bekijk profiel
    • Stuff that matters
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #18 Gepost op: 2009/10/27, 23:11:03 »
Hoi Thomas en andere,

Terwijl ik googleloerde naar rabobank en converteren naar qif kwam ik hier uit. Prachtig scriptje, werkt prima.
Paar kleine dingen waar ik tegen aan liep:
- Omschrijving niet helemaal compleet
- Code (ba, ga, ma, db, sb,  etc) niet implementeerbaar (of toch wel)

Scriptje iets of wat aangepast zodat de volledige omschrijving werd weggeschreven naar het qif bestand.
return {'D': row[2], 'T': self.creditdebit(row[4], row[3]), 'P': row[6] + ", " + row[10] + " " + row[11] + " " + row[12] + " " + row[13], 'N': row[5]}

PALBERT HEIJN 8989 ERGENS Pinautomaat 16:04 pasnr. 011   
N0000000000
D2008-10-31
T-24.25
^

NIET HANDIG! Nu de omschrijving zo uitgebreid is wordt daarmee onmogelijk gemaakt om op basis van bijv. kernwoord "Albert Heijn" meerdere transacties automatisch toe te kennen aan rubrieken. Immers is het tijdstip nooit uniek en dien je dus bij "Relaties" de afzonderlijke transacties manueel toe te voegen. Geen optie!

Aan de andere kant is de omschrijving in row[6] soms erg cryptisch waar je niet veel mee kunt op dat moment. Dus wil je de extra velden ergens in kmymoney stoppen zodat deze inzichtelijk worden. Daar heb ik het volgende op gevonden namelijk het toevoegen van het "M-veld".

return {'D': row[2],  'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'M': row[10] + " " + row[11] + " " + row[12] + " " + row[13], 'N': row[5]}

PALBERT HEIJN 8989 ERGENS
N0000000000
MPinautomaat 16:04 pasnr. 011   
D2008-10-31
T-24.25
^

Mocht je ook willen weten hoe de betaling is gegaan op basis van de Code, dan kun je regel veranderen in:
return {'D': row[2],  'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'M': '[' + row[8] + '] ' + row[10] + " " + row[11] + " " + row[12] + " " + row[13], 'N': row[5]}

PALBERT HEIJN 8989 ERGENS
N0000000000
M[ba] Pinautomaat 16:04 pasnr. 011   
D2008-10-31
T-24.25
^

Het "M" veld is in kmymoney terug te vinden in de "Kasboeken" onderaan het scherm bij omschrijving "Notitie".

Cheers,
Raymond.

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #19 Gepost op: 2009/10/28, 10:55:28 »
Heel mooi Raymond, ik ga er eens naar kijken. :) Ik had zelf juist die uitgebreide omschrijvingen uit het orginele script weggehaald omdat ik dat onhandig vond. Maar jij hebt als ik het goed begrepen heb een manier gevonden om dit toch handig te maken. Ik ben benieuwd, ga er binnenkort naar kijken.

Thx!

Ik zal voorlopig aan de eerste post in deze draad een verwijzing naar jouw bericht toevoegen. Als ik het later getest heb, dan integreer ik jouw oplossing in de eerste post.

edit: de wijziging van Raymond is in het script opgenomen, de extra info komt in het memo veld in Kmymoney.
« Laatst bewerkt op: 2009/10/28, 15:27:56 door Thomas de Graaff »

Offline Tecumseh

  • Lid
    • Bekijk profiel
    • http://tecumseh.homeip.net
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #20 Gepost op: 2009/11/08, 19:30:59 »
Ik krijg het helaas niet voor elkaar. Zowel op een recent geïnstalleerd Kubuntu Karmic pc als op mijn (via alpha's) geupgrade versie van Kubuntu Karmic krijg ik dezelfde foutmelding:

Citaat
tecumseh@Athlan:~/.Rabobank$ ./rabocvs2qif mut.txt
  File "./rabocvs2qif", line 50
    def qifdata2str(self, data):
    ^
IndentationError: unexpected indent

Ik heb al geprobeerd om alle tabs te converteren naar spaties. Ik heb zelfs al handmatig alle tabs vervangen door 4 spaties. Ook heb ik alle tabs eruit gehaald en handmatig alle regels geindent. Geen idee wat ik verder nog zou kunnen doen om het werkende te krijgen.

Kortom Help!

Offline Tecumseh

  • Lid
    • Bekijk profiel
    • http://tecumseh.homeip.net
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #21 Gepost op: 2009/11/08, 20:09:09 »
Na een bezoek aan de chat ben ik met hulp van een aantal mensen op het juiste antwoord gekomen. Regel 48 mist namelijk een inspringing van 2 tabs. Om de boel compleet te maken post ik hier het juiste codeblok van rabocvs2qif:

#!/usr/bin/python                                 

# A script to convert the comma separated data as supplied by the Rabobank (the Netherlands) to QIF file format.
# Based on csv2qif by Baruch Even, which can be downloaded from http://baruch.ev-en.org/proj/gnucash.html.     
# Amounts are positive when added to the account, negative when subtracted.                                     
# (C)2004 Jeroen van der Vegt, ajvdvegt (@) 123mail (.) org.                                                   
# Beetje veranderd door Thomas en Raymond                                                                       

import csv, string

def cleanrow(row):
        newrow = []
        for cell in row:
                cell = string.strip(cell, '\xa0')
                newrow.append(cell)             
        return newrow                           

class CSV2QIF_Base:
        def __init__(self):
                return     

        def run(self, filename):
                reader = csv.reader(file(filename))
                writer = file(self.basename() + '.qif', 'w')
                writer.write(self.qif_header())             
                writer.write('\n')                         
                for row in reader:                         
                        qifdata = self.row2qif(cleanrow(row))
                        if not qifdata: continue             
                        writer.write(self.qifdata2str(qifdata))
                        writer.write('^\n')                   
                writer.close()                                 

class Rabobank(CSV2QIF_Base):
        def basename(self): 
                return 'Rabobank'

        def qif_header(self):
                return '!Type:Bank'

        def row2qif(self, row):
                if len(row) < 11: return None
# orginele script:
#               return {'D': row[2], 'T': self.creditdebit(row[4], row[3]), 'P': row[6] + ", " + row[10], 'N': row[5]}
# aanpassing door thomas, weghalen bepaalde info ivm. bruikbaarheid in Kmymoney
#               return {'D': row[2], 'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'N': row[5]}
# aanpassing door Raymond, extra info gaat in memo veld
                return {'D': row[2],  'T': self.creditdebit(row[4], row[3]), 'P': row[6], 'M': '[' + row[8] + '] ' + row[10] + " " + row[11] + " " + row[12] + " " + row[13], 'N': row[5]}

        def qifdata2str(self, data):
                s = ''
                for key in data.keys():
                        if key == 'D':
                                date = data[key]
                                s = s + key + date[0:4] + '-' + date[4:6] + '-' + date[6:8]
                        else:
                                s = s + key + data[key]

                        s = s + '\n'
                return s

# creditdebit returns a single number: a positive value indicate money added,
# a negative value indicated money spend. A 'D' in the transfertype field indicates
# that is is debit, 'C' (or actually anything but 'D') indicates credit.
        def creditdebit(self, credit, transfertype):
                if transfertype == 'D':
                        return '-' + credit;
                return credit;


if __name__ == '__main__':
        inputfilename = 'mut.txt'
        import sys
        instance = Rabobank()
        instance.run(inputfilename)
        print 'Done'

Met dank aan JanC voor het verlossende antwoord!

En hier de werkende uitvoer:

Citaat
tecumseh@Athlan:~/.Rabobank$ ./rabocvs2qif mut.txt
Done
tecumseh@Athlan:~/.Rabobank$

Offline Thomas de Graaff

  • Lid
    • Bekijk profiel
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #22 Gepost op: 2009/11/08, 20:27:26 »
Thx! Ik heb de eerste post aangepast.

Offline rymnd

  • Lid
    • Bekijk profiel
    • Stuff that matters
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #23 Gepost op: 2009/12/30, 15:25:03 »
Hoi Allen,

Ik heb nog wat gepoetst aan mijn "RaboConvert" bestand. Was niet helemaal happy hoe transacties van een bepaald type niet goed "automatisch" te onderscheiden waren. Nou had ik eerder het M-veld uitgebreid door extra omschrijving meegegeven zodat transacties beter te herkennen zijn.
 
Doel is nu de transactie dusdanig te hernoemen zodat het door kMyMoney automatisch aan een relatie/rubriek kan worden gekoppeld.

Ik geef het volgende voorbeeld:
Stel je hebt meerdere voertuigen. Daarover, mits het oldtimers zijn, dient wegenbelasting betaald te worden.
Mocht je het python script gebruiken zoals dat hier te vinden is, dan zul je zien dat het P-Veld wordt gevuld met "belastingdienst" en de rest namelijk het betalingskenmerk, kenteken, tijdvak, etc, in het M-Veld.

Maar wat als je nu 2 vervoersmiddelen hebt. Dan kun je alleen manueel het onderscheid maken kijkend naar het M-veld (notitie veld in kMyMoney). Op basis van deze informatie kun je dit dan onderbrengen in de rubrieken die je daarvoor hebt aangemaakt.

Nou is belastingdienst één voorbeeld hiervan maar zo zijn er meerdere. Nou ben ik IT-er van beroep en als ik ergens een hekel aan heb is het herhalen van taken die geautomatiseerd dienen te worden!

Dus hoe lossen we dit op? Met sed!
Sed - editor voor het filteren en manipuleren van tekst (stringen).
man sed , voor de liefhebbers, maar feitelijk komt het hierop neer:
SYNTAX: sed s/zoek_een_string/wijzig_de_string/ input.file > output.file
Verder zie je dat ik output.file na elke change hernoem naar de input.file om daar de volgende actie op uit te voeren.

Ik neem hier even mijn belastingdienst voorbeeld:
sed s/'92.00,\"P2433588\",\"BELASTINGDIENST\"'/'92.00,\"P2433588\",\"BELASTINGDIENST RA-CE-00\"'/ ./mut.txt > ./mut.tmp && mv ./mut.tmp ./mut.txt

Als zoek string neem ik dus: /'92.00,\"P2433588\",\"BELASTINGDIENST\"'
en deze vervang ik met: /'92.00,\"P2433588\",\"BELASTINGDIENST RA-CE-00\"'/

In Rabobank.qif wordt het dan zo gepresenteerd:
PBELASTINGDIENST RA-CE-00
NP2433588
M[ma] BETALINGSKENM.  315xxxxxxxxxx RA-CE-00 3E MND TIJDVAK 26/09/09-26/12/09 BELASTINGDIENST
D2009-12-28
T-92.00
^

NADEEL:
Elke keer als het termijnbedrag wordt verhoogt, met een euro of wat, dan voldoet de search niet aan het criteria en zal niet worden aangepast. Dat is dan gelijk ook een trigger aangezien je dit dan weer handmatig in kMyMoney moet doen. Dus dan pas je RaboConvert aan en het marcheert weer.

Rest mij nog een ieder een zeer goed en gezond Nieuwjaar te wensen.

Groet,
Raymond.


Offline rymnd

  • Lid
    • Bekijk profiel
    • Stuff that matters
  • Steunpunt: Nee
Re: Rabobank internetbankieren en KMyMoney
« Reactie #24 Gepost op: 2010/01/04, 23:00:12 »
Hoi Allen,

Ik heb nog wat gepoetst aan mijn "RaboConvert" bestand. Was niet helemaal happy hoe transacties van een bepaald type niet goed "automatisch" te onderscheiden waren. Nou had ik eerder het M-veld uitgebreid door extra omschrijving meegegeven zodat transacties beter te herkennen zijn.
 
Doel is nu de transactie dusdanig te hernoemen zodat het door kMyMoney automatisch aan een relatie/rubriek kan worden gekoppeld.

Ik geef het volgende voorbeeld:
Stel je hebt meerdere voertuigen. Daarover, mits het oldtimers zijn, dient wegenbelasting betaald te worden.
Mocht je het python script gebruiken zoals dat hier te vinden is, dan zul je zien dat het P-Veld wordt gevuld met "belastingdienst" en de rest namelijk het betalingskenmerk, kenteken, tijdvak, etc, in het M-Veld.

Maar wat als je nu 2 vervoersmiddelen hebt. Dan kun je alleen manueel het onderscheid maken kijkend naar het M-veld (notitie veld in kMyMoney). Op basis van deze informatie kun je dit dan onderbrengen in de rubrieken die je daarvoor hebt aangemaakt.

Nou is belastingdienst één voorbeeld hiervan maar zo zijn er meerdere. Nou ben ik IT-er van beroep en als ik ergens een hekel aan heb is het herhalen van taken die geautomatiseerd dienen te worden!

Dus hoe lossen we dit op? Met sed!
Sed - editor voor het filteren en manipuleren van tekst (stringen).
man sed , voor de liefhebbers, maar feitelijk komt het hierop neer:
SYNTAX: sed s/zoek_een_string/wijzig_de_string/ input.file > output.file
Verder zie je dat ik output.file na elke change hernoem naar de input.file om daar de volgende actie op uit te voeren.

Ik neem hier even mijn belastingdienst voorbeeld:
sed s/'92.00,\"P2433588\",\"BELASTINGDIENST\"'/'92.00,\"P2433588\",\"BELASTINGDIENST RA-CE-00\"'/ ./mut.txt > ./mut.tmp && mv ./mut.tmp ./mut.txt

Als zoek string neem ik dus: /'92.00,\"P2433588\",\"BELASTINGDIENST\"'
en deze vervang ik met: /'92.00,\"P2433588\",\"BELASTINGDIENST RA-CE-00\"'/

In Rabobank.qif wordt het dan zo gepresenteerd:
PBELASTINGDIENST RA-CE-00
NP2433588
M[ma] BETALINGSKENM.  315xxxxxxxxxx RA-CE-00 3E MND TIJDVAK 26/09/09-26/12/09 BELASTINGDIENST
D2009-12-28
T-92.00
^

NADEEL:
Elke keer als het termijnbedrag wordt verhoogt, met een euro of wat, dan voldoet de search niet aan het criteria en zal niet worden aangepast. Dat is dan gelijk ook een trigger aangezien je dit dan weer handmatig in kMyMoney moet doen. Dus dan pas je RaboConvert aan en het marcheert weer.

Rest mij nog een ieder een zeer goed en gezond Nieuwjaar te wensen.

Groet,
Raymond.

Nog een voobeeld:
Stel je hebt een aantal spaarrekeningen lopen die automatisch geïncasseerd worden. Bijvoorbeeld "spaarpot kind1", "spaarpot kind2" en "spaarpot algemeen". Nu zie ik in de "Betalen aan" omschrijving alleen maar de instantie, iets als "Spaarbank". In het notitie-veld staat de rest van de informatie. Opnieuw dit is onvoldoende om het automatisch te laten rubriceren.

Dit lossen we als volgt op:
sed `grep -n 'spaarpot kind1' ./mut.txt | awk -F: '{print $1}'`s/'spaarbank'/'spaarbank spaarpot kind1'/ ./mut.txt > ./mut.tmp && mv ./mut.tmp ./mut.txt
sed `grep -n 'spaarpot kind2' ./mut.txt | awk -F: '{print $1}'`s/'spaarbank'/'spaarbank spaarpot kind2'/ ./mut.txt > ./mut.tmp && mv ./mut.tmp ./mut.txt
sed `grep -n 'spaarpot algemeen' ./mut.txt | awk -F: '{print $1}'`s/'spaarbank'/'spaarbank spaarpot algemeen'/ ./mut.txt > ./mut.tmp && mv ./mut.tmp ./mut.txt

Als je de code uit elkaar haalt wordt het volgende uitgevoerd:
Zoek in mut.txt naar opgegeven string. De '-n' flag geeft naast de output het regelnummer vooraan weer :
grep -n 'spaarpot kind1' ./mut.txtAwk print de eerste kolom '$1' tot aan de delimeter ':' (-F flag) en geeft deze door aan sed
awk -F: '{print $1}' sed wordt nu uitgevoerd met een cijfer (regelnummer) voor 's'. Sed zal nu ALLEEN deze regel aanpassen!

Uiteraard kun je een en ander testen zonder de wijzigingen op te slaan in je mut.txt door het volgende aan te roepen:
grep -n 'Unieke zoekstring' ./mut.txt | awk -F: '{print $1}'
Cheers,
Raymond.




« Laatst bewerkt op: 2010/01/04, 23:05:46 door rymnd »