No description
- PHP 53.6%
- Twig 46.4%
| Command | ||
| config | ||
| Controller | ||
| DependencyInjection | ||
| Entity | ||
| EventSubscriber | ||
| Export | ||
| Migrations | ||
| Repository | ||
| Resources | ||
| Security | ||
| Service | ||
| Twig | ||
| composer.json | ||
| README.md | ||
| ReisekostenBundle.php | ||
Kimai Reisekosten-Plugin
Reisekostenabrechnungs-Plugin für Kimai v2.
Features
- ✅ Reisekostenabrechnungen anlegen, bearbeiten, anzeigen
- ✅ Bis zu 20 Positionen pro Abrechnung
- ✅ Automatische Pauschalenberechnung (Tagespauschale >8h / 24h / Hotel) nach Land
- ✅ Alle Positionstypen aus der Excel: Hotel, Fahrtkosten, Parken, Bewirtung, KM-Abrechnung, Maut, Flug, …
- ✅ MwSt-Sätze werden automatisch je Positionstyp gesetzt
- ✅ Kontonummern (SKR03) automatisch je Positionstyp
- ✅ Mahlzeitenabzug (Frühstück / Mittag / Abend) mit automatischer Korrektur der Tagespauschhale
- ✅ KM-Abrechnung mit automatischer Kostenberechnung (0,35 €/km Privatauto)
- ✅ Länderpauschalen: Deutschland, Schweiz, Österreich
- ✅ Status-Workflow: Offen → Eingereicht → Genehmigt / Abgelehnt
- ✅ Excel-Export im gleichen Format wie Ihre bisherige Excel-Datei
- ✅ Korrekturen (Korrektur 1 & 2) je Abrechnung
- ✅ Menüeintrag im Kimai-Seitenmenü
Länderpauschalen
| Land | >8 Stunden | 24 Stunden | Hotel |
|---|---|---|---|
| Deutschland | 14,00 € | 28,00 € | 20,00 € |
| Schweiz | 43,00 € | 64,00 € | 0,00 € |
| Österreich | 33,00 € | 50,00 € | 0,00 € |
Installation
Voraussetzungen
- Kimai v2.0+
- PHP 8.1+
- Composer
Schritt 1: Plugin-Verzeichnis anlegen
cp -r ReisekostenBundle /var/www/kimai/var/plugins/
Schritt 2: Abhängigkeiten installieren
cd /var/www/kimai
composer require phpoffice/phpspreadsheet
Schritt 3: Datenbank-Migration ausführen
cd /var/www/kimai
bin/console kimai:bundle:reisekosten:install
# oder manuell:
bin/console doctrine:migrations:migrate --em=default
Schritt 4: Cache leeren
bin/console cache:clear
bin/console cache:warmup
Schritt 5: Plugin aktivieren (falls nötig)
In config/packages/kimai.yaml:
kimai:
plugins:
- 'ReisekostenBundle'
Schritt 6: Plugin aufrufen
Nach dem Login erscheint im Kimai-Seitenmenü der Eintrag „Reisekosten".
Stammdaten anpassen
Alle Stammdaten (Mitarbeiter, Kunden, Positionstypen, Länderpauschalen) sind in der Datei
Service/StammdatenService.php hinterlegt und können dort direkt bearbeitet werden.
Für eine datenbankbasierte Verwaltung der Stammdaten können entsprechende Admin-Screens
auf Anfrage ergänzt werden.
Positionstypen & Konten (SKR03)
| Positionstyp | MwSt | Konto |
|---|---|---|
| Hotelkosten 19% | 19% | 4666 |
| Hotelkosten 7% | 7% | 4666 |
| Hotelkosten Pauschale | 0% | 4666 |
| Allgemeine Fahrtkosten 19% | 19% | 4663 |
| Taxifahrt 7% | 7% | 4663 |
| Zugfahrt 7% | 7% | 4663 |
| Flug 19% (National) | 19% | 4663 |
| Flug 0% (International) | 0% | 4663 |
| Parken 19% | 19% | 4663 |
| Tagespauschalen > 8 Stunden | 0% | 4664 |
| Tagespauschalen 24 Stunden | 0% | 4664 |
| Fahrtkosten pro KM (Privatauto) | 0% | 4668 (0,35 €/km) |
| Fahrtkosten pro KM (Geschäftsauto) | 0% | 4668 |
| Bewirtungsbeleg 19% | 19% | 4650 / 4654 (30%) |
| Maut Inland | 19% | 4663 |
| Maut Ausland | 0% | 4663 |
Datenbankstruktur
| Tabelle | Beschreibung |
|---|---|
kimai2_reisekosten |
Haupttabelle Reisekostenabrechnungen |
kimai2_reisekosten_positionen |
Einzelpositionen je Abrechnung |
kimai2_reisekosten_korrekturen |
Korrekturen je Abrechnung |
kimai2_reisekosten_korrektur_pos |
Positionen je Korrektur |
API-Endpunkte (intern, für JavaScript)
| Route | Beschreibung |
|---|---|
POST /reisekosten/api/pauschale |
Berechnet Tagespauschale (Land, Typ, Mahlzeiten) |
POST /reisekosten/api/positionstyp |
Liefert MwSt & Konto für einen Positionstyp |
Beleg-Uploads pro Reisekostenabrechnung
Diese Version ergänzt Reisekostenabrechnungen um mehrere PDF-Belege:
- Upload mehrerer PDF-Dateien über eine Dropzone im Reisekostenformular
- dauerhafte Speicherung der einzelnen Original-PDFs unter
var/data/reisekosten/{reportId}/original/ - Download einzelner Belege in der Detailansicht
- dynamisches Zusammenführen aller Belege erst beim Download des Sammel-PDFs
- Löschen einzelner Belege aus der Detailansicht
- Entfernen des Dokumentenordners beim Löschen der Reisekostenabrechnung
Für das dynamische Zusammenführen der PDFs werden die Composer-Pakete benötigt, die in composer.json eingetragen sind:
composer require setasign/fpdf setasign/fpdi
Nach dem Update muss der Installationsbefehl erneut ausgeführt werden, damit die Tabelle kimai2_reisekosten_documents erstellt wird:
bin/console kimai:bundle:reisekosten:install