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.
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.
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.
Unter können Artikel zur Nutzung mit der Zeiterfassung erfasst werden. Diese Artikel müssen eine zeitbasierte Einheit haben. →
Über den Menüpunkt 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.
Ein Bericht über die erfassten Zeiten lässt sich über ausgeben. Hier lassen sich die Zeiten auch filtern, sortieren und exportieren. → →
Ausgewählte Zeiteinträge können über 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. →
Ü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).
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