PCIN#39973 PRS-import
svn path=/Customer/trunk/; revision=35017
This commit is contained in:
171
PCIN/pcin.sql
Normal file
171
PCIN/pcin.sql
Normal file
@@ -0,0 +1,171 @@
|
||||
--
|
||||
-- $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;
|
||||
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
|
||||
Reference in New Issue
Block a user