FindeWerktagInNTagen()
JS
//******************************************************************************
// Findet den Werktag in nDiff Tagen, Prüft, ob die auf dem Weg liegenden Daten
// auf einen Feiertag, Samstag oder Sonntag fallen und überspringt diese
// @dDate: dDatum:D - Ausgangsdatum, ab welchem die Prüfung + n Tage startet
// @nDiff: nDiff:N - Anzahl Tage die geprüft werden
// @cTermMode: cTermMode:C - bestimmt Vorwärts- oder Rückwertsprüfung
// @oDM: oDM:O - Datenmodul als Container für DAB272,
// welches im Hauptprogramm zerstört werden muss
// @Result: date
//******************************************************************************
function FindeWerktagInNTagen(dDate, nDiff, cTermMode, oDM)
| oDAB272, i |
oDAB272 := MyGetTable(oDM, waDAB272, 'IND_DAB272'),
oDAB272.CbIndexname := 'I_FEIERTAG_DAT',
Result := dDate,
i := 0,
while i < nDiff do
i++,
if cTermMode = 'VORWAERTS' then
Result += 1,
else
Result -= 1,
endif,
writeln(dow(Result)),
while oDAB272.CbFindKey({100, Formatdatetime('DD.MM.YY', Result)})
or dow(Result) = 1
or dow(Result) = 7 do writeln(i, result),
if cTermMode = 'VORWAERTS' then
Result += 1,
else
Result -= 1,
endif,
end,
end,
end,
Anwendungsbeispiel:
Versand am 29.7., Ankunft am übernächsten Werktag. Das wäre dann aber nicht etwa der 31.7, sondern der 2.8., weil Samstag und Sonntag dazwischen liegen.