-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'impu.SQL' DEFINE dbuser = 'IMPU' 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 ------ ------------------------------- --- DOMEIN-VIEWS -------------- ------------------------------- CREATE OR REPLACE VIEW impu_v_kostenplaatsen ( KEY, NR, OMSCHRIJVING ) AS SELECT kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving omschrijving FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg WHERE kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key AND kp.prs_kostenplaats_verwijder IS NULL AND (kp.prs_kostenplaats_eind IS NULL OR kp.prs_kostenplaats_eind > TRUNC(SYSDATE) ) AND kp.prs_kostenplaats_module = 'ALG' ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving ; -- Voor keuzelijstjes (kenmerk domein) CREATE OR REPLACE VIEW impu_v_personenlijst ( PRS_PERSLID_KEY, NAAM, PERSONEELSNUMMER, EMAIL ) AS SELECT p.prs_perslid_key, CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam END naam, p.prs_perslid_nr, p.prs_perslid_email FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 21 -- bedrijfs_key IMPULS AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT') AND p.prs_perslid_verwijder IS NULL ORDER BY p.prs_perslid_naam ; -- Lijst van Locatiemanagers + Regiomanagers + Tijdelijke waarnemers (tbv domeinview) CREATE OR REPLACE VIEW impu_v_personenlijst_loc ( PRS_PERSLID_KEY, NAAM, PERSONEELSNUMMER, EMAIL ) AS SELECT p.prs_perslid_key, CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' END naam, p.prs_perslid_nr, p.prs_perslid_email FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 21 -- bedrijfs_key IMPULS AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND (INSTR(UPPER(sp.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'TEAMLEIDER') > 0) -- Titels uit AFAS die meelopen in Locatiemanager-verhaal zijn: Locatiemanager + Locatiemanager IKC + Regiomanager + Teamleider AND p.prs_perslid_verwijder IS NULL UNION SELECT p.prs_perslid_key, CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')' ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')' END naam, p.prs_perslid_nr, p.prs_perslid_email FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b, prs_kenmerklink kl WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerk_key = 1021 -- kenmerk waarnemer (vinkbox) AND kl.prs_kenmerklink_waarde = '1' AND kl.prs_kenmerklink_verwijder IS NULL AND p.prs_perslid_verwijder IS NULL ; -- Lijst van Locatiemanagers + Regiomanagers en de locaties waar men verantwoordelijk is (tbv personen-import) CREATE OR REPLACE VIEW impu_v_locatiemanagers ( PRS_PERSLID_KEY, ALG_LOCATIE_KEY, LOCATIEMANAGER, LOCATIE, PRS_PERSLID_VERWIJDER ) AS SELECT p.prs_perslid_key, l.alg_locatie_key, p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving locatiemanager, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, p.prs_perslid_verwijder FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key AND ok.alg_kenmerk_key IN (1016,1018) -- locatiemanagers en Regiomanagers AND ok.alg_onrgoedkenmerk_verwijder IS NULL AND ok.alg_onrgoed_niveau = 'L' AND ok.alg_onrgoed_key = l.alg_locatie_key AND (l.alg_locatie_verwijder IS NULL OR l.alg_locatie_vervaldatum > TRUNC(SYSDATE) ) AND l.alg_locatie_verwijder IS NULL AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL ) AND p.prs_srtperslid_key = sp.prs_srtperslid_key GROUP BY p.prs_perslid_key, l.alg_locatie_key, p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving, p.prs_perslid_verwijder ; -- Lijst van Locatiemanagers + Regiomanagers en de Werkplekkoppeling die ze in hun persoonskaart hebben (tbv personen-import) CREATE OR REPLACE VIEW impu_v_locatiemanagers_wp ( PRS_PERSLID_KEY, ALG_LOCATIE_KEY, NAAM, LOCATIE_WP, PRS_WERKPLEK_KEY ) AS SELECT wp.prs_perslid_key, onr.alg_locatie_key, p.prs_perslid_naam_friendly, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, w.prs_werkplek_key FROM ( SELECT prs_perslid_key FROM impu_v_personenlijst_loc GROUP BY prs_perslid_key ) v, prs_v_perslid_fullnames p, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l WHERE v.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = wp.prs_perslid_key AND wp.prs_werkplek_key = w.prs_werkplek_key AND w.prs_alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_key = onr.alg_ruimte_key AND onr.alg_locatie_key = l.alg_locatie_key ORDER BY wp.prs_perslid_key ; CREATE OR REPLACE VIEW impu_v_ict_nummers ( INS_DEEL_KEY, INS_DEEL_UPPER ) AS SELECT v.ins_deel_key, v.ins_deel_upper FROM ins_v_deel_gegevens v, ins_deel d WHERE v.ins_discipline_key = 62 -- ICT-Nummers AND v.ins_deel_key = d.ins_deel_key AND d.ins_deel_verwijder IS NULL AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ; CREATE OR REPLACE PROCEDURE impu_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; -- overige variabelen v_prs_afdeling_key NUMBER (10); c_prs_afdeling_key NUMBER (10) := 22; -- Fallback-afdeling 'OVERIG voor Medewerkers Impuls' c_prs_afdeling_key_leid NUMBER (10) := 21; -- Afdeling waaronder Locatiemanagers en Regiomanagers komen te vallen v_alg_locatie_key NUMBER (10); v_alg_locatie_code VARCHAR2 (10); v_alg_gebouw_key NUMBER (10); v_alg_gebouw_code VARCHAR2 (12); v_alg_verdieping_key NUMBER (10); v_alg_verdieping_volgnr NUMBER (3); v_alg_ruimte_key NUMBER (10); v_alg_ruimte_nr VARCHAR2 (20); CURSOR c_afd IS SELECT fac_imp_file_index, prs_kenmerk1, prs_afdeling_naam, prs_srtperslid_omschrijving FROM fac_imp_perslid WHERE fac_import_key = p_import_key; CURSOR c_tel IS SELECT p.prs_perslid_email, pp.prs_perslid_telefoonnr, pp.prs_perslid_mobiel FROM fac_imp_perslid p, prs_perslid pp WHERE p.prs_perslid_email = pp.prs_perslid_email AND ( pp.prs_perslid_telefoonnr IS NOT NULL OR pp.prs_perslid_mobiel IS NOT NULL); CURSOR c_loc IS SELECT fac_imp_file_index, prs_kenmerk4 FROM fac_imp_perslid WHERE fac_import_key = p_import_key; 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'; -- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure -- Voor IMPULS geldt: --- prs.import_perslid ( p_import_key, '0;0;0;0;0;0;1;2;3;5;' || '4;0;0;0;0;0;0;6;0;8;' || '7;0;0;0;0;0;9;10;11;12;' || '0;13;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', 'Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;E-Mail_werk;Omschrijving_Functie;Medewerker;Organisatorische_eenheid_omschrijving;Kostenplaats_2;Datum_in_dienst;Datum_uit_dienst;Soort_medewerker'); -- AFASONLINE: "Kostenplaats";"Achternaam";"Voorvoegsel";"Voorletters";"Roepnaam";"E-Mail_werk";"Omschrijving_Functie";"Medewerker";"Organisatorische_eenheid_omschrijving";"Kostenplaats_2";"Datum_in_dienst";"Datum_uit_dienst";Soort_medewerker" -- 1 (7) 2 (8) 3 (9) 4 (11) 5 (10) 6 (18) 7 (21) 8(20) 9 (27) 10 (28) 11 (29) 12 (30) 13 (32) -- DEF: Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;Mail werk;Functie;Medewerker;Organisatorische eenheid;Kostenplaats_oms;In dienst;Uit dienst;Soort medewerker v_errorhint := 'Login afleiden van emailadres'; -- Loginnaam afleiden van emailadres UPDATE fac_imp_perslid SET prs_perslid_oslogin = UPPER ( (SUBSTR (prs_perslid_email, 0, INSTR (prs_perslid_email, '@') - 1))) WHERE UPPER (prs_perslid_email) LIKE '%IMPULS.NL' AND prs_perslid_email IS NOT NULL AND LENGTH ( (SUBSTR (prs_perslid_email, 0, INSTR (prs_perslid_email, '@') - 1))) <= 30; v_errorhint := 'Uitfilteren records'; -- in afasonline-bestand zitten aantal zaken die niet mee hoeven naar Facilitor ---- functie gevuld met PROFIT dan record delete ---- emailadres en emailadres <> @impuls.nl dan record delete DELETE fac_imp_perslid WHERE UPPER (prs_srtperslid_omschrijving) IN ('PROFIT'); DELETE fac_imp_perslid WHERE UPPER (prs_perslid_email) NOT LIKE '%@IMPULS.NL'; v_errorhint := 'Afdeling bepalen en vullen'; -- Afdeling bepalen waar persoon onder komt te vallen. -- Voor locatiemanagers en regiomanagers geldt dat deze altijd op organisatie 'OPVANG' moeten komen (onder dit organisatieonderdeel zitten op niveau 2 de team/afdelingen/kostenplaatsen) FOR rec IN c_afd LOOP BEGIN v_errorhint := 'Persoon aan Afdeling koppelen'; -- Als locatie/regio-managerleider dan afdeling altijd LOCATIE (c_prs_afdeling_key_leid) IF INSTR (UPPER (rec.prs_srtperslid_omschrijving), 'LOCATIEMANAGER') > 0 OR INSTR (UPPER (rec.prs_srtperslid_omschrijving), 'REGIOMANAGER') > 0 OR INSTR (UPPER (rec.prs_srtperslid_omschrijving), 'TEAMLEIDER') > 0 THEN UPDATE fac_imp_perslid SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key_leid) WHERE fac_imp_file_index = rec.fac_imp_file_index; ELSE SELECT MIN (a.prs_afdeling_key) INTO v_prs_afdeling_key FROM prs_v_afdeling a, prs_kostenplaats kp WHERE kp.prs_kostenplaats_upper = UPPER (rec.prs_afdeling_naam) AND a.prs_bedrijf_key = 21 -- bedrijf IMPULS AND a.prs_afdeling_verwijder IS NULL AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key; -- Als afdeling uit AFAS (nog) WEL bekend is in Facilitor dan medewerker op die afdeling zetten IF v_prs_afdeling_key IS NOT NULL THEN -- prs_kenmerk5 vullen zodat deze AFAS-kostenplaats-waarde wel in personenkaart kan landen UPDATE fac_imp_perslid SET prs_kenmerk5 = prs_afdeling_naam WHERE fac_imp_file_index = rec.fac_imp_file_index; -- op de Facilitor-afdeling zetten UPDATE fac_imp_perslid SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = v_prs_afdeling_key) WHERE fac_imp_file_index = rec.fac_imp_file_index; END IF; -- Als afdeling uit AFAS (nog) niet bekend is in Facilitor dan medewerker op afdeling OVERIG zetten IF v_prs_afdeling_key IS NULL THEN -- kenmerk5 vullen zodat deze AFAS-kostenplaats-waarde wel in personenkaart kan landen UPDATE fac_imp_perslid SET prs_kenmerk5 = prs_afdeling_naam WHERE fac_imp_file_index = rec.fac_imp_file_index; -- op afdeling OVERIG zetten UPDATE fac_imp_perslid SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key) WHERE fac_imp_file_index = rec.fac_imp_file_index; END IF; END IF; END; END LOOP; FOR rec IN c_tel LOOP -- Telefoonnummers voert men zelf in Facilitor handmatig in en zitten dus niet in importbestand. -- We vullen daarom deze aan in de fac_imp_perslid v_errorhint := 'Telefoonnummer toevoegen aan import-tabel' || '-' || rec.prs_perslid_email; IF rec.prs_perslid_telefoonnr IS NOT NULL THEN UPDATE fac_imp_perslid p SET p.prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr WHERE p.prs_perslid_email = rec.prs_perslid_email; END IF; IF rec.prs_perslid_mobiel IS NOT NULL THEN UPDATE fac_imp_perslid p SET p.prs_perslid_mobiel = rec.prs_perslid_mobiel WHERE p.prs_perslid_email = rec.prs_perslid_email; END IF; END LOOP; v_errorhint := 'Locatie bepalen en vullen'; -- Default Locatie / Standplaats bepalen voor persoon => ACTIE - Indien gewenst dan kan dit voor IMPULS nog netjes via de kostenplaatsen in de Locatiekaart ingepast worden /* FOR rec IN c_loc LOOP BEGIN v_errorhint := 'Persoon aan Locatie-Ruimte koppelen'; v_alg_locatie_key := NULL; v_alg_gebouw_key := NULL; v_alg_verdieping_key := NULL; v_alg_ruimte_key := NULL; SELECT min(alg_locatie_key) INTO v_alg_locatie_key FROM alg_locatie WHERE UPPER(alg_locatie_omschrijving) = UPPER(rec.prs_kenmerk4) AND (TRUNC(alg_locatie_vervaldatum) > TRUNC(sysdate) OR alg_locatie_vervaldatum IS NULL ) AND alg_locatie_verwijder IS NULL ; IF v_alg_locatie_key IS NOT NULL THEN -- Locatie_code ophalen SELECT alg_locatie_code INTO v_alg_locatie_code FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key ; -- Gebouw_key ophalen SELECT min(alg_gebouw_key) INTO v_alg_gebouw_key FROM alg_gebouw WHERE alg_locatie_key = v_alg_locatie_key AND alg_gebouw_verwijder IS NULL AND (TRUNC(alg_gebouw_vervaldatum) > TRUNC(sysdate) OR alg_gebouw_vervaldatum IS NULL ) ; -- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'default standplaats' UPDATE fac_imp_perslid SET prs_kenmerk6 = (SELECT UPPER(alg_locatie_code) || alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key) WHERE fac_imp_file_index = rec.fac_imp_file_index ; IF v_alg_gebouw_key IS NOT NULL THEN -- Gebouw_code ophalen SELECT alg_gebouw_code INTO v_alg_gebouw_code FROM alg_gebouw WHERE alg_gebouw_key = v_alg_gebouw_key ; -- Verdiepings_key ophalen SELECT min(alg_verdieping_key) INTO v_alg_verdieping_key FROM alg_verdieping WHERE alg_gebouw_key = v_alg_gebouw_key AND alg_verdieping_verwijder IS NULL ; END IF; IF v_alg_verdieping_key IS NOT NULL THEN -- Verdieping_volgnr ophalen SELECT alg_verdieping_volgnr INTO v_alg_verdieping_volgnr FROM alg_verdieping WHERE alg_verdieping_key = v_alg_verdieping_key ; -- Ruimte_key ophalen SELECT min(alg_ruimte_key) INTO v_alg_ruimte_key FROM alg_ruimte WHERE alg_verdieping_key = v_alg_verdieping_key AND alg_ruimte_verwijder IS NULL ; END IF; IF v_alg_ruimte_key IS NOT NULL THEN -- Ruimte_nr ophalen SELECT alg_ruimte_nr INTO v_alg_ruimte_nr FROM alg_ruimte WHERE alg_ruimte_key = v_alg_ruimte_key ; -- Vullen vastgoed-keten in import-tabel UPDATE fac_imp_perslid SET alg_locatie_code = v_alg_locatie_code, alg_gebouw_code = v_alg_gebouw_code, alg_verdieping_volgnr = v_alg_verdieping_volgnr, alg_ruimte_nr = v_alg_ruimte_nr WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; ELSE -- Geen Locatie/Vastgoedketen kunnen vinden UPDATE fac_imp_perslid SET prs_kenmerk6 = 'LOCATIE ONBEKEND' WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; END; END LOOP; */ 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 impu_import_afasonline; / CREATE OR REPLACE PROCEDURE impu_update_afasonline (p_import_key IN NUMBER) IS -- Alle personen verwijderen die niet meer in het import bestand voorkomen. -- Teamaccounts (functie 'Teamaccount' laten we ongemoeid) -- Personen in de juiste autorisatiegroep zetten. -- Match bij IMPULS KINDEROPVANG kan via Email of Personeelsnummer. -- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft. CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a WHERE UPPER (p.prs_perslid_email) LIKE '%IMPULS.NL' AND p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- Impuls Kinderopvang AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_upper NOT IN 'TEAMACCOUNT' AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid WHERE INSTR(UPPER (p.prs_perslid_email),UPPER (prs_perslid_email) ) > 0 ) ORDER BY 1 ; CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers IS SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6 FROM prs_v_aanwezigperslid p, fac_imp_perslid i WHERE p.prs_perslid_key = i.prs_perslid_key ORDER BY 1; CURSOR c_loc -- Voor updaten van locatieleiders (in eigen autorisatiegroep) IS SELECT v.prs_perslid_key FROM impu_v_locatiemanagers v GROUP BY v.prs_perslid_key ; CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen) IS SELECT v.prs_perslid_key, v.alg_locatie_key, v.prs_werkplek_key, v.actie FROM ( SELECT man.prs_perslid_key, man.alg_locatie_key, NULL prs_werkplek_key, 'toevoegen' actie FROM impu_v_locatiemanagers man WHERE NOT EXISTS (SELECT * FROM impu_v_locatiemanagers_wp wp WHERE wp.alg_locatie_key = man.alg_locatie_key AND wp.prs_perslid_key = man.prs_perslid_key) UNION SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'verwijderen' actie FROM impu_v_locatiemanagers_wp wp WHERE NOT EXISTS (SELECT * FROM impu_v_locatiemanagers man WHERE man.alg_locatie_key = wp.alg_locatie_key AND man.prs_perslid_key = wp.prs_perslid_key) UNION SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'ok' actie FROM impu_v_locatiemanagers_wp wp, impu_v_locatiemanagers man WHERE man.alg_locatie_key = wp.alg_locatie_key AND man.prs_perslid_key = wp.prs_perslid_key ) v ORDER BY v.prs_perslid_key, v.alg_locatie_key ; v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_fac_gebruikersgroep_key NUMBER(10); v_alg_ruimte_key NUMBER; v_prs_werkplek_key NUMBER; BEGIN v_errorhint := 'Niet genoeg personen in bestand, import afgebroken'; SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; IF v_count >= 100 THEN v_errorhint := 'Verwerken persoonsgegevens'; -- Geldig importbestand wat betreft aantal personen COMMIT; -- generic update -- 'EMAIL' betekent dat op basis van Email wordt gematched. -- 'NULL' betekent altijd geen werkplekken verwijderen prs.update_perslid (p_import_key, 'EMAIL', 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; FOR rec IN c_flex LOOP BEGIN v_errorhint:='Fout bijwerken kenmerkveld1 - OE-Standplaats Afas'; PRS.upsertkenmerk (1001, rec.prs_perslid_key, rec.prs_kenmerk1); v_errorhint:='Fout bijwerken kenmerkveld2 - Kostenplaats_oms'; PRS.upsertkenmerk (1002, rec.prs_perslid_key, rec.prs_kenmerk2); v_errorhint:='Fout bijwerken kenmerkveld3 - DatumInDienst'; PRS.upsertkenmerk (1004, rec.prs_perslid_key, rec.prs_kenmerk3); v_errorhint:='Fout bijwerken kenmerkveld4 - DatumUitDienst'; PRS.upsertkenmerk (1005, rec.prs_perslid_key, rec.prs_kenmerk4); v_errorhint:='Fout bijwerken kenmerkveld5 - Kostenplaats'; PRS.upsertkenmerk (1003, rec.prs_perslid_key, rec.prs_kenmerk5); v_errorhint:='Fout bijwerken kenmerkveld5 - Soort Medewerker'; PRS.upsertkenmerk (1006, rec.prs_perslid_key, rec.prs_kenmerk6); END; END LOOP; FOR rec IN c_loc LOOP BEGIN -- Alle locatiemanagers toevoegen aan eigen autorisatiegroep' v_errorhint:='Fout bijwerken locatiemanagers in eigen autorisatiegroep'; BEGIN SELECT fac_gebruikersgroep_key INTO v_fac_gebruikersgroep_key FROM fac_gebruikersgroep WHERE fac_groep_key = 22 -- Groep 'Locatie- en Regiomanagers' AND prs_perslid_key = rec.prs_perslid_key ; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) VALUES (22, rec.prs_perslid_key); END; END; END LOOP; FOR rec IN c_loc_wp LOOP BEGIN IF rec.actie = 'toevoegen' THEN v_errorhint:='Fout bij toevoegen werkplekken'; BEGIN SELECT MIN(r.alg_ruimte_key) INTO v_alg_ruimte_key FROM alg_ruimte r, alg_verdieping v, alg_gebouw g WHERE r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND r.alg_ruimte_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL AND g.alg_locatie_key = rec.alg_locatie_key ; IF v_alg_ruimte_key IS NOT NULL THEN -- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0); BEGIN PRS.movetoruimte (rec.prs_perslid_key, v_alg_ruimte_key, 'L', 1); END; END IF; END; END IF; IF rec.actie = 'verwijderen' THEN v_errorhint:='Fout bij verwijderen werkplekken'; DELETE prs_werkplek WHERE prs_werkplek_key = rec.prs_werkplek_key; END IF; END; END LOOP; 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 impu_update_afasonline; / ------------------------------- --- RAPPORTAGES --------------- ------------------------------- -- ICT-nummer - beheer CREATE OR REPLACE VIEW impu_v_ict_nummers_man ( ICT_NUMMER, PROVIDER, STATUS, ICT_OBJECT, GEKOPPELD_AAN_TYPE, GEKOPPELD_AAN, NR_INS_DEEL_KEY, OBJ_INS_DEEL_KEY ) AS SELECT nr.ins_deel_upper, flx.getdomeinwaarde(21,flx.getflex('INS', 42, nr.ins_deel_key)) provider, CASE WHEN d.ins_deel_upper IS NOT NULL THEN 'Gekoppeld' ELSE 'Vrij' END status, d.ins_deel_upper, d.gekoppeld_aan_type, d.gekoppeld_aan, nr.ins_deel_key, d.ins_deel_key FROM (SELECT v.ins_deel_key, v.ins_deel_upper FROM ins_v_deel_gegevens v, ins_deel d WHERE v.ins_discipline_key = 62 -- ICT-Nummers AND v.ins_deel_key = d.ins_deel_key AND d.ins_deel_verwijder IS NULL AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ) nr, (SELECT d.ins_deel_key, d.ins_deel_upper, kw.ins_kenmerkdeel_waarde, num.ins_deel_upper as nummer_gekoppeld, DECODE(d.ins_alg_ruimte_type, 'R', 'Locatie', 'A', 'Afdeling', 'P', 'Persoon/Teamaccount', '') gekoppeld_aan_type, v.alg_plaatsaanduiding, DECODE(d.ins_alg_ruimte_type, 'R', l.alg_locatie_omschrijving, v.alg_plaatsaanduiding) gekoppeld_aan FROM ins_deel d, ins_kenmerkdeel kw, ins_kenmerk k, ins_deel num, ins_v_deel_gegevens v, alg_locatie l WHERE d.ins_deel_key = kw.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 6 AND kw.ins_kenmerkdeel_verwijder IS NULL AND fac.safe_to_number (kw.ins_kenmerkdeel_waarde) = num.ins_deel_key AND d.ins_deel_key = v.ins_deel_key AND d.ins_alg_locatie_key = l.alg_locatie_key(+) ) d WHERE nr.ins_deel_upper = d.nummer_gekoppeld(+) ; -- Rapportage Gebouwbeheer CREATE OR REPLACE VIEW IMPU_V_ALG_ONROERENDGOED ( WIJK, LOCATIE, LOCATIE_CODE, LOCATIE_KEY, GEBOUW, -- gegevens uit locatiekaart LOCATIEMANAGER, REGIOMANAGER, CONTACT_TOELICHTING, GEBRUIKSRECHT, DIENST_AFVAL, DIENST_SCHOONMAAK, DIENST_TELEFONIE, EIGENAARSCHAP_TOELICHTING, KDV, VO, BSO, -- VERDIEPING, RUIMTENR, RUIMTE_OMSCHRIJVING, RUIMTEFUNCTIE, BVO_M2, VLOERSOORT ) AS SELECT d.alg_district_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, l.alg_locatie_key, v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam gebouw, km.locatiemanager, km.regiomanager, km.contact_toelichting, km.gebruiksrecht, km.dienst_afval, km.dienst_schoonmaak, km.dienst_telefonie, km.eigenaarschap_toelichting, km.kdv, km.vo, km.bso, v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code verdieping, v.alg_ruimte_nr, v.alg_ruimte_omschrijving, sr.alg_srtruimte_omschrijving, r.alg_ruimte_bruto_vloeropp, flx.getdomeinwaarde(25, flx.getflex('ALG', 1040, r.alg_ruimte_key, 'R')) vloersoort FROM alg_v_onroerendgoed_gegevens v, alg_locatie l, alg_district d, (SELECT l.alg_locatie_key, flx.getdomeinwaarde(2, flx.getflex('ALG',1016, l.alg_locatie_key,'L')) locatiemanager, flx.getdomeinwaarde(2, flx.getflex('ALG',1018, l.alg_locatie_key,'L')) regiomanager, flx.getflex('ALG',1019, l.alg_locatie_key,'L') contact_toelichting, flx.getdomeinwaarde(1,flx.getflex('ALG',1005, l.alg_locatie_key,'L')) gebruiksrecht, flx.getflex('ALG',1007, l.alg_locatie_key,'L') dienst_afval, flx.getflex('ALG',1008, l.alg_locatie_key,'L') dienst_schoonmaak, flx.getflex('ALG',1009, l.alg_locatie_key,'L') dienst_telefonie, flx.getflex('ALG',1011, l.alg_locatie_key,'L') eigenaarschap_toelichting, flx.getflex('ALG',1001, l.alg_locatie_key,'L') KDV, flx.getflex('ALG',1002, l.alg_locatie_key,'L') VO, flx.getflex('ALG',1003, l.alg_locatie_key,'L') BSO FROM alg_locatie l ) km, alg_ruimte r, alg_srtruimte sr WHERE v.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND v.alg_type IN ('R') AND v.alg_locatie_key = km.alg_locatie_key AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+) ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_ruimte_nr ; CREATE OR REPLACE VIEW impu_v_rap_opdrachten_intern ( TYPE, MLD_OPDR_KEY, MLD_UITVOERENDE_KEY, OPDRACHTNR, OPDRACHT_DATUM, STATUS, MELDING, BEHANDELAAR, LOCATIE_PLAATS, LOCATIE_OMSCHRIJVING, GEPLANDE_AANVANG, OMSCHRIJVING, PRS_PERSLID_KEY, NAAM_UITVOERDER, AFMELD_DATUM, OPDRACHT_TYPE, TD_NAAM, FILTERSTATUS, -- Bolletje FILTERSTATUS_TD, FILTERSTATUS_BO ) AS SELECT CASE WHEN mu.TYPE = 'B' THEN 'Poule-opdracht' WHEN mu.TYPE = 'P' THEN 'Klus-opdracht' ELSE '' END TYPE, o.mld_opdr_key, CASE WHEN mu.TYPE = 'B' THEN o.prs_perslid_key WHEN mu.TYPE = 'P' THEN mu.mld_uitvoerende_key ELSE NULL END mld_uitvoerende_key, TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer, o.mld_opdr_datumbegin, DECODE ( os.mld_statusopdr_key, 8, DECODE (o.mld_opdr_halted, 1, 'Onderbroken', os.mld_statusopdr_omschrijving), os.mld_statusopdr_omschrijving) status, std.mld_stdmelding_omschrijving, COALESCE (p.prs_perslid_naam_full, ''), -- BEHANDELAAR l.alg_locatie_plaats, CASE WHEN m.mld_alg_onroerendgoed_keys IS NOT NULL THEN l.alg_locatie_omschrijving || ' - ' || COALESCE(onr.alg_gebouw_naam, onr.alg_terreinsector_naam) ELSE l.alg_locatie_omschrijving END locatie_omschrijving, COALESCE(o.mld_opdr_plandatum, o.mld_opdr_einddatum) geplande_aanvang, TRIM ( REGEXP_REPLACE ( REGEXP_SUBSTR (o.mld_opdr_omschrijving, '(([^ ]*)( |$)*){10}'), '[[:space:]]', ' ')) || '...', p.prs_perslid_key, mu.naam, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = 78), -- ORDAFM ot.mld_typeopdr_omschrijving, CASE WHEN mu.TYPE = 'B' THEN COALESCE (p.prs_perslid_naam_full, '') WHEN mu.TYPE = 'P' THEN mu.naam ELSE '' END TD_NAAM, CASE WHEN o.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || o.mld_opdr_flag) ELSE '' END filterstatus, (SELECT ud.fac_usrdata_omschr FROM mld_kenmerkopdr ko, mld_kenmerk km, fac_usrdata ud WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND ud.fac_usrtab_key = 22 -- domeinview filterstatus AND ko.mld_kenmerk_key = 11) -- filterstatus TD filterstatus_td, (SELECT DECODE(mld_kenmerkopdr_waarde, '1', 'SPOED', NULL) FROM mld_kenmerkopdr ko, mld_kenmerk km WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = 101) -- spoedindicatie door backoffice filterstatus_bo FROM mld_opdr o, mld_melding m, mld_typeopdr ot, prs_v_perslid_fullnames p, ins_tab_discipline d, mld_stdmelding std, alg_locatie l, alg_v_onroerendgoed_gegevens onr, mld_v_uitvoerende mu, mld_statusopdr os WHERE o.mld_melding_key = m.mld_melding_key(+) AND o.prs_perslid_key = p.prs_perslid_key(+) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten AND m.mld_stdmelding_key = std.mld_stdmelding_key(+) AND std.mld_ins_discipline_key = d.ins_discipline_key(+) AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key AND os.mld_statusopdr_key = o.mld_statusopdr_key AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys (+) AND mu.intern = 1; ------ 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