Nieuws:

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

Auteur Topic: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)  (gelezen 1965 keer)

Offline wowo

  • Lid
  • Steunpunt: Nee
Hulp gevraagd voor een script waarmee ik mijn ING-bank csv-bestanden kan omzetten naar het formaat wat ingelezen kan worden in HomeBank (QIF – formaat of OFX - formaat)
ING-bank csv bestanden hebben als datumformaat jjjjmmdd en de velden worden gescheiden door een "," (een komma dus).
Positieve waarden worden aangegeven door de kolom "Bij" en negatieve waarden worden aangegeven door de kolom "Af".
De kolomhoofden die de ING-bank gebruikt zijn achtereenvolgens:
Datum            (= HomeBank date)
Naam / Omschrijving      (= HomeBank payee)   
Rekening            (= HomeBank ??) Is de eigen bankrekening
Tegenrekening         (= HomeBank ??) Kan in feite aan de payee toegevoegd worden
Code               (= HomeBank ??) Is in feite een afkorting voor de Mutatiesoort
Af Bij            (= HomeBank ??) Om negatieve bedragen te kunnen duiden
Bedrag (EUR)         (= HomeBank amount)
Mutatiesoort         (= HomeBank Category)
Mededelingen         (= HomeBank memo)

Ik heb ook een online .csv naar qif converter gevonden (in php geschreven) die gebruikt kan worden voor ABN/Amro; ING ; Rabobank en BCEE :
http://www.matthijsmelissen.nl/qif/ maar ik vertrouw mijn bank gegevens liever niet zomaar over het internet. Hij werkt ook niet perfect want de Mededelingen worden ook toegevoegd aan de Payee. Ook wordt bij dit online script de rekening informatie (= eigen bankrekening bv), niet gevonden.
Ook heb ik een python script gevonden HB_Convert; https://github.com/profiler/HB_Convert ) waarmee je van allerlei .csv formaten een QIF formaat kan maken. Helaas snap ik niet hoe ik dit python script aan kan passen voor mijn gebruik.

Wie heeft er een werkzaam script voor mij of kan er een maken?
nb Ik heb als bijlage een test-csv bestand bijgevoegd van de ing.
« Laatst bewerkt op: 2016/01/31, 11:49:19 door wowo »
Desktop Ubuntu 16.04 LTS

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank cvs-bestand naar HomeBank QIF (of OFX)
« Reactie #1 Gepost op: 2016/01/31, 08:20:49 »
Wowo,

Ten eerste gebruik ik geen HomeBank.
Wat ik lees, is dat HomeBank een cvs bestand kan importeren.

Wat je kan doen is de cvs bestand van uw internet bankieren in Calc gaat bewerken.
Daarme bedoel ik mee de hoofdding en cel notatie's, datum, bij cijfers tekst of getallen etc etc.
Maw wat wil HomeBank.
Dan even uitzoeken hoe je bij Calc zeg dat de cvs bestand met een komma of punt-komma moet opslaan.


PS,
Ik verdiep mij meer in Excel dan in Calc (Werk)
« Laatst bewerkt op: 2016/01/31, 08:27:47 door MauRice2 »
MvG,
MauRice
Registered Linux user: 473556

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #2 Gepost op: 2016/01/31, 11:53:54 »
Even wat rechtzetten: cvs moet natuurlijk csv wezen ...

Klopt: HomeBank heeft ook de mogelijkheid om csv bestanden in te lezen maar dan moeten ze wel het csv formaat van HomeBank volgen, anders kunnen ze niet ingelezen worden:
Transaction
date               format must be DD-MM-YY
paymode from 0=none to 10=FI fee
info         a string
payee         a payee name
memo         a string
amount a number with a '.' or ',' as decimal separator, ex: -24.12 or 36,75
category a full category name (category, or category:subcategory)
tags        tags separated by space
                       tag is mandatory since v4.5

Example:

15-02-04;0;;;Some cash;-40,00;Bill:Withdrawal of cash;tag1
15-02-04;1;;;Internet DSL;-45,00;Inline service/Internet;tag2
...


