309 lines
15 KiB
SQL
309 lines
15 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Aanpassingen om DB38z (accept) naar de definitieve DB38 te brengen
|
|
-- Merk op dat de recreate er nog bij komt die de DB-version bijwerkt
|
|
|
|
DEFINE thisfile = 'DB38zto38.sql'
|
|
DEFINE dbuser = '*'
|
|
|
|
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 ------
|
|
|
|
--/////////////////////////////////////////////////////////////////////////////////////////// FCLT#59418
|
|
-- De autorisatie "WEB_FINUSE" hernoemen naar "WEB_EXTFIN".
|
|
-- Dit is in plaats van: DEF_FAC_FUNCTIE3('WEB_EXTFIN', 'FIN', 11, 0, 1); // 1
|
|
-- Dan is er geen conversie nodig van "WEB_FINUSE" naar "WEB_EXTFIN".
|
|
-- De autorisatie "WEB_EXTFIN" nu eerst verwijderen op accept, want daar was die al aangemaakt.
|
|
DELETE
|
|
FROM fac_functie
|
|
WHERE fac_functie_code = 'WEB_EXTFIN';
|
|
|
|
UPDATE fac_functie
|
|
SET fac_functie_min_level = 11,
|
|
fac_functie_code = 'WEB_EXTFIN',
|
|
fac_functie_omschrijving = 'lcl_WEB_EXTFIN',
|
|
fac_functie_info = 'lcl_WEB_EXTFIN_info'
|
|
WHERE fac_functie_code = 'WEB_FINUSE';
|
|
|
|
-- DEF_MENUITEM(1, 'lcl_menu_mld_bo_afm_opdr_ext' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=b2', 0, 0, 'WEB_EXTORD', 'R', '1', '');
|
|
INSERT INTO fac_menuitems(fac_menuitems_groep,
|
|
fac_menuitems_label,
|
|
fac_menuitems_oms,
|
|
fac_menuitems_module,
|
|
fac_menuitems_url,
|
|
fac_menuitems_srtdisc,
|
|
fac_menuitems_disc,
|
|
fac_functie_key,
|
|
fac_menuitems_rw,
|
|
fac_menuitems_default,
|
|
fac_menuitems_image)
|
|
SELECT 1,
|
|
'lcl_menu_mld_bo_afm_opdr_ext',
|
|
'',
|
|
'MLD',
|
|
'appl/mld/opdr_search.asp?urole=b2',
|
|
0,
|
|
0,
|
|
fac_functie_key,
|
|
'R',
|
|
'1',
|
|
''
|
|
FROM fac_functie
|
|
WHERE fac_functie_code = 'WEB_EXTORD';
|
|
|
|
-- MENU_INS_AFTER('lcl_menu_mld_bo_afm_opdr_ext', 'lcl_menu_mld_bo_afmeldenopdra', 2);
|
|
INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr)
|
|
SELECT i.fac_menuitems_key, m.fac_menu_volgnr + 2
|
|
FROM fac_menuitems i, fac_menu m
|
|
WHERE i.fac_menuitems_key = (SELECT MAX(mmi.fac_menuitems_key)
|
|
FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = 'lcl_menu_mld_bo_afm_opdr_ext')
|
|
AND m.fac_menuitems_key =
|
|
(SELECT MAX(mm.fac_menuitems_key)
|
|
FROM fac_menu mm, fac_menuitems mmi
|
|
WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key
|
|
AND mmi.fac_menuitems_label = 'lcl_menu_mld_bo_afmeldenopdra');
|
|
|
|
-- DEF_MENUITEM(3, 'lcl_mobile_opdrachten_ext' , '', 'MLD', 'appl/pda/orders_list.asp', 0, 0, 'WEB_EXTORD', 'R', '1', 'fa-briefcase');
|
|
INSERT INTO fac_menuitems(fac_menuitems_groep,
|
|
fac_menuitems_label,
|
|
fac_menuitems_oms,
|
|
fac_menuitems_module,
|
|
fac_menuitems_url,
|
|
fac_menuitems_srtdisc,
|
|
fac_menuitems_disc,
|
|
fac_functie_key,
|
|
fac_menuitems_rw,
|
|
fac_menuitems_default,
|
|
fac_menuitems_image)
|
|
SELECT 3,
|
|
'lcl_mobile_opdrachten_ext',
|
|
'',
|
|
'MLD',
|
|
'appl/pda/orders_list.asp',
|
|
0,
|
|
0,
|
|
fac_functie_key,
|
|
'R',
|
|
'1',
|
|
'fa-briefcase'
|
|
FROM fac_functie
|
|
WHERE fac_functie_code = 'WEB_EXTORD';
|
|
|
|
-- MENU_INS_AFTER('lcl_mobile_opdrachten_ext', 'lcl_mobile_opdrachten1', 2);
|
|
INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr)
|
|
SELECT i.fac_menuitems_key, m.fac_menu_volgnr + 2
|
|
FROM fac_menuitems i, fac_menu m
|
|
WHERE i.fac_menuitems_key = (SELECT MAX(mmi.fac_menuitems_key)
|
|
FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = 'lcl_mobile_opdrachten_ext')
|
|
AND m.fac_menuitems_key = (SELECT MAX(mm.fac_menuitems_key)
|
|
FROM fac_menu mm, fac_menuitems mmi
|
|
WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key
|
|
AND mmi.fac_menuitems_label = 'lcl_mobile_opdrachten1');
|
|
|
|
-- WEB_FINUSE is vervangen door WEBEXTFIN voor menuitem DEF_MENUITEM(1, 'lcl_menu_fin_fe' , '', 'FIN', 'appl/fin/fin_factuur.asp?urole=fe', 0, 0, 'WEB_EXTFIN', 'W', '1', ''); /* fe = leverancier */
|
|
UPDATE fac_menuitems
|
|
SET fac_functie_key = (SELECT fac_functie_key
|
|
FROM fac_functie
|
|
WHERE UPPER (fac_functie_code) = 'WEB_EXTFIN')
|
|
WHERE fac_menuitems_label = 'lcl_menu_fin_fe';
|
|
-- WEB_FINUSE is vervangen door WEBEXTFIN voor menuitem DEF_MENUITEM(1, 'lcl_menu_fin_fe_overz' , '', 'FIN', 'appl/fin/fin_search.asp', 0, 0, 'WEB_EXTFIN', 'R', '1', ''); /* fe = leverancier */
|
|
UPDATE fac_menuitems
|
|
SET fac_functie_key = (SELECT fac_functie_key
|
|
FROM fac_functie
|
|
WHERE UPPER (fac_functie_code) = 'WEB_EXTFIN')
|
|
WHERE fac_menuitems_label = 'lcl_menu_fin_fe_overz';
|
|
|
|
DECLARE
|
|
lnew_groep NUMBER (1);
|
|
lfirst_prs NUMBER (1);
|
|
lfac_groep_key fac_groep.fac_groep_key%TYPE;
|
|
lnew_fac_groep_key fac_groep.fac_groep_key%TYPE;
|
|
lins_discipline_key fac_groeprechten.ins_discipline_key%TYPE;
|
|
lprs_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
|
-- Interne personen die geen contactpersoon van een extern bedrijf zijn maar die wel 'WEB_ORDBO2' rechten hebben (Interne uitvoerders).
|
|
CURSOR c_pers_intern_rechten IS
|
|
-- Welke personen zijn geen contactpersoon van een extern bedrijf maar hebben wel 'WEB_ORDBO2' rechten (Interne uitvoerders).
|
|
-- Deze moeten naar de nieuwe fac_groep worden gekopieerd.
|
|
-- Welke fac_groeprechten zijn het die geen contactpersoon zijn van een extern bedrijf maar wel 'WEB_ORDBO2' rechten hebben.
|
|
-- Voor elke groep kunnen verschillende disciplines zijn ingesteld.
|
|
SELECT DISTINCT excl.fac_groeprechten_key,
|
|
excl.ins_discipline_key,
|
|
excl.fac_groep_key,
|
|
excl.fac_functie_key,
|
|
excl.fac_gebruiker_alg_level_read,
|
|
excl.fac_gebruiker_alg_level_write,
|
|
excl.fac_gebruiker_prs_level_read,
|
|
excl.fac_gebruiker_prs_level_write,
|
|
excl.prs_perslid_key,
|
|
excl.fac_groep_omschrijving
|
|
FROM (SELECT DISTINCT fgg.fac_groep_key,
|
|
fg.fac_groep_omschrijving,
|
|
f.fac_functie_key,
|
|
f.fac_functie_code,
|
|
fgr.fac_groeprechten_key,
|
|
fgr.ins_discipline_key,
|
|
fgr.fac_gebruiker_alg_level_read,
|
|
fgr.fac_gebruiker_alg_level_write,
|
|
fgr.fac_gebruiker_prs_level_read,
|
|
fgr.fac_gebruiker_prs_level_write,
|
|
fgg.prs_perslid_key
|
|
FROM fac_gebruikersgroep fgg,
|
|
fac_groep fg,
|
|
fac_groeprechten fgr,
|
|
fac_functie f
|
|
WHERE fg.fac_groep_key = fgg.fac_groep_key
|
|
AND fgr.fac_groep_key = fg.fac_groep_key
|
|
AND fgr.fac_functie_key = f.fac_functie_key
|
|
AND UPPER(fac_functie_code) = 'WEB_ORDBO2'
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_contactpersoon cp
|
|
WHERE cp.prs_perslid_key = fgg.prs_perslid_key)) inc,
|
|
(SELECT DISTINCT fgg.fac_groep_key,
|
|
fg.fac_groep_omschrijving,
|
|
f.fac_functie_key,
|
|
f.fac_functie_code,
|
|
fgr.fac_groeprechten_key,
|
|
fgr.ins_discipline_key,
|
|
fgr.fac_gebruiker_alg_level_read,
|
|
fgr.fac_gebruiker_alg_level_write,
|
|
fgr.fac_gebruiker_prs_level_read,
|
|
fgr.fac_gebruiker_prs_level_write,
|
|
fgg.prs_perslid_key
|
|
FROM fac_gebruikersgroep fgg,
|
|
fac_groep fg,
|
|
fac_groeprechten fgr,
|
|
fac_functie f
|
|
WHERE fg.fac_groep_key = fgg.fac_groep_key
|
|
AND fgr.fac_groep_key = fg.fac_groep_key
|
|
AND fgr.fac_functie_key = f.fac_functie_key
|
|
AND UPPER(fac_functie_code) = 'WEB_ORDBO2'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM prs_contactpersoon cp
|
|
WHERE fgg.prs_perslid_key = cp.prs_perslid_key)) excl
|
|
WHERE inc.fac_groep_key = excl.fac_groep_key
|
|
ORDER BY excl.fac_groep_key,
|
|
excl.prs_perslid_key,
|
|
excl.ins_discipline_key,
|
|
excl.fac_groeprechten_key;
|
|
BEGIN
|
|
lfac_groep_key := 0;
|
|
lprs_perslid_key := 0;
|
|
lins_discipline_key := 0;
|
|
lfirst_prs := 0;
|
|
-- Eerst interne uitvoerders die GEEN contactpersoon zijn van een extern bedrijf in een nieuwe groep gooien.
|
|
-- Anders hebben ze straks te weinig rechten.
|
|
FOR f_pers_intern_rechten IN c_pers_intern_rechten
|
|
LOOP
|
|
lnew_groep := 0;
|
|
IF lfac_groep_key != f_pers_intern_rechten.fac_groep_key
|
|
THEN
|
|
-- Nieuwe groep aanmaken (omschrijving + BO2)
|
|
INSERT INTO fac_groep (fac_groep_omschrijving,
|
|
fac_groep_opmerking)
|
|
VALUES (TRIM(SUBSTR(f_pers_intern_rechten.fac_groep_omschrijving, 1, 23)) || ' ORDBO2',
|
|
'Interne personen die geen contactpersoon van een extern bedrijf zijn maar die wel WEB_ORDBO2 rechten hebben (Interne uitvoerders).')
|
|
RETURNING fac_groep_key INTO lnew_fac_groep_key;
|
|
lfac_groep_key := f_pers_intern_rechten.fac_groep_key;
|
|
lnew_groep := 1;
|
|
END IF;
|
|
|
|
IF lnew_groep = 1 OR lprs_perslid_key != f_pers_intern_rechten.prs_perslid_key
|
|
THEN
|
|
-- Personen aan de gebruikersgroep toevoegen.
|
|
INSERT INTO fac_gebruikersgroep (fac_groep_key,
|
|
prs_perslid_key)
|
|
VALUES (lnew_fac_groep_key,
|
|
f_pers_intern_rechten.prs_perslid_key);
|
|
lprs_perslid_key := f_pers_intern_rechten.prs_perslid_key;
|
|
IF lnew_groep = 1
|
|
THEN
|
|
lfirst_prs := 1;
|
|
ELSE
|
|
lfirst_prs := 0;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Voor de tweede prs_perslid niet opnieuw alle disciplines toevoegen anders krijg je ze dubbel erin.
|
|
IF lfirst_prs = 1 AND (lnew_groep = 1 OR lins_discipline_key != f_pers_intern_rechten.ins_discipline_key)
|
|
THEN
|
|
-- Groepsrechten toevoegen.
|
|
INSERT INTO fac_groeprechten (fac_groep_key,
|
|
fac_functie_key,
|
|
ins_discipline_key,
|
|
fac_gebruiker_alg_level_read,
|
|
fac_gebruiker_alg_level_write,
|
|
fac_gebruiker_prs_level_read,
|
|
fac_gebruiker_prs_level_write)
|
|
VALUES (lnew_fac_groep_key,
|
|
f_pers_intern_rechten.fac_functie_key,
|
|
f_pers_intern_rechten.ins_discipline_key,
|
|
f_pers_intern_rechten.fac_gebruiker_alg_level_read,
|
|
f_pers_intern_rechten.fac_gebruiker_alg_level_write,
|
|
f_pers_intern_rechten.fac_gebruiker_prs_level_read,
|
|
f_pers_intern_rechten.fac_gebruiker_prs_level_write);
|
|
lins_discipline_key := f_pers_intern_rechten.ins_discipline_key;
|
|
END IF;
|
|
|
|
END LOOP;
|
|
|
|
-- Omgooien groepen van 'WEB_ORDBO2' naar 'WEB_EXTORD'
|
|
-- De EXIST (contactpersoon) zorgt ervoor dat de net aangemaakte groep met de rechten NIET van 'WEB_ORDBO2' naar 'WEB_EXTORD' worden omgegooid.
|
|
-- In de nieuwe groep zitten namelijk alleen interne uitvoerders die GEEN contactpersoon zijn van een extern bedrijf.
|
|
UPDATE fac_groeprechten
|
|
SET fac_functie_key =
|
|
(SELECT fac_functie_key
|
|
FROM fac_functie
|
|
WHERE fac_functie_code LIKE 'WEB_EXTORD')
|
|
WHERE fac_functie_key = (SELECT fac_functie_key
|
|
FROM fac_functie
|
|
WHERE fac_functie_code LIKE 'WEB_ORDBO2')
|
|
AND fac_groep_key IN (SELECT DISTINCT fgg.fac_groep_key
|
|
FROM fac_gebruikersgroep fgg,
|
|
fac_groep fg,
|
|
fac_groeprechten fgr,
|
|
fac_functie f
|
|
WHERE fg.fac_groep_key = fgg.fac_groep_key
|
|
AND fgr.fac_groep_key = fg.fac_groep_key
|
|
AND fgr.fac_functie_key = f.fac_functie_key
|
|
AND UPPER(fac_functie_code) = 'WEB_ORDBO2'
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_contactpersoon cp
|
|
WHERE cp.prs_perslid_key = fgg.prs_perslid_key));
|
|
END;
|
|
/
|
|
|
|
-- /////////////////////////////////////////////////////////////////////////////////////////// FCLT#60353
|
|
UPDATE fac_setting
|
|
SET fac_setting_pvalue = 1
|
|
WHERE fac_setting_name = 'puo_app2enabled'
|
|
AND fac_setting_pvalue IS NULL
|
|
AND EXISTS
|
|
(SELECT ''
|
|
FROM fac_setting
|
|
WHERE fac_setting_name = 'mobile_enabled'
|
|
AND fac_setting_pvalue = 1);
|
|
|
|
------ 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
|