Merge DB45d changes

svn path=/Database/trunk/; revision=61949
This commit is contained in:
Jos Groot Lipman
2023-09-27 14:25:44 +00:00
parent ee8f2f5d64
commit 945b4873f2
2 changed files with 42 additions and 48 deletions

View File

@@ -646,6 +646,11 @@ AS
COMMIT;
END import_exchange;
-- Merk op dat er veel meer dan gewoonlijk COMMIT's tussendoor staan
-- Dat is allemaal om zo veel mogelijk deadlocks te voorkomen
-- Pas ook op met de volgorde van statements (binnen een transactie)
-- Voorkom altijd UPDATE exc_import, dan UPDATE res_rsv_ruimte en dan weer UPDATE exc_import
-- De laatste UPDATE exc_import moet voor de UPDATE res_rsv_ruimte
PROCEDURE update_exchange (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
IS
v_aanduiding VARCHAR2 (600);
@@ -1017,6 +1022,8 @@ AS
FROM res_rsv_ruimte
WHERE INSTR(res_rsv_ruimte_externnr, i.appt_id || '|') = 1);
COMMIT; -- Cleanup
FOR rec IN c_del
LOOP
BEGIN
@@ -1079,6 +1086,18 @@ AS
v_errorhint := 'Deelreservering verwijderen';
-- Succesvol afgerond; zet vlag.
-- AKZA#35459: vlag niet zetten voor een single die recurring is geworden;
-- die recurrence moeten we straks in de add-cursor nog toevoegen.
IF NOT (rec.reden = 'Made recurring')
THEN
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND gelukt IS NULL;
END IF;
UPDATE res_rsv_ruimte
SET res_status_fo_key = v_status_fo_key,
res_rsv_ruimte_verwijder = SYSDATE
@@ -1110,18 +1129,6 @@ AS
WHERE res_reservering_key =
rec.res_reservering_key);
-- Succesvol afgerond; zet vlag.
-- AKZA#35459: vlag niet zetten voor een single die recurring is geworden;
-- die recurrence moeten we straks in de add-cursor nog toevoegen.
IF NOT (rec.reden = 'Made recurring')
THEN
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND gelukt IS NULL;
END IF;
fac.imp_writelog (p_import_key,
'I',
v_aanduiding,
@@ -1145,7 +1152,7 @@ AS
END;
END LOOP;
COMMIT;
COMMIT; -- de DELETE's
-- Omdat we entries die gefaald zijn 'bewaren', kan het zijn dat we voor <20><>n appointment
-- meerdere updates - of zelfs een delete - hebben. Dan zijn we alleen ge<67>nteresseerd in de
@@ -1172,6 +1179,8 @@ AS
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_externnr = i.appt_id || '|' || i.recur_id);
COMMIT; -- Cleanup
-- 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.
-- TODO: is dat nog steeds zo met "gelukt = 1"?
@@ -1349,6 +1358,16 @@ AS
END IF;
END IF;
-- Succesvol afgerond; zet vlag.
-- All<6C><6C>n voor nu beschouwde ruimte! (appointments kunnen op meerdere ruimtes zijn)
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND room_id = rec.room_id
AND gelukt IS NULL;
-- We hebben niet geskipt, dus willen we deze rsv_ruimte bijwerken
-- Basisgegevens reservering gewijzigd?
IF ( v_ruimte_extern_id != rec.res_ruimte_extern_id
@@ -1459,16 +1478,6 @@ AS
END IF;
END IF;
-- Succesvol afgerond; zet vlag.
-- All<6C><6C>n voor nu beschouwde ruimte! (appointments kunnen op meerdere ruimtes zijn)
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND room_id = rec.room_id
AND gelukt IS NULL;
IF (v_debug)
THEN
fac.imp_writelog (p_import_key,
@@ -1495,7 +1504,7 @@ AS
END;
END LOOP;
COMMIT;
COMMIT; -- de UPDATE's
-- Ten slotte nieuwe reserveringen toevoegen
FOR rec IN c_add
@@ -1574,6 +1583,14 @@ AS
-- AND res_rsv_ruimte_externnr NOT LIKE '%|'||rec.recur_id||'|%'
AND res_rsv_ruimte_verwijder IS NULL;
-- Succesvol afgerond; zet vlag.
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND gelukt IS NULL;
-- Er bestaan al deelreserveringen voor andere occurences van deze recurring appointment
-- Deelreservering binnen de bijbehorende res_reservering aanmaken
IF (v_count > 0)
@@ -1701,14 +1718,6 @@ AS
v_errorhint := 'Toevoegen bezoekers';
exc.importBezoekers(p_import_key, rec.appt_id, rec.recur_id, v_rsv_ruimte_key, date_interval_start, date_interval_end);
-- Succesvol afgerond; zet vlag.
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
UPDATE exc_import
SET gelukt = 1
WHERE appt_id || '|' || recur_id =
rec.appt_id || '|' || rec.recur_id
AND gelukt IS NULL;
IF (v_debug)
THEN
fac.imp_writelog (p_import_key,
@@ -1782,7 +1791,7 @@ AS
v_errorhint := '';
exc.set_ruimtes_clean (p_import_key);
END IF;
COMMIT;
COMMIT; -- de INSERT's
EXCEPTION
WHEN OTHERS

View File

@@ -274,21 +274,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
THEN
newstatus := pstatus;
eventcode := 'MLDACP';
ELSIF currentstatus = 5
THEN
newstatus := pstatus;
-- Geen nieuwe tracking bij heropenen.
eventcode := NULL;
-- De MLDAFM trackingen veranderen in een MLDUPD tracking. De tekst (fac_srtnotificatie_oms) blijft hetzelfde.
UPDATE fac_tracking
SET fac_srtnotificatie_key = ((SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie tr
WHERE fac_srtnotificatie_code = 'MLDUPD')),
fac_tracking_oms = lcl.l('lcl_mld_is_mldafm')
WHERE fac_tracking_refkey = pmeldingkey
AND fac_srtnotificatie_key = ((SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'MLDAFM'));
ELSIF currentstatus = 7
THEN
newstatus := pstatus;