198 lines
7.5 KiB
SQL
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 |