0

Zeitraumermittlung - aufeinanderfolgende Tage gleichen Status zählen

Hallo zusammen, ich könnte mal wieder Hilfe gebrauchen und erstmal einen Denkanstoß wie man das überhaupt lösen könnte

Ich hab eine Tabelle mit Personen, die wiederum in einer Untertabelle Anwesenheiten haben => anwesend, Urlaub/frei, krank

wir haben ein Bonusprogramm, bei 100 Arbeitstagen Anwesenheit in Folge gibts 16h als Überstunden gut geschrieben

Ich hätt am Ende gern ein Diagramm, in dem ich die Mitarbeiter eines Teams alle aufgeführt bekomme und zu jedem individuell wann er seine 100 Tage voll hat. Wenn er nach den 100 Tagen weiterhin anwesend ist, beginnt nach Tag 100 die Ganze Rechnung von neuem. Wochenenden müssen ausgeschlossen werden.

Sobald ein Krank Tag dazwischen fällt, beginnt die Rechnung ab dem ersten wieder anwesend Tag wieder neu.

Optisch hätt ich mir für das Diagramm gestapelte Balken vorgestellt, 100 als Oberstes und dann von unten wachsend die Anwesend-Tage, wenn der Balken fast voll ist zur 100 weiß man ja das innerhalb der nächsten Tage der Mitarbeiter die Prämie wieder erhält.

 

Geht sowas?

2 Antworten

null
    • Sperling
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Das sagen meine schlauen Quellen dazu:

    Nehmen wir an, du hast eine Untertabelle namens Anwesenheiten, die folgende Felder enthält:

        •    Datum: Datum der Anwesenheit
        •    Status: Text (Anwesend, Urlaub/frei, Krank)

    2. Berechnung der Anwesenheitstage (ohne Wochenenden und Krank)

    Zunächst benötigen wir eine Berechnung der fortlaufenden Anwesenheitstage. Wir gehen davon aus, dass Krank- oder Urlaubstage den Zähler auf 0 zurücksetzen.

    Hier ist der Code, der das erledigt:

    Berechnung der Anwesenheitstage

    In der Tabelle Personen fügen wir eine Formel hinzu, die die aufeinanderfolgenden Anwesenheitstage für jede Person zählt.

    let anwesenheiten := this.(Anwesenheiten);
    let anwesenheitStage := 0;
    let aktuelleSerie := 0;
    let maximumTage := 100;

    // Anwesenheiten sortieren und durchgehen
    anwesenheiten := anwesenheiten[Status = "Anwesend" and weekday(Datum) > 0 and weekday(Datum) < 6 order by Datum asc];

    // Schleife über Anwesenheiten
    for a in anwesenheiten do
        if a.Status = "Krank" then
            aktuelleSerie := 0;  // Bei Krankheit Zähler zurücksetzen
        else
            aktuelleSerie := aktuelleSerie + 1;
            if aktuelleSerie = maximumTage then
                anwesenheitStage := anwesenheitStage + 1;
                aktuelleSerie := 0; // Serie erneut beginnen
            end
        end
    end;

    return aktuelleSerie;  // Anzahl der aktuellen fortlaufenden Anwesenheitstage

    Diagramm für Anwesenheitserfassung

    Um den Fortschritt in Form eines gestapelten Balkendiagramms zu visualisieren, kannst du in Ninox ein Diagramm hinzufügen. Zuerst definieren wir eine Formel zur Berechnung der 100-Tages-Intervalle.

    let bonusFortschritt := (aktuelleSerie / maximumTage) * 100;  // Prozentwert für das Diagramm

    return bonusFortschritt;

    3. Erstellen des Diagramms

    Du kannst dann ein gestapeltes Balkendiagramm für jede Person erstellen, das den Fortschritt bis zur nächsten Prämie zeigt.

        1.    Erstelle ein Diagramm-Widget in Ninox.
        2.    Verwende die Berechnung des bonusFortschritt als Grundlage für den Fortschritt bis zu den 100 Tagen.

    Im Diagramm stellst du die gestapelten Balken als Teil des Fortschritts dar. Der erste Balken zeigt den Fortschritt bis zur 100-Tage-Marke. Wenn er voll ist, wird der Zähler zurückgesetzt und ein neuer Balken beginnt zu wachsen.

    Gruß
     

      • Schu_Mel
      • vor 3 Monaten
      • Gemeldet - anzeigen

      danke, das hat geholfen.