Skip to content

PraxisZeit 1.22.0

Choose a tag to compare

@phash phash released this 04 Nov 12:07
· 165 commits to master since this release
5c0c468

Minor-Release mit zwei großen Neuerungen: verkürzte Tage (z. B. Heiligabend
und Silvester nur bis 12 Uhr) und ein Vertragsverlauf für Urlaubsanspruch,
Stundenzählung und Minijob-Einstellungen. Update aus 1.21.x ohne
Zwischenschritte. Enthält zwei Datenbank-Migrationen (074_reduced_days,
075_contract_history). Sie legen eine neue Tabelle an und übernehmen die
heutigen Werte jeder Person in ihren Arbeitszeit-Verlauf — Salden,
Urlaubskonten und Exporte aller bestehenden Daten bleiben unverändert (geprüft
gegen eine echte Praxis-Datenbank). Vor dem Update ein Backup ziehen
(UPDATE.md).

✨ Verkürzte Tage

Für einzelne Tage lässt sich das Soll auf eine Höchststundenzahl begrenzen —
„wer an dem Tag Dienst hat, arbeitet höchstens X Stunden“.

  • Heiligabend und Silvester: Unter Einstellungen → „Sondertage (24./31.12.)“
    gibt es neben „normaler Arbeitstag“, „halber Feiertag“ und „frei“ die neue
    Einstellung „Verkürzt auf X Stunden“ (Feld „Höchstens (Stunden)“,
    0,25–12 Stunden in Viertelstunden, Vorgabe 4).
  • Eigene Tage: Die neue Karte „Verkürzte Tage“ auf derselben Seite nimmt
    beliebige weitere Tage auf, z. B. Rosenmontag (Datum, Bezeichnung,
    Höchststunden).
  • So wird gerechnet: Das Tagessoll ist die kleinere Zahl aus dem normalen
    Tagessoll und X. Wer an dem Tag ohnehin weniger Soll hat, behält es; wer an
    dem Tag nicht arbeitet, hat weiter kein Soll. Ein Feiertag geht vor, am
    Wochenende hat der Tag keine Wirkung. Gestempelte Zeit wird voll angerechnet
    — wer länger bleibt, baut Überstunden auf.
  • Urlaub an einem verkürzten Tag kostet einen halben Tag, Krankheit und
    Fortbildung
    werden mit dem verkürzten Soll gutgeschrieben, Betriebsferien
    buchen das verkürzte Soll. Das feste Monats-Soll für Minijobs bleibt
    unverändert.
  • Anzeige: Kalender und Stempelkarte zeigen „verkürzter Tag (max. 4 h)“.
  • Betriebsferien werden automatisch neu gebucht, sobald Sie einen
    verkürzten Tag oder die 24./31.12.-Einstellung ändern (siehe „Geändertes
    Verhalten“).

✨ Vertragsverlauf: Urlaubsanspruch, Stundenzählung und Minijob ab Datum

Urlaubsanspruch, „Stundenzählung aktiv“, MiLoG-Arbeitszeitkonto, vereinbarte
Monatszeit und festes Monats-Soll gelten jetzt — wie die Wochenstunden — ab
einem Datum
. Frühere Monate rechnen weiter mit dem alten Stand.

  • Ein Ort zum Ändern: Der Dialog „Arbeitszeit anpassen…“ hat den neuen
    Abschnitt „Urlaub und Abrechnung“ mit „Urlaubsanspruch pro Jahr ab
    diesem Datum“, der Stundenzählung und den Minijob-Einstellungen. Im Formular
    „Benutzer bearbeiten“ werden die Werte nur noch angezeigt (beim Anlegen
    bleiben sie dort eingebbar).
  • Vorschlag für den Urlaubsanspruch: Ändern sich die Arbeitstage, schlägt
    der Dialog den passenden Anspruch vor (alter Anspruch × neue Arbeitstage ÷
    alte Arbeitstage, z. B. 24 Tage bei 4 Tagen → 30 bei 5 Tagen). Der Wert ist
    überschreibbar; „Vorschlag übernehmen (30)“ holt ihn zurück.
  • Anteilig im Wechseljahr: Wechselt der Anspruch während des Jahres, zählt
    jeder Abschnitt nach Monaten. Beispiel: 24 Tage bis Oktober, 30 ab November
    → 2026 = 24 × 10/12 + 30 × 2/12 = 25 Tage, ab 2027 30 Tage.
  • Vorschau: Die Auswirkungen zeigen jetzt „Urlaubsanspruch {Jahr}“ vorher →
    nachher für das betroffene und das folgende Jahr (die bisherige Zeile heißt
    „Urlaub verbraucht {Jahr}“).
  • Stundenzählung ab Datum: Wird die Stundenzählung ab einem Datum an- oder
    ausgeschaltet, gilt das genau ab diesem Tag; rückwirkend rechnet PraxisZeit
    die betroffenen Tage neu (Zeiteinträge und Abwesenheiten — mit Vorschau,
    Begründung und Protokoll wie jede rückwirkende Änderung).
  • Minijob-Einstellungen ab Monatsanfang: MiLoG-Konto, vereinbarte
    Monatszeit und festes Monats-Soll wirken je Monat.
  • Korrektur der ersten Zeile: Eine Änderung genau zum Datum der frühesten
    Verlaufszeile korrigiert diese Zeile, statt mit „Datum schon belegt“
    abzulehnen.

