Verwendung

Um pYMLedger nutzen zu können, müssen Sie zunächst CSV-Exporte von Ihrem Online-Banking erstellen, um Ihre Finanzdaten zu verwalten. Sie können entweder die originalen CSV-Dateien verwenden, die von Ihrer Bank exportiert wurden, oder die mitgelieferten Beispieldateien im Verzeichnis examples/input zum Testen nutzen.

Eingabe und Quellen

Bitte stellen Sie sicher, dass jeder Kontoauszug (CAMT-CSV-Export) nur einen Monat abdeckt.

CSV-Dateien von der Bank

Die CSV-Dateien sollten im CAMT-CSV-Format vorliegen und die folgenden Spalten enthalten, wobei die Spalten durch Kommas getrennt sein müssen:

(Die Spalten in der CSV-Datei MÜSSEN durch (``,``) Kommas getrennt sein)

Die CSV-Datei sollte die folgenden Spalten enthalten:

Auftragskonto,Buchungstag,Valutadatum,Buchungstext,Verwendungszweck,Glaeubiger ID,Mandatsreferenz,Kundenreferenz (End-to-End),Sammlerreferenz,Lastschrift Ursprungsbetrag,Auslagenersatz Ruecklastschrift,Beguenstigter/Zahlungspflichtiger,Kontonummer/IBAN,BIC (SWIFT-Code),Betrag,Waehrung,Info

Verzeichnisstruktur

Stellen Sie sicher, dass das Eingabe-Verzeichnis (input/) folgende Struktur aufweist:

├── input/
│   ├── 2023/
│   │   ├── 2023-01/
│   │   │   └── 2023-01.bank.csv
│   │   ├── 2023-02/
│   │   │   └── 2023-02.bank.csv
│   │   └── 2023-03/

Verwenden Sie das Format “YYYY” für das Jahr, “YYYY-MM” für den Ordner (pro Monat) und “YYYY-MM.bank.csv” für die CAMT-CSV-Datei.

CSV Dateien bereinigen

Bevor wir aus den CSV-Dateien rules und journals generieren, sollten wir diese erstmal etwas “säuber”, mit den Befehl:

python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml clean-up-csv 2023

Die CSV-Dateien aus den input/2023 werden etwas “gesäubert” und in source/2023/ gespeichert.

Lastschrift, Überweisungen, etc. - (allgemeine) Regeln

Lassen Sie uns nun die CSV-Dateien im Verzeichnis source/2023/ betrachten. Dort sollten alle monatlichen Kontoauszüge unserer Bank zu finden sein. Wir können uns zunächst auf die Ausgaben (Expenses) konzentrieren und Zeile für Zeile durchgehen, um für jeden Eintrag/Ausgabe eine rule zu erstellen.

Beispiel: Wohnen

Betrachten wir beispielsweise die CSV-Datei für Januar 2023. Darin befindet sich eine Zeile mit dem Verwendungszweck “Wohnen” (wichtig sind hier nur die Spalten “Verwendungszweck” und “Begünstigter/Zahlungspflichtiger”).

source/2023/2023-01/csv/2023-01.bank.csv

****,02.01.23,02.01.23,DAUERAUFTRAG,1234/4568.00001.12,***,,,****,,,Wohnen GmbH,,,"-499,2",EUR,Umsatz gebucht,2023-01.0031,Wohnen GmbH
  • Verwendungszweck: 1234/4568.00001.12

  • Beguenstigter/Zahlungspflichtiger: Wohnen GmbH

Für diesen Eintrag könnten wir ganz einfach eine rule in unserer config.yml anlegen:

config.yml

common_rules:
  # Wohung/Miete
  - if:
      - 1234/4567.00001.12.*Wohnen GmbH
    description: Miete
    account: Expenses:Wohnen:Miete

Regeln für Lastschrift, Überweisungen usw. befinden sich im Block ``common_rules``.

Erstellung der Regeln

Nachdem wir die Regeln in unsere config.yml eingetragen haben, können wir die hledger rules mit dem folgenden Befehl erstellen:

python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023

Die Regeln werden im Verzeichnis journals/2023/rules/ gespeichert.

common.csv.rules

if 1234/4568.00001.12.*Wohnen GmbH
    description %beguenstigter_zahlungspflichtiger | Miete
    account1    Expenses:Wohnen:Miete

Journals

Nachdem alle möglichen rules in unsere config.yml eingetragen wurden (und die Regeln erstellt wurden), können wir auch die journals erstellen lassen:

python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023
python3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-year 2023

Die erstellten Journals werden im Verzeichnis journals/2023/ gespeichert.

journals/2023/2023-01/2023-01.bank.hledger

2023-01-02=2023-01-02 * (2023-01.0030) Wohnen GmbH | Miete  ; type:DAUERAUFTRAG, payee:Wohnen GmbH
    Expenses:Wohnen:Miete       EUR499,20
    Assets:Bank:Checking       EUR-499,20

Budgetierung

Wenn alle Regeln für die Ausgaben eingetragen wurde, geht weiter zum Budgetieren:

Spezielle Regeln

Um komplexe Regeln für Amazon-Bestellungen und PayPal-Käufe zu verwenden, können wir vordefinierte Regeln generieren lassen.

config.yml

amazon_rules:
  - if:
      - Audible.de.*AUDIBLE GMBH
      - Audible GmbH.*AUDIBLE GMBH
    description: Amazon Audible GmbH Hörbuch
    account: Expenses:Unterhaltung:Multimedia:Streaming:Abo:Amazon:Audible
  - if:
      - AMZNPrime DE.*AMAZON EU S.A R.L.
      - Prime Video.*AMAZON DIGITAL GERMANY GMBH
    description: Amazon Prime
    account: Expenses:Unterhaltung:Multimedia:Streaming:Abo:Amazon:Prime