-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'ofwd.sql' DEFINE dbuser = 'OFWD' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PACKAGE OFWD AS PROCEDURE create_fac_usrdata_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2); PROCEDURE update_devices_from_ad(p_import_key IN NUMBER); END; / CREATE OR REPLACE PACKAGE BODY OFWD AS PROCEDURE create_fac_usrdata_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2) AS v_fac_usrtab_key fac_usrdata.fac_usrtab_key%TYPE; v_fac_usrdata_code fac_usrdata.fac_usrdata_code%TYPE; v_fac_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE; v_fac_usrdata_omschr2 fac_usrdata.fac_usrdata_omschr2%TYPE; v_fac_usrdata_prijs fac_usrdata.fac_usrdata_prijs%TYPE; BEGIN IF p_key IS NOT NULL THEN XML.createconciseopentag ('fac_usrdata'); SELECT fac_usrdata.fac_usrtab_key, fac_usrdata.fac_usrdata_code, fac_usrdata.fac_usrdata_omschr, fac_usrdata.fac_usrdata_omschr2, fac_usrdata.fac_usrdata_prijs INTO v_fac_usrtab_key, v_fac_usrdata_code, v_fac_usrdata_omschr, v_fac_usrdata_omschr2, v_fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = p_key; XML.createxmltagvalue ('tabel_key', v_fac_usrtab_key); XML.createxmltagvalue ('code', v_fac_usrdata_code); XML.createxmltagvalue ('omschrijving', v_fac_usrdata_omschr); XML.createxmltagvalue ('omschrijving2', v_fac_usrdata_omschr2); XML.createxmltagvalue ('prijs', XML.mynumbertochar(v_fac_usrdata_prijs)); XML.createclosetag ('fac_usrdata'); END IF; END; PROCEDURE update_devices_from_ad(p_import_key IN NUMBER) AS -- sql = "id,deviceName,serialNumber,lastSyncDateTime,userDisplayName,emailaddress,phoneNumber,imei,manufacturer,model,enrolledDateTime) " CURSOR c_upd IS SELECT c.fac_imp_csv_col01 id, c.fac_imp_csv_col02 deviceName, c.fac_imp_csv_col03 serialnumber, CAST ( FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col04, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime, c.fac_imp_csv_col05 userDisplayName, c.fac_imp_csv_col06 emailaddress, c.fac_imp_csv_col07 phoneNumber, c.fac_imp_csv_col08 imei, c.fac_imp_csv_col09 manufacturer, c.fac_imp_csv_col10 model, CAST ( FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col11, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Amsterdam' AS DATE) enrolledDateTime, c.fac_imp_csv_col12 azureADDeviceId, d.ins_deel_key FROM fac_imp_csv c, ins_deel d WHERE c.fac_import_key = p_import_key AND d.ins_deel_externnr = c.fac_imp_csv_col01; CURSOR c_ins IS SELECT c.fac_imp_csv_col01 id, c.fac_imp_csv_col02 deviceName, c.fac_imp_csv_col03 serialnumber, CAST ( FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col04, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime, c.fac_imp_csv_col05 userDisplayName, c.fac_imp_csv_col06 emailaddress, c.fac_imp_csv_col07 phoneNumber, c.fac_imp_csv_col08 imei, c.fac_imp_csv_col09 manufacturer, c.fac_imp_csv_col10 model, CAST ( FROM_TZ (CAST (TO_DATE (REPLACE (c.fac_imp_csv_col11, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC') AT TIME ZONE 'Europe/Amsterdam' AS DATE) enrolledDateTime, c.fac_imp_csv_col12 azureADDeviceId FROM fac_imp_csv c WHERE c.fac_import_key = p_import_key AND NOT EXISTS (SELECT 1 FROM ins_deel d WHERE d.ins_deel_externnr = c.fac_imp_csv_col01); CURSOR c_del IS SELECT ins_deel_key FROM ins_deel WHERE ins_deel_verwijder IS NULL AND ins_deel_externnr IS NOT NULL AND ins_deel_externnr NOT IN (SELECT fac_imp_csv_col01 FROM fac_imp_csv WHERE fac_import_key = p_import_key); v_discipline_key NUMBER; v_srtdeel_key NUMBER; v_locatie_key NUMBER; v_ruimte_key NUMBER; v_errormsg VARCHAR2(100); PROCEDURE setflex(p_code IN VARCHAR2, p_key IN VARCHAR2, p_waarde IN VARCHAR2, p_tracking IN NUMBER) AS v_kenmerk_key NUMBER; v_kenmerk_omschrijving ins_kenmerk.ins_kenmerk_omschrijving%TYPE; v_kenmerk_waarde ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE; BEGIN --dbms_output.put_line(p_code); SELECT ins_kenmerk_key, COALESCE(ins_kenmerk_omschrijving, ins_srtkenmerk_omschrijving) INTO v_kenmerk_key, v_kenmerk_omschrijving FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.ins_srtkenmerk_code = UPPER(p_code); v_kenmerk_waarde := FLX.getflex('INS', v_kenmerk_key, p_key); FLX.setflex('INS', v_kenmerk_key, p_key, p_waarde); IF p_tracking = 1 AND COALESCE(v_kenmerk_waarde, '(leeg)') <> COALESCE(p_waarde, '(leeg)') THEN fac.trackaction('INSUPD', p_key, NULL, NULL, 'Object gewijzigd' || CHR(10) || v_kenmerk_omschrijving || ': ' || COALESCE(v_kenmerk_waarde, '(leeg)') || ' --> ' || COALESCE(p_waarde, '(leeg)')); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('Kenmerk niet gevonden: ' || p_code); END; BEGIN FOR rec IN c_ins LOOP BEGIN v_errormsg := 'Opzoeken objectsoort in Facilitor: ' || rec.model; SELECT ins_srtdeel_key, ins_discipline_key INTO v_srtdeel_key, v_discipline_key FROM ins_v_srtdeel_gegevens WHERE ins_srtdeel_omschrijving = rec.model; v_errormsg := 'Opzoeken ruimtenummer in Facilitor: 0.3'; SELECT alg_locatie_key, alg_ruimte_key INTO v_locatie_key, v_ruimte_key FROM alg_v_ruimte_gegevens WHERE alg_ruimte_nr = '0.3'; INSERT INTO ins_deel (ins_srtdeel_key, ins_discipline_key, ins_deel_module, ins_deel_omschrijving, ins_alg_locatie_key, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_deel_aanmaak, ins_deel_externnr, ins_deel_externsyncdate) VALUES (v_srtdeel_key, v_discipline_key, 'INS', SUBSTR(rec.deviceName, 1, 60), v_locatie_key, v_ruimte_key, 'R', rec.enrolledDateTime, rec.id, SYSDATE); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); END; END LOOP; FOR rec IN c_upd LOOP setflex('lastLocalSyncDateTime', rec.ins_deel_key, TO_CHAR(rec.lastLocalSyncDateTime, 'yyyy-mm-dd hh24:mi:ss'), 0); setflex('userDisplayName', rec.ins_deel_key, rec.userDisplayName, 1); setflex('imei', rec.ins_deel_key, rec.imei,1); setflex('manufacturer', rec.ins_deel_key, rec.manufacturer, 1); setflex('serialNumber', rec.ins_deel_key, rec.serialnumber, 1); setflex('emailaddress', rec.ins_deel_key, rec.emailaddress, 1); setflex('phoneNumber', rec.ins_deel_key, rec.phoneNumber, 1); setflex('enrolledDateTime', rec.ins_deel_key, TO_CHAR(rec.enrolledDateTime, 'yyyy-mm-dd hh24:mi:ss'), 1); setflex('azureADDeviceId', rec.ins_deel_key, rec.azureADDeviceId, 1); UPDATE ins_deel SET ins_deel_externsyncdate = SYSDATE WHERE ins_deel_key = rec.ins_deel_key; END LOOP; FOR rec IN c_del LOOP UPDATE ins_deel SET ins_deel_verwijder = SYSDATE WHERE ins_deel_key = rec.ins_deel_key; END LOOP; DELETE fac_imp_csv WHERE fac_import_key = p_import_key; END; END; / CREATE OR REPLACE PROCEDURE ofwd_import_afasonline (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_aantal_in_fclt NUMBER; BEGIN -- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ; v_errorhint := 'Delimiter goed zetten'; -- UPDATE fac_imp_file -- SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';') -- WHERE fac_import_key = p_import_key; -- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden.. UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '') WHERE fac_import_key = p_import_key; v_errorhint := 'Generieke update'; -- WORDT 2025-MRT prs.import_perslid ( p_import_key, '0;0;0;0;0;0;9;1;2;4;' || '3;0;0;0;0;0;0;6;0;5;' || '8;0;0;0;0;0;9;10;11;12;' || '13;14;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', 'Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Personeelsnummer;EMail_werk;Functie_code;Functie_omschrijving;Organisatorische_eenheid_code;Organisatorische_eenheid_omschrijving;Datum_indienst;Datum_uitdienst;Leidinggevende_personeelsnummer;Leidinggevende_Naam%'); -- "Achternaam";"Tussenvoegsel";"Voorletters";"Roepnaam";"personeelsnummer";"E-Mail_werk";"Functie_code";"Functie_omschrijving";"Organisatorische_eenheid_code";"Organisatorische_eenheid_omschrijving";"Datum_indienst";"Datum_uitdienst";"Leidinggevende_personeelsnummer";"Leidinggevende_Naam"; -- 1 (8) 2 (9) 3 (11) 4 (10) 5 (10) 6 (18) 7 (20) 8(21) 9 (27) 10 (28) 11 (29) 12 (30) 13 (31) 14 (32) -- DEF:'Achternaam;Tussenvoegsel;Voorletters;Roepnaam;Personeelsnummer;E-Mail_werk;Functie_code;Functie_omschrijving;Organisatorische_eenheid_code;Organisatorische_eenheid_omschrijving; Datum_indienst;Datum_uitdienst;Leidinggevende_personeelsnummer;Leidinggevende_Naam'); ---- we nemen uit afas alleen de bedrijven/domeinen mee van ofw DELETE fac_imp_perslid WHERE ( UPPER (prs_perslid_email) NOT LIKE '%@OFW.NL' ) ; DELETE fac_imp_organisatie; -- Kostenplaats HR wordt aan de afdeling toegevoegd om instemming voor ergonomische middelen toe te staan. INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_nr) SELECT DISTINCT 'OFW', prs_afdeling_naam, prs_kenmerk2, 'HR' FROM fac_imp_perslid WHERE fac_import_key = p_import_key; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END ofwd_import_afasonline; / --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE ofwd_update_afasonline (p_import_key IN NUMBER) IS CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, a.prs_afdeling_omschrijving, b.prs_bedrijf_naam FROM prs_perslid p, fac_imp_perslid i, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) AND p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_naam = 'OFW' AND i.prs_perslid_nr IS NULL -- in Facilitor, met onderstaande voorwaarden, is er dus geen mapping op personeelsnummer en die personen gaan we verwijderen/inactief maken ORDER BY 1 ; CURSOR c_upd IS SELECT p.prs_perslid_key, pf.prs_perslid_naam_full, p.prs_perslid_aanmaak, i.prs_kenmerk3 indienst, i.prs_kenmerk4 uitdienst, prs_kenmerk5 leid_prs_nr FROM prs_v_perslid_fullnames pf, prs_perslid p, fac_imp_perslid i WHERE p.prs_perslid_nr = i.prs_perslid_nr AND p.prs_perslid_key = pf.prs_perslid_key; CURSOR c_bloktitel (c_stdmelding_key NUMBER) IS SELECT mld_kenmerk_key, ins_discipline_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = 24 AND mld_stdmelding_key = c_stdmelding_key; v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_indienst_kenmerk_key NUMBER(10); v_uitdienst_kenmerk_key NUMBER(10); v_leidg_perslid_key NUMBER(10); v_melding_key NUMBER(10); v_indienst_stdmelding_key NUMBER(10); v_uitdienst_stdmelding_key NUMBER(10); v_uitdienst NUMBER(1); v_indienstdatum VARCHAR2(10); v_uitdienstdatum VARCHAR2(10); BEGIN v_errorhint := 'Niet genoeg personen in bestand, import afgebroken'; SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; IF v_count >= 50 THEN v_errorhint := 'Verwerken organisatiegegevens'; fac_update_organisatie (p_import_key); v_errorhint := 'Verwerken persoonsgegevens'; -- Geldig importbestand wat betreft aantal personen COMMIT; -- generic update -- 'EMAIL' betekent dat op basis van Email wordt gematched. -- 'NR' betekent op basis Personeelsnummer -- 'NULL' betekent altijd geen werkplekken verwijderen prs.update_perslid (p_import_key, 'NR', NULL); v_errorhint := 'Verwijderen persoonsgegevens'; -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; SELECT k.prs_kenmerk_key INTO v_indienst_kenmerk_key FROM prs_kenmerk k WHERE k.prs_kenmerk_verwijder IS NULL AND k.prs_kenmerk_code = 'INDIENST'; SELECT k.prs_kenmerk_key INTO v_uitdienst_kenmerk_key FROM prs_kenmerk k WHERE k.prs_kenmerk_verwijder IS NULL AND k.prs_kenmerk_code = 'UITDIENST'; SELECT mld_stdmelding_key INTO v_indienst_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_code = 'INDIENST'; SELECT mld_stdmelding_key INTO v_uitdienst_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_code = 'UITDIENST'; FOR rec IN c_upd LOOP BEGIN v_uitdienst := 0; v_indienstdatum := NULL; v_uitdienstdatum := NULL; IF rec.indienst IS NOT NULL THEN v_indienstdatum := TO_CHAR(FAC.SAFE_TO_DATE(rec.indienst, 'yyyy-mm-dd'), 'dd-mm-yyyy'); END IF; v_errorhint:='Fout bijwerken kenmerkveld3 - Indienst datum: ' || rec.indienst; PRS.upsertkenmerk (v_indienst_kenmerk_key, rec.prs_perslid_key, v_indienstdatum); IF rec.uitdienst IS NOT NULL THEN v_uitdienstdatum := TO_CHAR(FAC.SAFE_TO_DATE(rec.uitdienst, 'yyyy-mm-dd'), 'dd-mm-yyyy'); IF FLX.getflex('PRS', v_uitdienst_kenmerk_key, rec.prs_perslid_key, 'P', 1) IS NULL THEN v_uitdienst := 1; END IF; END IF; v_errorhint:='Fout bijwerken kenmerkveld4 - Uitdienst datum'; PRS.upsertkenmerk (v_uitdienst_kenmerk_key, rec.prs_perslid_key, v_uitdienstdatum); v_leidg_perslid_key := NULL; IF rec.leid_prs_nr IS NOT NULL THEN v_errorhint:='Fout bijwerken leidinggevende'; BEGIN SELECT prs_perslid_key INTO v_leidg_perslid_key FROM prs_v_aanwezigperslid p WHERE p.prs_perslid_nr = rec.leid_prs_nr; UPDATE prs_perslid SET prs_perslid_key_verantw = v_leidg_perslid_key WHERE prs_perslid_key = rec.prs_perslid_key; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'E', 'Leidinggevende kan niet gevonden worden: ' || rec.leid_prs_nr, ''); END; END IF; -- Aanmaken in diensttredingsmelding -- Persoon is vandaag aangemaakt. -- en er is niet eerder een indiensttredingsworkflow gestart. SELECT count(*) INTO v_count FROM mld_melding WHERE prs_perslid_key = rec.prs_perslid_key AND mld_stdmelding_key = v_indienst_stdmelding_key; IF TRUNC(rec.prs_perslid_aanmaak) = TRUNC(SYSDATE) AND v_count = 0 THEN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_onderwerp, mld_melding_omschrijving, mld_melding_status, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', 6, -- systeem SYSDATE, 'Indienst tredingsbericht: ' || rec.prs_perslid_naam_full, NULL, NULL, v_indienst_stdmelding_key, rec.prs_perslid_key, rec.prs_perslid_key, NULL, 3) RETURNING mld_melding_key INTO v_melding_key; mld.setmeldingstatus (v_melding_key, 2, null); -- nieuw FOR rec_bt IN c_bloktitel(v_indienst_stdmelding_key) LOOP INSERT INTO mld_kenmerkblokmelding (mld_melding_key , mld_kenmerk_key , ins_discipline_key , prs_perslid_key , mld_kenmerkblokmelding_afmelddatum ) VALUES (v_melding_key , rec_bt.mld_kenmerk_key, rec_bt.ins_discipline_key , NULL , NULL ); END LOOP; END IF; -- Aanmaken uitdiensttredingsmelding -- Persoon is vandaag uitdienstgemeld. -- en er is niet eerder een indiensttredingsworkflow gestart. SELECT count(*) INTO v_count FROM mld_melding WHERE prs_perslid_key = rec.prs_perslid_key AND mld_stdmelding_key = v_uitdienst_stdmelding_key; IF v_uitdienst = 1 AND v_count = 0 THEN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_onderwerp, mld_melding_omschrijving, mld_melding_status, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', 6, -- systeem SYSDATE, 'Uitdienst tredingsbericht: ' || rec.prs_perslid_naam_full, NULL, NULL, v_uitdienst_stdmelding_key, rec.prs_perslid_key, rec.prs_perslid_key, NULL, 3) RETURNING mld_melding_key INTO v_melding_key; mld.setmeldingstatus (v_melding_key, 2, null); -- nieuw FOR rec_bt IN c_bloktitel(v_uitdienst_stdmelding_key) LOOP INSERT INTO mld_kenmerkblokmelding (mld_melding_key , mld_kenmerk_key , ins_discipline_key , prs_perslid_key , mld_kenmerkblokmelding_afmelddatum ) VALUES (v_melding_key , rec_bt.mld_kenmerk_key, rec_bt.ins_discipline_key , NULL , NULL ); END LOOP; END IF; END; END LOOP; -- Voeg standaard rapport toe om de rechten in de opdrachtbon op te nemen. INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde) WITH toegekenderechten AS (SELECT prs_kenmerk_key FROM prs_kenmerk WHERE prs_kenmerk_code = 'TOEGEKENDERECHTENZD') SELECT prs_perslid_key, 'P', tr.prs_kenmerk_key, (SELECT fac_usrrap_key FROM fac_usrrap WHERE fac_usrrap_code = 'TOEGEKENDERECHTENZD') FROM prs_perslid p, toegekenderechten tr WHERE prs_perslid_nr IS NOT NULL AND prs_perslid_verwijder IS NULL AND NOT EXISTS (SELECT 1 FROM prs_kenmerklink kl WHERE kl.prs_kenmerk_key = tr.prs_kenmerk_key AND kl.prs_link_key = p.prs_perslid_key); ELSE fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); COMMIT; END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END ofwd_update_afasonline; / ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Rapportage om het kenmerkdomein met optionele profielen (objectsoort_key = 42) te vullen CREATE OR REPLACE VIEW ofwd_v_optionele_profielen AS SELECT ins_deel_key, ins_deel_omschrijving, ins_deel_verwijder FROM ins_deel WHERE ins_srtdeel_key = 42; -- Rapportage om de relatie tussen persoon - functie en rol vast te leggen CREATE OR REPLACE VIEW ofwd_v_rap_prs_rol_recht AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full naam, NULL functie, ins_deel_omschrijving rol, sd.ins_srtdeel_omschrijving soort_rol, DECODE (TRUNC (k.ins_kenmerk_volgnummer, -2), 100, 'Sharepoint', 300, 'Mail', 500, 'Applicatie') groep, k.ins_kenmerk_omschrijving recht FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_kenmerklink kl, prs_kenmerk k, fac_kenmerkdomein kdo, ins_deel d, ins_kenmerkdeel kde, ins_kenmerk k, ins_srtdeel sd, prs_v_afdeling a WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 41 -- OFW AND p.prs_perslid_key = kl.prs_link_key(+) AND kl.prs_kenmerk_key = k.prs_kenmerk_key AND k.fac_kenmerkdomein_key = kdo.fac_kenmerkdomein_key(+) AND kdo.fac_kenmerkdomein_xmlnode = 'deel' AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = d.ins_deel_key(+) AND d.ins_deel_key = kde.ins_deel_key(+) AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key(+) UNION ALL SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, df.ins_deel_omschrijving, dr.ins_deel_omschrijving, sd.ins_srtdeel_omschrijving soort_rol, DECODE (TRUNC (k.ins_kenmerk_volgnummer, -2), 100, 'Sharepoint', 300, 'Mail', 500, 'Applicatie') groep, k.ins_kenmerk_omschrijving FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_srtperslid sp, (SELECT ins_deel_key, fac.safe_to_number (ins_kenmerkdeel_waarde) ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_kenmerk_key = 21) kdf, ins_deel df, (SELECT ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key FROM ins_deelkoppeling WHERE ins_deelkoppeling_verwijder IS NULL UNION SELECT ins_deelkoppeling_naar_key, ins_deelkoppeling_van_key FROM ins_deelkoppeling WHERE ins_deelkoppeling_verwijder IS NULL) dk, ins_deel dr, ins_kenmerkdeel kde, ins_kenmerk k, ins_srtdeel sd, prs_v_afdeling a WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 41 -- OFW AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_key = kdf.ins_kenmerkdeel_waarde(+) AND kdf.ins_deel_key = df.ins_deel_key(+) AND df.ins_deel_key = dk.ins_deelkoppeling_van_key(+) AND dk.ins_deelkoppeling_naar_key = dr.ins_deel_key(+) AND dr.ins_deel_key = kde.ins_deel_key(+) AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+) AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+); -- Omdat bovenstaand rapport te groot werd, zijn de functies en de rechten gescheiden. De stylesheet zoekt ze -- weer bij elkaar. Deze view is speciaal voor zendesk CREATE OR REPLACE VIEW ofwd_v_rap_prs_rol_recht_zd AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full naam, TO_CHAR (NULL) functie, ins_deel_omschrijving rol, ins_deel_key rol_key, TO_CHAR (NULL) soort_rol, TO_CHAR (NULL) groep, TO_CHAR (NULL) recht FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_kenmerklink kl, prs_kenmerk k, fac_kenmerkdomein kdo, ins_deel d, prs_v_afdeling a WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 41 -- OFW AND p.prs_perslid_key = kl.prs_link_key(+) AND kl.prs_kenmerk_key = k.prs_kenmerk_key AND k.fac_kenmerkdomein_key = kdo.fac_kenmerkdomein_key(+) AND kdo.fac_kenmerkdomein_xmlnode = 'deel' AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = d.ins_deel_key(+) UNION ALL SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, df.ins_deel_omschrijving functie, dr.ins_deel_omschrijving rol, dr.ins_deel_key rol_key, NULL soort_rol, NULL groep, NULL recht FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_srtperslid sp, (SELECT ins_deel_key, fac.safe_to_number (ins_kenmerkdeel_waarde) ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_kenmerk_key = 21) kdf, ins_deel df, (SELECT ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key FROM ins_deelkoppeling WHERE ins_deelkoppeling_verwijder IS NULL UNION SELECT ins_deelkoppeling_naar_key, ins_deelkoppeling_van_key FROM ins_deelkoppeling WHERE ins_deelkoppeling_verwijder IS NULL) dk, ins_deel dr, ins_srtdeel sd, prs_v_afdeling a WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 41 -- OFW AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_key = kdf.ins_kenmerkdeel_waarde(+) AND kdf.ins_deel_key = df.ins_deel_key(+) AND df.ins_deel_key = dk.ins_deelkoppeling_van_key(+) AND dk.ins_deelkoppeling_naar_key = dr.ins_deel_key(+) AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+) UNION ALL SELECT NULL, NULL, NULL functie, dr.ins_deel_omschrijving rol, dr.ins_deel_key rol_key, sd.ins_srtdeel_omschrijving soort_rol, DECODE (TRUNC (k.ins_kenmerk_volgnummer, -2), 100, 'Sharepoint', 300, 'Mail', 500, 'Applicatie') groep, k.ins_kenmerk_omschrijving FROM ins_deel dr, ins_kenmerkdeel kde, ins_kenmerk k, ins_srtdeel sd WHERE sd.ins_srtgroep_key = 22 -- Rol AND dr.ins_deel_key = kde.ins_deel_key(+) AND kde.ins_kenmerk_key = k.ins_kenmerk_key(+) AND dr.ins_srtdeel_key = sd.ins_srtdeel_key(+); ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile