1902 lines
76 KiB
SQL
1902 lines
76 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;
|
|
|
|
FUNCTION get_hex_card_data (p_card_number IN VARCHAR2,
|
|
p_facility_code IN VARCHAR2)
|
|
RETURN VARCHAR2;
|
|
|
|
PROCEDURE update_bezoeker (p_bezkey IN NUMBER);
|
|
|
|
PROCEDURE set_bezoeker_syncdate (p_bezkey IN NUMBER,
|
|
p_user_id IN NUMBER,
|
|
p_credential_id 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;
|
|
|
|
|
|
FUNCTION get_hex_card_data (p_card_number VARCHAR2,
|
|
p_facility_code VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_card_bin VARCHAR2 (100);
|
|
v_facility_bin VARCHAR2 (100);
|
|
v_card_hex VARCHAR2 (100);
|
|
v_facility_hex VARCHAR2 (100);
|
|
v_bin VARCHAR2 (100);
|
|
v_bin_str VARCHAR2 (100);
|
|
v_result VARCHAR2 (100);
|
|
v_length NUMBER;
|
|
|
|
FUNCTION OneHex2Bin (p_hex VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_result VARCHAR2 (10);
|
|
BEGIN
|
|
IF p_hex = '0'
|
|
THEN
|
|
v_result := '0000';
|
|
ELSIF p_hex = '1'
|
|
THEN
|
|
v_result := '0001';
|
|
ELSIF p_hex = '2'
|
|
THEN
|
|
v_result := '0010';
|
|
ELSIF p_hex = '3'
|
|
THEN
|
|
v_result := '0011';
|
|
ELSIF p_hex = '4'
|
|
THEN
|
|
v_result := '0100';
|
|
ELSIF p_hex = '5'
|
|
THEN
|
|
v_result := '0101';
|
|
ELSIF p_hex = '6'
|
|
THEN
|
|
v_result := '0110';
|
|
ELSIF p_hex = '7'
|
|
THEN
|
|
v_result := '0111';
|
|
ELSIF p_hex = '8'
|
|
THEN
|
|
v_result := '1000';
|
|
ELSIF p_hex = '9'
|
|
THEN
|
|
v_result := '1001';
|
|
ELSIF p_hex = 'A'
|
|
THEN
|
|
v_result := '1010';
|
|
ELSIF p_hex = 'B'
|
|
THEN
|
|
v_result := '1011';
|
|
ELSIF p_hex = 'C'
|
|
THEN
|
|
v_result := '1100';
|
|
ELSIF p_hex = 'D'
|
|
THEN
|
|
v_result := '1101';
|
|
ELSIF p_hex = 'E'
|
|
THEN
|
|
v_result := '1110';
|
|
ELSIF p_hex = 'F'
|
|
THEN
|
|
v_result := '1111';
|
|
END IF;
|
|
|
|
RETURN v_result;
|
|
END;
|
|
|
|
FUNCTION FourBin2Hex (p_bin VARCHAR2)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_result VARCHAR2 (10);
|
|
BEGIN
|
|
IF p_bin = '0000'
|
|
THEN
|
|
v_result := '0';
|
|
ELSIF p_bin = '0001'
|
|
THEN
|
|
v_result := '1';
|
|
ELSIF p_bin = '0010'
|
|
THEN
|
|
v_result := '2';
|
|
ELSIF p_bin = '0011'
|
|
THEN
|
|
v_result := '3';
|
|
ELSIF p_bin = '0100'
|
|
THEN
|
|
v_result := '4';
|
|
ELSIF p_bin = '0101'
|
|
THEN
|
|
v_result := '5';
|
|
ELSIF p_bin = '0110'
|
|
THEN
|
|
v_result := '6';
|
|
ELSIF p_bin = '0111'
|
|
THEN
|
|
v_result := '7';
|
|
ELSIF p_bin = '1000'
|
|
THEN
|
|
v_result := '8';
|
|
ELSIF p_bin = '1001'
|
|
THEN
|
|
v_result := '9';
|
|
ELSIF p_bin = '1010'
|
|
THEN
|
|
v_result := 'A';
|
|
ELSIF p_bin = '1011'
|
|
THEN
|
|
v_result := 'B';
|
|
ELSIF p_bin = '1100'
|
|
THEN
|
|
v_result := 'C';
|
|
ELSIF p_bin = '1101'
|
|
THEN
|
|
v_result := 'D';
|
|
ELSIF p_bin = '1110'
|
|
THEN
|
|
v_result := 'E';
|
|
ELSIF p_bin = '1111'
|
|
THEN
|
|
v_result := 'F';
|
|
END IF;
|
|
|
|
|
|
RETURN v_result;
|
|
END;
|
|
|
|
|
|
FUNCTION set_parity (p_bin VARCHAR2,
|
|
p_mode VARCHAR2,
|
|
p_parity NUMBER)
|
|
RETURN VARCHAR2
|
|
AS
|
|
BEGIN
|
|
IF p_mode = 'after'
|
|
THEN
|
|
IF MOD (LENGTH (REPLACE (p_bin || p_parity, '0')), 2) = 0
|
|
THEN
|
|
RETURN p_bin || '0';
|
|
ELSE
|
|
RETURN p_bin || '1';
|
|
END IF;
|
|
ELSE
|
|
IF MOD (LENGTH (REPLACE (p_bin || p_parity, '0')), 2) = 0
|
|
THEN
|
|
RETURN '0' || p_bin;
|
|
ELSE
|
|
RETURN '1' || p_bin;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
BEGIN
|
|
v_card_hex := p_card_number;
|
|
|
|
-- transform the hex card data into a binary string
|
|
FOR v_index IN 1 .. 4
|
|
LOOP
|
|
v_card_bin :=
|
|
v_card_bin || OneHex2Bin (SUBSTR (v_card_hex, 1, 1));
|
|
v_card_hex := SUBSTR (v_card_hex, 2, 4);
|
|
END LOOP;
|
|
|
|
-- add the parity bit
|
|
--v_card_bin := set_parity (v_card_bin, 'after', 1);
|
|
|
|
-- transform the hex facility data into a binary string
|
|
v_facility_hex := p_facility_code;
|
|
|
|
FOR v_index IN 1 .. 2
|
|
LOOP
|
|
v_facility_bin :=
|
|
v_facility_bin || OneHex2Bin (SUBSTR (v_facility_hex, 1, 1));
|
|
v_facility_hex := SUBSTR (v_facility_hex, 2, 4);
|
|
END LOOP;
|
|
|
|
-- add the parity bit
|
|
-- v_facility_bin := set_parity (v_facility_bin, 'before', 0);
|
|
|
|
-- combine the facility data and the card data
|
|
v_bin := v_facility_bin || v_card_bin;
|
|
-- the first 12 bits have an even leading parity bit
|
|
-- the last 12 bits have a trailing odd parity bit
|
|
v_bin := set_parity (SUBSTR(v_bin, 1,12), 'before', 0) || set_parity (SUBSTR(v_bin, 13,12), 'after', 1);
|
|
|
|
-- and convert the binary string into hex
|
|
WHILE v_bin IS NOT NULL
|
|
LOOP
|
|
IF LENGTH (v_bin) <= 4
|
|
THEN
|
|
v_bin_str := LPAD (v_bin, 4, '0');
|
|
v_bin := NULL;
|
|
ELSE
|
|
v_bin_str := SUBSTR (v_bin, LENGTH (v_bin) - 3, 4);
|
|
v_bin := SUBSTR (v_bin, 1, LENGTH (v_bin) - 4);
|
|
END IF;
|
|
|
|
v_result := FourBin2Hex (v_bin_str) || v_result;
|
|
END LOOP;
|
|
|
|
RETURN LOWER(LTRIM(v_result, '0'));
|
|
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;
|
|
|
|
v_count NUMBER;
|
|
v_found NUMBER;
|
|
v_code VARCHAR2 (5);
|
|
v_exists NUMBER;
|
|
v_card_number_key NUMBER;
|
|
v_facility_code_key NUMBER;
|
|
v_hex_code_key NUMBER;
|
|
v_dec_code_key NUMBER;
|
|
v_date DATE;
|
|
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;
|
|
|
|
|
|
-- Vul een uniek kaarnummer in die uniek is voor deze dag
|
|
v_count := 0;
|
|
v_found := 0;
|
|
|
|
DBMS_OUTPUT.put_line ('kenmerken');
|
|
|
|
SELECT bez_kenmerk_key
|
|
INTO v_card_number_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'CARD NUMBER';
|
|
|
|
SELECT bez_kenmerk_key
|
|
INTO v_facility_code_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'FACILITY CODE';
|
|
|
|
SELECT bez_kenmerk_key
|
|
INTO v_hex_code_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'HEX CODE';
|
|
|
|
SELECT bez_kenmerk_key
|
|
INTO v_dec_code_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'DEC CODE';
|
|
|
|
DBMS_OUTPUT.put_line ('v_date');
|
|
|
|
SELECT bez_afspraak_datum
|
|
INTO v_date
|
|
FROM bez_afspraak a, bez_bezoekers b
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND b.bez_bezoekers_key = p_bezkey;
|
|
|
|
DBMS_OUTPUT.put_line ('v_code');
|
|
|
|
SELECT MAX (bez_kenmerkwaarde_waarde)
|
|
INTO v_code
|
|
FROM bez_kenmerkwaarde kw
|
|
WHERE kw.bez_bezoekers_key = p_bezkey
|
|
AND kw.bez_kenmerk_key = v_card_number_key;
|
|
|
|
-- We controleren of de minst significante vier cijfers van de key overeenkomen met de 4 minst significate cijfers van het kaarnummer
|
|
-- Bij het herhalen van de afspraak worden namelijk de kenmerken gekopieerd.
|
|
IF v_code IS NULL OR SUBSTR(v_code, LENGTH(v_code)-3, LENGTH(v_code)) <> SUBSTR(p_bezkey, LENGTH(p_bezkey)-3, LENGTH(p_bezkey))
|
|
THEN
|
|
v_code := ROUND(DBMS_RANDOM.value(0,4)) || SUBSTR(p_bezkey, LENGTH(p_bezkey)-3, LENGTH(p_bezkey));
|
|
|
|
FLX.setflex ('BEZ',
|
|
v_card_number_key,
|
|
p_bezkey,
|
|
v_code);
|
|
END IF;
|
|
|
|
FLX.setflex ('BEZ',
|
|
v_facility_code_key,
|
|
p_bezkey,
|
|
'123');
|
|
|
|
-- Vul het flexveld hex code met de hex waarde die gescant moet worden.
|
|
-- We gebruiken hiervoor 'The Standard 26-Bit Format'
|
|
|
|
FLX.setflex (
|
|
'BEZ',
|
|
v_hex_code_key,
|
|
p_bezkey,
|
|
DLLG.get_hex_card_data (
|
|
LPAD (TRIM (TO_CHAR (v_code, 'XXXXXX')), 4, '0'),
|
|
LPAD (TRIM (TO_CHAR (123, 'XXXXXX')), 2, '0')));
|
|
|
|
FLX.setflex (
|
|
'BEZ',
|
|
v_dec_code_key,
|
|
p_bezkey,
|
|
'123' || LPAD(TRIM(v_code), 5, '0'));
|
|
|
|
END;
|
|
|
|
PROCEDURE set_bezoeker_syncdate (p_bezkey IN NUMBER,
|
|
p_user_id IN NUMBER,
|
|
p_credential_id IN NUMBER)
|
|
AS
|
|
v_credential_id_key NUMBER;
|
|
v_user_id_key NUMBER;
|
|
v_sync_timestamp_key NUMBER;
|
|
BEGIN
|
|
-- De id van de badge die in Brivo aangemaakt is.
|
|
SELECT bez_kenmerk_key
|
|
INTO v_credential_id_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'BRIVO CREDENTIAL ID';
|
|
|
|
FLX.setflex ('BEZ',
|
|
v_credential_id_key,
|
|
p_bezkey,
|
|
p_credential_id);
|
|
|
|
-- De id van de aangemaakte user in Brivo
|
|
SELECT bez_kenmerk_key
|
|
INTO v_user_id_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'BRIVO USER ID';
|
|
|
|
FLX.setflex ('BEZ',
|
|
v_user_id_key,
|
|
p_bezkey,
|
|
p_user_id);
|
|
|
|
-- Als de elementen in Brivo aangemaakt zijn, zetten we de timestamp.
|
|
-- Hierdoor wordt deze bezoeker niet weer opnieuw aangeboden.
|
|
SELECT bez_kenmerk_key
|
|
INTO v_sync_timestamp_key
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_upper = 'BRIVO SYNC TIMESTAMP';
|
|
|
|
FLX.setflex ('BEZ',
|
|
v_sync_timestamp_key,
|
|
p_bezkey,
|
|
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
|
|
|
|
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
|
|
-- Depricated !!!!!!!!!!!!!!
|
|
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;
|
|
|
|
|
|
-- Koppeling met Brivo
|
|
CREATE OR REPLACE VIEW dllg_v_bezoeker_brivo
|
|
(
|
|
request,
|
|
omschrijving,
|
|
afspraak_key,
|
|
bezoeker_key,
|
|
bezoeker_naam,
|
|
bezoeker_bedrijf,
|
|
bezoeker_email,
|
|
card_number,
|
|
facility_code,
|
|
hex_code,
|
|
afspraak_van,
|
|
afspraak_tot,
|
|
meeting_id
|
|
)
|
|
AS
|
|
SELECT 'POST',
|
|
'Afspraak vanuit Facilitor'
|
|
omschr,
|
|
a.bez_afspraak_key,
|
|
b.bez_bezoekers_key,
|
|
b.bez_afspraak_naam,
|
|
b.bez_afspraak_bedrijf,
|
|
b.bez_bezoekers_email,
|
|
c.card,
|
|
f.facility,
|
|
h.hex_code,
|
|
TRUNC(a.bez_afspraak_datum),
|
|
TRUNC(a.bez_afspraak_datum)+1,
|
|
''
|
|
FROM bez_bezoekers b,
|
|
bez_afspraak a,
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde card
|
|
FROM bez_kenmerk k, bez_kenmerkwaarde kw
|
|
WHERE k.bez_kenmerk_upper LIKE 'CARD NUMBER%'
|
|
AND kw.bez_kenmerk_key = k.bez_kenmerk_key) c,
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde facility
|
|
FROM bez_kenmerk k, bez_kenmerkwaarde kw
|
|
WHERE k.bez_kenmerk_upper LIKE 'FACILITY CODE%'
|
|
AND kw.bez_kenmerk_key = k.bez_kenmerk_key) f,
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde hex_code
|
|
FROM bez_kenmerk k, bez_kenmerkwaarde kw
|
|
WHERE k.bez_kenmerk_upper LIKE 'HEX CODE%'
|
|
AND kw.bez_kenmerk_key = k.bez_kenmerk_key) h
|
|
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
|
AND TRUNC(a.bez_afspraak_datum) = TRUNC (SYSDATE) -- Alleen afspraken nu
|
|
AND b.bez_bezoekers_key = c.bez_bezoekers_key
|
|
AND b.bez_bezoekers_key = f.bez_bezoekers_key
|
|
AND b.bez_bezoekers_key = h.bez_bezoekers_key
|
|
AND NOT EXISTS
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde
|
|
FROM bez_kenmerk k, bez_kenmerkwaarde kw
|
|
WHERE k.bez_kenmerk_upper = 'BRIVO SYNC TIMESTAMP' -- Er is nog geen sync naar brivo geweest
|
|
AND kw.bez_kenmerk_key = k.bez_kenmerk_key
|
|
AND kw.bez_bezoekers_key = b.bez_bezoekers_key);
|
|
|
|
-- Notificatie naar bezoekers
|
|
CREATE OR REPLACE VIEW dllg_v_noti_visitor
|
|
AS
|
|
SELECT NULL sender,
|
|
NULL receiver,
|
|
'Bezoekafspraak op ' || TO_CHAR(bez_afspraak_datum, 'DD-MM-YYYY') || ' om ' || TO_CHAR(bez_afspraak_datum, 'HH24:MI') || ' uur bij DLL' text,
|
|
'CUST01' code,
|
|
a.bez_afspraak_key key,
|
|
bez_bezoekers_key xkey,
|
|
bez_bezoekers_email xemail,
|
|
NULL xmobile
|
|
FROM bez_afspraak a, bez_bezoekers b
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND a.bez_afspraak_datum < fac.datumtijdplusuitvoertijd (SYSDATE, 3, 'D')
|
|
AND a.bez_afspraak_datum > SYSDATE
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_tracking t, fac_srtnotificatie sn
|
|
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND t.fac_tracking_refkey = a.bez_afspraak_key
|
|
AND b.bez_bezoekers_aanmaak < fac_tracking_datum);
|
|
|
|
|
|
|
|
------ 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
|
|
|