[gelöst] Funktion InsertGLEntry in Cu12

17. Oktober 2008 17:33

Hallo zusammen,

ich bin gerade in der Codeunit 12 über die oben genannte Funktion gestolpert.
Hier wird ja für eine Konsistenzprüfung die benötigten Werte zusammengestellt.
Ich habe aber noch nicht so ganz herausgefunden was diese Berechnung bedeutet:
Code:
IF GLEntry."Posting Date" = NORMALDATE(GLEntry."Posting Date") THEN BEGIN
  BalanceCheckAmount :=
    BalanceCheckAmount + GLEntry.Amount * ((GLEntry."Posting Date" - 01010000D) MOD 99 + 1);
  BalanceCheckAmount2 :=
    BalanceCheckAmount2 + GLEntry.Amount * ((GLEntry."Posting Date" - 01010000D) MOD 98 + 1);
END ELSE BEGIN
  BalanceCheckAmount :=
    BalanceCheckAmount + GLEntry.Amount * ((NORMALDATE(GLEntry."Posting Date") - 01010000D + 50) MOD 99 + 1);
  BalanceCheckAmount2 :=
    BalanceCheckAmount2 + GLEntry.Amount * ((NORMALDATE(GLEntry."Posting Date") - 01010000D + 50) MOD 98 + 1);
END;


Kann mir jemand sagen was es mit diesen Berechnungen (GLEntry.Amount * ((GLEntry."Posting Date" - 01010000D) MOD 99 + 1);) auf sich hat?

Vielen Dank schonmal und ein schönes Wochenende

Tschau Frank
Zuletzt geändert von fragglet am 28. Oktober 2008 15:40, insgesamt 1-mal geändert.

Re: Funktion InsertGLEntry in Cu12

21. Oktober 2008 14:42

Erklärung von Microsoft dazu hier auf Englisch.

Eine von mir etwas überarbeitete Babelfishübersetzung dazu:
Der Code ist dort, um zu garantieren, dass sich Buchungen zu einem spezifischen Datum ausgleichen. Wenn Sie sich wundern, warum es einen MOD 99 und einen MOD 98 gibt; dies ist so, weil Sie zwei Buchungen auf 2 Daten mit (wenn nur 99 verwendet würde) mit 99 Tagen Abstand buchen könnten und das System würde noch glauben, dass dieses ausgeglichen wurde. Wenn wir 99 und 98 kombinieren, wird 99*98 verwendet, die als Daten zwischen den gleichen Zahlen für das Multiplizieren benutzt werden - das sind 25 Jahre.

Re: Funktion InsertGLEntry in Cu12

28. Oktober 2008 15:17

Danke Kowa.

So richtig schlau geworden bin ich daraus irgendwie nicht. :-|

Trotzdem danke für die Mühe.

Tschau Frank

Re: Funktion InsertGLEntry in Cu12

28. Oktober 2008 20:38

fragglet hat geschrieben:Danke Kowa.

So richtig schlau geworden bin ich daraus irgendwie nicht. :-|

Trotzdem danke für die Mühe.

Tschau Frank


Diese Aufsummierung für BalanceAmount bzw. BalanceAmount2 wird mindestens zweimal durchlaufen und muss einen Nullsaldo ergeben. Wenn nur MOD 99 angewendet wird , wiederholt sich das Ergebnis dieser Berechnung alle 99 Tage. Das kann in der Praxis durchaus noch vorkommen. Bei beiden Berechnungen wiederholt sich der Saldovergleich beider Berechnungen aber erst nach 9702 Tagen/ca. 25 Jahren. Das sollte reichen. :-)

Ein kleiner Report zum Anzeigen der MOD Werte für ein bestimmtes Datum ist im Anhang.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.