LOGI#56094: Personen import afgelopen nacht verkeerd gelopen
svn path=/Customer/trunk/; revision=43022
This commit is contained in:
685
LOGI/logi.sql
685
LOGI/logi.sql
@@ -862,7 +862,6 @@ END;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE logi_import_persoon (p_import_key IN NUMBER)
|
||||
AS
|
||||
oracle_err_num NUMBER;
|
||||
@@ -888,10 +887,59 @@ BEGIN
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = 'CGI';
|
||||
|
||||
--- LET OP: medewerkers zonder email adres (want dat wordt de match) verwijderen!
|
||||
DELETE fac_imp_perslid p
|
||||
WHERE p.prs_perslid_email IS NULL;
|
||||
UPDATE fac_imp_perslid p
|
||||
SET p.alg_locatie_code =
|
||||
(SELECT lo.alg_locatie_code
|
||||
FROM fac_usrdata ud, alg_locatie lo
|
||||
WHERE ud.fac_usrtab_key = 1
|
||||
AND ud.fac_usrdata_code = lo.alg_locatie_code
|
||||
AND ud.fac_usrdata_omschr = p.prs_kenmerk1
|
||||
AND lo.alg_locatie_verwijder IS NULL);
|
||||
|
||||
UPDATE fac_imp_perslid p
|
||||
SET p.alg_gebouw_code =
|
||||
(SELECT g.alg_gebouw_code
|
||||
FROM alg_locatie l, alg_gebouw g
|
||||
WHERE p.alg_locatie_code = l.alg_locatie_code
|
||||
AND l.alg_locatie_key = g.alg_locatie_key
|
||||
AND g.alg_gebouw_verwijder IS NULL
|
||||
AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
|
||||
AND l.alg_locatie_verwijder IS NULL);
|
||||
|
||||
UPDATE fac_imp_perslid p
|
||||
SET p.alg_verdieping_volgnr =
|
||||
(SELECT v.alg_verdieping_volgnr
|
||||
FROM alg_locatie l, alg_gebouw g, alg_verdieping v
|
||||
WHERE p.alg_locatie_code = l.alg_locatie_code
|
||||
AND p.alg_gebouw_code = g.alg_gebouw_code
|
||||
AND l.alg_locatie_key = g.alg_locatie_key
|
||||
AND g.alg_gebouw_verwijder IS NULL
|
||||
AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
|
||||
AND l.alg_locatie_verwijder IS NULL
|
||||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||||
AND v.alg_verdieping_code = '0'
|
||||
AND v.alg_verdieping_verwijder IS NULL);
|
||||
|
||||
UPDATE fac_imp_perslid p
|
||||
SET p.alg_ruimte_nr =
|
||||
(SELECT r.alg_ruimte_nr
|
||||
FROM alg_locatie l,
|
||||
alg_gebouw g,
|
||||
alg_verdieping v,
|
||||
alg_ruimte r
|
||||
WHERE p.alg_locatie_code = l.alg_locatie_code
|
||||
AND l.alg_locatie_key = g.alg_locatie_key
|
||||
AND p.alg_gebouw_code = g.alg_gebouw_code
|
||||
AND p.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||||
AND g.alg_gebouw_verwijder IS NULL
|
||||
AND g.alg_srtgebouw_key <> 61 -- parkeer garages doen niet mee
|
||||
AND l.alg_locatie_verwijder IS NULL
|
||||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||||
AND v.alg_verdieping_code = '0'
|
||||
AND v.alg_verdieping_verwijder IS NULL
|
||||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||||
AND r.alg_ruimte_nr = '000'
|
||||
AND r.alg_ruimte_verwijder IS NULL);
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
@@ -907,39 +955,27 @@ EXCEPTION
|
||||
END logi_import_persoon;
|
||||
/
|
||||
|
||||
/* Formatted on 7-6-2019 11:07:56 (QP5 v5.336) */
|
||||
CREATE OR REPLACE PROCEDURE logi_update_persoon (p_import_key IN NUMBER)
|
||||
CREATE OR REPLACE PROCEDURE logi_werkplek_persoon (p_import_key IN NUMBER)
|
||||
AS
|
||||
v_perslid_key NUMBER (10);
|
||||
v_nr_werkplek NUMBER;
|
||||
v_current_locatie_key NUMBER;
|
||||
v_new_locatie_key NUMBER;
|
||||
v_update BOOLEAN;
|
||||
v_errormsg VARCHAR2 (1024);
|
||||
v_errorhint VARCHAR2 (1024);
|
||||
v_locatie_key NUMBER (10);
|
||||
v_gebouw_key NUMBER (10);
|
||||
v_verdieping_key NUMBER (10);
|
||||
v_ruimte_key NUMBER (10);
|
||||
v_werkplek_key NUMBER (10);
|
||||
v_gebouw_code VARCHAR2 (10);
|
||||
|
||||
|
||||
-- Constanten (overig)
|
||||
c_usrtab_key INTEGER := 1; -- Tbv LOCATIE
|
||||
-- Constanten (LET OP: deze waarden moeten letterlijk in de DB aabwezig zijn!)
|
||||
c_srtgebouw_default INTEGER := 1;
|
||||
c_srtruimte_default INTEGER := 1;
|
||||
c_afdeling_key NUMBER := 6761; -- LOGI#31662
|
||||
|
||||
-- Constanten (overig)
|
||||
c_prs_werkplek_omschrijving VARCHAR2 (16) := 'Onbekend';
|
||||
c_srtperslid_omschr_default VARCHAR2 (16) := 'Onbekend';
|
||||
c_werkplek_volgnr_default INTEGER := 1;
|
||||
c_verdieping_omschr_default VARCHAR2 (16) := 'BG';
|
||||
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
|
||||
c_ruimte_code VARCHAR2 (3) := '000';
|
||||
c_commitbuffer NUMBER := 1000;
|
||||
c_usrtab_key INTEGER := 1; -- Tbv LOCATIE
|
||||
|
||||
--- dan de werkplekken aanvullen
|
||||
CURSOR c_prs_upd IS
|
||||
SELECT p.prs_perslid_key,
|
||||
lp.prs_kenmerk1, --- locatie omschrijving
|
||||
lp.prs_kenmerk1
|
||||
prs_locatie_omschrijving,
|
||||
lp.prs_perslid_naam,
|
||||
lp.prs_perslid_tussenvoegsel,
|
||||
lp.prs_perslid_voorletters,
|
||||
@@ -948,18 +984,303 @@ AS
|
||||
lp.prs_perslid_mobiel,
|
||||
lp.prs_perslid_oslogin,
|
||||
lp.prs_perslid_email,
|
||||
COALESCE (lp.prs_srtperslid_omschrijving, 'Onbekend')
|
||||
COALESCE (lp.prs_srtperslid_omschrijving,
|
||||
c_srtperslid_omschr_default)
|
||||
prs_srtperslid_omschrijving,
|
||||
lp.prs_perslid_nr,
|
||||
''
|
||||
prs_perslid_titel,
|
||||
p.prs_perslid_verwijder
|
||||
FROM fac_imp_perslid lp, prs_perslid p
|
||||
WHERE 1 = 1 AND lp.prs_perslid_email = p.prs_perslid_email(+)
|
||||
-- Dit moet analoog aan UWVA#13061: verwijderde personen moeten kunnen worden gereactiveerd.
|
||||
-- AND p.prs_perslid_verwijder IS NULL
|
||||
WHERE 1 = 1 AND lp.prs_perslid_email = p.prs_perslid_email
|
||||
ORDER BY lp.prs_perslid_nr, p.prs_perslid_key DESC;
|
||||
|
||||
v_perslid_key NUMBER (10);
|
||||
v_srtperslid_key NUMBER (10);
|
||||
--v_afdeling_key NUMBER (10);
|
||||
v_locatie_key NUMBER (10);
|
||||
v_gebouw_key NUMBER (10);
|
||||
v_verdieping_key NUMBER (10);
|
||||
v_ruimte_key NUMBER (10);
|
||||
v_werkplek_key NUMBER (10);
|
||||
v_gebouw_code VARCHAR2 (10);
|
||||
v_srtperslid_omschr VARCHAR (30);
|
||||
rec_prs_upd c_prs_upd%ROWTYPE;
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_errormsg VARCHAR2 (1024);
|
||||
v_errorhint VARCHAR2 (1024);
|
||||
v_debug VARCHAR2 (1024);
|
||||
v_count NUMBER (10);
|
||||
v_update BOOLEAN;
|
||||
v_aktie VARCHAR (10);
|
||||
v_perslid_count_imp NUMBER;
|
||||
v_perslid_count_fclt NUMBER;
|
||||
v_perslid_newcount_fclt NUMBER;
|
||||
currentversion fac_module.fac_module_version%TYPE;
|
||||
l_validatie NUMBER;
|
||||
v_srtimport VARCHAR2 (10);
|
||||
l_nrkps NUMBER;
|
||||
v_nr_werkplek NUMBER;
|
||||
v_current_locatie_key NUMBER;
|
||||
v_new_locatie_key NUMBER;
|
||||
BEGIN
|
||||
FOR rec_prs_upd IN c_prs_upd
|
||||
LOOP
|
||||
-- bepaal aantal werkplekken
|
||||
BEGIN
|
||||
SELECT COUNT (*)
|
||||
INTO v_nr_werkplek
|
||||
FROM prs_perslidwerkplek
|
||||
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
|
||||
|| rec_prs_upd.prs_perslid_nr);
|
||||
v_update := FALSE;
|
||||
END;
|
||||
|
||||
IF v_nr_werkplek = 1
|
||||
THEN
|
||||
BEGIN
|
||||
-- bepaal huidige alg_locatie_key
|
||||
SELECT alg_locatie_key
|
||||
INTO v_current_locatie_key
|
||||
FROM prs_v_werkplekperslid_gegevens
|
||||
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
|
||||
|
||||
-- bepaal nieuwe alg_locatie_key
|
||||
SELECT lo.alg_locatie_key
|
||||
INTO v_new_locatie_key
|
||||
FROM fac_usrdata ud, alg_locatie lo
|
||||
WHERE ud.fac_usrtab_key = c_usrtab_key
|
||||
AND ud.fac_usrdata_code = lo.alg_locatie_code
|
||||
AND ud.fac_usrdata_omschr =
|
||||
rec_prs_upd.prs_locatie_omschrijving
|
||||
AND lo.alg_locatie_verwijder IS NULL;
|
||||
|
||||
-- indien gelijk dan werkplek niet updaten.
|
||||
v_update := (v_current_locatie_key <> v_new_locatie_key);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'huidige of nieuwe alg_locatie_key kan niet bepaald worden?! personeelsnummer: '
|
||||
|| rec_prs_upd.prs_perslid_nr);
|
||||
v_update := FALSE;
|
||||
END;
|
||||
END IF;
|
||||
|
||||
-- Er is geen werkplek bekend in Facilitor of de werkplek uit de import wijkt af van de werkplek in Facilitor dan gaan we bijwerken
|
||||
-- Als er meer dan 1 werkplek is, dan laten we het zoals het is
|
||||
IF v_update AND v_nr_werkplek <= 1
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij toewijzen werkplek bij zojuist toegevoegde persoon ';
|
||||
|
||||
|
||||
BEGIN
|
||||
SELECT lo.alg_locatie_key
|
||||
INTO v_locatie_key
|
||||
FROM FAC_USRDATA ud, ALG_LOCATIE lo
|
||||
WHERE ud.fac_usrtab_key = c_usrtab_key
|
||||
AND ud.fac_usrdata_code = lo.alg_locatie_code
|
||||
AND ud.fac_usrdata_omschr =
|
||||
rec_prs_upd.prs_locatie_omschrijving
|
||||
AND lo.alg_locatie_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_update := FALSE;
|
||||
END;
|
||||
|
||||
IF NOT v_update
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'Onbekende Locatie-omschrijving '
|
||||
|| rec_prs_upd.prs_locatie_omschrijving
|
||||
|| '; personeelsnummer: '
|
||||
|| rec_prs_upd.prs_perslid_nr;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
v_errorhint);
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT MIN (alg_gebouw_code)
|
||||
INTO v_gebouw_code
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
|
||||
SELECT alg_gebouw_key
|
||||
INTO v_gebouw_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_code = v_gebouw_code
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO alg_gebouw (alg_locatie_key,
|
||||
alg_srtgebouw_key,
|
||||
alg_gebouw_code,
|
||||
alg_gebouw_naam)
|
||||
VALUES (v_locatie_key,
|
||||
c_srtgebouw_default,
|
||||
'0',
|
||||
'Onbekend');
|
||||
|
||||
v_errormsg :=
|
||||
'Bepalen alg_gebouw_key adhv v_locatie_key=['
|
||||
|| TO_CHAR (v_locatie_key)
|
||||
|| '] en v_gebouw_code=['
|
||||
|| v_gebouw_code
|
||||
|| ']';
|
||||
|
||||
SELECT alg_gebouw_key
|
||||
INTO v_gebouw_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_code = v_gebouw_code
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
v_errormsg := 'Bepalen alg_verdieping_key';
|
||||
|
||||
SELECT alg_verdieping_key
|
||||
INTO v_verdieping_key
|
||||
FROM alg_verdieping
|
||||
WHERE alg_gebouw_key = v_gebouw_key
|
||||
AND alg_verdieping_verwijder IS NULL
|
||||
AND alg_verdieping_code = '0'; -- Begane grond! Niet via volgnummer!
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec_prs_upd.prs_perslid_nr
|
||||
|| ': toevoegen verdieping Onbekend';
|
||||
|
||||
INSERT INTO alg_verdieping (
|
||||
alg_gebouw_key,
|
||||
alg_verdieping_omschrijving,
|
||||
alg_verdieping_volgnr,
|
||||
alg_verdieping_code)
|
||||
VALUES (v_gebouw_key,
|
||||
c_verdieping_omschr_default,
|
||||
0,
|
||||
'0');
|
||||
|
||||
-- Alsnog bepalen v_verdieping_key
|
||||
SELECT alg_verdieping_key
|
||||
INTO v_verdieping_key
|
||||
FROM alg_verdieping
|
||||
WHERE alg_gebouw_key = v_gebouw_key
|
||||
AND alg_verdieping_verwijder IS NULL
|
||||
AND alg_verdieping_code = '0'; -- Begane grond!
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec_prs_upd.prs_perslid_nr
|
||||
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
|
||||
|
||||
SELECT alg_ruimte_key
|
||||
INTO v_ruimte_key
|
||||
FROM alg_ruimte
|
||||
WHERE alg_verdieping_key = v_verdieping_key
|
||||
AND alg_ruimte_verwijder IS NULL
|
||||
AND alg_ruimte_nr = c_ruimte_code;
|
||||
-- Altijd ruimte met deze notatie!
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO alg_ruimte (alg_verdieping_key,
|
||||
alg_srtruimte_key,
|
||||
alg_ruimte_nr,
|
||||
alg_ruimte_omschrijving)
|
||||
VALUES (v_verdieping_key,
|
||||
c_srtruimte_default,
|
||||
c_ruimte_code,
|
||||
c_ruimte_omschr_default);
|
||||
|
||||
-- Alsnog bepalen v_ruimte_key
|
||||
SELECT alg_ruimte_key
|
||||
INTO v_ruimte_key
|
||||
FROM alg_ruimte
|
||||
WHERE alg_verdieping_key = v_verdieping_key
|
||||
AND alg_ruimte_verwijder IS NULL
|
||||
AND alg_ruimte_nr = c_ruimte_code;
|
||||
-- Altijd ruimte met deze notatie!
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec_prs_upd.prs_perslid_nr
|
||||
|| ': bepalen werkplek (werkplek zou bekend moeten zijn)';
|
||||
|
||||
SELECT prs_werkplek_key
|
||||
INTO v_werkplek_key
|
||||
FROM prs_werkplek
|
||||
WHERE prs_alg_ruimte_key = v_ruimte_key
|
||||
AND prs_werkplek_volgnr =
|
||||
c_werkplek_volgnr_default;
|
||||
-- Altijd werkplek met deze notatie!
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO prs_werkplek (prs_werkplek_volgnr,
|
||||
prs_werkplek_omschrijving,
|
||||
prs_alg_ruimte_key,
|
||||
prs_werkplek_virtueel)
|
||||
VALUES (c_werkplek_volgnr_default,
|
||||
c_prs_werkplek_omschrijving,
|
||||
v_ruimte_key,
|
||||
1);
|
||||
|
||||
-- Alsnog bepalen v_werkplek_key
|
||||
SELECT prs_werkplek_key
|
||||
INTO v_werkplek_key
|
||||
FROM prs_werkplek
|
||||
WHERE prs_alg_ruimte_key = v_ruimte_key
|
||||
AND prs_werkplek_volgnr =
|
||||
c_werkplek_volgnr_default;
|
||||
-- Altijd werkplek met deze notatie!
|
||||
END;
|
||||
|
||||
IF v_nr_werkplek = 0
|
||||
THEN
|
||||
INSERT INTO prs_perslidwerkplek (
|
||||
prs_perslid_key,
|
||||
prs_werkplek_key,
|
||||
prs_perslidwerkplek_bezetting)
|
||||
VALUES (v_perslid_key, v_werkplek_key, 0);
|
||||
ELSE -- v_aktie = 'UPDATE' AND v_nr_werkplek = 1
|
||||
UPDATE prs_perslidwerkplek
|
||||
SET prs_werkplek_key = v_werkplek_key
|
||||
WHERE prs_perslid_key = v_perslid_key;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE logi_update_persoon (p_import_key IN NUMBER)
|
||||
AS
|
||||
-- Verwijderen op basis van oslogin #56094
|
||||
CURSOR c_prs_del IS
|
||||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_oslogin
|
||||
@@ -976,312 +1297,28 @@ AS
|
||||
UPPER (lp.prs_perslid_oslogin(+))
|
||||
AND lp.prs_perslid_oslogin IS NULL
|
||||
ORDER BY 2, 1;
|
||||
|
||||
BEGIN
|
||||
FOR rec IN c_prs_upd
|
||||
LOOP
|
||||
BEGIN
|
||||
-- 'Email' betekent dat op basis van Email wordt gematched.
|
||||
prs.update_perslid (p_import_key, 'EMAIL', NULL);
|
||||
|
||||
BEGIN
|
||||
-- Bepaal werkplekken
|
||||
SELECT COUNT (*)
|
||||
INTO v_nr_werkplek
|
||||
FROM prs_perslidwerkplek
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
|
||||
|| rec.prs_perslid_nr);
|
||||
-- indien niet te bepalen dan niet updaten.
|
||||
v_update := FALSE;
|
||||
END;
|
||||
|
||||
|
||||
IF v_nr_werkplek = 1
|
||||
THEN
|
||||
BEGIN
|
||||
-- bepaal huidige alg_locatie_key
|
||||
SELECT alg_locatie_key
|
||||
INTO v_current_locatie_key
|
||||
FROM prs_v_werkplekperslid_gegevens
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
|
||||
-- bepaal nieuwe alg_locatie_key
|
||||
SELECT lo.alg_locatie_key
|
||||
INTO v_new_locatie_key
|
||||
FROM fac_usrdata ud, alg_locatie lo
|
||||
WHERE ud.fac_usrtab_key = c_usrtab_key
|
||||
AND ud.fac_usrdata_code = lo.alg_locatie_code
|
||||
AND ud.fac_usrdata_omschr = rec.prs_kenmerk1
|
||||
AND lo.alg_locatie_verwijder IS NULL;
|
||||
|
||||
-- indien gelijk dan werkplek niet updaten.
|
||||
v_update := (v_current_locatie_key <> v_new_locatie_key);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'huidige of nieuwe alg_locatie_key kan niet bepaald worden?! personeelsnummer: '
|
||||
|| rec.prs_perslid_nr);
|
||||
v_update := FALSE;
|
||||
END;
|
||||
END IF;
|
||||
|
||||
--- We gaan de werkplek vervangen of toevoegen
|
||||
IF v_update
|
||||
AND (rec.prs_kenmerk1 IS NOT NULL)
|
||||
AND (v_nr_werkplek <= 1)
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij toewijzen werkplek bij zojuist toegevoegde persoon ';
|
||||
|
||||
-- stap 1: perslid key bepalen
|
||||
BEGIN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_perslid_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_nr = rec.prs_perslid_nr
|
||||
AND prs_perslid_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN TOO_MANY_ROWS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'Het personeelsnummer is niet uniek: '
|
||||
|| rec.prs_perslid_nr);
|
||||
|
||||
v_update := FALSE;
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
'De persoon kan niet bepaald worden?! personeelsnummer: '
|
||||
|| rec.prs_perslid_nr);
|
||||
|
||||
v_update := FALSE;
|
||||
END;
|
||||
|
||||
--- stap 2: locatie code bepalen
|
||||
BEGIN
|
||||
SELECT lo.alg_locatie_key
|
||||
INTO v_locatie_key
|
||||
FROM FAC_USRDATA ud, ALG_LOCATIE lo
|
||||
WHERE ud.fac_usrtab_key = c_usrtab_key
|
||||
AND ud.fac_usrdata_code = lo.alg_locatie_code
|
||||
AND ud.fac_usrdata_omschr = rec.prs_kenmerk1
|
||||
AND lo.alg_locatie_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_update := FALSE;
|
||||
END;
|
||||
|
||||
IF NOT v_update
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'Onbekende Locatie-omschrijving '
|
||||
|| rec.prs_kenmerk1
|
||||
|| '; personeelsnummer: '
|
||||
|| rec.prs_perslid_nr;
|
||||
fac.imp_writelog (p_import_key,
|
||||
'I',
|
||||
v_errormsg,
|
||||
v_errorhint);
|
||||
-- er is een locatie code gevonden dus nu kunnen we verder met het bepalen van de werkplek
|
||||
ELSE
|
||||
BEGIN
|
||||
-- Stap 3: gebouwcode bepalen, indien geen gevonden dan een dummy aanmaken
|
||||
SELECT MIN (alg_gebouw_code)
|
||||
INTO v_gebouw_code
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
|
||||
SELECT alg_gebouw_key
|
||||
INTO v_gebouw_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_code = v_gebouw_code
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO alg_gebouw (alg_locatie_key,
|
||||
alg_srtgebouw_key,
|
||||
alg_gebouw_code,
|
||||
alg_gebouw_naam)
|
||||
VALUES (v_locatie_key,
|
||||
c_srtgebouw_default,
|
||||
'0',
|
||||
'Onbekend');
|
||||
|
||||
v_errormsg :=
|
||||
'Bepalen alg_gebouw_key adhv v_locatie_key=['
|
||||
|| TO_CHAR (v_locatie_key)
|
||||
|| '] en v_gebouw_code=['
|
||||
|| v_gebouw_code
|
||||
|| ']';
|
||||
|
||||
SELECT alg_gebouw_key
|
||||
INTO v_gebouw_key
|
||||
FROM alg_gebouw
|
||||
WHERE alg_locatie_key = v_locatie_key
|
||||
AND alg_gebouw_code = v_gebouw_code
|
||||
AND alg_gebouw_verwijder IS NULL;
|
||||
END;
|
||||
|
||||
--- Stap 4: verdieping bepalen, indien niet te bekend dan dummy aanmaken
|
||||
BEGIN
|
||||
v_errormsg := 'Bepalen alg_verdieping_key';
|
||||
|
||||
SELECT alg_verdieping_key
|
||||
INTO v_verdieping_key
|
||||
FROM alg_verdieping
|
||||
WHERE alg_gebouw_key = v_gebouw_key
|
||||
AND alg_verdieping_verwijder IS NULL
|
||||
AND alg_verdieping_volgnr = 0; -- Begane grond!
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec.prs_perslid_nr
|
||||
|| ': toevoegen verdieping Onbekend';
|
||||
|
||||
INSERT INTO alg_verdieping (
|
||||
alg_gebouw_key,
|
||||
alg_verdieping_omschrijving,
|
||||
alg_verdieping_volgnr,
|
||||
alg_verdieping_code)
|
||||
VALUES (v_gebouw_key,
|
||||
c_verdieping_omschr_default,
|
||||
0,
|
||||
'0');
|
||||
|
||||
-- Alsnog bepalen v_verdieping_key
|
||||
SELECT alg_verdieping_key
|
||||
INTO v_verdieping_key
|
||||
FROM alg_verdieping
|
||||
WHERE alg_gebouw_key = v_gebouw_key
|
||||
AND alg_verdieping_verwijder IS NULL
|
||||
AND alg_verdieping_volgnr = 0; -- Begane grond!
|
||||
END;
|
||||
|
||||
--- stap 5: dan de ruimte bepalen, aanmaken indien deze niet te herleiden is
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec.prs_perslid_nr
|
||||
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
|
||||
|
||||
SELECT alg_ruimte_key
|
||||
INTO v_ruimte_key
|
||||
FROM alg_ruimte
|
||||
WHERE alg_verdieping_key = v_verdieping_key
|
||||
AND alg_ruimte_verwijder IS NULL
|
||||
AND alg_ruimte_nr = c_ruimte_code;
|
||||
-- Altijd ruimte met deze notatie!
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO alg_ruimte (alg_verdieping_key,
|
||||
alg_srtruimte_key,
|
||||
alg_ruimte_nr,
|
||||
alg_ruimte_omschrijving)
|
||||
VALUES (v_verdieping_key,
|
||||
c_srtruimte_default,
|
||||
c_ruimte_code,
|
||||
c_ruimte_omschr_default);
|
||||
|
||||
-- Alsnog bepalen v_ruimte_key
|
||||
SELECT alg_ruimte_key
|
||||
INTO v_ruimte_key
|
||||
FROM alg_ruimte
|
||||
WHERE alg_verdieping_key = v_verdieping_key
|
||||
AND alg_ruimte_verwijder IS NULL
|
||||
AND alg_ruimte_nr = c_ruimte_code;
|
||||
-- Altijd ruimte met deze notatie!
|
||||
END;
|
||||
|
||||
-- stap 6 werkplek zou nu te bepalen moeten zijn
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Persoon met persoonnummer '
|
||||
|| rec.prs_perslid_nr
|
||||
|| ': bepalen werkplek (werkplek zou bekend moeten zijn)';
|
||||
|
||||
SELECT prs_werkplek_key
|
||||
INTO v_werkplek_key
|
||||
FROM prs_werkplek
|
||||
WHERE prs_alg_ruimte_key = v_ruimte_key
|
||||
AND prs_werkplek_volgnr =
|
||||
c_werkplek_volgnr_default;
|
||||
-- Altijd werkplek met deze notatie!
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO prs_werkplek (
|
||||
prs_werkplek_volgnr,
|
||||
prs_werkplek_omschrijving,
|
||||
prs_alg_ruimte_key,
|
||||
prs_werkplek_virtueel)
|
||||
VALUES (c_werkplek_volgnr_default,
|
||||
c_prs_werkplek_omschrijving,
|
||||
v_ruimte_key,
|
||||
1);
|
||||
|
||||
-- Alsnog bepalen v_werkplek_key
|
||||
SELECT prs_werkplek_key
|
||||
INTO v_werkplek_key
|
||||
FROM prs_werkplek
|
||||
WHERE prs_alg_ruimte_key = v_ruimte_key
|
||||
AND prs_werkplek_volgnr =
|
||||
c_werkplek_volgnr_default;
|
||||
-- Altijd werkplek met deze notatie!
|
||||
END;
|
||||
|
||||
IF v_nr_werkplek = 0
|
||||
THEN
|
||||
INSERT INTO prs_perslidwerkplek (
|
||||
prs_perslid_key,
|
||||
prs_werkplek_key,
|
||||
prs_perslidwerkplek_bezetting)
|
||||
VALUES (v_perslid_key, v_werkplek_key, 0);
|
||||
ELSE -- v_nr_werkplek = 1
|
||||
UPDATE prs_perslidwerkplek
|
||||
SET prs_werkplek_key = v_werkplek_key
|
||||
WHERE prs_perslid_key = v_perslid_key;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
|
||||
FOR rec IN c_prs_del
|
||||
LOOP
|
||||
BEGIN
|
||||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||||
END;
|
||||
END LOOP;
|
||||
END LOOP;
|
||||
|
||||
|
||||
-- 'Email' betekent dat op basis van Email wordt gematched.
|
||||
prs.update_perslid (p_import_key, 'EMAIL', NULL);
|
||||
|
||||
-- Dan worden de werkplekken beoordeeld, evt aangemaakt en bijgewerkt
|
||||
logi_werkplek_persoon (p_import_key);
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE logi_import_organisatie (p_import_key IN NUMBER)
|
||||
AS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user