Giter Site home page Giter Site logo

autokm's Introduction

Fahrtenbuch für gemeinsam genutzte Autos

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.

Beispiel- und Vorlagedatei für das Fahrtenbuch

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

Beispiel Capture Templates für organice

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

Ein hledger Journal für alle Autos erzeugen

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

autokm's People

Contributors

schoettl avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.