Wie wir in unseren vorangegangenen Posts zum Thema Intranet / CRM mit Drupal schon berichtet haben, wurde unser mitlerweile sehr umfassendes Intranet komplett mit Drupal umgesetzt. Unser CRM mit Drupal wurde bereits in Teil 2 beschrieben. Heute möchte ich veranschaulichen, wie wir die Zeiterfassung der Mitarbeiter umgesetzt haben.
Um Urlaubstage, Krankheitstage, Arbeitszeiten und Überstunden zu verwalten, besitzt jeder Mitarbeiter ein Profil im BS Intranet. Dort ist hinterlegt, wie viele Stunden er pro Tag arbeiten soll, wie viele Tage die Woche er arbeitet und wie viel Urlaub es im Jahr gibt. Mit einem Node "Zeiteintrag" der unter anderem ein Datefield besitzt und die Angabe einer Kategorie erlaubt (Krankheit, Urlaub, Arbeitszeit und Feiertag) werden die Zeiten erfasst. Lokale Feiertage, die letztendlich ja als Arbeitszeit gewertet werden müssen, werden am Jahresanfang einmal eingetragen und dann in den Reports automatisch berücksichtigt.
Mit dem täglich laufenden Cronjob werden die Daten Gesamtarbeitszeit, Urlaubstage, Resturlaubstage, Krankheitstage und Überstunden erreichnet und zwecks Rekonstruierbarkeit in einer extra Tabelle gespeichert. Die Daten des Aktuellen Monats werden natürlich mit jedem Update des Crons überschrieben, da sich diese Werte mit jedem Zeiteintrag verändern. Nach dem 10ten eines jeden Monats werden die Werte archiviert, so dass Zeiteinträge in der Vergangenheit keine Auswirkung mehr auf die Rückstellung der Arbeitszeiten,Überstunden etc. haben, was sehr wichtig für das Controling ist.
Jeder Mitarbeiter hat dann jederzeit einen Einblick in sein Stundenkonto und kann nachvollziehen wie viele Urlaubstage er noch hat und wie viele Überstunden geleistet wurden.
Die kalkulierten Werte (Rückstellungen) der Arbeitszeiten, Überstunden und Urlaubstage werden in einer extra Tabelle gespeichert. Damit wir diese Tabelle in Views verwenden können, haben wir Sie mit der Views2 API in Views integriert. So konnten wir mit Views Calc die Summe der Zeiteinträge über alle Monate einfach zusammmenrechnen lassen und die Tabelle mit exposed Filters filterbar machen.
Dieses Feature ist eine wertvolle Ergänzung in unserem Intranet und schafft Vertrauen und Transparanz unter allen Mitarbeitern in der Firma. Wie umständlich wäre es, wenn man die Arbeitszeiten manuell ausrechnen müsste!
Das "Wegspeichern" der Rückstellung aller Zeiten wurde in einem eigenen Modul entwickelt, da es für diesen doch sehr individuellen Anwendungsfall kein Modul gibt (oder wir es nicht kennen?). Man könnte das zwar sicher auch irgendwie mit einem Calculated Field machen, das schien mir allerdings zu umständlich. Da ich die Drupal API ohnehin sehr gerne verwende und das Entwickeln damit einfach und intuitiv ist, sprach aus dieser Sicht auch nichts dagegen.
Bei Fragen oder Anregungen nutzen Sie gerne die Kommentarfunktion.
Sind Sie ebenfalls an unserer Leistung im Bereich Intranet und CRM Entwicklung interessiert so kontaktieren Sie uns gerne jederzeit.












Kommentar hinzufügen