178 lines
7.0 KiB
SQL
178 lines
7.0 KiB
SQL
--
|
|
-- $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;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
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
|