Domino 9 und frühere Versionen > Entwicklung

Kalendereintrag per Script

<< < (2/2)

Thunder:
Ich habe mich für das Script von unserem holländischen Freund entschieden - läuft ganz gut.

Sub Click(Source As Button)
     Dim Session As New NotesSession
     Dim Workspace As New NotesUIWorkspace
     Dim TheDocument As NotesDocument
     Dim db As notesDatabase
     Dim UserName As String
     
     Set UIDoc = Workspace.CurrentDocument
     Set TheDocument = UIDoc.Document
     
     Set db = New NotesDatabase("", "")
' Open user's mail database
     db.openmail
     
' Notestime variabels
     Dim StartDatum As String
     Dim EindDatum As String
     
' Get variabels from document
     StartDatum = Uidoc.FieldGetText("gA_vom_1")
     EindDatum = Uidoc.FieldGetText("gA_bis_1")
     
' Converting startdate to us Datesetting (since my client is dutch but server resides us)
     Dim StartDagMnd As String
     Dim StartDag As String
     Dim StartMnd As String
     Dim StartJaar As String
     StartDagMnd$ = Left$(StartDatum, 5)
     StartDag$ = Left$(StartDagMnd,2)
     StartMnd$ = Right$(StartDagMnd,2)
     StartJaar$ = Right$(StartDatum,4)
     'StartDatum = StartMnd + "." + StartDag + "." + StartJaar
     
' Converting enddate in US Datemsetting
     
     Dim EindDagMnd As String
     Dim EindDag As String
     Dim EindMnd As String
     Dim EindJaar As String
     EindDagMnd$ = Left$(EindDatum, 5)
     EindDag$ = Left$(EindDagMnd,2)
     EindMnd$ = Right$(EindDagMnd,2)
     EindJaar$ = Right$(EindDatum,4)
     'EindDatum = EindMnd + "." + EindDag + "." + EindJaar
     
     
'Conversion for string to datefield
     Set datum1 = New NotesDateTime (StartDatum)
     Set datum2 = New NotesDateTime (EindDatum)
     Call datum2.AdjustDay( 1 )
     
     Startdatum = Cstr(datum1.DateOnly)
     Einddatum = Cstr(datum2.DateOnly)
     
'The do while places the calendar item everyday unit startdate and endate are the same.
     Do While StartDatum <> EindDatum
         
'Call calender
          Dim CalendarEntry As New NotesDocument(db)
          Dim rtitem As New NotesRichTextItem(CalendarEntry, "Body")
          Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
          Call rtitem.AddNewline(1)
          Call rtitem.AppendDocLink(TheDocument, "Verlof")
          UserName = Session.CommonUserName
         
          CalendarEntry.Form = "Appointment"
          CalendarEntry.Principal = UserName
         
          CalendarEntry.Chair = Session.UserName
          CalendarEntry.ExcludeFromView = "D"
          CalendarEntry.OrgTable = "CO"
          CalendarEntry.SequenceNum = 1
          CalendarEntry.Subject = "Urlaub (Zina)"
         
         
'Appointment Type 4 = Reminder , 3 = meeting, 2 = event, 1 = anniversary, 0 = Personal
'Place string in calender fields
          CalendarEntry.AppointmentType = "4"
          CalendarEntry.StartDate = Cdat(StartDatum)
          CalendarEntry.StartDateTime = Cdat(StartDatum)
          CalendarEntry.CalendarDateTime = Cdat(StartDatum)
          CalendarEntry.EndDateTime = Cdat(StartDatum)
         
          Call CalendarEntry.save(True, True)
          Call datum1.AdjustDay( 1 )
          Startdatum = Cstr(datum1.DateOnly)
          Einddatum = Cstr(datum2.DateOnly)
     Loop
End Sub

