Job-Kalender Termine mit externen Kalendern synchronisieren: Unterschied zwischen den Versionen
(→Links) |
|||
| Zeile 10: | Zeile 10: | ||
** Termin wurde '''gelöscht''' | ** Termin wurde '''gelöscht''' | ||
* Auftrags-Termine werden ausschließlich im '''[[REFLEX Bedienungsanleitung JobKalender|JobKalender]]''' angelegt, geändert oder gelöscht. | * Auftrags-Termine werden ausschließlich im '''[[REFLEX Bedienungsanleitung JobKalender|JobKalender]]''' angelegt, geändert oder gelöscht. | ||
| + | |||
| + | Basis der Beschreibung ist das Zusatz-Modul '''GooCal''', das Termine aus dem '''[[REFLEX Bedienungsanleitung JobKalender|JobKalender]]''' mit Google©-Kalendern synchronisiert. | ||
| + | |||
| + | |||
| + | == Ablauf einer Synchronisation == | ||
| + | |||
| + | === Termin-Daten aus dem JobKalender (MAufJob) einlesen === | ||
| + | |||
| + | DM.MakeSQL_MAufJob_Pers( DM.qryMAufJob, Date {dDatumVon}, speditAnzahlTage.Value {iAnzahlTage}, | ||
| + | chkNurPersMitSyncStatus.Checked | ||
| + | ); | ||
| + | |||
| + | |||
| + | === 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 ); | ||
Version vom 16. Februar 2026, 11:30 Uhr
Inhaltsverzeichnis
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 );