FCLT#77314 Unieke index op het externnr en dat in EXC_PAC goed afhandelen
svn path=/Database/branches/DB44/; revision=59726
This commit is contained in:
157
EXC/EXC_PAC.SRC
157
EXC/EXC_PAC.SRC
@@ -304,8 +304,7 @@ AS
|
||||
(SELECT 1
|
||||
FROM res_rsv_ruimte
|
||||
WHERE res_rsv_ruimte_verwijder IS NOT NULL
|
||||
AND INSTR (res_rsv_ruimte_externnr,
|
||||
appt_id || '|' || recur_id) = 1));
|
||||
AND res_rsv_ruimte_externnr = appt_id || '|' || recur_id));
|
||||
|
||||
-- We gaan uit van een geldig bestand, mogelijk verandert dat onderweg
|
||||
header_is_valid := 0;
|
||||
@@ -609,9 +608,7 @@ AS
|
||||
WHERE modifier = 'D'
|
||||
AND gelukt IS NULL) i,
|
||||
res_rsv_ruimte rr
|
||||
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
|
||||
AND INSTR(rr.res_rsv_ruimte_externnr,
|
||||
i.appt_id || '|' || i.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||||
UNION ALL
|
||||
SELECT 'Unknown room' reden, i.*, rr.*
|
||||
@@ -628,8 +625,7 @@ AS
|
||||
AND starttime > SYSDATE
|
||||
AND gelukt IS NULL) i,
|
||||
res_rsv_ruimte rr
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr,
|
||||
i.appt_id || '|' || i.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
@@ -656,7 +652,7 @@ AS
|
||||
AND recur_id IS NOT NULL
|
||||
AND gelukt IS NULL) i,
|
||||
res_rsv_ruimte rr
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr, i.appt_id || '||') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|'
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL;
|
||||
|
||||
-- TODO: Voor later: res_cat_t1 en res_t1 gebruiken ipv TRUNC
|
||||
@@ -789,8 +785,7 @@ AS
|
||||
modifier) i,
|
||||
res_rsv_ruimte rr,
|
||||
res_ruimte rnew
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr,
|
||||
i.appt_id || '|' || i.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND rnew.res_ruimte_extern_id = i.room_id
|
||||
AND rnew.res_ruimte_verwijder IS NULL;
|
||||
@@ -874,9 +869,7 @@ AS
|
||||
FROM res_rsv_ruimte rr,
|
||||
res_ruimte_opstelling ro,
|
||||
res_ruimte r
|
||||
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
|
||||
AND INSTR(rr.res_rsv_ruimte_externnr,
|
||||
i.appt_id || '|' || i.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND ro.res_ruimte_opstel_key =
|
||||
rr.res_ruimte_opstel_key
|
||||
@@ -1078,8 +1071,7 @@ AS
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM res_rsv_ruimte
|
||||
WHERE INSTR(res_rsv_ruimte_externnr,
|
||||
i.appt_id || '|' || i.recur_id || '|') = 1);
|
||||
WHERE res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id);
|
||||
|
||||
-- Dan bestaande bijwerken, anders kan het gebeuren dat we op basis van een UPDATE
|
||||
-- eerst een rsv_ruimte aanmaken en 'm daarna meteen proberen bij te werken.
|
||||
@@ -1126,8 +1118,7 @@ AS
|
||||
SELECT COUNT (*)
|
||||
INTO v_count_all_booked
|
||||
FROM res_rsv_ruimte rr
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr,
|
||||
rec.appt_id || '|' || rec.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = rec.appt_id || '|' || rec.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL;
|
||||
|
||||
v_errorhint := 'Totaal aantal benodigde zalen bepalen';
|
||||
@@ -1150,8 +1141,7 @@ AS
|
||||
FROM res_rsv_ruimte rr,
|
||||
res_ruimte_opstelling rops,
|
||||
res_ruimte r
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr,
|
||||
rec.appt_id || '|' || rec.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = rec.appt_id || '|' || rec.recur_id
|
||||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND rops.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||||
AND r.res_ruimte_key = rops.res_ruimte_key
|
||||
@@ -1470,24 +1460,6 @@ AS
|
||||
CONTINUE;
|
||||
END IF;
|
||||
|
||||
v_errorhint := 'Last-minute duplicaat check';
|
||||
|
||||
SELECT COUNT (*)
|
||||
INTO v_count
|
||||
FROM res_rsv_ruimte
|
||||
WHERE res_rsv_ruimte_externnr IS NOT NULL
|
||||
AND INSTR(res_rsv_ruimte_externnr, rec.appt_id || '|' || rec.recur_id || '|') = 1
|
||||
AND res_rsv_ruimte_verwijder IS NULL;
|
||||
|
||||
IF (v_count > 0)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding,
|
||||
'Deze exacte reservering is al bekend in Facilitor. Geen boeking.');
|
||||
CONTINUE;
|
||||
END IF;
|
||||
|
||||
-- Is dit een op zichzelf staande appointment, of onderdeel van een reeks (recurrence)?
|
||||
-- (obv recur_id, die samen met appt_id in res_rsv_ruimte_externnr staat)
|
||||
v_errorhint := 'Check recurrence';
|
||||
@@ -1510,8 +1482,7 @@ AS
|
||||
MAX (res_rsv_ruimte_volgnr) + 1
|
||||
INTO v_reservering_key, v_rsv_ruimte_volgnr
|
||||
FROM res_rsv_ruimte
|
||||
WHERE res_rsv_ruimte_externnr IS NOT NULL
|
||||
AND INSTR(res_rsv_ruimte_externnr,
|
||||
WHERE INSTR(res_rsv_ruimte_externnr,
|
||||
rec.appt_id || '|') = 1
|
||||
-- AND res_rsv_ruimte_externnr NOT LIKE '%|'||rec.recur_id||'|%'
|
||||
AND res_rsv_ruimte_verwijder IS NULL
|
||||
@@ -1548,48 +1519,70 @@ AS
|
||||
|
||||
v_errorhint := 'Deelreservering aanmaken';
|
||||
|
||||
-- res_rsv_ruimte aanmaken voor deze appointment+resource
|
||||
INSERT INTO res_rsv_ruimte (res_rsv_ruimte_omschrijving,
|
||||
res_rsv_ruimte_opmerking,
|
||||
res_rsv_ruimte_externnr,
|
||||
res_ruimte_opstel_key,
|
||||
res_rsv_ruimte_van,
|
||||
res_rsv_ruimte_tot,
|
||||
prs_kostenplaats_key,
|
||||
res_rsv_ruimte_host_key,
|
||||
res_activiteit_key,
|
||||
res_status_fo_key,
|
||||
res_rsv_ruimte_ordernr,
|
||||
res_rsv_ruimte_kosten_klant,
|
||||
res_rsv_ruimte_contact_key,
|
||||
res_rsv_ruimte_bezoekers,
|
||||
res_reservering_key,
|
||||
res_rsv_ruimte_volgnr,
|
||||
res_status_bo_key)
|
||||
VALUES (
|
||||
SUBSTR (rec.subject, 1, 60),
|
||||
NULL,
|
||||
rec.appt_id
|
||||
|| '|'
|
||||
|| rec.recur_id
|
||||
|| '|'
|
||||
|| rec.seq_nr,
|
||||
v_ruimte_opstel_key,
|
||||
rec.starttime,
|
||||
rec.endtime,
|
||||
v_kostenplaats_key,
|
||||
v_perslid_key,
|
||||
c_activiteit_key,
|
||||
2,
|
||||
NULL,
|
||||
1,
|
||||
v_perslid_key,
|
||||
rec.num_bez,
|
||||
v_reservering_key,
|
||||
v_rsv_ruimte_volgnr,
|
||||
2)
|
||||
RETURNING res_rsv_ruimte_key
|
||||
INTO v_rsv_ruimte_key;
|
||||
BEGIN
|
||||
-- res_rsv_ruimte aanmaken voor deze appointment+resource
|
||||
INSERT INTO res_rsv_ruimte (res_rsv_ruimte_omschrijving,
|
||||
res_rsv_ruimte_opmerking,
|
||||
res_rsv_ruimte_externnr,
|
||||
res_ruimte_opstel_key,
|
||||
res_rsv_ruimte_van,
|
||||
res_rsv_ruimte_tot,
|
||||
prs_kostenplaats_key,
|
||||
res_rsv_ruimte_host_key,
|
||||
res_activiteit_key,
|
||||
res_status_fo_key,
|
||||
res_rsv_ruimte_ordernr,
|
||||
res_rsv_ruimte_kosten_klant,
|
||||
res_rsv_ruimte_contact_key,
|
||||
res_rsv_ruimte_bezoekers,
|
||||
res_reservering_key,
|
||||
res_rsv_ruimte_volgnr,
|
||||
res_status_bo_key)
|
||||
VALUES (
|
||||
SUBSTR (rec.subject, 1, 60),
|
||||
NULL,
|
||||
rec.appt_id
|
||||
|| '|'
|
||||
|| rec.recur_id,
|
||||
v_ruimte_opstel_key,
|
||||
rec.starttime,
|
||||
rec.endtime,
|
||||
v_kostenplaats_key,
|
||||
v_perslid_key,
|
||||
c_activiteit_key,
|
||||
2,
|
||||
NULL,
|
||||
1,
|
||||
v_perslid_key,
|
||||
rec.num_bez,
|
||||
v_reservering_key,
|
||||
v_rsv_ruimte_volgnr,
|
||||
2)
|
||||
RETURNING res_rsv_ruimte_key
|
||||
INTO v_rsv_ruimte_key;
|
||||
EXCEPTION
|
||||
WHEN DUP_VAL_ON_INDEX
|
||||
THEN -- Er bestaat al een reservering met dit externnr
|
||||
IF NOT (v_count > 0) -- Verwijder dan ook het zojuist aangemaakte res_reservering-record weer
|
||||
THEN
|
||||
DELETE FROM res_reservering WHERE res_reservering_key = v_reservering_key;
|
||||
END IF;
|
||||
-- Pas het 'gelukt' bitje aan zodat we hem later niet weer opnieuwe proberen
|
||||
UPDATE exc_import
|
||||
SET gelukt = 2
|
||||
WHERE appt_id || '|' || recur_id =
|
||||
rec.appt_id || '|' || rec.recur_id
|
||||
AND gelukt IS NULL;
|
||||
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding,
|
||||
'Deze exacte reservering is al bekend in Facilitor -> Geen boeking.');
|
||||
CONTINUE;
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
RAISE;
|
||||
END;
|
||||
|
||||
IF (v_debug)
|
||||
THEN
|
||||
@@ -1751,7 +1744,7 @@ AS
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM this_import i
|
||||
WHERE INSTR(rr.res_rsv_ruimte_externnr, i.appt_id || '|' || i.recur_id || '|') = 1
|
||||
WHERE rr.res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id
|
||||
AND r.res_ruimte_extern_id = i.room_id))
|
||||
LOOP
|
||||
v_errorhint :=
|
||||
|
||||
Reference in New Issue
Block a user