Files
Customer/onces/COMMON/FCLT#82178.sql
2024-02-06 15:45:09 +00:00

192 lines
9.8 KiB
SQL

--
-- $Id$
--
-- Als gevolg van FCLT#81770 zijn veel gekoppelde reserveringen aan de Facilitor kant verwijderd
-- Dit script wil die reserveringen, inclusief voorzieningen & catering, herstellen
-- Omdat de 'koppelingen onder water' nog in tact zijn kunnen we met dit once script de artikelen, delen en rsv_ruimtes 'undeleten'
-- om zo zo dicht mogelijk bij de herstelde situatie te komen
-- Bezoekers bij reserveringen zijn wel onherroepelijk verwijderd
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
--
DEFINE thisfile = 'FCLT#82178.SQL'
DEFINE dbuser = '^ALKM|^ASPN|^EBNF|^LBRN|^WELK|^WZUV|^AAIT|^ALLR|^CVGZ|^PROR'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
WHENEVER SQLERROR CONTINUE;
PROMPT &fcltcusterr
SET DEFINE OFF
------ payload begin ------
DECLARE
CURSOR resurrect IS
SELECT res_rsv_ruimte_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_externnr,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte rrr, fac_tracking tr, fac_srtnotificatie str
WHERE ( ( res_rsv_ruimte_verwijder BETWEEN TO_DATE (
'02-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'02-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND tr.fac_tracking_datum BETWEEN TO_DATE (
'02-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'02-02-2024 08:00',
'DD-MM-YYYY HH24-MI'))
OR ( res_rsv_ruimte_verwijder BETWEEN TO_DATE (
'03-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'03-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND tr.fac_tracking_datum BETWEEN TO_DATE (
'03-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'03-02-2024 08:00',
'DD-MM-YYYY HH24-MI'))
OR ( res_rsv_ruimte_verwijder BETWEEN TO_DATE (
'04-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'04-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND tr.fac_tracking_datum BETWEEN TO_DATE (
'04-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'04-02-2024 08:00',
'DD-MM-YYYY HH24-MI'))
OR ( res_rsv_ruimte_verwijder BETWEEN TO_DATE (
'05-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'05-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND tr.fac_tracking_datum BETWEEN TO_DATE (
'05-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'05-02-2024 08:00',
'DD-MM-YYYY HH24-MI'))
OR ( res_rsv_ruimte_verwijder BETWEEN TO_DATE (
'06-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'06-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND tr.fac_tracking_datum BETWEEN TO_DATE (
'06-02-2024 07:00',
'DD-MM-YYYY HH24-MI')
AND TO_DATE (
'06-02-2024 08:00',
'DD-MM-YYYY HH24-MI')))
AND res_rsv_ruimte_externnr IS NOT NULL
AND rrr.res_rsv_ruimte_key = tr.fac_tracking_refkey
AND tr.prs_perslid_key IS NULL
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND str.fac_srtnotificatie_code = 'RESDEL';
BEGIN
FOR rec IN resurrect
LOOP
BEGIN
-- Als ik in Outlook ondertussen aangepast ben, dan sta ik mogelijk opnieuw in Facilitor
-- Verwijder hier alle kopieen
DECLARE
CURSOR duplicate IS
SELECT res_rsv_ruimte_key
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_verwijder IS NULL
AND res_rsv_ruimte_aanmaak >=
TO_DATE ('02-02-2024 08:00',
'DD-MM-YYYY HH24-MI')
AND res_rsv_ruimte_externnr =
rec.res_rsv_ruimte_externnr;
BEGIN
FOR dup IN duplicate
LOOP
UPDATE res_rsv_ruimte
SET res_status_fo_key = 1,
res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = dup.res_rsv_ruimte_key;
-- Logging van herstelwerkzaamheden
fac.trackaction (
'#RESDEL',
dup.res_rsv_ruimte_key,
NULL,
SYSDATE,
'Herstelactie ticket 82178: Reservering verwijderd tbv de originele reservering '
|| rec.res_reservering_key
|| '/'
|| rec.res_rsv_ruimte_volgnr);
END LOOP;
END;
UPDATE res_rsv_deel
SET res_rsv_deel_verwijder = NULL
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key
AND res_rsv_deel_verwijder = rec.res_rsv_ruimte_verwijder;
UPDATE res_rsv_artikel
SET res_rsv_artikel_verwijder = NULL
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key
AND res_rsv_artikel_verwijder =
rec.res_rsv_ruimte_verwijder;
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_externsyncdate = SYSDATE,
res_rsv_ruimte_verwijder = NULL,
res_status_fo_key = 2
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
-- Logging van herstelactie
fac.trackaction (
'#RESUPD',
rec.res_rsv_ruimte_key,
NULL,
SYSDATE,
'Herstelactie ticket 82178: Reservering hersteld');
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN -- Er bestaat al een reservering met dit externnr
DBMS_OUTPUT.PUT_LINE (
'externnr van r'
|| rec.res_reservering_key
|| '/'
|| rec.res_rsv_ruimte_volgnr
|| ' reeds overschreven.');
CONTINUE;
END;
END LOOP;
END;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 1); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile