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;