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.
- 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.
Bevor Sie hledger-rules verwenden, stellen Sie sicher, dass die folgenden Abhängigkeiten installiert, siehe dazu Installation.
Um mit dein PTA schnell zu beginnen, folgen Sie einfach diesen Schritten:
-
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. -
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
-
Regeln erstellen: Erstellen Sie Regeln für Lastschriften, Überweisungen usw. im Block
common_rules
in der Dateiconfig.yml
, siehe Verwendung für mehr details. -
Regeln generieren: Generieren Sie die Regeln mit dem folgenden Befehl:
python3 ./scripts/hledger-rules/hledger-rules.py -c config.yml gen-rules 2023
-
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
-
Budgetierung: Sobald alle Ausgabenregeln eingetragen sind, können Sie zur Budgetierung übergehen.
-
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 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
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
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.
Die Lizenz für die Software findest du in der Datei LICENSE.
- "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)