HPJI#36139 script import persoonsgegevens: vertraging en mobiele nummer toevoegen

svn path=/Customer/trunk/; revision=29401
This commit is contained in:
Peter Koerhuis
2016-05-13 14:30:17 +00:00
parent 99c2a035a8
commit ee428c6aa5

View File

@@ -249,6 +249,7 @@ IS
v_alg_locatie_oms VARCHAR2 (256); -- A30
v_alg_ruimte_nr VARCHAR2 (256); -- A10
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_mobiel VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_ingangsdatum VARCHAR2 (256);
v_prs_perslid_einddatum VARCHAR2 (256);
@@ -279,60 +280,43 @@ BEGIN
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_oslogin);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 03
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
-- 04
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
-- 05
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voornaam);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_oms);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
-- 11
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
-- 13
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 14
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_einddatum);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_ingangsdatum);
-- 15
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_domain);
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_einddatum);
-- 16
fac.imp_getfield (v_newline, c_fielddelimitor, v_domain);
--
v_aanduiding := '[' || v_prs_perslid_oslogin
|| '|' || v_prs_perslid_naam
|| '|' || v_prs_perslid_tussenvoegsel
|| '|' || v_prs_perslid_voornaam
|| '|' || v_prs_perslid_nr
|| '|' || v_domain
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
@@ -353,6 +337,7 @@ BEGIN
AND UPPER (v_alg_locatie_oms) = 'LOCATIE'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTE'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
AND UPPER (v_prs_perslid_mobiel) = 'MOBIEL'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_ingangsdatum) = 'DATUM IN DIENST'
AND UPPER (v_prs_perslid_einddatum) = 'DATUM UIT DIENST'
@@ -366,6 +351,26 @@ BEGIN
THEN
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
-- HPJI#36139: de domain-kolom is tijdelijk gebruikt toen voor Poortje en Elker
-- aparte importbestanden werden aangeleverd. Nu staat daarin altijd 'JHNN' en is
-- niet meer te herleiden naar een prs_bedrijf. We checken er nog op om te
-- voorkomen dat een importbestand 'oude stijl' wordt ingelezen, maar we
-- importeren het niet meer.
v_errorhint := 'Ongeldig domain';
v_domain := UPPER( SUBSTR( TRIM(v_domain), 1, 30) );
IF ('x'||v_domain != 'xJHNN')
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'ongeldig domain ['||v_domain||']',
'Regel wordt overgeslagen!');
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
@@ -613,6 +618,25 @@ BEGIN
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig mobiel nummer';
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
IF LENGTH (v_prs_perslid_mobiel) > 15
THEN
v_prs_perslid_mobiel :=
SUBSTR (v_prs_perslid_mobiel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Mobiel nummer te lang',
'Mobiel nummer wordt afgebroken tot ['
|| v_prs_perslid_mobiel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
@@ -694,21 +718,6 @@ BEGIN
ELSE
v_prs_perslid_eind_date := NULL;
END IF;
--
v_errorhint := 'Ongeldig domain';
v_domain := UPPER( SUBSTR( TRIM(v_domain), 1, 30) );
IF ( 'x'||v_domain != 'xELKER'
AND 'x'||v_domain != 'xPOORTJE')
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'ongeldig domain',
'Regel wordt overgeslagen!');
COMMIT;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
@@ -729,10 +738,10 @@ BEGIN
alg_locatie,
alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
prs_bedrijf_key)
prs_perslid_einddatum)
VALUES (SYSDATE,
v_prs_perslid_oslogin,
v_prs_perslid_naam,
@@ -745,12 +754,10 @@ BEGIN
v_alg_locatie_oms,
v_alg_ruimte_nr,
v_prs_perslid_telefoonnr,
v_prs_perslid_mobiel,
v_prs_perslid_email,
v_prs_perslid_ingangs_date,
v_prs_perslid_eind_date,
DECODE(v_domain,
'POORTJE', 21,
'ELKER', 28580) );
v_prs_perslid_eind_date);
COMMIT;
v_count_import := v_count_import + 1;
@@ -854,28 +861,16 @@ IS
-- Let op! Personen die niet meer in dienst zijn -> niet in hpji_imp_prs!
-- Dubbele oslogins? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
-- HPJI#32107: Voor Poortje en Elker worden voortaan aparte bestanden aangeleverd.
-- Je wilt geen Poortje-mensen verwijderen met een Elker-importbestand. Daarom alleen
-- mensen beschouwen binnen het bedrijf (domain, laatste kolom in import) dat in het
-- importbestand voorkomt. Daarbij meteen zorgen dat we ook importbestanden met beide
-- domains ondersteunen (mochten ze er ooit <20><>n bestand van maken)
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam,
ab.prs_bedrijf_key,
b.prs_bedrijf_naam
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE (p.prs_perslid_oslogin IS NULL
OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\')
AND p.prs_perslid_oslogin2 IS NULL
AND ab.prs_afdeling_key = p.prs_afdeling_key
AND b.prs_bedrijf_key = ab.prs_bedrijf_key
AND ab.prs_bedrijf_key IN (SELECT DISTINCT prs_bedrijf_key FROM hpji_imp_prs)
AND NOT EXISTS
(SELECT 1
FROM hpji_imp_prs ip
@@ -884,17 +879,10 @@ IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam,
ab.prs_bedrijf_key,
b.prs_bedrijf_naam
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_oslogin IS NULL
AND p.prs_perslid_naam LIKE 'INACTIEF:%'
AND ab.prs_afdeling_key = p.prs_afdeling_key
AND b.prs_bedrijf_key = ab.prs_bedrijf_key
AND ab.prs_bedrijf_key IN (SELECT DISTINCT prs_bedrijf_key FROM hpji_imp_prs)
AND NOT EXISTS (SELECT 1
FROM prs_v_verplichting_keys pv
WHERE p.prs_perslid_key = pv.prs_perslid_key);
@@ -913,10 +901,8 @@ IS
-- Dubbele oslogins? Dan wordt slechts 1 set persoongegevens toegevoegd!
CURSOR cperslid
IS
SELECT ip.*, prs_bedrijf_naam
FROM hpji_imp_prs ip,
prs_bedrijf b
WHERE b.prs_bedrijf_key IN (SELECT DISTINCT prs_bedrijf_key FROM hpji_imp_prs);
SELECT *
FROM hpji_imp_prs;
-- Let op! Personen die niet meer in dienst zijn -> niet in hpji_imp_prs!
-- Dubbele oslogins? Dan krijgt iemand mogelijk de verkeerde plaats!
@@ -969,22 +955,16 @@ BEGIN
SELECT COUNT ( * )
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
hpji_imp_prs ip
WHERE p.prs_perslid_oslogin IS NOT NULL
AND ab.prs_afdeling_key = p.prs_afdeling_key
AND ip.prs_bedrijf_key = ab.prs_bedrijf_key
AND UPPER (p.prs_perslid_oslogin) = UPPER (ip.prs_perslid_oslogin)
AND (ip.imp_datum + 0.01) > SYSDATE;
-- Bepaal huidig aantal actieve personen in Facilitor.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab
WHERE prs_perslid_oslogin IS NOT NULL
AND ab.prs_afdeling_key = p.prs_afdeling_key
AND ab.prs_bedrijf_key IN (SELECT DISTINCT prs_bedrijf_key FROM hpji_imp_prs);
FROM prs_v_aanwezigperslid p
WHERE prs_perslid_oslogin IS NOT NULL;
IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage)))
@@ -1015,8 +995,7 @@ BEGIN
v_aanduiding := recdelprs.prs_perslid_oslogin
|| '|' || recdelprs.prs_perslid_naam
|| '|' || recdelprs.prs_perslid_voornaam
|| '(' || recdelprs.prs_bedrijf_naam
|| ') - ';
|| ' - ';
v_errorhint := 'Fout bij bepalen verplichtingen';
-- Heeft persoon actuele/toekomstige verplichtingen?
@@ -1198,8 +1177,7 @@ BEGIN
v_aanduiding := recperslid.prs_perslid_oslogin
|| '|' || recperslid.prs_perslid_naam
|| '|' || recperslid.prs_perslid_voornaam
|| '(' || recperslid.prs_bedrijf_naam
|| ') - ';
|| ' - ';
v_errorhint :=
'Fout bij bepalen functie ['
|| recperslid.prs_srtperslid_omschrijving
@@ -1235,7 +1213,7 @@ BEGIN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errorhint,
'Kan persoon niet 1-duidig bepalen!');
'Kan persoon niet eenduidig bepalen!');
COMMIT;
ELSE
IF v_count = 0
@@ -1406,7 +1384,7 @@ BEGIN
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kan ruimte niet 1-duidig bepalen!');
'Kan ruimte niet eenduidig bepalen!');
COMMIT;
ELSE
IF v_count = 1
@@ -3267,7 +3245,7 @@ EXCEPTION
END;
/
BEGIN fac.registercustversion('HPJI', 11); END;
BEGIN fac.registercustversion('HPJI', 12); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/