3.13. Zeiterfassung

Seit der Version 3.5.7 enthält kivitendo ein Modul zur Zeiterfassung. Damit ist es möglich, auftrags-, kunden- oder projektbezogen, Arbeitszeiten zu erfassen. Die erfassten Zeiten können über einen Hintergrund-Job in Lieferscheine umgewandelt werden.

3.13.1. Konfiguration

Die Zeiterfasssung funktioniert auch ohne Konfiguration, sofern der Benutzer die entsprechenden Rechte besitzt. Allerdings ist es möglich, Artikel für die Zeiterfassung zu konfigurieren, die im Bericht ausgewertet und bei der Umwandlung zum Lieferschein verwendet werden können. Zudem kann auf benutzerebene eingestellt werden, ob Zeiten mit Start- und End-Zeit oder mit Datum und Dauer erfasst werden sollen.

3.13.1.1. Zugriffsrechte

In der Rechteverwaltung im Admin-Bereich können im Zusammenhang mit der Zeiterfassung drei verschiedene Rechte vergeben werden:

  • Zeiterfassungen erfassen, bearbeiten und ansehen

    Diese Recht steuert, ob eine Gruppe den Menüpunkt zur Zeiterfassung überhaupt sehen und diese verwenden kann.

  • Zeiterfassungseinträge aller Mitarbeiter anzeigen

    Ohne dieses Recht darf ein Benutzer einer Benutzergruppe, die die Zeiterfassung verwenden darf, nur Zeiteinträge im Bericht sehen, bei denen dieser als Mitarbeiter eingetragen ist.

  • Zeiterfassungseinträge aller Mitarbeiter bearbeiten

    Ohne dieses Recht darf ein Benutzer einer Benutzergruppe, die die Zeiterfassung verwenden darf, nur Zeiteinträge anlegen und bearbeiten, bei denen dieser als Mitarbeiter eingetragen ist.

3.13.1.2. Artikel für Zeiterfassung

Unter SystemArtikel für Zeiterfassung können Artikel zur Nutzung mit der Zeiterfassung erfasst werden. Diese Artikel müssen eine zeitbasierte Einheit haben.

3.13.1.3. Benutzereinstellungen

Unter ProgrammBenutzereinstellungen im Reiter Persönliche Einstellungen bei Datum und Dauer für Zeiterfassung verwenden kann der Benutzer angeben, ob Zeiten mit Start- und End-Zeit oder mit Datum und Dauer erfasst werden sollen.

3.13.2. Erfassen

Über den Menüpunkt ProduktivitätZeiterfassung gelangt man zur Erfassungsmaske der Zeiterfassung. Je nach Einstellung muss ein Datum oder Datum und Start-Zeit angegeben werden. Ebenso sind die Felder Kunde und Beschreibung Pflichtfelder.

Wird ein Auftrag oder ein Projekt, dem ein Kunde zugeordnet ist, ausgewählt, so wird das Feld Kunde automatisch mit dem zugehörigen Kunden gefüllt und für die manuelle Bearbeitung gesperrt.

Die End-Zeit bzw. die Dauer ist kein Pflichtfeld, damit man einen Eintrag z.B. beim Start der Arbeit anlegen und später am Ende dann die End-Zeit bzw. Dauer erfassen kann. Bei Eingabe über Start- und End-Zeit dürfen sich die Zeiten für ein und denselben Mitarbeiter nicht überlappen.

Falls der Bearbeiter das Recht Zeiterfassungseinträge aller Mitarbeiter bearbeiten besitzt, kann auch der Mitarbeiter für diesen Zeiteintrag ausgewählt werden.

3.13.3. Bericht

Ein Bericht über die erfassten Zeiten lässt sich über ProduktivitätBerichteZeiterfassung ausgeben. Hier lassen sich die Zeiten auch filtern, sortieren und exportieren.

Ausgewählte Zeiteinträge können über AktionenAls gebucht markieren als schon gebucht markiert werden. Dies geschieht normalerweise bei der Konvertierung zum Lieferschein und kann hier händisch durchgeführt werden, wenn diese Zeitbuchungen bei der Konvertierung nicht mehr berücksichtigt werden sollen.

3.13.4. Konvertierung zu Lieferscheinen

Über den Hintergrund-Job ConvertTimeRecordings können Zeiteinträge in Lieferscheine umgewandelt werden. Hierbei werden alle noch nicht gebuchten Zeiteinträge eines bestimmten Zeitraums für bestimmte Kunden gesammelt und in Lieferscheine umgewandelt. Pro Kunde wird ein Lieferschein generiert und pro Artikel wird eine Positionszeile erzeugt. Dabei werden Einträge mit gleichen Beschreibungen zusammengefasst. Die Details landen im Langtext der Position.

