Hoi allen,
Ik ben Homebank gaan gebruiken omdat ik het toch onprettig vond mijn data in de AFAS cloud te bewaren. Homebank bevalt goed, ik mis alleen het berekenen van een gemiddelde van een post, maar ik heb er goede hoop op dat dat in de volgende versie wordt aangevuld.
Ik heb het importscript voor de ASNbank van Apie1 gewijzigd. Ik heb ondermeer alle informatievelden aan elkaar geplakt tot 1 lang veld waar je goed op kunt matchen. Verder het foutje in de datum verbeterd en de overbodige "sign" regels verwijderd omdat ASN al werkt met een -. En ik strip alleen het eerste en laatste karaketr van veld 17 en 18, niet de twee laatste.
Ik heb nog wel mijn vraagtekens bij de werking van de andere subs, soms staan er veel spaties in de velden. Mocht iemand daar handiger in zijn, graag verbeteren!
#!/bin/bash
# a small script to format ASN .csv accountinfo to a .csv format HomeBank understands
# Originally made for rabobank files by DFreeze:
# http://forum.ubuntu-nl.org/software-en-configuratie/rabobank-csv-conversietooltje-voor-homebank/
# adapted for ASNbank bij apie1 and updated by Mar.
# format ASNbank:
# date,account from,account to,payee,,,,currency,balance,currency,amount,date,date,number,transfer type,number,description,everything in one cell
# date is dd-mm-yyyy
# format HomeBank 4.6.3:
# date;mode;info;payee;description;amount;category;tag
# date => format should be DD-MM-YY
# mode => from 0=none to 5=personal transfert
# info => a string
# payee => a payee name
# description => a string (I joined all description fields into one)
# amount => a number with a '.' as decimal seperator, ex: -24.12 or 36.75
# category => a category name
# tag => tags separated by space, tag is mandatory since v4.5
if [ "$1" = "" ]; then
printf "Converteer ASNfiles naar Homebankfiles\nGebruik $0 <asnfile> <output>\n"
exit 1
fi
if [ ! -e ./$1 ]; then
printf "\ninputfile bestaat niet - controleer de naam \n\n"
exit 1
fi
if [ "$2" = "" ]; then
printf "\noutputfile niet opgegeven\n\n"
exit 1
fi
choice=Y
if [ -e ./$2 ]; then
printf "\noutputfile bestaat al - overschrijven? [j/N]"
read choice
fi
case "$choice" in
"j" | "J" | "y" | "Y" | "1" )
awk 'BEGIN { FS="," }
{
gsub ("\"","")
sub ("^.","",$17)
sub (".$","",$17)
sub ("^.","",$18)
sub (".$","",$18)
year = substr($1,9,2)
month = substr($1,4,2)
day = substr($1,1,2)
HBdate = day"-"month"-"year
mode = 0
info = $3
payee = $4
description = $17
long_description = $18
description1 = payee" - "description" - "long_description
amount = $11
category = ""
tag = "tag1"
print HBdate";"mode";"info";"payee";"description1";"amount";"category";"tag
}' $1 > $2
;;
* )
printf "\nkies een andere outputnaam\n\n"
exit 1
;;
esac
printf "\naantal transacties verwerkt: `wc -l < $2` \n\n"
En toen meteen maar door met de volgende. Dit is een script in awk voor de Triodos bank! Probleem daar was de geldnotatie, een "." in het duizendtal en een "," voor de centen. Daardoor splitste het script het getal (op de komma) in twee. Dat is met reguliere expressies opgelost.
#!/bin/bash
# a small script to format Triodos .csv accountinfo to a .csv format HomeBank understands
# Originally made for rabobank files by DFreeze:
# http://forum.ubuntu-nl.org/software-en-configuratie/rabobank-csv-conversietooltje-voor-homebank/
# adapted for Triodos by Mar
# format Triodos bank:
# date,account to,amount,credit/debit,payee,account from,transfer type,memo
# date is dd-mm-yyyy
# format HomeBank 4.6.3:
# date;mode;info;payee;memo;amount;category;tag
# date => format should be DD-MM-YY
# mode => from 0=none to 5=personal transfert
# info => a string
# payee => a payee name
# memo => a string
# amount => a number with a '.' as decimal seperator, ex: -24.12 or 36.75
# category => a category name
# tag => tags separated by space, tag is mandatory since v4.5
if [ "$1" = "" ]; then
printf "Converteer Triodos files naar Homebank files\nGebruik $0 <triodosfile> <output>\n"
exit 1
fi
if [ ! -e ./$1 ]; then
printf "\ninputfile bestaat niet - controleer de naam \n\n"
exit 1
fi
if [ "$2" = "" ]; then
printf "\noutputfile niet opgegeven\n\n"
exit 1
fi
choice=Y
if [ -e ./$2 ]; then
printf "\noutputfile bestaat al - overschrijven? [j/N]"
read choice
fi
case "$choice" in
"j" | "J" | "y" | "Y" | "1" )
awk 'BEGIN { FS="\",\"|\"" }
{
sub (/\./,"",$4)
sub (/,/,".",$4)
year = substr($2,9,2)
month = substr($2,4,2)
day = substr($2,1,2)
HBdate = day"-"month"-"year
mode = 0
info = 0
payee = $6"-"$7
memo = $9
bedrag = $4
sign = ""
if ($5 ~ "Debet") sign = "-"
amount = sign bedrag
category = ""
tag = "tag1"
print HBdate";"mode";"info";"payee";"memo";"amount";"category";"tag
}' $1 > $2
;;
* )
printf "\nkies een andere outputnaam\n\n"
exit 1
;;
esac
printf "\naantal transacties verwerkt: `wc -l < $2` \n\n"
Veel plezier ermee en ik zie graag aanvullingen!
Grts
Mar