Zelf heb ik handmatig een csv bestand aangepast (kolomhoofden verwijderen; de volgorde van de kolommen veranderen en sommige verwijderen) en dit kon ik vervolgens inlezen in HomeBank:
Bij het opslaan kon ik met een zgn filter aangeven dat de "," vervangen moest worden door ";".
Dat handmatig veranderen is natuurlijk geen doen voor al die transacties.
Eventueel zou daar een macro voor geschreven kunnen worden maar dat kan ik helaas ook niet javascript?).

ps HomeBank is mi een leuk eenvoudig bankprogramma voor thuis/privé gebruik wat ook nog eens goed up to date gehouden wordt.http://homebank.free.fr/index.php
« Laatst bewerkt op: 2016/01/31, 12:00:40 door wowo »
Desktop Ubuntu 16.04 LTS

Offline Anco

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank cvs-bestand naar HomeBank QIF (of OFX)
« Reactie #3 Gepost op: 2016/01/31, 12:31:59 »
Zo te zien is het alleen nodig om definitie file te maken voor ing, met redelijke uitleg hoe die gemaakt moet worden.

Ik zal ff kijken of snel wat ervan kan maken
Linux user #485563

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank cvs-bestand naar HomeBank QIF (of OFX)
« Reactie #4 Gepost op: 2016/01/31, 13:14:45 »
Zo te zien is het alleen nodig om definitie file te maken voor ing, met redelijke uitleg hoe die gemaakt moet worden.