Ohne übergebene Parameter im Feld Daten werden alle Zeiteinträge des letzten Monats für alle Kunden umgewandelt. Dabei werden die Zeiten auf volle Viertelstunden aufgerundet (siehe auch Konfigurations-Optionen der Zeiterfassung).

3.13.4.1. Konfigurations-Optionen

Zur generellen Konfiguration von Hintergrund-Jobs und zur Übergabe von Parametern als Daten an diese, siehe Abschnitt 2.8, „Der Task-Server“ bzw. Abschnitt 2.9, „Konfiguration der Hintergrund-Jobs“).

Folgende Parameter können als Daten an den Hintergrund-Job zur Konvertierung übergeben werden:

  • from_date

    Das Startdatum, von welchen an die Zeiteinträge berücksicht werden. Voreinstellung ist der erste Tag des vorherigen Montats.

    Beispiel (das Zeitformat hängt von der persönlichen Einstellungen ab):

    from_date: 01.12.2020

  • to_date

    Das Datum, bis zu welchem die Zeiteinträge zur Konvertierung gesammelt werden. Voreinstellung ist der letzte Tag des vorherigen Montas.

    Beispiel (das Zeitformat hängt von der persönlichen Einstellungen ab):

    to_date: 15.12.2020

  • customernumbers

    Eine Liste mit Kundennummern, für die Zeiteinträge gesammelt werden sollen. Wird diese Liste nicht angegeben, werden Einträge für alle Kunden berücksichtig.

    customernumbers: [c1,22332,334343]

  • override_part_id

    Die Datenbank-Id einer zeitbasierten Dienstleistung, die verwendet werden soll, um die Zeiteinträge zu buchen. Dieser Wert überschreibt den Eintrag des Artikels des Zeiteintrags.

  • default_part_id

    Die Datenbank-Id einer zeitbasierten Dienstleistung, die verwendet werden soll, um die Zeiteinträge zu buchen, falls im Zeiteintrag kein Artikel gespeichert ist.

  • rounding

    Ist dieser Wert 0, so werden die Zeiten nicht gerundet. Ist der Wert 1 (oder "wahr" in Perl"), so werden die Zeiten auf volle Viertelstunden aufgerundet, also z.B. 0.25h, 0.5h, 0.75h, 1.25h ...

    Voreinstellung ist 1 ("wahr").

  • link_order

    Ist der Wert 1 (oder "wahr" in Perl"), so verknüpft der Hintergrund-Job den erzeugten Lieferschein mit dem im Zeiteintrag angegebenen Auftrag. Ist kein Auftrag angegeben, wird versucht, einen Auftrag für den angegebenen Kunden und die angegebene Projektnummer zu finden.

    Folgende Kriterien werden zum Finden eines Vorgängerauftrags angwendet:

    • Auftrag ist im Zeiteintrag angegeben oder

    • Datenbank-Id des Projekts des Auftrags ist gleich der Datenbank-Id des Zeiteintrags oder der in den Daten übergebenen Projekt-Id

    • Kunde des Auftrags ist gleich Kunde des Zeiteintrags

    • der Auftrag muss mindestens eine zugehörige zeitbasierte Position haben

    • das Projekt muss gültig und aktiv sein

    Voreinstellung ist aus. Wenn dieser Parameter gesetzt ist, läuft der Hintergrund-Job auf einen Fehler, falls kein geeigneter Vorgängerauftrag gefunden werden kann.

    Der Job beachtet nicht, ob der Auftrag schon geliefert oder geschlossen ist. Wenn der Kundenauftrag überliefert wird, muss dies organisatorisch geklärt werden. Der Kundenauftrag kann auch bereits geschlossen sein, d.h. der Betrag ist vollständig fakturiert, aber die Leistungen sind noch nicht vollständig geliefert (einfacher Fall: "Vorauskasse").

    siehe auch den Hintergrund-Job CloseProjectsBelongingToClosedSalesOrder für eine weitergehende Automatisierung der Abläufe.

  • override_project_id

    Verwende diese Datenbank-Id für das Projekt an Stelle des im Zeiteintrag angegebenen Projekts, um den zugehörigen Auftrag zu finden. Dieser Parameter wird nur berücksichtig, wenn link_order wahr ist.

  • default_project_id

    Verwende diese Datenbank-Id für das Projekt, falls im Zeiteintrag kein Projekt angegeben ist, um den zugehörigen Auftrag zu finden. Dieser Parameter wird nur berücksichtig, wenn