1449 lines
62 KiB
SQL
1449 lines
62 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific configuration sql statements for DLLG: De Lage Landen Group
|
|
|
|
DEFINE thisfile = 'DLLG.SQL'
|
|
DEFINE dbuser = '^DLLG'
|
|
|
|
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 PACKAGE DLLG
|
|
AS
|
|
|
|
FUNCTION res_presave (p_user_key IN NUMBER,
|
|
p_rsv_ruimte_key IN NUMBER,
|
|
p_activiteit_key IN NUMBER,
|
|
p_res_deel_key IN NUMBER,
|
|
p_datum_van IN DATE,
|
|
p_datum_tot IN DATE,
|
|
p_volgnr IN NUMBER)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE update_bezoeker (p_bezkey IN NUMBER);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY DLLG
|
|
AS
|
|
|
|
FUNCTION res_presave (p_user_key IN NUMBER,
|
|
p_rsv_ruimte_key IN NUMBER,
|
|
p_activiteit_key IN NUMBER,
|
|
p_res_deel_key IN NUMBER,
|
|
p_datum_van IN DATE,
|
|
p_datum_tot IN DATE,
|
|
p_volgnr IN NUMBER)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_result VARCHAR2 (300);
|
|
v_date DATE;
|
|
v_count NUMBER;
|
|
v_discipline_key NUMBER;
|
|
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
BEGIN
|
|
v_result := 'OK';
|
|
|
|
v_errorhint := 'Controleer activiteit: ' || p_activiteit_key;
|
|
IF p_activiteit_key = 30 AND p_rsv_ruimte_key = -1 -- workplace en alleen nieuwe reserveringen
|
|
THEN
|
|
v_errorhint := 'Kijk hoeveel reserveringen er al zijn voor die dag';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM res_rsv_ruimte rrr
|
|
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_activiteit_key = 30 -- 30 workplace
|
|
AND TRUNC(res_rsv_ruimte_van) = TRUNC (p_datum_tot);
|
|
|
|
IF v_count > 3
|
|
THEN
|
|
v_result := 'Beste collega,' || CHR(10) ||
|
|
'We hebben deze maand al vier reserveringen van je gevonden. Je maximaal aantal te reserveren werkplekken per maand is dus bereikt.' || CHR(10) ||
|
|
'Hartelijke groet, KPN Facilities';
|
|
END IF;
|
|
END IF;
|
|
|
|
RETURN v_result;
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
RETURN v_result;
|
|
END;
|
|
|
|
PROCEDURE update_bezoeker (p_bezkey IN NUMBER)
|
|
AS
|
|
|
|
CURSOR c
|
|
IS
|
|
SELECT pf.prs_perslid_naam_full, prs_perslid_email, prs_perslid_mobiel
|
|
FROM bez_bezoekers b, bez_afspraak a, prs_perslid p, prs_v_perslid_fullnames pf
|
|
WHERE bez_bezoekers_key = p_bezkey
|
|
AND b.bez_afspraak_key = a.bez_afspraak_key
|
|
AND a.bez_afspraak_host_key = p.prs_perslid_key
|
|
AND p.prs_perslid_key = pf.prs_perslid_key;
|
|
|
|
BEGIN
|
|
FOR rec IN c
|
|
LOOP
|
|
-- Naam
|
|
IF FLX.getflex ('BEZ', 1020, p_bezkey) IS NULL
|
|
THEN
|
|
FLX.setflex ('BEZ', 1020, p_bezkey, rec.prs_perslid_naam_full);
|
|
END IF;
|
|
-- Email
|
|
IF FLX.getflex ('BEZ', 1021, p_bezkey) IS NULL
|
|
THEN
|
|
FLX.setflex ('BEZ', 1021, p_bezkey, rec.prs_perslid_email);
|
|
END IF;
|
|
-- Mobiel
|
|
IF FLX.getflex ('BEZ', 1022, p_bezkey) IS NULL
|
|
THEN
|
|
FLX.setflex ('BEZ', 1022, p_bezkey, rec.prs_perslid_mobiel);
|
|
END IF;
|
|
END LOOP;
|
|
END;
|
|
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
-- Tijdelijk omdat de generieke import geen komma als scheidingsteken kent.
|
|
CREATE OR REPLACE PROCEDURE DLLG_prs_import_perslid (
|
|
p_import_key IN NUMBER,
|
|
p_seq_of_columns IN VARCHAR2,
|
|
p_header IN VARCHAR2)
|
|
AS
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_field VARCHAR2 (100);
|
|
v_fielddelimitor VARCHAR2 (1);
|
|
v_aanduiding VARCHAR2 (400);
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
v_count NUMBER (10) := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_import NUMBER (10) := 0;
|
|
v_index NUMBER (10);
|
|
v_ongeldig NUMBER (10);
|
|
v_header_is_valid NUMBER (1) := 0;
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
|
|
-- De importvelden
|
|
v_empty VARCHAR2 (100);
|
|
v_alg_locatie_code VARCHAR2 (256);
|
|
v_alg_gebouw_code VARCHAR2 (256);
|
|
v_alg_verdieping_volgnr VARCHAR2 (256);
|
|
v_alg_ruimte_nr VARCHAR2 (256);
|
|
v_prs_werkplek_volgnr VARCHAR2 (256);
|
|
v_prs_werkplek_omschrijving VARCHAR2 (256);
|
|
v_prs_afdeling_naam VARCHAR2 (256);
|
|
v_prs_perslid_naam VARCHAR2 (256);
|
|
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
|
v_prs_perslid_voornaam VARCHAR2 (256);
|
|
v_prs_perslid_voorletters VARCHAR2 (256);
|
|
v_prs_perslid_partner_naam VARCHAR2 (256);
|
|
v_prs_perslid_partner_tussenv VARCHAR2 (256);
|
|
v_prs_naamgebruik_code VARCHAR2 (256);
|
|
v_prs_perslid_geslacht VARCHAR2 (256);
|
|
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
|
v_prs_perslid_mobiel VARCHAR2 (256);
|
|
v_prs_perslid_email VARCHAR2 (256);
|
|
v_prs_perslid_dienstverband VARCHAR2 (256);
|
|
v_prs_perslid_nr VARCHAR2 (256);
|
|
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
|
v_prs_perslid_titel VARCHAR2 (256);
|
|
v_prs_perslid_oslogin VARCHAR2 (256);
|
|
v_prs_perslid_wachtwoord VARCHAR2 (256);
|
|
v_prs_perslid_apikey VARCHAR2 (256);
|
|
v_prs_kenmerk1 VARCHAR2 (256);
|
|
v_prs_kenmerk2 VARCHAR2 (256);
|
|
v_prs_kenmerk3 VARCHAR2 (256);
|
|
v_prs_kenmerk4 VARCHAR2 (256);
|
|
v_prs_kenmerk5 VARCHAR2 (256);
|
|
v_prs_kenmerk6 VARCHAR2 (256);
|
|
v_prs_kenmerk7 VARCHAR2 (256);
|
|
v_prs_kenmerk8 VARCHAR2 (256);
|
|
v_prs_kenmerk9 VARCHAR2 (256);
|
|
v_prs_kenmerk10 VARCHAR2 (256);
|
|
v_prs_kenmerk11 VARCHAR2 (256);
|
|
v_prs_kenmerk12 VARCHAR2 (256);
|
|
v_prs_kenmerk13 VARCHAR2 (256);
|
|
v_prs_kenmerk14 VARCHAR2 (256);
|
|
v_prs_kenmerk15 VARCHAR2 (256);
|
|
v_prs_kenmerk16 VARCHAR2 (256);
|
|
v_prs_kenmerk17 VARCHAR2 (256);
|
|
v_prs_kenmerk18 VARCHAR2 (256);
|
|
v_prs_kenmerk19 VARCHAR2 (256);
|
|
v_prs_kenmerk20 VARCHAR2 (256);
|
|
v_alg_verdieping_volgnr_num NUMBER;
|
|
v_prs_werkplek_volgnr_num NUMBER;
|
|
v_prs_perslid_dienstv_num NUMBER;
|
|
|
|
v_seq_of_columns VARCHAR2 (200);
|
|
|
|
TYPE array_t IS VARRAY (46) OF NUMBER (10);
|
|
|
|
v_colnr array_t := array_t ();
|
|
|
|
CURSOR c
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- JGL: Ik zou graag een WHERE fac_import_key = p_import_key hieronder
|
|
-- toevoegen zodat het script ook multi-user veilig is,
|
|
-- Heel veel klant-specifieke imports(/aanvullingen) controleren
|
|
-- echter niet op de fac_import_key en zouden flink de fout in gaan.
|
|
-- Daarom vooralsnog hier toch maar alles verwijderen
|
|
DELETE FROM fac_imp_perslid;
|
|
|
|
SELECT COALESCE (MAX (fac_imp_file_index), 0) + 1
|
|
INTO v_count
|
|
FROM fac_imp_factuur;
|
|
|
|
-- Init
|
|
v_fielddelimitor := ',';
|
|
v_seq_of_columns := p_seq_of_columns;
|
|
v_errorhint := 'Bepalen volgorde kolommen';
|
|
|
|
FOR v_index IN 1 .. 46
|
|
LOOP
|
|
v_colnr.EXTEND;
|
|
-- De volgorde de te importeren kolommen in de CSV uitlezen uit v_seq_of_columns
|
|
fac.imp_getfield (v_seq_of_columns,
|
|
v_fielddelimitor,
|
|
v_colnr (v_index));
|
|
END LOOP;
|
|
|
|
-- Indien geen header check is opgegeven, gaan we niet op zoek naar een geldige header
|
|
IF p_header IS NULL
|
|
THEN
|
|
v_header_is_valid := 1;
|
|
END IF;
|
|
|
|
FOR rec1 IN c
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := '';
|
|
v_errorhint := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
IF v_header_is_valid = 0
|
|
THEN
|
|
IF UPPER (v_newline) LIKE UPPER (p_header)
|
|
THEN
|
|
v_header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
-- Lees alle veldwaarden
|
|
v_errorhint := 'Inlezen alg_locatie_code kolom:' || v_colnr (1);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (1),
|
|
v_alg_locatie_code);
|
|
v_errorhint := 'Inlezen alg_lcoatie_code kolom:' || v_colnr (2);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (2),
|
|
v_alg_gebouw_code);
|
|
v_errorhint := 'Inlezen alg_verdieping_volgnr kolom:' || v_colnr (3);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (3),
|
|
v_alg_verdieping_volgnr);
|
|
v_errorhint := 'Inlezen alg_ruimte_nr kolom:' || v_colnr (4);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (4),
|
|
v_alg_ruimte_nr);
|
|
v_errorhint := 'Inlezen prs_werkplek_volgnr kolom:' || v_colnr (5);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (5),
|
|
v_prs_werkplek_volgnr);
|
|
v_errorhint := 'Inlezen prs_werkplek_omschrijving kolom:' || v_colnr (6);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (6),
|
|
v_prs_werkplek_omschrijving);
|
|
v_errorhint := 'Inlezen prs_afdeling_naam kolom:' || v_colnr (7);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (7),
|
|
v_prs_afdeling_naam);
|
|
v_errorhint := 'Inlezen prs_perslid_naam kolom:' || v_colnr (8);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (8),
|
|
v_prs_perslid_naam);
|
|
v_errorhint := 'Inlezen prs_perslid_tussenvoegsel kolom:' || v_colnr (9);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (9),
|
|
v_prs_perslid_tussenvoegsel);
|
|
v_errorhint := 'Inlezen prs_perslid_voornaam kolom:' || v_colnr (10);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (10),
|
|
v_prs_perslid_voornaam);
|
|
v_errorhint := 'Inlezen prs_perslid_voorletters kolom:' || v_colnr (11);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (11),
|
|
v_prs_perslid_voorletters);
|
|
v_errorhint := 'Inlezen prs_perslid_partner_naam kolom:' || v_colnr (12);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (12),
|
|
v_prs_perslid_partner_naam);
|
|
v_errorhint := 'Inlezen prs_perslid_partner_tussenv kolom:' || v_colnr (13);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (13),
|
|
v_prs_perslid_partner_tussenv);
|
|
v_errorhint := 'Inlezen prs_perslid_geslacht kolom:' || v_colnr (14);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (14),
|
|
v_prs_naamgebruik_code);
|
|
v_errorhint := 'Inlezen alg_lcoatie_code kolom:' || v_colnr (15);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (15),
|
|
v_prs_perslid_geslacht);
|
|
v_errorhint := 'Inlezen prs_perslid_telefoonnr kolom:' || v_colnr (16);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (16),
|
|
v_prs_perslid_telefoonnr);
|
|
v_errorhint := 'Inlezen prs_perslid_mobiel kolom:' || v_colnr (17);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (17),
|
|
v_prs_perslid_mobiel);
|
|
v_errorhint := 'Inlezen prs_perslid_email kolom:' || v_colnr (18);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (18),
|
|
v_prs_perslid_email);
|
|
v_errorhint := 'Inlezen prs_perslid_dienstverband kolom:' || v_colnr (19);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (19),
|
|
v_prs_perslid_dienstverband);
|
|
v_errorhint := 'Inlezen prs_perslid_nr kolom:' || v_colnr (20);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (20),
|
|
v_prs_perslid_nr);
|
|
v_errorhint := 'Inlezen prs_srtperslid_omschrijving kolom:' || v_colnr (21);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (21),
|
|
v_prs_srtperslid_omschrijving);
|
|
v_errorhint := 'Inlezen prs_perslid_oslogin kolom:' || v_colnr (22);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (22),
|
|
v_prs_perslid_oslogin);
|
|
v_errorhint := 'Inlezen prs_perslid_wachtwoord kolom:' || v_colnr (23);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (23),
|
|
v_prs_perslid_wachtwoord);
|
|
v_errorhint := 'Inlezen prs_perslid_titel kolom:' || v_colnr (24);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (24),
|
|
v_prs_perslid_titel);
|
|
v_errorhint := 'Inlezen prs_perslid_apikey kolom:' || v_colnr (25);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (25),
|
|
v_prs_perslid_apikey);
|
|
v_errorhint := 'Inlezen prs_kenmerk1 kolom:' || v_colnr (27);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (27),
|
|
v_prs_kenmerk1);
|
|
v_errorhint := 'Inlezen prs_kenmerk2 kolom:' || v_colnr (28);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (28),
|
|
v_prs_kenmerk2);
|
|
v_errorhint := 'Inlezen prs_kenmerk3 kolom:' || v_colnr (29);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (29),
|
|
v_prs_kenmerk3);
|
|
v_errorhint := 'Inlezen prs_kenmerk4 kolom:' || v_colnr (30);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (30),
|
|
v_prs_kenmerk4);
|
|
v_errorhint := 'Inlezen prs_kenmerk5 kolom:' || v_colnr (31);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (31),
|
|
v_prs_kenmerk5);
|
|
v_errorhint := 'Inlezen prs_kenmerk6 kolom:' || v_colnr (32);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (32),
|
|
v_prs_kenmerk6);
|
|
v_errorhint := 'Inlezen prs_kenmerk7 kolom:' || v_colnr (33);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (33),
|
|
v_prs_kenmerk7);
|
|
v_errorhint := 'Inlezen prs_kenmerk8 kolom:' || v_colnr (34);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (34),
|
|
v_prs_kenmerk8);
|
|
v_errorhint := 'Inlezen prs_kenmerk9 kolom:' || v_colnr (35);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (35),
|
|
v_prs_kenmerk9);
|
|
v_errorhint := 'Inlezen prs_kenmerk10 kolom:' || v_colnr (36);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (36),
|
|
v_prs_kenmerk10);
|
|
v_errorhint := 'Inlezen prs_kenmerk11 kolom:' || v_colnr (37);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (37),
|
|
v_prs_kenmerk11);
|
|
v_errorhint := 'Inlezen prs_kenmerk12 kolom:' || v_colnr (38);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (38),
|
|
v_prs_kenmerk12);
|
|
v_errorhint := 'Inlezen prs_kenmerk13 kolom:' || v_colnr (39);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (39),
|
|
v_prs_kenmerk13);
|
|
v_errorhint := 'Inlezen prs_kenmerk14 kolom:' || v_colnr (40);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (40),
|
|
v_prs_kenmerk14);
|
|
v_errorhint := 'Inlezen prs_kenmerk15 kolom:' || v_colnr (41);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (41),
|
|
v_prs_kenmerk15);
|
|
v_errorhint := 'Inlezen prs_kenmerk16 kolom:' || v_colnr (42);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (42),
|
|
v_prs_kenmerk16);
|
|
v_errorhint := 'Inlezen prs_kenmerk17 kolom:' || v_colnr (43);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (43),
|
|
v_prs_kenmerk17);
|
|
v_errorhint := 'Inlezen prs_kenmerk18 kolom:' || v_colnr (44);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (44),
|
|
v_prs_kenmerk18);
|
|
v_errorhint := 'Inlezen prs_kenmerk19 kolom:' || v_colnr (45);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (45),
|
|
v_prs_kenmerk19);
|
|
v_errorhint := 'Inlezen prs_kenmerk20 kolom:' || v_colnr (46);
|
|
fac.imp_getfield_nr (v_newline,
|
|
v_fielddelimitor,
|
|
v_colnr (46),
|
|
v_prs_kenmerk20);
|
|
|
|
v_aanduiding :=
|
|
v_prs_perslid_naam || '|' || v_prs_perslid_voornaam || '| ';
|
|
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errorhint := 'Ongeldige locatiecode';
|
|
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 10
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Locatie-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige gebouw code';
|
|
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
|
|
|
IF LENGTH (v_alg_gebouw_code) > 12
|
|
THEN
|
|
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Gebouw-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig verdieping volgnummer';
|
|
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
|
|
|
IF (v_alg_verdieping_volgnr IS NULL)
|
|
THEN
|
|
v_alg_verdieping_volgnr_num :=
|
|
TO_NUMBER (v_alg_verdieping_volgnr);
|
|
ELSE
|
|
BEGIN
|
|
v_alg_verdieping_volgnr_num :=
|
|
TO_NUMBER (v_alg_verdieping_volgnr);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige ruimte nr';
|
|
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
|
|
|
IF LENGTH (v_alg_ruimte_nr) > 10
|
|
THEN
|
|
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Ruimtenr-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_alg_ruimte_nr
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig werkplek volgnummer';
|
|
v_prs_werkplek_volgnr := TRIM (v_prs_werkplek_volgnr);
|
|
|
|
IF (v_prs_werkplek_volgnr IS NULL)
|
|
THEN
|
|
v_prs_werkplek_volgnr_num := TO_NUMBER (v_prs_werkplek_volgnr);
|
|
ELSE
|
|
BEGIN
|
|
v_alg_verdieping_volgnr_num :=
|
|
TO_NUMBER (v_alg_verdieping_volgnr);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige werkplek omschrijving';
|
|
v_prs_werkplek_omschrijving := TRIM (v_prs_werkplek_omschrijving);
|
|
|
|
IF LENGTH (v_prs_werkplek_omschrijving) > 30
|
|
THEN
|
|
v_prs_werkplek_omschrijving :=
|
|
SUBSTR (v_prs_werkplek_omschrijving, 1, 30);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Werkplek-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_werkplek_omschrijving
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige afdelingscode';
|
|
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
|
|
|
|
IF LENGTH (v_prs_afdeling_naam) > 15
|
|
THEN
|
|
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdelingscode is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_afdeling_naam
|
|
|| ']');
|
|
ELSE
|
|
IF (v_prs_afdeling_naam IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Afdelingscode onbekend',
|
|
'Afdelingscode moet worden opgegeven');
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige naam persoon';
|
|
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
|
|
|
IF LENGTH (v_prs_perslid_naam) > 60
|
|
THEN
|
|
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Naam persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_naam
|
|
|| ']');
|
|
ELSE
|
|
IF (v_prs_perslid_naam IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Naam persoon onbekend',
|
|
'Naam persoon moet worden opgegeven');
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige tussenvoegsel persoon';
|
|
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
|
|
|
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
|
|
THEN
|
|
v_prs_perslid_tussenvoegsel :=
|
|
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Tussenvoegsel persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_tussenvoegsel
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige voorletters persoon';
|
|
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
|
|
|
|
IF LENGTH (v_prs_perslid_voorletters) > 15
|
|
THEN
|
|
v_prs_perslid_voorletters :=
|
|
SUBSTR (v_prs_perslid_voorletters, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voorletters persoon zijn te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_voorletters
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Voornaam persoon';
|
|
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
|
|
|
|
IF LENGTH (v_prs_perslid_voornaam) > 30
|
|
THEN
|
|
v_prs_perslid_voornaam :=
|
|
SUBSTR (v_prs_perslid_voornaam, 1, 30);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voornaam persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_voornaam
|
|
|| ']');
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldige partnernaam persoon';
|
|
v_prs_perslid_partner_naam := TRIM (v_prs_perslid_partner_naam);
|
|
|
|
--
|
|
IF LENGTH (v_prs_perslid_partner_naam) > 60
|
|
THEN
|
|
v_prs_perslid_partner_naam := SUBSTR (v_prs_perslid_partner_naam, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Partnernaam is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_partner_naam
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige tussenvoegsel partner';
|
|
v_prs_perslid_partner_tussenv := TRIM (v_prs_perslid_partner_tussenv);
|
|
|
|
IF LENGTH (v_prs_perslid_partner_tussenv) > 10
|
|
THEN
|
|
v_prs_perslid_partner_tussenv :=
|
|
SUBSTR (v_prs_perslid_partner_tussenv, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Tussenvoegsel partner is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_partner_tussenv
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig geslacht';
|
|
v_prs_perslid_geslacht := TRIM (v_prs_perslid_geslacht);
|
|
|
|
IF LENGTH (v_prs_perslid_geslacht) > 1
|
|
THEN
|
|
SELECT DECODE(UPPER(v_prs_perslid_geslacht), 'MAN', '1', 'VROUW', '0', NULL)
|
|
INTO v_prs_perslid_geslacht
|
|
FROM DUAL;
|
|
ELSE
|
|
IF fac.safe_to_number(v_prs_perslid_geslacht) IS NULL
|
|
THEN
|
|
SELECT DECODE(UPPER(v_prs_perslid_geslacht), 'M', '1', 'V', '0', NULL)
|
|
INTO v_prs_perslid_geslacht
|
|
FROM DUAL;
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig dienstverband';
|
|
v_prs_perslid_dienstverband := TRIM (v_prs_perslid_dienstverband);
|
|
|
|
IF (v_prs_perslid_dienstverband IS NOT NULL)
|
|
THEN
|
|
BEGIN
|
|
v_prs_perslid_dienstv_num :=
|
|
TO_NUMBER (v_prs_perslid_dienstverband);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige titel persoon';
|
|
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
|
|
|
|
IF LENGTH (v_prs_perslid_titel) > 15
|
|
THEN
|
|
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Titel persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_titel
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige telefoonnr. persoon';
|
|
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
|
|
|
|
IF LENGTH (v_prs_perslid_telefoonnr) > 15
|
|
THEN
|
|
v_prs_perslid_telefoonnr :=
|
|
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Telefoonnr. persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_telefoonnr
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige mobielnr. persoon';
|
|
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 || 'Mobielnr. persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_mobiel
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige email persoon';
|
|
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
|
|
|
IF LENGTH (v_prs_perslid_email) > 200
|
|
THEN
|
|
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Email persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_email
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige functie persoon';
|
|
v_prs_srtperslid_omschrijving :=
|
|
TRIM (v_prs_srtperslid_omschrijving);
|
|
|
|
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
|
|
THEN
|
|
v_prs_srtperslid_omschrijving :=
|
|
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Functie-aanduiding persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_srtperslid_omschrijving
|
|
|| ']');
|
|
ELSE
|
|
IF (v_prs_srtperslid_omschrijving IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Functie persoon onbekend',
|
|
'Functie persoon moet worden opgegeven');
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige persoonnr.';
|
|
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
|
|
|
IF LENGTH (v_prs_perslid_nr) > 16
|
|
THEN
|
|
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Persoonnr. persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_nr
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige loginnaam';
|
|
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
|
|
|
IF LENGTH (v_prs_perslid_oslogin) > 30
|
|
THEN
|
|
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Loginnaam persoon is te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_prs_perslid_oslogin
|
|
|| ']');
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig wachtwoord';
|
|
v_prs_perslid_wachtwoord := TRIM (v_prs_perslid_wachtwoord);
|
|
|
|
--
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errorhint := 'Toevoegen record';
|
|
v_errormsg :=
|
|
'Fout bij toevoegen te impoteren bedrijf/afdeling ['
|
|
|| v_prs_afdeling_naam
|
|
|| ']';
|
|
|
|
INSERT INTO fac_imp_perslid (alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
prs_werkplek_volgnr,
|
|
prs_werkplek_omschrijving,
|
|
prs_afdeling_naam,
|
|
prs_perslid_naam,
|
|
prs_perslid_tussenvoegsel,
|
|
prs_perslid_voornaam,
|
|
prs_perslid_voorletters,
|
|
prs_perslid_partner_naam,
|
|
prs_perslid_partner_tussenv,
|
|
prs_perslid_naamgebruik_code,
|
|
prs_perslid_geslacht,
|
|
prs_perslid_telefoonnr,
|
|
prs_perslid_mobiel,
|
|
prs_perslid_email,
|
|
prs_perslid_dienstverband,
|
|
prs_perslid_nr,
|
|
prs_srtperslid_omschrijving,
|
|
prs_perslid_oslogin,
|
|
prs_perslid_wachtwoord,
|
|
prs_perslid_titel,
|
|
prs_perslid_apikey,
|
|
prs_kenmerk1,
|
|
prs_kenmerk2,
|
|
prs_kenmerk3,
|
|
prs_kenmerk4,
|
|
prs_kenmerk5,
|
|
prs_kenmerk6,
|
|
prs_kenmerk7,
|
|
prs_kenmerk8,
|
|
prs_kenmerk9,
|
|
prs_kenmerk10,
|
|
prs_kenmerk11,
|
|
prs_kenmerk12,
|
|
prs_kenmerk13,
|
|
prs_kenmerk14,
|
|
prs_kenmerk15,
|
|
prs_kenmerk16,
|
|
prs_kenmerk17,
|
|
prs_kenmerk18,
|
|
prs_kenmerk19,
|
|
prs_kenmerk20,
|
|
fac_import_key,
|
|
fac_imp_file_index)
|
|
VALUES (v_alg_locatie_code,
|
|
v_alg_gebouw_code,
|
|
v_alg_verdieping_volgnr,
|
|
v_alg_ruimte_nr,
|
|
v_prs_werkplek_volgnr,
|
|
v_prs_werkplek_omschrijving,
|
|
v_prs_afdeling_naam,
|
|
v_prs_perslid_naam,
|
|
v_prs_perslid_tussenvoegsel,
|
|
v_prs_perslid_voornaam,
|
|
v_prs_perslid_voorletters,
|
|
v_prs_perslid_partner_naam,
|
|
v_prs_perslid_partner_tussenv,
|
|
COALESCE(fac.safe_to_number(v_prs_naamgebruik_code), 0),
|
|
v_prs_perslid_geslacht,
|
|
v_prs_perslid_telefoonnr,
|
|
v_prs_perslid_mobiel,
|
|
v_prs_perslid_email,
|
|
v_prs_perslid_dienstverband,
|
|
v_prs_perslid_nr,
|
|
v_prs_srtperslid_omschrijving,
|
|
v_prs_perslid_oslogin,
|
|
v_prs_perslid_wachtwoord,
|
|
v_prs_perslid_titel,
|
|
v_prs_perslid_apikey,
|
|
v_prs_kenmerk1,
|
|
v_prs_kenmerk2,
|
|
v_prs_kenmerk3,
|
|
v_prs_kenmerk4,
|
|
v_prs_kenmerk5,
|
|
v_prs_kenmerk6,
|
|
v_prs_kenmerk7,
|
|
v_prs_kenmerk8,
|
|
v_prs_kenmerk9,
|
|
v_prs_kenmerk10,
|
|
v_prs_kenmerk11,
|
|
v_prs_kenmerk12,
|
|
v_prs_kenmerk13,
|
|
v_prs_kenmerk14,
|
|
v_prs_kenmerk15,
|
|
v_prs_kenmerk16,
|
|
v_prs_kenmerk17,
|
|
v_prs_kenmerk18,
|
|
v_prs_kenmerk19,
|
|
v_prs_kenmerk20,
|
|
rec1.fac_import_key,
|
|
rec1.fac_imp_file_index);
|
|
|
|
v_count_import := v_count_import + 1;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF v_header_is_valid = 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Ongeldig importbestand',
|
|
'Geen geldige headerregel aanwezig');
|
|
ELSE
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Persoon: aantal ongeldige importregels: '
|
|
|| TO_CHAR (v_count_tot - v_count_import),
|
|
'');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
/
|
|
|
|
/* Formatted on 20/11/2019 14:49:54 (QP5 v5.336) */
|
|
/* Formatted on 20/11/2019 14:49:54 (QP5 v5.336) */
|
|
CREATE OR REPLACE PROCEDURE dllg_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c IS
|
|
SELECT *
|
|
FROM (SELECT fac_usrdata_omschr,
|
|
prs_perslid_nr,
|
|
prs_kenmerk11 fullachternaam,
|
|
prs_kenmerk12 partner,
|
|
1 tmode
|
|
FROM fac_imp_perslid p, fac_usrdata u
|
|
WHERE UPPER (prs_kenmerk11) LIKE
|
|
UPPER (u.fac_usrdata_omschr) || ' ' || '%'
|
|
AND fac_usrtab_key = 1
|
|
UNION ALL
|
|
SELECT fac_usrdata_omschr,
|
|
prs_perslid_nr,
|
|
prs_kenmerk11 fullachternaam,
|
|
prs_kenmerk12 partner,
|
|
2 tmode
|
|
FROM fac_imp_perslid p, fac_usrdata u
|
|
WHERE UPPER (prs_kenmerk11) LIKE
|
|
'%' || ' ' || UPPER (u.fac_usrdata_omschr)
|
|
AND fac_usrtab_key = 1)
|
|
ORDER BY prs_perslid_nr, LENGTH (fac_usrdata_omschr) DESC;
|
|
|
|
v_seq_of_columns VARCHAR (255);
|
|
v_old_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
BEGIN
|
|
BEGIN
|
|
-- we plaaten de functie in kenmerkx
|
|
-- de functie wordt tijdelijk gevuld met de key van het record. Puur om een waarde
|
|
-- erin te hebben staan.
|
|
v_errorhint := 'Vul import tabel';
|
|
v_old_nr := '-1';
|
|
v_seq_of_columns :=
|
|
'0,0,0,0,0,0,13,10,0,5,12,0,0,0,0,0,0,4,0,14,13,8,0,0,0,0,1,2,3,7,13,6,11,9,0,0,0,0,0,0,0,0,0,0,0,0';
|
|
DLLG_prs_import_perslid (
|
|
p_import_key,
|
|
v_seq_of_columns,
|
|
'"Department","CostCentre","Displayname","E-mail","givenName","Mobile","physicalDeliveryOfficeName","sAMAccountName","UPN","LastName","PhoneNumber","Initials","Emptype","HRADID"%');
|
|
|
|
-- oud personeelsleden gaan we niets mee doen
|
|
v_errorhint := 'Verwijder oud personeelsleden';
|
|
|
|
DELETE fac_imp_perslid
|
|
WHERE UPPER (prs_kenmerk5) LIKE 'EX%';
|
|
|
|
-- Verwijder alles acther de komma, dan houden we de achternaam over
|
|
v_errorhint := 'Verwijder voornaam van samengestelde string';
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_kenmerk10 =
|
|
SUBSTR (prs_kenmerk3, 1, INSTR (prs_kenmerk3, ',') - 1);
|
|
|
|
-- Voor getrouwde stellen met twee achternamen gescheiden door een - splitsen we de naam
|
|
v_errorhint := 'Partners splitsen ';
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_kenmerk11 =
|
|
TRIM (
|
|
SUBSTR (prs_kenmerk10,
|
|
1,
|
|
INSTR (prs_kenmerk10, '-') - 1)),
|
|
prs_kenmerk12 =
|
|
TRIM (
|
|
SUBSTR (prs_kenmerk10, INSTR (prs_kenmerk10, '-') + 1))
|
|
WHERE INSTR (prs_kenmerk10, '-') > 0;
|
|
|
|
-- Voor niet getrouwde stellen plaatsen we de naam in het eerste veld
|
|
UPDATE fac_imp_perslid
|
|
SET prs_kenmerk11 = TRIM (prs_kenmerk10)
|
|
WHERE INSTR (prs_kenmerk10, '-') = 0;
|
|
|
|
-- splits de achternaam in tussenvoegsels en achternaam.
|
|
v_errorhint := 'Tussenvoegsels en achternamen splitsen';
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
IF rec.prs_perslid_nr <> v_old_nr
|
|
THEN
|
|
DBMS_OUTPUT.put_line (
|
|
rec.prs_perslid_nr || '-' || rec.fac_usrdata_omschr);
|
|
v_old_nr := rec.prs_perslid_nr;
|
|
|
|
IF rec.tmode = 1
|
|
THEN
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_perslid_tussenvoegsel =
|
|
rec.fac_usrdata_omschr,
|
|
prs_perslid_naam =
|
|
TRIM (
|
|
SUBSTR (
|
|
rec.fullachternaam,
|
|
LENGTH (
|
|
rec.fac_usrdata_omschr)
|
|
+ 1))
|
|
|| DECODE (rec.partner,
|
|
NULL, NULL,
|
|
' - ' || rec.partner)
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
|
|
ELSE
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_perslid_tussenvoegsel =
|
|
rec.fac_usrdata_omschr,
|
|
prs_perslid_naam =
|
|
TRIM (
|
|
SUBSTR (
|
|
rec.fullachternaam,
|
|
1,
|
|
LENGTH (rec.fullachternaam)
|
|
- LENGTH (
|
|
rec.fac_usrdata_omschr)))
|
|
|| DECODE (rec.partner,
|
|
NULL, NULL,
|
|
' - ' || rec.partner)
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
-- Vul de achternaam
|
|
v_errorhint := 'Vul de achternaam';
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_naam =
|
|
prs_kenmerk11
|
|
|| DECODE (prs_kenmerk12,
|
|
NULL, NULL,
|
|
' - ' || prs_kenmerk12)
|
|
WHERE prs_perslid_tussenvoegsel IS NULL;
|
|
|
|
v_errorhint := 'Vul afdeling en telefoonnummer';
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = COALESCE (prs_kenmerk2, 'Onbekend'),
|
|
prs_perslid_telefoonnr =
|
|
SUBSTR (REPLACE (prs_kenmerk7, ' '), 1, 15),
|
|
prs_perslid_mobiel =
|
|
SUBSTR (REPLACE (prs_kenmerk6, ' '), 1, 15);
|
|
|
|
v_errorhint := 'Vul de vastgoedgegevens';
|
|
|
|
UPDATE fac_imp_perslid i
|
|
SET (alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr) =
|
|
(SELECT alg_locatie_code,
|
|
alg_gebouw_upper,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr
|
|
FROM alg_v_ruimte_gegevens rg
|
|
WHERE UPPER (rg.alg_ruimte_nr) =
|
|
UPPER (REPLACE (REPLACE (prs_kenmerk4, '-'), ' ')));
|
|
|
|
v_errorhint := 'Maak kostenplaatsen aan';
|
|
|
|
INSERT INTO prs_kostenplaats k (prs_kostenplaats_nr,
|
|
prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module)
|
|
SELECT DISTINCT
|
|
prs_kenmerk2, 'Costcenter:' || prs_kenmerk2, 'PRS'
|
|
FROM fac_imp_perslid i
|
|
WHERE NOT EXISTS
|
|
(SELECT kp.prs_kostenplaats_nr
|
|
FROM prs_kostenplaats kp
|
|
WHERE kp.prs_kostenplaats_nr =
|
|
TRIM (i.prs_kenmerk2)
|
|
AND kp.prs_kostenplaats_verwijder IS NULL)
|
|
AND prs_kenmerk2 IS NOT NULL;
|
|
|
|
v_errorhint := 'Maak afdelingen aan';
|
|
|
|
INSERT INTO prs_afdeling (prs_bedrijf_key,
|
|
prs_afdeling_naam,
|
|
prs_afdeling_omschrijving,
|
|
prs_kostenplaats_key)
|
|
SELECT DISTINCT 1,
|
|
prs_kenmerk2,
|
|
'Costcenter:' || prs_kenmerk2,
|
|
prs_kostenplaats_key
|
|
FROM fac_imp_perslid i, prs_kostenplaats k
|
|
WHERE NOT EXISTS
|
|
(SELECT a.prs_afdeling_naam
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_naam =
|
|
TRIM (i.prs_kenmerk2)
|
|
AND prs_afdeling_verwijder IS NULL)
|
|
AND prs_kenmerk2 IS NOT NULL
|
|
AND prs_kenmerk2 = k.prs_kostenplaats_nr
|
|
AND k.prs_kostenplaats_verwijder IS NULL;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END dllg_import_perslid;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE dllg_update_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c_del IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin
|
|
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
|
|
AND pf.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_nr IS NOT NULL
|
|
AND i.prs_perslid_nr IS NULL
|
|
AND p.prs_perslid_verwijder IS NULL;
|
|
|
|
CURSOR c_upd IS
|
|
SELECT i.prs_perslid_key, prs_kenmerk1 afdeling, prs_kenmerk8 UPN
|
|
FROM fac_imp_perslid i, prs_perslid p
|
|
WHERE i.prs_perslid_key = p.prs_perslid_key;
|
|
|
|
v_perslid_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_hint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
|
|
BEGIN
|
|
BEGIN
|
|
-- Controleer of er wel genoeg mensen in de database staan
|
|
-- Veilige check is 10000 medewerkers
|
|
SELECT COUNT(*)
|
|
INTO v_count
|
|
FROM fac_imp_perslid;
|
|
|
|
IF v_count > 500
|
|
THEN
|
|
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
|
|
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
|
|
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
|
|
|
|
FOR rec IN c_del LOOP
|
|
BEGIN
|
|
v_hint := 'Verwijderen persoon: ' || rec.prs_perslid_key || '-' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
|
|
END;
|
|
END LOOP;
|
|
|
|
prs.update_perslid (p_import_key, 'NR', 'A');
|
|
|
|
-- Iedereen mag op elke kostenplaats boeken.
|
|
INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_perslidkostenplaats_boeken)
|
|
SELECT prs_perslid_key, 1
|
|
FROM prs_perslid p
|
|
WHERE prs_perslid_verwijder IS NULL
|
|
AND NOT EXISTS (SELECT prs_perslidkostenplaats_key
|
|
FROM prs_perslidkostenplaats pk
|
|
WHERE pk.prs_perslid_key = p.prs_perslid_key);
|
|
|
|
v_hint := 'Update personen';
|
|
FOR rec2 IN c_upd LOOP
|
|
BEGIN
|
|
v_hint := 'Update persoon: ' || rec2.prs_perslid_key || '-' || rec2.upn || '-' || rec2.afdeling;
|
|
PRS.upsertkenmerk (1, rec2.prs_perslid_key, rec2.upn);
|
|
PRS.upsertkenmerk (2, rec2.prs_perslid_key, rec2.afdeling);
|
|
|
|
UPDATE prs_perslid
|
|
SET alg_onroerendgoed_keys = 1,
|
|
alg_onroerendgoed_type = 'G',
|
|
prs_perslid_bezetdatum = SYSDATE
|
|
WHERE prs_perslid_key = rec2.prs_perslid_key
|
|
AND alg_onroerendgoed_keys IS NULL;
|
|
END;
|
|
END LOOP;
|
|
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'E', 'Te weinig personen in de database om te verwijderen: ' || v_count, '');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_hint);
|
|
END;
|
|
END;
|
|
/
|
|
|
|
|
|
-- Koppeling met Nsecure
|
|
-- Koppeling gaat via API2: https://dllg.facilitor.nl/api2/reports.json/?usrrap_key=821
|
|
CREATE OR REPLACE VIEW dllg_v_rap_aeos_bez
|
|
(
|
|
afspraak_key, -- appointment_id
|
|
bezoekers_key, -- visitor_id
|
|
afspraak_datum,
|
|
afspraak_eind,
|
|
afspraak_oms,
|
|
bezoeker_naam,
|
|
bezoeker_bedrijf,
|
|
contact_naam,
|
|
contact_mail,
|
|
contact_nr,
|
|
contact_tel,
|
|
host_naam,
|
|
laatste_mut
|
|
)
|
|
AS
|
|
SELECT t.fac_tracking_refkey,
|
|
x.bez_bezoekers_key,
|
|
x.bez_afspraak_datum,
|
|
x.bez_afspraak_eind,
|
|
x.bez_afspraak_opmerking,
|
|
x.bez_afspraak_naam,
|
|
x.bez_afspraak_bedrijf,
|
|
x.prs_perslid_naam_full,
|
|
x.prs_perslid_email,
|
|
x.prs_perslid_nr,
|
|
COALESCE (x.prs_perslid_telefoonnr, x.prs_perslid_mobiel) tel,
|
|
x.bez_afspraak_gastheer,
|
|
t.tracking_datum
|
|
FROM (SELECT a.bez_afspraak_key,
|
|
b.bez_bezoekers_key,
|
|
a.bez_afspraak_datum,
|
|
a.bez_afspraak_eind,
|
|
a.bez_afspraak_opmerking,
|
|
b.bez_afspraak_naam,
|
|
b.bez_afspraak_bedrijf,
|
|
cpf.prs_perslid_naam_full,
|
|
cp.prs_perslid_email,
|
|
cp.prs_perslid_nr,
|
|
cp.prs_perslid_telefoonnr,
|
|
cp.prs_perslid_mobiel,
|
|
a.bez_afspraak_gastheer
|
|
FROM bez_afspraak a,
|
|
bez_bezoekers b,
|
|
prs_perslid cp,
|
|
prs_v_perslid_fullnames cpf
|
|
WHERE a.bez_afspraak_datum > TRUNC (SYSDATE)
|
|
AND a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND a.bez_afspraak_contact_key = cp.prs_perslid_key
|
|
AND cp.prs_perslid_key = cpf.prs_perslid_key) x
|
|
LEFT JOIN ( SELECT fac_tracking_refkey, MAX (fac_tracking_datum) tracking_datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key IN (30,31) -- BEZMUT/BEZUPD
|
|
GROUP BY fac_tracking_refkey) t
|
|
ON x.bez_afspraak_key = t.fac_tracking_refkey;
|
|
|
|
|
|
------ 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
|
|
|