Import von Umsätzen aus dem FinanzManager

Umstieg von FinanzManager (Quicken) auf Hibiscus

 
kasch
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Freising
Beiträge: 2
Dabei seit: 05 / 2025
Betreff:

Import von Umsätzen aus dem FinanzManager

 · 
Gepostet: 22.05.2025 - 19:37 Uhr  ·  #1
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.
quasimodoz
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 27
Dabei seit: 02 / 2009
Betreff:

Das hört sich gut an

 · 
Gepostet: 26.05.2025 - 15:44 Uhr  ·  #2
Ich bin auch gerade auf der Suche nach einer Alternative zum FinanzManager, da ich mich nicht länger von Redmond gängeln lassen will und Lexware die neueste Version auch nur noch als Abo anbietet - nicht mit mir. Hibiscus scheint mir erprobenswert zu sein. Da kommt eine Hilfe wie dein Script doch sehr gelegen. Aber warum sollte das nur für Offline-Konten gehen? Im FM kann ich doch alle Konten in eine QIF-Datei exportieren.

Im Übrigen, ich teste Hibiscus gerade auf einem uralt Laptop unter Mint 22.1. Mint läuft prima. Die erste Installation von Hibiscus war ziemlich mühsam und dann habe ich die Einrichtung meines DKB-Kontos nicht hin bekommen. Da muss ich wohl etwas falsch gemacht haben, nur weiß ich noch nicht was. Also, alles wieder gelöscht und nun wird von Neuem angefangen....
kasch
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Freising
Beiträge: 2
Dabei seit: 05 / 2025
Betreff:

Re: Import von Umsätzen aus dem FinanzManager

 · 
Gepostet: 28.05.2025 - 15:36 Uhr  ·  #3
Prima, dass das Script auch bei anderen Hibiscus-Nutzern funktioniert und so nützlich ist.
Mit meinem DKB-Konto hatte ich bei der Einrichtung keinerlei Probleme.
Jetzt ist Hibiscus eine Online-Banking-Tool und FinanzManager eher auch zur Buchhaltung gedacht. Daraus ergeben sich in Hibiscus eine Reihe von Lücken, die ich mit Plugins (SynTAX, Depot-Viewer) füllen möchte. Hier bin ich aber noch am Anfang...
Klaus K
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 8
Dabei seit: 08 / 2025
Betreff:

Re: Import von Umsätzen aus dem FinanzManager

 · 
Gepostet: 06.08.2025 - 21:49 Uhr  ·  #4
Hallo,
nach einem Hinweis im FinanzManager-Forum ( danke RoKaBa ) bin ich einen etwas anderen Weg gegangen.

Ich habe in einem FM-Kontenblatt über die Funktion "Bericht-Buchungen" einen Bericht für den gewünschten Zeitraum erstellt.
Zusätzlich habe ich über "Spaltenauswahl" alle Spalten ausgewählt.
Über die Filter kann man den Bericht auf alle möglichen Kriterien beschränken oder erweitern.
Über die Funktion "Bericht exportieren" habe ich diesen Bericht dann als CSV-Datei abgespeichert.

FM/Win10 scheint die CSV-Datei mit UTF16LE Zeichensatz zu erstellen.
Deshalb beim Import den Zeichensatz auf UTF-16 ändern. (gerade im Forum gefunden ;-) )
Unter Linux kann man dies auch mittels
"iconv -f UTF16LE -t UTF-8 eingabedatei.csv > ausgabedatei.csv"
in eine Datei mit UTF-8 Zeichensatz konvertieren.

Nun hat man die Möglichkeit diese Datei mit dem gewohnten Editor zu bearbeiten oder in LibreOffice-Calc zu importieren und dort zu editieren.

Edit: Danksagung und Hinweis auf UTF-16 Zeichensatz im CSV-Import hinzugefügt.
Klaus K
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 8
Dabei seit: 08 / 2025
Betreff:

Re: Import von Umsätzen aus dem FinanzManager

 · 
Gepostet: 08.08.2025 - 16:14 Uhr  ·  #5
Ich arbeite nun daran die einzelnen Felder beim Import zuzuweisen.

Zunächst habe ich mir mal eine Aufstellung der Möglichen Felder angelegt:
Code
Aus FinanzManager        max.     Import                      Hibiscus
                                  #
                                  Flags
Konto                    25                                   Konto
IBAN/Kto-Nr. Auftragg.   29       Gegenkonto IBAN             GK IBAN
BIC/BLZ Auftragg.        11       Gegenkonto BIC              GK BIC
                                  Gegenkonto                  Name
                                                              Name 2                Abw. Empf/Auftrag (von Bank)
Betrag                    9       Betrag                      Betrag
Valuta                   10       Valuta                      Valuta
Buchungstag              10       Datum                       Datum
                                  Verwendungszweck            Verwendungszweck
                                  Verwendungszweck 2          Verwendungszweck 2
                                  Weitere Verwendungszwecke   Weitere Verwendungszwecke
                                  Saldo                       Zwischensumme
                                  Primanota                   Primanota
                                  Kundenreferenz              Kundenreferenz
Kategorie                28       Kategorie                   Kategorie
                                  Notiz                       Notiz
                                  Art der Buchung             Art/Art der Buchung
Ende-zu-Ende-Ref         35       End-to-End ID               End-to-End ID
                                                              Mandatsreferenz
                                                              GV-Code

Vorgang                  13      z.B. Eröffnung, Buchung, Überweisung, Inl.Überweisu, Buchung, Online EU-Übe, Vorgemerkt
Beleg                     9      z.B. 181, EU00275, ÜO00001, EO00002, DE00840, DAEU7812
Kennzeichen              10      z.B. Vorgemerkt
Empfänger                70      Eingabe bei der Überweisung
Verwendungszweck        243
Klasse                    0
Fix                       0
OK                        1      X
Ausz. Nr.                 0
GV                        3      z.B. 6, 70, 805
Name Auftragg.           70      Rückmeldung Bank ?

Jetzt bleiben mir noch einige Fragen:
Woraus ermittelt Hibiscus die "Art der Buchung"?
Wie kann ich den Verwendungszweck vom FinanzManager an besten auf "Verwendungszweck", "Verwendungszweck 2" und "Weitere Verwendungszwecke" aufteilen?
Wie bekomme ich den GV aus FinanzManager in das Feld GV-Code importiert oder führt das zu Probleme?

Kann mir da jemand auf die Sprünge helfen?

Vorgang und Beleg würde ich erst einmal in Notiz importieren.
Gewählte Zitate für Mehrfachzitierung:   0