Ik zal ff kijken of snel wat ervan kan maken
Bij dat python script HB_Convert (https://github.com/profiler/HB_Convert hoeft inderdaad enkel een zgn definitie file gemaakt te worden. De uitleg die erbij gegeven wordt, kreeg ik helaas maar niet gesnapt.:(
Hopelijk heb jij meer succes.
Desktop Ubuntu 16.04 LTS

Offline HarzG

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #5 Gepost op: 2016/01/31, 15:30:10 »
Ik gebruik geen HomeBank, maar Calc.

De definitiebestanden bij HB_convert zijn voor de meeste banken niet meer actueel - met de komst van IBAN hebben veel banken aan de exportformaten gesleuteld. Ik had daar ook last van.
Ken je deze forumdiscussie? Toen hebben ook een paar script-schrijvers mij en anderen op het juiste spoor kunnen zetten.

[OT]Het bestand wat je als voorbeeld had aangeboden, bevat tekens/opmaak die LibreOffice Calc met de standaardinstellingen anders interpreteert dan wenselijk. Met een paar aanpassingen lukt het dan wel om het goed in te lezen (zie bijlage). Maar deze opmerking is meer voor de tipgevers die via Calc pogingen doen om voor je uitdaging een oplossing te vinden. ... zie bijlage.[/OT]
Xubuntu 16.04; siduction-15.1.0 Xfce

Offline MauRice2

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #6 Gepost op: 2016/01/31, 15:40:16 »
Wowo,

Je hoeft niet perse met een macro te werken.
Ik ken mij weg alleen met Excel VBA

Maar met de ingebouwde formule kom je al een heel eind.
VB:
Datum: 20160107 -> 01-07-16 -> Calc formule: =CONCATENATE(MID(A2,5,2),"-",MID(A2,7,2),"-",MID(A2,3,2))
Bedrag: Af 44,55 (is vaak tekst geen cijfers) -> -44,55 (als cijfers) -> Calc formule: =IF(F2="Af",0-NUMBERVALUE(G2,",",),NUMBERVALUE(G2,",",)

Dus de internet bankieren csv in Calc zetten.
Daarnaast de hoofding zetten  hoe HomeBank ze wilt hebben.
De eerste rij daar onder de formules zetten, doortrekken tot het geheel heb.
Het gedeelte wat je wilt hebben selecteren kopieeren en plakken op een nieuwe tabblad maar alleen de waarden (inhoud) van deze cellen.
Deze tabblad opslaan als csv bestand met punt-comma.
MvG,
MauRice
Registered Linux user: 473556

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #7 Gepost op: 2016/01/31, 17:49:00 »
Wowo,

Je hoeft niet perse met een macro te werken.
Ik ken mij weg alleen met Excel VBA

Maar met de ingebouwde formule kom je al een heel eind.
VB:
Datum: 20160107 -> 01-07-16 -> Calc formule: =CONCATENATE(MID(A2,5,2),"-",MID(A2,7,2),"-",MID(A2,3,2))
Bedrag: Af 44,55 (is vaak tekst geen cijfers) -> -44,55 (als cijfers) -> Calc formule: =IF(F2="Af",0-NUMBERVALUE(G2,",",),NUMBERVALUE(G2,",",)

Dus de internet bankieren csv in Calc zetten.
Daarnaast de hoofding zetten  hoe HomeBank ze wilt hebben.
De eerste rij daar onder de formules zetten, doortrekken tot het geheel heb.
Het gedeelte wat je wilt hebben selecteren kopieeren en plakken op een nieuwe tabblad maar alleen de waarden (inhoud) van deze cellen.
Deze tabblad opslaan als csv bestand met punt-comma.
Spreadsheets zijn niet echt mijn ding helaas.
Ik geloof je direct dat het op deze manier mogelijk moet zijn maar voor mij is het, mede door volledige onervarenheid met spreadsheets, niet mogelijk om het zo voor mekaar te krijgen.
Desktop Ubuntu 16.04 LTS

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #8 Gepost op: 2016/01/31, 17:57:14 »
Ik gebruik geen HomeBank, maar Calc.

De definitiebestanden bij HB_convert zijn voor de meeste banken niet meer actueel - met de komst van IBAN hebben veel banken aan de exportformaten gesleuteld. Ik had daar ook last van.
Ken je deze forumdiscussie? Toen hebben ook een paar script-schrijvers mij en anderen op het juiste spoor kunnen zetten.

[OT]Het bestand wat je als voorbeeld had aangeboden, bevat tekens/opmaak die LibreOffice Calc met de standaardinstellingen anders interpreteert dan wenselijk. Met een paar aanpassingen lukt het dan wel om het goed in te lezen (zie bijlage). Maar deze opmerking is meer voor de tipgevers die via Calc pogingen doen om voor je uitdaging een oplossing te vinden. ... zie bijlage.[/OT]
Thanks, het juist inlezen in Calc ik had ik zelf al mekaar gekregen, maar voor degene die mij verder willen hebben met een (awk) script nuttige info.

Ik heb aan Mar (een van de scriptschrijvers uit dat draadje) een mailtje gestuurd maar nog geen antwoord op gekregen.

Hierbij een oproep aan degenen uit het draadje "Rabobank CSV conversietooltje voor HomeBank":
Is er iemand die mij kan helpen aan een script voor ING-Bank csv-bestand naar HomeBank formaat?


Desktop Ubuntu 16.04 LTS

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF (of OFX)
« Reactie #9 Gepost op: 2016/02/01, 00:56:46 »
In het draadje "Rabobank CSV conversietooltje voor HomeBank" zag ik ook een bijdrage van CasparV.
Die had voor de ING een pythonscript online gezet (http://caspar.verhey.net/ing-homebank/)
De versie uit 8 december 2014 werkte niet geheel goed meer, maar het script was zo duidelijk geschreven dat ik zelf de aanpassingen kon maken.
De omzetting van een heel jaar aan bankafschriften naar een door HomeBank leesbaar .csv formaat binnen 1 seconde!
Nu kan ik ieder geval verder gaan experimenteren of HomeBank geheel aan mijn verwachting voldoet.

Hoe het python3 terminal commandline script te gebruiken?
Gebruik de volgende opdracht:
./homebankcsv.py <input.csv> <output.csv>De door mij aangepast homebankcsv.py script:
#! /usr/bin/env python3
#
# Based on script originally made by Caspar Verhey 2014 (version 3)
# http://caspar.verhey.net
#
# Aangepast door Wowo voor ING Kommagescheiden IBAN (jjjjmmdd)
# Versie 8 geschikt voor HomeBank 5.0.6
#
import sys
import csv

class Convert():

  def __init__(self, argv):

    if( len(argv) < 2 or len(argv) > 3 or '-h' in argv or '-?' in argv or '--help' in argv):
      self.printhelp()
      return
   
    try:
      inputReader = csv.reader(open(argv[1]), delimiter=',', quotechar='"')
    except IOError:
      print("No such file or directory: '" + argv[1] + "'")
      return

    next(inputReader) # skip header

    outputfile = 'output.csv'
    if( len(argv) == 3 ):
      outputfile = argv[2]

    try:
      open(outputfile)
    except IOError:
      pass
    else:
      answer = input('Output file ' + outputfile + ' already exists. Would you like to overwrite it? [y/N] ')
      if not answer:
        return
      if answer not in ['y', 'Y', 'yes', 'Yes', 'j', 'J', 'ja', 'Ja']:
        return
     
    outputWriter = csv.writer(open(outputfile, 'w'), delimiter=';', quotechar='"')

    count = 0
   
    for row in inputReader:
     
      in_datum    = row[0][6:8]+'-'+row[0][4:6]+'-'+row[0][2:4] # Datum, converteren van YYYYMMDD naar DD-MM-YYYY
      in_naam     = ' '.join(row[1].split()) # Naam / Omschrijving
      in_reknr    = row[2]         # Rekening
      in_tegreknr = row[3]         # Tegenrekening
      in_code     = row[4]         # Code


      if( row[5] == "Bij" ):
        in_bedrag = str(row[6]).replace(",",".")
      else:
        in_bedrag = '-' + str(row[6]).replace(",",".")

      in_soort    = row[7]         # MutatieSoort
      in_mededl   = ' '.join(row[8].split()) # Mededelingen
     
     
      out_date   = in_datum
      out_mode   = ''
      out_info   = in_tegreknr
      out_payee  = in_naam
      out_memo   = in_mededl
      out_amount = in_bedrag
      out_cat    = in_soort
      out_tag    = ''
     
      out_row = [ out_date, out_mode, out_info, out_payee, out_memo, out_amount, out_cat, out_tag ]
      outputWriter.writerow(out_row)
     
      count = count + 1
   
    print(str(count) + ' transactions processed')
    print('read from ' + argv[1])
    print('written to ' + outputfile)
   
  def printhelp(self):
    print("Usage: ./homebankcsv.py <inputfile> [<outputfile>]\n\nConverts a CSV-file generated by the ING Bank to a CSV-file supported by the GNU program HomeBank.\n\n\t<inputfile>\tING Bank CSV filename\n\t<outputfile>\toutput CSV filename, defaults to homebank.csv\n\t-?, -h, --help\tdisplay this help and exit\n\nReport bugs to caspar.verhey.net")
   
if __name__ == "__main__":
    Convert(sys.argv)

# Column list:
# date ; paymode ; info ; payee ; memo ; amount ; category ; tags
#
# Values:
# date     => format should be DD-MM-YY
# paymode  => from 0=none to 10=FI fee
# info     => a string
# payee    => a payee name
# memo     => a string
# amount   => a number with a '.' as decimal separator, ex: -24.12 or 36.75
# category => a full category name (category, or category:subcategory)
# tags     => tags separated by space; tag is mandatory since v4.5
# Example:
#
# 15-02-04;0;;;Some cash;-40,00;Bill:Withdrawal of cash
# 15-02-04;1;;;Internet DSL;-45,00;Inline service/Internet

Misschien dat ik van Mar nog een bericht terug krijg want hij kan een bash awk script maken.
Als dat zo is, zal ik dat hier ook melden, maar ik zet dit draadje alvast als opgelost.


« Laatst bewerkt op: 2016/02/01, 01:36:31 door wowo »
Desktop Ubuntu 16.04 LTS

Offline wowo

  • Lid
  • Steunpunt: Nee
Re: Conversietool gevraagd ING-Bank csv-bestand naar HomeBank QIF, OFX of CSV
« Reactie #10 Gepost op: 2016/02/01, 13:09:30 »
Heb het script alweer enigszins aangepast.
1) Het vorige script zette het ING tegenrekeningnummer (indien aanwezig) in het HomeBank veld "Informatie".
     Het veld "Informatie" heb ik nu leeg gelaten omdat het tegenrekeningnummer ook al vermeld werd in het
     HomeBank veld "Memo" (die zijn info kreeg uit het ING veld "Mededelingen)
2) Het vorige script zette de ING mutatiesoort in het HomeBank veld "Categorie".
     Het nieuwe script zet de ING mutatiesoort nu in het HomeBank veld ¨Labels".
     Het veld categorieën in HomeBank kan je nu zelf naar eigen inzicht aanpassen in HomeBank (eventueel geautomatiseerd via toewijzingen

De nieuwe versie:
#! /usr/bin/env python3
#
# Based on script originally made by Caspar Verhey 2014 (version 3)
# http://caspar.verhey.net
#
# Aangepast door Wowo voor ING Kommagescheiden IBAN (jjjjmmdd)
# Versie 9 geschikt voor HomeBank 5.0.6
#
import sys
import csv

class Convert():

  def __init__(self, argv):

    if( len(argv) < 2 or len(argv) > 3 or '-h' in argv or '-?' in argv or '--help' in argv):
      self.printhelp()
      return
   
    try:
      inputReader = csv.reader(open(argv[1]), delimiter=',', quotechar='"')
    except IOError:
      print("No such file or directory: '" + argv[1] + "'")
      return

    next(inputReader) # skip header

    outputfile = 'output.csv'
    if( len(argv) == 3 ):
      outputfile = argv[2]

    try:
      open(outputfile)
    except IOError:
      pass
    else:
      answer = input('Output file ' + outputfile + ' already exists. Would you like to overwrite it? [y/N] ')
      if not answer:
        return
      if answer not in ['y', 'Y', 'yes', 'Yes', 'j', 'J', 'ja', 'Ja']:
        return
     
    outputWriter = csv.writer(open(outputfile, 'w'), delimiter=';', quotechar='"')

    count = 0
   
    for row in inputReader:
     
      in_datum    = row[0][6:8]+'-'+row[0][4:6]+'-'+row[0][2:4] # Datum, converteren van YYYYMMDD naar DD-MM-YYYY
      in_naam     = ' '.join(row[1].split()) # Naam / Omschrijving
      in_reknr    = row[2]         # Rekening
      in_tegreknr = row[3]         # Tegenrekening
      in_code     = row[4]         # Code


      if( row[5] == "Bij" ):
        in_bedrag = str(row[6]).replace(",",".")
      else:
        in_bedrag = '-' + str(row[6]).replace(",",".")

      in_soort    = row[7]         # MutatieSoort
      in_mededl   = ' '.join(row[8].split()) # Mededelingen
     
     
      out_date   = in_datum
      out_mode   = ''
      out_info   = ''
      out_payee  = in_naam
      out_memo   = in_mededl
      out_amount = in_bedrag
      out_cat    = ''
      out_tag    = in_soort
     
      out_row = [ out_date, out_mode, out_info, out_payee, out_memo, out_amount, out_cat, out_tag ]
      outputWriter.writerow(out_row)
     
      count = count + 1
   
    print(str(count) + ' transactions processed')
    print('read from ' + argv[1])
    print('written to ' + outputfile)
   
  def printhelp(self):
    print("Usage: ./homebankcsv.py <inputfile> [<outputfile>]\n\nConverts a CSV-file generated by the ING Bank to a CSV-file supported by the GNU program HomeBank.\n\n\t<inputfile>\tING Bank CSV filename\n\t<outputfile>\toutput CSV filename, defaults to homebank.csv\n\t-?, -h, --help\tdisplay this help and exit\n\nReport bugs to caspar.verhey.net")
   
if __name__ == "__main__":
    Convert(sys.argv)

# Column list:
# date ; paymode ; info ; payee ; memo ; amount ; category ; tags
#
# Values:
# date     => format should be DD-MM-YY
# paymode  => from 0=none to 10=FI fee
# info     => a string
# payee    => a payee name
# memo     => a string
# amount   => a number with a '.' as decimal separator, ex: -24.12 or 36.75
# category => a full category name (category, or category:subcategory)
# tags     => tags separated by space; tag is mandatory since v4.5
# Example:
#
# 15-02-04;0;;;Some cash;-40,00;Bill:Withdrawal of cash
# 15-02-04;1;;;Internet DSL;-45,00;Inline service/Internet
Doe er je voordeel mee.
Desktop Ubuntu 16.04 LTS