-- Script containing customer specific configuration sql statements for VIAR -- (c) 2013 SG|facilitor bv -- $Revision$ -- $Id$ -- -- Support: +31 53 4800700 set echo on spool VIAR.lst -- VIAR#33232 -- Zet alle opdrachten van afgemelde meldingen (= key 5) die zijn afgerond (= key 161) naar status historie (= key 7) -- Zet alle afgemelde meldingen (= key 5) die zijn afgerond (= key 161) naar status historie (= key 6) CREATE OR REPLACE PROCEDURE viar_export_nachtwerk (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS CURSOR cmafm IS SELECT DISTINCT m.mld_melding_key FROM mld_melding m, mld_opdr o WHERE mld_melding_status = 5 AND o.mld_melding_key = m.mld_melding_key AND m.mld_melding_key IN (SELECT fac_tracking_refkey FROM fac_tracking WHERE fac_srtnotificatie_key = 161); CURSOR coafm IS SELECT mld_opdr_key FROM mld_opdr WHERE mld_statusopdr_key IN (6, 9) AND mld_melding_key IN (SELECT DISTINCT m.mld_melding_key FROM mld_melding m, mld_opdr o WHERE mld_melding_status = 5 AND o.mld_melding_key = m.mld_melding_key AND o.mld_melding_key NOT IN (SELECT mld_melding_key FROM mld_opdr WHERE mld_statusopdr_key NOT IN (6, 9)) AND m.mld_melding_key IN (SELECT fac_tracking_refkey FROM fac_tracking WHERE fac_srtnotificatie_key = 161)); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER := 0; v_count2 NUMBER := 0; BEGIN FOR r IN coafm LOOP BEGIN MLD.setopdrachtstatus (r.mld_opdr_key, 7, NULL); v_count2 := v_count2 + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'W', v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', 'Aantal opdrachten verwerkt: ' || TO_CHAR (v_count2), ''); COMMIT; FOR r IN cmafm LOOP BEGIN MLD.setmeldingstatus (r.mld_melding_key, 6, NULL); v_count := v_count + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'W', v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', 'Aantal meldingen verwerkt: ' || TO_CHAR (v_count), ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg); COMMIT; END; / CREATE OR REPLACE PROCEDURE viar_import_prs ( p_import_key IN NUMBER ) IS c_fielddelimitor VARCHAR2 (1) := ';'; -- LET OP: moet idem zijn als declaratie bij viar_UPDATE_PRS v_newline VARCHAR2 (1000); -- Input line v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER := 0; v_ongeldig NUMBER (1); v_count_tot NUMBER (10); v_count_import NUMBER (10); v_count NUMBER; v_pos NUMBER; -- De importvelden: v_prs_perslid_nr VARCHAR2 (256); v_prs_perslid_voornaam VARCHAR2 (256); v_prs_perslid_naam VARCHAR2 (256); v_prs_perslid_tussenvoegsel VARCHAR2 (256); v_prs_perslid_voorletters VARCHAR2 (256); v_prs_afdeling_code VARCHAR2 (256); v_prs_srtperslid_omschrijving VARCHAR2 (256); v_prs_perslid_telefoonnr VARCHAR2 (256); v_prs_perslid_mobiel VARCHAR2 (256); v_prs_perslid_email VARCHAR2 (256); v_prs_perslid_oslogin VARCHAR2 (256); -- Overig: v_alg_locatie_code VARCHAR2 (256); v_alg_gebouw_code VARCHAR2 (256); CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE FROM viar_imp_prs; COMMIT; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := ''; v_errorhint := 'Fout bij opvragen te importeren rij'; v_ongeldig := 0; -- Lees alle veldwaarden -- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam. fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); -- 05 - Afdelingscode fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code); -- 06 - Functieomschrijving van medewerker fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving); -- 07 - Email adres van medewerker fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); -- 08 - Mobiel van medewerker fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); -- 09 - Telnr van medewerker fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr); -- 10 - Usernaam/login fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin); -- v_aanduiding := '[' || v_prs_perslid_oslogin || '|' || v_prs_perslid_naam || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM' AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM' AND UPPER (v_prs_afdeling_code) = 'AFDNR.' AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE' AND UPPER (v_prs_perslid_email) = 'E-MAIL' AND UPPER (v_prs_perslid_mobiel) = 'MOBILE' AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON' AND UPPER (v_prs_perslid_oslogin) = 'LOGIN' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden -- v_errorhint := 'Ongeldige naam'; v_prs_perslid_naam := TRIM (v_prs_perslid_naam); IF LENGTH (v_prs_perslid_naam) > 30 THEN v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Naam te lang', 'Naam wordt afgebroken tot [' || v_prs_perslid_naam || ']' ); ELSE IF (v_prs_perslid_naam IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Naam onbekend', 'Naam is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldig loginnaam'; v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin); IF LENGTH (v_prs_perslid_oslogin) > 30 THEN v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Loginnaam te lang', 'Loginnaam wordt afgebroken tot [' || v_prs_perslid_oslogin || ']' ); ELSE IF (v_prs_perslid_oslogin IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Usernaam/login onbekend', 'Usernaam/login is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldig e-mailadres'; v_prs_perslid_email := TRIM (v_prs_perslid_email); IF LENGTH (v_prs_perslid_email) > 200 THEN v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'E-mailadres te lang', 'E-mailadres wordt afgebroken tot [' || v_prs_perslid_email || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig tussenvoegsel'; v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel); IF LENGTH (v_prs_perslid_tussenvoegsel) > 15 THEN v_prs_perslid_tussenvoegsel := SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Tussenvoegsel te lang', 'Tussenvoegsel wordt afgebroken tot [' || v_prs_perslid_tussenvoegsel || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige voorletters'; v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters); IF LENGTH (v_prs_perslid_voorletters) > 10 THEN v_prs_perslid_voorletters := SUBSTR (v_prs_perslid_voorletters, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voorletters te lang', 'Voorletters worden afgebroken tot [' || v_prs_perslid_voorletters || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige voornaam'; v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam); IF LENGTH (v_prs_perslid_voornaam) > 30 THEN v_prs_perslid_voornaam := SUBSTR (v_prs_perslid_voornaam, 1, 30); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Voornaam is te lang', 'Voornaam wordt afgebroken tot [' || v_prs_perslid_voornaam || ']' ); END IF; COMMIT; v_errorhint := 'Ongeldige afdelingcode'; v_prs_afdeling_code := TRIM (v_prs_afdeling_code); IF LENGTH (v_prs_afdeling_code) > 10 THEN v_prs_afdeling_code := SUBSTR (v_prs_afdeling_code, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdelingscode te lang', 'Afdelingscode wordt afgebroken tot [' || v_prs_afdeling_code || ']' ); ELSE IF (v_prs_afdeling_code IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Afdelingscode onbekend', 'Afdelingscode is verplicht; regel wordt overgeslagen!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige functie'; v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving); IF LENGTH (v_prs_srtperslid_omschrijving) > 60 THEN v_prs_srtperslid_omschrijving := SUBSTR (v_prs_srtperslid_omschrijving, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Functie te lang', 'Functie wordt afgebroken tot [' || v_prs_srtperslid_omschrijving || ']' ); ELSE IF (v_prs_srtperslid_omschrijving IS NULL) THEN v_prs_srtperslid_omschrijving := 'Onbekend'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Functie onbekend', 'Functie heeft lege waarde en is verplicht; wordt door Facilitor op onbekend gezet!' ); END IF; END IF; COMMIT; -- v_errorhint := 'Ongeldige plaats/locatiecode'; v_alg_locatie_code := TRIM(v_alg_locatie_code); IF LENGTH (v_alg_locatie_code) > 5 THEN v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Locatiecode te lang', 'Locatiecode wordt afgebroken tot [' || v_alg_locatie_code || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldige plaats/gebouwcode'; v_alg_gebouw_code := TRIM(v_alg_gebouw_code); IF LENGTH (v_alg_gebouw_code) > 10 THEN v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Gebouwcode te lang', 'Gebouwcode wordt afgebroken tot [' || v_alg_gebouw_code || ']' ); COMMIT; END IF; -- v_errorhint := 'Ongeldig mobiel nummer'; v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel); IF LENGTH (v_prs_perslid_mobiel) > 15 THEN v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Mobiel nummer te lang', 'mobiel nummer wordt afgebroken tot [' || v_prs_perslid_mobiel || ']' ); COMMIT; END IF; v_errorhint := 'Ongeldig telefoonnummer'; v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr); IF LENGTH (v_prs_perslid_telefoonnr) > 15 THEN v_prs_perslid_telefoonnr := SUBSTR (v_prs_perslid_telefoonnr, 1, 15); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Telefoonnummer te lang', 'Telefoonnummer wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']' ); COMMIT; END IF; COMMIT; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errorhint := 'Fout bij toevoegen regel aan importtabel VIAR_IMP_PRS'; INSERT INTO viar_imp_prs (prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voorletters, prs_perslid_voornaam, prs_afdeling_code, prs_srtperslid_omschrijving, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_perslid_oslogin ) VALUES (v_prs_perslid_naam, v_prs_perslid_tussenvoegsel, v_prs_perslid_voorletters, v_prs_perslid_voornaam, v_prs_afdeling_code, v_prs_srtperslid_omschrijving, v_alg_locatie_code, v_alg_gebouw_code, NULL, NULL, v_prs_perslid_telefoonnr, v_prs_perslid_mobiel, v_prs_perslid_email, v_prs_perslid_oslogin ); COMMIT; v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Ingelezen regel kan niet worden weggeschreven!' ); COMMIT; END; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!' ); ELSE fac.imp_writelog (p_import_key, 'S', 'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog (p_import_key, 'S', 'Persoon: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END viar_import_prs; / CREATE OR REPLACE PROCEDURE viar_update_prs ( p_import_key IN NUMBER ) IS -- LET OP: moet idem zijn als declaratie bij VIAR_IMPORT_PRS c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: '; -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer c_max_delta_percentage NUMBER (10) := 20; -- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw) c_ruimte_nr VARCHAR2 (10) := '000'; -- Groep waar personen in geplaatst worden (indien nog geen groep) c_key_default_rol NUMBER(10) := 1; v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_prs_actual NUMBER (10); v_count_prs_import NUMBER (10); -- Matching actual persons! v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); -- v_perslid_key NUMBER (10); v_afdeling_key NUMBER (10); v_srtperslid_key NUMBER (10); v_oslogin VARCHAR2 (30); v_wachtwoord VARCHAR2 (30); v_locatie_key NUMBER (10); v_gebouw_key NUMBER (10); v_verdieping_key NUMBER (10); v_ruimte_key NUMBER (10); v_wp_key NUMBER (10); v_wp_volgnr NUMBER (3); v_wp_oms VARCHAR2 (30); v_groep_defaultnaam VARCHAR2 (30); -- Let op! Personen met een functie (srt_perslid) waarvan het oppervlak expliciet op 0 is gezet, betekent een functie die tijdelijk is cq. externe is -- Dus oppervlak leeg laten of een oppervlak > 0 is een interne. Normailiter is oppervlak gewoon leeg. -- Via deze regel is het dus mogelijk om een externe of systeemuser aan te maken, die niet via AD wordt aangemaakt, maar handmatig. -- Je geeft deze persoon een SPECIALE, IN AD NIET BESTAANDE functienaam (bv EXTERN, of SYSTEM, of NOT-AD) met opp=0. -- Die blijven dan gewoon in het systeem staan en worden NIET verwijderd omdat ze niet in AD export staan. -- Ook personen met die als loginnaam beginnen met een _ (underscore) worden niet verwijderd. CURSOR cdelprs IS SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam, p.prs_perslid_voornaam FROM prs_v_aanwezigperslid p, prs_srtperslid sp WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key AND COALESCE(sp.prs_srtperslid_opp,1) > 0 AND SUBSTR(p.prs_perslid_oslogin,1,1) <> '_' AND NOT EXISTS ( SELECT 1 FROM viar_imp_prs ip WHERE UPPER(ip.prs_perslid_oslogin) = UPPER(p.prs_perslid_oslogin)); CURSOR csperslid IS SELECT prs_srtperslid_omschrijving FROM viar_imp_prs GROUP BY prs_srtperslid_omschrijving; CURSOR cprsafd IS SELECT UPPER(prs_afdeling_code) prs_afdeling_code, MIN(prs_afdeling_naam) prs_afdeling_naam FROM viar_imp_prs GROUP BY UPPER (prs_afdeling_code); CURSOR cperslid IS SELECT * FROM viar_imp_prs; CURSOR cwp IS SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code FROM viar_imp_prs ip, prs_v_aanwezigperslid p WHERE ip.alg_locatie_code IS NOT NULL AND ip.alg_gebouw_code IS NOT NULL AND UPPER (ip.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin); -- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek CURSOR cnowp IS SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam, p.prs_perslid_voornaam FROM prs_v_aanwezigperslid p, prs_srtperslid sp WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key AND COALESCE(sp.prs_srtperslid_opp,1) > 0 AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%' AND NOT EXISTS (SELECT 1 FROM prs_perslidwerkplek pw WHERE pw.prs_perslid_key = p.prs_perslid_key); -- Alle aanwezige personen vanuit AD (ie. de import-doelgroep) niet in een groep CURSOR cnogroup IS SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam, p.prs_perslid_voornaam FROM prs_v_aanwezigperslid p, prs_srtperslid sp WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key AND COALESCE(sp.prs_srtperslid_opp,1) > 0 AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep g WHERE g.prs_perslid_key = p.prs_perslid_key); BEGIN -- Alle niet verwijderde personen die via AD zijn geimporteerd. SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) INTO v_count_prs_actual FROM prs_perslid p, prs_srtperslid sp WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key AND COALESCE(sp.prs_srtperslid_opp,1) > 0 AND p.prs_perslid_verwijder IS NULL AND (prs_perslid_oslogin IS NULL OR SUBSTR(prs_perslid_oslogin,1,1) <> '_'); -- Alle personen die via AD zijn geimporteerd en nu weer in AD worden aangeboden. SELECT DECODE (COUNT (*), 0, 1, COUNT (*)) INTO v_count_prs_import FROM prs_perslid p, viar_imp_prs ip, prs_srtperslid sp WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key AND COALESCE(sp.prs_srtperslid_opp,1) > 0 AND p.prs_perslid_verwijder IS NULL AND UPPER(p.prs_perslid_oslogin) = UPPER(ip.prs_perslid_oslogin); -- Als alle personen IF ( v_count_prs_actual = 1 OR (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >= (100 - c_max_delta_percentage ) ) ) THEN -- Geldig importbestand wat betreft aantal personen FOR recdelprs IN cdelprs LOOP BEGIN -- Heeft persoon actuele/toekomstige verplichtingen? SELECT COUNT (*) INTO v_count FROM prs_perslid p, prs_v_verplichting_keys r WHERE p.prs_perslid_key = r.prs_perslid_key AND p.prs_perslid_key = recdelprs.prs_perslid_key; IF (v_count = 0) THEN v_errorhint := 'Fout bij verwijderen persoon'; UPDATE prs_perslid SET prs_perslid_verwijder = SYSDATE WHERE prs_perslid_key = recdelprs.prs_perslid_key; fac.imp_writelog (p_import_key, 'I', 'Persoon met nummer [' || recdelprs.prs_perslid_oslogin || '] en naam [' || recdelprs.prs_perslid_naam || ', ' || recdelprs.prs_perslid_voornaam || '] is verwijderd', 'Persoon is verwijderd' ); COMMIT; ELSE -- Staat persoon INACTIEF? SELECT COUNT (*) INTO v_count FROM prs_perslid p WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%' AND p.prs_perslid_key = recdelprs.prs_perslid_key; IF (v_count = 0) THEN v_errorhint := 'Fout bij INACTIEF zetten persoon'; -- Persoon INACTIEF zetten (update naam + reset oslogin) UPDATE prs_perslid SET prs_perslid_naam = SUBSTR (c_persoon_inactief || prs_perslid_naam, 1, 30 ), prs_perslid_oslogin = NULL WHERE prs_perslid_key = recdelprs.prs_perslid_key; fac.imp_writelog (p_import_key, 'I', 'Persoon met nummer [' || recdelprs.prs_perslid_oslogin || '] en naam [' || recdelprs.prs_perslid_naam || ', ' || recdelprs.prs_perslid_voornaam || '] is INACTIEF gezet', 'Persoon is INACTIEF gezet' ); ELSE v_errorhint := 'Fout bij INACTIEF maken persoon'; -- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet) UPDATE prs_perslid SET prs_perslid_oslogin = NULL WHERE prs_perslid_naam LIKE c_persoon_inactief || '%' AND prs_perslid_oslogin IS NOT NULL; fac.imp_writelog (p_import_key, 'I', 'Persoon met nummer [' || recdelprs.prs_perslid_oslogin || '] en naam [' || recdelprs.prs_perslid_naam || ', ' || recdelprs.prs_perslid_voornaam || '] is INACTIEF gemaakt', 'Persoon is INACTIEF gemaakt' ); END IF; COMMIT; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint ); COMMIT; END; END LOOP; v_count_tot := 0; v_count_error := 0; FOR recsperslid IN csperslid LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - '; v_errorhint := 'Fout bij bepalen functie'; SELECT COUNT (*) INTO v_count FROM prs_srtperslid WHERE UPPER (prs_srtperslid_omschrijving) = UPPER (recsperslid.prs_srtperslid_omschrijving) AND prs_srtperslid_verwijder IS NULL; IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen functie'; INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) VALUES (recsperslid.prs_srtperslid_omschrijving); COMMIT; END IF; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Functie: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '' ); fac.imp_writelog (p_import_key, 'S', 'Functie: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), '' ); COMMIT; v_count_tot := 0; v_count_error := 0; FOR recperslid IN cperslid LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recperslid.prs_perslid_oslogin || '|' || recperslid.prs_perslid_naam || '|' || recperslid.prs_perslid_voornaam || ' - ' || recperslid.prs_afdeling_code || ' - '; v_errorhint := 'Fout bij bepalen functie [' || recperslid.prs_srtperslid_omschrijving || ']'; SELECT prs_srtperslid_key INTO v_srtperslid_key FROM prs_srtperslid WHERE prs_srtperslid_verwijder IS NULL AND UPPER (prs_srtperslid_omschrijving) = UPPER (recperslid.prs_srtperslid_omschrijving); v_errorhint := 'Fout bij bepalen afdeling [' || recperslid.prs_afdeling_naam || ']'; SELECT prs_afdeling_key INTO v_afdeling_key FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL AND UPPER (prs_afdeling_naam) = UPPER (recperslid.prs_afdeling_code); v_errorhint := 'Fout bij bepalen persoon'; SELECT COUNT (*), MAX (prs_perslid_key) INTO v_count, v_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin); IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen persoon'; -- Nieuwe persoon uit importbestand, wordt toegevoegd in Facilitor. INSERT INTO prs_perslid (prs_perslid_module, prs_srtperslid_key, prs_afdeling_key, prs_perslid_naam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_perslid_oslogin ) VALUES ('PRS', v_srtperslid_key, v_afdeling_key, recperslid.prs_perslid_naam, recperslid.prs_perslid_voorletters, recperslid.prs_perslid_tussenvoegsel, recperslid.prs_perslid_voornaam, recperslid.prs_perslid_telefoonnr, recperslid.prs_perslid_mobiel, recperslid.prs_perslid_email, recperslid.prs_perslid_oslogin ); COMMIT; ELSE v_errorhint := 'Fout bij wijzigen persoon'; -- Functie, Afdeling altijd bijwerken -- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond. -- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). -- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). -- Login: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd). UPDATE prs_perslid SET prs_srtperslid_key = v_srtperslid_key, prs_afdeling_key = v_afdeling_key, prs_perslid_naam = COALESCE(recperslid.prs_perslid_naam,prs_perslid_naam), prs_perslid_voorletters = COALESCE(recperslid.prs_perslid_voorletters,prs_perslid_voorletters), prs_perslid_tussenvoegsel = COALESCE(recperslid.prs_perslid_tussenvoegsel,prs_perslid_tussenvoegsel), prs_perslid_voornaam = COALESCE(recperslid.prs_perslid_voornaam,prs_perslid_voornaam), prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr), prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel), prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email), prs_perslid_oslogin = COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin) WHERE prs_perslid_key = v_perslid_key; COMMIT; END IF; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Persoon: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '' ); fac.imp_writelog (p_import_key, 'S', 'Persoon: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), '' ); COMMIT; v_count_tot := 0; v_count_error := 0; FOR recwp IN cwp LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := recwp.prs_perslid_oslogin || '|' || recwp.prs_perslid_naam || '|' || recwp.prs_perslid_voornaam || '|' || recwp.alg_locatie_code || '|' || recwp.alg_gebouw_code || ' - '; v_errorhint := 'Fout bij bepalen persoon'; SELECT prs_perslid_key INTO v_perslid_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_oslogin) = UPPER (recwp.prs_perslid_oslogin); v_errorhint := 'Fout bij bepalen locatie'; SELECT alg_locatie_key INTO v_locatie_key FROM alg_v_aanweziglocatie WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code); v_errorhint := 'Fout bij bepalen gebouw'; SELECT alg_gebouw_key INTO v_gebouw_key FROM alg_v_aanweziggebouw WHERE alg_locatie_key = v_locatie_key AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code); v_errorhint := 'Fout bij bepalen verdieping'; SELECT alg_verdieping_key INTO v_verdieping_key FROM alg_v_aanwezigverdieping WHERE alg_gebouw_key = v_gebouw_key AND alg_verdieping_volgnr = (SELECT MIN (v.alg_verdieping_volgnr) FROM alg_verdieping v WHERE v.alg_gebouw_key = v_gebouw_key AND v.alg_verdieping_volgnr >= 0); v_errorhint := 'Fout bij bepalen of persoon in gebouw een werkplek heeft'; SELECT COUNT (*) INTO v_count FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_ruimte r, alg_verdieping v WHERE pw.prs_perslid_key = v_perslid_key AND pw.prs_werkplek_key = wp.prs_werkplek_key AND wp.prs_alg_ruimte_key = r.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = v_gebouw_key; -- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw. IF (v_count = 0) THEN v_errorhint := 'Fout bij bepalen ruimte'; SELECT COUNT (*) INTO v_count FROM alg_v_aanwezigruimte r WHERE r.alg_verdieping_key = v_verdieping_key AND r.alg_ruimte_nr = c_ruimte_nr; -- v_count=0 -> ruimte '000' bestaat nog niet. IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen ruimte'; INSERT INTO alg_ruimte (alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr ) VALUES (v_verdieping_key, 21, -- facilitaire ruimte c_ruimte_nr ); COMMIT; END IF; v_errorhint := 'Fout bij bepalen ruimte'; SELECT alg_ruimte_key INTO v_ruimte_key FROM alg_v_aanwezigruimte r WHERE r.alg_verdieping_key = v_verdieping_key AND r.alg_ruimte_nr = c_ruimte_nr; v_errorhint := 'Fout bij bepalen vrije werkplek'; SELECT COUNT (w.prs_werkplek_key) INTO v_count FROM prs_werkplek w WHERE w.prs_alg_ruimte_key = v_ruimte_key AND NOT EXISTS ( SELECT 1 FROM prs_perslidwerkplek pw WHERE pw.prs_werkplek_key = w.prs_werkplek_key); IF (v_count > 0) THEN SELECT MIN (w.prs_werkplek_key) INTO v_wp_key FROM prs_werkplek w WHERE w.prs_alg_ruimte_key = v_ruimte_key AND NOT EXISTS ( SELECT 1 FROM prs_perslidwerkplek pw WHERE pw.prs_werkplek_key = w.prs_werkplek_key); v_errorhint := 'Fout bij koppelen persoon aan vrije werkplek'; INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting ) VALUES (v_perslid_key, v_wp_key, 100 ); COMMIT; ELSE v_errorhint := 'Fout bij bepalen nieuwe werkplek'; SELECT prs_s_prs_werkplek_key.NEXTVAL INTO v_wp_key FROM DUAL; SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1 INTO v_wp_volgnr FROM prs_werkplek w WHERE w.prs_alg_ruimte_key = v_ruimte_key; v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr); v_errorhint := 'Fout bij aanmaken nieuwe werkplek'; INSERT INTO prs_werkplek (prs_werkplek_key, prs_werkplek_module, prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key ) VALUES (v_wp_key, 'PRR', v_wp_volgnr, v_wp_oms, v_ruimte_key ); v_errorhint := 'Fout bij koppelen persoon aan nieuwe werkplek'; INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting ) VALUES (v_perslid_key, v_wp_key, 100 ); COMMIT; END IF; END IF; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint ); COMMIT; END; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Werkplek: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '' ); fac.imp_writelog (p_import_key, 'S', 'Werkplek: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), '' ); COMMIT; FOR recnowp IN cnowp LOOP BEGIN fac.imp_writelog (p_import_key, 'I', 'Persoon met nummer [' || recnowp.prs_perslid_oslogin || '] en naam [' || recnowp.prs_perslid_naam || ', ' || recnowp.prs_perslid_voornaam || '] heeft geen werkplek', 'Geen werkplek' ); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint ); COMMIT; END; END LOOP; -- Iedereen krijgt _default-rol die nog geen groep heeft. FOR recnogroup IN cnogroup LOOP BEGIN v_aanduiding := recnogroup.prs_perslid_oslogin || '|' || recnogroup.prs_perslid_naam || '|' || recnogroup.prs_perslid_voornaam || ' - '; v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']'; SELECT fac_groep_upper INTO v_groep_defaultnaam FROM fac_groep WHERE fac_groep_key = c_key_default_rol; v_errorhint := 'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']'; INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key ) VALUES (c_key_default_rol, recnogroup.prs_perslid_key ); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint ); COMMIT; END; END LOOP; ELSE fac.imp_writelog (p_import_key, 'E', 'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!', '- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]
' || '- #personen importbestand = [' || TO_CHAR (v_count_prs_import) || ']
' || '- #personen Facilitor = [' || TO_CHAR (v_count_prs_actual) || ']' ); COMMIT; END IF; -- Geldig importbestand wat betreft aantal inserts COMMIT; END viar_update_prs; / --------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------- --- MIPP MANINFO RAPPORTAGE MIPP MANINFO RAPPORTAGE MIPP MANINFO RAPPORTAGE --- --------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------- -- ins_srtdiscipline_key = 1 is meldingtype 'MIPP'. -- mld_typeopdr_key (+) = 41 is de 'MIPP-afhandeling' opdrachttype, en geen andere opdrachttype. -- km1.mld_kenmerk_key (+) = 101 is de omschrijving (wat is er gebeurd) van de MIPP-melding. -- ko1.mld_kenmerk_key (+) = 35 is of het een incident of bijna incident is. -- ko2.mld_kenmerk_key (+) = 38 is de risico klasse. -- Let op: kolom fclt_key (volgend op fclt_lopend) is dezelfde, alleen deze kolomnaam moet zo heten ivm usrrap vanuit cust.xsl. CREATE OR REPLACE VIEW VIAR_V_RAP_MLD_MIPP ( FCLT_F_MELDINGNR, HIDE_F_INS_DISCIPLINE_KEY, HIDE_F_FCLT_F_VAKGROEP, HIDE_F_MLD_STDMELDING_KEY, FCLT_F_MELDING, MLD_MELDING_OMSCHRIJVING, HIDE_F_MLD_MELDING_OPMERKING, FCLT_F_LOCATIE, FCLT_F_GEBOUW, FCLT_F_VERDIEPING, RUIMTE, FCLT_F_RUIMTESOORT, FCLT_F_JAAR, FCLT_F_HALFJAAR, FCLT_F_KWARTAAL, FCLT_F_MAAND, FCLT_F_INGEVOERD, HIDE_F_OPERATIONELE_EINDDATUM, HIDE_F_SLA_EINDDATUM, HIDE_F_OPERATIONEEL_TE_LAAT, HIDE_F_SLA_TE_LAAT, HIDE_F_OPERATIONEEL_DAGUURMIN, FCLT_F_LOPEND, FCLT_F_STATUS, HIDE_F_STATUS_CODE, AFMELD_DATUM, FCLT_F_AFGEMELD, AFMELD_DATUM_TIME, AFGEMELD_DOOR, INGEVOERD_DOOR, FCLT_F_SECTOR, FCLT_F_AFDELING, FCLT_F_UITVOERENDE, FCLT_F_UITV_KEY, FCLT_F_INCIDENT, FCLT_F_RISICOKLASSE, FCLT_F_BAXTER, FCLT_F_NIET_BAXTER, FCLT_F_VOORRAADMEDICATIE, FCLT_F_OVERIG ) AS SELECT TO_CHAR (m.mld_melding_key), d.ins_discipline_key, d.ins_discipline_omschrijving, std.mld_stdmelding_key, std.mld_stdmelding_omschrijving, km1.mld_kenmerkmelding_waarde AS melding_omschrijving, m.mld_melding_opmerking, alg.loc, alg.bld, alg.flr, alg.room, alg.roms, TO_CHAR (m.mld_melding_datum, 'YYYY'), TO_CHAR (DECODE (TO_CHAR (m.mld_melding_datum, 'Q'), 1, 1, 2, 1, 3, 2, 4, 2)), 'Q' || TO_CHAR (m.mld_melding_datum, 'Q'), TO_CHAR (m.mld_melding_datum, 'MM'), TO_CHAR (m.mld_melding_datum, 'YYYY-MM-DD'), m.mld_melding_einddatum, m.mld_melding_einddatum_std, CASE WHEN m.mld_melding_einddatum < COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE ) THEN 1 ELSE 0 END, CASE WHEN m.mld_melding_einddatum_std < COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE ) THEN 1 ELSE 0 END, TO_CHAR(FLOOR(COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE ) - m.mld_melding_datum)) || 'd ' || TO_CHAR(MOD ( FLOOR( (COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE ) - m.mld_melding_datum) * 24), 24 )) || 'u ' || TO_CHAR(MOD ( ROUND ( (COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE ) - m.mld_melding_datum) * 24 * 60, 0 ), 60 )) || 'm' dagenuurmin, CASE WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 'Open' ELSE 'Afgesloten' END, ms.mld_statuses_omschrijving, ms.mld_statuses_key, fac.gettrackingdate ('MLDAFM', m.mld_melding_key), COALESCE ( TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'YYYY-MM-DD'), 'Niet afgemeld' ), TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY HH24:MI'), p2.prs_perslid_naam || NVL2 (p2.prs_perslid_voorletters, ', ' || p2.prs_perslid_voorletters, '') || NVL2 (p2.prs_perslid_tussenvoegsel, ' ' || p2.prs_perslid_tussenvoegsel, '') || NVL2 (p2.prs_perslid_voornaam, ' (' || p2.prs_perslid_voornaam || ')', '') afgemeld_door, p.prs_perslid_naam || NVL2 (p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '') || NVL2 (p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '') || NVL2 (p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '') ingevoerd_door, COALESCE ( sector.prs_afdeling_naam, afd.prs_afdeling_naam || '-' || afd.prs_afdeling_omschrijving ), DECODE ( sector.prs_afdeling_naam, NULL, NULL, afd.prs_afdeling_naam || '-' || afd.prs_afdeling_omschrijving ), u.prs_perslid_naam || NVL2 (u.prs_perslid_voorletters, ', ' || u.prs_perslid_voorletters, '') || NVL2 (u.prs_perslid_tussenvoegsel, ' ' || u.prs_perslid_tussenvoegsel, '') || NVL2 (u.prs_perslid_voornaam, ' (' || u.prs_perslid_voornaam || ')', '') uitvoerende, u.prs_perslid_key, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud WHERE ud.fac_usrtab_key = 21 AND ud.fac_usrdata_key = fac.safe_to_number (ko1.mld_kenmerkopdr_waarde)) bijna_incident, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud WHERE ud.fac_usrtab_key = 24 AND ud.fac_usrdata_key = fac.safe_to_number (ko2.mld_kenmerkopdr_waarde)) risico_klasse, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkmelding km WHERE ud.fac_usrtab_key = 2 AND ud.fac_usrdata_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde) AND KM.MLD_KENMERK_KEY = 30 AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL AND KM.MLD_MELDING_KEY = m.mld_melding_key) baxter, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkmelding km WHERE ud.fac_usrtab_key = 3 AND ud.fac_usrdata_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde) AND KM.MLD_KENMERK_KEY = 31 AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL AND KM.MLD_MELDING_KEY = m.mld_melding_key) niet_baxter, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkmelding km WHERE ud.fac_usrtab_key = 4 AND ud.fac_usrdata_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde) AND KM.MLD_KENMERK_KEY = 32 AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL AND KM.MLD_MELDING_KEY = m.mld_melding_key) voorraadmedicatie, (SELECT ud.fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkmelding km WHERE ud.fac_usrtab_key = 5 AND ud.fac_usrdata_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde) AND KM.MLD_KENMERK_KEY = 33 AND KM.MLD_KENMERKMELDING_VERWIJDER IS NULL AND KM.MLD_MELDING_KEY = m.mld_melding_key) overig FROM mld_melding m, mld_statuses ms, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, mld_opdr o, prs_perslid u, mld_kenmerkmelding km1, mld_kenmerkopdr ko1, mld_kenmerkopdr ko2, prs_perslid p, prs_afdeling sector, prs_afdeling afd, prs_perslid p2, (SELECT mr.mld_melding_key, l.alg_locatie_code || '-' || l.alg_locatie_omschrijving loc, alg.alg_gebouw_naam bld, TO_CHAR (v.alg_verdieping_volgnr) flr, r.alg_ruimte_nr room, srt.alg_srtruimte_omschrijving roms FROM mld_melding mr, alg_v_allonrgoed_gegevens alg, alg_ruimte r, alg_srtruimte srt, alg_locatie l, alg_verdieping v WHERE alg.alg_type = 'R' AND alg_onroerendgoed_keys = mr.mld_alg_onroerendgoed_keys AND alg.alg_ruimte_key = r.alg_ruimte_key AND r.alg_srtruimte_key = srt.alg_srtruimte_key(+) AND l.alg_locatie_key = alg.alg_locatie_key AND alg.alg_verdieping_key = v.alg_verdieping_key UNION ALL SELECT mr.mld_melding_key, l.alg_locatie_code || '-' || l.alg_locatie_omschrijving, alg.alg_gebouw_naam, TO_CHAR (v.alg_verdieping_volgnr), NULL, NULL FROM mld_melding mr, alg_v_allonrgoed_gegevens alg, alg_locatie l, alg_verdieping v WHERE alg.alg_type != 'R' AND alg_onroerendgoed_keys = mr.mld_alg_onroerendgoed_keys AND l.alg_locatie_key = alg.alg_locatie_key AND alg.alg_verdieping_key = v.alg_verdieping_key(+) UNION ALL SELECT mr.mld_melding_key, l.alg_locatie_code || '-' || l.alg_locatie_omschrijving, NULL, NULL, NULL, NULL FROM mld_melding mr, alg_locatie l WHERE mr.mld_alg_locatie_key = l.alg_locatie_key AND mr.mld_alg_onroerendgoed_keys IS NULL) alg WHERE m.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = afd.prs_afdeling_key AND afd.prs_afdeling_parentkey = sector.prs_afdeling_key(+) AND m.mld_melding_key = alg.mld_melding_key AND fac.gettrackinguserkey ('MLDAFM', m.mld_melding_key) = p2.prs_perslid_key(+) AND ms.mld_statuses_key = mld_melding_status AND m.mld_melding_key = km1.mld_melding_key(+) AND km1.mld_kenmerk_key(+) = 101 AND m.mld_melding_key = o.mld_melding_key(+) AND o.mld_uitvoerende_keys = u.prs_perslid_key(+) AND o.mld_opdr_key = ko1.mld_opdr_key(+) AND ko1.mld_kenmerk_key(+) = 35 AND o.mld_opdr_key = ko2.mld_opdr_key(+) AND ko2.mld_kenmerk_key(+) = 38 AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key = 1 AND o.mld_typeopdr_key(+) = 41 AND COALESCE (o.mld_opdr_key, -1) = (SELECT COALESCE (MAX (mld_opdr_key), -1) FROM mld_opdr WHERE mld_melding_key = m.mld_melding_key); --------------------------- -- Incidentele Bestel Aanvragen (IBA's): -- Keuze van leverancier via view VIAR_V_IBA_LEVERANCIERS: Tbv domein 'leveranciers' bij verplichte keuze bij IBA waar leverancier moet worden gekozen. -- Keuze van BTW percentage via view VIAR_V_IBA_BTWPERC. CREATE OR REPLACE VIEW viar_v_iba_leveranciers (PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM ) AS SELECT prs_bedrijf_key, prs_bedrijf_naam FROM prs_bedrijf b WHERE B.PRS_BEDRIJF_INTERN IS NULL AND B.PRS_BEDRIJF_LEVERANCIER = 1 AND b.prs_bedrijf_verwijder IS NULL; CREATE OR REPLACE VIEW viar_v_iba_btwperc (FIN_BTWTABELWAARDE_KEY, FIN_BTWTABELWAARDE_PERC ) AS SELECT tw.fin_btwtabelwaarde_key, SUBSTR(' ' || to_char(tw.fin_btwtabelwaarde_perc) || '%', length(tw.fin_btwtabelwaarde_perc)) FROM fin_btwtabelwaarde tw, fin_btwtabel t WHERE t.fin_btwtabel_default=1 AND t.fin_btwtabel_key = tw.fin_btwtabel_key AND t.fin_btwtabel_verwijder IS NULL AND tw.fin_btwtabelwaarde_verwijder IS NULL; -- VIAR#32013: Notificatie MIPP BackOffice -- Alle leden van de MIPP commissie (personen in de autorisatiegroep MIPP Commisie met key 41) ontvangen een mailnotificatie naar de MIPP-melding (vakgroeptype key = 1) -- zodra een opdracht wordt gesloten. Dus ook al staan er nog wat opdrachten open, zodra er 1 wordt gesloten, dan een signaaltje... CREATE OR REPLACE VIEW viar_v_noti_mipp_opdr_ready (code, sender, receiver, text, key, par1, par2, xkey) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, p.prs_perslid_key, 'Opdracht MIPP' || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || ' bij MIPP melding ' || m.mld_melding_key || ' is afgemeld', m.mld_melding_key, NULL, NULL, NULL FROM fac_gebruikersgroep gg, prs_v_aanwezigperslid p, fac_groep gr, fac_groeprechten grr, mld_melding m, mld_stdmelding sm, mld_discipline d, mld_opdr o, fac_notificatie_job nj, fac_srtnotificatie sn WHERE p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = gr.fac_groep_key AND gr.FAC_GROEP_KEY = grr.fac_groep_key AND GR.FAC_GROEP_KEY = 41 AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = 1 AND o.mld_melding_key = m.mld_melding_key AND fac.gettrackingdate('ORDAFM',o.mld_opdr_key) >= nj.fac_notificatie_job_nextrun - nj.fac_notificatie_job_interval / 24 AND nj.fac_notificatie_job_view = 'VIAR_V_NOTI_MIPP_OPDR_READY' AND sn.fac_srtnotificatie_code = 'CUST01'; -- VIAR#31661 CREATE OR REPLACE VIEW VIAR_V_RES_DAGLIJST ( HIDE_F_KEY, RESNR, FCLT_F_RUIMTE, FCLT_F_DATUM, VAN, TOT, ACTIVITEIT, OMSCHRIJVING, GASTHEER_VROUW, AANTAL_PERS, OPSTELLING, VOORZIENING ) AS SELECT rrr.res_rsv_ruimte_key, rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr Resnr, r2a.ruimte_nr, TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') Datum, TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24.MI') Van, TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24.MI') Tot, ra.res_activiteit_omschrijving Activiteit, rrr.res_rsv_ruimte_omschrijving Omschrijving, pf.prs_perslid_naam_full Gastheer_vrouw, rrr.res_rsv_ruimte_bezoekers pers, r2a.opstelling, voorzieningen FROM res_v_aanwezigrsv_ruimte rrr, alg_gebouw g, alg_verdieping v, alg_ruimte r, res_activiteit ra, prs_v_perslid_fullnames pf, ( SELECT res_rsv_ruimte_key, LISTAGG (voorziening, CHR (13) || CHR (10)) WITHIN GROUP (ORDER BY voorziening) AS Voorzieningen FROM (SELECT res_rsv_ruimte_key, res_deel_omschrijving voorziening FROM res_deel rd, res_rsv_deel rrd WHERE RES_RSV_DEEL_verwijder IS NULL AND rd.res_deel_key = rrd.res_deel_key UNION ALL SELECT res_rsv_ruimte_key, rra.res_rsv_artikel_aantal || ' * ' || res_artikel_omschrijving voorziening FROM res_artikel ra, res_rsv_artikel rra WHERE RES_RSV_artikel_verwijder IS NULL AND ra.res_artikel_key = rra.res_artikel_key) GROUP BY res_rsv_ruimte_key) voorz, ( SELECT res_ruimte_opstel_key, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY res_ruimte_opstel_key) r2a WHERE rrr.res_ruimte_opstel_key = r2a.res_ruimte_opstel_key AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 4) AND r.alg_ruimte_key = r2a.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND ra.res_activiteit_key = rrr.res_activiteit_key AND pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key AND voorz.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key; BEGIN adm.systrackscriptId('$Id$', 0); END; / BEGIN fac.registercustversion('VIAR', 8); END; / commit; spool off