Hallo,
seit einigen Jahren läuft bei uns im Intranet ein Workflow-Tool, um Urlaub zu beantragen und zu genehmigen. Der genehmigte Urlaub wird dann auch im Kalender desjeinigen eingetragen.
Im Kalender sieht der Eintrag eigentlich super aus (für mich sowohl optisch als auch inhaltlich), es ist aber erst jetzt aufgefallen, dass immer nur bei mehrtägigem Urlaub immer nur der letzte Eintrag weiterhin als nicht belegt zu gelten scheint und damit von Kollegen zu Besprechungen eingeladen werden kann.
Hat jemand von Euch eine Idee? Ich hatte vermutet, dass es mit EndDate und EndTime liegen könnte. Ich hatte dafür testweise mal 23:59 eingetragen, hatte aber keine Auswirkungen.
Hier mal der Code, der den Eintrag erstellt. Die Parameter werden dem Script beim Aufruf übergeben.
Aufruf z.B. über: CalendarTasks?OpenAgent&neu&mail/testdb.nsf&10.88.11.22&4&09.03.2020&13.03.2020&12345678&Urlaub+von+Max+Tester
Die Parameter werden als Array gelesen und in die Variablen geschoben:
argaction = argarray(0)
argdb = argarray(1)
argserver = argarray(2)
argtype = argarray(3)
argvdat = argarray(4)
argbdat = argarray(5)
arguid = argarray(6)
argtext = urlDecode(argarray(7))
Dim starttime As String
Dim endtime As String
Dim startDate As Variant
Dim endDate As Variant
Dim aExcludeView(1) As String
Dim cprofile As NotesDocument
Dim mailowner As String
Dim vDates As Variant
Dim iLoop As Integer
Dim atCSWISL (0 To 4) As String
atCSWISL(0)="$S:1"
atCSWISL(1)="$L:1"
atCSWISL(2)="$B:1"
atCSWISL(3)="$R:1"
atCSWISL(4)="$E:1"
Dim atWatched (0 To 4) As String
atWatched(0)="$S"
atWatched(1)="$L"
atWatched(2)="$B"
atWatched(3)="$R"
atWatched(4)="$E"
aExcludeView(0) = "D"
aExcludeView(1) = "S"
starttime = "07:00:00"
endtime = "20:00:00"
Set db = s.GetDatabase(argserver, argdb, False)
If Not db.IsOpen Then Call db.Open("", "")
Set cprofile = db.GetProfileDocument("CalendarProfile")
mailowner = cprofile.GetItemValue("Owner")(0)
Set view = db.GetView("Calendar")
startdate = CDat(argvdat)
enddate = CDat(argbdat)
Set doc = db.Createdocument()
docid = doc.UniversalID
doc.form = "Appointment"
doc.Subject = argtext
doc.Location = " "
doc.SequenceNum = "1"
doc.StartDate = startdate
doc.StartTime = startdate
doc.StartDateTime = startdate
doc.EndDate = enddate
doc.EndTime = enddate
doc.EndDateTime = enddate
iLoop = enddate - startdate
ReDim vDates (0 To iLoop)
vDates (0) = startdate
For iLoop = 1 To UBound (vDates)
vDates (iLoop) = startdate + iLoop
Next
doc.CalendarDateTime = vDates
doc.Repeats = "1"
doc.RepeatFor = iLoop
doc.RepeatHow = "F" ' U=repeat until, F=repeat for
doc.RepeatForUnit = "D" ' repeat in days (W=weekly,M=monthly,Y=yearly)
doc.RepeatWeekends = "X" ' Do nothing if on a weekend
doc.RepeatUnit = "D"
doc.RepeatInterval = "1" ' dayly
doc.RepeatAdjust = "1" ' only used if weekly or monthly
doc.RepeatStartDate = startdate
doc.RepeatDates = vDates
doc.ExcludeFromView = aExcludeView
doc.MeetingType = "1"
doc.AppointmentType = argtype
doc.MessageType = "Not a draft"
doc.Logo = "StdNotesLtr3"
doc.OrgTable = "P0"
doc.SchedulerSwitcher = "1"
doc.Notes = ""
doc.Body = "Erzeugt durch den Urlaubsplaner im Intranet.**ID=" & arguid & "**"
doc.~_ViewIcon = "9"
doc.EndTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=71$ZN=W. Europe"
doc.StartTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=71$ZN=W. Europe"
doc.UpdateSeq = 1
doc.WebDateTimeInit = 1
doc.~$AlarmDisaOObled = "1"
doc.~$PublicAccess = "1"
doc.~$CSWISL = atCSWISL
doc.~$WatchedItems = atWatched
doc.~$CSFlags = "m"
doc.OrgRepeat = "1"
doc.~$CSVersion = "2"
doc.Chair = mailowner
doc.AltChair = mailowner
doc.From = mailowner
doc.Principal = mailowner
If argtype = "2" Then
doc.BookFreeTime = "0"
doc.~$BusyName = mailowner
doc.~$BusyPriority = "1"
End If
doc.ApptUNID = docid
Call doc.Save( True, True )