This fixes the issue where:
- December 24 was not recognized as a special day
- December 23 was not marked as Vortag (pre-holiday day)
By adding Heiligabend to the holiday list:
- Dec 24 is now Ist_FEIERTAG=TRUE (treated as WE-Tag)
- Dec 23 is now Ist_VORTAG=TRUE (day before holiday, also WE-Tag)
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
- Added new "Bonus-Bericht" button to both Dienstplan_Portable.html and webapp
- Creates a printable HTML report with:
- Header with "Bonuszahlungen" title
- Month and payout date information
- Table showing duties per weekday with amounts per employee
- Individual explanatory notes for each employee
- Print/PDF save button
- Format matches user's requested output style from issue #20
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
- Add CSV export button to Dienstplan_Portable.html
- Add CSV export button to webapp (index.html, app.js, styles.css)
- Export includes all duties and monthly summary with calculations
- Use semicolon separator for German Excel compatibility
- Add UTF-8 BOM for proper character encoding
- Add proper CSV escaping for names with special characters
- Add helpful tip explaining CSV compatibility with Excel/LibreOffice/Google Sheets
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
- Vollständige HTML-Datei mit eingebettetem CSS und JavaScript
- 3-Schritt-Workflow: Mitarbeiter -> Dienste -> Ergebnis
- Läuft direkt im Browser ohne Installation oder Server
- Feiertage NRW 2025-2030 integriert
- Lokale Speicherung im Browser (localStorage)
- Kalenderansicht mit WE-Tag-Markierung
- Korrekte Bonus-Berechnung nach Variante 2 (streng)
- Gesamter Bonus (WT + WE) wird nur gezahlt, wenn >= 2,0 WE-Tage erreicht
- Unter Schwelle: Auszahlung = 0€ (weder WT noch WE)
- Abzug mit Freitag-Priorität implementiert
- Testfälle und Dokumentation aktualisiert
Betrifft:
- webapp/calculator.js: Korrekte Berechnung mit Freitag-Priorität
- src/calculate.py: WT-Auszahlung nur bei Schwelle
- SPECIFICATION.md: Regeln, Testfälle und Changelog aktualisiert
- Neue vereinfachte Vorlage ohne komplexe Excel-Formeln
- Automatische Anteil-Berechnung (1 MA = 1.0, 2 MA = je 0.5)
- Python-basierte Vergütungsberechnung nach NRW-Regeln
- Datumsformat als Text für bessere Kompatibilität
- Testdaten-Generator mit Splits
Provides detailed overview of the entire Dienstplan project including:
- All three implementations (Web-App, Python/Excel, Android)
- Calculation logic differences between versions
- Complete file structure documentation
- Development guidelines and testing scenarios
- Code architecture explanation
- Deployment options and security notes
This document serves as a comprehensive guide for understanding
and maintaining the project.
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.