2. Juni 2008 15:37
2. Juni 2008 15:45
2. Juni 2008 16:04
2. Juni 2008 16:14
2. Juni 2008 16:44
fnTagesTyp(parDatum : Date) : Code[10]
// ****************************************************************************
// ***** Diese Funktion ermittelt, ob das übergebene Datum ein Arbeitstag ist.
// ***** Feiertage werden dabei berücksichtigt.
// ***** Zurückgegeben wird 'WERK' oder 'WOENDE' oder 'FEIER'
// ****************************************************************************
DateL.RESET;
DateL.SETRANGE(DateL."Period Start",parDatum);
DateL.SETRANGE(DateL."Period Type",DateL."Period Type"::Date);
DateL.FINDFIRST;
//alles, was kein Wochenende ist
IF DateL."Period No." < 6 THEN BEGIN
//prüfen auf Feiertag (verschiebend)
BaseCalChangeL.RESET;
BaseCalChangeL.SETRANGE(BaseCalChangeL.Date, parDatum);
IF BaseCalChangeL.ISEMPTY THEN BEGIN
TestTag := DATE2DMY(parDatum,1);
TestMonat := DATE2DMY(parDatum,2);
//prüfen ob es sich um einen jährlichen Feiertag handelt
BaseCalChangeL.RESET;
BaseCalChangeL.SETRANGE(BaseCalChangeL."Recurring System", BaseCalChangeL."Recurring System"::"Annual Recurring");
BaseCalChangeL.FINDSET(FALSE,FALSE);
REPEAT
IF (TestTag = DATE2DMY(BaseCalChangeL.Date,1)) AND (TestMonat = DATE2DMY(BaseCalChangeL.Date,2)) THEN BEGIN
EXIT('FEIERT');
END;
UNTIL BaseCalChangeL.NEXT = 0;
EXIT('WERK');
END ELSE BEGIN
EXIT('FEIERT');
END;
END ELSE BEGIN
EXIT('WOENDE');
END;