0

Probleme mit Drucktabelle: zwischengespeicherte Werte werden in der Web-App anders behandelt als wie auf Mac und iOS

Hallo zusammen,

für eine Verwaltung von AGH-Kräften soll unter anderem eine Abrechnung programmiert werden. Die Abrechnung der monatlichen Zeitzettel funktionert anstandslos. Probleme habe ich mit der Abrechnung von Nachzahlungen.

 

Der Aufbau ist wie folgt: Es gibt Maßnahmen, diese haben Projekte (Maßnahme  an einem Standort), Projekte haben Teilnehmer, Teilnehmer haben Zeiterfassung und Nachzahlung. In der Zeiterfassung werden für jeden Teilnehmer und Monat die Stunden für jeden Tag eingetragen; und wenn ein Teilnehmer Zeitzettel für einen Monat abgibt, der schon abgerechnet wurde, so kommt das in eine extra Nachzahlung für diesen Monat. DIe Zeiterfassung wird für den Vormonat abgerechnet, die Nachzahlungen für die fünf Monate des Vormonats, für jeden Monat einzeln.

Oder genauer:

Der heutige Monat ist 05.2022. Dann wäre standardmäßig der Abrechnungsmonat für die Zeiterfassung  04.2022, und die Monate, welche auf Nachzahlungen überprüft werden, sind 03.2022, 02.2022, usw.

Die Berechnung der Zahlen ist nicht das Problem. Auch die PDFs, welche aus der Zeiterfassung generiert werden, sind unproblematisch, da diese immer für den Vormonat des aktuellen Monats sind. Probleme machen mir die fünf Monate mit Nachzahlungen, über die ich iterieren muss. Hier verhält sich die iOS- und die MAC-App korrekt, und die Web-App macht Probleme.

Folgender Code wird verwendet:

for i in range(1, myMaxRueck) do
        for TN in 'Drucktabelle Abrechnung Nachzahlung' do
            TN.('Für Drucktabelle Abrechnung Nachzahlung' := 0)
        end;
        let mySum := 0;
        let myDate := date(Jahr, Monat - i, 15);
        'Jahr Nachzahlungen' := year(myDate);
        'Monat Nachzahlungen' := month(myDate);
        for TN2 in select Teilnehmer where Projekt.'Maßnahme' = me and cnt('Nachzahlungen Teilnehmer'[Berechnungsdatum = me.myDate and not 'ausgezahlt am']) > 0 do
            TN2.('Für Drucktabelle Abrechnung Nachzahlung' := me);
            TN2.('Für Drucktabelle Abrechnung' := me);
            mySum := mySum + sum(TN2.'Nachzahlungen Teilnehmer'[Berechnungsdatum = me.myDate and not 'ausgezahlt am'].'TNStd Nachtrag')
        end;
        if cnt('Drucktabelle Abrechnung Nachzahlung') > 0 then
            let myAbrechnungNachzahlung := (create Monatsabrechnung);
            myAbrechnungNachzahlung.(
                'Maßnahme' := me.Nr;
                Abrechnungsmonat := me.'Jahr Nachzahlungen' + " " + me.lpad(string('Monat Nachzahlungen'), 2, "0");
                Firma := me.'Träger'.Nr;
                Nachzahlung := true;
                'Summe MAE' := me.'MAE je Stunde' * mySum;
                'Abrechnung  Jobcenter' := importFile(this, printAndSaveRecord(me, "Nachzahlung Maßnahme"), "Nachzahlung_GAWO-gGmbH_" + me.'Jahr Nachzahlungen' + "_" + lpad(string(me.'Monat Nachzahlungen'), 2, "0") + ".pdf")
            )
        end
end;

Der Ausführungskontext ist ein "Maßnahme"-Objekt. Ich leere erst die Drucktabelle, dann aktualisiere ich das Datum, für dessen Monat die Nachzahlungen gesucht werden und speichere entsprechend Jahr und Monat im Maßnahme-Objekt. Finde ich im nächsten Schritt so eine Nachzahlung, kommt der entsprechende Teilnehmer in die Drucktabelle. Gibt es was in dieser, so wird ein Abrechnungsobjekt erstellt, in welches unter anderem eine PDF mit den entsprechenden Daten reinkommt. Exakt hier läuft es dann schief.

Für Teinehmer X gibt es in den Monaten 02.2022 bzw 03.2022 eine Nachzahlung. Die iOS und Mac-App erzeugt korrekterweise Abrechnung für 02 2022 und 03 2022, mit PDFs für diese Abrechnungen. Die Web-App macht das mal für den Monat 01 2022, mal für 12 2021, mal für beides. Eigentlich sollten die gleichen Monate wie bei den anderen Apps berechnet werden-

Was auch auffällt: es gibt die Variable mySum. diese wird verwendet, um für alle gefundenen Nachzahlungen des Monats die Werte zu speichern und als Gesamtergebnis später mit abzuspeichern. Dieses Ergebnis stimmt, wenn ich die iOS-App und die Mac-App verwende, aber nicht, wenn ich die Web-App verwende. Genauso wird das Feld "Abrechnungsmonat" bei der Web-App mit den falschen Werten bestückt, bei den anderen Apps mit den richtigen.

do as server und do as transaction habe ich ausprobiert. Damit stimmen zwar die Daten wieder, aber es werden keine PDFs erzeugt.

 

Wo habe ich einen Denkfehler? Inwiefern verhlt sich die Web-App anders? Gibt es so etwas wie Race-conditions, Caches, was auch immer, welche die MacOS-App nicht hat. Das run on server scheint ja zu klappen. Warum wird dann die PDF nicht erstellt?

 

Jemand eine Idee?

 

Sebastian

Antwort

null

Content aside

  • vor 1 JahrZuletzt aktiv
  • 19Ansichten
  • 1 Folge bereits