ap_wage_item_time_type_stamp
Diese Funktion der venabo-Lohnengine ermittelt die Arbeitszeit eines Mitarbeiters innerhalb eines definierten Zeitintervalls – zum Beispiel 20-22 Uhr, 22-24 Uhr oder 00-06 Uhr. Das Ergebnis gibt venabo in Sekunden zurück.
| Eigenschaft | Wert |
|---|---|
| System | Lohnengine |
| Kategorie | Zeitarten-Ermittlung |
| Level | Zeitdauer |
| Gruppe | Stempelzeiten / Arbeitszeitintervalle |
| Rückgabetyp | INTEGER – Dauer in Sekunden |
Zweck der Funktion
venabo liest die Stempelzeiten eines Mitarbeiters und berechnet, wie viele Sekunden davon in ein angegebenes Zeitintervall fallen. Die Funktion unterstützt folgende Szenarien:
- Nacht- und Spätarbeit
- Wochenendzeiten
- Feiertagslogik (optional)
- Sonntagseinbeziehung (optional)
💡 Tipp: Für Zeitintervalle, die Mitternacht überschreiten (z. B. 22:00-02:00), kombinieren Sie zwei Funktionsaufrufe per Addition – einen mit IS_NEXT_DAY = FALSE und einen mit IS_NEXT_DAY = TRUE.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
employee | ID | Mitarbeiter-ID |
date_from | DATE | Startdatum des Berechnungszeitraums |
date_to | DATE | Enddatum des Berechnungszeitraums |
WAGE_TYPE_BLOCK_ITEM | STRUCT | Strukturparameter zur Steuerung der Berechnung |
INCLUDE_SUNDAYS | BOOLEAN (optional) | TRUE = Sonntage einbeziehen, FALSE = Sonntage ausschließen |
Relevante Felder im WAGE_TYPE_BLOCK_ITEM
| Feld | Wert / Typ | Beschreibung |
|---|---|---|
TIME_TYPE | 'STAMP' | Kennzeichnet die Verwendung von Stempelzeiten |
FROM_TIME | TIME (optional) | Beginn des Zeitintervalls, z. B. '20:00:00' |
TO_TIME | TIME (optional) | Ende des Zeitintervalls, z. B. '22:00:00' |
IS_NEXT_DAY | BOOLEAN (optional) | TRUE, wenn die Arbeit am Vortag begonnen hat und das Intervall nach Mitternacht liegt |
OPERATOR | '+' | Addiert die ermittelte Zeit |
WEEKDAY_FILTER | INTEGER (optional) | Filtert auf bestimmte Wochentage, z. B. 6 = Samstag, 7 = Sonntag |
UNIT | – | Wird von venabo nicht ausgewertet |
Berechnungslogik
venabo führt die Berechnung in folgenden Schritten durch:
- Stempelzeiten des Mitarbeiters für den angegebenen Zeitraum lesen.
- Stempelzeiten nach
FROM_TIMEundTO_TIMEfiltern. IS_NEXT_DAYprüfen, um Nachtarbeit über Mitternacht korrekt zuzuordnen.- Alle passenden Intervalle summieren.
- Sonntage einbeziehen oder ausschließen, sofern
INCLUDE_SUNDAYSgesetzt ist. - Ergebnis in Sekunden zurückgeben.
IS_NEXT_DAY im Detail
Dieses Feld ist entscheidend für die korrekte Erfassung von Nachtarbeit, die Mitternacht überschreitet:
| Wert | Verhalten |
|---|---|
TRUE | venabo zählt die Zeit nur, wenn die Arbeit am Vortag vor 00:00 Uhr begonnen hat. |
FALSE | venabo zählt die Zeit nur, wenn die Arbeit am selben Tag begonnen hat. |
⚠️ Hinweis: Intervalle, die nach Mitternacht liegen, aber nicht am Vortag gestartet wurden, liefern den Wert 0. Stellen Sie sicher, dass Sie IS_NEXT_DAY korrekt setzen, um Nachtarbeit vollständig zu erfassen.
Verhaltensbeispiele – Zeitintervalle
Zeitintervall 02:00-03:00 Uhr
IS_NEXT_DAY = TRUE – venabo zählt nur Zeit aus Arbeitsbeginn am Vortag:
| Gearbeitete Zeit | Ergebnis |
|---|---|
| 22:00-04:00 | 01:00 |
| 22:00-23:00 | 00:00 |
| 01:00-03:00 | 00:00 |
IS_NEXT_DAY = FALSE – venabo zählt nur Zeit aus Arbeitsbeginn am selben Tag:
| Gearbeitete Zeit | Ergebnis |
|---|---|
| 22:00-04:00 | 00:00 |
| 22:00-23:00 | 00:00 |
| 01:00-03:00 | 01:00 |
Zeitintervall 22:00-04:00 Uhr
IS_NEXT_DAY = FALSE:
| Gearbeitete Zeit | Ergebnis |
|---|---|
| 22:00-04:00 | 06:00 |
| 22:00-23:00 | 01:00 |
| 01:00-03:00 | 00:00 |
IS_NEXT_DAY = TRUE:
| Gearbeitete Zeit | Ergebnis |
|---|---|
| 22:00-04:00 | 00:00 |
| 22:00-23:00 | 00:00 |
| 01:00-03:00 | 00:00 |
Praxisbeispiel
Szenario: Ein Mitarbeiter arbeitet von Montag bis Samstag in der Spätschicht (20:00-22:00 Uhr) sowie in der Nachtschicht (22:00-06:00 Uhr). Sie möchten für jeden dieser Zeitbereiche die Zuschlagsstunden separat erfassen.
Beispiel 1 – Spätschicht 20:00-22:00 Uhr (Mo-Sa)
SELECT ap_wage_item_time_type_stamp(
%employee%, %date%, %date%,
(SELECT (1,1,'STAMP',NULL,'20:00:00','22:00:00',FALSE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
) AS Zeit_20_22;
Beispiel 2 – Nachtarbeit 22:00-24:00 Uhr
SELECT ap_wage_item_time_type_stamp(
%employee%, %date%, %date%,
(SELECT (1,1,'STAMP',NULL,'22:00:00','00:00:00',FALSE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
) AS Zeit_22_24;
Beispiel 3 – Nachtarbeit 00:00-06:00 Uhr (Arbeit am Vortag begonnen)
SELECT ap_wage_item_time_type_stamp(
%employee%, %date%, %date%,
(SELECT (1,1,'STAMP',NULL,'00:00:00','06:00:00',TRUE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
) AS Zeit_00_06;
Beispiel 4 – Nachtarbeit 00:00-06:00 Uhr (Arbeit am selben Tag begonnen)
SELECT ap_wage_item_time_type_stamp(
%employee%, %date%, %date%,
(SELECT (1,1,'STAMP',NULL,'00:00:00','06:00:00',FALSE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
) AS Zeit_00_06;
Beispiel 5 – Arbeitszeiten 01:00-03:00 Uhr, Mo-Sa, ohne Sonntage
Hier kombiniert venabo zwei Aufrufe: einen für Arbeit, die am selben Tag begann, und einen für Arbeit vom Vortag. Sonntage (DOW = 0) werden per WHERE-Klausel ausgeschlossen.
SELECT
(
SELECT ap_wage_item_time_type_stamp(
%employee%, CAST('%date%' AS date), CAST('%date%' AS date),
(SELECT (1,1,'STAMP',NULL,'01:00:00','03:00:00',FALSE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
)
WHERE EXTRACT(DOW FROM CAST('%date%' AS date)) != 0
)
+
(
SELECT ap_wage_item_time_type_stamp(
%employee%, CAST('%date%' AS date), CAST('%date%' AS date),
(SELECT (1,1,'STAMP',NULL,'01:00:00','03:00:00',TRUE,NULL,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
)
WHERE EXTRACT(DOW FROM CAST('%date%' AS date)) != 0
) AS Zeit_01_03;
Beispiel 6 – Sonntags-Kombination: alle Zeiten am Sonntag inkl. Nachtarbeit vom Samstag
Dieser Aufruf erfasst alle Arbeitszeiten am Sonntag sowie Nachtarbeit, die am Samstag begann und in den Sonntag reicht (via IS_NEXT_DAY = TRUE, WEEKDAY_FILTER = 6).
SELECT
(
(SELECT ap_wage_item_time_type_stamp(
%employee%,
CAST('%date%' AS date),
CAST('%date%' AS date),
(SELECT (1,1,'STAMP',NULL,'00:00:00','23:59:00',FALSE,7,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
)) +
(SELECT ap_wage_item_time_type_stamp(
%employee%,
CAST('%date%' AS date),
CAST('%date%' AS date),
(SELECT (1,1,'STAMP',NULL,'23:58:00','23:59:00',FALSE,7,'DAY',NULL,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
)) +
(SELECT ap_wage_item_time_type_stamp(
%employee%,
CAST('%date%' AS date),
CAST('%date%' AS date),
(SELECT (1,1,'STAMP',NULL,'00:00:00','23:59:00',TRUE,6,'DAY',TRUE,NULL,NULL,NULL,'+',NULL,NULL,NULL,NULL,NULL,NULL,NULL,FALSE,NULL,NULL)::WAGE_TYPE_BLOCK_ITEM)
))
) AS Sonntag_Kombiniert;
Anwendungsbereiche
Die Funktion eignet sich für alle Szenarien, bei denen zeitabhängige Lohnzuschläge berechnet werden:
- Nachtzuschläge
- Spätarbeitszuschläge
- Sonntagszuschläge (optional einbeziehbar)
- Abgrenzung verschiedener Zeitintervalle in der Lohnabrechnung
Häufige Fragen
Warum liefert die Funktion den Wert 0, obwohl der Mitarbeiter gearbeitet hat?
Das liegt häufig an einer falsch gesetzten IS_NEXT_DAY-Einstellung. Prüfen Sie, ob die Arbeit am selben Tag oder am Vortag begonnen hat, und passen Sie den Parameter entsprechend an. Für Intervalle nach Mitternacht benötigen Sie in der Regel zwei kombinierte Aufrufe.
In welcher Einheit gibt venabo das Ergebnis zurück?
venabo gibt das Ergebnis immer in Sekunden zurück. Eine automatische Umrechnung in Minuten oder Stunden findet nicht statt – das übernehmen Sie in Ihrer weiteren Verarbeitung.
Wie erfasse ich Nachtarbeit, die Mitternacht überschreitet?
Verwenden Sie zwei Funktionsaufrufe und addieren Sie deren Ergebnisse: einen mit IS_NEXT_DAY = FALSE für den Anteil vor Mitternacht und einen mit IS_NEXT_DAY = TRUE für den Anteil nach Mitternacht. Beispiel 5 zeigt dieses Muster konkret.
Kann ich die Funktion auch für Feiertagszuschläge nutzen?
Ja. Die Funktion unterstützt optional eine Feiertagslogik. Steuern Sie das Verhalten über den WAGE_TYPE_BLOCK_ITEM-Strukturparameter. Für komplexe Feiertagsszenarien kombinieren Sie die Funktion mit einem entsprechenden Wochentagsfilter.
Zusammenfassung
| Aspekt | Details |
|---|---|
| Rückgabe | Immer in Sekunden (INTEGER) |
| IS_NEXT_DAY | Steuert, ob Vortag- oder Tagarbeit gezählt wird – essenziell für Nachtschichten |
| Mitternachtsintervalle | Zwei Aufrufe kombinieren (FALSE + TRUE) für vollständige Abdeckung |
| Sonntage | Über INCLUDE_SUNDAYS oder WEEKDAY_FILTER = 7 steuerbar |
| Typische Einsatzbereiche | Nacht-, Spät- und Sonntagszuschläge in der Lohnabrechnung |
| UNIT-Feld | Wird von venabo nicht ausgewertet |