MNNL#78061 PRS-import/Uitbreiden met P-kolom
svn path=/Customer/trunk/; revision=64490
This commit is contained in:
176
MNNL/mnnl.sql
176
MNNL/mnnl.sql
@@ -486,6 +486,182 @@ BEGIN
|
||||
END mnnl_update_prs;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE MNNL_IMPORT_WW (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||||
v_errormsg VARCHAR2 (1000) := '';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (1000) := '';
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_imp NUMBER (10) := 0;
|
||||
-- De importvelden
|
||||
v_perslid_nr VARCHAR2 (255);
|
||||
v_afstand_ww VARCHAR2 (255);
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
DELETE FROM mnnl_imp_ww;
|
||||
COMMIT;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen importregel';
|
||||
v_aanduiding := '';
|
||||
-- Lees alle veldwaarden
|
||||
--Personeelsnummer;Afstand woon werk
|
||||
fac.imp_getfield (v_newline, c_delim, v_perslid_nr);
|
||||
fac.imp_getfield (v_newline, c_delim, v_afstand_ww);
|
||||
v_aanduiding := '[' || v_perslid_nr || '|' || v_afstand_ww || '] ';
|
||||
|
||||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
||||
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
IF UPPER (v_perslid_nr) = 'PERSONEELSNUMMER'
|
||||
AND UPPER (v_afstand_ww) = 'AFSTAND WOON WERK'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
||||
THEN
|
||||
BEGIN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
|
||||
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
||||
v_errormsg := 'Fout wegschrijven importregel';
|
||||
INSERT INTO mnnl_imp_ww (perslid_nr, afstand_ww)
|
||||
VALUES (TRIM (v_perslid_nr), fac.safe_to_number (REPLACE (v_afstand_ww, ',', '.')));
|
||||
|
||||
v_count_imp := v_count_imp + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||||
END;
|
||||
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 afspraak!');
|
||||
ELSE
|
||||
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||||
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||||
END IF;
|
||||
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_aanduiding || v_errormsg, 'Inleesproces Woon-Werk afgebroken!');
|
||||
END MNNL_IMPORT_WW;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE MNNL_UPDATE_WW (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_ww_kkey NUMBER (10) := 1000; -- 'Woon-Werk-afstand'-kenmerk!
|
||||
c_pp_gkey NUMBER (10) := 2421; -- 'Parkeerplaats'-autorisatiegroep!
|
||||
v_errormsg VARCHAR2 (1000) := '';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (1000) := '';
|
||||
v_count NUMBER (10);
|
||||
|
||||
-- Bijwerken persoonsgegevens met Woon-Werk-afstand.
|
||||
CURSOR c_upd_ww
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_nr || '] ' aanduiding,
|
||||
p.prs_perslid_key,
|
||||
p.prs_perslid_nr,
|
||||
kl.prs_kenmerklink_key,
|
||||
ROUND (x.afstand_ww, 2) afstand_ww
|
||||
FROM mnnl_imp_ww x,
|
||||
prs_v_aanwezigperslid p,
|
||||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
|
||||
WHERE x.perslid_nr = p.prs_perslid_nr
|
||||
AND p.prs_perslid_inactief IS NULL
|
||||
AND p.prs_perslid_key = kl.prs_link_key(+)
|
||||
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) != x.afstand_ww -- Afstand gewijzigd?
|
||||
ORDER BY 2;
|
||||
BEGIN
|
||||
v_count := 0;
|
||||
FOR rec IN c_upd_ww
|
||||
LOOP
|
||||
BEGIN
|
||||
IF rec.prs_kenmerklink_key IS NULL
|
||||
THEN
|
||||
v_errormsg := 'Fout toevoegen woon-werk-afstand';
|
||||
INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde)
|
||||
VALUES (rec.prs_perslid_key, 'P', c_ww_kkey, TO_CHAR (rec.afstand_ww));
|
||||
ELSE
|
||||
v_errormsg := 'Fout bijwerken woon-werk-afstand';
|
||||
UPDATE prs_kenmerklink
|
||||
SET prs_kenmerklink_waarde = TO_CHAR (rec.afstand_ww)
|
||||
WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key;
|
||||
END IF;
|
||||
v_count := v_count + 1;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#bijgewerkt: ' || TO_CHAR (v_count), '');
|
||||
|
||||
-- Afnemen PP-autorisatiegroep als geldt woon-werk-afstand <=8km!
|
||||
v_errormsg := 'Fout afnemen PP-autorisatiegroep';
|
||||
DELETE FROM fac_gebruikersgroep gg
|
||||
WHERE gg.fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
|
||||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
|
||||
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
|
||||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||||
AND ab.prs_bedrijf_key = 5 -- MN
|
||||
AND p.prs_perslid_key = kl.prs_link_key(+)
|
||||
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) < 8
|
||||
AND p.prs_perslid_key = gg.prs_perslid_key);
|
||||
|
||||
-- Toekennen PP-autorisatiegroep als geldt woon-werk-afstand >8km!
|
||||
v_errormsg := 'Fout toekennen PP-autorisatiegroep';
|
||||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||||
SELECT c_pp_gkey, p.prs_perslid_key -- PP-autorisatiegroep
|
||||
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
|
||||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
|
||||
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
|
||||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||||
AND ab.prs_bedrijf_key = 5 -- MN
|
||||
AND p.prs_perslid_key = kl.prs_link_key(+)
|
||||
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) > 8
|
||||
AND NOT EXISTS -- Niet al in PP-autorisatiegroep!
|
||||
(SELECT 1
|
||||
FROM fac_gebruikersgroep
|
||||
WHERE fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
|
||||
AND prs_perslid_key = p.prs_perslid_key);
|
||||
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_aanduiding || v_errormsg, 'Importproces Woon-Werk afgebroken!');
|
||||
END MNNL_UPDATE_WW;
|
||||
/
|
||||
|
||||
-- KOPPELING SENTIDO
|
||||
CREATE OR REPLACE VIEW mnnl_v_api_sentido
|
||||
AS
|
||||
|
||||
Reference in New Issue
Block a user