Wir haben mehrere Autos, die mehrere Personen abwechselnd nutzen. Alle Kosten (Reperaturen, Versicherung, Sprit usw.) werden vom Fahrzeughalter bezahlt. Damit es gerecht ist, zahlen alle Nutzer eine Kilometerpauschale an den Fahrzeughalter.
Die Abrechnung der gefahrenen Kilometer aller Nutzer realisieren wir folgendermaßen:
- organice als digitales Fahrtenbuch (quasi als App für’s Smartphone).
- Die Fahrtenbuch-Datei hat ein spezielles Org Mode Datenformat.
- Mithilfe von Emacs, Org Mode, hledger und weiteren Scripts wird die Abrechnung erstellt.
Wichtig in diesem Beispiel ist eigentlich nur:
- Vor jedem Kilometerstand müssen mindestens zwei Sterne stehen (
**
) - Die Kilometerstände sind absteigend sortiert, d.h. der neueste, höchste Kilometerstand muss immer ganz oben stehen
- Nach dem ganzzahligen Kilometerstand muss “km” stehen
- Nach “km” kann ein Buchstabe als Fahrerkürzel stehen (oder bei mehreren Personen mehrere eindeutige Buchstaben ohne Leerzeichen dazwischen)
- Wenn Fahrer angegeben sind kann danach ein beliebiger Text stehen
- In der nachfolgenden Zeile muss ein Orgmode Zeitstempel stehen, optional mit Zeit, z.B. [2022-06-19 Sun 12:10]
Formal definiert:
** KILOMETERSTAND km [FAHRER [BESCHREIBUNG]] [ORG_TAGS] ORG_TIMESTAMP_OPTIONAL_WITH_TIME
Die Groß-/Kleinschreibung der Fahrerbuchstaben ist unerheblich.
TODO: Muss noch genauer beschrieben werden. Es funktioniert das, was
das Skript org2hledger.awk
richtig verarbeitet.
* Fahrtenbuch
** 1200 km J ausflug in die berge
[2022-06-16 Thu 20:00]
** 1100 km H
[2022-06-15 Thu]
** 1000 km
[2022-06-15 Thu]
* Archiv (2021)
** 1000 km J urlaub
** 700 km
** 600 km H
** 500 km
Hier ist ein Beispielaufruf von org2hledger.awk
. Vorher muss
sample.org
erstell werden (Emacs M-x org-babel-tangle
).
awk -f org2hledger.awk sample.org
Damit man schnell Einträge ins Fahrtenbuch hinzufügen kann, kann man in organice Capture Templates definieren, also Vorlagen, die man über den “+” Button öffnen, ausfüllen und dem Fahrtenbuch hinzufügen kann.
Die Capture Templates müssen folgende Einstellungen haben:
- Prepend: yes
- Header path: Fahrtenbuch (oder wie die top-level Überschrift eben heißt)
- Optional: Available in org files: (hier die Fahrtenbuch-Dateien wählen)
Anfangsstand (A) – nicht notwendig, wenn der Anfangsstand gleich dem letzten Endstand ist:
* 25%? km %U
Endstand (E):
* 25%? km J %U
echo > kmstand.ledger
echo 'commodity 9.999,99 €' >> kmstand.ledger
echo 'commodity 9.999,99 km' >> kmstand.ledger
echo 'P 2020-01-01 km 0,25 €' >> kmstand.ledger
echo 'P 2022-03-10 km 0,30 €' >> kmstand.ledger
awk -f org2hledger.awk -vextratag=auto:vw < ~/Dropbox/org/gschwisterl/auto.org >> kmstand.ledger
awk -f org2hledger.awk -vextratag=auto:benz < ~/Dropbox/org/gschwisterl/auto_opa.org >> kmstand.ledger
Beispiel hledger-Abfrage: Kilometer pro Jahr, getrennt nach Auto:
hledger -f kmstand.ledger balance expenses:km: --pivot auto -Y