Files
Customer/onces/RWSN/rwsn67.sql
Maarten van der Heide dce584081e RWSN#62233 M2M+RWSN#62462 Verwijderen reserveringen in bulk (vervallen)
svn path=/Customer/; revision=46867
2020-05-19 17:12:48 +00:00

388 lines
17 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Customer specific once-script RWSN67.
DEFINE thisfile = 'RWSN67.SQL'
DEFINE dbuser = '^RWSN'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
-- RWSN#62233: Aanmaken Soortmelding='E-mail Algemeen' onder Vakgroepen 'MP-EBF Workforce' en 'MP-EBF DigiInkoop'!
-- c_esize_stdmld_key NUMBER (10) := 11962; -- Soortmelding=11962=E-mail Algemeen onder Vakgroep=941=MP-EBF Workforce onder Vakgroeptype=3=KCC!
INSERT INTO mld_stdmelding (mld_stdmelding_key,
mld_ins_discipline_key,
mld_stdmelding_omschrijving,
mld_stdmelding_notfrontend,
alg_onrgoed_niveau,
prs_kostensoort_key,
mld_stdmelding_notify,
mld_stdmelding_planbaar,
mld_stdmelding_freetext,
mld_stdmelding_hint,
mld_stdmelding_autoorder,
mld_stdmelding_vereisdienst,
prs_dienst_key,
mld_typeopdr_key,
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_image,
mld_stdmelding_afmeldtext,
mld_stdmelding_volgnr,
mld_stdmelding_prseigen,
mld_stdmelding_doublecheck,
mld_stdmelding_kopieerbaar,
mld_stdmelding_kto,
bes_ins_discipline_key,
mld_stdmelding_vervaldatum,
mld_stdmelding_opdrtypevast,
mld_stdmeldinggroep_key,
mld_stdmelding_directklaar,
mld_stdmelding_slabewaken,
alg_onrgoed_obj_niveau,
mld_stdmelding_kanverwijzen,
mld_stdmelding_afhankelijk,
alg_org_obj_niveau,
mld_stdmelding_t_accepttijd,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_uitvtijd_pr1,
mld_stdmelding_t_uitvtijd_pr2,
mld_stdmelding_t_uitvtijd_pr4,
mld_stdmelding_malusbasis,
mld_stdmelding_externurl,
mld_stdmelding_enddate_empty,
mld_stdmelding_autoorderamount,
mld_stdmelding_prsafdobj,
ins_srtinst_verplichtstatus,
mld_stdmelding_code,
mld_stdmelding_default_disc)
SELECT 11962, -- Uitgezochte vrije Soortmelding-key in P- <20>n T-omgeving!
941, -- Vakgroep-key 'MP-EBF Workforce'!
mld_stdmelding_omschrijving,
mld_stdmelding_notfrontend,
alg_onrgoed_niveau,
prs_kostensoort_key,
mld_stdmelding_notify,
mld_stdmelding_planbaar,
mld_stdmelding_freetext,
mld_stdmelding_hint,
mld_stdmelding_autoorder,
mld_stdmelding_vereisdienst,
prs_dienst_key,
mld_typeopdr_key,
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_image,
mld_stdmelding_afmeldtext,
mld_stdmelding_volgnr,
mld_stdmelding_prseigen,
mld_stdmelding_doublecheck,
mld_stdmelding_kopieerbaar,
mld_stdmelding_kto,
bes_ins_discipline_key,
mld_stdmelding_vervaldatum,
mld_stdmelding_opdrtypevast,
mld_stdmeldinggroep_key,
mld_stdmelding_directklaar,
mld_stdmelding_slabewaken,
alg_onrgoed_obj_niveau,
mld_stdmelding_kanverwijzen,
mld_stdmelding_afhankelijk,
alg_org_obj_niveau,
mld_stdmelding_t_accepttijd,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_uitvtijd_pr1,
mld_stdmelding_t_uitvtijd_pr2,
mld_stdmelding_t_uitvtijd_pr4,
mld_stdmelding_malusbasis,
mld_stdmelding_externurl,
mld_stdmelding_enddate_empty,
mld_stdmelding_autoorderamount,
mld_stdmelding_prsafdobj,
ins_srtinst_verplichtstatus,
mld_stdmelding_code,
mld_stdmelding_default_disc
FROM mld_stdmelding
WHERE mld_stdmelding_key IN (11961, 11761) -- Key in resp. P- en T-omgeving!
AND TRIM (mld_stdmelding_upper) = 'E-MAIL ALGEMEEN'
AND EXISTS (SELECT 1 FROM ins_tab_discipline WHERE ins_discipline_key = 941)
AND NOT EXISTS (SELECT 1 FROM mld_stdmelding WHERE mld_stdmelding_key = 11962);
COMMIT;
-- c_digin_stdmld_key NUMBER (10) := 11963; -- Soortmelding=11963=E-mail Algemeen onder Vakgroep=3221=MP-EBF DigiInkoop onder Vakgroeptype=3=KCC!
INSERT INTO mld_stdmelding (mld_stdmelding_key,
mld_ins_discipline_key,
mld_stdmelding_omschrijving,
mld_stdmelding_notfrontend,
alg_onrgoed_niveau,
prs_kostensoort_key,
mld_stdmelding_notify,
mld_stdmelding_planbaar,
mld_stdmelding_freetext,
mld_stdmelding_hint,
mld_stdmelding_autoorder,
mld_stdmelding_vereisdienst,
prs_dienst_key,
mld_typeopdr_key,
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_image,
mld_stdmelding_afmeldtext,
mld_stdmelding_volgnr,
mld_stdmelding_prseigen,
mld_stdmelding_doublecheck,
mld_stdmelding_kopieerbaar,
mld_stdmelding_kto,
bes_ins_discipline_key,
mld_stdmelding_vervaldatum,
mld_stdmelding_opdrtypevast,
mld_stdmeldinggroep_key,
mld_stdmelding_directklaar,
mld_stdmelding_slabewaken,
alg_onrgoed_obj_niveau,
mld_stdmelding_kanverwijzen,
mld_stdmelding_afhankelijk,
alg_org_obj_niveau,
mld_stdmelding_t_accepttijd,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_uitvtijd_pr1,
mld_stdmelding_t_uitvtijd_pr2,
mld_stdmelding_t_uitvtijd_pr4,
mld_stdmelding_malusbasis,
mld_stdmelding_externurl,
mld_stdmelding_enddate_empty,
mld_stdmelding_autoorderamount,
mld_stdmelding_prsafdobj,
ins_srtinst_verplichtstatus,
mld_stdmelding_code,
mld_stdmelding_default_disc)
SELECT 11963, -- Uitgezochte vrije Soortmelding-key in P- <20>n T-omgeving!
3221, -- Vakgroep-key 'MP-EBF Digiinkoop'!
mld_stdmelding_omschrijving,
mld_stdmelding_notfrontend,
alg_onrgoed_niveau,
prs_kostensoort_key,
mld_stdmelding_notify,
mld_stdmelding_planbaar,
mld_stdmelding_freetext,
mld_stdmelding_hint,
mld_stdmelding_autoorder,
mld_stdmelding_vereisdienst,
prs_dienst_key,
mld_typeopdr_key,
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_image,
mld_stdmelding_afmeldtext,
mld_stdmelding_volgnr,
mld_stdmelding_prseigen,
mld_stdmelding_doublecheck,
mld_stdmelding_kopieerbaar,
mld_stdmelding_kto,
bes_ins_discipline_key,
mld_stdmelding_vervaldatum,
mld_stdmelding_opdrtypevast,
mld_stdmeldinggroep_key,
mld_stdmelding_directklaar,
mld_stdmelding_slabewaken,
alg_onrgoed_obj_niveau,
mld_stdmelding_kanverwijzen,
mld_stdmelding_afhankelijk,
alg_org_obj_niveau,
mld_stdmelding_t_accepttijd,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_uitvtijd_pr1,
mld_stdmelding_t_uitvtijd_pr2,
mld_stdmelding_t_uitvtijd_pr4,
mld_stdmelding_malusbasis,
mld_stdmelding_externurl,
mld_stdmelding_enddate_empty,
mld_stdmelding_autoorderamount,
mld_stdmelding_prsafdobj,
ins_srtinst_verplichtstatus,
mld_stdmelding_code,
mld_stdmelding_default_disc
FROM mld_stdmelding
WHERE mld_stdmelding_key IN (11961, 11761) -- Key in resp. P- en T-omgeving!
AND TRIM (mld_stdmelding_upper) = 'E-MAIL ALGEMEEN'
AND EXISTS (SELECT 1 FROM ins_tab_discipline WHERE ins_discipline_key = 3221)
AND NOT EXISTS (SELECT 1 FROM mld_stdmelding WHERE mld_stdmelding_key = 11963);
COMMIT;
/*
-- RWSN#62462: Verwijderen van alle [a] ruimtereserveringen (incl. artikelen
-- en voorzieningen) en [b] "losse" artikelreserveringen (zonder
-- voorzieningen) tot 1 september.
SET SERVEROUTPUT ON size 1000000;
-- Uitschakelen RESDEL-notificatie per mail!
UPDATE fac_srtnotificatie
SET fac_srtnotificatie_mode = fac_srtnotificatie_mode - 2
WHERE fac_srtnotificatie_key = 38 -- RESDEL
AND BITAND (fac_srtnotificatie_mode, 2) > 0;
COMMIT;
DECLARE
CURSOR c_res
IS
SELECT '[' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '] ' aanduiding,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_ruimte_opstel_key IS NOT NULL -- Ruimtereservering
AND rrr.res_rsv_ruimte_van > TRUNC (SYSDATE)
AND rrr.res_rsv_ruimte_van < TO_DATE ('01-09-2020', 'dd-mm-yyyy')
ORDER BY 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
BEGIN
v_count := 0;
FOR rec IN c_res
LOOP
BEGIN
--DELETE FROM bez_bezoekers WHERE bez_afspraak_key IN (SELECT ba.bez_afspraak_key FROM bez_afspraak ba WHERE ba.res_rsv_ruimte_key = rec.res_rsv_ruimte_key);
DELETE FROM bez_bezoekers b WHERE EXISTS (SELECT 1 FROM bez_afspraak WHERE bez_afspraak_key = b.bez_afspraak_key AND res_rsv_ruimte_key = rec.res_rsv_ruimte_key);
DELETE FROM bez_afspraak WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_opmerking = 'Reservering i.v.m. COVID-19 in bulk verwijderd',
res_status_fo_key = 1, -- TODO:Waarom gebeurt dit in de core?
res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
--res.set_ruimte_dirty (rec.res_rsv_ruimte_key);
--res.set_ruimtes_clean (TRUNC (rec.res_rsv_ruimte_van));
--res.follow_artikel (rec.res_rsv_ruimte_key, TRUNC (rec.res_rsv_ruimte_van), TRUNC (rec.res_rsv_ruimte_tot));
--res.follow_deel (rec.res_rsv_ruimte_key, TRUNC (rec.res_rsv_ruimte_van), TRUNC (rec.res_rsv_ruimte_tot));
fac.trackaction ('RESDEL', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
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);
v_count := v_count + 1;
IF MOD (v_count, 500) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
DBMS_OUTPUT.PUT_LINE ('W: ' || rec.aanduiding || v_errormsg);
COMMIT;
END;
END LOOP;
DBMS_OUTPUT.PUT_LINE ('S: ' || TO_CHAR (v_count) || ' ruimtereserveringen verwijderd');
COMMIT;
END;
/
DECLARE
CURSOR c_res
IS
SELECT '[' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '] ' aanduiding,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_ruimte_opstel_key IS NULL -- Losse reservering
AND rrr.res_rsv_ruimte_van > TRUNC (SYSDATE)
AND rrr.res_rsv_ruimte_van < TO_DATE ('01-09-2020', 'dd-mm-yyyy')
AND EXISTS (SELECT 1 FROM res_v_aanwezigrsv_artikel WHERE res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
AND NOT EXISTS (SELECT 1 FROM res_v_aanwezigrsv_deel WHERE res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
ORDER BY 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
BEGIN
v_count := 0;
FOR rec IN c_res
LOOP
BEGIN
--DELETE FROM bez_bezoekers WHERE bez_afspraak_key IN (SELECT ba.bez_afspraak_key FROM bez_afspraak ba WHERE ba.res_rsv_ruimte_key = rec.res_rsv_ruimte_key);
DELETE FROM bez_bezoekers b WHERE EXISTS (SELECT 1 FROM bez_afspraak WHERE bez_afspraak_key = b.bez_afspraak_key AND res_rsv_ruimte_key = rec.res_rsv_ruimte_key);
DELETE FROM bez_afspraak WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key ;
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_opmerking = 'Reservering i.v.m. COVID-19 in bulk verwijderd',
res_status_fo_key = 1, -- TODO:Waarom gebeurt dit in de core?
res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
--res.set_ruimte_dirty (rec.res_rsv_ruimte_key);
--res.set_ruimtes_clean (TRUNC (rec.res_rsv_ruimte_van));
--res.follow_artikel (rec.res_rsv_ruimte_key, TRUNC (rec.res_rsv_ruimte_van), TRUNC (rec.res_rsv_ruimte_tot));
--res.follow_deel (rec.res_rsv_ruimte_key, TRUNC (rec.res_rsv_ruimte_van), TRUNC (rec.res_rsv_ruimte_tot));
fac.trackaction ('RESDEL', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
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);
v_count := v_count + 1;
IF MOD (v_count, 500) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
DBMS_OUTPUT.PUT_LINE ('W: ' || rec.aanduiding || v_errormsg);
COMMIT;
END;
END LOOP;
DBMS_OUTPUT.PUT_LINE ('S: ' || TO_CHAR (v_count) || ' losse reserveringen verwijderd');
COMMIT;
END;
/
-- Aanschakelen RESDEL-notificatie per mail!
UPDATE fac_srtnotificatie
SET fac_srtnotificatie_mode = fac_srtnotificatie_mode + 2
WHERE fac_srtnotificatie_key = 38 -- RESDEL
AND BITAND (fac_srtnotificatie_mode, 2) = 0;
COMMIT;
*/
------ 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
@@rwsn.sql