Skip to content

pYMLedger ist eine Projekt-Vorlage fürs PTA, basierent auf hledger. Zusammen mit ein Python-Script ist es möglich hledger-Regeln und -Buchungen, aus einer Konfigurationsdatei (im YAML-Format), zu generieren.

License

Notifications You must be signed in to change notification settings

abeimler/pymledger

Repository files navigation

pYMLedger - python hledger generator

GitHub python hledger

pYMLedger ist eine Projekt-Vorlage fürs PTA, basierent auf hledger. Zusammen mit den Python-Skript hledger-rules ist es möglich hledger-Regeln und -Buchungen aus einer Konfigurationsdatei im YAML-Format zu generieren.

Funktionen

  • CSV-Bereinigung: hledger-rules bietet Funktionen zum Bereinigen von CSV-Dateien vor der Generierung von hledger-Regeln und -Buchungen.
  • Generierung von hledger-Regeln: Das Skript kann hledger-Regeln basierend auf der in der config.yml-Datei angegebenen Konfiguration generieren.
  • Vorgegebene und häufig verwendete Aufgaben: pYMLedger enthält eine Taskfile.yaml, die vordefinierte Aufgaben für eine einfachere Ausführung enthält.
  • Docker-Unterstützung: Das Skript kann in einem Docker-Container ausgeführt werden, zusammen mit hledger-web für eine webbasierte Oberfläche.
  • Budgetierung und Prognose: hledger-rules unterstützt Funktionen zur Budgetierung und Prognose.

Installation und Abhängigkeiten

Bevor Sie hledger-rules verwenden, stellen Sie sicher, dass die folgenden Abhängigkeiten installiert, siehe dazu Installation.

Schnell-Start

Um mit dein PTA schnell zu beginnen, folgen Sie einfach diesen Schritten:

  1. Eingabe und Quellen: Verwenden Sie CSV-Exporte (Im CAMT-CSV Format) von Ihrem Online-Banking oder die mitgelieferten Beispieldateien für Testzwecke und speicher die .csv-Dateien in input/, siehe Verzeichnisstruktur.

  2. CSV-Dateien bereinigen: Führen Sie den Befehl aus, um die CSV-Dateien zu bereinigen und in das Verzeichnis source zu speichern:

    python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml clean-up-csv 2023
  3. Regeln erstellen: Erstellen Sie Regeln für Lastschriften, Überweisungen usw. im Block common_rules in der Datei config.yml, siehe Verwendung für mehr details.

  4. Regeln generieren: Generieren Sie die Regeln mit dem folgenden Befehl:

    python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023
  5. Journale erstellen: Erstellen Sie die Journale mit den erstellten Regeln:

    python3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-year 2023
  6. Budgetierung: Sobald alle Ausgabenregeln eingetragen sind, können Sie zur Budgetierung übergehen.

  7. Spezielle Regeln: Wenn Sie komplexe Regeln für Amazon-Bestellungen und PayPal-Käufe haben, können Sie vordefinierte Regeln in die config.yml Datei eintragen. Weitere Informationen finden Sie in Amazon Spezielle Regeln und PayPal Spezielle Regeln.

Möchten Sie weitere Informationen und detaillierte Anweisungen? Lesen Sie hier mehr.

Beispiel

Beispiel einer config.yml:

config.yml

title: 'Persönliche Finanzen'
define_accounts:
  - account: 'Assets'       
    type: Asset
  - account: 'Liabilities'  
    type: Liability
  - account: 'Equity'       
    type: Equity
  - account: 'Income'     
    type: Revenue
  - account: 'Expenses'   
    type: Expense
  - account: 'Assets:Bank'
    type: Cash
  - account: 'Assets:Cash'
    type: Cash
  - account: 'Assets:Saving'
    type: Cash
  - account: 'Assets:Saving:Cash'
    type: Cash
accounts:
  assets: 'Assets'
  expenses: 'Expenses'
  liabilities: 'Liabilities'
  equity: 'Equity'
  income: 'Income'
  opening: 'Equity:OpeningClosingBalances'
  checking: 'Assets:Bank:Checking'
  paypal_unknown: 'Expenses:unknown:PayPal'
  amazon_unknown: 'Expenses:unknown:Amazon'
  unknown: 'Expenses:unknown'
  cash: 'Assets:Cash'
  salary: 'Income:Salary'
  budget: 'Assets:Bank:Budget'
  saving: 'Assets:Bank:Saving'
  unbudget: 'Assets:Bank:Unbudget'
