Hi alle zusammen,
ich benutze seit Jahren Quicken bzw. den Nachfolger FinanzManager von LexWare. Die geänderten Geschäftsbedingungen von Microsoft (
siehe auch hier) veranlassen mich komplett auf Linux umzusteigen. Somit versuche ich auf Hibiscus umzusatteln.
Für den Import einiger Offline-Konten vom FinanzManager in Hibiscus habe ein kleines AWK-Script zur Konvertierung der Datensätze aus dem FinanzManager geschrieben. Mit Hilfe des Scripts entsteht eine CSV-Datei, die sich in Hibiskus importieren lässt. Das ist vielleicht auch für andere interessant.
Windows-User sind hier erst einmal außen vor. Das Script lässt sich möglicherweise auch für Windows nutzen, wenn man ein entsprechendes Programm für Windows installiert (z.B. von
https://gnuwin32.sourceforge.net/packages/gawk.htm).
Exportiert man ein Konto im FinanzManger, dann hat die exportierte Datei (Haushaltskasse.QIF) folgendes Format:
Code
!Option:MDY
!Type:Cash
D1.1.02
U126.72
T126.72
CX
PEröffnungssaldo
L[Haushaltskasse]
^
D1.7.02
U500.00
T500.00
CX
PKarsten S
MGA-EU0000XXX0 KARTE 2/12.0207.01 08.51 00XXX1/ 08XXX8
L[Postgiro Karsten]
^
D1.7.02
U-21.37
T-21.37
CX
POBI
MDosen,Klingelleitung
L[Wohnhaus]
^
Diese habe ich nun mit folgenden Script (QIF2hibiscus.awk) in ein CSV-File konvertiert.
Code
function ChangeUmlaut(str) {
gsub(/\xc4/,"Ä",str); gsub(/\xd6/,"Ö",str); gsub(/\xdc/,"Ü",str); gsub(/\xe4/,"ä",str); gsub(/\xf6/,"ö",str); gsub(/\xfc/,"ü",str); gsub(/\xdf/,"ß",str);
return str
}
function FormatDate(field) {
split(field,a,"."); newdate=sprintf("%02d.%02d.20%02d", a[2], a[1], a[3]);
return newdate
}
BEGIN {
Konto="Haushaltskasse";
RS = "^"; FS = "\n";
print "\"#\";\"IBAN\";\"BIC\";\"Konto\";\"Gegenkonto\";\"Gegenkonto BLZ\";\"Gegenkonto Inhaber\";\"Betrag\";\"Valuta\";\"Datum\";\"Verwendungszweck\";\"Verwendungszweck 2\";\"Zwischensumme\";\"Primanota\";\"Kundenreferenz\";\"Kategorie\";\"Notiz\";\"Weitere Verwendungszwecke\";\"Art\";\"Vormerkbuchung\";\"End-to-End ID\";\"Kategorie-Pfad\";\"Mandatsreferenz\";\"Gläubiger ID\""
zwischensumme=0.0;
} {
#CONVFMT = "%2.2f";
GegenkontoInhaber=""; datum=""; betrag=0.0; newdate=""; verwendungszweck=""; kategorie=""; kategoriepfad="";
for (i=1;i<=NF;i++) {
gsub("\r","",$i);
if (substr($i,1,1) == "D") {
gsub("D","",$i); datum=$i;
} else if (substr($i,1,1) == "U") {
gsub("U","",$i); gsub(",","",$i); gsub("\\.",",",$i); betrag=$i; zwischensumme += betrag;
} else if (substr($i,1,1) == "P") {
gsub("^P","",$i); GegenkontoInhaber=ChangeUmlaut($i);
} else if (substr($i,1,1) == "M") {
gsub("^M","",$i); gsub(" +"," ",$i);
verwendungszweck=ChangeUmlaut($i);
} else if (substr($i,1,1) == "L") {
gsub("^L","",$i);
if (substr($i,1,1) != "[") {
kategoriepfad=ChangeUmlaut($i);
n=split(kategoriepfad,A,":");
kategorie=A[n];
gsub(":","/",kategoriepfad);
}
}
}
if (datum!="") {
newdate=FormatDate(datum);
## printf "\"%d\";\"\";\"\";\"%s\";\"\";\"\";\"%s\";\"%.2f\";\"%.2f\";\"%s\";\"%s\";\"\";\"%.2f\";\"\";\"\";\"%s\";\"\";\"\";\"\";\"\";\"\";\"%s\";\"\";\"\"\n", FNR, Konto, GegenkontoInhaber, betrag, valuta, newdate, verwendungszweck, zwischensumme, kategorie, kategoriepfad;
printf "\"%d\";\"\";\"\";\"%s\";\"\";\"\";\"%s\";\"%.2f\";\"%s\";\"%s\";\"%s\";\"\";\"%.2f\";\"\";\"\";\"%s\";\"\";\"\";\"\";\"\";\"\";\"%s\";\"\";\"\"\n", FNR, Konto, GegenkontoInhaber, betrag, newdate, newdate, verwendungszweck, zwischensumme, kategorie, kategoriepfad;
}
}
Das Script wird mit folgendem Befehl auf der Linux-Console aufgerufen:
Code
$ LC_CTYPE=C awk --use-lc-numeric -f QIF2hibiscus.awk Haushaltskasse.QIF >Haushaltskasse.csv
Der Schalter –use-lc-numeric ist nicht bei jeder awk-Version nötig. Sollte beim Aufruf ein Fehler ausgegeben werden, einfach das Script ohne diesen Schalter aufrufen.
Die entstehende Datei (Haushaltskasse.csv) sieht so aus:
Code
"#";"IBAN";"BIC";"Konto";"Gegenkonto";"Gegenkonto BLZ";"Gegenkonto Inhaber";"Betrag";"Valuta";"Datum";"Verwendungszweck";"Verwendungszweck 2";"Zwischensumme";"Primanota";"Kundenreferenz";"Kategorie";"Notiz";"Weitere Verwendungszwecke";"Art";"Vormerkbuchung";"End-to-End ID";"Kategorie-Pfad";"Mandatsreferenz";"Gläubiger ID"
"1";"";"";"Haushaltskasse";"";"";"Eröffnungssaldo";"126,72";"01.01.2002";"01.01.2002";"";"";"126,72";"";"";"";"";"";"";"";"";"";"";""
"2";"";"";"Haushaltskasse";"";"";"Karsten S";"500,00";"07.01.2002";"07.01.2002";"GA-EU0000XXX0 KARTE 2/12.0207.01 08.51 00XXX1/ 08XXX8";"";"626,72";"";"";"";"";"";"";"";"";"";"";""
"3";"";"";"Haushaltskasse";"";"";"OBI";"-21,37";"07.01.2002";"07.01.2002";"Dosen,Klingelleitung";"";"605,35";"";"";"";"";"";"";"";"";"";"";""
Diese erzeugte CSV-Datei ließ sich problemlos in Hibiscus importieren.