1292 lines
49 KiB
SQL
1292 lines
49 KiB
SQL
-- Script containing customer specific configuration sql statements for Ling
|
|
-- (c) 2008 SG|facilitor bv
|
|
-- $Revision$
|
|
-- $Id$
|
|
--
|
|
-- Support: +31 53 4800700
|
|
|
|
set echo on
|
|
|
|
spool xling.lst
|
|
|
|
-- 61 = 'PRS'
|
|
CREATE OR REPLACE VIEW ling_v_import_log
|
|
AS
|
|
SELECT imp_log_status fclt_f_status,
|
|
imp_log_omschrijving omschrijving,
|
|
imp_log_hint opmerking
|
|
FROM imp_log
|
|
WHERE fac_import_key = (SELECT MAX (fac_import_key)
|
|
FROM fac_import
|
|
WHERE fac_import_app_key = 61);
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE ling_import_prs (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
-- LET OP: moet idem zijn als declaratie bij LING_UPDATE_PRS
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_ongeldig NUMBER (1);
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
v_count NUMBER;
|
|
-- De importvelden:
|
|
v_prs_perslid_email VARCHAR2 (256);
|
|
v_prs_perslid_naam VARCHAR2 (256);
|
|
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
|
v_prs_perslid_voorletters VARCHAR2 (256);
|
|
v_prs_perslid_voornaam VARCHAR2 (256);
|
|
-- LING#19944: sinds de reorganisatie gebruiken we prs_afdeling_omschrijving
|
|
-- ipv prs_afdeling_code
|
|
v_prs_team_naam VARCHAR2 (256); -- A60
|
|
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
|
v_alg_locatie_code VARCHAR2 (256); -- A5
|
|
v_alg_gebouw_code VARCHAR2 (256); -- A10
|
|
v_alg_verdieping_volgnr VARCHAR2 (256); -- N3
|
|
v_alg_ruimte_nr VARCHAR2 (256); -- A10
|
|
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
|
v_prs_perslid_oslogin VARCHAR2 (256);
|
|
-- Overig:
|
|
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM imp_log
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
DELETE FROM ling_imp_prs;
|
|
|
|
COMMIT;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_aanduiding := '';
|
|
v_errorhint := 'Fout bij opvragen te importeren rij';
|
|
v_ongeldig := 0;
|
|
-- Lees alle veldwaarden
|
|
-- 01
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
|
-- 02
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
|
-- 03
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_tussenvoegsel
|
|
);
|
|
-- 04
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_voorletters
|
|
);
|
|
-- 05
|
|
fac.imp_getfield (v_newline, c_fielddelimitor,
|
|
v_prs_perslid_voornaam);
|
|
-- 06
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_team_naam);
|
|
-- 07
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_srtperslid_omschrijving
|
|
);
|
|
-- 08
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
|
|
-- 09
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
|
|
-- 10
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_alg_verdieping_volgnr
|
|
);
|
|
-- 11
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
|
|
-- 12
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_telefoonnr
|
|
);
|
|
-- 13
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
|
--
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_prs_perslid_email
|
|
|| '|'
|
|
|| v_prs_perslid_naam
|
|
|| '|'
|
|
|| v_prs_perslid_tussenvoegsel
|
|
|| '|'
|
|
|| v_prs_perslid_voornaam
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
-- LING#19944: 'afdelingscode' is eigenlijk teamnaam, maar de kolomnaam blijft hetzelfde
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_prs_perslid_email) = 'EMAIL'
|
|
AND UPPER (v_prs_perslid_naam) = 'NAAM'
|
|
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
|
|
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
|
|
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
|
|
AND UPPER (v_prs_team_naam) = 'AFDELINGSCODE'
|
|
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
|
|
AND UPPER (v_alg_locatie_code) = 'LOCATIE'
|
|
AND UPPER (v_alg_gebouw_code) = 'GEBOUW'
|
|
AND UPPER (v_alg_verdieping_volgnr) = 'VERDIEPING'
|
|
AND UPPER (v_alg_ruimte_nr) = 'RUIMTE'
|
|
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
|
|
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errorhint := 'Ongeldig e-mailadres';
|
|
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
|
|
|
IF v_prs_perslid_email IS NULL
|
|
OR LENGTH (v_prs_perslid_email) > 50
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'E-mailadres onbekend/te lang',
|
|
'E-mailadres is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige naam';
|
|
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
|
|
|
IF LENGTH (v_prs_perslid_naam) > 30
|
|
THEN
|
|
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Naam te lang',
|
|
'Naam wordt afgebroken tot ['
|
|
|| v_prs_perslid_naam
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
IF (v_prs_perslid_naam IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Naam onbekend',
|
|
'Naam is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig tussenvoegsel';
|
|
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 te lang',
|
|
'Tussenvoegsel wordt afgebroken tot ['
|
|
|| v_prs_perslid_tussenvoegsel
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige voorletters';
|
|
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
|
|
|
|
IF LENGTH (v_prs_perslid_voorletters) > 10
|
|
THEN
|
|
v_prs_perslid_voorletters :=
|
|
SUBSTR (v_prs_perslid_voorletters, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voorletters te lang',
|
|
'Voorletters worden afgebroken tot ['
|
|
|| v_prs_perslid_voorletters
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige voornaam';
|
|
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 is te lang',
|
|
'Voornaam wordt afgebroken tot ['
|
|
|| v_prs_perslid_voornaam
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
IF (v_prs_perslid_voornaam IS NULL)
|
|
THEN
|
|
v_prs_perslid_voornaam := '-';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Voornaam onbekend',
|
|
'Voornaam wordt gezet op [-]'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- LING#19944: afdelingscode is vervangen door teamnaam
|
|
v_errorhint := 'Ongeldige teamnaam';
|
|
v_prs_team_naam := TRIM (v_prs_team_naam);
|
|
|
|
IF LENGTH (v_prs_team_naam) > 60
|
|
THEN
|
|
v_prs_team_naam := SUBSTR (v_prs_team_naam, 1, 60);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Teamnaam te lang',
|
|
'Teamnaam wordt afgebroken tot ['
|
|
|| v_prs_team_naam
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
IF (v_prs_team_naam IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Teamnaam onbekend',
|
|
'Teamnaam is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige functie';
|
|
v_prs_srtperslid_omschrijving :=
|
|
TRIM (v_prs_srtperslid_omschrijving);
|
|
|
|
IF LENGTH (v_prs_srtperslid_omschrijving) > 30
|
|
THEN
|
|
v_prs_srtperslid_omschrijving :=
|
|
SUBSTR (v_prs_srtperslid_omschrijving, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Functie te lang',
|
|
'Functie wordt afgebroken tot ['
|
|
|| v_prs_srtperslid_omschrijving
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
IF (v_prs_srtperslid_omschrijving IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Functie onbekend',
|
|
'Functie is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige locatiecode';
|
|
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 5
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Locatiecode te lang',
|
|
'Locatiecode wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige gebouwcode';
|
|
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
|
|
|
IF LENGTH (v_alg_gebouw_code) > 10
|
|
THEN
|
|
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Gebouwcode te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig verdiepingnummer';
|
|
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
|
|
|
BEGIN
|
|
v_alg_verdieping_volgnr_n :=
|
|
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
|
|
|
|
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
|
|
THEN
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errorhint,
|
|
'Geef een getal niet groter dan 3 posities'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
v_errorhint
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig ruimtenummer';
|
|
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 || 'Ruimtenummer te lang',
|
|
'Aanduiding wordt afgebroken tot ['
|
|
|| v_alg_ruimte_nr
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig telefoonnummer';
|
|
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 || 'Telefoonnummer te lang',
|
|
'Telefoonnummer wordt afgebroken tot ['
|
|
|| v_prs_perslid_telefoonnr
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
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 te lang',
|
|
'Loginnaam wordt afgebroken tot ['
|
|
|| v_prs_perslid_oslogin
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errorhint :=
|
|
'Fout bij toevoegen regel aan importtabel LING_IMP_PRS';
|
|
|
|
INSERT INTO ling_imp_prs
|
|
(prs_perslid_email, prs_perslid_naam,
|
|
prs_perslid_tussenvoegsel,
|
|
prs_perslid_voorletters,
|
|
prs_perslid_voornaam, prs_team_naam,
|
|
prs_srtperslid_omschrijving,
|
|
alg_locatie_code, alg_gebouw_code,
|
|
alg_verdieping_volgnr, alg_ruimte_nr,
|
|
prs_perslid_telefoonnr,
|
|
prs_perslid_oslogin
|
|
)
|
|
VALUES (v_prs_perslid_email, v_prs_perslid_naam,
|
|
v_prs_perslid_tussenvoegsel,
|
|
v_prs_perslid_voorletters,
|
|
v_prs_perslid_voornaam, v_prs_team_naam,
|
|
v_prs_srtperslid_omschrijving,
|
|
v_alg_locatie_code, v_alg_gebouw_code,
|
|
v_alg_verdieping_volgnr_n, v_alg_ruimte_nr,
|
|
v_prs_perslid_telefoonnr,
|
|
v_prs_perslid_oslogin
|
|
);
|
|
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
v_errorhint
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Ingelezen regel kan niet worden weggeschreven!'
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!'
|
|
);
|
|
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 :=
|
|
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END ling_import_prs;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE ling_update_prs (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
-- LET OP: moet idem zijn als declaratie bij LING_IMPORT_PRS
|
|
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
|
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
|
|
c_max_delta_percentage NUMBER (10) := 20;
|
|
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
|
c_ruimte_nr VARCHAR2 (10) := '000';
|
|
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
|
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count_prs_actual NUMBER (10);
|
|
v_count_prs_import NUMBER (10); -- Matching actual persons!
|
|
v_count_tot NUMBER (10);
|
|
v_count_error NUMBER (10);
|
|
v_count NUMBER (10);
|
|
--
|
|
v_perslid_key NUMBER (10);
|
|
v_afdeling_key NUMBER (10);
|
|
v_srtperslid_key NUMBER (10);
|
|
v_kenmerklink_key NUMBER (10);
|
|
v_locatie_key NUMBER (10);
|
|
v_gebouw_key NUMBER (10);
|
|
v_verdieping_key NUMBER (10);
|
|
v_ruimte_key NUMBER (10);
|
|
v_wp_volgnr NUMBER (3);
|
|
v_wp_oms VARCHAR2 (30);
|
|
v_wp_key NUMBER (10);
|
|
v_groep_key NUMBER (10);
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in ling_imp_prs!
|
|
-- Dubbele e-mails? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
|
CURSOR cdelprs
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE p.prs_perslid_email IS NOT NULL
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM ling_imp_prs ip
|
|
WHERE UPPER (ip.prs_perslid_email) =
|
|
UPPER (p.prs_perslid_email));
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in ling_imp_prs!
|
|
CURSOR csrtperslid
|
|
IS
|
|
SELECT MIN (prs_perslid_email) prs_perslid_email,
|
|
MIN (prs_perslid_naam) prs_perslid_naam,
|
|
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
|
|
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
|
FROM ling_imp_prs
|
|
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in ling_imp_prs!
|
|
-- Dubbele e-mails? Dan worden gewoon 2 (of meer) personen toegevoegd!
|
|
CURSOR cperslid
|
|
IS
|
|
SELECT *
|
|
FROM ling_imp_prs;
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in ling_imp_prs!
|
|
-- Dubbele e-mails? Dan krijgt iemand mogelijk de verkeerde plaats!
|
|
CURSOR cwp
|
|
IS
|
|
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code, ip.alg_verdieping_volgnr,
|
|
ip.alg_ruimte_nr
|
|
FROM ling_imp_prs ip, prs_v_aanwezigperslid p
|
|
WHERE UPPER (ip.prs_perslid_email) = UPPER (p.prs_perslid_email);
|
|
|
|
-- Alle actieve personen met e-mail (ie. de import-doelgroep) zonder een werkplek
|
|
CURSOR cnowp
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE p.prs_perslid_email IS NOT NULL
|
|
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
|
|
AND NOT EXISTS (SELECT 1
|
|
FROM prs_perslidwerkplek pw
|
|
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
|
|
|
-- Alle aanwezige personen met e-mail (ie. de import-doelgroep) niet in een groep
|
|
CURSOR cnogroup
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE p.prs_perslid_email IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1
|
|
FROM fac_gebruikersgroep g
|
|
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
|
BEGIN
|
|
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
|
INTO v_count_prs_actual
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_email IS NOT NULL;
|
|
|
|
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
|
INTO v_count_prs_import
|
|
FROM prs_v_aanwezigperslid p, ling_imp_prs ip
|
|
WHERE p.prs_perslid_email IS NOT NULL
|
|
AND UPPER (p.prs_perslid_email) = UPPER (ip.prs_perslid_email);
|
|
|
|
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
|
|
(100 - c_max_delta_percentage
|
|
)
|
|
)
|
|
)
|
|
THEN
|
|
-- Geldig importbestand wat betreft aantal personen
|
|
FOR recdelprs IN cdelprs
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
recdelprs.prs_perslid_email
|
|
|| '|'
|
|
|| recdelprs.prs_perslid_naam
|
|
|| '|'
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen verplichtingen';
|
|
|
|
-- Heeft persoon actuele/toekomstige verplichtingen?
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslid p, prs_v_verplichting_keys r
|
|
WHERE p.prs_perslid_key = r.prs_perslid_key
|
|
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
IF v_count = 0
|
|
THEN
|
|
v_errorhint := 'Fout bij verwijderen persoon';
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_verwijder = SYSDATE
|
|
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met e-mail ['
|
|
|| recdelprs.prs_perslid_email
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is verwijderd',
|
|
'Persoon is verwijderd'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
-- Staat persoon INACTIEF?
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
|
|
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
IF v_count = 0
|
|
THEN
|
|
v_errorhint := 'Fout bij INACTIEF maken persoon';
|
|
|
|
-- Persoon INACTIEF maken (update naam + reset oslogin)
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam =
|
|
SUBSTR (c_persoon_inactief || prs_perslid_naam,
|
|
1,
|
|
30
|
|
),
|
|
prs_perslid_oslogin = NULL
|
|
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met e-mail ['
|
|
|| recdelprs.prs_perslid_email
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is INACTIEF gemaakt',
|
|
'Persoon is INACTIEF gemaakt'
|
|
);
|
|
ELSE
|
|
v_errorhint := 'Fout bij INACTIEF houden persoon';
|
|
|
|
-- Persoon INACTIEF houden (reset oslogin; indien handmatig INACTIEF gemaakt)
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_oslogin = NULL
|
|
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
|
|
AND prs_perslid_oslogin IS NOT NULL;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met e-mail ['
|
|
|| recdelprs.prs_perslid_email
|
|
|| '] en naam ['
|
|
|| recdelprs.prs_perslid_naam
|
|
|| ', '
|
|
|| recdelprs.prs_perslid_voornaam
|
|
|| '] is INACTIEF',
|
|
'Persoon is INACTIEF'
|
|
);
|
|
END IF;
|
|
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recsrtperslid IN csrtperslid
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
recsrtperslid.prs_perslid_email
|
|
|| '|'
|
|
|| recsrtperslid.prs_perslid_naam
|
|
|| '|'
|
|
|| recsrtperslid.prs_perslid_voornaam
|
|
|| '|'
|
|
|| recsrtperslid.prs_srtperslid_omschrijving
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen functie';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_v_aanwezigsrtperslid
|
|
WHERE UPPER (prs_srtperslid_omschrijving) =
|
|
UPPER (recsrtperslid.prs_srtperslid_omschrijving);
|
|
|
|
IF v_count = 0
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen functie';
|
|
|
|
INSERT INTO prs_srtperslid
|
|
(prs_srtperslid_omschrijving
|
|
)
|
|
VALUES (recsrtperslid.prs_srtperslid_omschrijving
|
|
);
|
|
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Functie: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Functie: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
COMMIT;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recperslid IN cperslid
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
recperslid.prs_perslid_email
|
|
|| '|'
|
|
|| recperslid.prs_perslid_naam
|
|
|| '|'
|
|
|| recperslid.prs_perslid_voornaam
|
|
|| ' - ';
|
|
v_errorhint :=
|
|
'Fout bij bepalen functie ['
|
|
|| recperslid.prs_srtperslid_omschrijving
|
|
|| ']';
|
|
|
|
SELECT prs_srtperslid_key
|
|
INTO v_srtperslid_key
|
|
FROM prs_v_aanwezigsrtperslid
|
|
WHERE UPPER (prs_srtperslid_omschrijving) = UPPER (recperslid.prs_srtperslid_omschrijving);
|
|
|
|
v_errorhint :=
|
|
'Fout bij bepalen afdeling ['
|
|
|| recperslid.prs_team_naam
|
|
|| ']';
|
|
|
|
SELECT prs_afdeling_key
|
|
INTO v_afdeling_key
|
|
FROM prs_v_aanwezigafdeling
|
|
WHERE UPPER(prs_afdeling_omschrijving) = UPPER (recperslid.prs_team_naam);
|
|
|
|
v_errorhint := 'Fout bij bepalen persoon';
|
|
|
|
SELECT COUNT (*), MAX (prs_perslid_key)
|
|
INTO v_count, v_perslid_key
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE UPPER (prs_perslid_email) = UPPER (recperslid.prs_perslid_email);
|
|
|
|
IF v_count > 1
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding
|
|
|| ' kan persoon niet 1-duidig bepalen',
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
IF v_count = 0
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen persoon';
|
|
|
|
INSERT INTO prs_perslid
|
|
(prs_perslid_module, prs_srtperslid_key,
|
|
prs_afdeling_key, prs_perslid_naam,
|
|
prs_perslid_voorletters,
|
|
prs_perslid_tussenvoegsel,
|
|
prs_perslid_voornaam,
|
|
prs_perslid_telefoonnr,
|
|
prs_perslid_email,
|
|
prs_perslid_oslogin
|
|
)
|
|
VALUES ('PRS', v_srtperslid_key,
|
|
v_afdeling_key, recperslid.prs_perslid_naam,
|
|
recperslid.prs_perslid_voorletters,
|
|
recperslid.prs_perslid_tussenvoegsel,
|
|
recperslid.prs_perslid_voornaam,
|
|
recperslid.prs_perslid_telefoonnr,
|
|
recperslid.prs_perslid_email,
|
|
recperslid.prs_perslid_oslogin
|
|
)
|
|
RETURNING prs_perslid_key
|
|
INTO v_perslid_key;
|
|
ELSE
|
|
v_errorhint := 'Fout bij wijzigen persoon';
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_srtperslid_key = v_srtperslid_key,
|
|
prs_afdeling_key = v_afdeling_key,
|
|
prs_perslid_naam = recperslid.prs_perslid_naam,
|
|
prs_perslid_voorletters =
|
|
recperslid.prs_perslid_voorletters,
|
|
prs_perslid_tussenvoegsel =
|
|
recperslid.prs_perslid_tussenvoegsel,
|
|
prs_perslid_voornaam =
|
|
recperslid.prs_perslid_voornaam,
|
|
prs_perslid_telefoonnr =
|
|
COALESCE (recperslid.prs_perslid_telefoonnr,
|
|
prs_perslid_telefoonnr
|
|
),
|
|
prs_perslid_email =
|
|
COALESCE (recperslid.prs_perslid_email,
|
|
prs_perslid_email
|
|
),
|
|
prs_perslid_oslogin = recperslid.prs_perslid_oslogin
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Persoon: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
COMMIT;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR recwp IN cwp
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
recwp.prs_perslid_email
|
|
|| '|'
|
|
|| recwp.prs_perslid_naam
|
|
|| '|'
|
|
|| recwp.prs_perslid_voornaam
|
|
|| '|'
|
|
|| recwp.alg_locatie_code
|
|
|| '|'
|
|
|| recwp.alg_gebouw_code
|
|
|| '|'
|
|
|| recwp.alg_verdieping_volgnr
|
|
|| '|'
|
|
|| recwp.alg_ruimte_nr
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen persoon';
|
|
|
|
SELECT prs_perslid_key
|
|
INTO v_perslid_key
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE UPPER (prs_perslid_email) = UPPER (recwp.prs_perslid_email);
|
|
|
|
v_errorhint := 'Fout bij bepalen locatie';
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen gebouw';
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen verdieping';
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = recwp.alg_verdieping_volgnr;
|
|
|
|
v_errorhint := 'Fout bij bepalen ruimte';
|
|
|
|
SELECT alg_ruimte_key
|
|
INTO v_ruimte_key
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE alg_verdieping_key = v_verdieping_key
|
|
AND UPPER (alg_ruimte_nr) = UPPER (recwp.alg_ruimte_nr);
|
|
|
|
v_errorhint := 'Fout bij verhuizen naar nieuwe werkplek';
|
|
PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'G');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
v_errormsg := 'Geen data gevonden';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Werkplek: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
''
|
|
);
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Werkplek: verwerkte regels met foutmelding: '
|
|
|| TO_CHAR (v_count_error),
|
|
''
|
|
);
|
|
COMMIT;
|
|
|
|
FOR recnowp IN cnowp
|
|
LOOP
|
|
BEGIN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon met e-mail ['
|
|
|| recnowp.prs_perslid_email
|
|
|| '] en naam ['
|
|
|| recnowp.prs_perslid_naam
|
|
|| ', '
|
|
|| recnowp.prs_perslid_voornaam
|
|
|| '] heeft geen werkplek',
|
|
'Geen werkplek'
|
|
);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR recnogroup IN cnogroup
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
recnogroup.prs_perslid_email
|
|
|| '|'
|
|
|| recnogroup.prs_perslid_naam
|
|
|| '|'
|
|
|| recnogroup.prs_perslid_voornaam
|
|
|| ' - ';
|
|
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
|
|
|
|
SELECT fac_groep_key
|
|
INTO v_groep_key
|
|
FROM fac_groep
|
|
WHERE fac_groep_upper = c_groep_upper;
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan groep [' || c_groep_upper || ']';
|
|
|
|
INSERT INTO fac_gebruikersgroep
|
|
(fac_groep_key, prs_perslid_key
|
|
)
|
|
VALUES (v_groep_key, recnogroup.prs_perslid_key
|
|
);
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint
|
|
);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
|
|
DELETE FROM prs_srtperslid sp
|
|
WHERE NOT EXISTS (
|
|
SELECT 1
|
|
FROM prs_perslid p
|
|
WHERE p.prs_srtperslid_key =
|
|
sp.prs_srtperslid_key);
|
|
|
|
COMMIT;
|
|
ELSE
|
|
fac.imp_writelog
|
|
(p_import_key,
|
|
'E',
|
|
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
|
'- max. verschilpercentage = ['
|
|
|| TO_CHAR (c_max_delta_percentage)
|
|
|| '%] <br> '
|
|
|| '- #personen importbestand = ['
|
|
|| TO_CHAR (v_count_prs_import)
|
|
|| '] <br> '
|
|
|| '- #personen Facilitor = ['
|
|
|| TO_CHAR (v_count_prs_actual)
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF; -- Geldig importbestand wat betreft aantal inserts
|
|
|
|
COMMIT;
|
|
END ling_update_prs;
|
|
/
|
|
|
|
-- Rappelnotificaties naar contractbeheerder en -eigenaar.
|
|
-- (Notificatie naar eigenaar alleen als dit niet ook de beheerder is)
|
|
-- Dagelijks schedulen; rapporteert alleen de contracten die vandaag de rappeltermijn ingaan.
|
|
CREATE OR REPLACE VIEW ling_v_noti_cntreminder_geg
|
|
AS
|
|
SELECT 'CNTMAI' code,
|
|
'' sender,
|
|
c.prs_perslid_key_beh beh,
|
|
c.prs_perslid_key_eig eig,
|
|
cnt.cnt_getrappeldatum (c.cnt_contract_key) rap,
|
|
cnt.cnt_getopzegdatum (c.cnt_contract_key) opz,
|
|
'Rappel: Contract '
|
|
|| c.cnt_contract_nummer_intern
|
|
|| ' ('
|
|
|| c.cnt_contract_omschrijving
|
|
|| ' '
|
|
|| b.prs_bedrijf_naam
|
|
|| ')'
|
|
|| ' moet uiterlijk per '
|
|
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
|
'DD-MM-YYYY')
|
|
|| ' worden verlengd of opgezegd.' text,
|
|
c.cnt_contract_key key,
|
|
c.cnt_contract_nummer_intern par1,
|
|
cnt.cnt_getopzegdatum (c.cnt_contract_key) par2,
|
|
NULL xkey
|
|
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
|
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
|
AND cnt_contract_verwijder IS NULL
|
|
AND cnt_contract_status = 0
|
|
AND TRUNC(SYSDATE) = TRUNC(cnt.cnt_getrappeldatum(c.cnt_contract_key));
|
|
|
|
CREATE OR REPLACE VIEW ling_v_noti_cntreminder
|
|
(
|
|
CODE,
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
KEY,
|
|
PAR1,
|
|
PAR2,
|
|
XKEY
|
|
)
|
|
AS
|
|
SELECT code,
|
|
sender,
|
|
beh receiver,
|
|
text,
|
|
key,
|
|
par1,
|
|
par2,
|
|
xkey
|
|
FROM ling_v_noti_cntreminder_geg
|
|
WHERE beh IS NOT NULL
|
|
UNION ALL
|
|
SELECT code,
|
|
sender,
|
|
eig receiver,
|
|
text,
|
|
key,
|
|
par1,
|
|
par2,
|
|
xkey
|
|
FROM ling_v_noti_cntreminder_geg
|
|
WHERE eig IS NOT NULL
|
|
AND eig != beh;
|
|
|
|
|
|
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
|
/
|
|
BEGIN fac.registercustversion('LING', 3); END;
|
|
/
|
|
|
|
commit;
|
|
|
|
spool off
|