-- -- $Id$ -- -- Script containing customer specific db-configuration for HMOD. DEFINE thisfile = 'HMOD.SQL' DEFINE dbuser = '^HMOD' 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 ------ -------------------------------------------------- --- HIERONDER NIEUWE AFAS IMPORT (2025-JULI) ---- -------------------------------------------------- CREATE OR REPLACE PROCEDURE hmod_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; v_seq_of_columns VARCHAR (255); v_seq_of_header VARCHAR (1000); -- overige variabelen v_prs_afdeling_key NUMBER (10); c_prs_bedrijf_key_hmod NUMBER (10) := 41; v_prs_perslid_rol_key NUMBER (10); CURSOR c_afd IS SELECT fac_imp_file_index, prs_afdeling_naam, -- Afdelingscode prs_kenmerk5 -- Afdeling omschrijving FROM fac_imp_perslid WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; CURSOR c_afd_log IS SELECT prs_kenmerk20 -- Nieuwe afdeling aanmaken - vullen we in dit kenmerk20 FROM fac_imp_perslid WHERE fac_import_key = p_import_key AND prs_kenmerk20 IS NOT NULL GROUP BY prs_kenmerk20; -- Op basis van de functie gaan we de facilitor-rol bepalen ---- via deze rol gaan tijdens verwerkingsactie mensen juiste rechten geven CURSOR c_rol IS SELECT fac_imp_file_index, prs_kenmerk6, prs_kenmerk7 FROM fac_imp_perslid WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index ; 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'; -- Import AFAS_ONLINE -- csv formaat via stylesheet afas2fclt.xsl bepaald v_seq_of_header := 'Personeelsnummer;Roepnaam;Voorletters;Voorvoegsel;Achternaam;Geslacht;Zakelijk mailadres;Dienstverb.;Begindatum functieregel;Einddatum functieregel;Afdelingscode;Afdeling omschrijving;Functiecode;Functieomschrijving;Formatieplaatscode;Formatieplaats omschrijving;Uren/wk;Leidinggevende persnr.;Naam Leidinggevende;Kofferletter;Datum in dienst;Datum uit dienst'; -- 1. Personeelsnummer -- 2. Roepnaam -- 3. Voorletters -- 4. Voorvoegsel -- 5. Achternaam -- 6. Geslacht -- 7. Zakelijk mailadres -- 8. Dienstverb. -- 9. Begindatum functieregel -- 10. Einddatum functieregel -- 11. Afdelingscode -- 12. Afdeling omschrijving -- 13. Functiecode -- 14. Functieomschrijving -- 15. Formatieplaatscode -- 16. Formatieplaats omschrijving -- 17. Uren/wk -- 18. Leidinggevende persnr. -- 19. Naam Leidinggevende -- 20. Kofferletter -- 21. Datum in dienst -- 22. Datum uit dienst -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure v_seq_of_columns := '0;0;0;0;0;0;11;5;4;2;' -- v_alg_locatie_code 1 -- v_alg_gebouw_code 2 -- v_alg_verdieping_volgnr 3 -- v_alg_ruimte_nr 4 -- v_prs_werkplek_volgnr 5 -- v_prs_werkplek_omschrijving 6 -- v_prs_afdeling_naam 7 -- VERPLICHT BIJ IMPORT -- v_prs_perslid_naam 8 -- VERPLICHT BIJ IMPORT -- v_prs_perslid_tussenvoegsel 9 -- v_prs_perslid_voornaam 10 || '3;0;0;0;6;0;0;7;0;1;' -- v_prs_perslid_voorletters 11 -- v_prs_perslid_partner_naam 12 -- v_prs_perslid_partner_tussenv 13 -- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt -- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken -- 2 personen die de geboortenaam van de partner willen gebruiken -- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken -- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default -- v_prs_perslid_telefoonnr 16 -- v_prs_perslid_mobiel 17 -- v_prs_perslid_email 18 -- v_prs_perslid_dienstverband 19 -- v_prs_perslid_nr 20 || '14;0;0;0;0;0;8;9;10;11;' -- v_prs_srtperslid_omschrijving 21 -- VERPLICHT BIJ IMPORT -- v_prs_perslid_oslogin 22 -- v_prs_perslid_wachtwoord 23 -- v_prs_perslid_titel 24 -- v_prs_perslid_apikey 25 -- v_dummy 26 -- v_prs_kenmerk1 27 -- v_prs_kenmerk2 28 -- v_prs_kenmerk3 29 -- v_prs_kenmerk4 30 || '12;13;14;15;16;17;18;19;20;21;' -- v_prs_kenmerk5 31 -- .t/m kenmerk14 40 || '22;0;0;0;0;0'; -- v_prs_kenmerk15 41 -- ..t/m kenmerk20 46 v_errorhint := 'Generieke update'; -- csv verwerken naar de fac_imp_perslid-tabel prs.import_perslid(p_import_key, v_seq_of_columns, v_seq_of_header); 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 prs_perslid_email IS NOT NULL ; v_errorhint := 'Uitfilteren records'; -- in afasonline-bestand zitten wellicht aantal zaken die niet mee hoeven naar Facilitor -- moeten we uit afasbestand nog medewerkers verwijderen voordat we vervolg import/update-acties gaan doen? Vooralsnog niet... NULL; v_errorhint := 'Bewerken records'; -- in afasonline-bestand zitten wellicht aantal zaken die we voor import naar Facilitor willen bewerken -- Functie in Facilitor moet worden: functiecode - functieomschrijving UPDATE fac_imp_perslid SET prs_srtperslid_omschrijving = prs_kenmerk6 || ' - ' || prs_kenmerk7 ; -- Afdeling bepalen waar persoon onder komt te vallen. ---- Deze wordt voor HUMOD direct uit AFAS gevuld. ---- In Facilitor kiezen we er voor dat alle afdelingen op niveau 1 aangemaakt worden onder bedrijf_key c_prs_bedrijf_key_hmod ---- Indien afdeling niet gevonden dan gaan we deze aanmaken onder bedrijf Humanitas Onder Dak FOR rec IN c_afd LOOP BEGIN v_errorhint := 'Afdeling van Persoon - bestaand of nieuw?'; -- Afdeling op niveau 1 zoeken SELECT MIN (a.prs_afdeling_key) INTO v_prs_afdeling_key FROM prs_v_afdeling a WHERE a.prs_afdeling_upper = UPPER (rec.prs_afdeling_naam) AND a.prs_afdeling_verwijder IS NULL AND a.niveau = 1 -- kijken alleen naar afdelingen op niveau 1 AND a.prs_bedrijf_key = c_prs_bedrijf_key_hmod ; -- Als afdeling uit AFAS NIET bekend is in Facilitor dan maken we deze straks bij uitvoer/update aan - Bij deze import alvast de info-logging doen IF v_prs_afdeling_key IS NULL THEN UPDATE fac_imp_perslid SET prs_kenmerk20 = 'Nieuwe afdeling - ' || rec.prs_afdeling_naam WHERE fac_imp_file_index = rec.fac_imp_file_index ; END IF; END; END LOOP; FOR rec IN c_afd_log LOOP BEGIN v_errorhint := 'Nieuwe afdelingen aanmaken - ter info'; fac.imp_writelog (p_import_key, 'I', rec.prs_kenmerk20, v_errorhint); END; END LOOP; FOR rec IN c_rol LOOP BEGIN v_errorhint := 'Facilitor-rollen bepalen- ter info'; -- Op zoek naar de Facilitor-rol voor deze medewerkers op basis van functie_code en functie_omschrijving -- Onderhouden in eigentabellen functie_rol1 en functie_rol2 (key 901 en key 903) SELECT MAX((SELECT rol.fac_usrdata_code FROM fac_usrdata rol WHERE rol.fac_usrdata_key = ud.fac_usrdata_parentkey AND rol.fac_usrtab_key = 901)) facilitor_rol INTO v_prs_perslid_rol_key FROM fac_usrtab ut, fac_usrdata ud WHERE ut.fac_usrtab_key = ud.fac_usrtab_key AND ut.fac_usrtab_key = 903 AND ud.fac_usrdata_verwijder IS NULL AND UPPER(ud.fac_usrdata_code) = UPPER(rec.prs_kenmerk6) -- functiecode AND UPPER(ud.fac_usrdata_omschr) = UPPER(rec.prs_kenmerk7) -- functieomschrijving ; IF v_prs_perslid_rol_key IS NOT NULL THEN UPDATE fac_imp_perslid SET prs_kenmerk19 = v_prs_perslid_rol_key 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 hmod_import_afasonline; / CREATE OR REPLACE PROCEDURE hmod_update_afasonline (p_import_key IN NUMBER) IS -- AFAS in sync met Facilitor bedrijf c_prs_bedrijf_key_hmod --- Alle personen verwijderen die niet meer in het import bestand voorkomen. --- Match bij HUMOD loopt via Personeelsnummer -- Afdeling AFAS leading --- Op niveau 1 gaan we de afdeling van HMOD aanmaken. --- Indien onbekende afdelingscode dan gaan we die eerst aanmaken (in immport-deel vullen we daarvoor alvast prs_kenmerk20) -- Leidinggevende - verantwoordelijke --- In de personenkaart van Facilitor wordt officiele leidinggevende uit afas gevuld --- En op basis functie een automatische toewijzing aan juiste autorisatiegroepen van managers en teamleiders -- Facilitor-rollen bepalen en op basis van deze rollen autorisaties uitreiken --- Op basis functie/code zijn er 3 rollen te onderscheiden voor hmod in Facilitor: Teamleider locatie, Regiomanager, Manager algemeen --- -- HR-mutaties in Facilitor --- Bij mutaties in AFAS moeten in Facilitor voor desbetreffende persoon ook zaken geregeld worden. Hiervoor zetten we kenmerk/trigger 'mutatie-hr' --- Betreft 4 wijzigingen: Nieuwe medewerker EN Gewijzigde formatieplaats op bestaande medewerker EN medewerker uit dienst EN mutatie nevenfuncties ----- Ps. laatste NOG INPASSEN - AANLEVEREN UIT AFAS --- Werkwijze: Via een cockpit-rapportage zijn deze in beeld en zal BedrijfsBureau de juiste HR-workflow/melding opstarten om de acties voor IT, Applicatiebeheer en Facilitair uitgevoerd te krijgen. ----- Ps. Cockpit-rapport dus tevens bewakingsrapport dat zaken tijdig geregeld worden. --- Voor de mutatie 'verwijderde en/of inactieve medewerkers': ----- Werkwijze voortel: Daar voor elk medewerker een KOFFER-OBJECT koppelen zodat de medewerker bij verwijderactie uit AFAS-koppeling altijd op INACTIEF komt v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); -- overige variabelen v_fac_gebruikersgroep_key NUMBER(10); v_prs_perslid_key_verantw NUMBER(10); v_prs_afdeling_key NUMBER (10); c_prs_bedrijf_key_hmod NUMBER (10) := 41; c_rol_key_teamleider NUMBER (10) := 1280; c_rol_key_regiomanager NUMBER (10) := 1740; c_rol_key_manager NUMBER (10) := 1320; v_prs_mutatie_hr VARCHAR2 (1000); v_import_datum VARCHAR2 (30) := TO_CHAR(SYSDATE) ; v_datum_vandaag DATE := TRUNC(SYSDATE) ; CURSOR c_afd IS SELECT i.prs_kenmerk20, i.prs_kenmerk4, i.prs_kenmerk5 FROM fac_imp_perslid i WHERE i.prs_kenmerk20 IS NOT NULL GROUP BY i.prs_kenmerk20, i.prs_kenmerk4, i.prs_kenmerk5 ; 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, a.prs_afdeling_omschrijving, b.prs_bedrijf_naam FROM prs_perslid p, fac_imp_perslid i, prs_srtperslid sp, 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_key = c_prs_bedrijf_key_hmod AND p.prs_srtperslid_key = sp.prs_srtperslid_key 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 AND p.prs_perslid_nr IS NOT NULL AND UPPER (p.prs_perslid_email) LIKE '%HUMOD.NL' ORDER BY 1 ; -- HR-koffersysteem mutatie op functie en/of afdeling (= formatieplaats-wijziging) CURSOR c_mut IS SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving, a.prs_afdeling_omschrijving, flx.getflex('PRS', 1606, p.prs_perslid_key, 'P') formatieplaats_huidig, i.prs_kenmerk8 formatieplaats_import, TO_DATE(flx.getflex('PRS', 1800, p.prs_perslid_key, 'P'), 'yyyy-mm-dd') datum_uit_dienst, TO_DATE(i.prs_kenmerk15, 'yyyy-mm-dd') datum_uit_dienst_import FROM prs_perslid p, fac_imp_perslid i, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_perslid_key = i.prs_perslid_key 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_key = c_prs_bedrijf_key_hmod AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND p.prs_perslid_nr IS NOT NULL AND UPPER (p.prs_perslid_email) LIKE '%HUMOD.NL' ORDER BY 1 ; CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers in blok AFAS_ONLINE op personenkaart IS SELECT p.prs_perslid_key, i.prs_perslid_nr, i.prs_perslid_naam, i.prs_perslid_email, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12, i.prs_kenmerk13, i.prs_kenmerk14, i.prs_kenmerk15 FROM prs_v_aanwezigperslid p, fac_imp_perslid i WHERE p.prs_perslid_key = i.prs_perslid_key ORDER BY 1; CURSOR c_verantw IS SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_nr, p.prs_perslid_oslogin, CASE WHEN p.prs_perslid_key_verantw IS NOT NULL THEN (SELECT prs_perslid_nr FROM prs_perslid WHERE prs_perslid_key = p.prs_perslid_key_verantw) ELSE NULL END prs_perslid_verantw_nr, p.prs_perslid_verantw_nr_afas FROM fac_imp_perslid i, (SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_nr, p.prs_perslid_oslogin, p.prs_perslid_key_verantw, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_kenmerk_key = 1643 AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key) prs_perslid_verantw_nr_afas FROM prs_perslid p) p WHERE p.prs_perslid_key = i.prs_perslid_key ORDER BY 1 ; -- cursor ROLLEN inlezen in de rol-kenmerkvelden op personenkaart ----- en Autorisatie goed inregelen per rol --- DIT NOG APART GOED INREGELEN CURSOR c_rol IS SELECT p.prs_perslid_key, i.prs_kenmerk19, -- rol_key uit afas en eigen-tabel met de facilitor-rollen die bij functie_code en functie_omschrijving horen (tabel key 901 en key 903) p.prs_perslid_teamleider, p.prs_perslid_regiomanager, p.prs_perslid_manager_algemeen FROM fac_imp_perslid i, (SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_nr, p.prs_perslid_oslogin, p.prs_perslid_key_verantw, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_kenmerk_key = c_rol_key_teamleider AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key) prs_perslid_teamleider, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_kenmerk_key = c_rol_key_regiomanager AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key) prs_perslid_regiomanager, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_kenmerk_key = c_rol_key_manager AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key) prs_perslid_manager_algemeen FROM prs_perslid p) p WHERE p.prs_perslid_key = i.prs_perslid_key ORDER BY 1 ; BEGIN v_errormsg := 'Update afasonline'; v_errorhint := 'Niet genoeg personen in bestand, import afgebroken'; SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; IF v_count >= 100 THEN -- Geldig importbestand wat betreft aantal personen -- Gaan we eerst de afdelingsstructuur bijwerken FOR rec IN c_afd LOOP BEGIN v_errorhint:='Fout aanvullen afdelingstructuur: ' || rec.prs_kenmerk4 || ' - ' || rec.prs_kenmerk5 ; INSERT INTO prs_afdeling ( prs_bedrijf_key, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_key, prs_perslid_key_verantw, mld_adres_key) VALUES ( c_prs_bedrijf_key_hmod, rec.prs_kenmerk4, rec.prs_kenmerk5, NULL, NULL, NULL) ; END; END LOOP; -- En dan kunnen we de generieke import draaien v_errorhint := 'Verwerken persoonsgegevens'; 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); -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN v_errorhint := 'Verwijderen persoonsgegevens'; prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; FOR rec IN c_mut LOOP BEGIN v_errorhint := 'Triggers HR-mutatie zetten'; v_prs_mutatie_hr := '' ; -- Bestaande medewerker met wijzigende formatieplaats IF rec.formatieplaats_huidig IS NOT NULL AND rec.formatieplaats_huidig <> rec.formatieplaats_import THEN v_prs_mutatie_hr := 'Formatieplaats gewijzigd van ' || rec.formatieplaats_huidig || ' naar ' || rec.formatieplaats_import || ' (datum afasimport ' || v_import_datum || ')' ; -- kenmerk aanpassen PRS.upsertkenmerk (1760, rec.prs_perslid_key, v_prs_mutatie_hr); -- fac_tracking op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'MDW_FORMATIEPLAATS_GEWIJZIGD'); END; END IF; -- Nieuwe medewerker in dienst IF rec.formatieplaats_huidig IS NULL THEN v_prs_mutatie_hr := 'Nieuwe medewerker in dienst met formatieplaats ' || rec.formatieplaats_import || ' (datum afasimport ' || v_import_datum || ')' ; -- kenmerk aanpassen PRS.upsertkenmerk (1760, rec.prs_perslid_key, v_prs_mutatie_hr); -- fac_tracking op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'MDW_IN_DIENST'); END; END IF; -- Medewerker uit dienst IF rec.datum_uit_dienst_import IS NOT NULL AND rec.datum_uit_dienst_import <> COALESCE(rec.datum_uit_dienst, v_datum_vandaag) AND rec.datum_uit_dienst_import > v_datum_vandaag THEN v_prs_mutatie_hr := 'Medewerker uit dienst met formatieplaats ' || rec.formatieplaats_import || ' (datum afasimport ' || v_import_datum || ')' ; -- kenmerk aanpassen PRS.upsertkenmerk (1760, rec.prs_perslid_key, v_prs_mutatie_hr); -- fac_tracking op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'MDW_UIT_DIENST'); END; END IF; END; END LOOP; -- Op de personenkaart de actuele humod-mederwerkers de afas-velden uit de koppeling vullen - ter informatie FOR rec IN c_flex LOOP BEGIN -- standaardvelden: v_errorhint:='Fout bijwerken - Naam'; PRS.upsertkenmerk (1602, rec.prs_perslid_key, rec.prs_perslid_naam); v_errorhint:='Fout bijwerken - Personeelsnummer'; PRS.upsertkenmerk (1604, rec.prs_perslid_key, rec.prs_perslid_nr); v_errorhint:='Fout bijwerken - Zakelijk emailadres'; PRS.upsertkenmerk (1605, rec.prs_perslid_key, rec.prs_perslid_email); -- overige uit de import-kenmerkvelden: v_errorhint:='Fout bijwerken kenmerkveld1 - Dienstverb.'; PRS.upsertkenmerk (1660, rec.prs_perslid_key, rec.prs_kenmerk1); v_errorhint:='Fout bijwerken kenmerkveld2 - Begindatum functieregel'; PRS.upsertkenmerk (1644, rec.prs_perslid_key, rec.prs_kenmerk2); v_errorhint:='Fout bijwerken kenmerkveld3 - Einddatum functieregel'; PRS.upsertkenmerk (1645, rec.prs_perslid_key, rec.prs_kenmerk3); v_errorhint:='Fout bijwerken kenmerkveld4 - Afdelingscode'; PRS.upsertkenmerk (1608, rec.prs_perslid_key, rec.prs_kenmerk4); v_errorhint:='Fout bijwerken kenmerkveld5 - Afdeling omschrijving'; PRS.upsertkenmerk (1609, rec.prs_perslid_key, rec.prs_kenmerk5); v_errorhint:='Fout bijwerken kenmerkveld6 - Functiecode'; PRS.upsertkenmerk (1610, rec.prs_perslid_key, rec.prs_kenmerk6); v_errorhint:='Fout bijwerken kenmerkveld7 - Functieomschrijving'; PRS.upsertkenmerk (1611, rec.prs_perslid_key, rec.prs_kenmerk7); v_errorhint:='Fout bijwerken kenmerkveld8 - Formatieplaatscode'; PRS.upsertkenmerk (1606, rec.prs_perslid_key, rec.prs_kenmerk8); v_errorhint:='Fout bijwerken kenmerkveld9 - Formatieplaats omschrijving'; PRS.upsertkenmerk (1607, rec.prs_perslid_key, rec.prs_kenmerk9); v_errorhint:='Fout bijwerken kenmerkveld10 - Uren/wk'; PRS.upsertkenmerk (1640, rec.prs_perslid_key, rec.prs_kenmerk10); v_errorhint:='Fout bijwerken kenmerkveld11 - Leidinggevende persnr'; PRS.upsertkenmerk (1643, rec.prs_perslid_key, rec.prs_kenmerk11); v_errorhint:='Fout bijwerken kenmerkveld12 - Naam Leidinggevende'; PRS.upsertkenmerk (1642, rec.prs_perslid_key, rec.prs_kenmerk12); v_errorhint:='Fout bijwerken kenmerkveld13 - Kofferletter'; PRS.upsertkenmerk (1641, rec.prs_perslid_key, rec.prs_kenmerk13); v_errorhint:='Fout bijwerken kenmerkveld14 - Datum in Dienst'; PRS.upsertkenmerk (1780, rec.prs_perslid_key, rec.prs_kenmerk14); v_errorhint:='Fout bijwerken kenmerkveld14 - Datum uit Dienst'; PRS.upsertkenmerk (1800, rec.prs_perslid_key, rec.prs_kenmerk15); END; END LOOP; -- En de verantwoordelijk manager updaten in de personenkaart indien nodig FOR rec IN c_verantw LOOP BEGIN v_errorhint:='Fout bijwerken verantwoordelijke'; -- als de aangeboden waarde uit afas anders is dan de huidige verantwoordelijke in de personenkaart dan gaan we personenkaart updaten IF COALESCE(rec.prs_perslid_verantw_nr_afas, '') <> COALESCE(rec.prs_perslid_verantw_nr, '') THEN -- geen gevonden facilitor-manager dan gevulde verantwoordelijke verwijderen IF rec.prs_perslid_verantw_nr_afas IS NULL THEN UPDATE prs_perslid SET prs_perslid_key_verantw = '' WHERE prs_perslid_key = rec.prs_perslid_key ; END IF; -- wel gevonden facilitor-manager dan bijbehorende verantwoordelijke_key in personenkaart vullen IF rec.prs_perslid_verantw_nr_afas IS NOT NULL THEN SELECT MIN(prs_perslid_key) INTO v_prs_perslid_key_verantw FROM prs_perslid WHERE prs_perslid_nr = rec.prs_perslid_verantw_nr_afas ; IF v_prs_perslid_key_verantw IS NOT NULL THEN UPDATE prs_perslid SET prs_perslid_key_verantw = v_prs_perslid_key_verantw WHERE prs_perslid_key = rec.prs_perslid_key ; ELSE UPDATE prs_perslid SET prs_perslid_key_verantw = '' WHERE prs_perslid_key = rec.prs_perslid_key ; END IF; END IF; END IF; END; END LOOP; FOR rec IN c_rol LOOP BEGIN v_errorhint:='Fout bijwerken facilitor-rollen'; -- 1. als prs_kenmerk19 leeg is dan ook alle vinkjes leegmaken... IF rec.prs_kenmerk19 IS NULL AND (rec.prs_perslid_teamleider IS NOT NULL OR rec.prs_perslid_regiomanager IS NOT NULL OR rec.prs_perslid_manager_algemeen IS NOT NULL) THEN IF rec.prs_perslid_teamleider IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_teamleider AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Teamleider: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; IF rec.prs_perslid_regiomanager IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_regiomanager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Regiomanager: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; IF rec.prs_perslid_manager_algemeen IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_manager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Manager algemeen: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; END IF; -- 2. als prs_kenmerk19 gevuld is dan checken of juiste rol-vinkje gezet is, zo niet, doen.. -- 2.1. voor c_rol_key_teamleider IF rec.prs_kenmerk19 IS NOT NULL AND fac.safe_to_number(rec.prs_kenmerk19) = c_rol_key_teamleider THEN -- toevoegen IF rec.prs_perslid_teamleider IS NULL THEN INSERT INTO prs_kenmerklink(prs_link_key,prs_kenmerk_key,prs_kenmerklink_waarde,prs_kenmerklink_niveau) VALUES (rec.prs_perslid_key, c_rol_key_teamleider, '1', 'P') ; BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Teamleider: (leeg) --> 1 (vanuit AFAS_koppeling)'); END; END IF; -- en de andere rollen deleten als ze nog aangevinkt zijn (kan maar 1 rol krijgen) IF rec.prs_perslid_regiomanager IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_regiomanager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Regiomanager: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; IF rec.prs_perslid_manager_algemeen IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_manager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Manager algemeen: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; END IF; -- 2.2. c_rol_key_regiomanager IF rec.prs_kenmerk19 IS NOT NULL AND fac.safe_to_number(rec.prs_kenmerk19) = c_rol_key_regiomanager THEN -- toevoegen IF rec.prs_perslid_regiomanager IS NULL THEN INSERT INTO prs_kenmerklink(prs_link_key,prs_kenmerk_key,prs_kenmerklink_waarde,prs_kenmerklink_niveau) VALUES (rec.prs_perslid_key, c_rol_key_regiomanager, '1', 'P') ; BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Regiomanager: (leeg) --> 1 (vanuit AFAS_koppeling)'); END; END IF; -- en de andere rollen deleten als ze nog aangevinkt zijn (kan maar 1 rol krijgen) IF rec.prs_perslid_teamleider IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_teamleider AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Teamleider: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; IF rec.prs_perslid_manager_algemeen IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_manager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Manager algemeen: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; END IF; -- 2.3. c_rol_key_manager IF rec.prs_kenmerk19 IS NOT NULL AND fac.safe_to_number(rec.prs_kenmerk19) = c_rol_key_manager THEN -- toevoegen IF rec.prs_perslid_manager_algemeen IS NULL THEN INSERT INTO prs_kenmerklink(prs_link_key,prs_kenmerk_key,prs_kenmerklink_waarde,prs_kenmerklink_niveau) VALUES (rec.prs_perslid_key, c_rol_key_manager, '1', 'P') ; BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Manager algemeen: (leeg) --> 1 (vanuit AFAS_koppeling)'); END; END IF; -- en de andere rollen deleten als ze nog aangevinkt zijn (kan maar 1 rol krijgen) IF rec.prs_perslid_teamleider IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_teamleider AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Teamleider: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; IF rec.prs_perslid_manager_algemeen IS NOT NULL THEN DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = c_rol_key_manager AND prs_kenmerklink_VERWIJDER IS NULL ; -- tracking doen op personenkaart BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Manager algemeen: 1 --> (gewist vanuit AFAS_koppeling)'); END; END IF; END IF; END; END LOOP; /* FOR rec IN c_aut 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; */ 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 hmod_update_afasonline; / --------------------------------------------------------------------------- --- HIERONDER OUDE IMPORT ADP en KOFFERSYSTEEM NOG HELEMAAL OPSCHONEN! ---- --------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE hmod_import_koffer (p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count NUMBER; v_ongeldig NUMBER (1); v_mode NUMBER (1); v_aanduiding VARCHAR2 (200); -- v_all_null BOOLEAN; v_count_error NUMBER (10); v_count_tot NUMBER (10); v_count_import NUMBER (10); -- De importvelden: v_versiedatum VARCHAR2 (15); v_afdeling VARCHAR2 (250); v_functie VARCHAR2 (250); v_code VARCHAR2 (30); v_token VARCHAR2 (20); v_mob VARCHAR2 (20); v_hit VARCHAR2 (20); v_lap_en_sim VARCHAR2 (20); v_lapt VARCHAR2 (20); v_tnc VARCHAR2 (20); v_tnc_omschrijving VARCHAR2 (100); v_facilitor VARCHAR2 (20); v_adp VARCHAR2 (20); v_absentiemanager VARCHAR2 (20); v_regas VARCHAR2 (20); v_checks VARCHAR2 (20); v_accountview VARCHAR2 (20); v_elvy VARCHAR2 (20); v_hodnet VARCHAR2 (20); v_proactive VARCHAR2 (20); v_opmerking VARCHAR2 (1000); v_volgnr NUMBER (10); v_lettercode VARCHAR2 (30); CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Vorige inlees eerst verwijderen ---- Voor hmod_koffersysteem geldt dat je inlezen op dezelfde dag mag/kunt overschrijven. Voorgaande versiedatums blijven staan. DELETE FROM hmod_imp_koffersysteem WHERE versiedatum = TO_CHAR(TRUNC (SYSDATE),'DD-MM-YYYY'); COMMIT; header_is_valid := 0; v_ongeldig := 0; v_count_error := 0; header_is_valid := 0; v_count_tot := 0; v_count_import := 0; FOR rec IN c LOOP BEGIN v_newline := rec.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; -- Lees alle veldwaarden: afdeling;functie;code;token;mob;hit;lap_en_sim;lapt;tnc;tnc omschrijving;facilitor;adp;absentiemanager;regas;checks;accountview;elvy;hodnet;proactive;opmerking v_errormsg := 'Fout opvragen te importeren kolom/rij 1'; v_errormsg := 'Fout opvragen te importeren kolom/rij 2'; fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling); fac.imp_getfield (v_newline, c_fielddelimitor, v_functie); fac.imp_getfield (v_newline, c_fielddelimitor, v_code); fac.imp_getfield (v_newline, c_fielddelimitor, v_lettercode); fac.imp_getfield (v_newline, c_fielddelimitor, v_token); fac.imp_getfield (v_newline, c_fielddelimitor, v_mob); fac.imp_getfield (v_newline, c_fielddelimitor, v_hit); fac.imp_getfield (v_newline, c_fielddelimitor, v_lap_en_sim); fac.imp_getfield (v_newline, c_fielddelimitor, v_lapt); fac.imp_getfield (v_newline, c_fielddelimitor, v_tnc); fac.imp_getfield (v_newline, c_fielddelimitor, v_tnc_omschrijving); fac.imp_getfield (v_newline, c_fielddelimitor, v_facilitor); fac.imp_getfield (v_newline, c_fielddelimitor, v_adp); fac.imp_getfield (v_newline, c_fielddelimitor, v_absentiemanager); fac.imp_getfield (v_newline, c_fielddelimitor, v_regas); fac.imp_getfield (v_newline, c_fielddelimitor, v_checks); fac.imp_getfield (v_newline, c_fielddelimitor, v_accountview); fac.imp_getfield (v_newline, c_fielddelimitor, v_elvy); fac.imp_getfield (v_newline, c_fielddelimitor, v_hodnet); fac.imp_getfield (v_newline, c_fielddelimitor, v_proactive); fac.imp_getfield (v_newline, c_fielddelimitor, v_opmerking); v_aanduiding := v_versiedatum || '|' || v_afdeling || '-' || v_functie || '|' || v_code; v_count_tot := v_count_tot + 1; -- Skip until the header is found IF header_is_valid = 0 THEN IF v_afdeling = 'afdeling' AND v_functie = 'functie' AND v_code = 'code' AND v_lettercode = 'lettercode' AND v_token = 'token' AND v_mob = 'mob' AND v_hit = 'hit' AND v_lap_en_sim = 'lap_en_sim' AND v_lapt = 'lapt' AND v_tnc = 'tnc' AND v_tnc_omschrijving = 'tnc omschrijving' AND v_facilitor = 'facilitor' AND v_adp = 'adp' AND v_absentiemanager = 'absentiemanager' AND v_regas = 'regas' AND v_checks = 'checks' AND v_accountview = 'accountview' AND v_elvy = 'elvy' AND v_hodnet = 'hodnet' AND v_proactive = 'proactive' AND v_opmerking = 'opmerking' THEN header_is_valid := 1; END IF; ELSE -- Header OK. Vanaf hier in de LOOP eventueel variabele vullen. BEGIN v_errormsg := 'Versiedatum wordt sysdatum '; SELECT TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY') INTO v_versiedatum FROM DUAL; -- volgnr vullen - dit numerieke veld gebruiken we voor kenmerkdomein-key.. ---- dit zou ik ook kunnen vullen buiten de LOOP, toch? SELECT COALESCE (MAX (volgnr), 0) INTO v_volgnr FROM hmod_imp_koffersysteem; v_volgnr := v_volgnr + 1 ; END; INSERT INTO hmod_imp_koffersysteem (versiedatum, afdeling, functie, code, lettercode, token, mob, hit, lap_en_sim, lapt, tnc, tnc_omschrijving, facilitor, adp, absentiemanager, regas, checks, accountview, elvy, hodnet, proactive, volgnr, opmerking) VALUES (v_versiedatum, v_afdeling, v_functie, v_code, v_lettercode, v_token, v_mob, v_hit, v_lap_en_sim, v_lapt, v_tnc, v_tnc_omschrijving, v_facilitor, v_adp, v_absentiemanager, v_regas, v_checks, v_accountview, v_elvy, v_hodnet, v_proactive, v_volgnr, v_opmerking); 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 -- Afsluiting: Rollback/Delete tabel als er fouten in csv zitten. Initieel voor import koffersysteem nog zonder foutcheck opgezet, dus ook geen v_ongeldig aan het vullen... IF v_ongeldig > 0 THEN ROLLBACK; -- Met rollback haalt hij ook al mijn errors en waarschuwingen weg!?? Daarom een DELETE -- delete from hmod_imp_contractscope where TRUNC (SYSDATE)) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = v.prs_afdeling_key AND v.prs_bedrijf_key = 41 -- Personen binnen bedrijf Humanitas onder Dak AND p.prs_perslid_key NOT IN (721) -- M.u.v. perslid voor met nr '999001' (bestemd voor objecten nog uit te lenen...) UNION ALL SELECT p.prs_perslid_key, prs_perslid_naam || ' (' || prs_perslid_voornaam || ')' AS Naam_werknemer, sd.ins_srtdeel_omschrijving, sd.ins_srtdeel_key, dd.ins_deel_upper, d.ins_deel_key Key1, d.ins_deel_aanmaak, dd.ins_deel_key Key2, p.prs_perslid_telefoonnr, p.prs_perslid_mobiel FROM prs_perslid p, ins_deel d, ins_srtdeel sd, prs_v_aanwezigafdeling v, ins_kenmerkdeel kd, ins_deel dd WHERE p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_srtdeel_key = 69 -- Mobieltelefoon AND d.ins_alg_ruimte_type = 'P' AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 AND ( d.ins_deel_vervaldatum IS NULL OR TRUNC (d.ins_deel_vervaldatum) > TRUNC (SYSDATE)) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND p.prs_perslid_verwijder IS NULL AND p.prs_afdeling_key = v.prs_afdeling_key AND v.prs_bedrijf_key = 41 -- afdeling binnen bedrijf Humanitas.. AND p.prs_perslid_key NOT IN (721) -- perslid voor met nr '999001' voor objecten nog uit te lenen... AND d.ins_deel_key = kd.ins_deel_key AND kd.ins_kenmerk_key = 152 AND kd.ins_kenmerkdeel_verwijder IS NULL AND fac.safe_to_number (kd.ins_kenmerkdeel_waarde) = dd.ins_deel_key AND dd.ins_srtdeel_key = 341 -- SIM-kaarten en nummers AND dd.ins_deel_verwijder IS NULL AND dd.ins_deel_actief = 1 AND ( dd.ins_deel_vervaldatum IS NULL OR TRUNC (dd.ins_deel_vervaldatum) > TRUNC (SYSDATE)) ; CREATE OR REPLACE PROCEDURE hmod_prs_telefoonnummers ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR c_vast IS SELECT PRS_PERSLID_KEY, PRS_NAAM, SOORT, SOORT_KEY, NUMMER_OBJECT, INS_DEEL_KEY, INS_DEEL_AANMAAK, INS_DEEL_KEY2, VASTNR_HUIDIG, MOBIELNR_HUIDIG FROM HMOD_V_TELEFOONNR_KLANTOBJECT WHERE SOORT_KEY = 70 AND (VASTNR_HUIDIG<>NUMMER_OBJECT OR VASTNR_HUIDIG is null) ; CURSOR c_mob IS SELECT PRS_PERSLID_KEY, PRS_NAAM, SOORT, SOORT_KEY, NUMMER_OBJECT, INS_DEEL_KEY, INS_DEEL_AANMAAK, INS_DEEL_KEY2, VASTNR_HUIDIG, MOBIELNR_HUIDIG FROM HMOD_V_TELEFOONNR_KLANTOBJECT WHERE SOORT_KEY = 69 AND (MOBIELNR_HUIDIG<>NUMMER_OBJECT OR MOBIELNR_HUIDIG is null) ; CURSOR c_delvast IS SELECT p.prs_perslid_key, p.prs_perslid_telefoonnr FROM prs_perslid p WHERE p.prs_perslid_key not in (select v.prs_perslid_key from HMOD_V_TELEFOONNR_KLANTOBJECT v where v.soort_key = 70) and p.prs_afdeling_key in (select v.prs_afdeling_key from prs_v_aanwezigafdeling v where v.prs_bedrijf_key = 41 and v.prs_afdeling_verwijder is null) -- Onderdeel bedrijf Humanitas... and p.prs_perslid_telefoonnr is not null ; CURSOR c_delmob IS SELECT p.prs_perslid_key, p.prs_perslid_mobiel FROM prs_perslid p WHERE p.prs_perslid_key not in (select v.prs_perslid_key from HMOD_V_TELEFOONNR_KLANTOBJECT v where v.soort_key = 69) and p.prs_afdeling_key in (select v.prs_afdeling_key from prs_v_aanwezigafdeling v where v.prs_bedrijf_key = 41 and v.prs_afdeling_verwijder is null) -- Onderdeel bedrijf Humanitas... and p.prs_perslid_mobiel is not null ; v_telefoon_vast VARCHAR2(15); v_telefoon_mobiel VARCHAR2(15); v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); oracle_err_mes VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; v_aanduiding VARCHAR (100); v_count NUMBER; BEGIN v_count:=0; FOR rec IN c_vast LOOP v_aanduiding := 'Vast nummer gewijzigd, ' || CHR(10) || 'van ' || COALESCE(rec.vastnr_huidig,'') || ' naar ' || rec.nummer_object ; v_errorhint := 'telefoonnr vast aanpassen'; UPDATE prs_perslid p SET prs_perslid_telefoonnr = rec.nummer_object WHERE p.prs_perslid_key = rec.prs_perslid_key ; fac.trackaction ( 'PRSUPD', rec.prs_perslid_key, 3, SYSDATE, v_aanduiding); END LOOP; FOR rec IN c_mob LOOP v_aanduiding := 'Mobielnummer gewijzigd, ' || CHR(10) || 'van ' || COALESCE(rec.mobielnr_huidig,'') || ' naar ' || rec.nummer_object ; v_errorhint := 'telefoonnr mobiel aanpassen'; UPDATE prs_perslid p SET prs_perslid_mobiel = rec.nummer_object WHERE p.prs_perslid_key = rec.prs_perslid_key ; fac.trackaction ( 'PRSUPD', rec.prs_perslid_key, 3, SYSDATE, v_aanduiding); END LOOP; FOR rec IN c_delvast LOOP v_aanduiding := 'Vast nummer verwijderd ' || CHR(10) || 'Was ' || rec.prs_perslid_telefoonnr ; v_errorhint := 'vast nummer verwijderen'; UPDATE prs_perslid p SET p.prs_perslid_telefoonnr = '' WHERE p.prs_perslid_key = rec.prs_perslid_key ; fac.trackaction ( 'PRSUPD', rec.prs_perslid_key, 3, SYSDATE, v_aanduiding); END LOOP; FOR rec IN c_delmob LOOP v_aanduiding := 'Mobielnummer verwijderd ' || CHR(10) || 'Was ' || rec.prs_perslid_mobiel ; v_errorhint := 'mobielnummer verwijderen'; UPDATE prs_perslid p SET p.prs_perslid_mobiel = '' WHERE p.prs_perslid_key = rec.prs_perslid_key ; fac.trackaction ( 'PRSUPD', rec.prs_perslid_key, 3, SYSDATE, v_aanduiding); END LOOP; END; / -- script om dagelijks terugkerende scripts aan te roepen. CREATE OR REPLACE PROCEDURE hmod_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- job om de telefoonnummers in persoonkaart te synchroniseren met de eigendommen (gekoppelde telefoonobjecten vast en mobiel) hmod_prs_telefoonnummers (p_applname, p_applrun); END; / -- Rapport van de import-personen ADP. ---- Zowel te gebruiken bij LEZEN als bij VERWERKEN ---- Deze view wordt tevens gebruikt als cursor voor de import-proceduren CREATE OR REPLACE VIEW hmod_v_prsimport ( PRS_PERSLID_KEY, PRS_PERSLID_NR, PRS_PERSLID_NAAM, PRS_PERSLID_VOORNAAM, PRS_PERSLID_OSLOGIN, PRS_DATUM_UITDIENST, PRS_STATUS, FORMATIEPLAATS_HUIDIG, FORMATIEPLAATS_CSV, LETTERCODE, TOKEN, MOB, HIT, LAP_EN_SIM, LAPT, TNC, TNC_OMSCHRIJVING, FACILITOR, ADP, ABSENTIEMANAGER, REGAS, CHECKS, ACCOUNTVIEW, ELVY, HODNET, PROACTIVE, OPMERKING_KOFFERSYSTEEM, DATUM_GELEZEN, DATUM_VERWERKT ) AS -- Bestaande personen die ook weer in deze PRS-import zitten SELECT basis.prs_perslid_key, basis.prs_perslid_nr, basis.prs_perslid_naam, i.prs_perslid_voornaam, basis.prs_perslid_oslogin, basis.DatumUitDienst, CASE WHEN d.datum_verwerkt is not null THEN i.prs_perslid_partner_naam -- Deze vul ik tijdens de import met de prs_status WHEN d.datum_verwerkt is null and k.code is null THEN 'Basis - Fout' ELSE basis.koffersysteem_status END as prs_status, COALESCE(basis.formatieplaats_huidig,'nvt'), COALESCE (k.code, i.prs_kenmerk3 || ' LET OP! formatieplaats uit CSV staat niet in actueel koffersysteem') AS formatieplaats_CSV, k.lettercode, k.token, k.mob, k.hit, k.lap_en_sim, k.lapt, k.tnc, k.tnc_omschrijving, k.facilitor, k.adp, k.absentiemanager, k.regas, k.checks, k.accountview, k.elvy, k.hodnet, k.proactive, k.opmerking, d.datum_gelezen, d.datum_verwerkt FROM (SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam, p.prs_perslid_oslogin, a.prs_bedrijf_key, b.prs_bedrijf_naam, (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1025 AND prs_kenmerklink_niveau = 'P' AND prs_kenmerklink_verwijder IS NULL) AS formatieplaats_huidig, (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1100 AND prs_kenmerklink_niveau = 'P' AND prs_kenmerklink_verwijder IS NULL) AS DatumUitDienst, (SELECT kd.fac_usrdata_omschr FROM prs_kenmerklink k, fac_usrdata kd WHERE k.prs_link_key = p.prs_perslid_key AND k.prs_kenmerk_key = 1081 -- Kenmerkveld Status AND k.prs_kenmerklink_niveau = 'P' AND k.prs_kenmerklink_verwijder IS NULL AND k.prs_kenmerklink_waarde = kd.fac_usrdata_key AND kd.fac_usrtab_key = 82) as Koffersysteem_status FROM prs_perslid p, 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 p.prs_perslid_verwijder IS NULL) basis, fac_imp_perslid i, hmod_v_koffersysteem_actueel k, (SELECT i.fac_import_key, MAX (f.fac_import_datum_gelezen) AS datum_gelezen, MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt FROM fac_import f, fac_imp_perslid i WHERE f.fac_import_key = i.fac_import_key AND f.fac_import_app_key = 41 GROUP BY i.fac_import_key, f.fac_import_datum_gelezen, f.fac_import_datum_verwerkt) d WHERE basis.prs_perslid_nr = i.prs_perslid_nr AND i.prs_kenmerk3 = k.code (+) AND basis.prs_bedrijf_key = 41 -- Alleen voor Humanitas onder Dak mensen UNION ALL -- NIEUWE PERSONEN die nog niet in BEDRIJF HUMANITAS zitten en die dus bij import toegevoegd gaan worden en met juiste koffersysteem gevuld moet worden... ---- Nieuwe personen zitten bij INLEZEN aan deze kant (omdat ze nog geen prs_perslid_key hebben). Bij verwerken hebben ze dit wel en dan zitten de NIEUWE personen in bovenstaande union.. SELECT -1 AS prs_perslid_key, i.prs_perslid_nr, i.prs_perslid_naam, i.prs_perslid_voornaam, NULL as prs_perslid_oslogin, -- Nieuwe mensen krijgen handmatig via voorkant een login '' as DatumUitDienst, CASE WHEN k.code is null THEN 'Nieuw - Fout' ELSE 'Nieuw' END as prs_status, 'nvt' AS formatieplaats_huidig, COALESCE (k.code, i.prs_kenmerk3 || ' LET OP! formatieplaats uit CSV staat niet in actueel koffersysteem') AS formatieplaats_CSV, k.lettercode, k.token, k.mob, k.hit, k.lap_en_sim, k.lapt, k.tnc, k.tnc_omschrijving, k.facilitor, k.adp, k.absentiemanager, k.regas, k.checks, k.accountview, k.elvy, k.hodnet, k.proactive, k.opmerking, d.datum_gelezen, d.datum_verwerkt FROM fac_imp_perslid i, hmod_v_koffersysteem_actueel k, (SELECT i.fac_import_key, MAX (f.fac_import_datum_gelezen) AS datum_gelezen, MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt FROM fac_import f, fac_imp_perslid i WHERE f.fac_import_key = i.fac_import_key AND f.fac_import_app_key = 41 GROUP BY i.fac_import_key, f.fac_import_datum_gelezen, f.fac_import_datum_verwerkt) d WHERE i.prs_kenmerk3 = k.code(+) AND i.fac_import_key = d.fac_import_key AND UPPER(i.prs_perslid_nr) NOT IN (SELECT UPPER(p.prs_perslid_nr) FROM prs_perslid p, prs_bedrijf b, prs_v_afdeling a WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND p.prs_perslid_nr IS NOT NULL AND p.prs_perslid_verwijder IS NULL AND b.prs_bedrijf_key = 41 -- Humanitas onder Dak ) UNION ALL -- Alle HUMANITAS medewerkers die wel in Facilitor staan, maar niet in CSV-import zitten - Indien nodig handmatig te verwijderen SELECT basis.prs_perslid_key, basis.prs_perslid_nr, basis.prs_perslid_naam, basis.prs_perslid_voornaam, basis.prs_perslid_oslogin, basis.DatumUitDienst, 'Verwijderen' AS prs_status, basis.formatieplaats_huidig, 'nvt' AS formatieplaats_CSV, k.lettercode, k.token, k.mob, k.hit, k.lap_en_sim, k.lapt, k.tnc, k.tnc_omschrijving, k.facilitor, k.adp, k.absentiemanager, k.regas, k.checks, k.accountview, k.elvy, k.hodnet, k.proactive, k.opmerking, d.datum_gelezen, d.datum_verwerkt FROM (SELECT p.prs_perslid_key, COALESCE(p.prs_perslid_nr,'999') as prs_perslid_nr, p.prs_perslid_naam, p.prs_perslid_voornaam, p.prs_perslid_oslogin, a.prs_bedrijf_key, b.prs_bedrijf_naam, (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1025 AND prs_kenmerklink_niveau = 'P' AND prs_kenmerklink_verwijder IS NULL) AS formatieplaats_huidig, (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1100 AND prs_kenmerklink_niveau = 'P' AND prs_kenmerklink_verwijder IS NULL) AS DatumUitDienst, (SELECT kd.fac_usrdata_omschr FROM prs_kenmerklink k, fac_usrdata kd WHERE k.prs_link_key = p.prs_perslid_key AND k.prs_kenmerk_key = 1081 -- Kenmerkveld Status AND k.prs_kenmerklink_niveau = 'P' AND k.prs_kenmerklink_verwijder IS NULL AND k.prs_kenmerklink_waarde = kd.fac_usrdata_key AND kd.fac_usrtab_key = 82) as Koffersysteem_status FROM prs_perslid p, 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 = 41 AND p.prs_perslid_verwijder IS NULL) basis, hmod_v_koffersysteem_actueel k, ( SELECT i.fac_import_key, MAX (f.fac_import_datum_gelezen) AS datum_gelezen, MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt FROM fac_import f, fac_imp_perslid i WHERE f.fac_import_key = i.fac_import_key AND f.fac_import_app_key = 41 GROUP BY i.fac_import_key, f.fac_import_datum_gelezen, f.fac_import_datum_verwerkt) d WHERE basis.formatieplaats_huidig = k.code(+) AND basis.Koffersysteem_status != 'Nvt' AND basis.prs_perslid_nr NOT IN (SELECT i.prs_perslid_nr FROM fac_imp_perslid i) ; CREATE OR REPLACE PROCEDURE hmod_import_perslid (p_import_key IN NUMBER) AS v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (1000); v_count NUMBER; v_count_leeg NUMBER; v_count_fout NUMBER; v_count_nieuw NUMBER; v_count_verwijder NUMBER; v_count_codeverschilt NUMBER; CURSOR c -- Alle medewerkers HUMANITAS die in aangeleverde ADP-personen-bestand zitten IS SELECT prs_perslid_key, prs_perslid_nr, prs_perslid_voornaam, prs_perslid_oslogin, prs_status, formatieplaats_huidig, formatieplaats_csv, lettercode, token, mob, hit, lap_en_sim, lapt, tnc, tnc_omschrijving, facilitor, adp, absentiemanager, regas, checks, accountview, elvy, hodnet, proactive FROM hmod_v_prsimport WHERE instr(prs_status,'Verwijderen') = 0 and prs_status is not null ; BEGIN v_errorhint := 'Generieke import'; -- Standaard Import. De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE. prs.import_perslid ( p_import_key, '0;0;0;0;0;0;1;2;0;3;0;0;0;0;0;0;0;5;0;7;6;0;0;4;0;0;8;9;10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0', 'Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code%'); -- DEF2: Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code' ----- 1 2 3 4 5 6 7 8 9 10 COMMIT; FOR rec IN c LOOP BEGIN -- Koffersysteem-kenmerken vullen IF rec.prs_status = 'Basis' or rec.prs_status = 'Nieuw' -- Dan alle koffersysteemvelden naar personenkaart wegschrijven... THEN UPDATE fac_imp_perslid p SET prs_kenmerk6 = rec.token, -- Token prs_kenmerk7 = rec.mob, -- Mobiel prs_kenmerk8 = rec.hit, -- Hit prs_kenmerk9 = rec.lap_en_sim, -- Lap+Sim prs_kenmerk10 = rec.lapt, -- Lapt prs_kenmerk11 = rec.tnc, -- Toegangsniveau prs_kenmerk12 = rec.facilitor, -- Facilitor prs_kenmerk13 = rec.adp, -- ADP prs_kenmerk14 = rec.absentiemanager, -- Absentiemanager prs_kenmerk15 = rec.regas, -- Regas prs_kenmerk16 = rec.checks, -- Checks prs_kenmerk17 = rec.accountview, -- Accountview prs_kenmerk18 = rec.elvy, -- Elvy prs_kenmerk19 = rec.hodnet, -- HodNet prs_kenmerk20 = rec.proactive -- Proactive WHERE p.prs_perslid_nr = rec.prs_perslid_nr; END IF; -- De prs_status (= status voor deze import) ook wegschrijven in fac_imp_perslid. ---- Om updateprocedure mee te sturen... + om rapport import prs goed mee te vullen.. ---- Omdat er voor koffersysteem al 20 kenmerken gevuld worden, moet ik hier ander veld voor (mis)bruiken. UPDATE fac_imp_perslid p SET prs_perslid_partner_naam = rec.prs_status -- Partner_naam voor misbruiken. Wordt in standaard update niet gebruikt (omdat PRS_PERSLID_NAAMGEBRUIK_CODE op 0 meegaat..) WHERE p.prs_perslid_nr = rec.prs_perslid_nr; -- Voorletter vullen vanuit Roepnaam UPDATE fac_imp_perslid p SET prs_perslid_voorletters = substr(rec.prs_perslid_voornaam,1,1) WHERE p.prs_perslid_nr = rec.prs_perslid_nr and rec.prs_perslid_voornaam is not null; -- Basiskoffer - Lettercode vullen - UPDATE fac_imp_perslid p SET prs_kenmerk4 = rec.lettercode WHERE p.prs_perslid_nr = rec.prs_perslid_nr; -- Loginnaam vullen vanuit huidige personenkaart UPDATE fac_imp_perslid p SET prs_perslid_oslogin = rec.prs_perslid_oslogin WHERE p.prs_perslid_nr = rec.prs_perslid_nr ; -- Alle Humanitas-personen willen we tijdens de import standaard werkplek-koppeling meegeven -- Omdat momenteel standplaats nog niet uit ADP kan komen, wordt dit nu met default gevuld: HOD_ALG UPDATE fac_imp_perslid p SET alg_locatie_code = 'HOD-ALG', alg_gebouw_code = 'G', alg_verdieping_volgnr = 0, alg_ruimte_nr = '_' WHERE p.prs_perslid_nr = rec.prs_perslid_nr ; END; END LOOP; BEGIN v_errormsg := 'Checks op importbestand '; v_aanduiding := 'Raadpleeg rapport en pas csv-bestand aan en lees opnieuw in'; v_count := 0; v_count_leeg:=0; v_count_fout := 0; v_count_nieuw := 0; v_count_verwijder :=0; v_count_codeverschilt := 0; -- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen.. SELECT count (*) INTO v_count FROM hmod_v_prsimport; SELECT count (*) INTO v_count_nieuw FROM fac_imp_perslid WHERE (prs_perslid_partner_naam = 'Nieuw' or prs_perslid_partner_naam = 'Nieuw - Fout') ; SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ; SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ; SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ; SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ; IF v_count_leeg > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal personen zonder import-status is: ' || v_count_leeg, 'ACTIE: ' || v_aanduiding); END IF; IF v_count_fout > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal personen zonder gekoppelde formatieplaats is: ' || v_count_fout, 'ACTIE: ' || v_aanduiding); END IF; IF v_count_codeverschilt > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal personen die op BASIS staan, hebben in csv andere formatieplaats dan nu in Facilitor: ' || v_count_codeverschilt, 'ACTIE: ' || v_aanduiding); END IF; IF v_count_verwijder > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal te verwijderen personen is: '|| v_count_verwijder, 'Ter info'); END IF; IF v_count_nieuw > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal nieuw in te lezen personen is: '|| v_count_nieuw, 'Ter info'); END IF; IF v_count > 0 THEN fac.imp_writelog ( p_import_key, 'W', 'Aantal totaal te muteren personen is: '|| v_count, 'Ter info'); END IF; END; -- Nog wat updates uitvoeren op tussentabel... UPDATE fac_imp_perslid SET prs_perslid_geslacht = CASE WHEN prs_perslid_titel = 'Man' THEN 1 WHEN prs_perslid_titel = 'Vrouw' THEN 0 ELSE NULL END, prs_kenmerk1 = -- Meisjesnaam leegmaken indien man CASE WHEN prs_perslid_titel = 'Man' THEN '' ELSE prs_kenmerk1 END ; -- Titel kan nu leeggemaakt worden.. UPDATE fac_imp_perslid SET prs_perslid_titel = '' ; 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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Inleesproces personen afgebroken!'); END hmod_import_perslid; / -- DE UPDATE CREATE OR REPLACE PROCEDURE hmod_update_perslid (p_import_key IN NUMBER) IS CURSOR c_flex -- Alle records pakken. O.a. voor updaten van de algemene flex-kenmerkvelden IS SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam,i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3 FROM prs_v_aanwezigperslid p, fac_imp_perslid i WHERE p.prs_perslid_nr = i.prs_perslid_nr ORDER BY 2; CURSOR c_flex_koffer -- De flexkenmerken koffersysteem - alleen updaten voor die gevuld zijn IS SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam, i.prs_kenmerk4, i.prs_kenmerk6,i.prs_kenmerk7,i.prs_kenmerk8,i.prs_kenmerk9,i.prs_kenmerk10,i.prs_kenmerk11,i.prs_kenmerk12,i.prs_kenmerk13,i.prs_kenmerk14,i.prs_kenmerk15,i.prs_kenmerk16,i.prs_kenmerk17,i.prs_kenmerk18,i.prs_kenmerk19,i.prs_kenmerk20 FROM prs_v_aanwezigperslid p, fac_imp_perslid i WHERE p.prs_perslid_nr = i.prs_perslid_nr AND (i.prs_perslid_partner_naam = 'Basis' or i.prs_perslid_partner_naam = 'Nieuw') ORDER BY 2; CURSOR c_del -- Alle medewerkers van bedrijf HUMANITAS die niet in aangeleverde ADP-personen-bestand zitten IS SELECT prs_perslid_key, prs_perslid_nr, prs_status FROM hmod_v_prsimport WHERE prs_status = 'Verwijderen' ; v_errorhint VARCHAR2 (1000) := ''; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (1000); v_count NUMBER; v_count_leeg NUMBER; v_count_fout NUMBER; v_count_nieuw NUMBER; v_count_verwijder NUMBER; v_count_codeverschilt NUMBER; BEGIN -- Generieke update. v_errorhint :='Fout in generieke update'; -- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen.. v_aanduiding := 'Import afgebroken (conform afspraak) - Zie rapport voor specificaties'; SELECT count (*) INTO v_count FROM hmod_v_prsimport; SELECT count (*) INTO v_count_nieuw FROM fac_imp_perslid WHERE (prs_perslid_partner_naam = 'Nieuw' or prs_perslid_partner_naam = 'Nieuw - Fout'); SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ; SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ; SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ; SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ; IF v_count < 20 THEN fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein: ' || TO_CHAR (v_count), v_aanduiding); RETURN; END IF; IF v_count_fout > 0 THEN fac.imp_writelog (p_import_key, 'E', 'Er zitten in import teveel medewerkers met prs_status FOUT: ' || TO_CHAR (v_count_fout), v_aanduiding); RETURN; END IF; IF v_count_nieuw > 20 THEN fac.imp_writelog (p_import_key, 'E', 'Er zijn teveel NIEUWE medewerkers in import, kan niet kloppen: ' || TO_CHAR (v_count_nieuw), v_aanduiding); RETURN; END IF; IF v_count_leeg > 0 THEN fac.imp_writelog (p_import_key, 'E', 'Er zitten in import medewerkers ZONDER prs_status: ' || TO_CHAR (v_count_leeg), v_aanduiding); RETURN; END IF; IF v_count_codeverschilt > 0 THEN fac.imp_writelog (p_import_key, 'E', 'Er zijn (teveel) personen die op BASIS staan, maar in csv andere formatieplaats hebben dan nu in Facilitor: ' || TO_CHAR (v_count_codeverschilt), v_aanduiding); RETURN; END IF; -- Generieke update. NR - key personeelsnr - NULL is geen werkplekken verwijderd prs.update_perslid (p_import_key, 'NR', 'NULL'); -- Update flexvelden algemeen FOR rec IN c_flex LOOP BEGIN v_aanduiding := 'Import prs - ' || TO_CHAR(sysdate, 'dd/mm/yyyy - hh:mi:ss') || ' - status: ' || rec.prs_perslid_partner_naam; v_errorhint:='Fout bijwerken meisjes'; PRS.upsertkenmerk (1023, rec.prs_perslid_key, rec.prs_kenmerk1); -- Meisjesnaam v_errorhint:='Fout bijwerken briefaanhef'; PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk2); -- Brief aanhef v_errorhint:='Fout bijwerken formatieplaats'; PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk3); -- Formatieplaats -- Nog paar kenmerkvelden bijwerken DELETE FROM prs_kenmerklink WHERE prs_link_key = rec.prs_perslid_key AND prs_kenmerk_key = 1082 -- Veld om aan te geven dat persoon verwijderd kan worden. Voor de personen die meekomen in de fac_imp_perslid moet deze leeggemaakt worden... AND prs_kenmerklink_niveau = 'P' AND prs_kenmerklink_verwijder IS NULL; IF rec.prs_perslid_partner_naam = 'Nieuw' or rec.prs_perslid_partner_naam = 'Nieuw - Fout' THEN v_errorhint:='Nieuwe personen krijgen altijd basiskoffer mee'; PRS.upsertkenmerk (1081, rec.prs_perslid_key, '143'); -- Koffersysteem (status) = key 143 -- Toevoegen nieuwe personen aan de autorisatiegroep Werknemer - key 79 INSERT INTO fac_gebruikersgroep (fac_groep_key, fac_gebruikersgroep_aanmaak, prs_perslid_key) VALUES (79, sysdate, rec.prs_perslid_key); END IF; fac.trackaction ('PRSUPD', rec.prs_perslid_key, 3,sysdate, v_aanduiding) ; END; END LOOP; -- Update flexvelden Koffersysteem FOR rec IN c_flex_koffer LOOP BEGIN v_errorhint:='Fout bijwerken Token'; PRS.upsertkenmerk (1068, rec.prs_perslid_key, rec.prs_kenmerk6); -- Token, 6 , 1068 v_errorhint:='Fout bijwerken Mobiel'; PRS.upsertkenmerk (1067, rec.prs_perslid_key, rec.prs_kenmerk7); -- Mobiel 7 , 1067 v_errorhint:='Fout bijwerken Hit'; PRS.upsertkenmerk (1069, rec.prs_perslid_key, rec.prs_kenmerk8); -- Hit 8 , 1069 v_errorhint:='Fout bijwerken Lap+Sim'; PRS.upsertkenmerk (1063, rec.prs_perslid_key, rec.prs_kenmerk9); -- Lap+Sim 9 , 1063 v_errorhint:='Fout bijwerken Lapt'; PRS.upsertkenmerk (1065, rec.prs_perslid_key, rec.prs_kenmerk10); -- Lapt 10, 1065 v_errorhint:='Fout bijwerken Toegangsniveau'; PRS.upsertkenmerk (1061, rec.prs_perslid_key, rec.prs_kenmerk11); -- Toegangsniveau 11, 1061 v_errorhint:='Fout bijwerken Facilitor'; PRS.upsertkenmerk (1072, rec.prs_perslid_key, rec.prs_kenmerk12); -- Facilitor 12 , 1072 v_errorhint:='Fout bijwerken ADP'; PRS.upsertkenmerk (1073, rec.prs_perslid_key, rec.prs_kenmerk13); -- ADP 13 , 1073 v_errorhint:='Fout bijwerken Absentiemanager'; PRS.upsertkenmerk (1074, rec.prs_perslid_key, rec.prs_kenmerk14); -- Absentiemanager 14, 1074 v_errorhint:='Fout bijwerken Regas'; PRS.upsertkenmerk (1075, rec.prs_perslid_key, rec.prs_kenmerk15); -- Regas 15, 1075 v_errorhint:='Fout bijwerken Checks'; PRS.upsertkenmerk (1076, rec.prs_perslid_key, rec.prs_kenmerk16); -- Checks 15, 1076 v_errorhint:='Fout bijwerken Accountview'; PRS.upsertkenmerk (1077, rec.prs_perslid_key, rec.prs_kenmerk17); -- Accountview 17, 1077 v_errorhint:='Fout bijwerken Elvy'; PRS.upsertkenmerk (1078, rec.prs_perslid_key, rec.prs_kenmerk18); -- Elvy 18, 1078 v_errorhint:='Fout bijwerken HodNet'; PRS.upsertkenmerk (1079, rec.prs_perslid_key, rec.prs_kenmerk19); -- HodNet 19, 1079 v_errorhint:='Fout bijwerken Proactive'; PRS.upsertkenmerk (1080, rec.prs_perslid_key, rec.prs_kenmerk20); -- Proactive 20, 1080 v_errorhint:='Fout bijwerken Basiskoffer'; PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk4); -- Basiskoffer -- Vanuit bovenstaande upsert komen er ook 0-waarden mee op de vinkbox-velden. -- Voor goede werking van de HR-flow moeten deze records echter direct weer gedelete worden DELETE FROM prs_kenmerklink kl WHERE kl.prs_kenmerklink_key IN (SELECT k.prs_kenmerklink_key FROM prs_kenmerklink k, prs_kenmerk key WHERE k.prs_kenmerk_key = key.prs_kenmerk_key AND k.prs_kenmerklink_waarde = '0' -- 0-waarde vanuit import is niet ok AND key.prs_kenmerk_niveau = 'P' AND key.prs_kenmerk_kenmerktype = 'V' -- persoonskenmerken + type vinkbox AND key.prs_kenmerk_key in (1063,1065,1067,1068,1069,1074,1075,1076,1077,1078,1080) AND k.prs_link_key = rec.prs_perslid_key ); END; END LOOP; FOR rec IN c_del LOOP -- prs.delete_perslid (p_import_key, rec.prs_perslid_key); -- Deze niet draaien voor HMOD ivm de workflow HRM die men in Facilitor uitvoert...? -- wel vullen van een kenmerkveld ADP-import 1082 BEGIN v_aanduiding := 'Import prs - ' || TO_CHAR(sysdate, 'dd/mm/yyyy - hh:mi:ss') || ' - status: ' || rec.prs_status; v_errorhint:='Bijwerken veld verwijderen'; PRS.upsertkenmerk (1082, rec.prs_perslid_key,'let op: verwijderen' ); fac.trackaction ('PRSUPD', rec.prs_perslid_key, 3,sysdate, v_aanduiding) ; END; END LOOP; BEGIN -- Telefoongegevens komen niet mee met de ADP-import. Deze velden worden dus bij deze prs-import leeggegooid. -- De telefoonnummers worden gevuld vanuit de aan de persoon gekoppelde telefoonobjecten (vast en mobiel) -- Daarom aan eind van deze prs-import deze telefoonvelden weer vullen door het dagelijks script wat hiervoor 's nachts draait, nogmaals te runnen. hmod_prs_telefoonnummers (null, null); END; 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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Importproces personen afgebroken!'); END hmod_update_perslid; / ------------------------ -- NOTIFICATIEJOBS ----- ------------------------ -- View tbv notificatiejob - Melding toegewezen aan behandelteam zonder behandelaar dan notificatie sturen naar team -- Notificatie gaat dan naar emailadres bij vakgroep-behandelteam CREATE OR REPLACE VIEW HMOD_V_NOTI_BEHANDELTEAM ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, 'De melding ' || m.mld_melding_key || ' is toegewezen aan jouw/jullie behandelgroep ' || m.actieve_behandelgroep text, 'CUST01' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST01') fac_srtnotificatie_key, m.mld_melding_key key, NULL xkey, m.vakgroep_email xemail, NULL xmobile FROM (SELECT m.mld_melding_key, sm.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, -- primaire vakgroep (SELECT COALESCE(fac_notificatie_job_lastrun, trunc(sysdate)) FROM fac_notificatie_job WHERE fac_notificatie_job_view ='HMOD_V_NOTI_BEHANDELTEAM') job_datum_vanaf, m.mld_ins_discipline_key, -- Discipline_key Actieve behandelgroep (SELECT md2.ins_discipline_omschrijving FROM mld_discipline md2 WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelgroep, m.mld_melding_behandelaar2_key, dp2.mld_disc_params_emailnw3 -- email prio normaal/laag vakgroep_email, (SELECT COALESCE(MAX (fac_tracking_datum), sysdate) FROM fac_tracking ft WHERE fac_tracking_refkey = m.mld_melding_key AND ( (INSTR (fac_tracking_oms, 'Behandelteam: ') > 0 AND fac_srtnotificatie_key = 52) -- MLDUPD OR (INSTR (fac_tracking_oms, 'Behandelteam is gewijzigd naar') > 0 AND fac_srtnotificatie_key = 61) -- MLDBHG OR (INSTR (fac_tracking_oms, 'is toegewezen aan jouw/jullie behandelgroep') > 0 AND fac_srtnotificatie_key = 261)) -- CUST01 -- flag 16 ) mld_toegewezen_laatste FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, -- Primaire vakgroep mld_disc_params dp2 -- Behandelteam vakgroep WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'MLD' AND d.ins_discipline_key = dp.mld_ins_discipline_key AND m.mld_ins_discipline_key = dp2.mld_ins_discipline_key -- Is de key van Behandelteam in mld_melding AND m.mld_melding_behandelaar2_key IS NULL AND dp2.mld_disc_params_emailnw3 IS NOT NULL) m WHERE m.mld_toegewezen_laatste > m.job_datum_vanaf; -- RAPPEL CONTRACTEN --- -- Op contracten wordt dit aangegeven. Dit is in basisview opgenomen en deze fungeert als bron voor notificatie CREATE OR REPLACE VIEW hmod_v_cnt_rappel_basis AS SELECT d.ins_discipline_omschrijving, c.cnt_contract_key, c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) cnt_contract_nr, c.cnt_contract_omschrijving, c.cnt_contract_looptijd_van begindatum, c.cnt_contract_looptijd_tot einddatum, cnt.cnt_getopzegdatum (c.cnt_contract_key) cnt_opzegdatum, cnt.cnt_getrappeldatum (c.cnt_contract_key) cnt_rappeldatum, DECODE (cnt.cnt_contract_status (c.cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c.cnt_contract_key), cnt.cnt_getopzegdatum (c.cnt_contract_key), c.cnt_contract_looptijd_tot), 0, lcl.l ('lcl_cnt_future'), 1, lcl.l ('lcl_cnt_topical'), 2, lcl.l ('lcl_cnt_warn'), 3, lcl.l ('lcl_cnt_cancel'), 4, lcl.l ('lcl_cnt_past')) fase_actief, DECODE ( c.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active')), 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval')) cnt_contract_status, CASE WHEN cnt_contract_verlenging = 2 THEN 'nee' ELSE 'ja' END automatisch_verlengen, CASE WHEN cnt_contract_inactiveren = 1 THEN 'ja' ELSE 'nee' END automatisch_beeindigen, (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 716) -- contractbeheerder vink_beheerder, (SELECT p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_key = c.prs_perslid_key_beh AND p.prs_perslid_verwijder IS NULL) beheerder_email, (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 715) -- verantwoordelijk manager vink_verantwoordelijke, (SELECT p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_key = c.prs_perslid_key_eig AND p.prs_perslid_verwijder IS NULL) veantwoordelijke_email, (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 724) -- rappel 2e aanspreekpunt vink_tweede_aanspreekpunt, (SELECT p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_key = (SELECT fac.safe_to_number(kc.cnt_kenmerkcontract_waarde) FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 723) AND p.prs_perslid_verwijder IS NULL) tweede_aanspreekpunt_email, (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 717) -- opgezegd contract_opgezegd, (SELECT kc.cnt_kenmerkcontract_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key AND kc.cnt_contract_key = c.cnt_contract_key AND k.cnt_kenmerk_key = 709) -- opgezegd_reden contract_opgezegd_reden FROM cnt_v_aanwezigcontract c, ins_tab_discipline d WHERE c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'CNT'; -- Rappel-opzet - HERZIEN ---- Eenmalig verstuurd naar optioneel contract-veantwoordelijke, contractbeheerder en 2e aanspreekpunt CREATE OR REPLACE VIEW hmod_v_noti_cntreminder_2 ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS -- Op rappel-datum naar de Beheerder/Administrateur sturen SELECT 'CNTMAI', NULL, c.prs_perslid_key_beh, 'TER INFO: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy') || ' worden verlengd of opgezegd.', c.cnt_contract_key, NULL, NULL, NULL FROM hmod_v_cnt_rappel_basis v, cnt_v_aanwezigcontract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND v.cnt_contract_key = c.cnt_contract_key AND v.vink_beheerder = 1 AND c.cnt_contract_status = 0 AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE) AND c.prs_perslid_key_beh <> c.prs_perslid_key_eig -- als administrateur gelijk aan 1e aanspreekpunt dan dan sturen we de info-mail niet uit AND v.contract_opgezegd IS NULL AND v.automatisch_verlengen = 'nee' AND v.automatisch_beeindigen = 'nee' UNION ALL -- Op rappel-datum ACTIE-mail naar het 1e aanspreekpunt sturen (contractverantwoordelijke) SELECT 'CUST02', NULL, c.prs_perslid_key_eig, 'ACTIE: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy') || ' worden verlengd of opgezegd.', c.cnt_contract_key, NULL, NULL, NULL FROM hmod_v_cnt_rappel_basis v, cnt_v_aanwezigcontract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND v.cnt_contract_key = c.cnt_contract_key AND v.vink_verantwoordelijke = 1 AND c.cnt_contract_status = 0 AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE) AND c.prs_perslid_key_eig IS NOT NULL AND v.contract_opgezegd IS NULL AND v.automatisch_verlengen = 'nee' AND v.automatisch_beeindigen = 'nee' UNION ALL -- Op rappel-datum ACTIE-mail naar het 'RAPPEL-ANDERS-emailadres' SELECT 'CUST03', NULL, NULL, 'TER INFO: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) || ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')' || ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy') || ' worden verlengd of opgezegd.', c.cnt_contract_key, NULL, v.tweede_aanspreekpunt_email, NULL FROM hmod_v_cnt_rappel_basis v, cnt_v_aanwezigcontract c, prs_bedrijf b WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND v.cnt_contract_key = c.cnt_contract_key AND v.vink_tweede_aanspreekpunt = 1 AND c.cnt_contract_status = 0 AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE) AND v.contract_opgezegd IS NULL AND v.automatisch_verlengen = 'nee' AND v.automatisch_beeindigen = 'nee' ; -- domeinview Contracten CREATE OR REPLACE VIEW hmod_v_contracten ( KEY, OMSCHRIJVING, -- Soort - Nr.versie - Omschrijving CONTRACTANT, -- Voor extra_tesktkolom VERVALDATUM -- Alle contracten die al meer dan jaar verlopen zijn, worden niet meer getoond in keuzelijst ) AS SELECT c.cnt_contract_key, d.ins_discipline_omschrijving || ' - ' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) || ' - ' || c.cnt_contract_omschrijving omschrijving, (SELECT prs_bedrijf_naam FROM prs_bedrijf WHERE prs_bedrijf_key = c.cnt_prs_bedrijf_key) contractant, c.cnt_contract_looptijd_tot + 365 vervaldatum FROM cnt_contract c, ins_tab_discipline d WHERE c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'CNT' ; -- Als vanuit AFAS-koppeling een nieuwe medewerker binnenkomt of een bestaande medewerker een formatieplaats-wijziging heeft, dan moet er in Facilitor een HR-mutatieproces opgestart worden CREATE OR REPLACE VIEW hmod_v_noti_afas_hrtrigger ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT 'PRSUPD', NULL, g.prs_perslid_key, 'HR_MUTATIE: ' || v.prs_perslid_email || ' - ' || v.afas_hr_mutatie text, v.prs_perslid_key, NULL, NULL, NULL FROM (SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, flx.getflex('PRS', 1760, p.prs_perslid_key, 'P') afas_hr_mutatie FROM prs_perslid p ) v, (SELECT ft.fac_tracking_refkey, ft.fac_tracking_oms, MAX(ft.fac_tracking_datum) datum_mutatie FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'PRSUPD' AND ( ft.fac_tracking_oms = 'MDW_FORMATIEPLAATS_GEWIJZIGD' OR ft.fac_tracking_oms = 'MDW_NIEUW' ) GROUP BY ft.fac_tracking_refkey, ft.fac_tracking_oms ) ft, (SELECT gg.prs_perslid_key FROM fac_groep g, fac_gebruikersgroep gg WHERE g.fac_groep_key = gg.fac_groep_key AND g.fac_groep_key = 541 -- AUTORISATIEGROEP HR_MUTATIE AND gg.fac_gebruikersgroep_vervaldatum IS NULL ) g, (SELECT COALESCE(fac_notificatie_job_lastrun, trunc(sysdate-1)) datum_last_run FROM fac_notificatie_job WHERE LOWER(fac_notificatie_job_view) ='hmod_v_noti_afas_hrtrigger') n WHERE v.prs_perslid_key = ft.fac_tracking_refkey AND ft.datum_mutatie >= n.datum_last_run ; --------------------- -- RAPPORTVIEWS ----- --------------------- -- O.a. bestemd voor overzicht HR-behandelteams CREATE OR REPLACE VIEW hmod_v_rap_hrmeldingen ( SRTDISCIPLINE_OMSCHRIJVING, FCLT_3D_DISCIPLINE_KEY, -- vakgroep_key DISCIPLINE_NAAM, MLD_MELDING_KEY, MLD_MELDING_NR, MLD_MELDING_DATUM, MLD_STD_MELDING, MLD_MELDING_ONDERWERP, MLD_MELDING_STATUS, ACTIECODE_OMSCHRIJVING, MARKERING, MLD_AANVRAGER, BESTEMD_VOOR_PERSONEELSLID, -- Voor wie geldt de hr-mutatie? -- Behandeling FCLT_3D_DISCIPLINE2_KEY, -- vakgroep_key van actieve behandelteam ACTIEVE_BEHANDELTEAM, BEHANDELAAR_FILTER_KEY, -- Voor HR-mensen die zowel Hoofd- als Actieve behandelaar kunnen zijn BEHANDELAAR_FILTER_NAAM, -- Datums en doorloop DATUM_ACCEPT, DATUM_EIND, DATUM_AFGEMELD, DOORLOOPTIJD_WD, -- Kenmerkvelden HR_FUNCTIONARIS, -- In aanvraag - welke hr-functionaris is aangegeven? WORKFLOW_GEKOPPELD, CONTROLE_ADP ) AS SELECT sd.ins_srtdiscipline_omschrijving, md.ins_discipline_key, md.ins_discipline_omschrijving, m.mld_melding_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key mld_melding_nr, m.mld_melding_datum, CASE WHEN s.mld_stdmelding_key = 145 THEN s.mld_stdmelding_omschrijving || ' - ' || (SELECT fu.fac_usrdata_omschr FROM mld_kenmerkmelding mkm, mld_kenmerk k, fac_usrdata fu WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND fac.safe_to_number(mkm.mld_kenmerkmelding_waarde) = fu.fac_usrdata_key AND k.mld_kenmerk_verwijder IS NULL AND k.mld_srtkenmerk_key = 95) ELSE s.mld_stdmelding_omschrijving END mld_stdmelding_omschrijving, m.mld_melding_onderwerp, (SELECT mld_statuses_omschrijving FROM mld_statuses sta WHERE sta.mld_statuses_key = m.mld_melding_status) mld_melding_status, CASE WHEN mld_melding_actiecode = 2 THEN 'Actie bij aanvrager' WHEN mld_melding_actiecode = 129 THEN 'Attentie (actie bo)' ELSE 'Standaard' END actiecode_omschrijving, CASE WHEN mld_melding_flag > 0 THEN lcl.l ('lcl_mld_flag' || mld_melding_flag) END markering, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.prs_perslid_key) mld_aanvrager, (SELECT p.prs_perslid_naam_full FROM mld_kenmerkmelding mkm, mld_kenmerk k, prs_v_perslid_fullnames p WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND k.mld_kenmerk_verwijder IS NULL AND k.mld_srtkenmerk_key = 97) bestemd_voor_personeelslid, -- srtkenmerk_key = 97 -- Behandeling m.mld_ins_discipline_key, (SELECT md2.ins_discipline_omschrijving FROM mld_discipline md2 WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelteam, COALESCE(m.mld_melding_behandelaar2_key, m.mld_melding_behandelaar_key) behandelaar_filter_key, COALESCE(pba.prs_perslid_naam_full, pb.prs_perslid_naam_full,'') behandelaar_filter_naam, -- Datums en doorloop mld.getmeldingstatusdate (m.mld_melding_key, 4) datum_accept, m.mld_melding_einddatum, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)) datum_afgemeld, DECODE (mld.getactualuitvoer (m.mld_melding_key).eenheid, 'D', mld.getactualuitvoer (m.mld_melding_key).tijdsduur, mld.getactualuitvoer (m.mld_melding_key).tijdsduur/24) doorlooptijd_wd, -- Kenmerkvelden (SELECT p.prs_perslid_naam_full FROM mld_kenmerkmelding mkm, mld_kenmerk k, prs_v_perslid_fullnames p WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_verwijder IS NULL AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND k.mld_srtkenmerk_key = 681) hr_functionaris, -- srtkenmerk_key = 681 CASE WHEN m.mld_stdmelding_key NOT IN (923, 924, 925) THEN 'nvt' WHEN m.mld_melding_parentkey IS NOT NULL AND m.mld_stdmelding_key IN (923, 924, 925) THEN 'ja, aan melding ' || to_char(m.mld_melding_parentkey) ELSE '' END workflow_gekoppeld, (SELECT mkm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mkm, mld_kenmerk k WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_verwijder IS NULL AND k.mld_srtkenmerk_key = 1741) controle_ADP -- srtkenmerk = 1741 FROM mld_melding m, prs_perslid p, -- aanvrager prs_v_perslid_fullnames_all pb, -- behandelaar prs_v_perslid_fullnames_all pba,-- actievehandelaar mld_stdmelding s, mld_stdmeldinggroep sg, mld_discipline md, mld_disc_params mdp, ins_srtdiscipline sd WHERE s.mld_stdmelding_key = m.mld_stdmelding_key AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_melding_behandelaar_key = pb.prs_perslid_key (+) AND m.mld_melding_behandelaar2_key = pba.prs_perslid_key (+) AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND md.ins_discipline_key = mdp.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = 22 -- Alleen uit SA AND md.ins_discipline_key in (94,96) -- vakgroep HR-algemeen en HR-spec AND s.mld_stdmeldinggroep_key = sg.mld_stdmeldinggroep_key (+) UNION ALL SELECT sd.ins_srtdiscipline_omschrijving, md.ins_discipline_key, md.ins_discipline_omschrijving, m.mld_melding_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key mld_melding_nr, m.mld_melding_datum, wf.mld_stdmelding_omschrijving || ' - ' || s.mld_stdmelding_omschrijving mld_stdmelding_omschrijving, m.mld_melding_onderwerp, (SELECT mld_statuses_omschrijving FROM mld_statuses sta WHERE sta.mld_statuses_key = m.mld_melding_status) mld_melding_status, CASE WHEN mld_melding_actiecode = 2 THEN 'Actie bij aanvrager' WHEN mld_melding_actiecode = 129 THEN 'Attentie (actie bo)' ELSE 'Standaard' END actiecode_omschrijving, CASE WHEN mld_melding_flag > 0 THEN lcl.l ('lcl_mld_flag' || mld_melding_flag) END markering, 'nvt' mld_aanvrager, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.prs_perslid_key) bestemd_voor_personeelslid, -- Voor WF is dit aanvrager -- Behandeling m.mld_ins_discipline_key, md.ins_discipline_omschrijving actieve_behandelteam, m.mld_melding_behandelaar_key behandelaar_filter_key, COALESCE(pb.prs_perslid_naam_full,'') behandelaar_filter_naam, -- Datums en doorloop mld.getmeldingstatusdate (m.mld_melding_key, 4) datum_accept, m.mld_melding_einddatum, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)) datum_afgemeld, DECODE (mld.getactualuitvoer (m.mld_melding_key).eenheid, 'D', mld.getactualuitvoer (m.mld_melding_key).tijdsduur, mld.getactualuitvoer (m.mld_melding_key).tijdsduur/24) doorlooptijd_wd, -- Kenmerkvelden 'nvt' hr_functionaris, 'workflow - hoofmelding ' || to_char(m.mld_melding_start_key) workflow_gekoppeld, (SELECT mkm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mkm, mld_kenmerk k WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_verwijder IS NULL AND k.mld_srtkenmerk_key = 1741) controle_ADP -- srtkenmerk = 1742 in acceptatie FROM mld_melding m, prs_perslid p, -- aanvrager prs_v_perslid_fullnames_all pb, -- behandelaar mld_stdmelding s, mld_stdmeldinggroep sg, mld_discipline md, mld_disc_params mdp, ins_srtdiscipline sd, (SELECT m.mld_melding_start_key, s.mld_stdmelding_omschrijving FROM mld_melding m, mld_stdmelding s WHERE m.mld_melding_start_key = m.mld_melding_key AND m.mld_stdmelding_key = s.mld_stdmelding_key ) wf WHERE s.mld_stdmelding_key = m.mld_stdmelding_key AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_melding_behandelaar_key = pb.prs_perslid_key (+) AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND md.ins_discipline_key = mdp.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = 24 -- Alleen uit HR-Workflows AND s.mld_stdmeldinggroep_key = sg.mld_stdmeldinggroep_key (+) AND m.mld_melding_start_key <> m.mld_melding_key -- Alleen de actiemeldingen in de workflow tonen AND m.mld_melding_start_key = wf.mld_melding_start_key ; -- Rapporview voor HMOD voor de Informatiegids om de telefoonnummers van Management te kunnen opvragen... CREATE OR REPLACE VIEW hmod_v_rap_informatiegids ( BEDRIJFSNAAM, CONTACTPERSOON, CONTACT_TEL, CONTACT_MOB, CONTACT_MAIL, FUNCTIE, CONTACTPRS_INTERN, KERSTKAARTEN, JAARDOCUMENT, JAARDOCUMENT_PUBL, HUMIT_MAILING, RVT_MAILING ) AS SELECT v.BEDRIJFSNAAM, v.CONTACT_NAAM, v.CONTACT_TEL, v.CONTACT_MOB, v.CONTACT_EMAIL, v.FUNCTIE, v.contactpersoon_intern, v.kerstkaarten, v.jaardocument, v.jaardocument_publiekeversie, v.humit_mailing, v.mailing_rvt_voorzitter FROM (SELECT 0 AS soort, b.prs_bedrijf_key, b.prs_bedrijf_naam AS bedrijfsnaam, b.prs_bedrijf_contact_persoon AS contact_naam, b.prs_bedrijf_telefoon AS contact_tel, 'nvt' AS contact_mob, b.prs_bedrijf_email AS contact_email, 'nvt' AS functie, 'nvt' AS contactpersoon_intern, 'nvt' AS kerstkaarten, 'nvt' AS jaardocument, 'nvt' AS jaardocument_publiekeversie, 'nvt' AS humit_mailing, 'nvt' AS mailing_rvt_voorzitter FROM prs_bedrijf b WHERE b.prs_bedrijf_ingids IS NULL AND b.prs_bedrijf_verwijder IS NULL UNION ALL SELECT 1 AS soort, b.prs_bedrijf_key, b.prs_bedrijf_naam AS bedrijfsnaam, c.prs_contactpersoon_naam AS contact_naam, c.prs_contactpersoon_telefoon_1 AS contact_tel, c.prs_contactpersoon_telefoon_2 AS contact_mob, c.prs_contactpersoon_email AS contact_email, c.prs_contactpersoon_functie AS functie, (SELECT ud.fac_usrdata_omschr FROM prs_kenmerklink kw, prs_kenmerk k, fac_kenmerkdomein kd, fac_usrdata ud WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1260 AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND kd.fac_kenmerkdomein_module = 'PRS' AND kd.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (kw.prs_kenmerklink_waarde) = ud.fac_usrdata_key AND kw.prs_link_key = c.prs_contactpersoon_key) AS contactpersoon_intern, (SELECT DECODE (COALESCE (TO_CHAR (COUNT (*)), '0'), '1', 'aan', '0', 'uit', 'onbekend') FROM prs_kenmerklink kw WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1243 AND kw.prs_link_key = c.prs_contactpersoon_key) AS kerstkaarten, (SELECT DECODE (COALESCE (TO_CHAR (COUNT (*)), '0'), '1', 'aan', '0', 'uit', 'onbekend') FROM prs_kenmerklink kw WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1241 AND kw.prs_link_key = c.prs_contactpersoon_key) AS jaardocument, (SELECT DECODE (COALESCE (TO_CHAR (COUNT (*)), '0'), '1', 'aan', '0', 'uit', 'onbekend') FROM prs_kenmerklink kw WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1242 AND kw.prs_link_key = c.prs_contactpersoon_key) AS jaardocument_publiekeversie, (SELECT DECODE (COALESCE (TO_CHAR (COUNT (*)), '0'), '1', 'aan', '0', 'uit', 'onbekend') FROM prs_kenmerklink kw WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1240 AND kw.prs_link_key = c.prs_contactpersoon_key) AS humit_mailing, (SELECT DECODE (COALESCE (TO_CHAR (COUNT (*)), '0'), '1', 'aan', '0', 'uit', 'onbekend') FROM prs_kenmerklink kw WHERE kw.prs_kenmerklink_niveau = 'C' AND kw.prs_kenmerk_key = 1244 AND kw.prs_link_key = c.prs_contactpersoon_key) AS mailing_rvt_voorzitter FROM prs_bedrijf b, prs_contactpersoon c WHERE b.prs_bedrijf_ingids IS NULL AND b.prs_bedrijf_verwijder IS NULL AND b.prs_bedrijf_key = c.prs_bedrijf_key AND c.prs_contactpersoon_verwijder IS NULL) v ORDER BY v.bedrijfsnaam, v.soort; -- Rapport met de telefooncentrale-nr's als objecten vastgelegd onder objectsoort 2438 -- View kan in principe met udr-insdeel gemaakt worden echter dat rapport wordt dan nog niet goed getoond in Informatiegids -- Daarom een cust-view voor gemaakt. Zie ook ticket HMOD#64927. CREATE OR REPLACE VIEW hmod_v_rap_telefooncentr_nrs ( PLAATS, BEZOEKADRES, TELEFOON_AFDELING, AFDELING, -- opmerkingsinfo bij Object TELEFOON_ALGEMEEN, EMAIL_ALGEMEEN ) AS SELECT l.alg_locatie_plaats, l.alg_locatie_adres, i.ins_deel_omschrijving, i.ins_deel_opmerking, (SELECT kl.alg_onrgoedkenmerk_waarde FROM alg_onrgoedkenmerk kl, alg_kenmerk k WHERE kl.alg_kenmerk_key = k.alg_kenmerk_key AND kl.alg_onrgoed_key = l.alg_locatie_key AND kl.alg_onrgoed_niveau = 'L' AND k.alg_kenmerk_key = 1040) telefoon_algemeen, l.alg_locatie_email FROM ins_deel i, ins_srtdeel s, ins_v_alg_overzicht o, alg_locatie l WHERE i.ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type AND i.ins_alg_ruimte_type IN ('T', 'R', 'W') AND o.alg_locatie_key = i.ins_alg_locatie_key AND i.ins_alg_locatie_key = l.alg_locatie_key AND s.ins_srtdeel_key = i.ins_srtdeel_key AND s.ins_srtdeel_code = '2438' -- Telefooncentrale nummers AND i.ins_deel_opmerking IS NOT NULL ORDER BY l.alg_locatie_plaats, l.alg_locatie_adres, i.ins_deel_omschrijving ; -- View - Per persoon de eigendommen (gekoppelde objecten) en de persoonlijke koffersysteem-kenmerken ---- O.a. bedoeld om via gestylde UDR de gebruikersovereenkomst op te stellen CREATE OR REPLACE VIEW hmod_v_koffersysteem_prs ( PRS_PERSLID_KEY, PERSONEELSNR, NAAM, FUNCTIE, AFDELING, BEDRIJFSNAAM, TYPE_EIGENDOM, INS_DISC, INS_GROEP, INS_SOORT, INS_SOORT_CODE, SOORT_EIGENDOM, INS_DEEL_KEY, INS_DEEL_UPPER, GEBRUIKSEIGENDOM, MERK, TYPE, SERIENUMMER, IMEI_NR, FORMATIEPLAATS, KOFFERSYSTEEM_STATUS, DATUM_UITDIENST, PRS_PERSLID_VERWIJDER ) AS SELECT -- 1. Objecteigendommen p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam, sp.prs_srtperslid_omschrijving, a.prs_afdeling_naam || ' - ' || a.prs_afdeling_upper AS Afdeling, b.prs_bedrijf_naam, 'Apparatuur' type_eigendom, --apparatuur of rechten koffersysteem vd.ins_discipline_omschrijving, vd.ins_srtgroep_upper, vd.ins_srtdeel_upper, sd.ins_srtdeel_code, sd.ins_srtdeel_omschrijving, vd.ins_deel_key, vd.ins_deel_upper, COALESCE (s.sim_nr, vd.ins_deel_upper) IdentificatieCode, (SELECT kw.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kw, ins_kenmerk k WHERE kw.ins_deel_key = vd.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 9) merk, (SELECT kw.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kw, ins_kenmerk k WHERE kw.ins_deel_key = vd.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 11) type, (SELECT kw.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kw, ins_kenmerk k WHERE kw.ins_deel_key = vd.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 10) serienummer, (SELECT kw.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kw, ins_kenmerk k WHERE kw.ins_deel_key = vd.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 63) IMEI_nr, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1025) formatieplaats, (SELECT ud.fac_usrdata_omschr FROM prs_kenmerklink kw, prs_kenmerk k, fac_kenmerkdomein d, fac_usrtab ut, fac_usrdata ud WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1081 AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (kw.prs_kenmerklink_waarde) = ud.fac_usrdata_key) koffersysteem_status, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1100) datum_uitdienst, p.prs_perslid_verwijder FROM prs_perslid p, prs_v_afdeling_boom va, prs_bedrijf b, prs_afdeling a, prs_srtperslid sp, ins_v_deel_gegevens vd, ins_srtdeel sd, (SELECT d.ins_deel_key, d.ins_deel_upper, kw.ins_kenmerkdeel_waarde, sim.ins_deel_upper AS sim_nr FROM ins_deel d, ins_kenmerkdeel kw, ins_kenmerk k, ins_deel sim WHERE d.ins_deel_key = kw.ins_deel_key AND kw.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 24 -- SIM-kaart AND kw.ins_kenmerkdeel_verwijder IS NULL AND fac.safe_to_number (kw.ins_kenmerkdeel_waarde) = sim.ins_deel_key) s WHERE p.prs_afdeling_key = va.prs_afdeling_key AND va.prs_bedrijf_key = b.prs_bedrijf_key AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = vd.prs_perslid_key AND vd.ins_srtdeel_key = sd.ins_srtdeel_key AND vd.ins_deel_key = s.ins_deel_key(+) UNION ALL SELECT -- 2. Eigen koffersysteem p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam, sp.prs_srtperslid_omschrijving, a.prs_afdeling_naam || ' - ' || a.prs_afdeling_upper AS Afdeling, b.prs_bedrijf_naam, 'Eigen koffersysteem' type_eigendom, NULL, NULL, NULL, NULL, koffer.soort, NULL, NULL, prs_kenmerk_omschrijving, NULL, NULL, NULL, NULL, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1025) formatieplaats, (SELECT ud.fac_usrdata_omschr FROM prs_kenmerklink kw, prs_kenmerk k, fac_kenmerkdomein d, fac_usrtab ut, fac_usrdata ud WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1081 AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (kw.prs_kenmerklink_waarde) = ud.fac_usrdata_key) koffersysteem_status, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1100) datum_uitdienst, p.prs_perslid_verwijder FROM prs_perslid p, prs_v_afdeling_boom va, prs_bedrijf b, prs_afdeling a, prs_srtperslid sp, ( SELECT v.prs_link_key AS prs_perslid_key, v.prs_kenmerk_omschrijving, v.soort FROM ((SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Telefonie en IT' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1063) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Telefonie en IT' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1065) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Telefonie en IT' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1067) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Telefonie en IT' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1068) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Telefonie en IT' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1069) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1072) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1073) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1074) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1075) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1076) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1077) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1078) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1079) UNION (SELECT kw.prs_link_key, k.prs_kenmerk_omschrijving, 'Applicaties' AS Soort FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1080)) v ORDER BY v.prs_link_key, v.soort, v.prs_kenmerk_omschrijving) koffer WHERE p.prs_afdeling_key = va.prs_afdeling_key AND va.prs_bedrijf_key = b.prs_bedrijf_key AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND p.prs_perslid_key = koffer.prs_perslid_key AND p.prs_perslid_verwijder IS NULL ; -- Persoonlijk Koffersysteem vergeleken met Basis-koffersysteem (om snel discrepanties mee naar boven te halen CREATE OR REPLACE VIEW hmod_v_koffersysteem_prs2 ( PERSLID_KEY, PERSLID_NR, PERSLID_NAAM, FUNCTIE, AFDELING, BEDRIJF, FORMATIEPLAATS, KOFFERSYSTEEM_STATUS, B_LAP_EN_SIM, P_LAP_EN_SIM, B_LAPT, P_LAPT, B_MOB, P_MOB, B_TOKEN, P_TOKEN, B_HIT, P_HIT, B_FACILITOR, P_FACILITOR, B_ADP, P_ADP, B_ABSENTIEMANAGER, P_ABSENTIEMANAGER, B_REGAS, P_REGAS, B_CHECKS, P_CHECKS, B_ACCOUNTVIEW, P_ACCOUNTVIEW, B_ELVY, P_ELVY, B_HODNET, P_HODNET, B_PROACTIVE, P_PROACTIVE, B_TOEGANGSNIVEAU, -- tnc P_TOEGANGSNIVEAU, OPMERKING_KOFFERSYSTEEM, DATUM_UITDIENST, VERWIJDERD ) AS SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam, sp.prs_srtperslid_omschrijving, a.prs_afdeling_naam || ' - ' || a.prs_afdeling_upper AS Afdeling, b.prs_bedrijf_naam, v.formatieplaats, v.koffersysteem_status, COALESCE(k.lap_en_sim,'') b_lap_en_sim, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1063) p_lap_en_sim, COALESCE(k.lapt,'') b_lapt, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1065) p_lapt, COALESCE(k.mob,'') b_mob, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1067) p_mob, COALESCE(k.token,'') b_token, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1068) p_token, COALESCE(k.hit,'') b_hit, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1069) p_hit, COALESCE(k.facilitor,'') b_facilitor, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1072) p_facilitor, COALESCE(k.adp,'') b_adp, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1073) p_adp, COALESCE(k.absentiemanager,'') b_absentiemanager, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1074) p_absentiemanager, COALESCE(k.regas,'') b_regas, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1075) p_regas, COALESCE(k.checks,'') b_checks, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1076) p_checks, COALESCE(k.accountview,'') b_accountview, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1077) p_accountview, COALESCE(k.elvy,'') b_elvy, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1078) p_elvy, COALESCE(k.hodnet,'') b_hodnet, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1079) p_hodnet, COALESCE(k.proactive,'') b_proactive, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1080) p_proactive, COALESCE(k.tnc,'') b_toegangsniveau, (SELECT COALESCE(max(kw.prs_kenmerklink_waarde),'0') FROM prs_kenmerklink kw, prs_kenmerk k WHERE kw.prs_kenmerklink_niveau = 'P' AND kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.prs_kenmerk_key = 1061) p_toegangsniveau, k.opmerking, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1100) datum_uitdienst, p.prs_perslid_verwijder FROM prs_perslid p, prs_v_afdeling_boom va, prs_bedrijf b, prs_afdeling a, prs_srtperslid sp, (SELECT prs_perslid_key, (SELECT kw.prs_kenmerklink_waarde FROM prs_kenmerklink kw WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1025) formatieplaats, (SELECT ud.fac_usrdata_omschr FROM prs_kenmerklink kw, prs_kenmerk k, fac_kenmerkdomein d, fac_usrtab ut, fac_usrdata ud WHERE kw.prs_link_key = p.prs_perslid_key AND kw.prs_kenmerklink_niveau = 'P' AND kw.prs_kenmerk_key = 1081 AND kw.prs_kenmerk_key = k.prs_kenmerk_key AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (kw.prs_kenmerklink_waarde) = ud.fac_usrdata_key) koffersysteem_status FROM prs_perslid p ) v, ( SELECT * FROM hmod_v_koffersysteem WHERE TO_DATE (versiedatum, 'DD-MM-YYYY') = (SELECT MAX (TO_DATE (versiedatum, 'DD-MM-YYYY')) FROM hmod_v_koffersysteem) ) k WHERE p.prs_afdeling_key = va.prs_afdeling_key AND va.prs_bedrijf_key = b.prs_bedrijf_key AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND p.prs_perslid_key = v.prs_perslid_key AND p.prs_perslid_verwijder IS NULL AND v.formatieplaats = k.code (+) ; -- Meldingen en Actiedatums CREATE OR REPLACE VIEW hmod_v_rap_meldingen_bo ( MLD_MELDING_KEY, MLD_MELDING_ONDERWERP, BEHANDELAAR_KEY, BEHANDELAAR, MLD_STDMELDING_OMSCHRIJVING, MLD_STDMELDINGGROEP_NAAM, MLD_STATUS_OMSCHRIJVING, LOCATIE_PLAATS, LOCATIE_OMSCHRIJVING, MLD_MELDING_DATUM, MLD_MELDING_ACTIEDATUM, MLD_MELDING_ACTIEDATUM_B, -- berekend voor kalenderweergave MLD_MELDING_EINDDATUM, OPDRACHTEN_AANTAL_LOPEND, STATUS_KALENDER -- t.b.v. kalenderweergave ) AS SELECT m.mld_melding_key, m.mld_melding_onderwerp, m.mld_melding_behandelaar_key, COALESCE(pb.prs_perslid_naam_friendly, '') behandelaar, std.mld_stdmelding_omschrijving, stg.mld_stdmeldinggroep_naam, ms.mld_statuses_omschrijving, l.alg_locatie_plaats, l.alg_locatie_omschrijving, m.mld_melding_datum, m.mld_melding_actiedatum, CASE WHEN m.mld_melding_actiedatum IS NULL THEN m.mld_melding_datum ELSE m.mld_melding_actiedatum END mld_melding_actiedatum_b, m.mld_melding_einddatum, (SELECT count(*) FROM mld_opdr o WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_statusopdr_key IN (5,8) ) -- uitgegeven, geaccepteerd opdrachten_aantal_lopend, CASE WHEN ms.mld_statuses_key IN (2,3,4,7) AND m.mld_melding_actiedatum IS NULL THEN 'Nog inplannen' -- lopende melding nog inplannen WHEN ms.mld_statuses_key IN (2,3,4,7) AND m.mld_melding_actiedatum IS NOT NULL THEN 'Ingepland' -- lopende melding nog inplannen ELSE ms.mld_statuses_omschrijving END status_kalender FROM mld_melding m, mld_statuses ms, prs_v_perslid_fullnames p, -- melder prs_v_perslid_fullnames pb, -- behandelaar ins_tab_discipline d, mld_stdmelding std, mld_stdmeldinggroep stg, alg_locatie l, alg_district d WHERE 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 l.alg_district_key = d.alg_district_key AND m.mld_melding_status = ms.mld_statuses_key AND m.prs_perslid_key = p.prs_perslid_key(+) AND m.mld_melding_behandelaar_key = pb.prs_perslid_key (+) AND std.mld_stdmeldinggroep_key = stg.mld_stdmeldinggroep_key (+) ; -- Tbv calenderview op actiedatum vanuit Meldingen CREATE OR REPLACE VIEW hmod_v_cal_meldingen_bo ( USER_KEY, TITLE, VAN, TOT, ITEM_KEY, COLOR, TEXTCOLOR, BEHANDELAAR, ADRES, STATUS_KALENDER, MLD_STDMELDINGGROEP_NAAM ) AS SELECT behandelaar_key, ' - M' || mld_melding_key || ' - ' || mld_melding_onderwerp || CHR(10) || locatie_plaats || ' - ' || locatie_omschrijving || CHR(10) || CASE WHEN mld_melding_actiedatum IS NOT NULL THEN 'Van ' || TO_CHAR(mld_melding_actiedatum_b) || ' tot ...........' || CHR(10) ELSE '' || CHR(10) END || CHR(10) || 'Einddatum melding: ' || TO_CHAR(mld_melding_einddatum, 'dd-mm-yyyy') || CHR(10) || 'Behandelaar: ' || behandelaar || CASE WHEN opdrachten_aantal_lopend >0 THEN CHR(10) || 'Lopende opdrachten:' || TO_CHAR(opdrachten_aantal_lopend) || 'x' ELSE '' END title, mld_melding_actiedatum_b van, mld_melding_actiedatum_b + 2/24 tot, mld_melding_key, DECODE (status_kalender, 'Afgewezen', '#C0C0C0', -- grijs 'Afgemeld', '#C0C0C0', -- grijs 'Nog inplannen', '#f58a20', -- oranje 'Ingepland', '#20b2f5', -- lichtblauw '#0000FF') color, DECODE (status_kalender, 'Afgewezen', '#bf0b3b', -- rood 'Afgemeld', '#000000', -- zwart 'Nog inplannen', '#FFFFFF', -- wit, 'Ingepland', '#FFFFFF', '#000000') textcolor, behandelaar, locatie_plaats || ' - ' || locatie_omschrijving adres, status_kalender, mld_stdmeldinggroep_naam FROM hmod_v_rap_meldingen_bo ORDER BY mld_melding_actiedatum ; -- Opdrachten en Geplande aanvang --- uit storingen en service-aanvragen CREATE OR REPLACE VIEW hmod_v_rap_opdrachten ( INTERN, TYPE, MLD_OPDR_KEY, MLD_UITVOERENDE_KEY, OPDRACHTNR, STATUS, MELDING, BEHANDELAAR, LOCATIE_PLAATS, LOCATIE_OMSCHRIJVING, OPDRACHT_AANMAAKDATUM, GEPLANDE_AANVANG, GEPLANDE_AANVANG_B, -- berekend voor kalenderweergave GEPLANDE_EINDDATUM, GEPLANDE_EINDDATUM_B, -- berekend voor kalenderweergave OPDRACHT_EINDDATUM, MELDING_EINDDATUM, OMSCHRIJVING, PRS_PERSLID_KEY, NAAM_UITVOERDER, UREN_BESTEED, AFMELD_DATUM, OPDRACHT_TYPE, TD_NAAM, PRIORITEIT, STATUS_KALENDER, -- t.b.v. kalenderweergave ACTIE_CODE_OPDRACHT, FCLT_3D_DISCIPLINE_KEY, -- vakgroep_key VAKGROEP, VAKGROEPTYPE ) AS SELECT mu.intern, CASE WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN 'Poule-opdracht' WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN 'Klus-opdracht' WHEN mu.intern = 0 THEN 'Externe opdracht' ELSE '' END TYPE, o.mld_opdr_key, CASE WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN mu.mld_uitvoerende_key WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.mld_uitvoerende_key WHEN mu.intern = 0 THEN mu.mld_uitvoerende_key ELSE NULL END mld_uitvoerende_key, TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer, 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, l.alg_locatie_omschrijving, o.mld_opdr_datumbegin, o.mld_opdr_plandatum geplande_aanvang, CASE WHEN o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum ELSE o.mld_opdr_datumbegin END geplande_aanvang_b, o.mld_opdr_plandatum2 geplande_einddatum, CASE WHEN o.mld_opdr_plandatum2 IS NOT NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum2 WHEN o.mld_opdr_plandatum2 IS NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum + 2/24 ELSE o.mld_opdr_datumbegin + 2/24 END geplande_einddatum_b, o.mld_opdr_einddatum, m.mld_melding_einddatum, TRIM ( REGEXP_REPLACE ( REGEXP_SUBSTR (o.mld_opdr_omschrijving, '(([^ ]*)( |$)*){10}'), '[[:space:]]', ' ')) || '...' omschrijving, p.prs_perslid_key, mu.naam naam_uitvoerder, (SELECT ko.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = 203) -- kenmerk Uren_besteed uren_besteed, (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 afmeld_datum, ot.mld_typeopdr_omschrijving, CASE WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN COALESCE (p.prs_perslid_naam_full, '') WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.naam ELSE '' END td_naam, CASE WHEN mu.intern = 1 THEN COALESCE(v.prioriteit,'3 - NORMAAL') ELSE 'nvt' END prioriteit, CASE WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld' WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen' WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog inplannen' WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Ingepland' WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog niet bevestigd' WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Bevestigd' ELSE '' END status_kalender, CASE WHEN o.mld_opdr_actiecode = 1 THEN 'Bij uitvoerder (1)' WHEN o.mld_opdr_actiecode = 4 THEN 'Bij uitvoerder (4)' WHEN o.mld_opdr_actiecode = 129 THEN 'Bij backoffice' ELSE 'Bij uitvoerder (0)' END actie_code_opdracht, d.ins_discipline_key, d.ins_discipline_omschrijving, sd.ins_srtdiscipline_omschrijving FROM mld_opdr o, mld_melding m, mld_typeopdr ot, prs_v_perslid_fullnames p, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std, alg_locatie l, alg_district di, mld_v_uitvoerende mu, mld_statusopdr os, ( SELECT ko.mld_opdr_key, ud.fac_usrdata_code || ' - ' || ud.fac_usrdata_omschr prioriteit FROM mld_kenmerkopdr ko, fac_usrdata ud WHERE fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key AND fac_usrtab_key = 641 -- keuzelijst eigen tabel Prioriteit AND ko.mld_kenmerk_key IN (3881, 3901) -- kenmerk Prioriteit ) v 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 d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key IN (22, 23) -- Storingen en Serviceaanvragen AND m.mld_alg_locatie_key = l.alg_locatie_key (+) AND l.alg_district_key = di.alg_district_key (+) AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key AND os.mld_statusopdr_key = o.mld_statusopdr_key AND o.mld_opdr_key = v.mld_opdr_key(+); -- Tbv calenderview vanuit Opdrachten - geplande aanvang CREATE OR REPLACE VIEW hmod_v_cal_opdrachten ( USER_KEY, TITLE, VAN, TOT, ITEM_KEY, COLOR, TEXTCOLOR, NAAM_UITVOERRDER, LOCATIE_PLAATS, STATUS_KALENDER, INTERN, OPDRACHT_TYPE ) AS SELECT mld_uitvoerende_key, ' - ' || opdrachtnr || CHR(10) || naam_uitvoerder || CHR(10) || locatie_omschrijving || CHR(10) || 'Status: ' || status_kalender || CHR(10) || CASE WHEN geplande_einddatum IS NOT NULL THEN DECODE(intern, 1, 'Ingepland tot ', 'Bevestigd voor ') || TO_CHAR(geplande_einddatum_b) || CHR(10) ELSE '' END || CASE WHEN intern = 1 THEN CHR(10) || 'Prio: ' || prioriteit ELSE '' END title, geplande_aanvang_b van, geplande_einddatum_b tot, mld_opdr_key, DECODE (intern, 1, DECODE (status_kalender, 'Afgewezen', '#C0C0C0', -- grijs 'Afgemeld', '#C0C0C0', -- grijs 'Nog inplannen', '#f58a20', -- oranje 'Ingepland', '#20b2f5', -- lichtblauw '#0000FF'), 0, DECODE (status_kalender, 'Afgewezen', '#C0C0C0', -- grijs 'Afgemeld', '#C0C0C0', -- grijs 'Nog niet bevestigd', '#F5ED5D', -- lichtgeel 'Bevestigd', '#DED304', -- donkergeel '#0000FF'), '#0000FF' ) color, -- DECODE (intern, 1, DECODE (status_kalender, 'Afgewezen', '#bf0b3b', -- rood 'Afgemeld', '#000000', -- zwart 'Nog inplannen', '#FFFFFF', -- wit, 'Ingepland', DECODE (LOWER(prioriteit), '3 - normaal', '#FFFFFF', -- wit '4 - laag', '#FFFFFF', -- wit '2 - hoog', '#f58a20', -- oranje '1 - kritiek', '#bf0b3b', -- rood '#000000'), '#000000'), 0, DECODE (status_kalender, 'Afgewezen', '#bf0b3b', -- rood 'Afgemeld', '#000000', -- zwart 'Nog niet bevestigd', '#000000', -- zwart 'Bevestigd', '#000000', -- zwart 'Toegekend', '#FFFFFF', -- wit, '#0000FF'), '#000000' ) textcolor, naam_uitvoerder, locatie_plaats, status_kalender, intern, opdracht_type FROM hmod_v_rap_opdrachten ORDER BY geplande_aanvang_b ; -- view om QR codes voor een deel te genereren CREATE OR REPLACE VIEW hmod_v_rap_qr_deel AS SELECT fac_bookmark_naam, fac_bookmark_id, b.fac_bookmark_path, b.fac_bookmark_query, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_deel_omschrijving, CASE WHEN d.ins_discipline_key = 109 -- IT THEN (SELECT k.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel k WHERE k.ins_deel_key = d.ins_deel_key AND k.ins_kenmerk_key = 21) ELSE NULL END serienummer, DECODE (d.ins_discipline_key, 109, flx.getdomeinwaarde (61, flx.getflex('INS', 26, ins_deel_key)), -- IT 110, flx.getdomeinwaarde (61, flx.getflex('INS', 27, ins_deel_key)), -- Inventaris 'Nee') gestickerd, DECODE(flx.getflex ('INS', 582, d.ins_deel_key), '1', 'ja', 'nee') bekend_bij_microsoft, TO_DATE(flx.getflex ('INS', 583, d.ins_deel_key),'dd-mm-yyyy') datum_configuratie, CASE WHEN alg_locatie_key IS NOT NULL THEN 'Locatiegebonden' WHEN d.prs_perslid_key IS NOT NULL THEN 'Persoonsgebonden' ELSE 'Overig' END type, alg_locatie_key, alg_gebouw_omschrijving, d.prs_perslid_key, prs_perslid_volnaam, ins_deel_aanmaak, ins_deel_key FROM fac_bookmark b, ins_v_deel_gegevens d WHERE fac_bookmark_expire IS NULL AND fac_bookmark_id = 'QPgqz69zEKMLncP6'; ------ 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