1116 lines
39 KiB
SQL
1116 lines
39 KiB
SQL
-- Script containing customer specific configuration sql statements for GESL: Stadsdeel Geuzenveld-Slotermeer (via U4A)
|
|
-- (c) 2009 SG|facilitor
|
|
-- $Revision$
|
|
-- $Id$
|
|
--
|
|
-- Support: +31 53 4800710
|
|
|
|
|
|
|
|
SPOOL xGESL.LST
|
|
SET ECHO ON
|
|
--------------
|
|
|
|
CREATE OR REPLACE PROCEDURE gesl_import_organisatie (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
c_fielddelimitor VARCHAR2 (1) := ',';
|
|
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
v_ongeldig BOOLEAN;
|
|
v_mode NUMBER(1);
|
|
v_aanduiding VARCHAR (200);
|
|
v_all_null BOOLEAN;
|
|
v_count_error NUMBER(10);
|
|
v_count_tot NUMBER(10);
|
|
v_count_import NUMBER(10);
|
|
v_header_valid BOOLEAN;
|
|
|
|
|
|
-- De importvelden:
|
|
v_bedrijf_naam VARCHAR2 (256);
|
|
v_afdeling_naam VARCHAR2 (256);
|
|
v_afdeling_naam_parent VARCHAR2 (256);
|
|
v_afdeling_omschrijving VARCHAR2 (256);
|
|
v_kostenplaats_nr VARCHAR2 (256);
|
|
|
|
-- PRS_BEDRIJF
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
BEGIN
|
|
DELETE FROM gesl_imp_organisatie;
|
|
|
|
COMMIT;
|
|
|
|
v_count_error := 0;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
v_header_valid := FALSE;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
|
|
v_newline := rec. fac_imp_file_line;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_ongeldig := FALSE;
|
|
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_bedrijf_naam
|
|
);
|
|
--
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_afdeling_naam_parent
|
|
);
|
|
--
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_afdeling_naam
|
|
);
|
|
--
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_afdeling_omschrijving
|
|
);
|
|
--
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_kostenplaats_nr
|
|
);
|
|
--
|
|
v_aanduiding := v_bedrijf_naam||'|'||v_afdeling_naam||'|'||v_afdeling_naam_parent||'| ';
|
|
|
|
-- controleer de header
|
|
IF (v_bedrijf_naam = 'Bedrijfsnaam')
|
|
THEN
|
|
IF v_bedrijf_naam = 'Bedrijfsnaam' AND
|
|
v_afdeling_naam_parent = 'Afdelingscode parent' AND
|
|
v_afdeling_naam = 'Afdelingscode' AND
|
|
v_afdeling_omschrijving = 'Afdelingsomschrijving' AND
|
|
v_kostenplaats_nr = 'Kostenplaats'
|
|
THEN
|
|
v_header_valid := TRUE;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||'Ongeldig importbestand',
|
|
'Kopregel: ' || v_aanduiding
|
|
);
|
|
return;
|
|
END IF;
|
|
ELSE
|
|
-- Controleer alle veldwaarde
|
|
v_bedrijf_naam := 'Geuzenveld-Slotermeer';
|
|
--
|
|
v_afdeling_naam := trim(v_afdeling_naam);
|
|
IF LENGTH (v_afdeling_naam) > 10 THEN
|
|
v_afdeling_naam:= SUBSTR(v_afdeling_naam,1,10);
|
|
fac.imp_writelog(p_import_key
|
|
,'W'
|
|
,v_aanduiding||'Afdeling-aanduiding is te lang'
|
|
,'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
|
|
);
|
|
END IF;
|
|
--
|
|
v_afdeling_naam_parent := trim(v_afdeling_naam_parent);
|
|
IF LENGTH (v_afdeling_naam_parent) > 10 THEN
|
|
v_afdeling_naam_parent:= SUBSTR(v_afdeling_naam_parent,1,10);
|
|
fac.imp_writelog(p_import_key
|
|
,'W'
|
|
,v_aanduiding||'Afdeling-aanduiding is te lang'
|
|
,'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
|
|
);
|
|
END IF;
|
|
--
|
|
v_afdeling_omschrijving := trim(v_afdeling_omschrijving);
|
|
IF LENGTH (v_afdeling_omschrijving) > 60 THEN
|
|
v_afdeling_omschrijving:= SUBSTR(v_afdeling_omschrijving,1,60);
|
|
fac.imp_writelog(p_import_key
|
|
,'W'
|
|
,v_aanduiding||'Afdelingsomschrijving is te lang'
|
|
,'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
|
|
);
|
|
END IF;
|
|
--
|
|
v_kostenplaats_nr := trim(v_kostenplaats_nr);
|
|
IF LENGTH (v_kostenplaats_nr) > 30 THEN
|
|
v_kostenplaats_nr:= SUBSTR(v_kostenplaats_nr,1,30);
|
|
fac.imp_writelog(p_import_key
|
|
,'W'
|
|
,v_aanduiding||'Kostenplaats-aanduiding is te lang'
|
|
,'Aanduiding wordt afgebroken tot [' || v_kostenplaats_nr || ']'
|
|
);
|
|
END IF;
|
|
|
|
v_all_null := (v_bedrijf_naam is null) and
|
|
(v_afdeling_naam is null) and
|
|
(v_afdeling_naam_parent is null) and
|
|
(v_afdeling_omschrijving is null) and
|
|
(v_kostenplaats_nr is null);
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = FALSE AND v_all_null = FALSE THEN
|
|
v_errormsg := 'Fout bij toevoegen te importeren bedrijf/afdeling ['||v_afdeling_naam||']';
|
|
INSERT INTO GESL_IMP_ORGANISATIE (
|
|
PRS_BEDRIJF_NAAM
|
|
,PRS_AFDELING_NAAM
|
|
,PRS_AFDELING_NAAM_PARENT
|
|
,PRS_AFDELING_OMSCHRIJVING
|
|
,PRS_KOSTENPLAATS_NR
|
|
) VALUES (
|
|
v_bedrijf_naam
|
|
,v_afdeling_naam
|
|
,v_afdeling_naam_parent
|
|
,v_afdeling_omschrijving
|
|
,v_kostenplaats_nr
|
|
);
|
|
|
|
v_count_import := v_count_import + 1;
|
|
|
|
END IF;
|
|
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,
|
|
''
|
|
);
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog ( p_import_key,
|
|
'S',
|
|
'Afdeling: aantal ingelezen regels: '||to_char(v_count_tot),
|
|
''
|
|
);
|
|
|
|
fac.imp_writelog ( p_import_key,
|
|
'S',
|
|
'Afdeling: aantal ongeldige importregels: <b>'||to_char(v_count_tot - v_count_import),
|
|
''
|
|
);
|
|
|
|
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_errormsg,
|
|
''
|
|
);
|
|
END gesl_import_organisatie;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE gesl_update_organisatie (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
v_count NUMBER(10);
|
|
v_count_perlid NUMBER(10);
|
|
v_count_verpl NUMBER(10);
|
|
v_ongeldig NUMBER(1);
|
|
v_count_update NUMBER(10);
|
|
v_count_error NUMBER(10);
|
|
v_count_tot NUMBER(10);
|
|
|
|
--
|
|
v_bedrijf_key NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
v_prs_afdeling_parentkey NUMBER(10);
|
|
|
|
|
|
|
|
CURSOR c_afd_new
|
|
IS
|
|
SELECT prs_afdeling_naam prs_afdeling_naam
|
|
, prs_afdeling_omschrijving prs_afdeling_omschrijving
|
|
FROM GESL_IMP_ORGANISATIE i
|
|
WHERE NOT EXISTS (
|
|
SELECT a.prs_afdeling_naam
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND RTRIM(a.prs_afdeling_upper) = RTRIM(UPPER(i.prs_afdeling_naam)));
|
|
|
|
|
|
CURSOR c_afd_upd
|
|
IS
|
|
SELECT i.prs_afdeling_omschrijving prs_afdeling_omschrijving
|
|
, prs_afdeling_key prs_afdeling_key
|
|
FROM GESL_IMP_ORGANISATIE i
|
|
, prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND RTRIM(a.prs_afdeling_upper) = RTRIM(UPPER(i.prs_afdeling_naam));
|
|
|
|
CURSOR c_afd_del
|
|
IS
|
|
SELECT prs_afdeling_key prs_afdeling_key
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND NOT EXISTS (
|
|
SELECT i.prs_afdeling_naam
|
|
FROM GESL_IMP_ORGANISATIE i
|
|
WHERE RTRIM(a.prs_afdeling_upper) = RTRIM(UPPER(i.prs_afdeling_naam)))
|
|
AND prs_bedrijf_key <> 2;
|
|
|
|
BEGIN
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN c_afd_new
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := rec.prs_afdeling_naam||'|'||rec.prs_afdeling_omschrijving ||'| ';
|
|
v_errormsg := '';
|
|
v_prs_afdeling_parentkey := to_number(NULL);
|
|
v_bedrijf_key := 21;
|
|
v_errorhint := 'Fout bij toevoegen afdeling';
|
|
|
|
INSERT INTO PRS_AFDELING
|
|
(prs_afdeling_naam
|
|
,prs_afdeling_omschrijving
|
|
,prs_bedrijf_key
|
|
,prs_afdeling_parentkey
|
|
,prs_kostenplaats_key
|
|
)
|
|
VALUES
|
|
(rec.prs_afdeling_naam
|
|
,rec.prs_afdeling_omschrijving
|
|
,v_bedrijf_key
|
|
,v_prs_afdeling_parentkey
|
|
,1 -- default kostenplaats key
|
|
);
|
|
|
|
commit;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens toevoegen van afdeling ['||v_aanduiding||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN c_afd_upd
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := rec.prs_afdeling_key||'|'||rec.prs_afdeling_omschrijving ||'| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Fout bij wijzigen afdeling';
|
|
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_omschrijving = rec.prs_afdeling_omschrijving
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
|
|
|
commit;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens aanpassen van afdeling ['||v_aanduiding||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN c_afd_del
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := rec.prs_afdeling_key;
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Fout bij bepaling kinderen';
|
|
|
|
SELECT count(*)
|
|
INTO v_count_perlid
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
|
|
|
IF v_count_perlid > 0 THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Fout bij verwijderen afdeling, afdeling bevat medewerkers ' || '[' || v_aanduiding || ']',
|
|
v_errorhint
|
|
);
|
|
END IF;
|
|
|
|
v_errorhint := 'Fout bij bepaling verplichtingen';
|
|
SELECT count(*)
|
|
INTO v_count_verpl
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
|
|
|
IF v_count_verpl > 0 and v_count_perlid = 0 THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Fout bij verwijderen afdeling, afdeling heeft verplichtingen ' || '[' || v_aanduiding || ']',
|
|
v_errorhint
|
|
);
|
|
END IF;
|
|
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_v_afd_verplichting
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
|
|
|
IF v_count > 0 THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Fout bij verwijderen afdeling, afdeling heeft verplichtingen ' || '[' || v_aanduiding || ']',
|
|
v_errorhint
|
|
);
|
|
END IF;
|
|
|
|
IF v_count_verpl > 0 OR v_count_perlid > 0 THEN
|
|
v_errorhint := 'Fout bij inactief maken van afdeling';
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_omschrijving = SUBSTR('Inactief: ' || prs_afdeling_omschrijving,1,30)
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key
|
|
AND prs_afdeling_omschrijving NOT LIKE 'Inactief%';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Afdeling inactief gemaakt ' || '[' || v_aanduiding || ']',
|
|
''
|
|
);
|
|
ELSE
|
|
v_errorhint := 'Fout bij verwijderen van afdeling';
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_verwijder = sysdate
|
|
WHERE prs_afdeling_key = rec.prs_afdeling_key;
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Afdeling verwijderd ' || '[' || v_aanduiding || ']',
|
|
''
|
|
);
|
|
END IF;
|
|
|
|
commit;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens verwijderen van afdeling ['||v_aanduiding||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
END gesl_update_organisatie;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE gesl_import_perslid (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
c_fielddelimitor VARCHAR2 (1) := ',';
|
|
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR (1000);
|
|
v_errorhint VARCHAR (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
v_ongeldig NUMBER(1);
|
|
v_mode NUMBER(1);
|
|
v_aanduiding VARCHAR (300);
|
|
v_all_null BOOLEAN;
|
|
v_count_error NUMBER(10);
|
|
v_count_tot NUMBER(10);
|
|
v_count_import NUMBER(10);
|
|
v_header_valid BOOLEAN;
|
|
|
|
-- De importvelden:
|
|
v_prs_afdeling_naam VARCHAR2(256);
|
|
v_prs_perslid_naam VARCHAR2(256);
|
|
v_prs_perslid_voornaam VARCHAR2(256);
|
|
v_prs_perslid_telefoonnr VARCHAR2(256);
|
|
v_prs_perslid_email VARCHAR2(256);
|
|
v_prs_srtperslid_omschrijving VARCHAR2(256);
|
|
v_prs_perslid_oslogin VARCHAR2(256);
|
|
v_alg_locatie_code VARCHAR2(256);
|
|
v_dummy VARCHAR2(256);
|
|
|
|
|
|
-- PRS_PERSLID
|
|
CURSOR c
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
BEGIN
|
|
DELETE FROM gesl_imp_perslid;
|
|
|
|
COMMIT;
|
|
|
|
v_count_error := 0;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
v_aanduiding := '';
|
|
v_header_valid := FALSE;
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec.fac_imp_file_line;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_errormsg := '';
|
|
v_errorhint := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := v_newline;
|
|
v_ongeldig := 0;
|
|
|
|
-- Lees alle veldwaarden
|
|
-- 01 Ruimtenummer
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 02 Werkplekvolgnummer
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 03 Werkplekomschrijving
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 04 Afdelingscode
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_afdeling_naam
|
|
);
|
|
-- 05 Achternaam
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_perslid_naam
|
|
);
|
|
-- 06 Tussenvoegsel
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 07 Voorletters
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 08 Voornaam
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_perslid_voornaam
|
|
);
|
|
-- 09 Titel
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 10 Telefoonnummer
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_perslid_telefoonnr
|
|
);
|
|
-- 11 Mobiel
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 12 Email
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_perslid_email
|
|
);
|
|
-- 13 Functie
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_srtperslid_omschrijving
|
|
);
|
|
-- 14 Personeelsnummer
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 15 Login
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_prs_perslid_oslogin
|
|
);
|
|
-- 16
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_dummy
|
|
);
|
|
-- 17
|
|
fac.imp_getfield (v_newline,
|
|
C_FIELDDELIMITOR,
|
|
v_alg_locatie_code
|
|
);
|
|
--
|
|
IF (v_header_valid = FALSE)
|
|
THEN
|
|
IF v_prs_afdeling_naam = 'Afdelingscode' AND
|
|
v_prs_perslid_naam = 'Persoon achternaam' AND
|
|
v_prs_perslid_voornaam = 'Voornaam' AND
|
|
v_prs_perslid_telefoonnr = 'Telefoonnummer' AND
|
|
v_prs_perslid_email = 'Email' AND
|
|
v_prs_srtperslid_omschrijving = 'Functie' AND
|
|
v_prs_perslid_oslogin = 'Loginnaam' AND
|
|
v_alg_locatie_code = 'Locatie'
|
|
THEN
|
|
v_header_valid := TRUE;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||'Ongeldig importbestand',
|
|
'Kopregel: ' || v_aanduiding
|
|
);
|
|
return;
|
|
END IF;
|
|
ELSE
|
|
-- Controleer alle veldwaarde
|
|
|
|
v_errorhint := 'Ongeldige afdelingscode';
|
|
v_prs_afdeling_naam := trim(v_prs_afdeling_naam);
|
|
IF LENGTH (v_prs_afdeling_naam) > 10
|
|
THEN
|
|
v_prs_afdeling_naam:= SUBSTR(v_prs_afdeling_naam,1,10);
|
|
-- 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;
|
|
-- Is een geldige situatie om cursisten en andere vervuiling tegen te gaan,dus niet loggen
|
|
-- 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) > 30
|
|
THEN
|
|
v_prs_perslid_naam:= SUBSTR(v_prs_perslid_naam,1,30);
|
|
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;
|
|
-- geldige foutmelding
|
|
-- fac.imp_writelog(p_import_key
|
|
-- ,'E'
|
|
-- ,v_aanduiding||'Naam persoon onbekend'
|
|
-- ,'Naam persoon moet worden opgegeven'
|
|
-- );
|
|
END IF;
|
|
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 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 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) > 30
|
|
THEN
|
|
v_prs_srtperslid_omschrijving:= SUBSTR(v_prs_srtperslid_omschrijving,1,30);
|
|
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;
|
|
-- Is een geldige situatie om cursisten en andere vervuiling tegen te gaan,dus niet loggen
|
|
-- fac.imp_writelog(p_import_key
|
|
-- ,'E'
|
|
-- ,v_aanduiding||'Functie persoon onbekend'
|
|
-- ,'Functie persoon moet worden opgegeven'
|
|
-- );
|
|
END IF;
|
|
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;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Fout bij toevoegen te importeren bedrijf/afdeling ['||v_prs_afdeling_naam||']';
|
|
|
|
INSERT INTO GESL_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_VOORLETTERS
|
|
,PRS_PERSLID_VOORNAAM
|
|
,PRS_PERSLID_TITEL
|
|
,PRS_PERSLID_TELEFOONNR
|
|
,PRS_PERSLID_MOBIEL
|
|
,PRS_PERSLID_EMAIL
|
|
,PRS_SRTPERSLID_OMSCHRIJVING
|
|
,PRS_PERSLID_NR
|
|
,PRS_PERSLID_OSLOGIN
|
|
) VALUES (
|
|
v_ALG_LOCATIE_CODE
|
|
,NULL
|
|
,NULL
|
|
,NULL
|
|
,NULL
|
|
,NULL
|
|
,v_PRS_AFDELING_NAAM
|
|
,v_PRS_PERSLID_NAAM
|
|
,NULL
|
|
,NULL
|
|
,v_PRS_PERSLID_VOORNAAM
|
|
,NULL
|
|
,v_PRS_PERSLID_TELEFOONNR
|
|
,NULL
|
|
,v_PRS_PERSLID_EMAIL
|
|
,v_PRS_SRTPERSLID_OMSCHRIJVING
|
|
,NULL
|
|
,v_PRS_PERSLID_OSLOGIN
|
|
);
|
|
|
|
v_count_import := v_count_import + 1;
|
|
END IF;
|
|
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,
|
|
''
|
|
);
|
|
END;
|
|
END LOOP;
|
|
|
|
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-1),
|
|
''
|
|
);
|
|
|
|
|
|
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
|
|
);
|
|
|
|
END gesl_import_perslid;
|
|
/
|
|
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE gesl_update_perslid (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
CURSOR c_perslid_add IS
|
|
SELECT
|
|
DECODE(p.prs_perslid_key,NULL,'ADD','MOD') AKTIE
|
|
, p.prs_perslid_key
|
|
, i.prs_perslid_naam
|
|
, i.prs_afdeling_naam
|
|
, i.prs_perslid_voornaam
|
|
, i.prs_perslid_telefoonnr
|
|
, i.prs_perslid_email
|
|
, i.prs_srtperslid_omschrijving
|
|
, i.prs_perslid_oslogin
|
|
, i.alg_locatie_code
|
|
FROM gesl_imp_perslid i, prs_perslid p
|
|
WHERE UPPER(i.prs_perslid_oslogin) = p.prs_perslid_oslogin(+)
|
|
AND i.prs_perslid_oslogin IS NOT NULL;
|
|
|
|
CURSOR c_perslid_del IS
|
|
SELECT
|
|
p.prs_perslid_key
|
|
,p.prs_perslid_oslogin
|
|
FROM gesl_imp_perslid i, prs_perslid p
|
|
WHERE i.prs_perslid_oslogin(+) = p.prs_perslid_oslogin
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND i.prs_perslid_oslogin IS NULL
|
|
AND p.prs_perslid_oslogin IS NOT NULL
|
|
AND nvl (p.prs_perslid_oslogin, 'QueQueLeQue') NOT LIKE '\_%' ESCAPE '\';
|
|
|
|
v_teller INTEGER;
|
|
v_count NUMBER(10);
|
|
v_perslidkostenplaats_key NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
v_perslid_key NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
v_srtperslid_key NUMBER(10);
|
|
v_prs_kenmerk_key NUMBER(10);
|
|
v_ruimte_key NUMBER(10);
|
|
v_werkplek_key NUMBER(10);
|
|
|
|
v_newline VARCHAR2 (1000); -- Import line
|
|
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
|
v_errormsg VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
v_debug BOOLEAN;
|
|
|
|
|
|
BEGIN
|
|
|
|
v_debug := FALSE;
|
|
|
|
IF v_debug THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Processing PROCEDURE gesl_update_perslid',
|
|
'SET v_debug = FALSE to skip this information'
|
|
);
|
|
commit;
|
|
END IF;
|
|
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM gesl_imp_perslid;
|
|
|
|
IF v_count = 0 THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Geen inputgegevens gevonden tijden update',
|
|
''
|
|
);
|
|
RETURN;
|
|
END IF;
|
|
|
|
-- Personen toevoegen/wijzigen
|
|
FOR rec IN c_perslid_add
|
|
LOOP
|
|
BEGIN
|
|
v_afdeling_key := -1;
|
|
|
|
v_errmes := 'Fout bij bepalen van de afdeling <' || rec.prs_afdeling_naam || '>';
|
|
SELECT prs_afdeling_key
|
|
INTO v_afdeling_key
|
|
FROM prs_v_aanwezigafdeling
|
|
WHERE RTRIM(prs_afdeling_upper) = RTRIM(UPPER(rec.prs_afdeling_naam));
|
|
|
|
v_errmes := 'Fout bij bepalen/aanmaken functie a.d.h.v. de functie-omschrijving <' || rec.prs_srtperslid_omschrijving || '>';
|
|
BEGIN
|
|
SELECT prs_srtperslid_key
|
|
INTO v_srtperslid_key
|
|
FROM prs_srtperslid
|
|
WHERE UPPER(prs_srtperslid_omschrijving) = UPPER(rec.prs_srtperslid_omschrijving);
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
|
VALUES (rec.prs_srtperslid_omschrijving)
|
|
RETURNING prs_srtperslid_key INTO v_srtperslid_key;
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Functie toegevoegd: ' || rec.prs_srtperslid_omschrijving,
|
|
'key:' || v_srtperslid_key
|
|
);
|
|
END;
|
|
|
|
v_perslid_key := rec.prs_perslid_key;
|
|
IF (rec.aktie = 'ADD') THEN
|
|
v_errmes := 'Fout bij toevoegen persoon met persoonnr <' || rec.prs_perslid_oslogin || '>';
|
|
|
|
INSERT INTO prs_perslid
|
|
(prs_perslid_naam
|
|
,prs_perslid_module
|
|
,prs_perslid_telefoonnr
|
|
,prs_perslid_oslogin
|
|
,prs_srtperslid_key
|
|
,prs_afdeling_key
|
|
,prs_perslid_email)
|
|
values
|
|
(SUBSTR(rec.prs_perslid_voornaam || ' '|| rec.prs_perslid_naam, 1, 30)
|
|
,'PRS'
|
|
,rec.prs_perslid_telefoonnr
|
|
,rec.prs_perslid_oslogin
|
|
,v_srtperslid_key
|
|
,v_afdeling_key
|
|
,rec.prs_perslid_email
|
|
) RETURNING prs_perslid_key INTO v_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon toegevoegd: ' || SUBSTR(rec.prs_perslid_voornaam || ' '|| rec.prs_perslid_naam, 1, 30),
|
|
'key:' || v_perslid_key
|
|
);
|
|
|
|
IF rec.alg_locatie_code = 'G' THEN v_werkplek_key := 1;
|
|
ELSIF rec.alg_locatie_code = 'O' THEN v_werkplek_key := 21;
|
|
ELSIF rec.alg_locatie_code = 'S' THEN v_werkplek_key := 22;
|
|
ELSE v_werkplek_key := NULL;
|
|
END IF;
|
|
|
|
IF v_werkplek_key IS NOT NULL THEN
|
|
INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting)
|
|
VALUES (v_perslid_key, v_werkplek_key, 0);
|
|
END IF;
|
|
ELSE
|
|
v_errmes := 'Fout bij wijzigen persoon met login <' || rec.prs_perslid_oslogin || '>' || ' (' || rec.prs_afdeling_naam||','||to_char(v_afdeling_key)||')';
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam = SUBSTR(rec.prs_perslid_voornaam || ' '|| rec.prs_perslid_naam, 1, 30)
|
|
,prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr
|
|
,prs_perslid_oslogin = rec.prs_perslid_oslogin
|
|
,prs_perslid_email = rec.prs_perslid_email
|
|
,prs_srtperslid_key = v_srtperslid_key
|
|
,prs_afdeling_key = v_afdeling_key
|
|
,prs_perslid_verwijder = NULL
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
|
|
END IF;
|
|
|
|
COMMIT; -- Er zijn geen fouten opgetreden
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Personen toevoegen/wijzigen: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
|
|
-- Personen verwijderen
|
|
FOR rec IN c_perslid_del
|
|
LOOP
|
|
BEGIN
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_v_verplichting_all
|
|
WHERE prs_perslid_key = rec.prs_perslid_key;
|
|
|
|
IF (v_count = 0) THEN
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_verwijder = sysdate
|
|
WHERE prs_perslid_key = rec.prs_perslid_key;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Persoon verwijderd: ' || rec.prs_perslid_oslogin,
|
|
'key:' || rec.prs_perslid_key
|
|
);
|
|
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Persoon met login ' || rec.prs_perslid_oslogin || ' kan niet verwijderd worden.',
|
|
'Persoon heeft nog ' || to_char(v_count) || ' openstaande verplichting(en).'
|
|
);
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam = substr('Inactief: ' || prs_perslid_naam, 1, 30)
|
|
WHERE prs_perslid_key = rec.prs_perslid_key
|
|
AND prs_perslid_naam NOT LIKE 'Inactief%';
|
|
|
|
commit;
|
|
END IF;
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Personen verwijderen: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
COMMIT; -- Logging opslaan
|
|
END;
|
|
END LOOP;
|
|
END gesl_update_perslid;
|
|
/
|
|
|
|
BEGIN fac.registercustversion('GESL', 7); END;
|
|
/
|
|
BEGIN adm.systrackscript('$Workfile: gesl.sql $', '$Revision$', 0); END;
|
|
/
|
|
COMMIT;
|
|
|
|
spool off
|