Add web-based duty schedule bonus calculator
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.
This commit is contained in:
parent
f12b6a1dc6
commit
520e3b62e0
8 changed files with 1984 additions and 1 deletions
164
webapp/README.md
Normal file
164
webapp/README.md
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
# Dienstplan Bonusrechner - Web App
|
||||
|
||||
Eine Web-Anwendung zur Berechnung von Bonuszahlungen für Wochenend- und Feiertagsdienste nach NRW-Regeln.
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ **Mitarbeiterverwaltung**: Mehrere Mitarbeiter gleichzeitig verwalten
|
||||
- ✅ **Dienstplanung**: Dienste für beliebige Monate eintragen (ganze und halbe Dienste)
|
||||
- ✅ **Automatische Feiertagserkennung**: NRW-Feiertage 2025-2030
|
||||
- ✅ **Bonusberechnung**: Automatische Berechnung nach festgelegten Regeln
|
||||
- ✅ **Datenexport/Import**: JSON-Export für Backup und Migration
|
||||
- ✅ **LocalStorage**: Alle Daten werden lokal im Browser gespeichert
|
||||
- ✅ **Responsive Design**: Funktioniert auf Desktop und Mobilgeräten
|
||||
|
||||
## Berechnungsregeln
|
||||
|
||||
### Qualifizierende Tage (WE/Feiertag)
|
||||
- **Wochenende**: Freitag, Samstag, Sonntag
|
||||
- **Feiertage**: Alle gesetzlichen Feiertage in NRW
|
||||
- **Tag vor Feiertag**: Der Tag vor einem gesetzlichen Feiertag
|
||||
|
||||
### Bonusberechnung
|
||||
1. **Schwellenwert**: Mindestens **2.0 qualifizierende Tage** im Monat erforderlich
|
||||
2. **Abzug**: Bei Erreichen des Schwellenwerts wird **1.0 qualifizierender Tag** abgezogen
|
||||
3. **Vergütung**:
|
||||
- Normale Tage: **250€** pro Tag
|
||||
- Qualifizierende Tage (WE/Feiertag): **450€** pro Tag
|
||||
- Halbe Dienste: Jeweils die Hälfte
|
||||
|
||||
### Beispiel
|
||||
Mitarbeiter hat im Monat:
|
||||
- 3 normale Tage (Mo-Do, keine Feiertage)
|
||||
- 3 Wochenend-Tage (Fr, Sa, So)
|
||||
|
||||
**Berechnung**:
|
||||
- Qualifizierende Tage: 3.0 (Schwellenwert erreicht ✓)
|
||||
- Abzug: -1.0 qualifizierender Tag
|
||||
- Bezahlt: 3 normale Tage + 2 qualifizierende Tage
|
||||
- **Bonus**: (3 × 250€) + (2 × 450€) = **1.650€**
|
||||
|
||||
## Installation & Nutzung
|
||||
|
||||
### Lokale Nutzung (einfachste Methode)
|
||||
|
||||
1. **Dateien öffnen**:
|
||||
- Navigieren Sie zum Ordner `webapp`
|
||||
- Öffnen Sie die Datei `index.html` direkt in Ihrem Browser (Doppelklick)
|
||||
|
||||
2. **Fertig!** Die App läuft komplett im Browser, keine Installation nötig.
|
||||
|
||||
### Mit lokalem Webserver (optional)
|
||||
|
||||
Wenn Sie lieber einen Webserver verwenden möchten:
|
||||
|
||||
```bash
|
||||
# Im webapp-Ordner
|
||||
python -m http.server 8000
|
||||
# Oder mit Node.js
|
||||
npx http-server -p 8000
|
||||
```
|
||||
|
||||
Dann im Browser öffnen: `http://localhost:8000`
|
||||
|
||||
## Bedienung
|
||||
|
||||
### 1. Mitarbeiter hinzufügen
|
||||
1. Gehen Sie zum Tab "Mitarbeiter verwalten"
|
||||
2. Geben Sie den Namen ein und klicken Sie auf "Hinzufügen"
|
||||
|
||||
### 2. Dienste eintragen
|
||||
1. Gehen Sie zum Tab "Dienste eintragen"
|
||||
2. Wählen Sie Monat und Jahr
|
||||
3. Wählen Sie einen Mitarbeiter
|
||||
4. Wählen Sie das Datum
|
||||
5. Wählen Sie Dienstanteil (ganz oder halb)
|
||||
6. Klicken Sie auf "Dienst hinzufügen"
|
||||
|
||||
**Hinweis**: Qualifizierende Tage (WE/Feiertag) werden grün hervorgehoben.
|
||||
|
||||
### 3. Bonus berechnen
|
||||
1. Gehen Sie zum Tab "Berechnung"
|
||||
2. Wählen Sie Monat und Jahr
|
||||
3. Klicken Sie auf "Berechnung durchführen"
|
||||
4. Sehen Sie die Ergebnisse für alle Mitarbeiter
|
||||
|
||||
### 4. Daten exportieren/importieren
|
||||
1. Gehen Sie zum Tab "Einstellungen"
|
||||
2. Klicken Sie auf "Daten exportieren" für ein Backup
|
||||
3. Verwenden Sie "Daten importieren" um gespeicherte Daten zu laden
|
||||
|
||||
## Datenspeicherung
|
||||
|
||||
- Alle Daten werden im **Browser LocalStorage** gespeichert
|
||||
- Die Daten bleiben erhalten, auch nach Schließen des Browsers
|
||||
- **Wichtig**: Beim Löschen der Browser-Daten gehen die Daten verloren
|
||||
- Regelmäßige Exports werden empfohlen!
|
||||
|
||||
## NRW Feiertage (2025-2030)
|
||||
|
||||
Die App enthält alle gesetzlichen Feiertage für NRW von 2025 bis 2030:
|
||||
- Neujahr
|
||||
- Karfreitag
|
||||
- Ostermontag
|
||||
- Tag der Arbeit
|
||||
- Christi Himmelfahrt
|
||||
- Pfingstmontag
|
||||
- Fronleichnam
|
||||
- Tag der Deutschen Einheit
|
||||
- Allerheiligen
|
||||
- 1. und 2. Weihnachtstag
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Projektstruktur
|
||||
```
|
||||
webapp/
|
||||
├── index.html # Haupt-HTML-Datei
|
||||
├── styles.css # Styling
|
||||
├── app.js # Haupt-App-Logik & UI
|
||||
├── calculator.js # Bonusberechnungs-Logik
|
||||
├── holidays.js # NRW-Feiertagsdaten
|
||||
├── storage.js # LocalStorage-Verwaltung
|
||||
└── README.md # Diese Datei
|
||||
```
|
||||
|
||||
### Technologien
|
||||
- **Vanilla JavaScript** (kein Framework erforderlich)
|
||||
- **HTML5 & CSS3**
|
||||
- **LocalStorage API**
|
||||
- Keine externen Abhängigkeiten
|
||||
- Funktioniert in allen modernen Browsern
|
||||
|
||||
### Browser-Kompatibilität
|
||||
- Chrome/Edge (empfohlen)
|
||||
- Firefox
|
||||
- Safari
|
||||
- Opera
|
||||
|
||||
## Tipps & Tricks
|
||||
|
||||
1. **Regelmäßige Backups**: Exportieren Sie Ihre Daten regelmäßig als JSON-Datei
|
||||
2. **Drucken**: Die Berechnungsseite kann direkt gedruckt werden (Datei → Drucken)
|
||||
3. **Mehrere Browser**: Daten sind browser-spezifisch und werden nicht synchronisiert
|
||||
4. **Mobile Nutzung**: Die App ist mobilfreundlich und kann auch auf Tablets/Smartphones genutzt werden
|
||||
|
||||
## Unterschiede zu anderen Versionen
|
||||
|
||||
Diese Web-App verwendet leicht andere Regeln als die Python/Excel Version:
|
||||
|
||||
### Web-App Logik (Ihre Anforderungen)
|
||||
- Wenn < 2 WE-Tage: **Keine Bonuszahlung**
|
||||
- Wenn ≥ 2 WE-Tage:
|
||||
- 1 WE-Tag wird abgezogen
|
||||
- Alle übrigen Tage werden bezahlt (normale: 250€, WE: 450€)
|
||||
|
||||
### Python/Excel Version (Variante 2 "streng")
|
||||
- Normale Tage (WT) werden immer bezahlt (250€)
|
||||
- WE-Tage nur wenn ≥ 2.0 WE-Einheiten
|
||||
|
||||
Die Web-App folgt genau Ihren beschriebenen Anforderungen.
|
||||
|
||||
## Lizenz
|
||||
|
||||
MIT
|
||||
Reference in a new issue