Job-Kalender Termine mit externen Kalendern synchronisieren

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Hier wird beschrieben, wie man Termine aus dem JobKalender mit einem externen System synchronisieren kann.

Dabei wird davon ausgegangen, dass der JobKalender das führende System ist. Das bedeutet:

  • Für einen Termin gibt es drei Synchronisations-Momente:
    • Termin wurde angelegt
    • Termin wurde geändert. Das kann der Zeitraum, die Ressource/Person, der Text usw. sein.
    • Termin wurde gelöscht
  • Auftrags-Termine werden ausschließlich im JobKalender angelegt, geändert oder gelöscht.

Basis der Beschreibung ist das Zusatz-Modul GooCal, das Termine aus dem JobKalender mit Google©-Kalendern synchronisiert.


2 Ablauf einer Synchronisation

2.1 Termin-Daten aus dem JobKalender (MAufJob) einlesen

DM.MakeSQL_MAufJob_Pers( DM.qryMAufJob, Date {dDatumVon}, speditAnzahlTage.Value {iAnzahlTage}, chkNurPersMitSyncStatus.Checked );


2.2 Google-Kalender-Einträge einlesen

// Daten aus dem Google-Kalender: DM.GetCalendarItemsClientDateSet( Date {dDatumVon}, speditAnzahlTage.Value {iAnzahlTage} , iErrorCode , sErrorMessage ); if iErrorCode > 0 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* Error on DM.GetCalendarItemsClientDateSet: ' + sErrorMessage );


// --------------------------------------------------------------- // 2. Google-Einträge durchlaufen, (in DM.cdsGoogleKalenderItems) // EventID in MAufJob.CLOUD_EVENT_ID suchen. // Wenn dort nicht gespeichert: Google-Kalender-Item löschen!!! // iErrorCode = -1: Erfolgreich, sErrorMessage // iErrorCode > 0 : sErrorMessage beinhaltet Fehlertext // --------------------------------------------------------------- DM.FindCalendarItemsToDelete( chkZuLoeschendeTermineSucheInSyncTabelle.Checked, iErrorCode , sErrorMessage ); //JC//240307// chkZuLoeschendeTermineSucheInSyncTabelle.Checked if iErrorCode = -1 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + 'Delete unused items: ' + sErrorMessage ); if iErrorCode > 0 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* Error on Delete unused items: ' + sErrorMessage );


// --------------------------------------------------------------- // 3. MAufJob durchlaufen, (in DM.qryMAufJob) // Wenn kein MAufJob.CLOUD_EVENT_ID : Google-Kalender-Item einfügen!!! // iErrorCode = -1: Erfolgreich, sErrorMessage // iErrorCode > 0 : sErrorMessage beinhaltet Fehlertext // --------------------------------------------------------------- DM.FindCalendarItemsToInsert( chkSyncAdresseFest.Checked,editFesteMailAdresse.Text, iErrorCode , sErrorMessage ); if iErrorCode = -1 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + 'Inserted items: ' + sErrorMessage ); if iErrorCode > 0 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* Error on Insert new items: ' + sErrorMessage );


// --------------------------------------------------------------- // 4. MAufJob durchlaufen, (in DM.qryMAufJob) // Anhand MAufJob.CLOUD_EVENT_ID das Google-Kalender-Item einlesen, EInträge vergleichen, // wenn Unterschied (irgendwo): Item updaten! // iErrorCode = -1: Erfolgreich, sErrorMessage // iErrorCode > 0 : sErrorMessage beinhaltet Fehlertext // --------------------------------------------------------------- DM.FindCalendarItemsToUpdate( chkSyncAdresseFest.Checked,editFesteMailAdresse.Text,iErrorCode , sErrorMessage ); if iErrorCode = -1 then FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + 'Updated items: ' + sErrorMessage ); if iErrorCode > 0 then begin FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* Error on Update new items: ' + sErrorMessage );

// Kalender initialisieren: FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* Try to reconnect...' ); DM.InitCalendar( strIniFile ); //JC//220901//

FrmMainGooCalTest.memoProt.Lines.Add( FormatDateTime('dd/mm/yyyy', Date) + ' ' + FormatDateTime('hh:mm:ss:zzz', Time) + ': ' + '* 2nc try FindCalendarItemsToUpdate...' ); DM.FindCalendarItemsToUpdate( chkSyncAdresseFest.Checked,editFesteMailAdresse.Text,iErrorCode , sErrorMessage );

end;


// Daten aktualisieren: // --------------------

// Daten Aus MAufJob: DM.MakeSQL_MAufJob_Pers( DM.qryMAufJob, Date {dDatumVon}, speditAnzahlTage.Value {iAnzahlTage}, chkNurPersMitSyncStatus.Checked );

// Daten aus dem Google-Kalender: DM.GetCalendarItemsClientDateSet( Date {dDatumVon}, speditAnzahlTage.Value {iAnzahlTage}, iErrorCode, sErrorMessage );



3 Links

JobKalender

Datenbank-Beschreibung zum Job-Kalender