Job-Kalender Termine mit externen Kalendern synchronisieren: Unterschied zwischen den Versionen
Aus GEVITAS
(→Google-Kalender-Einträge einlesen) |
(→Ablauf einer Synchronisation) |
||
| Zeile 56: | Zeile 56: | ||
=== Externe Kalender-Einträge einlesen === | === Externe Kalender-Einträge einlesen === | ||
| − | + | Daten aus dem Google-Kalender, Exchange o.ä im Zeitraum von DatumVon bis DatumBis (DatumVon + Anzahl Tage) in den Speicher einlesen und dort untersuchen: | |
| − | + | === Daten verarbeiten === | |
| + | |||
| + | a. Kalender-Einträge durchlaufen: | ||
* Den Key (z.B. "EventID") des Termins in der Tabelle MAufJob.CLOUD_EVENT_ID suchen. | * Den Key (z.B. "EventID") des Termins in der Tabelle MAufJob.CLOUD_EVENT_ID suchen. | ||
* Wenn der dort nicht (mehr) gespeichert ist: Kalender-Item löschen! | * Wenn der dort nicht (mehr) gespeichert ist: Kalender-Item löschen! | ||
| − | + | b. Tabelle MAufJob durchlaufen | |
* Wenn dort kein Eintrag im Feld MAufJob.CLOUD_EVENT_ID steht: Kalender-Item einfügen! | * Wenn dort kein Eintrag im Feld MAufJob.CLOUD_EVENT_ID steht: Kalender-Item einfügen! | ||
| − | + | c. Tabelle MAufJob durchlaufen | |
| − | + | * MAufJob.CLOUD_EVENT_ID das Kalender-Item einlesen, die Einträge miteinader vergleichen | |
| − | + | * Wenn es irgendwo einen Unterschied gibt: Kalender-Item updaten! | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
== Links == | == Links == | ||
Version vom 16. Februar 2026, 11:50 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
Dazu kann dieser SQL-Script verwendet werden:
select MAufJob.LFDNR, MAufJob.AUFTRNR, MAufJob.DATUM, MAufJob.DATUMBIS, MAufJob.UHRZEITVON, MAufJob.UHRZEITBIS, MAufJob.PERSONEN,
MAufJob.text, MAufJob.ORT, MAufJob.ERFDAT, MAufJob.ERFUSER,
MAufJob.BETREFF,MAufJob.ADRKURZNAME, MAufJob.AENDDAT, MAufJob.AENDUSER,
MAufJob.TERMINART, MAufJob.ID_STRING, MAufJob.TERMSTATUS, MAufJob.TERMIN_GANZTAEGIG, MAufJob.Changed, MAufJob.TerminTyp,
MAufJob.Anzahl, MAufJob.OBERGRUPPE, MAufJob.GRUPPE, MAufJob.UNTGRUPPE, MAufJob.ARTNR, MAufJob.MENGENTERMIN,
MAufJob.ZU_MAUFJOB_LFDNR, MAufJob.BeauftragungsArt, MAufJob.JobCalChanged, MAufJob.BemerkungIntern, MAufJob.BemerkungExtern,
MAufJob.VeranstOrt, MAufJob.VeranstRaum, MAufJob.CLOUD_EVENT_ID,
MAUFKO.VERANSTNAME, MAUFKO.BEARBEITER,
Pers.PERSNR, Pers.KURZZEICHEN, Pers.VORNAME, Pers.NACHNAME, Pers.SPRACHE, Pers.SyncStatus, Pers.SyncAddress
from MAufJob MAufJob
left outer join pers Pers on Pers.KURZZEICHEN=MAufJob.PERSONEN
left outer join maufko MAUFKO on MAUFKO.AUFTRNR=MAufJob.AUFTRNR
-- Nur TerminTyp 3=Arbeitszeit-Termine:
where MAufJob.TerminTyp=3
-- Nur Personen/Ressourcen mit Kennzeichen > 0: 1=Google 2=Outlook/Exchange
-- Das wird in den Personen-Stammdaten in REFLEX so festgelegt.
and ( Pers.SyncStatus = 1 or Pers.KURZZEICHEN is null )
-- Nur wenn in den Personen-Stammdaten eine Synch-Adresse steht:
and Pers.SyncAddress >
-- Auch überlappende Termine (wie in der Dispo):
and ( (MAufJob.DATUM <= 'DatumVon'
AND
(MAufJob.DATUMBIS >= 'DatumVon'
)
-- Nur Termine mit diesem Status:
-- 1=Zugesagt, Bestätigt 4=Angefragt 6=Bestellung (Überhang)
and ( MAufJob.TERMSTATUS=1 or MAufJob.TERMSTATUS=4 or MAufJob.TERMSTATUS=6)
order by MAufJob.DATUM
2.2 Externe Kalender-Einträge einlesen
Daten aus dem Google-Kalender, Exchange o.ä im Zeitraum von DatumVon bis DatumBis (DatumVon + Anzahl Tage) in den Speicher einlesen und dort untersuchen:
2.3 Daten verarbeiten
a. Kalender-Einträge durchlaufen:
- Den Key (z.B. "EventID") des Termins in der Tabelle MAufJob.CLOUD_EVENT_ID suchen.
- Wenn der dort nicht (mehr) gespeichert ist: Kalender-Item löschen!
b. Tabelle MAufJob durchlaufen
- Wenn dort kein Eintrag im Feld MAufJob.CLOUD_EVENT_ID steht: Kalender-Item einfügen!
c. Tabelle MAufJob durchlaufen
- MAufJob.CLOUD_EVENT_ID das Kalender-Item einlesen, die Einträge miteinader vergleichen
- Wenn es irgendwo einen Unterschied gibt: Kalender-Item updaten!