Die Umwandlung in das holländische Datumsformat kann rausgenommen werden. Habe da noch ein kleines Problem. Ich würde das gern in meine ZeiterfassungsDB übernehmen. Hier geben User an, wann Sie Urlaub, Gleittage, Seminare,... haben. Anschließend geht das ganze an den Abteilungsleiter und dieser muß das OK geben - erst dann wandert das Ganze an die Perso.
Ich hätte gern, daß in dem Moment, wo der Leiter sein OK gibt die Einträge in den Kalender des Anträgers wandern.
Der Name des Anträgers ist natürlich im Dokument gespeichert. (gA_Vorname ; gA_Nachname) Wie schreibe ich das Script so um, daß der Eintrag in diesen Kalender gehen und nicht in den des Leiters ?
(Wie gesagt - bin Neuling !)

Danke schon mal.

Thunder:
Ich bins wieder,

man kann doch bestimmt über Code und über das NAB die Mail-Datei des Users herausbekommen, oder ?
Ich hätte ja gedacht, wenn ich USERNAME = "Max Frisch" schreibe und die andere Zeile rausremme, er den Eintrag in den Kalender von M.F. machen würde. Aber nö..
Was müßte ich dafür ändern ?



'Call calender
          Dim CalendarEntry As New NotesDocument(db)
          Dim rtitem As New NotesRichTextItem(CalendarEntry, "Body")
          Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
          Call rtitem.AddNewline(1)
          Call rtitem.AppendDocLink(TheDocument, "Verlof")
          UserName = Session.CommonUserName
         
          CalendarEntry.Form = "Appointment"
          CalendarEntry.Principal = UserName
         
          CalendarEntry.Chair = Session.UserName
          CalendarEntry.ExcludeFromView = "D"
          CalendarEntry.OrgTable = "CO"
          CalendarEntry.SequenceNum = 1
          CalendarEntry.Subject = "Urlaub (Zina)"

koehlerbv:
Wenn ich das jetzt richtig verstanden habe: Du willst aus irgendeiner DB einen Kalendereintrag im Mailfile irgendeines anderen Benutzers anlegen ?
Wie sieht es denn mit der Rechtesituation aus ? Darf bei Euch jeder im Mailfile jedes anderen Benutzers einen neuen Kalendereintrag anlegen ?

Natürlich kann man das Mailfile eines Notes-Users ermitteln (und dabei auch prüfen, ob dieses denn auch wirklich auf dem aktuellen Server liegt), aber trivial ist das beileibe nicht.
Prinzipiell heißt das:
- NAB ermitteln und öffnen (Problem: Bei lokaler Ausführung geht das in die Hose, wenn man nicht riesigen Aufwand betreibt)
- Personen-Doc des gewünschten Users ermitteln und öffnen
- Server prüfen
- Wenn Aktion auf HomeServer des gewünschten Users erfolgt: Kalendereintrag vornehmen.

Malst Du uns mal ein wenig mehr zu Deiner Problematik auf ? Vielleicht ergeben sich daraus andere Ansätze oder Hinweise für Dich.

Bernhard

Thunder:
OK - noch mal detailiert.
Ich habe eine DB geschrieben, mit der unsere Mitarbeiter Änderungen an Ihrer Zeiterfassung an die Personalabteilung übermitteln können. Normalerweise loggen wir uns mit Chipkarte an/ab.Wenn dieses nicht geht, wegen weil krank, Seminar, Urlaub, ... dann kann er dieses in dieser DB angeben und die Perso kann es dann übertragen. So erst einmal grundsätzlich.
Trägt ein Mitarbeiter zB einen Urlaub ein, so muß aber zunächst der Vorgesetzte diesen Urlaub auch genehmigen. Er bekommt also einen DocLink auf diese Anforderung und kann denn Status jetzt auf 'genehmigt' oder 'nicht genehmigt' setzen. Erst danach wandert das Dokument zur Perso. Diese setzen wiederum einen anderen Status auf 'erledigt', wenn die Daten übertragen wurden.
Jetzt zu meiner Problematik: Ich hätte gern einen Kalendereintrag in den Kalender des Antragstellers in dem Moment, wo der Vorgesetzte sein GO gibt. Aber Du hast Recht, da müßte der Vorgesetzte wohl Schreibrechte auf den Kalender besitzen. Könnte man das evt. durch einen Agent realisieren, wo das Ganze im Namen des Servers passiert ?   ???

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln