-- -- $Id$ -- -- Script containing customer specific db-configuration for PCIN. DEFINE thisfile = 'PCIN.SQL' DEFINE dbuser = '^PCIN' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE VIEW pcin_v_rap_import_log ( fclt_f_applicatie, datum, fclt_f_status, omschrijving, hint ) AS SELECT COALESCE (fac_import_app_code, imp_log_applicatie), TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'), imp_log_status, imp_log_omschrijving, imp_log_hint FROM imp_log il1, fac_import fi1, fac_import_app fia1 WHERE il1.fac_import_key = fi1.fac_import_key(+) AND fi1.fac_import_app_key = fia1.fac_import_app_key(+) AND NOT EXISTS (SELECT 1 FROM imp_log il2, fac_import fi2 WHERE il2.fac_import_key = fi2.fac_import_key AND fi2.fac_import_app_key = fi1.fac_import_app_key AND il2.fac_import_key > il1.fac_import_key); CREATE OR REPLACE PROCEDURE pcin_import_prs (p_import_key IN NUMBER) AS v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN v_errorhint := 'Generieke import'; --Naam;Voornaam;tussenvoegsel;Achternaam;Login;Plaats;Mobiel;Email;Personeelsnummer;Afdelingscode;Functie -- 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;10;4;3;2;' || '0;0;0;0;0;0;7;8;0;9;' || '11;5;0;0;0;0;6;0;0;0;' || '0;0;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', 'Naam;Voornaam;tussenvoegsel;Achternaam;Login;Plaats;Mobiel;Email;Personeelsnummer;Afdelingscode;Functie%'); COMMIT; -- Klantspecifieke aanpassingen. -- Locatie/Gebouw/Verdieping/Ruimte bepalen via Plaats-kolom -> Bezoekplaats van Locatie -- en daaronder Ruimte '_000' op Verdieping 0! -- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze -- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon -- naar Ruimte '_000' op Verdieping 0 op import-locatie! -- Eventuele WPs onder andere locaties dan de import-locatie blijven ook ongewijzigd! UPDATE fac_imp_perslid i SET i.alg_locatie_code = (SELECT il.alg_locatie_code FROM alg_v_aanweziglocatie il WHERE il.alg_locatie_upper = UPPER (i.prs_kenmerk1) -- Of UPPER (il.alg_locatie_bezoek_plaats) = UPPER (i.prs_kenmerk1)? AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziglocatie WHERE alg_locatie_upper = UPPER (i.prs_kenmerk1) AND alg_locatie_key < il.alg_locatie_key)), i.alg_gebouw_code = (SELECT MIN (ig.alg_gebouw_code) FROM alg_v_aanweziglocatie il, alg_v_aanweziggebouw ig WHERE il.alg_locatie_upper = UPPER (i.prs_kenmerk1) -- Of UPPER (il.alg_locatie_bezoek_plaats) = UPPER (i.prs_kenmerk1)? AND il.alg_locatie_key = ig.alg_locatie_key AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziglocatie WHERE alg_locatie_upper = UPPER (i.prs_kenmerk1) AND alg_locatie_key < il.alg_locatie_key)), i.alg_verdieping_volgnr = 0, i.alg_ruimte_nr = '_000' WHERE NOT EXISTS -- Nog geen werkplek binnen Locatie! (SELECT 1 FROM alg_v_aanweziglocatie il, prs_v_aanwezigperslid p, prs_perslidwerkplek pw, prs_werkplek cw, alg_v_aanwezigruimte cr, alg_verdieping cv, alg_gebouw cg, alg_locatie cl WHERE il.alg_locatie_upper = UPPER (i.prs_kenmerk1) -- Of UPPER (il.alg_locatie_bezoek_plaats) = UPPER (i.prs_kenmerk1)? AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziglocatie WHERE alg_locatie_upper = UPPER (i.prs_kenmerk1) AND alg_locatie_key < il.alg_locatie_key) AND p.prs_perslid_nr = i.prs_perslid_nr AND p.prs_perslid_key = pw.prs_perslid_key AND pw.prs_werkplek_key = cw.prs_werkplek_key AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key AND cr.alg_verdieping_key = cv.alg_verdieping_key AND cv.alg_gebouw_key = cg.alg_gebouw_key AND cg.alg_locatie_key = il.alg_locatie_key); COMMIT; -- Strippen 'PCI\' uit loginnaam! UPDATE fac_imp_perslid i SET i.prs_perslid_oslogin = SUBSTR (i.prs_perslid_oslogin, 5) WHERE UPPER (i.prs_perslid_oslogin) LIKE 'PCI\\%' ESCAPE '\'; -- ' tbv. opmaak 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, 'Inleesproces personen afgebroken!'); END pcin_import_prs; / CREATE OR REPLACE PROCEDURE pcin_update_prs (p_import_key IN NUMBER) IS -- Let op! Personen die niet meer in dienst zijn -> niet in fac_imp_perslid! -- Dubbele perslid_nr? Dan wordt iemand mogelijk niet verwijderd/INACTIEF! CURSOR c_del IS --SELECT p.prs_perslid_key, p.prs_perslid_nr -- FROM prs_v_aanwezigperslid p, fac_imp_perslid i -- WHERE p.prs_perslid_nr IS NOT NULL -- AND p.prs_perslid_nr = i.prs_perslid_nr(+) -- AND i.prs_perslid_nr IS NULL SELECT p.prs_perslid_key, p.prs_perslid_nr FROM prs_v_aanwezigperslid p WHERE p.prs_perslid_nr IS NOT NULL AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid i WHERE UPPER (i.prs_perslid_nr) = UPPER (p.prs_perslid_nr)) ORDER BY 2; BEGIN -- Generieke update. prs.update_perslid (p_import_key, 'NR', 'A'); -- Verwijder personen die niet meer in de import voorkomen. FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; END pcin_update_prs; / ------ 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