⚠️ Geändertes Verhalten

  • Urlaubsanspruch, Stundenzählung und Minijob-Einstellungen ändern Sie nur
    noch über „Arbeitszeit anpassen…“.
    Die Schnittstelle
    PUT /api/admin/users/{id} lehnt diese fünf Felder mit 400 ab.
  • Minijob-Einstellungen gelten immer ab dem Monatsersten. Ein anderes Datum
    wird abgelehnt: „Änderungen an Minijob-Einstellungen gelten immer ab dem
    Monatsersten.“ Das gilt auch, wenn eine spätere Verlaufszeile dadurch mitten
    im Monat andere Minijob-Werte erben würde.
  • Rückwirkend sinkender Urlaubsanspruch braucht eine Begründung — wie jede
    rückwirkende Verkürzung (Grund, Begründung, Bestätigung). Das gilt auch, wenn
    Sie eine frühere Erhöhung des Anspruchs löschen oder zurücksetzen.
  • Betriebsferien werden automatisch neu gebucht, wenn Sie die
    24./31.12.-Einstellung oder einen verkürzten Tag ändern (bisher: von Hand
    erneut speichern). Neu gebucht werden nur aktive Teilnehmende an Tagen ohne
    Zeiteintrag; in abgeschlossenen Jahren wird nichts geändert, dort erscheint
    nur der Hinweis auf den veralteten Übertrag.
  • Personen, deren Stundenzählung wechselt: Monatsbericht, Exporte und
    Journal zählen an Tagen ohne Stundenzählung kein Ist mehr; die Tagesspalte
    „Differenz“ ist dort 0, Netto und Stempel bleiben sichtbar. Wer nie
    Stundenzählung hatte, sieht keine Änderung.
  • MiLoG-Prüfungen (50-%-Grenze, Monatsgrenze, 12-Monats-Frist) richten sich
    nach dem Monat des Eintrags und gelten nur für Monate mit MiLoG-Konto und
    Stundenzählung.
  • Wochenübersicht meldet fehlende Buchungen nur an Tagen mit
    Stundenzählung.
  • Rundung: Urlaubsanspruch und vereinbarte Monatszeit werden auf eine
    Nachkommastelle gerundet.

🐛 Fehlerbehebungen

  • Betriebsferien am halben Feiertag (24./31.12.) behalten ihre Stunden. Eine
    spätere Arbeitszeit-Änderung zog den gebuchten Betriebsferien-Tag auf das
    volle Tagessoll hoch (z. B. 4 → 8 Stunden; seit 1.18.1). Urlaubstage und
    Saldo waren richtig, die Stundenangabe in Exporten („Urlaub (8.0h)“) und im
    klassischen Jahresbericht aber falsch. Bestehende Zeilen korrigiert ein
    erneutes Speichern der betroffenen Betriebsferien.
  • Stundenvorschlag im Abwesenheitsformular berücksichtigt jetzt halben
    Feiertag, freien Sondertag und verkürzten Tag.
  • Benutzerliste und Dashboard zeigen Stundenzählung und Minijob-Status nach
    dem heute gültigen Vertragsstand.
  • DSGVO-Auskunft und §16-Notfallexport enthalten die fünf neuen
    Vertragsfelder.
  • Benutzerübersicht lädt für Minijob-Mitarbeitende deutlich schneller (eine
    statt bis zu 82 Abfragen der Vertragshistorie je Aufruf).

🔧 Update-Hinweise und Technik

  • Nach dem Update einmal die Betriebsferien speichern, die über den
    24./31.12. gehen, falls die Sondertage auf „halber Feiertag“ stehen (siehe
    Fehlerbehebung oben).
  • Urlaubsanspruch nachträglich korrigieren: Wurde ein Wechsel der
    Arbeitstage bisher per Hand im Übertrag ausgeglichen, tragen Sie die
    Änderung jetzt im Dialog „Arbeitszeit anpassen…“ mit dem richtigen
    Gültig-ab-Datum ein und nehmen den Handausgleich zurück.
  • Nach dem Update Seite neu laden: Ein vor dem Update im Browser geöffneter
    Arbeitszeit-Dialog kann beim Zurücksetzen mit „Der vorherige Stand hat sich
    inzwischen geändert“ (409) abbrechen.
  • Neue Schnittstellen: /api/admin/reduced-days (Verwaltung) und
    GET /api/reduced-days?year= (angemeldet). Verkürzte Tage stehen bewusst
    nicht im öffentlichen /api/settings. /time-entries/clock-status
    liefert zusätzlich today_special_day_label.
  • Migrationen: 074_reduced_days (Tabelle reduced_days mit
    Mandanten-Schutz), 075_contract_history (fünf Spalten in
    working_hours_changes, aus users befüllt). Bitgleichheit geprüft mit
    tools/migration-075/probe_075.py.
  • Getestet: Update 1.21.1 → 1.22.0 mit Docker-Paket, nativer Installation
    und im Windows-Emulator (Update, Neuinstallation, Neustart); Backend 4574,
    PostgreSQL 91, Frontend 1067 Tests grün; Installationsprüfung auf 5
    Linux-Distributionen.