STPH#70681 Koppeling Exchange

svn path=/Customer/trunk/; revision=55302
This commit is contained in:
Sander Schepers
2022-03-16 09:00:28 +00:00
parent 868b1255f2
commit 164037ff1c

View File

@@ -262,7 +262,7 @@ AS
WHERE res_kenmerk_key = c_km_key_genodigden
AND res_rsv_ruimte_key = p_rsv_ruimte_key;
-- Afspraak wissen
v_afspraak_key := stph.getAfspraak(p_rsv_ruimte_key, 0);
v_afspraak_key := stph_exchange.getAfspraak(p_rsv_ruimte_key, 0);
IF v_afspraak_key IS NOT NULL
THEN
IF (v_debug) THEN
@@ -322,7 +322,7 @@ AS
-- Er zijn niet-AMB-/SSCA-medewerker attendees, zorgen dat er een afspraak is
IF (v_afspraak_key IS NULL)
THEN
v_afspraak_key := stph.getAfspraak(p_rsv_ruimte_key, 1);
v_afspraak_key := stph_exchange.getAfspraak(p_rsv_ruimte_key, 1);
-- Moet de afspraak verplaatst worden in de tijd?
SELECT bez_afspraak_datum,
@@ -357,7 +357,7 @@ AS
p_rsv_ruimte_key, 'AFSPRAAK '||v_afspraak_key);
END IF;
END IF;
stph.upsertBezoeker(p_import_key, v_afspraak_key, rec.bez_bezoekers_key, rec.att_mail, rec.att_name, rec.prs_perslid_key, rec.prs_afdeling_naam );
stph_exchange.upsertBezoeker(p_import_key, v_afspraak_key, rec.bez_bezoekers_key, rec.att_mail, rec.att_name, rec.prs_perslid_key, rec.prs_afdeling_naam );
END IF;
-- Opruiming: afspraken zonder bezoekers (kan gebeuren als er alleen nog interne deelnemers zijn,
@@ -373,7 +373,7 @@ AS
fac.imp_writelog (p_import_key, 'D',
p_rsv_ruimte_key, SUBSTR('GENODIGDEN: '||CHR(13) ||v_genodigden, 1, 1000) );
END IF;
stph.upsertkenmerk_res(c_km_key_genodigden, p_rsv_ruimte_key, v_genodigden );
stph_exchange.upsertkenmerk_res(c_km_key_genodigden, p_rsv_ruimte_key, v_genodigden );
END IF;
END;
@@ -546,7 +546,7 @@ AS
-- Mailadres opslaan
-- bez_kenmerk E-mail 1000
stph.upsertkenmerk_bez(1000, v_bezoekers_key, p_att_mail);
stph_exchange.upsertkenmerk_bez(1000, v_bezoekers_key, p_att_mail);
END IF;
-- TODO: tracking; liefst geen aparte regel per bezoeker
@@ -1208,7 +1208,7 @@ IS
v_ongeldig NUMBER (1);
v_debug BOOLEAN := TRUE;
c_activiteit_key NUMBER (10) := 201; -- Vergadering vanuit Exchange
c_activiteit_key NUMBER (10) := 70; -- Vergadering vanuit Exchange
v_reservering_key NUMBER (10);
v_rsv_ruimte_volgnr res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
v_ruimte_opstel_key NUMBER (10);
@@ -1791,7 +1791,7 @@ BEGIN
OR rec.res_rsv_ruimte_tot != rec.endtime)
THEN
v_errorhint := 'Opstelling ophalen';
v_ruimte_opstel_key := stph.getOpstelling(rec.room_id);
v_ruimte_opstel_key := stph_exchange.getOpstelling(rec.room_id);
IF (v_ruimte_opstel_key IS NULL)
THEN
fac.imp_writelog (p_import_key,
@@ -1850,7 +1850,7 @@ BEGIN
-- Bezoekers bijwerken
v_errorhint := 'Bezoekers bijwerken';
stph.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, rec.res_rsv_ruimte_key);
stph_exchange.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, rec.res_rsv_ruimte_key);
-- Succesvol afgerond; zet vlag.
-- All<6C><6C>n voor nu beschouwde ruimte! (appointments kunnen op meerdere ruimtes zijn)
@@ -1923,7 +1923,7 @@ BEGIN
AND a.prs_afdeling_key = p.prs_afdeling_key;
v_errorhint := 'Opstelling ophalen';
v_ruimte_opstel_key := stph.getOpstelling(rec.room_id);
v_ruimte_opstel_key := stph_exchange.getOpstelling(rec.room_id);
IF (v_ruimte_opstel_key IS NULL)
THEN
fac.imp_writelog (p_import_key,
@@ -2022,7 +2022,7 @@ BEGIN
END IF;
v_errorhint := 'Toevoegen bezoekers';
stph.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, v_rsv_ruimte_key);
stph_exchange.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, v_rsv_ruimte_key);
-- Succesvol afgerond; zet vlag.
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
@@ -2087,7 +2087,7 @@ BEGIN
-- Bij dirty ruimtes de *oudere* opruimen
v_aanduiding := 'Calling set_ruimtes_clean';
v_errorhint := '';
stph.set_ruimtes_clean(p_import_key);
stph_exchange.set_ruimtes_clean(p_import_key);
COMMIT;
EXCEPTION
@@ -2135,12 +2135,68 @@ BEGIN
END;
/
CREATE OR REPLACE PROCEDURE stph_update_exchsync (
CREATE OR REPLACE PROCEDURE stph_update_exchfull (
p_import_key IN NUMBER
)
IS
v_errorhint VARCHAR2 (1000);
BEGIN
stph_update_exchange(p_import_key);
stph_update_exchange(p_import_key); -- Eerst de gewone import
-- Nu alle reserveringen die niet zijn aangetroffen verwijderen
-- (Alleen voor ruimtes die in de importtabel voorkomen. Normaliter zijn dat alle ruimtes,
-- maar zo voorkom je dat je alle reserveringen weggooit als een ruimte 'per ongeluk' een
-- keer niet in de import zit. Handmatig verwijderen kan altijd.)
FOR rec IN (WITH this_import AS (SELECT *
FROM stph_imp_exchange
WHERE fac_import_key = p_import_key)
SELECT res_rsv_ruimte_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_reservering_key,
res_rsv_ruimte_volgnr
FROM res_rsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte r
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
AND rr.res_rsv_ruimte_verwijder IS NULL
AND rr.res_rsv_ruimte_van >= (SELECT MIN(starttime) FROM this_import)
AND rr.res_rsv_ruimte_van <= (SELECT MAX(starttime) FROM this_import)
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
AND r.res_ruimte_key = ro.res_ruimte_key
AND r.res_ruimte_extern_id IN (SELECT DISTINCT room_id FROM this_import)
AND NOT EXISTS
(SELECT 1
FROM this_import i
WHERE rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
AND r.res_ruimte_extern_id = i.room_id)
)
LOOP
v_errorhint := 'Verwijderen reservering '
|| TO_CHAR(rec.res_reservering_key) || '/' || rec.res_rsv_ruimte_volgnr
|| ' (' || TO_CHAR(rec.res_rsv_ruimte_key) || ')';
fac.imp_writelog (p_import_key, 'I', v_errorhint, '');
UPDATE res_rsv_ruimte
SET res_status_fo_key = 1, -- nooit doorbelasten of v_status_fo_key?
res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESDEL', rec.res_rsv_ruimte_key, NULL, SYSDATE, NULL);
res.set_ruimte_dirty(rec.res_rsv_ruimte_key);
res.set_ruimtes_clean(rec.res_rsv_ruimte_van);
res.follow_artikel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
res.follow_deel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
v_errorhint := 'res_reservering verwijderen';
UPDATE res_reservering
SET res_reservering_verwijder = SYSDATE
WHERE res_reservering_key = rec.res_reservering_key
AND NOT EXISTS (SELECT *
FROM res_v_aanwezigrsv_ruimte
WHERE res_reservering_key = rec.res_reservering_key);
END LOOP;
END;
/