erstmal eine Klasse Timeroom(fromTime, toTime, Reason)
Die würde ich gar nicht vorsehen (ich meine das Speichern eines Zeitraums). Wie schon einige Vorredner (
@mihe7 und
@Meniskusschaden) geschrieben haben, erst mal einfach nur die Ereignisse der Buchung aufnehmen und speichern. Darin sind i. d. R. enthalten: Personal-ID, Zeitstempel, Art (IN oder OUT), Terminal-ID.
Daraus lässt sich alles andere durch entsprechende Regeln berechnen. Das ist tatsächlich eine Art Buchungssystem (es nennt sich ja auch Zeitwirtschaftssystem). Direkt am MA ist dessen IRWAZ (arbeitsvertragliche Wochenarbeitszeit) hinterlegt, die als Basis für fast alle weiteren Berechnungen dient. Daneben gibt es noch Schichtschlüssel, die aussagen, wann der MA arbeiten muss, darf, usw.
Ein Angestellter könnte im Schichtschlüssel eingestellt haben, dass seine Rahmenzeit von 6 Uhr bis 20 Uhr geht, innerhalb derer er seine tägliche Arbeitszeit (IRWAZ / 5) arbeiten muss (evtl. auch mit Unterbrechungen).
Ein Fertigungsmitarbeiter hat entsprechend mehrere mögliche Schichtschlüssel, z. B. Früh- und Spätschicht, mit entsprechenden Rahmen- und Kernzeiten.
Daneben gibt es noch Schlüssel für arbeitsfreie Tage (Sa, So), Feiertage, Gleittage, Krankheit, usw. (gibt noch viele andere).
Jetzt wird
jedem Tag der Woche ein entsprechender Schlüssel zugewiesen und damit können die Buchungsereignisse für diesen Tag korrekt verrechnet werden.
Nehmen wir eine tägliche Arbeitszeit von 7 Stunden an, die Schichtschlüssel sind ganz einfach Arbeitstag (AT) und arbeitsfreier Tag (AFT). So würde das für einen Angestellten über das komplette Jahr hinweg eingestellt werden können (Rahmen- oder Kernzeiten sind hier nicht berücksichtigt).
Tag | MO | DI | MI | DO | FR | SA | SO |
Schlüssel | AT | AT | AT | AT | AT | AFT | AFT |
Anwesenheitszeit | 7,5 | 7,5 | 0 | 8,5 | 7,5 | 0 | 0 |
Gleitzeitkonto | 0,5 | 1,0 | -6,0 | -4,5 | -4,0 | -4,0 | -4,0 |
An einem Tag mit dem Schlüssel AT besteht eine Arbeitsverpflichtung, d. h. der MA muss anwesend sein und sein Zeit wird entsprechend verrechnet. Dadurch wird z. B. am Mittwoch, als der MA nicht anwesend war das Gleitzeitkonto mit der IRTAZ belastet. Da der Schlüssel AT ist, handelt es sich erst mal um einen unerlaubten Fehltag, der evtl. nachträglich korrigiert werden kann. Die Korrektur könnte eine Arbeitsunfähigkeitsbescheinigung oder Tarifurlaub sein, dann wird ein neuer Schlüssel AU oder TU eingestellt und der Tag wird aufgrund der Entgeltfortzahlung das Zeitkonto dann nicht mehr belasten. Es könnte auch GZ eingestellt werden, was weiterhin das Zeitkonto belastet, aber immerhin ist es dann kein Kündigungsgrund wegen unerlaubten Fehlens mehr

(Lassen wir mal die rechtlich korrekte Vorgehensweise für das Melden von AU und das Beantragen von TU außer acht)
An einem als arbeitsfrei eingestellten Tag, muss der MA auch nicht anwesend sein, so dass die Abwesenheit nicht zu einer Veränderung des Gleitzeitkontos führt (und auch nicht zu einer Fehlermeldung, wegen fehlender Anwesenheit). Wäre der Mitarbeiter am Samstag da, dann würde die gesamte Zeit in das Zeitkonto fließen, denn die IRWAZ ist ja an den Tagen von Mo - Fr zu erfüllen.
Tag | MO | DI | MI | DO | FR | SA | SO |
Schlüssel | AT | AT | GZ | AT | AT | AFT | AFT |
Anwesenheitszeit | 7,5 | 7,5 | 0 | 8,5 | 7,5 | 7 | 0 |
Gleitzeitkonto | 0,5 | 1,0 | -6,0 | -4,5 | -4,0 | 3,0 | 3,0 |
Kurze Zusammenfassung: Es reicht die Stempel-Ereignisse zu speichern und jedem einzelnen Wochentag einen Schlüssel zuzuordnen, um anschließend jede beliebige Berechnung zu machen.
Der Schichtschlüssel ermöglicht zusätzlich auch die Kontrolle der Rahmen- und Kernzeiten. Ist ein MA mit dem Schlüssel Frühschicht, an einem Tag von 14 - 22 Uhr anwesend, dann muss das zumindest mal einen Fehler anzeigen, der dann ggf. durch das Einstellen des Schlüssels Spätschicht korrigiert werden kann. Oder das System kann automatisch darauf reagieren. Bei uns ist es z. B. so, dass das System anhand der ersten Stempelzeit erkennt, welcher (für den MA freigegebene) Schlüssel eingestellt wird. Komme ich also morgens um 5:55 Uhr, dann wird der Schlüssel Frühschicht eingestellt, komme ich um 13:40 Uhr, dann der Schlüssel Spätschicht. Komme ich außerhalb der erlaubten Rahmenzeit, dann gibt es eine Fehlermeldung (an die Werkstattschreiberei), die manuell korrigiert wird.