GOKO#80714 -- De PM-ers in Facilitor – HERZIEN

svn path=/Customer/; revision=62445
This commit is contained in:
Jos Migo
2023-11-02 20:22:46 +00:00
parent 25424d1633
commit 396d6050b0

144
onces/GOKO/GOKO#80714.sql Normal file
View File

@@ -0,0 +1,144 @@
--
-- $Id$
--
-- Beaufort-koppeling loopt niet meer en men kiest er voor dat men personenbeheer handmatig gaat doen.
-- Alle pedagogische medewerkers die in de beaufort-koppeling meekwamen, wil men uit personenbeheer hebben (inactieve gebruikers),
-- echter men wil deze PM-ers wel via een eigen tabel bijhouden zodat deze bij meldingen en bestellingen van teamaccounts nog gekozen kunnen worden
-- Met dit script zet ik de aanvrager uit de domein-view op prs_perslid over naar de juiste waarde in de eigen tabel
--
DEFINE thisfile = 'GOKO#80714.SQL'
DEFINE dbuser = '^GOKO'
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
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_count NUMBER;
CURSOR m -- meldingen
IS
SELECT m.mld_melding_key, km.mld_kenmerkmelding_key, km.mld_kenmerkmelding_waarde waarde_oud,
(SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = 181
AND ud.fac_usrdata_code = km.mld_kenmerkmelding_waarde
) waarde_nieuw
FROM mld_kenmerkmelding km, mld_melding m
WHERE m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key IN (2, 44, 101) ;
CURSOR b -- bestellingen
IS
SELECT b.bes_bestelling_key, km.bes_kenmerkbestell_key, km.bes_kenmerkbestell_waarde waarde_oud,
(SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = 181
AND ud.fac_usrdata_code = km.bes_kenmerkbestell_waarde
) waarde_nieuw
FROM bes_kenmerkbestell km, bes_bestelling b, bes_kenmerk k
WHERE b.bes_bestelling_key = km.bes_bestelling_key
AND km.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 3 ;
BEGIN
FOR rec IN m
LOOP
BEGIN
v_errorhint := 'Nieuwe waarde zetten in kenmerkwaarde: ' || to_char(rec.mld_kenmerkmelding_key);
IF rec.waarde_nieuw IS NOT NULL AND rec.waarde_oud <> rec.waarde_nieuw
THEN
UPDATE mld_kenmerkmelding km
SET km.mld_kenmerkmelding_waarde = rec.waarde_nieuw
WHERE km.mld_kenmerkmelding_key = rec.mld_kenmerkmelding_key ;
END IF;
v_errorhint := 'Nieuwe waarde onbekend - niet gevonden - dan maar verwijderen: ' || to_char(rec.mld_kenmerkmelding_key);
IF rec.waarde_nieuw IS NULL
THEN
DELETE
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerkmelding_key = rec.mld_kenmerkmelding_key ;
END IF;
END;
END LOOP;
FOR rec IN b
LOOP
BEGIN
v_errorhint := 'Nieuwe waarde zetten in kenmerkwaarde: ' || to_char(rec.bes_kenmerkbestell_key);
IF rec.waarde_nieuw IS NOT NULL AND rec.waarde_oud <> rec.waarde_nieuw
THEN
UPDATE bes_kenmerkbestell km
SET km.bes_kenmerkbestell_waarde = rec.waarde_nieuw
WHERE km.bes_kenmerkbestell_key = rec.bes_kenmerkbestell_key ;
END IF;
IF rec.waarde_nieuw IS NULL
THEN
DELETE
FROM bes_kenmerkbestell km
WHERE km.bes_kenmerkbestell_key = rec.bes_kenmerkbestell_key ;
END IF;
END;
END LOOP;
-- Tot slot kunnen in de fac_usrdate-tabel alle CODES overschreven worden door VOLGNUMMER en kan het volgnummer-kolom leeggemaakt worden
UPDATE fac_usrdata ud
SET ud.fac_usrdata_code = ud.fac_usrdata_volgnr
WHERE ud.fac_usrtab_key = 181 ;
-- En kan volgnummer leeggemaakt worden..
UPDATE fac_usrdata ud
SET ud.fac_usrdata_volgnr = ''
WHERE ud.fac_usrtab_key = 181 ;
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