0

Tagessalden mit Pausenregelungen verrechnen

Hallo zusammen, 

ich hab gerade wieder ein kleines Problemchen.

Ich habe pro Mitarbeiter Feld Datum / Uhrzeit, dass das "Kommen" erfasst und ein zweites Feld fürs " Gehen"

die Zeit dazwischen als anwesenden Tagessaldo berechne ich über timeinterval(round(number('gegangen_Datum + Uhrzeit' - 'gekommen_Datum + Uhrzeit'), -3))

funktioniert einwandfrei, aber!!! :D jetzt der clou

wie sag ich dem denn jetzt, wenn der Mitarbeiter über 6h gearbeitet hat, dann zieh mir doch bitte von dem Saldo eine halbe Stunde ab, bzw., wenn er über 9h kommt, dann doch bitte die dreiviertelste Stunde

In einem zweiten Schritt möchte ich dann gerne noch ermitteln, ob er trotz Pausenabzug über seine täglich zu erreichenden ( bspw.) 8h kam, wenn ja, kann er ab alles über einer vollen halben stunde drüber ( also ab 8,5 nach Abzug der Pause!) einen Antrag auf Überstunden beim Vorgesetzten stellen

 

nur wie löst man das am einfachsten?

5 Antworten

null
    • Unternehmerin Kosmetik
    • oswald
    • vor 1 Monat
    • Gemeldet - anzeigen

    Hallo, kannst du mal eine Demodatei schicken, ich habe eine Zeiterfassung für meine MA , denke dass wir da fast gleich sind, vielleicht kann ich helfen.

    • Schu_Mel
    • vor 1 Monat
    • Gemeldet - anzeigen

    nein, kann keine Demo-Datenbank schicken, weil wir die restlichen Personaldaten schon live drin haben. Tut mir leid. Für nochmal neu bsphaft erzeugen fehlt mir die Zeit.

    hier mal ein paar Bilder, vllt helfen die ja schon, denn ich hab wie gesagt noch so gar keine Idee wie ich das formelmäßig umsetze

    Ich hab eine Tabelle Anwesenheit, bei der pro Tag ein Datensatz für den Mitarbeiter erzeugt wird, darunter eine Untertabelle Tagesbuchungen, weil der gleiche Mitarbeiter ja mehrfach am Tag kommen und gehen kann

    pro Tagesbuchung rechnet er gerade das Zeitintervall zwischen kommen / gehen und bildet es im Feld Arbeitszeit ab

    Arbeitszeit := timeinterval(round(number('gegangen_Datum + Uhrzeit' - 'gekommen_Datum + Uhrzeit'), -3))

    Auf der übergeordnetes Tagesseite in der Tabelle Anwesenheit bildet er dann die Summe aus allem Arbeitszeiten

    Tagessaldo_ges := sum(Tagesbuchungen.Arbeitszeit)

    und jetzt müsst ich eben sagen, wenn die Summe aus allen Arbeitszeiten >5 ist, dann zieh mir bitte 0,5 ab (mit 6 und 9, was ich eingangs geschrieben habe, wurde heute wieder revidiert, alle die länger als 5h da sind, sollen die halbe Stunde Pause auch machen, und daher abgezogen bekommen)

    • Schu_Mel
    • vor 1 Monat
    • Gemeldet - anzeigen

    andere ... gaaanz blöde idee :D wenn ich Tagessaldo_ges := sum(Tagesbuchungen.Arbeitszeit) -1800000 rechne, zieht er mir augenscheinlich ne halbe stunde ab, ist des humbuck? oder funktioniert das tatsächlich immer so?

    • Schu_Mel
    • vor 1 Monat
    • Gemeldet - anzeigen

    also ich habs jetzt so ... augenscheinlich funktioniert es

    let mycomment := "22000000 sind 6 Arbeitsstunden; 1800000 ist eine halbe Stunde; 32400000 sind 9 Arbeitsstunden ;  2723000 sind 45 min";
    if sum(Tagesbuchungen.Arbeitszeit) > 22000000 then
        sum(Tagesbuchungen.Arbeitszeit) - 1800000
    else
        if sum(Tagesbuchungen.Arbeitszeit) > 32400000 then
            sum(Tagesbuchungen.Arbeitszeit) - 2723000
        else
            sum(Tagesbuchungen.Arbeitszeit)
        end
    end

    eine Bestätigung ob das der richtige Weg und Ansatz ist, wäre allerdings schön :D 

    • Schu_Mel
    • vor 1 Monat
    • Gemeldet - anzeigen

    gerade noch was anderes gefunden, so ists vllt geschickter oder?

    if sum(Tagesbuchungen.Arbeitszeit) > timeinterval(time(6, 0)) then
        sum(Tagesbuchungen.Arbeitszeit) - timeinterval(time(0, 30))
    else
        if sum(Tagesbuchungen.Arbeitszeit) > timeinterval(time(9, 0)) then
            sum(Tagesbuchungen.Arbeitszeit) - timeinterval(time(0, 45))
        else
            sum(Tagesbuchungen.Arbeitszeit)
        end
    end