common_rules:
  # Defaults/Fallbacks (first)
  - if:
      - Amazon.de.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND
      - Amazon .Mktplce.*AMAZON PAYMENTS EUROPE S.C.A.
      - AMZN Mktp DE.*AMAZON PAYMENTS EUROPE S.C.A.
    description: Amazon %verwendungszweck
    account: Expenses:unknown:Amazon
  - if: PP.[0-9]+.PP.*PayPal
    description: PayPal %verwendungszweck
    account: Expenses:unknown:PayPal
  - if: KARTENZAHLUNG
    description: Kartenzahlung %verwendungszweck 
    account: Expenses:unknown:%beguenstigter_zahlungspflichtiger
  # Bank (und Gebühren)
  - if: ABSCHLUSS.*Abrechnung
    account: Expenses:Sonstiges:Bankgebuehren 
  - if: ENTGELTABSCHLUSS.*Entgeltabrechnung
    payee_description: 'Entgeltabrechnung'
    account: Expenses:Sonstiges:Bankgebuehren 
  - if:
      - AUSZAHLUNG
      - AUSZAHLUNG
    account: Assets:Cash
    description: Kartenauszahlung
  - if:
      - EINZAHLUNG
      - EINZAHLUNG
    account: Assets:Cash
    description: Karteneinzahlung
  # Lohn
  - if: LOHN.*GEHALT
    account1: Assets:Bank:Checking                                                                                               
    account2: Income:Salary  
    income: true
  # Wohung/Miete 
  - if:
      - 546789123.*Strom GmbH
      - ONLINE-UEBERWEISUNG.*Strom GmbH
    description: Strom GmbH
    account: Expenses:Wohnen:Nebenkosten:Strom
  - if:
      - 1234/4568.00001.12.*Wohnen GmbH
    customer: 1234/4568.00001.12
    description: Wohnen GmbH
    account: Expenses:Wohnen:Miete

Beispiel der erstellten common.csv.rules:

if Amazon.de.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND
Amazon .Mktplce.*AMAZON PAYMENTS EUROPE S.C.A.
AMZN Mktp DE.*AMAZON PAYMENTS EUROPE S.C.A.
AMZN Mktp DE.*AMAZON EU S.A R.L., NIEDERLASSUNG DEUTSCHLAND'
    description %beguenstigter_zahlungspflichtiger | Amazon %verwendungszweck
    account1    Expenses:unknown:Amazon                                         


if PP.[0-9]+.PP.*, Ihr Einkauf bei.*PayPal'
PP.[0-9]+.PP.*, Ihr Einkauf bei.*PAYPAL'
PP.[0-9]+.PP.*PayPal
PP.[0-9]+.PP.*PAYPAL
    description %beguenstigter_zahlungspflichtiger | PayPal %verwendungszweck
    account1    Expenses:unknown:PayPal                                         


if KARTENZAHLUNG
    description %beguenstigter_zahlungspflichtiger | Kartenzahlung %verwendungszweck
    account1    Expenses:unknown:%beguenstigter_zahlungspflichtiger             


if AUSZAHLUNG
AUSZAHLUNG
    description Kartenauszahlung
    account1    Assets:Cash                                                     


if EINZAHLUNG
EINZAHLUNG
    description Karteneinzahlung
    account1    Assets:Cash                                                     


if LOHN.*GEHALT.*Arbeit GmbH
    description %beguenstigter_zahlungspflichtiger | Einkommen von Arbeit GmbH
    account1    Assets:Bank:Checking                                            
    account2    Income:Salary                                                   
    amount      %amount                                                         


if 546789123.*Strom GmbH
ONLINE-UEBERWEISUNG.*Strom GmbH
    description %beguenstigter_zahlungspflichtiger | Strom GmbH
    account1    Expenses:Wohnen:Nebenkosten:Strom                               


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


hledger-web

Nachdem alle möglichen Regeln, Transaktionen und Journals erstellt wurden, können wir hledger-web nutzen, um alles schön darzustellen:

python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023
python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml clean-up-csv 2023
python3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-year 2023
python3 ./scripts/hledger-rules/hledger-rules.py --hledger-path=/usr/bin/hledger -c config.yml gen-all 2023
hledger-web -f all.hledger --capabilities=view --auto

hledger-web


Disclaimer

Ich bin kein Finanzberater und das Tool ist auch mehr zum Budgeten gedacht und für Persönliche Finanzen. Die Tabelle und die Beispiele, die du hier siehst, sind alle fiktiv, basieren aber auf realen Kontoauszügen (wie Amazon, PayPal usw.). Verwende dieses Projekt als Vorlage für dein PTA (Plain Text Accounting), am besten in Kombination mit Git, um alles Mögliche zu verfolgen und die Automatisierung deiner Kontoauszüge (Eingabedateien im CSV-Format) zu maximieren. Behalte dabei alle privaten Daten für dich.

Lizenz

Die Lizenz für die Software findest du in der Datei LICENSE.

Limitierung

  • "Open" und "Closing" pro Monat: Derzeit bauen alle Monate noch aufeinander auf (Kontoauszüge usw.), sodass sie noch nicht unabhängig voneinander sind.
  • TODO: Erstellung von Diagrammen/Charts
  • Die Verwendung mehrerer Banken ist nicht möglich.
  • Budget aufteile in einem Monat ist nicht möglich (es ist nur möglich den Monatstag zum budgeten zu ändern)

Links

About

pYMLedger ist eine Projekt-Vorlage fürs PTA, basierent auf hledger. Zusammen mit ein Python-Script ist es möglich hledger-Regeln und -Buchungen, aus einer Konfigurationsdatei (im YAML-Format), zu generieren.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published