Files
Customer/onces/YKPN/YKPN#56941.sql
Arthur Egberink e01c51d87c YKPN#56941 -- Bedrijven omzetten naar behandelgroepen.
svn path=/Customer/; revision=41601
2019-03-15 15:15:48 +00:00

198 lines
7.5 KiB
SQL

--
-- $Id$
--
-- Interne bedrijven omzetten naar behandelgroepen.
DEFINE thisfile = 'YKPN#56941.sql'
DEFINE dbuser = '^YKPN'
DEFINE custid = 'YKPN'
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 ------
DECLARE
CURSOR c
IS
SELECT prs_bedrijf_naam, b.prs_bedrijf_key, prs_dienst_key
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE UPPER (prs_bedrijf_naam) LIKE 'RETAIL%'
AND prs_bedrijf_naam IN ('Retail IT-OPS',
'Retail Audit',
'Retail innovatie',
'Retail Logistiek Operations',
'Retail Processen',
'Retail BI',
'Retail Channel',
'Retail Security')
AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+);
CURSOR c2 (
c_bedrijf_key IN NUMBER)
IS
SELECT *
FROM prs_contactpersoon cp
WHERE cp.prs_bedrijf_key = c_bedrijf_key
AND prs_perslid_key IS NOT NULL
AND prs_contactpersoon_verwijder IS NULL;
CURSOR c_std (c_dienst_key IN NUMBER)
IS
SELECT *
FROM mld_stdmelding
WHERE prs_dienst_key = c_dienst_key;
v_discipline_key NUMBER;
v_groep_key NUMBER;
v_aanduiding VARCHAR2 (1000);
v_gebruikersgroep_key NUMBER;
BEGIN
-- De huidige Retail vakgroepen mogen verwijzen naar een behandelgroep
UPDATE mld_disc_params
SET mld_disc_params_srtgroep = 1
WHERE mld_ins_discipline_key IN (SELECT ins_discipline_key
FROM mld_discipline
WHERE ins_srtdiscipline_key = 41)
AND mld_disc_params_srtgroep = 0;
FOR rec IN c
LOOP
BEGIN
v_aanduiding := rec.prs_bedrijf_naam;
BEGIN
SELECT ins_discipline_key
INTO v_discipline_key
FROM mld_discipline
WHERE ins_discipline_omschrijving = rec.prs_bedrijf_naam;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- maak voor ieder bedrijf een vakgroep aan zodat we kunnen autoriseren.
INSERT INTO ins_tab_discipline (
ins_discipline_module,
ins_discipline_omschrijving,
ins_srtdiscipline_key)
VALUES ('MLD', rec.prs_bedrijf_naam, 41)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO mld_disc_params (mld_ins_discipline_key,
mld_disc_params_notify,
mld_disc_params_srtgroep)
VALUES (v_discipline_key, 1, 2);
END;
BEGIN
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE fac_groep_omschrijving = 'BO ' || rec.prs_bedrijf_naam;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- maak voor ieder bedrijf een autorisatiegroep aan.
INSERT INTO fac_groep (fac_groep_omschrijving)
VALUES ('BO ' || rec.prs_bedrijf_naam)
RETURNING fac_groep_key
INTO v_groep_key;
END;
-- de mensen die nu ordbo2 rechten hebben krijgen nu MLDBOF rechten
INSERT INTO fac_groeprechten (fac_groep_key,
fac_functie_key,
ins_discipline_key,
fac_gebruiker_prs_level_read,
fac_gebruiker_prs_level_write,
fac_gebruiker_alg_level_read,
fac_gebruiker_alg_level_write)
(SELECT v_groep_key,
fac_functie_key,
v_discipline_key,
-1,
-1,
-1,
-1
FROM fac_functie f
WHERE fac_functie_code = 'WEB_MLDBOF'
AND NOT EXISTS
(SELECT fac_groeprechten_key
FROM fac_groeprechten gr
WHERE ins_discipline_key =
v_discipline_key
AND fac_groep_key = v_groep_key
AND gr.fac_functie_key =
f.fac_functie_key));
-- Voeg de personen toe aan de autorisatiegroep.
FOR reccp IN c2 (rec.prs_bedrijf_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line (reccp.prs_perslid_key);
SELECT fac_gebruikersgroep_key
INTO v_gebruikersgroep_key
FROM fac_gebruikersgroep
WHERE prs_perslid_key = reccp.prs_perslid_key
AND fac_groep_key = v_groep_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line (
'Toevoegen: ' || reccp.prs_perslid_key);
INSERT INTO fac_gebruikersgroep (prs_perslid_key,
fac_groep_key)
VALUES (reccp.prs_perslid_key, v_groep_key);
END;
END LOOP;
-- UPDATE mld_melding SET
DBMS_OUTPUT.put_line ('Dienstkey:' || rec.prs_dienst_key);
IF rec.prs_dienst_key IS NOT NULL
THEN
FOR rec_std IN c_std (rec.prs_dienst_key)
LOOP
DBMS_OUTPUT.put_line (
'Update stdmelding:' || rec_std.mld_stdmelding_key);
UPDATE mld_stdmelding
SET mld_stdmelding_vereisdienst = 0,
prs_dienst_key = NULL,
mld_stdmelding_autoorder = 0,
mld_typeopdr_key = NULL,
mld_stdmelding_opdrtypevast = 0,
mld_stdmelding_default_disc = v_discipline_key
WHERE mld_stdmelding_key = rec_std.mld_stdmelding_key;
END LOOP;
END IF;
END;
END LOOP;
COMMIT;
--EXCEPTION WHEN OTHERS THEN
--dbms_output.put_line (v_aanduiding);
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