Implements a complete web application for calculating bonus payments for weekend and holiday duty shifts according to NRW rules. Features: - Employee management (add/remove multiple employees) - Monthly duty scheduling (full and half shifts) - Automatic NRW holiday detection (2025-2030) - Bonus calculation with configurable rules - LocalStorage for data persistence - Export/Import functionality (JSON) - Responsive design for desktop and mobile - No external dependencies Calculation Rules: - Qualifying days: Friday, Saturday, Sunday, public holidays, day before holiday - Minimum threshold: 2.0 qualifying days required - Deduction: 1.0 qualifying day after threshold reached - Rates: Normal days 250€, qualifying days 450€ - Half shifts: 50% of respective rate - No bonus payment if threshold not reached Technical Stack: - Vanilla JavaScript (no frameworks) - HTML5 & CSS3 - LocalStorage API - Modern, gradient-based UI design Files: - webapp/index.html - Main HTML interface - webapp/styles.css - Responsive styling - webapp/app.js - Main application logic and UI handling - webapp/calculator.js - Bonus calculation engine - webapp/holidays.js - NRW public holidays provider - webapp/storage.js - LocalStorage data management - webapp/README.md - Comprehensive documentation Updated main README.md to include web app in available versions.
3.5 KiB
3.5 KiB
Dienstplan Generator (NRW - Variante 2)
Projekt zum automatischen Erstellen von Dienstplänen mit Vergütungsberechnung nach NRW-Regeln (Variante 2 "streng").
Verfügbare Versionen
Web-App (Browser) 🆕
Empfohlen für die meisten Benutzer!
Moderne Web-Anwendung zur Bonusberechnung für Wochenend- und Feiertagsdienste.
- ✅ Läuft direkt im Browser (keine Installation)
- ✅ Mitarbeiterverwaltung
- ✅ Monatliche Dienstplanung
- ✅ Automatische Bonusberechnung
- ✅ Export/Import-Funktion
Siehe webapp/README.md für Details.
Python/Excel Version (Desktop)
Python-basierter Generator für Excel-Dienstpläne.
Android App (Mobile)
Native Android-App für mobiles Dienstplan-Management. Siehe android-app/README.md für Details.
Features (Python/Excel Version)
- ✅ Automatische Erkennung von Wochenenden (Fr–So), Feiertagen und Vortagen
- ✅ Vergütungslogik: WT 250€, WE 450€ (nur ab Schwelle ≥ 2,0 WE-Einheiten)
- ✅ Abzug 1,0 WE-Einheit (Freitag-Priorität) nach Erreichen der Schwelle
- ✅ Vorbefüllte Monatsvorlagen mit allen Datumswerten
- ✅ Excel-kompatibel (ohne Office 365 Funktionen)
Installation
- Virtuelle Umgebung erstellen:
python -m venv .venv
- Umgebung aktivieren:
.\.venv\Scripts\Activate.ps1
- Abhängigkeiten installieren:
pip install -r requirements.txt
Verwendung
Monat erstellen
python src/fill_plan_dates.py 2025 11 # November 2025
python src/fill_plan_dates.py 2025 12 # Dezember 2025
Die Datei landet in output/Dienstplan_YYYY_MM_NRW.xlsx.
Daten eintragen
- Öffne die generierte Datei
- Gehe zum Blatt "Plan"
- Trage in Spalte B die Mitarbeiter-Namen ein
- Trage in Spalte C den Anteil ein (1 = voll, 0.5 = halb)
- Gehe zum Blatt "Auswertung" und trage in Spalte A alle Mitarbeiter ein
Fertig! Alle Berechnungen erfolgen automatisch.
Projektstruktur
.
├── webapp/ # Web-App (Browser) 🆕
│ ├── index.html # Haupt-HTML-Datei
│ ├── styles.css # Styling
│ ├── app.js # App-Logik & UI
│ ├── calculator.js # Bonusberechnung
│ ├── holidays.js # NRW-Feiertagsdaten
│ ├── storage.js # LocalStorage-Verwaltung
│ └── README.md # Web-App Dokumentation
├── src/ # Python source code
│ ├── build_template.py # Erstellt die Basis-Vorlage
│ ├── fill_plan_dates.py # Füllt Monate mit Datumszeilen
│ └── read_excel.py # Liest xlsx-Dateien aus
├── android-app/ # Android mobile app
│ ├── app/ # Android app source code
│ ├── build.gradle.kts # Build configuration
│ └── README.md # Android app documentation
├── output/ # Generierte Monatspläne
├── templates/ # Basis-Vorlage
├── requirements.txt # Python-Abhängigkeiten (openpyxl)
├── SPECIFICATION.md # Vollständige Regeln & Formeln
└── README.md # Diese Datei
Regeln (Variante 2 - streng)
- WE-Tag: Fr/Sa/So + Feiertag + Vortag Feiertag
- WT-Tag: Alle anderen Tage (250 € pro Einheit)
- WE-Vergütung: Nur wenn Monatssumme ≥ 2,0 WE-Einheiten → 450 €/Einheit, dann Abzug 1,0 (zuerst von Freitag)
- Unter Schwelle: WE-Dienste = 0 € (nicht als WT vergütet)
Details siehe SPECIFICATION.md.
Lizenz
MIT