Gleitzeitkonto-API - Automatische Berechnung deiner Überstunden mit Node.js
Entwickelt zur Verwendung in einem spezifischen Unternehmen, dessen Name aus Datenschutzgründen nicht erwähnt wird.
🚨 Achtung: Dieses Projekt ist nicht perfekt, den Ergebnissen sollte nicht blind vertraut werden.
Projekte, die diese API benutzen:
- Browser aussuchen / installieren: Microsoft Edge oder Google Chrome (vermutlich funktioniert jeder Chromium-basierte Browser)
- Alle Node-Packages unter
"dependencies": {...}
in package.json installieren - gleitzeitkonto-api.ts (TypeScript) herunterladen und in dein Projekt einbinden
- optional vor Einbindung mit
npx tsc
zu JavaScript transpilieren
- optional vor Einbindung mit
- Hinweise zur Benutzung lesen :)
test.js zeigt ein Minimalbeispiel zur Benutzung der API.
Ein Objekt der Klasse GleitzeitkontoAPI
verfügt über zwei Klassenmethoden: downloadWorkingTimes
und calculateFromWorkingTimes
. Beide Methoden sowie der Konstruktor sind mit ausführlichen Dokumentationskommentaren im Quellcode versehen.
Um downloadWorkingTimes
erfolgreich ausführen zu können musst du dich in einem Netzwerk befinden, welches Zugriff auf das interne Fiori hat (Office (W)LAN oder VPN).
Versucht Config aus lokaler Datei zu lesen. Wenn die angegebene Datei nicht existiert oder nicht als korrekte Config-Datei erkannt wird, werden Standard-Werte verwendet und in eine neue Datei unter dem angegebenen Pfad gespeichert (zur Config-Datei später mehr).
Der Parameter url
ist dabei der Link zur "Meine Zeitenübersicht"-Seite im internen Fiori als String, also in der Form "https://..."
. Besagter Link sollte vor Verwendung der API einmal manuell im ausgesuchten Browser geöffnet werden um sich ggf. anzumelden (und angemeldet zu bleiben!)
Öffnet mit Puppeteer ein neues Browser-Fenster, navigiert zur Zeitenübersicht, lädt eingetragene Arbeitszeiten als CSV-Datei herunter und gibt einen Status-Code zurück (Erklärung der Codes im Dokumentationskommentar)
Liest eine lokale CSV-Datei mit Arbeitszeiten aus und berechnet aus ihr den aktuellen Stand des Gleiteitkontos (auch "Überstunden" oder "aktuelles Gleitzeit-Saldo" genannt)
Personenspezifische Daten und Daten, die über mehrere Programmaufrufe gespeichert werden sollen, werden in einer Config-Datei (JSON) gespeichert.
Arbeitsstunden in einer Woche
Stand des Gleitzeitkontos zum startDatum
in Stunden. Wenn startDatum
vor der ersten eingetragenen Arbeitszeit liegt (z.B. bei Verwendung des Standard-Werts) sollte startStunden = 0.0 = 0
sein.
Daten, zwischen denen registrierte Arbeitszeiten für die Berechnung des Gleitzeitkontos betrachtet werden sollen (angegebene Daten im Format "DD.MM.YYYY"
inklusive)
endDatum
kann ein statisches Datum (wie der Standard-Wert) oder ein dynamisches Datum ausgehend vom Tag des Programmaufrufes sein (erlaubt sind "gestern"
, "heute"
oder "morgen"
)
Pfad zur ausführbaren Datei einer der oben genannten Browser
Um den Programmablauf zu vereinfachen/verkürzen können Werte für startStunden
und startDatum
aus einem beliebigen vollständigen (für einen ganzen Monat) Zeitnachweis entnommen werden:
Fiori => Meine Bescheinigungen => Zeitnachweis
In einem Zeitnachweis findet sich dann eine Tabelle unter "Monatsübersicht zum Stichtag DD.MM.YYYY", wobei der Stichtag aus der Überschrift als Wert für startDatum
und "GLZ-Saldo aktuell" als Wert für startStunden
verwendet werden kann.