5776 lines
241 KiB
SQL
5776 lines
241 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for UWVA.
|
||
-- related to ABS/KPN/VINDER/PROVISIONING/PHONEBOOK.
|
||
DEFINE thisfile = 'UWVA_PRS.SQL'
|
||
DEFINE dbuser = '^UWVA'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
-- UWVA#15040 Import van projectkostenplaatsen die niet voorkomen in de KPN import
|
||
CREATE OR REPLACE PROCEDURE uwva_import_kpn_prj (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
next_record c_cursor%ROWTYPE;
|
||
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_field VARCHAR2 (100);
|
||
v_fielddelimitor VARCHAR2 (1);
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_afdeling VARCHAR2 (100);
|
||
v_status VARCHAR2 (100);
|
||
v_omschrijving VARCHAR2 (100);
|
||
v_boekingsunit VARCHAR2 (100);
|
||
v_project VARCHAR2 (100);
|
||
BEGIN
|
||
v_fielddelimitor := ';';
|
||
|
||
header_is_valid := 0;
|
||
|
||
DELETE FROM uwva_imp_kpn_prj;
|
||
|
||
FOR NEXT_RECORD IN c_cursor
|
||
LOOP
|
||
BEGIN
|
||
v_newline := next_record.FAC_IMP_FILE_LINE;
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_boekingsunit);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_project);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_status);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling);
|
||
|
||
IF ( header_is_valid = 0
|
||
AND v_afdeling = 'Afdeling'
|
||
AND v_status = 'Status op ingangsdatum'
|
||
AND v_omschrijving = 'Omschrijving'
|
||
AND v_boekingsunit = 'BU'
|
||
AND v_project = 'Project')
|
||
THEN
|
||
header_is_valid := 1;
|
||
ELSE
|
||
IF ( header_is_valid = 1
|
||
AND v_afdeling <> ' '
|
||
AND v_project <> ' ')
|
||
THEN
|
||
IF (LENGTH (v_afdeling) >= 6) -- lengte van kostenplaats moet minimaal 6 posities zijn.
|
||
THEN
|
||
INSERT INTO uwva_imp_kpn_prj (project,
|
||
afdeling,
|
||
status,
|
||
omschrijving,
|
||
boekingsunit)
|
||
VALUES (SUBSTR (v_project, 1, 30),
|
||
SUBSTR (v_afdeling, 1, 6),
|
||
SUBSTR (v_status, 1, 1),
|
||
SUBSTR (v_omschrijving, 1, 60),
|
||
SUBSTR (v_boekingsunit, 1, 6));
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is een ongeldige Projectkostenplaats aangetroffen in het importbestand:' || SUBSTR (v_project, 1, 30));
|
||
|
||
-- UWVA#23269: Hier stond uwva_imp_kpn en dat leek mij niet goed (zeker met 't
|
||
-- vervolg in uwva_update_abs() zoals dat tegenwoordig het geval is)!!!
|
||
DELETE FROM uwva_imp_kpn_prj; -- maak uwva_imp_kpn_prj weer leeg.
|
||
EXIT; -- kostenplaats niet 6 posities; voorloopnullen kunnen weggevallen zijn.
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is geen geldige Header aangetroffen en in het importbestand');
|
||
END IF;
|
||
|
||
-- UWVA#41977: Import robuust gemaakt tegen dubbele aanlevering van KPN_PRJ-bestand.
|
||
DELETE FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
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;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_kpn_prj (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- update wordt door de uwva_update_kpn procedure uitgevoerd.
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
-- UWVA#7 Import van kostenplaatsen
|
||
-- UWVA#20021 Nu met organisatiestructuur en budgethouders + mandaten
|
||
-- (waardoor budgethouderimport overbodig wordt)
|
||
CREATE OR REPLACE PROCEDURE uwva_import_kpn (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_cursor IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
next_record c_cursor%ROWTYPE;
|
||
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_field VARCHAR2 (100);
|
||
v_fielddelimitor VARCHAR2 (1);
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_empty VARCHAR2 (100);
|
||
v_afdeling VARCHAR2 (100);
|
||
v_status VARCHAR2 (100);
|
||
v_omschrijving VARCHAR2 (100);
|
||
v_niv2_code VARCHAR2 (100);
|
||
v_niv2_oms VARCHAR2 (100);
|
||
v_niv3_code VARCHAR2 (100);
|
||
v_niv4_code VARCHAR2 (100);
|
||
v_niv5_code VARCHAR2 (100);
|
||
v_niv6_code VARCHAR2 (100);
|
||
v_niv7_code VARCHAR2 (100);
|
||
v_perslid_nr VARCHAR2 (100);
|
||
v_mandaatcode VARCHAR2 (100);
|
||
v_date1 VARCHAR2 (20);
|
||
v_date2 VARCHAR2 (20);
|
||
BEGIN
|
||
v_fielddelimitor := ';';
|
||
|
||
header_is_valid := 0;
|
||
|
||
DELETE FROM uwva_imp_kpn;
|
||
|
||
FOR next_record IN c_cursor LOOP
|
||
BEGIN
|
||
v_newline := next_record.FAC_IMP_FILE_LINE;
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv2_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv2_oms);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv3_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv4_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv5_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv6_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_niv7_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_mandaatcode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_date1);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_date2);
|
||
|
||
IF ( header_is_valid = 0
|
||
AND v_afdeling = 'code_eenheid' --code_eenheid
|
||
AND v_omschrijving = 'naam_eenheid' --naam_eenheid
|
||
AND v_niv2_code = 'code_eenheid_niveau_2' --code_eenheid_niveau_2
|
||
AND v_niv2_oms = 'naam_eenheid_nivo_2' --naam_eenheid_nivo_2
|
||
AND v_niv3_code = 'code_eenheid_niveau_3' --code_eenheid_niveau_3
|
||
AND v_niv4_code = 'code_eenheid_niveau_4' --code_eenheid_niveau_4
|
||
AND v_niv5_code = 'code_eenheid_niveau_5' --code_eenheid_niveau_5
|
||
AND v_niv6_code = 'code_eenheid_niveau_6' --code_eenheid_niveau_6
|
||
AND v_niv7_code = 'code_eenheid_niveau_7' --code_eenheid_niveau_7
|
||
AND v_perslid_nr = 'wnr_leidinggevende' --wnr_leidinggevende
|
||
AND v_mandaatcode = 'code_mandaat' --code_mandaat
|
||
AND v_date1 = 'start_datum' --start_datum
|
||
AND v_date2 = 'eind_datum' --eind_datum
|
||
)
|
||
THEN
|
||
header_is_valid := 1;
|
||
ELSE
|
||
IF (header_is_valid = 1 AND v_afdeling != ' ')
|
||
THEN
|
||
IF (LENGTH (v_afdeling) >= 6) -- lengte van kostenplaats moet minimaal 6 posities zijn.
|
||
THEN
|
||
IF (SYSDATE >= TO_DATE (v_date1, 'dd-mm-yyyy') AND SYSDATE <= TO_DATE (v_date2, 'dd-mm-yyyy'))
|
||
THEN v_status := 'A';
|
||
ELSE v_status := 'I';
|
||
END IF;
|
||
|
||
INSERT INTO uwva_imp_kpn
|
||
(afdeling,
|
||
status,
|
||
omschrijving,
|
||
niv2_code,
|
||
niv3_code,
|
||
niv4_code,
|
||
niv5_code,
|
||
niv6_code,
|
||
niv7_code,
|
||
perslid_nr,
|
||
mandaatcode
|
||
)
|
||
VALUES (SUBSTR (v_afdeling, 1, 6), SUBSTR (v_status, 1, 1),
|
||
SUBSTR (v_omschrijving, 1, 60),
|
||
-- Het laagste niveau afdeling dat in iedere regel wordt meegegeven
|
||
-- is de afdeling waar die regel over gaat. We willen alleen de parent
|
||
-- en bovenliggende afdelingen hebben, dus laat de huidige afdeling maar
|
||
-- weg (zodat we in de update een coalesce kunnen gebruiken om de parent
|
||
-- te bepalen!)
|
||
DECODE(v_niv2_code, v_afdeling, NULL, SUBSTR (v_niv2_code, 1, 6) ),
|
||
DECODE(v_niv3_code, v_afdeling, NULL, SUBSTR (v_niv3_code, 1, 6) ),
|
||
DECODE(v_niv4_code, v_afdeling, NULL, SUBSTR (v_niv4_code, 1, 6) ),
|
||
DECODE(v_niv5_code, v_afdeling, NULL, SUBSTR (v_niv5_code, 1, 6) ),
|
||
DECODE(v_niv6_code, v_afdeling, NULL, SUBSTR (v_niv6_code, 1, 6) ),
|
||
DECODE(v_niv7_code, v_afdeling, NULL, SUBSTR (v_niv7_code, 1, 6) ),
|
||
SUBSTR (v_perslid_nr, 1, 16), SUBSTR (v_mandaatcode, 1, 6)
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is een ongeldige Kostenplaats aangetroffen in het importbestand. Een kostenplaats moet uit 6 posities bestaan. kostenplaats:' || SUBSTR (v_afdeling, 1, 6));
|
||
DELETE FROM uwva_imp_kpn; -- maak uwva_imp_kpn weer leeg.
|
||
EXIT; -- kostenplaats heeft geen 6 posities. Voorloopnullen kunnen weggevallen zijn.
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is geen geldige Header aangetroffen en in het importbestand');
|
||
END IF;
|
||
|
||
-- UWVA#41977: Import robuust gemaakt tegen dubbele aanlevering van KPN-bestand.
|
||
DELETE FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
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;
|
||
/
|
||
|
||
-- UWVA#20021: KPN-import met organisatiestructuur.
|
||
-- UWVA#23718: Door overgang naar Peoplesoft is het importbestand gewijzigd
|
||
-- en worden inactieve KPN niet meer meegegeven (nog steeds?).
|
||
-- UWVA#75874: Check op 50% voortaan tegen alleen actieve/niet verlopen KPN.
|
||
CREATE OR REPLACE PROCEDURE uwva_update_kpn (p_import_key IN NUMBER)
|
||
AS
|
||
-- UWVA#32268: Project- en gebouwkostenplaatsen (= alfanumeriek) niet meer
|
||
-- eerst aanmaken als cluster en dan direct weer verwijderen.
|
||
CURSOR cclusters
|
||
IS
|
||
SELECT afdeling, status, omschrijving, niv2_code, 'PRS' type
|
||
FROM uwva_imp_kpn
|
||
WHERE status = 'A'
|
||
AND niv2_code IS NULL
|
||
AND fac.safe_to_number (afdeling) > 0
|
||
ORDER BY 1;
|
||
|
||
-- UWVA#16503: KPN_PRJ-kostenplaatsen dominant over KPN-kostenplaatsen!
|
||
-- UWVA#23718: quick fix; alleen nog actieve kostenplaatsen in import, dus
|
||
-- inactieve kostenplaatsen zijn kostenplaatsen die alleen nog
|
||
-- in Facilitor voorkomen.
|
||
CURSOR ckostenplaatsen
|
||
IS
|
||
SELECT 1, afdeling, status, omschrijving, COALESCE (niv2_code, afdeling) boekingsunit, 'PRS' type
|
||
FROM uwva_imp_kpn
|
||
UNION
|
||
SELECT 2, project, status, omschrijving, boekingsunit, 'PRJ' type
|
||
FROM uwva_imp_kpn_prj
|
||
--UNION
|
||
--SELECT 1, prs_kostenplaats_nr afdeling, 'I' status, prs_kostenplaats_omschrijving omschrijving, NULL boekingsunit, 'PRS' type
|
||
-- FROM prs_kostenplaats
|
||
-- WHERE prs_kostenplaats_verwijder IS NULL
|
||
-- AND prs_kostenplaats_module = 'PRS'
|
||
-- AND prs_kostenplaats_upper NOT IN (SELECT afdeling FROM uwva_imp_kpn)
|
||
UNION
|
||
SELECT 3, k.prs_kostenplaats_nr afdeling, 'I' status, k.prs_kostenplaats_omschrijving omschrijving, NULL boekingsunit, k.prs_kostenplaats_module type
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_module IN ('PRS', 'ALG', 'PRJ') -- UWVA#31020: Ook ALG + PRJ inactiveren!
|
||
AND k.prs_kostenplaats_verwijder IS NULL
|
||
--AND prs_kostenplaats_upper NOT IN (SELECT afdeling FROM uwva_imp_kpn)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM uwva_imp_kpn
|
||
WHERE UPPER (afdeling) = k.prs_kostenplaats_upper)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM uwva_imp_kpn_prj
|
||
WHERE UPPER (project) = k.prs_kostenplaats_upper)
|
||
ORDER BY 1, 2;
|
||
|
||
-- Aparte cursor, zodat eerst alle afdelingen (dus alle parent-afdelingen)
|
||
-- toegevoegd kunnen worden, voordat parent-child links worden vastgelegd.
|
||
-- Niveau6 geeft aan of een afdeling op afdelingsniveau 6 zou komen (en dus
|
||
-- naar niveau 5 gehaald moet worden, door 'm naast z'n parent te zetten.
|
||
CURSOR cstructuur
|
||
IS
|
||
SELECT afdeling, omschrijving, COALESCE (niv7_code, niv6_code, niv5_code, niv4_code, niv3_code, niv2_code) parent, DECODE (niv6_code, NULL, 0, 1) niveau6
|
||
FROM uwva_imp_kpn
|
||
WHERE status = 'A'
|
||
AND niv2_code IS NOT NULL
|
||
AND fac.safe_to_number (afdeling) > 0
|
||
ORDER BY 1;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_mes VARCHAR2 (200);
|
||
c_maxvariation NUMBER;
|
||
c_prs_bedrijfkey NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
l_oldcount NUMBER;
|
||
l_oldcountverw NUMBER;
|
||
l_impcount NUMBER;
|
||
l_impcountverw NUMBER;
|
||
l_impcount_prj NUMBER;
|
||
l_newcount NUMBER;
|
||
l_newcountverw NUMBER;
|
||
l_manualcount NUMBER;
|
||
l_created BOOLEAN; -- In deze sessie aangemaakt!
|
||
l_inactivated BOOLEAN; -- In deze sessie inactief gemaakt of gebleven!
|
||
lniv2_codekey NUMBER (10);
|
||
lkostenplaatskey NUMBER (10);
|
||
lafdelingkey NUMBER (10);
|
||
lparentkey NUMBER (10);
|
||
v_count NUMBER;
|
||
|
||
FUNCTION isafdelingskostenplaats (kpn IN VARCHAR2)
|
||
RETURN BOOLEAN
|
||
IS
|
||
BEGIN
|
||
RETURN fac.safe_to_number (kpn) > 0;
|
||
END isafdelingskostenplaats;
|
||
BEGIN
|
||
c_maxvariation := 0.5; -- Max new/old ratio to prevent undesired changes
|
||
c_prs_bedrijfkey := 1; -- Key of own UWV bedrijf
|
||
|
||
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Facilitor KPN import version ' || currentversion, '$Revision$');
|
||
|
||
-- How many active records are now present?
|
||
SELECT COUNT ( * )
|
||
INTO l_oldcount
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF:%'
|
||
AND COALESCE (prs_kostenplaats_eind, SYSDATE + 1) > TRUNC (SYSDATE);
|
||
|
||
-- How many inactive records are now present? (for summary only)
|
||
SELECT COUNT ( * )
|
||
INTO l_oldcountverw
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NOT NULL
|
||
OR (prs_kostenplaats_omschrijving LIKE 'INACTIEF:' AND prs_kostenplaats_eind < SYSDATE);
|
||
|
||
-- How many (in)active records are imported?
|
||
SELECT COUNT ( * )
|
||
INTO l_impcount
|
||
FROM uwva_imp_kpn
|
||
WHERE status = 'A';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO l_impcountverw
|
||
FROM uwva_imp_kpn
|
||
WHERE status != 'A';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO l_impcount_prj
|
||
FROM uwva_imp_kpn_prj
|
||
WHERE status = 'A';
|
||
|
||
--IF 1 - ((l_impcount + l_impcount_prj) / l_oldcount) > c_maxvariation
|
||
IF (ABS ((l_impcount + l_impcount_prj) - l_oldcount) > c_maxvariation * l_oldcount)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Het verschil tussen de actieve kostenplaatsen ('
|
||
|| TO_CHAR (l_oldcount)
|
||
|| ') en geimporteerde aantallen ('
|
||
|| TO_CHAR (l_impcount + l_impcount_prj)
|
||
|| ') is te groot',
|
||
'Zie Specificaties: De afwijking is teveel en bedraagt '
|
||
|| TO_CHAR (((l_oldcount - (l_impcount + l_impcount_prj)) / l_oldcount) * 100, '999D9')
|
||
|| '%.');
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Clusters (actieve).
|
||
FOR rc IN cclusters
|
||
LOOP
|
||
-- Bestaat deze al?
|
||
BEGIN
|
||
SELECT prs_afdeling_key
|
||
INTO lniv2_codekey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper = UPPER (rc.afdeling)
|
||
AND prs_afdeling_parentkey IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Misschien is het een BU die nu nog als afdeling (child) staat
|
||
-- geregistreerd; die wordt dan nu gepromoveerd tot BU.
|
||
BEGIN
|
||
SELECT prs_afdeling_key
|
||
INTO lniv2_codekey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper = UPPER (rc.afdeling);
|
||
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = c_prs_bedrijfkey,
|
||
prs_afdeling_parentkey = NULL
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_key = lniv2_codekey;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
lniv2_codekey := -1;
|
||
END;
|
||
WHEN OTHERS
|
||
THEN
|
||
lniv2_codekey := -1;
|
||
END;
|
||
|
||
IF lniv2_codekey = -1
|
||
THEN
|
||
-- Bestaat nog niet.
|
||
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
prs_bedrijf_key,
|
||
prs_afdeling_parentkey)
|
||
VALUES (rc.afdeling,
|
||
rc.omschrijving,
|
||
c_prs_bedrijfkey,
|
||
NULL);
|
||
ELSE
|
||
-- Niet heel belangrijk: omschrijving (re)setten.
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_omschrijving = rc.omschrijving
|
||
WHERE prs_afdeling_key = lniv2_codekey
|
||
AND prs_afdeling_omschrijving != rc.omschrijving;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
-- Clusters (toplevel afdelingen) geregeld!
|
||
|
||
-- Afdelingen/kostenplaatsen.
|
||
FOR rc IN ckostenplaatsen
|
||
LOOP
|
||
l_created := (1 = 0);
|
||
l_inactivated := (1 = 0);
|
||
|
||
-- Bestaat deze al?
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO lkostenplaatskey
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_upper = UPPER (rc.afdeling);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
BEGIN
|
||
-- Er bestaat geen actuele kostenplaats.
|
||
-- UWVA#647: Misschien een (onterecht) verwijderde?
|
||
SELECT prs_kostenplaats_key
|
||
INTO lkostenplaatskey
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_upper = UPPER (rc.afdeling);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Kostenplaats bestaat echt nog niet.
|
||
lkostenplaatskey := -1;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
-- Meer dan <20><>n verwijderde instantie, dan heeft iemand zeer
|
||
-- waarschijnlijk iets handmatig niet goed gedaan.
|
||
fac.imp_writelog (p_import_key, 'W', 'Kostenplaats komt vaker voor (handmatige mutatie!)',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
|
||
-- Er zijn dus louter verwijderde instanties; pak de oudste.
|
||
SELECT MIN (prs_kostenplaats_key)
|
||
INTO lkostenplaatskey
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_upper = UPPER (rc.afdeling);
|
||
END;
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Kan kostenplaats niet eenduidig bepalen',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
END;
|
||
|
||
IF lkostenplaatskey = -1 AND rc.status = 'A'
|
||
THEN
|
||
-- Bestaat nog niet en moet gaan bestaan.
|
||
BEGIN
|
||
-- Module wordt voor oude kostenplaatsen aan het einde op de
|
||
-- juiste waarde gezet.
|
||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module)
|
||
VALUES (rc.afdeling, rc.omschrijving, rc.TYPE)
|
||
RETURNING prs_kostenplaats_key
|
||
INTO lkostenplaatskey;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kostenplaats is toegevoegd',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
|
||
l_created := (1 = 1);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Kostenplaats kan niet toegevoegd worden ' || v_errormsg,
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
END;
|
||
ELSE
|
||
-- Bestaat al wel.
|
||
IF rc.status = 'A'
|
||
THEN
|
||
-- (Re)Activeer de kostenplaats.
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_verwijder = NULL,
|
||
prs_kostenplaats_eind = NULL,
|
||
prs_kostenplaats_nr = rc.afdeling,
|
||
prs_kostenplaats_omschrijving = rc.omschrijving
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey;
|
||
ELSE
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_eind = SYSDATE,
|
||
prs_kostenplaats_omschrijving = SUBSTR ('INACTIEF:' || rc.omschrijving, 1, 60)
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey
|
||
AND prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_eind = SYSDATE
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey
|
||
AND prs_kostenplaats_eind IS NULL -- UWVA#31020/MVH!
|
||
AND prs_kostenplaats_omschrijving LIKE 'INACTIEF%';
|
||
|
||
l_inactivated := (1 = 1);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Nu bestaat kostenplaats gegarandeerd en is lkostenplaatskey geldig.
|
||
BEGIN
|
||
-- Let op (UWVA#178):
|
||
-- Hoewel wij afdelingen altijd hergebruiken, kan het door handmatig
|
||
-- beheer gebeuren dat een afdeling dubbel voorkomt, 1x verwijderd en
|
||
-- 1x actueel.
|
||
-- Om dan de juiste te nemen en TOO_MANY_ROWS te vermijden, gebruiken
|
||
-- we hier nu deze GROUP BY-expressie.
|
||
-- UWVA#22805: MAX() levert altijd een resultaat, dus treedt nooit
|
||
-- NO_DATA_FOUND op, ook als niets wordt gevonden.
|
||
-- Daarom een COALESCE met -1.
|
||
SELECT COALESCE (MAX (prs_afdeling_key), -1)
|
||
INTO lafdelingkey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_upper = UPPER (rc.afdeling);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
lafdelingkey := -1;
|
||
END;
|
||
|
||
-- We hoeven nu alleen nog maar de afdeling aan te maken als het een PRS-
|
||
-- kostenplaats is.
|
||
IF isafdelingskostenplaats (rc.afdeling)
|
||
THEN
|
||
-- Als l_created = TRUE, dan is kostenplaats net aangemaakt. Als het
|
||
-- een divisie (cluster) betreft, dan is afdeling ook net aangemaakt
|
||
-- en moeten we die dus niet nog een keer aanmaken, maar updaten!
|
||
-- UWVA#22805: l_created = TRUE impliceert dus v_count > 0 (want voor
|
||
-- een nieuwe "divisie-kostenplaats" is al een "divisie-afdeling"
|
||
-- aangemaakt, dus die afdeling bestaat al!). Relevanter is of de PRS-
|
||
-- kostenplaats actief is, want dan moet er een afdeling bij bestaan.
|
||
-- [Zo worden afdelingen, die - om wat voor reden ook - eerder niet
|
||
-- zijn toegevoegd, deze run wel toegevoegd (met l_created gebeurde
|
||
-- dat alleen in de run waarin de PRS-kostenplaats werd aangemaakt)].
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_upper = UPPER (rc.afdeling);
|
||
|
||
IF (rc.status = 'A' AND v_count = 0)
|
||
THEN
|
||
-- Kostenplaats is actief, maar afdeling bestaat nog niet!
|
||
BEGIN
|
||
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
prs_kostenplaats_key,
|
||
prs_bedrijf_key)
|
||
SELECT rc.afdeling,
|
||
rc.omschrijving,
|
||
k.prs_kostenplaats_key,
|
||
1 -- 'Intern'
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_upper = UPPER (rc.afdeling);
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Afdeling is toegevoegd',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet worden toegevoegd ' || v_errormsg,
|
||
rc.afdeling || '/' || rc.omschrijving || ' [key=' || lafdelingkey || ']');
|
||
END;
|
||
ELSE
|
||
-- Kostenplaats en afdeling bestonden al wel!
|
||
IF l_inactivated
|
||
THEN
|
||
-- Bepaal aantal verplichtingen op afdeling als som van:
|
||
-- 1. #voorkomens in PRS_V_AFD_VERPLICHTING
|
||
-- 2. #voorkomens in PRS_RUIMTEAFDELING
|
||
-- 3. #voorkomens van afdeling-kinderen in PRS_RUIMTEAFDELING
|
||
SELECT SUM (x.aantal)
|
||
INTO v_count
|
||
FROM (SELECT COUNT ( * ) aantal
|
||
FROM prs_v_afd_verplichting av
|
||
WHERE av.prs_afdeling_key = lafdelingkey
|
||
UNION ALL
|
||
SELECT COUNT ( * ) aantal
|
||
FROM prs_v_aanwezigruimteafdeling ra
|
||
WHERE ra.prs_afdeling_key = lafdelingkey
|
||
UNION ALL
|
||
SELECT COUNT ( * ) aantal
|
||
FROM prs_v_aanwezigafdeling a,
|
||
prs_v_aanwezigruimteafdeling ra
|
||
WHERE a.prs_afdeling_parentkey = lafdelingkey
|
||
AND a.prs_afdeling_key = ra.prs_afdeling_key) x;
|
||
|
||
-- Als v_count>0, dan bestaan er nog verplichtingen en wordt de
|
||
-- afdeling INACTIEF gemaakt!
|
||
IF v_count > 0
|
||
THEN
|
||
-- Maak (of houd) afdeling INACTIEF.
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_naam = rc.afdeling,
|
||
prs_afdeling_omschrijving = SUBSTR ('INACTIEF:' || rc.omschrijving, 1, 60),
|
||
prs_kostenplaats_key = lkostenplaatskey
|
||
WHERE prs_afdeling_key = lafdelingkey
|
||
AND prs_afdeling_omschrijving NOT LIKE 'INACTIEF%';
|
||
ELSE
|
||
-- Verwijder afdeling en kostenplaats.
|
||
BEGIN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_key = lkostenplaatskey;
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_verwijder = SYSDATE
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_key = lkostenplaatskey;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kostenplaats is verwijderd',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
END IF;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_key = lafdelingkey;
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_verwijder = SYSDATE
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_key = lafdelingkey;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Afdeling is verwijderd',
|
||
rc.afdeling || '/' || rc.omschrijving);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Afdeling ' || rc.afdeling || ' kan niet worden verwijderd (heeft nog personen)',
|
||
rc.afdeling || '/' || rc.omschrijving || ' [key=' || lafdelingkey || ']');
|
||
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_naam = rc.afdeling,
|
||
prs_afdeling_omschrijving = SUBSTR ('INACTIEF:' || rc.omschrijving, 1, 60),
|
||
prs_kostenplaats_key = lkostenplaatskey
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
END;
|
||
END IF;
|
||
ELSE
|
||
BEGIN
|
||
-- Just update this one.
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_naam = rc.afdeling,
|
||
prs_afdeling_omschrijving = rc.omschrijving,
|
||
prs_kostenplaats_key = lkostenplaatskey,
|
||
prs_afdeling_verwijder = NULL
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet worden bijgewerkt ' || v_errormsg,
|
||
rc.afdeling || '/' || rc.omschrijving || ' [key=' || lafdelingkey || ']');
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
BEGIN
|
||
-- Hier kunnen geen mensen bij horen, want geen PRS-kostenplaats.
|
||
-- Ergo: zo mogelijk opruimen.
|
||
-- UWVA#32268: Niet PRS-kostenplaatsen worden vanuit deze import
|
||
-- nooit meer als afdeling aangemaakt! Hier gebeurt in
|
||
-- principe dus nooit iets (tenzij handmatig een ALG-
|
||
-- of PRJ-kostenplaats als afdeling is toegevoegd die
|
||
-- toevallig ook voorkomt in het importbestand).
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_verwijder = SYSDATE
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', 'Afdeling kan niet vervallen (heeft nog personen)',
|
||
rc.afdeling || '/' || rc.omschrijving || ' [key=' || lafdelingkey || ']');
|
||
END;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
-- Organisatiestructuur vastleggen!
|
||
FOR rc IN cstructuur
|
||
LOOP
|
||
BEGIN
|
||
lafdelingkey := NULL;
|
||
lparentkey := NULL;
|
||
|
||
SELECT prs_afdeling_key
|
||
INTO lafdelingkey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper = UPPER (rc.afdeling);
|
||
|
||
-- TODO: MAX, omdat ...?
|
||
SELECT MAX (dparent.prs_afdeling_key)
|
||
INTO lparentkey
|
||
FROM prs_afdeling dparent
|
||
WHERE dparent.prs_afdeling_verwijder IS NULL
|
||
AND dparent.prs_afdeling_upper = UPPER (rc.parent);
|
||
|
||
-- Obv. importfile alleen update parent uitvoeren indien de ouder
|
||
-- niet zichzelf is.
|
||
IF lparentkey != lafdelingkey AND lparentkey IS NOT NULL
|
||
THEN
|
||
-- UWV's organisatiestructuur heeft 6 lagen (met 3 ICT-afdelingen
|
||
-- in die 6e laag, onder 'Servicedesk ICT').
|
||
-- Haal die dus <20><>n laag omhoog (oftewel zet 'niveau-6' afdelingen
|
||
-- naast hun parent in afdelingsniveau 5).
|
||
IF (rc.niveau6 = 1)
|
||
THEN
|
||
BEGIN
|
||
SELECT MAX (dparent.prs_afdeling_parentkey)
|
||
INTO lparentkey
|
||
FROM prs_afdeling dparent
|
||
WHERE dparent.prs_afdeling_verwijder IS NULL
|
||
AND dparent.prs_afdeling_key = lparentkey;
|
||
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = NULL,
|
||
prs_afdeling_parentkey = lparentkey
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Niveau-6 afdeling aan parent van parentafdeling gekoppeld: ',
|
||
rc.afdeling || '/' || rc.omschrijving || ' (' || rc.parent || ')');
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Kan parent van parentafdeling niet vinden',
|
||
rc.afdeling || '/' || rc.omschrijving || ' (' || rc.parent || ')');
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen parent van parentafdeling',
|
||
rc.afdeling || '/' || rc.omschrijving || ' (' || rc.parent || ')');
|
||
END;
|
||
ELSE
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = NULL,
|
||
prs_afdeling_parentkey = lparentkey
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', 'Fout bij vastleggen parentafdeling',
|
||
rc.afdeling || '/' || rc.omschrijving || ' (' || rc.parent || ')');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen (parent-)afdeling',
|
||
rc.afdeling || '/' || rc.omschrijving || ' [key=' || lafdelingkey || '], parent: ' || rc.parent || ' [' || lparentkey || ']');
|
||
END;
|
||
END LOOP;
|
||
|
||
-- For summary only
|
||
SELECT COUNT ( * )
|
||
INTO l_newcount
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO l_newcountverw
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NOT NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Aantal ingelezen kostenplaatsen: '
|
||
|| TO_CHAR (l_impcount) || '(actief) + '
|
||
|| TO_CHAR (l_impcountverw) || '(inactief) = '
|
||
|| TO_CHAR (l_impcount + l_impcountverw), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal actieve kostenplaatsen vooraf: ' || TO_CHAR (l_oldcount) || ' nu: ' || TO_CHAR (l_newcount), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal inactieve kostenplaatsen vooraf: ' || TO_CHAR (l_oldcountverw) || ' nu: ' || TO_CHAR (l_newcountverw), '');
|
||
|
||
-- Bonus logging
|
||
SELECT COUNT ( * )
|
||
INTO l_manualcount
|
||
FROM prs_kostenplaats k, uwva_imp_kpn i
|
||
WHERE k.prs_kostenplaats_verwijder IS NULL
|
||
AND UPPER (k.prs_kostenplaats_nr) NOT LIKE '__UWV'
|
||
AND k.prs_kostenplaats_nr = i.afdeling(+)
|
||
AND i.afdeling IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal actieve kostenplaatsen niet via import: ' || TO_CHAR (l_manualcount), '');
|
||
|
||
-- Update kostenplaatsgroep voor combinatievalidatie
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '61', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'PKPU%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '61', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'PKUN%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '27', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'P%'
|
||
AND (prs_kostenplaatsgrp_key != 61 OR prs_kostenplaatsgrp_key IS NULL);
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '24', prs_kostenplaats_module = 'ALG'
|
||
WHERE prs_kostenplaats_nr LIKE 'G%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '25', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'H%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '27', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'U%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '25', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'I%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '22', prs_kostenplaats_module = 'PRJ'
|
||
WHERE (prs_kostenplaats_nr LIKE 'S%'
|
||
AND prs_kostenplaats_upper NOT IN
|
||
('S30006',
|
||
'S30007',
|
||
'S30008',
|
||
'S30011',
|
||
'S30015',
|
||
'S30046',
|
||
'S30056',
|
||
'S30065',
|
||
'S30080',
|
||
'S30083',
|
||
'S30115',
|
||
'S30116',
|
||
'S30121',
|
||
'S30122',
|
||
'S30130',
|
||
'S30132'))
|
||
OR prs_kostenplaats_nr LIKE 'T%';
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '23', prs_kostenplaats_module = 'PRJ'
|
||
WHERE prs_kostenplaats_nr LIKE 'S%'
|
||
AND prs_kostenplaats_upper IN
|
||
('S30006',
|
||
'S30007',
|
||
'S30008',
|
||
'S30011',
|
||
'S30015',
|
||
'S30046',
|
||
'S30056',
|
||
'S30065',
|
||
'S30080',
|
||
'S30083',
|
||
'S30115',
|
||
'S30116',
|
||
'S30121',
|
||
'S30122',
|
||
'S30130',
|
||
'S30132');
|
||
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaatsgrp_key = '21', prs_kostenplaats_module = 'PRS'
|
||
WHERE fac.safe_to_number (prs_kostenplaats_nr) IS NOT NULL;
|
||
|
||
-- Alle kostenplaatsen uit de kpn_prj import zijn projectkostenplaatsen.
|
||
UPDATE prs_kostenplaats k
|
||
SET k.prs_kostenplaatsgrp_key = '27', k.prs_kostenplaats_module = 'PRJ'
|
||
WHERE EXISTS (SELECT project
|
||
FROM uwva_imp_kpn_prj
|
||
WHERE project = k.prs_kostenplaats_nr);
|
||
|
||
COMMIT;
|
||
|
||
-- UWVA#15374: Automatisch bijwerken "kpn-based" legenda's.
|
||
INSERT INTO cad_legendawaarde (cad_legenda_key,
|
||
cad_legendawaarde_value,
|
||
cad_legendawaarde_rgb,
|
||
cad_legendawaarde_omschr)
|
||
SELECT DISTINCT
|
||
181,
|
||
SUBSTR (a.prs_afdeling_naam6, 1, 60), -- HV-Divisie
|
||
TO_CHAR (DBMS_UTILITY.get_hash_value (SUBSTR (a.prs_afdeling_naam6, 1, 60), 0, POWER (2, 24)), '0XXXXX'),
|
||
SUBSTR (a.prs_afdeling_naam6, 1, 60)
|
||
FROM prs_v_aanwezigafdeling a
|
||
WHERE a.prs_afdeling_parentkey IS NULL
|
||
AND NOT EXISTS
|
||
(SELECT cl.cad_legendawaarde_value
|
||
FROM cad_legendawaarde cl
|
||
WHERE cl.cad_legendawaarde_value = SUBSTR (a.prs_afdeling_naam6, 1, 60)
|
||
AND cl.cad_legenda_key = 181);
|
||
|
||
INSERT INTO cad_legendawaarde (cad_legenda_key,
|
||
cad_legendawaarde_value,
|
||
cad_legendawaarde_rgb,
|
||
cad_legendawaarde_omschr)
|
||
SELECT DISTINCT
|
||
182,
|
||
SUBSTR (a.prs_afdeling_naam6, 1, 60), -- HV-Afdeling
|
||
TO_CHAR (DBMS_UTILITY.get_hash_value (SUBSTR (a.prs_afdeling_naam6, 1, 60), 0, POWER (2, 24)), '0XXXXX'),
|
||
SUBSTR (a.prs_afdeling_naam6, 1, 60)
|
||
FROM prs_v_aanwezigafdeling a
|
||
WHERE a.prs_afdeling_parentkey IS NOT NULL
|
||
AND NOT EXISTS
|
||
(SELECT cl.cad_legendawaarde_value
|
||
FROM cad_legendawaarde cl
|
||
WHERE cl.cad_legendawaarde_value = SUBSTR (a.prs_afdeling_naam6, 1, 60)
|
||
AND cl.cad_legenda_key = 182);
|
||
END;
|
||
/
|
||
|
||
-- USRRAP views tbv UWVA#7
|
||
/* Formatted on 2005/02/16 11:26 (Formatter Plus v4.8.5) */
|
||
CREATE OR REPLACE VIEW uwva_v_kpn_01_teverwijderenafd (personeelsnr, persoon, afdeling, omschrijving, vervallen)
|
||
AS
|
||
SELECT prs_perslid_nr, pf.prs_perslid_naam_full, prs_afdeling_naam, prs_afdeling_omschrijving,
|
||
DECODE (d.prs_afdeling_verwijder, NULL, '', 'INACTIEF')
|
||
FROM prs_afdeling d, prs_perslid p, uwva_imp_kpn i, prs_v_perslid_fullnames_all pf
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||
AND i.afdeling = d.prs_afdeling_naam
|
||
AND i.status <> 'A'
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND pf.prs_perslid_key = p.prs_perslid_key;
|
||
|
||
CREATE OR REPLACE VIEW uwva_v_kpn_03_vervallenafd (hide_f_vervaldatum,
|
||
vervaldatum,
|
||
afdeling,
|
||
omschrijving
|
||
)
|
||
AS
|
||
SELECT SYSDATE - d.prs_afdeling_verwijder,
|
||
TO_CHAR (d.prs_afdeling_verwijder, 'YYYY-MM-DD'),
|
||
d.prs_afdeling_naam, d.prs_afdeling_omschrijving
|
||
FROM prs_afdeling d
|
||
WHERE d.prs_afdeling_verwijder IS NOT NULL;
|
||
|
||
CREATE OR REPLACE VIEW uwva_v_kpn_04_openverpl
|
||
(fclt_f_servicepunt, fclt_f_locatie, kostenplaats, omschrijving, vervaldatum,
|
||
verplichting, item, fclt_3d_locatie_key)
|
||
AS
|
||
SELECT di.alg_district_omschrijving fclt_f_servicepunt,
|
||
l.alg_locatie_code fclt_f_locatie,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
TO_CHAR (k.prs_kostenplaats_verwijder, 'YYYY-MM-DD'),
|
||
NVL (t.fac_message_text, pv.fac_message_code),
|
||
item,
|
||
pv.locatie_key
|
||
FROM prs_v_kp_verplichting pv,
|
||
fac_message t,
|
||
prs_kostenplaats k,
|
||
alg_locatie l,
|
||
alg_district di
|
||
WHERE pv.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND pv.locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND pv.fac_message_code = t.fac_message_code(+)
|
||
AND k.prs_kostenplaats_verwijder IS NOT NULL;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE UWVA_import_cis (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
-- constanten
|
||
c_fielddelimitor VARCHAR2 (1) := ';'; -- Field seperator
|
||
|
||
-- import
|
||
v_newline VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
header_is_valid BOOLEAN;
|
||
v_aantal NUMBER;
|
||
|
||
-- foutafhandeling
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errmes VARCHAR (1024);
|
||
-- De importvelden
|
||
v_prs_perslid_nr VARCHAR2 (16 BYTE);
|
||
v_prs_perslid_bsn VARCHAR2 (10 BYTE);
|
||
v_prs_perslid_naam VARCHAR2 (60 BYTE);
|
||
v_prs_perslid_oslogin VARCHAR2 (30 BYTE);
|
||
v_prs_perslid_email VARCHAR2 (200 BYTE);
|
||
v_teller NUMBER;
|
||
|
||
CURSOR c1 IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
rec1 c1%ROWTYPE;
|
||
|
||
BEGIN
|
||
|
||
-- Init
|
||
header_is_valid := FALSE;
|
||
|
||
-- Clear my previous imported rows
|
||
DELETE FROM UWVA_imp_cis;
|
||
|
||
BEGIN
|
||
v_teller := 0;
|
||
OPEN c1;
|
||
IF c1%ISOPEN THEN
|
||
v_teller := 1;
|
||
LOOP
|
||
BEGIN
|
||
v_errmes := 'Fout FETCH te importeren rij';
|
||
FETCH c1 INTO rec1;
|
||
EXIT WHEN c1%NOTFOUND;
|
||
v_errmes := 'Fout opvragen te importeren rij';
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_bsn);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||
|
||
-- Skip until a valid header is found
|
||
IF ( header_is_valid = FALSE
|
||
AND v_prs_perslid_naam LIKE 'Volledige naam'
|
||
)
|
||
THEN
|
||
header_is_valid := TRUE;
|
||
ELSIF (header_is_valid)
|
||
THEN
|
||
|
||
INSERT INTO UWVA_imp_cis
|
||
(prs_perslid_nr
|
||
,prs_perslid_bsn
|
||
,prs_perslid_naam
|
||
,prs_perslid_oslogin
|
||
,prs_perslid_email
|
||
)
|
||
VALUES (SUBSTR (RTRIM(v_prs_perslid_nr), 1, 16)
|
||
,SUBSTR (RTRIM(v_prs_perslid_bsn), 1, 10)
|
||
,SUBSTR (RTRIM(v_prs_perslid_naam), 1, 60)
|
||
,SUBSTR (RTRIM(v_prs_perslid_oslogin), 1, 30)
|
||
,SUBSTR (RTRIM(v_prs_perslid_email), 1, 200)
|
||
);
|
||
END IF;
|
||
|
||
header_is_valid := TRUE;
|
||
|
||
COMMIT;
|
||
|
||
IF (NOT header_is_valid)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Invalid import file',
|
||
'Er is geen geldige header aangetroffen in het importbestand'
|
||
);
|
||
END IF;
|
||
COMMIT; -- alles is goed gegaan
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
CLOSE c1;
|
||
|
||
SELECT count(*)
|
||
INTO v_aantal
|
||
FROM FAC_IMP_FILE
|
||
WHERE fac_import_key = p_import_key;
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen uit cis bestand: '|| v_aantal, '');
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_aantal
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_naam NOT LIKE 'INA%' AND prs_perslid_nr IS NOT NULL;
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal actieve personen in Facilitor met pers.nr: '|| v_aantal, '');
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_aantal
|
||
FROM prs_perslid p, uwva_imp_cis cis
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_naam NOT LIKE 'INACT%'
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND cis.prs_perslid_nr = p.prs_perslid_nr;
|
||
fac.imp_writelog (p_import_key, 'S', 'Match personeelsnummer: '|| v_aantal, '');
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_aantal
|
||
FROM prs_perslid p, uwva_imp_cis cis
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_naam NOT LIKE 'INACT%'
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND cis.prs_perslid_nr = p.prs_perslid_nr
|
||
AND LTRIM (RTRIM (UPPER (cis.prs_perslid_oslogin))) =
|
||
LTRIM (RTRIM (UPPER (p.prs_perslid_oslogin)))
|
||
AND cis.prs_perslid_oslogin IS NOT NULL
|
||
AND p.prs_perslid_oslogin IS NOT NULL;
|
||
fac.imp_writelog (p_import_key, 'S', 'Match personeelsnummer en logincode: '|| v_aantal, '');
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_aantal
|
||
FROM prs_perslid p, uwva_imp_cis cis
|
||
WHERE prs_perslid_verwijder IS NULL -- 18550
|
||
AND p.prs_perslid_naam NOT LIKE 'INACT%'
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND cis.prs_perslid_nr = p.prs_perslid_nr
|
||
AND LTRIM (RTRIM (UPPER (cis.prs_perslid_email))) =
|
||
LTRIM (RTRIM (UPPER (p.prs_perslid_email)))
|
||
AND cis.prs_perslid_email IS NOT NULL
|
||
AND p.prs_perslid_email IS NOT NULL;
|
||
fac.imp_writelog (p_import_key, 'S', 'Match personeelsnummer en email: '|| v_aantal, '');
|
||
|
||
|
||
COMMIT;
|
||
END;
|
||
EXCEPTION WHEN OTHERS THEN
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Personen import: '|| v_errmes,
|
||
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
||
);
|
||
COMMIT; -- Logging opslaan
|
||
END;
|
||
/
|
||
|
||
|
||
/* Formatted on 2005/10/11 14:25 (Formatter Plus v4.8.5) */
|
||
CREATE OR REPLACE PROCEDURE UWVA_update_cis (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_login
|
||
IS
|
||
SELECT p.prs_perslid_nr, cis.prs_perslid_oslogin, p.prs_perslid_login
|
||
FROM prs_perslid p, uwva_imp_cis cis
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_naam NOT LIKE 'INACT%'
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND cis.prs_perslid_nr = p.prs_perslid_nr
|
||
AND LTRIM (RTRIM (UPPER (NVL(cis.prs_perslid_oslogin,'is leeg')))) <> LTRIM (RTRIM (UPPER (NVL(p.prs_perslid_oslogin, 'is leeg'))))
|
||
AND cis.prs_perslid_oslogin IS NOT NULL;
|
||
|
||
CURSOR c_email
|
||
IS
|
||
SELECT p.prs_perslid_nr, cis.prs_perslid_email
|
||
FROM prs_perslid p, uwva_imp_cis cis
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_naam NOT LIKE 'INACT%'
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND cis.prs_perslid_nr = p.prs_perslid_nr
|
||
AND LTRIM (RTRIM (UPPER (NVL(cis.prs_perslid_email,'geenmail')))) <> LTRIM (RTRIM (UPPER (NVL(p.prs_perslid_email,'geenmail'))))
|
||
AND cis.prs_perslid_email IS NOT NULL
|
||
AND NOT (substr(cis.prs_perslid_email,7,1)='@')
|
||
AND fac.safe_to_number(substr(cis.prs_perslid_email,4,3)) IS NULL;
|
||
|
||
v_aantal NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errmes VARCHAR (1024);
|
||
v_errormsg VARCHAR (200);
|
||
BEGIN
|
||
v_aantal := 0;
|
||
FOR rc IN c_login
|
||
LOOP
|
||
-- Bestaat deze al?
|
||
BEGIN
|
||
IF rc.prs_perslid_login < to_date ('20070101', 'yyyymmdd') OR
|
||
rc.prs_perslid_login IS NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin = NULL
|
||
WHERE prs_perslid_oslogin = UPPER(rc.prs_perslid_oslogin);
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin = rc.prs_perslid_oslogin
|
||
WHERE prs_perslid_nr = rc.prs_perslid_nr
|
||
AND prs_perslid_verwijder IS NULL;
|
||
v_aantal := v_aantal + 1;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Kan login niet aanpassen ' || v_errormsg,
|
||
'Personeelsnummer: ' || rc.prs_perslid_nr || ' login: ' || rc.prs_perslid_oslogin);
|
||
END;
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal aangepaste logins: ' || v_aantal, '');
|
||
|
||
v_aantal := 0;
|
||
FOR rc IN c_email
|
||
LOOP
|
||
BEGIN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_email = rc.prs_perslid_email
|
||
WHERE prs_perslid_nr = rc.prs_perslid_nr
|
||
AND prs_perslid_verwijder IS NULL;
|
||
v_aantal := v_aantal + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Kan email niet aanpassen ' || v_errormsg,
|
||
'Personeelnummer: ' || rc.prs_perslid_nr || ' email: ' || rc.prs_perslid_email);
|
||
END;
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal aangepaste emailadressen: ' || v_aantal, '');
|
||
END;
|
||
/
|
||
|
||
|
||
/* UWVA#15279 - Importfunctie tbv. het bijwerken van persoonsgegevens! */
|
||
CREATE OR REPLACE PROCEDURE uwva_import_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
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_wp_ongeldig NUMBER (1);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER (10);
|
||
-- De importvelden:
|
||
v_prs_perslid_nr VARCHAR2 (255);
|
||
v_prs_perslid_oslogin VARCHAR2 (255);
|
||
v_prs_perslid_oslogin2 VARCHAR2 (255);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (255);
|
||
v_prs_perslid_mobiel VARCHAR2 (255);
|
||
v_prs_perslid_email VARCHAR2 (255);
|
||
v_alg_locatie_code VARCHAR2 (255);
|
||
v_alg_gebouw_code VARCHAR2 (255);
|
||
v_alg_verdieping_volgnr VARCHAR2 (255); -- C10
|
||
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
|
||
v_alg_ruimte_nr VARCHAR2 (255); -- C10
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM uwva_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_errormsg := '';
|
||
v_ongeldig := 0;
|
||
v_wp_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
-- 01
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_nr);
|
||
-- 02
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_oslogin);
|
||
-- 03
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_oslogin2);
|
||
-- 04
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_telefoonnr);
|
||
-- 05
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_mobiel);
|
||
-- 06
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_email);
|
||
-- 07
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
||
-- 08
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
|
||
-- 09
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
|
||
-- 10
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
|
||
--
|
||
v_aanduiding :=
|
||
'[' || COALESCE (v_prs_perslid_nr, v_prs_perslid_oslogin)
|
||
|| '] ';
|
||
|
||
-- 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.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
|
||
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
|
||
AND UPPER (v_prs_perslid_oslogin2) = 'ALT-LOGINNAAM'
|
||
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
|
||
AND UPPER (v_prs_perslid_mobiel) = 'MOBIEL'
|
||
AND UPPER (v_prs_perslid_email) = 'EMAIL'
|
||
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_alg_verdieping_volgnr) = 'VERDIEPINGNUMMER'
|
||
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errorhint := 'Ongeldig personeelsnummer';
|
||
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
||
|
||
IF LENGTH (v_prs_perslid_nr) > 16
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Personeelsnummer te lang',
|
||
'Personeelsnummer is primair verplicht; regel wordt overgeslagen!'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige loginnaam';
|
||
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
||
|
||
IF LENGTH (v_prs_perslid_oslogin) > 30
|
||
THEN
|
||
IF v_prs_perslid_nr IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Loginnaam te lang',
|
||
'Loginnaam is secundair verplicht; regel wordt overgeslagen!'
|
||
);
|
||
ELSE
|
||
v_prs_perslid_oslogin := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Loginnaam te lang',
|
||
'Loginnaam wordt niet bijgewerkt'
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
IF ( v_ongeldig = 0
|
||
AND v_prs_perslid_nr IS NULL
|
||
AND v_prs_perslid_oslogin IS NULL
|
||
)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Personeelsnummer en loginnaam onbekend',
|
||
'Personeelsnummer of loginnaam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige tweede loginnaam';
|
||
v_prs_perslid_oslogin2 := TRIM (v_prs_perslid_oslogin2);
|
||
|
||
IF LENGTH (v_prs_perslid_oslogin2) > 30
|
||
THEN
|
||
v_prs_perslid_oslogin2 := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Tweede loginnaam te lang',
|
||
'Tweede loginnaam wordt niet bijgewerkt'
|
||
);
|
||
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 := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Telefoonnummer te lang',
|
||
'Telefoonnummer wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig mobiel nummer';
|
||
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
||
|
||
IF LENGTH (v_prs_perslid_mobiel) > 15
|
||
THEN
|
||
v_prs_perslid_mobiel := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Mobiel nummer te lang',
|
||
'Mobiel nummer wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig e-mailadres';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 50
|
||
THEN
|
||
v_prs_perslid_email := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'E-mailadres te lang',
|
||
'E-mailadres wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint :=
|
||
'Ongeldige locatiecode [' || v_alg_locatie_code || ']';
|
||
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
||
|
||
IF LENGTH (v_alg_locatie_code) > 5
|
||
THEN
|
||
v_alg_locatie_code := NULL;
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Locatiecode te lang',
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint :=
|
||
'Ongeldige gebouwcode [' || v_alg_gebouw_code || ']';
|
||
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
||
|
||
IF LENGTH (v_alg_gebouw_code) > 10
|
||
THEN
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Gebouwcode te lang',
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint :=
|
||
'Ongeldig verdiepingnummer [' || v_alg_verdieping_volgnr || ']';
|
||
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
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding
|
||
|| 'Verdiepingnummer groter dan 3 posities',
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
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
|
||
|| ')';
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig ruimtenummer [' || v_alg_ruimte_nr || ']';
|
||
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
||
|
||
IF LENGTH (v_alg_ruimte_nr) > 10
|
||
THEN
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimtenummer te lang',
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
SELECT DECODE (v_alg_locatie_code, NULL, 0, 1)
|
||
+ DECODE (v_alg_gebouw_code, NULL, 0, 1)
|
||
+ DECODE (v_alg_verdieping_volgnr_n, NULL, 0, 1)
|
||
+ DECODE (v_alg_ruimte_nr, NULL, 0, 1)
|
||
INTO v_count
|
||
FROM DUAL;
|
||
|
||
IF v_count MOD 4 <> 0
|
||
THEN
|
||
v_wp_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Werkplekgegevens onvolledig',
|
||
'Werkplek wordt niet bijgewerkt'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel UWVA_IMP_PRS';
|
||
|
||
IF v_wp_ongeldig = 1
|
||
THEN
|
||
INSERT INTO uwva_imp_prs
|
||
(prs_perslid_nr, prs_perslid_oslogin,
|
||
prs_perslid_oslogin2,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel, prs_perslid_email
|
||
)
|
||
VALUES (v_prs_perslid_nr, v_prs_perslid_oslogin,
|
||
v_prs_perslid_oslogin2,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_mobiel, v_prs_perslid_email
|
||
);
|
||
ELSE
|
||
INSERT INTO uwva_imp_prs
|
||
(prs_perslid_nr, prs_perslid_oslogin,
|
||
prs_perslid_oslogin2,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel, prs_perslid_email,
|
||
alg_locatie_code, alg_gebouw_code,
|
||
alg_verdieping_volgnr, alg_ruimte_nr
|
||
)
|
||
VALUES (v_prs_perslid_nr, v_prs_perslid_oslogin,
|
||
v_prs_perslid_oslogin2,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_mobiel, v_prs_perslid_email,
|
||
v_alg_locatie_code, v_alg_gebouw_code,
|
||
v_alg_verdieping_volgnr_n, v_alg_ruimte_nr
|
||
);
|
||
END IF;
|
||
|
||
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 :=
|
||
' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END uwva_import_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_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_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
|
||
-- Dubbele nummers/logins in import? Dan wordt dezelfde persoon 2x (of meer) bijgewerkt!
|
||
CURSOR cperslid
|
||
IS
|
||
SELECT ip.prs_perslid_nr, ip.prs_perslid_oslogin,
|
||
ip.prs_perslid_oslogin2, ip.prs_perslid_telefoonnr,
|
||
ip.prs_perslid_mobiel, ip.prs_perslid_email
|
||
FROM uwva_imp_prs ip;
|
||
|
||
-- Dubbele nummers/logins in import? Dan krijgt iemand mogelijk de verkeerde plaats(en)!
|
||
-- NB. Import garandeert dat als locatie niet leeg, dan ook gebouw t/m ruimte niet leeg!
|
||
CURSOR cwp
|
||
IS
|
||
SELECT ip.prs_perslid_nr, ip.prs_perslid_oslogin, ip.alg_locatie_code,
|
||
ip.alg_gebouw_code, ip.alg_verdieping_volgnr, ip.alg_ruimte_nr
|
||
FROM uwva_imp_prs ip
|
||
WHERE ip.alg_locatie_code IS NOT NULL;
|
||
|
||
-- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek
|
||
CURSOR cnowp
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_naam NOT LIKE 'INACTIEF:%'
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recperslid IN cperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| COALESCE (recperslid.prs_perslid_nr,
|
||
recperslid.prs_perslid_oslogin
|
||
)
|
||
|| '] ';
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
IF recperslid.prs_perslid_nr IS NOT NULL
|
||
THEN
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr);
|
||
ELSE
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin);
|
||
END IF;
|
||
|
||
IF (v_count = 1)
|
||
THEN
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin =
|
||
COALESCE (recperslid.prs_perslid_oslogin,
|
||
prs_perslid_oslogin
|
||
),
|
||
prs_perslid_oslogin2 =
|
||
COALESCE (recperslid.prs_perslid_oslogin2,
|
||
prs_perslid_oslogin2
|
||
),
|
||
prs_perslid_telefoonnr =
|
||
COALESCE (recperslid.prs_perslid_telefoonnr,
|
||
prs_perslid_telefoonnr
|
||
),
|
||
prs_perslid_mobiel =
|
||
COALESCE (recperslid.prs_perslid_mobiel,
|
||
prs_perslid_mobiel
|
||
),
|
||
prs_perslid_email =
|
||
COALESCE (recperslid.prs_perslid_email,
|
||
prs_perslid_email
|
||
)
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
ELSE
|
||
IF (v_count = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding
|
||
|| ' Persoon niet bekend in Facilitor',
|
||
v_errorhint
|
||
);
|
||
ELSE -- (v_count > 1)
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding
|
||
|| ' Persoon niet 1-duidig te bepalen',
|
||
v_errorhint
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
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,
|
||
'W',
|
||
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 :=
|
||
'['
|
||
|| COALESCE (recwp.prs_perslid_nr, recwp.prs_perslid_oslogin)
|
||
|| '] ';
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
IF recwp.prs_perslid_nr IS NOT NULL
|
||
THEN
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
|
||
ELSE
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_oslogin) = UPPER (recwp.prs_perslid_oslogin);
|
||
END IF;
|
||
|
||
IF (v_count = 1)
|
||
THEN
|
||
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 UPPER (alg_verdieping_volgnr) = UPPER (recwp.alg_verdieping_volgnr);
|
||
|
||
v_errorhint := 'Fout bij bepalen ruimte';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_v_aanwezigruimte r
|
||
WHERE r.alg_verdieping_key = v_verdieping_key
|
||
AND UPPER (r.alg_ruimte_nr) = UPPER (recwp.alg_ruimte_nr);
|
||
|
||
-- Persoon verhuist naar/krijgt nieuwe werkplek in betreffende gebouw!
|
||
v_errorhint := 'Fout bij verhuizen naar nieuwe werkplek';
|
||
PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'G');
|
||
--ELSE
|
||
--Niets, want dat is dan al gemeld in voorgaande loop!
|
||
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,
|
||
'W',
|
||
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 nummer ['
|
||
|| recnowp.prs_perslid_nr
|
||
|| '] 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,
|
||
'W',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END uwva_update_prs;
|
||
/
|
||
|
||
--UWVA#30448: PWP-import
|
||
/* Formatted on 12-12-2014 14:45:15 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE uwva_import_pwp (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
-- De importvelden
|
||
v_login VARCHAR2 (255); -- C30/prs_perslid_oslogin
|
||
v_locatie VARCHAR2 (255); -- C10/alg_locatie_code
|
||
v_gebouw VARCHAR2 (255); -- C12/alg_gebouw_code
|
||
v_verdiepingcode VARCHAR2 (255); -- C10/alg_verdieping_code
|
||
v_ruimtenr VARCHAR2 (255); -- C10/alg_ruimte_nr
|
||
v_pwp_volgnr VARCHAR2 (255); -- N2/prs_perslidwerkplek_volgnr
|
||
v_bezetting VARCHAR2 (255); -- N3/prs_perslidwerkplek_bezetting
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM uwva_imp_pwp;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
-- LOGIN;LOCATIE;GEBOUW;VERDIEPINGCODE;RUIMTENR;PWP_VOLGNR;BEZETTING
|
||
fac.imp_getfield (v_newline, c_delim, v_login);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw);
|
||
fac.imp_getfield (v_newline, c_delim, v_verdiepingcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_ruimtenr);
|
||
fac.imp_getfield (v_newline, c_delim, v_pwp_volgnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_bezetting);
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_login
|
||
|| '|'
|
||
|| v_gebouw
|
||
|| '|'
|
||
|| v_verdiepingcode
|
||
|| '|'
|
||
|| v_ruimtenr
|
||
|| '|'
|
||
|| TO_CHAR (v_pwp_volgnr)
|
||
|| '|'
|
||
|| TO_CHAR (v_bezetting)
|
||
|| '] ';
|
||
|
||
-- 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.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (TRIM (v_login)) = 'LOGIN'
|
||
AND UPPER (TRIM (v_locatie)) = 'LOCATIE'
|
||
AND UPPER (TRIM (v_gebouw)) = 'GEBOUW'
|
||
AND UPPER (TRIM (v_verdiepingcode)) = 'VERDIEPINGCODE'
|
||
AND UPPER (TRIM (v_ruimtenr)) = 'RUIMTENR'
|
||
AND UPPER (TRIM (v_pwp_volgnr)) = 'PWP_VOLGNR'
|
||
AND UPPER (TRIM (v_bezetting)) = 'BEZETTING'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Login ongeldig/ongedefinieerd of te lang';
|
||
v_login := TRIM (v_login);
|
||
|
||
IF v_login IS NULL OR LENGTH (v_login) > 30
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatie ongeldig/ongedefinieerd of te lang';
|
||
v_locatie := TRIM (v_locatie);
|
||
|
||
IF v_locatie IS NULL OR LENGTH (v_locatie) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouw ongeldig/ongedefinieerd of te lang';
|
||
v_gebouw := TRIM (v_gebouw);
|
||
|
||
IF v_gebouw IS NULL OR LENGTH (v_gebouw) > 12
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Verdieping ongeldig/ongedefinieerd of te lang';
|
||
v_verdiepingcode := TRIM (v_verdiepingcode);
|
||
|
||
IF v_verdiepingcode IS NULL OR LENGTH (v_verdiepingcode) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Ruimtenr ongeldig/ongedefinieerd of te lang';
|
||
v_ruimtenr := TRIM (v_ruimtenr);
|
||
|
||
IF v_ruimtenr IS NULL OR LENGTH (v_ruimtenr) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'PWP-volgnr ongeldig';
|
||
v_pwp_volgnr := TRIM (v_pwp_volgnr);
|
||
|
||
IF v_pwp_volgnr IS NOT NULL AND COALESCE (fac.safe_to_number (v_pwp_volgnr), -1) NOT BETWEEN 0 AND 99
|
||
THEN
|
||
v_pwp_volgnr := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Volgnummer wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Bezetting ongeldig/ongedefinieerd';
|
||
v_bezetting := TRIM (v_bezetting);
|
||
|
||
IF COALESCE (fac.safe_to_number (v_bezetting), -1) NOT BETWEEN 0 AND 100
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF (v_ongeldig = 0)
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
|
||
INSERT INTO uwva_imp_pwp (login,
|
||
locatie,
|
||
gebouw,
|
||
verdiepingcode,
|
||
ruimtenr,
|
||
pwp_volgnr,
|
||
bezetting)
|
||
VALUES (v_login,
|
||
v_locatie,
|
||
v_gebouw,
|
||
v_verdiepingcode,
|
||
v_ruimtenr,
|
||
fac.safe_to_number (v_pwp_volgnr),
|
||
fac.safe_to_number (v_bezetting));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
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',
|
||
'Inleesproces/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces/#ongeldige niet ingelezen 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, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| 'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Inleesproces PWP afgebroken!');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_pwp (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt - op login/locatie/gebouw/verdiepingcode/ruimtenr! - over
|
||
-- alle ingelezen regels.
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM uwva_imp_pwp
|
||
ORDER BY 1, 2, 3, 4, 5;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count NUMBER (10) := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_upd NUMBER (10) := 0;
|
||
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||
v_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
|
||
v_verdieping_key alg_verdieping.alg_verdieping_key%TYPE;
|
||
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
||
v_pwp_key prs_perslidwerkplek.prs_perslidwerkplek_key%TYPE;
|
||
BEGIN
|
||
-- Loop over alle ingelezen PWP-regels.
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec1.login
|
||
|| '|'
|
||
|| rec1.gebouw
|
||
|| '|'
|
||
|| rec1.verdiepingcode
|
||
|| '|'
|
||
|| rec1.ruimtenr
|
||
|| '|'
|
||
|| TO_CHAR (rec1.pwp_volgnr)
|
||
|| '|'
|
||
|| TO_CHAR (rec1.bezetting)
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errormsg := 'Fout bepalen persoon';
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_oslogin = UPPER (rec1.login)
|
||
OR prs_perslid_oslogin2 = UPPER (rec1.login);
|
||
|
||
v_errormsg := 'Fout bepalen locatie';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE UPPER (alg_locatie_code) = UPPER (rec1.locatie);
|
||
|
||
v_errormsg := 'Fout bepalen gebouw';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_gebouw_upper = UPPER (rec1.gebouw)
|
||
AND alg_locatie_key = v_locatie_key;
|
||
|
||
v_errormsg := 'Fout bepalen verdiepingcode';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE UPPER (alg_verdieping_code) = UPPER (rec1.verdiepingcode)
|
||
AND alg_gebouw_key = v_gebouw_key;
|
||
|
||
v_errormsg := 'Fout bepalen ruimtenr';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_v_aanwezigruimte
|
||
WHERE alg_ruimte_upper_nr = UPPER (rec1.ruimtenr)
|
||
AND alg_verdieping_key = v_verdieping_key;
|
||
|
||
v_errormsg := 'Fout bepalen bestaande werkplek op locatie';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_perslidwerkplek pwp,
|
||
prs_werkplek wp,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g
|
||
WHERE pwp.prs_perslid_key = v_perslid_key
|
||
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = v_locatie_key;
|
||
|
||
-- Als op locatie reeds een bestaande WP, dan niet nog een toewijzen.
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg := 'Fout toewijzen werkplek';
|
||
PRS.movetoruimte (v_perslid_key, v_ruimte_key, NULL);
|
||
|
||
v_errormsg := 'Fout bepalen werkplek';
|
||
|
||
SELECT pwp.prs_perslidwerkplek_key
|
||
INTO v_pwp_key
|
||
FROM prs_perslidwerkplek pwp, prs_werkplek wp
|
||
WHERE pwp.prs_perslid_key = v_perslid_key
|
||
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_werkplek_virtueel = 0 -- Alleen echte plekken
|
||
AND wp.prs_werkplek_type = 0 -- Alleen vaste plekken
|
||
AND wp.prs_alg_ruimte_key = v_ruimte_key;
|
||
|
||
v_errormsg := 'Fout bijwerken werkplek';
|
||
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_perslidwerkplek_volgnr = rec1.pwp_volgnr,
|
||
prs_perslidwerkplek_bezetting = rec1.bezetting
|
||
WHERE prs_perslidwerkplek_key = v_pwp_key;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding || 'Werkplek ongewijzigd',
|
||
'');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'PWPs/#ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'PWPs/#toegevoegd: ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Importproces PWP afgebroken!');
|
||
END;
|
||
/
|
||
|
||
|
||
/* Formatted on 17-2-2014 11:48:12 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW uwva_v_email_schrijfwijzer
|
||
(
|
||
prs_key,
|
||
fac_id,
|
||
imp_id,
|
||
imp_empnum,
|
||
imp_nickname,
|
||
imp_lastname,
|
||
imp_spousename,
|
||
fac_email,
|
||
imp_email,
|
||
sw_email
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
p.prs_perslid_key,
|
||
kl.prs_kenmerklink_waarde,
|
||
ip.id,
|
||
ip.empnum,
|
||
ip.nickname,
|
||
ip.lastname,
|
||
ip.spousename,
|
||
p.prs_perslid_email,
|
||
ip.email,
|
||
DECODE (
|
||
INSTR (COALESCE (p.prs_perslid_email, ip.email), '@'),
|
||
NULL, -- geen email bekend -> ongewijzigd
|
||
COALESCE (p.prs_perslid_email, ip.email),
|
||
0, -- geen '@' in email -> ongewijzigd
|
||
COALESCE (p.prs_perslid_email, ip.email),
|
||
CASE -- email met een '@'
|
||
WHEN INSTR (COALESCE (p.prs_perslid_email, ip.email) || '.', '.') <
|
||
INSTR (COALESCE (p.prs_perslid_email, ip.email), '@')
|
||
THEN -- . voor @ (dus meeste gevallen)
|
||
REPLACE (
|
||
REPLACE (
|
||
REPLACE (
|
||
REPLACE (
|
||
INITCAP(SUBSTR (LOWER(COALESCE (p.prs_perslid_email, ip.email)),
|
||
1,
|
||
INSTR (COALESCE (p.prs_perslid_email, ip.email), '.', -1, 2) - 1))
|
||
|| SUBSTR (LOWER(COALESCE (p.prs_perslid_email, ip.email)),
|
||
INSTR (COALESCE (p.prs_perslid_email, ip.email), '.', -1, 2)),
|
||
INITCAP(REPLACE (COALESCE (nickname, vnaam), ' ', '') || '.'),
|
||
REPLACE (INITCAP (COALESCE (nickname, vnaam)), ' ', '') || '.'),
|
||
LOWER(SUBSTR (TRIM (COALESCE (lastname, anaam)),
|
||
1,
|
||
INSTR (TRIM (COALESCE (lastname, anaam)), ' ') - 1)),
|
||
SUBSTR (INITCAP (TRIM (COALESCE (lastname, anaam))),
|
||
1,
|
||
INSTR (TRIM (COALESCE (lastname, anaam)), ' ') - 1)),
|
||
LOWER(SUBSTR (TRIM (COALESCE (lastname, anaam)),
|
||
INSTR (TRIM (COALESCE (lastname, anaam)), ' ', -1) + 1)),
|
||
SUBSTR (INITCAP (TRIM (COALESCE (lastname, anaam))),
|
||
INSTR (TRIM (COALESCE (lastname, anaam)), ' ', -1) + 1)),
|
||
LOWER (REPLACE (spousename, ' ', '')),
|
||
REPLACE (INITCAP (spousename), ' ', ''))
|
||
ELSE -- geen . voor @ (bkwi.nl/uwv.local; <30!) -> ongewijzigd
|
||
COALESCE (p.prs_perslid_email, ip.email)
|
||
END)
|
||
email_schrijfwijzer
|
||
FROM (SELECT prs_perslid_key,
|
||
REPLACE (prs_perslid_email, '$', '@') prs_perslid_email,
|
||
prs_perslid_voornaam vnaam,
|
||
prs_perslid_naam anaam
|
||
FROM prs_v_aanwezigperslid) p
|
||
LEFT JOIN prs_v_aanwezigkenmerklink kl
|
||
ON p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1232 -- ABS-ID
|
||
FULL JOIN (SELECT *
|
||
FROM uwva_imp_abs
|
||
WHERE SUBSTR (empnum, 1, 1) IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S')) ip -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
ON kl.prs_kenmerklink_waarde = ip.id;
|
||
|
||
/* Formatted on 4-7-2016 16:45:15 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW uwva_v_rap_uitdienst
|
||
(
|
||
extra_key,
|
||
perslid_nr,
|
||
absid,
|
||
perslid_naam_full,
|
||
kpn_nr,
|
||
kpn_oms,
|
||
verplichting
|
||
)
|
||
AS -- Voorgaande import uitdienst <20>n lopende/actuele verplichtingen!
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_nr,
|
||
kl2.prs_kenmerklink_waarde,
|
||
pf.prs_perslid_naam_full,
|
||
kp.prs_kostenplaats_nr,
|
||
kp.prs_kostenplaats_omschrijving,
|
||
lcl.fac_locale_xsl_tekst || ' ' || vp.item
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_kostenplaats kp,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_verplichting vp, --_keys vp,
|
||
prs_kenmerklink kl1,
|
||
prs_kenmerklink kl2,
|
||
fac_locale_xsl lcl
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = vp.prs_perslid_key(+)
|
||
AND p.prs_perslid_key = kl1.prs_link_key
|
||
AND kl1.prs_kenmerk_key = 1040 -- Type Medewerker
|
||
AND kl1.prs_kenmerklink_waarde IN
|
||
(SELECT TO_CHAR (fac_usrdata_key)
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 301 -- Type_medewerker
|
||
AND fac_usrdata_upper IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S')) -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_perslid_key = kl2.prs_link_key
|
||
AND kl2.prs_kenmerk_key = 1232 -- ABS-ID
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM uwva_imp_abs uia
|
||
WHERE uia.id = kl2.prs_kenmerklink_waarde)
|
||
AND vp.fac_message_code = lcl.fac_locale_xsl_label
|
||
AND lcl.fac_locale_xsl_lang = 'NL';
|
||
|
||
/*** NIEUW: ABS-import ombutsen naar PSHCM-import! ***/
|
||
-- PSHCM importfunctie, herziene versie volgens UWVA#79055.
|
||
-- Werkn.ID|Roepnaam|Initialen|Voorkeur achternaam|Achternaam|Tussenvoegsel|Achternaam partner|Voorvoegsel|Geslacht|Type medewerker|Kostenplaatscode|Functienaam |LocatieID|KA-account|E-mailadres
|
||
-- 055406 |Pieter |PCM |Foortse |Foortse | | | |M |I |430132 |sr. functioneelbeheerder CC|GAMSG0 |PFO006 |Pieter.Foortse@uwv.nl
|
||
|
||
-- IIQ
|
||
-- EMPNUM,GRPFNAME,GRPID,ACCNT
|
||
|
||
-- Type medewerker hetzelfde behalve W=P en S is nieuw!
|
||
|
||
-- prefname nickname titel accnt altaccnt funcdscr telno mobnr faxnr email initials prefix empnum costcent gender type location id grpfname grpid lastname spousename spouseprefix
|
||
/*
|
||
INSERT INTO uwva_imp_abs (id,
|
||
prefname,
|
||
nickname,
|
||
titel,
|
||
account,
|
||
funcdscr,
|
||
telno,
|
||
mobno,
|
||
faxno,
|
||
email,
|
||
initials,
|
||
prefix,
|
||
empnum, -- personeelsnummer incl. prefix voor werknemertype (zoals in importbestand)
|
||
empnum_noprefix, -- personeelsnummer excl. prefix voor werknemertype (zoals initieel in Facilitor)
|
||
costcent,
|
||
gender,
|
||
employeetype,
|
||
pandcode,
|
||
grpfname,
|
||
grpid,
|
||
lastname,
|
||
spousename,
|
||
spouseprefix)
|
||
|
||
SELECT prs_perslid_naam, prs_kenmerk11, prs_perslid_tussenvoegsel
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_naam != prs_kenmerk11;
|
||
|
||
SELECT x.prs_srtperslid_omschrijving, COUNT ( * )
|
||
FROM fac_imp_perslid x
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigsrtperslid
|
||
WHERE prs_srtperslid_omschrijving = x.prs_srtperslid_omschrijving)
|
||
GROUP BY x.prs_srtperslid_omschrijving;
|
||
|
||
SELECT x.prs_afdeling_naam, COUNT ( * )
|
||
FROM fac_imp_perslid x
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_naam = x.prs_afdeling_naam)
|
||
GROUP BY x.prs_afdeling_naam;
|
||
|
||
SELECT COUNT (fac_usrdata_key) et_check
|
||
FROM fac_v_aanwezigusrdata
|
||
WHERE fac_usrtab_key = 301 -- c_usrtab_employeetype_key
|
||
AND fac_usrdata_upper IN ('C', 'I', 'E', 'F', 'D', 'K', 'W');
|
||
|
||
SELECT COUNT (DISTINCT (prs_kenmerk1)) v_perslid_count_imp
|
||
FROM fac_imp_perslid
|
||
WHERE SUBSTR (prs_kenmerk1, 1, 1) IN ('C', 'I', 'E', 'F', 'D', 'K', 'W');
|
||
|
||
SELECT COUNT ( * ) FROM fac_imp_perslid;
|
||
|
||
SELECT DISTINCT prs_kenmerk1 FROM fac_imp_perslid;
|
||
|
||
SELECT COUNT (DISTINCT prs_perslid_nr) v_perslid_count_imp
|
||
FROM fac_imp_perslid
|
||
WHERE prs_kenmerk1 IN ('C', 'I', 'E', 'F', 'D', 'K', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
|
||
SELECT COUNT ( * ) v_perslid_count_fac
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_aanwezigkenmerklink kl,
|
||
fac_v_aanwezigusrdata ud
|
||
WHERE (p.prs_perslid_nr IS NOT NULL OR p.prs_perslid_oslogin IS NOT NULL)
|
||
AND p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = 1040
|
||
AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 301
|
||
AND ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'P', 'S');
|
||
|
||
SELECT (24792 / 24538) FROM DUAL;
|
||
|
||
-- Zet 'Type medewerker'-letter in personeelsnummer voor alle personen in
|
||
-- importbestand!
|
||
--UPDATE fac_imp_perslid
|
||
-- SET prs_perslid_nr = COALESCE (prs_kenmerk1, '?') || '-' || prs_perslid_nr;
|
||
|
||
-- Wis 'Type medewerker'-letter in personeelsnummer voor alle personen in
|
||
-- Facilitor! Of beter via eenmalig script?
|
||
--SELECT prs_perslid_nr, SUBSTR (prs_perslid_nr, 3)
|
||
-- FROM prs_perslid
|
||
-- WHERE prs_perslid_verwijder IS NULL
|
||
-- AND prs_perslid_nr IS NOT NULL
|
||
-- AND SUBSTR (prs_perslid_nr, 1, 2) IN ('C-', 'I-', 'E-', 'F-', 'D-', 'K-', 'W-', 'S-');
|
||
--UPDATE prs_perslid
|
||
-- SET prs_perslid_nr = SUBSTR (prs_perslid_nr, 3) --, prs_perslid_tussenvoegsel = NULL???
|
||
-- WHERE prs_perslid_verwijder IS NULL
|
||
-- AND prs_perslid_nr IS NOT NULL
|
||
-- AND SUBSTR (prs_perslid_nr, 1, 2) IN ('C-', 'I-', 'E-', 'F-', 'D-', 'K-', 'W-', 'S-');
|
||
*/
|
||
--Werkn.ID|Roepnaam|Initialen|Voorkeur achternaam|Achternaam|Tussenvoegsel|Achternaam partner|Voorvoegsel|Geslacht|Type medewerker|Kostenplaatscode|Functienaam|LocatieID|KA-account|E-mailadres
|
||
--1=219997|2=Florian|3=FR|4=ten Hagen|5=Hagen|6=ten|7|8|9=M|10=I|11=430132|12=sr. functioneelbeheerder CC|13=GAMSG0|14=FHA038|15=Florian.tenHagen@uwv.nl
|
||
CREATE OR REPLACE PROCEDURE uwva_import_pshcm (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Geslacht-kolom op F wijzigen naar V!
|
||
v_errormsg := 'Fout bijwerken geslacht (F->V)';
|
||
UPDATE fac_imp_file
|
||
SET fac_imp_file_line =
|
||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, '|', 1, 8))
|
||
|| 'V'
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, '|', 1, 9))
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1 AND SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, '|', 1, 8) + 1, 1) = 'F';
|
||
|
||
-- Generieke import.
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
||
--'%Werkn.ID|Roepnaam|Initialen|Voorkeur achternaam|Achternaam|Tussenvoegsel|Achternaam partner|Voorvoegsel|Geslacht|Type medewerker|Kostenplaatscode|Functienaam|LocatieID|KA-account|E-mailadres%'
|
||
v_errormsg := 'Fout inlezen PSHCM-bestand';
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;11;4;0;2;' -- 11=Kostenplaatscode[63 nieuwe afdelingen???]/4=Voorkeur achternaam/2=Roepnaam
|
||
|| '3;0;0;0;9;0;0;15;0;1;' -- 3=Initialen/9=Geslacht/15=E-mailadres/1=Werkn.ID
|
||
|| '12;14;0;0;0;0;10;13;5;6;' -- 12=Functienaam[41 nieuwe functies???]/14=KA-account/10=Type medewerker/13=LocatieID[altijd gevuld???]/5=Achternaam/6=Tussenvoegsel
|
||
|| '7;8;0;0;0;0;0;0;0;0;' -- 7=Achternaam partner/8=Voorvoegsel [partner]
|
||
|| '0;0;0;0;0;0',
|
||
'%Werkn.ID|Roepnaam|Initialen|Voorkeur achternaam|Achternaam|Tussenvoegsel|Achternaam partner|Voorvoegsel|Geslacht|Type medewerker|Kostenplaatscode|Functienaam|LocatieID|KA-account|E-mailadres%');
|
||
|
||
-- prs_perslid_naam = Voorkeur achternaam (voorheen Prefname)
|
||
-- prs_perslid_tussenvoegsel = [initieel leeg!]
|
||
-- prs_kenmerk3 = Achternaam (voorheen Lastname)
|
||
-- prs_kenmerk4 = Tussenvoegsel (voorheen Prefix)
|
||
-- prs_kenmerk5 = Achternaam partner (voorheen Spousename)
|
||
-- prs_kenmerk6 = Voorvoegsel (voorheen Spouseprefix)
|
||
/*
|
||
DECODE (
|
||
COALESCE (INSTR (prefname, spousename), 0),
|
||
0, TRIM (prefix),
|
||
DECODE (
|
||
INSTR (prefname, lastname),
|
||
0, TRIM (spouseprefix),
|
||
CASE
|
||
WHEN INSTR (prefname, lastname) <= INSTR (prefname, spousename)
|
||
THEN
|
||
TRIM (prefix)
|
||
ELSE
|
||
TRIM (spouseprefix)
|
||
END))
|
||
prs_perslid_tussenvoegsel,
|
||
*/
|
||
v_errormsg := 'Fout bijwerken tussenvoegsel';
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_tussenvoegsel =
|
||
DECODE (
|
||
COALESCE (INSTR (i.prs_perslid_naam, i.prs_kenmerk5), 0),
|
||
0, TRIM (i.prs_kenmerk4),
|
||
DECODE (
|
||
INSTR (i.prs_perslid_naam, i.prs_kenmerk3),
|
||
0, TRIM (i.prs_kenmerk6),
|
||
CASE
|
||
WHEN INSTR (i.prs_perslid_naam, i.prs_kenmerk3) <= INSTR (i.prs_perslid_naam, i.prs_kenmerk5)
|
||
THEN
|
||
TRIM (i.prs_kenmerk4)
|
||
ELSE
|
||
TRIM (i.prs_kenmerk6)
|
||
END))
|
||
WHERE i.fac_import_key = p_import_key;
|
||
|
||
v_errormsg := 'Fout bijwerken achternaam';
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_naam =
|
||
DECODE (
|
||
SUBSTR (i.prs_perslid_naam, 1, COALESCE (LENGTH (i.prs_perslid_tussenvoegsel), 60)),
|
||
i.prs_perslid_tussenvoegsel, TRIM(SUBSTR (i.prs_perslid_naam, LENGTH (i.prs_perslid_tussenvoegsel) + 1)),
|
||
i.prs_perslid_naam)
|
||
WHERE i.fac_import_key = p_import_key;
|
||
|
||
v_errormsg := 'Fout bijwerken rest';
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_oslogin = (SELECT MIN (COALESCE (prs_perslid_oslogin, i.prs_perslid_oslogin)) FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr),
|
||
i.prs_perslid_dienstverband = (SELECT MIN (COALESCE (prs_perslid_dienstverband, i.prs_perslid_dienstverband)) FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr),
|
||
i.prs_perslid_telefoonnr = (SELECT MIN (COALESCE (prs_perslid_telefoonnr, i.prs_perslid_telefoonnr)) FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr),
|
||
i.prs_perslid_mobiel = (SELECT MIN (COALESCE (prs_perslid_mobiel, i.prs_perslid_mobiel)) FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr),
|
||
i.prs_perslid_email = (SELECT MIN (COALESCE (prs_perslid_email, i.prs_perslid_email)) FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.fac_import_key = p_import_key
|
||
AND EXISTS (SELECT 1 FROM prs_v_aanwezigperslid WHERE prs_perslid_nr = i.prs_perslid_nr);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces personen afgebroken!');
|
||
END uwva_import_pshcm;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_pshcm (p_import_key IN NUMBER)
|
||
AS
|
||
c_employeetype_key NUMBER (10) := 1040; -- Type Medewerker/C(ontract), I(ntern), E(xtern), F(lexplek), D(ummy), K(etenpartner), W(onga)=P en S(?)
|
||
c_usrtab_employeetype_key NUMBER (10) := 301; -- Type_medewerker
|
||
c_usrdata_onbekend_key NUMBER (10) := 4889;
|
||
c_usrdata_onbekend_omschr VARCHAR2 (60) := 'ONBEKEND';
|
||
c_usrtab_pandcoderegio_key NUMBER (10) := 782;
|
||
c_usrtab_regiovinder_key NUMBER (10) := 783;
|
||
c_regio_key NUMBER (10) := 1193;
|
||
c_maxvariation NUMBER := 20;
|
||
c_def_pandcode_ketenpartner VARCHAR2 (6) := 'GAMSG3';
|
||
c_srtgebouw_default NUMBER := 1;
|
||
c_verdieping_omschr_default VARCHAR2 (30) := 'BG';
|
||
c_ruimte_code VARCHAR2 (12) := '_000';
|
||
c_ruimte_omschr_default VARCHAR2 (30) := 'Onbekend';
|
||
c_commitbuffer NUMBER (10) := 5000; -- Om de zoveel committen
|
||
|
||
-- Voor budgethouders (uit voormalige budgethouderimport)
|
||
c_kpn_maxvariation NUMBER := 0.5; -- Max new/old ratio to prevent undesired changes
|
||
c_grp_budgh_key NUMBER := 1061;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_count_cursor NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
v_perslid_count_imp NUMBER;
|
||
v_perslid_count_fac NUMBER;
|
||
v_budgethouder_key NUMBER (10);
|
||
v_aktie VARCHAR2 (10);
|
||
v_update BOOLEAN;
|
||
v_new_gebouw_key NUMBER (10);
|
||
v_gebouw_code VARCHAR2 (12);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_ruimte_nr VARCHAR2 (20);
|
||
|
||
-- Voor budgethouders (uit voormalige budgethouderimport)
|
||
l_oldcount NUMBER;
|
||
l_impcount NUMBER;
|
||
l_impcount_prj NUMBER;
|
||
nrbh1 NUMBER;
|
||
nrbh2 NUMBER;
|
||
|
||
v_time VARCHAR2 (50);
|
||
|
||
-- Verwijderen personen die niet meer in importbestand voorkomen.
|
||
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
||
CURSOR c_prs_del
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_nr,
|
||
COUNT (vp.prs_perslid_key) verplichtingen
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_aanwezigkenmerklink tm,
|
||
fac_v_aanwezigusrdata tm_ud,
|
||
prs_v_verplichting_keys vp
|
||
WHERE p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor??? K wordt niet verwijderd (en via PSHCM vooralsnog ook niet meer aangeleverd)!
|
||
AND p.prs_perslid_key = vp.prs_perslid_key(+)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (p.prs_perslid_nr))
|
||
GROUP BY p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_nr
|
||
ORDER BY 1;
|
||
|
||
-- Wijzigen kenmerkveld=Type medewerker.
|
||
CURSOR c_prs_upd_typemdw
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_nr,
|
||
tm_ud.fac_usrdata_code old_type,
|
||
x.prs_kenmerk1 new_type,
|
||
(SELECT fac_usrdata_key
|
||
FROM fac_v_aanwezigusrdata
|
||
WHERE fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND fac_usrdata_code = x.prs_kenmerk1)
|
||
new_type_key
|
||
FROM fac_imp_perslid x,
|
||
prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT *
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = c_employeetype_key) tm,
|
||
(SELECT *
|
||
FROM fac_v_aanwezigusrdata
|
||
WHERE fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S')) tm_ud -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
WHERE x.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = tm.prs_link_key(+)
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key(+)
|
||
AND COALESCE (tm_ud.fac_usrdata_code, '#') != x.prs_kenmerk1
|
||
ORDER BY 1;
|
||
|
||
-- Afnemen budgethouderschap/mandaat als afdeling gewijzigd.
|
||
CURSOR c_prs_upd_mandaat
|
||
IS
|
||
SELECT '[' || x.prs_perslid_naam_full || '|' || x.prs_perslid_nr || '] '
|
||
aanduiding,
|
||
x.prs_perslid_key,
|
||
fac.safe_to_number (x.prs_kenmerk7) old_afdeling_key,
|
||
kp.budgethouderschap,
|
||
pk.mandaat
|
||
FROM (SELECT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_nr,
|
||
x.prs_kenmerk7
|
||
FROM fac_imp_perslid x,
|
||
prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_aanwezigkenmerklink tm,
|
||
fac_v_aanwezigusrdata tm_ud
|
||
WHERE x.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_afdeling_key != fac.safe_to_number (x.prs_kenmerk7)) x
|
||
LEFT JOIN ( SELECT prs_perslid_key, COUNT ( * ) budgethouderschap
|
||
FROM prs_v_aanwezigkostenplaats
|
||
GROUP BY prs_perslid_key) kp
|
||
ON x.prs_perslid_key = kp.prs_perslid_key
|
||
LEFT JOIN ( SELECT prs_perslid_key, COUNT ( * ) mandaat
|
||
FROM prs_perslidkostenplaats
|
||
GROUP BY prs_perslid_key) pk
|
||
ON x.prs_perslid_key = pk.prs_perslid_key
|
||
WHERE kp.budgethouderschap > 0 OR pk.mandaat > 0
|
||
ORDER BY 1;
|
||
|
||
-- Bijwerken HRM-WP van personen uit import volgens ontvangen pandcode.
|
||
CURSOR c_prs_wp
|
||
IS
|
||
SELECT hrmloc.prs_perslid_key,
|
||
hrmloc.alg_locatie_key,
|
||
hrmloc.alg_gebouw_key,
|
||
hrmloc.pandcode,
|
||
hrmloc.employeetype,
|
||
hrmloc.aanduiding,
|
||
COALESCE (hrmall.aant, 0) hrmall_wp_aant,
|
||
hrmall.pw_key hrmall_pw_key,
|
||
COALESCE (faclo1.aant, 0) facloc_wp_aant,
|
||
faclo2.pw_key facloc_pw_key,
|
||
faclo2.volgnr facloc_volgnr,
|
||
COALESCE (facall.aant, 0) facall_wp_aant,
|
||
facall.pw_key facall_pw_key
|
||
FROM (SELECT DISTINCT
|
||
p.prs_perslid_key,
|
||
l.alg_locatie_key,
|
||
g.alg_gebouw_key,
|
||
prs_kenmerk2 pandcode, -- LocatieID=Gebouwkostenplaats!
|
||
tm_ud.fac_usrdata_code employeetype,
|
||
'[' || p.prs_perslid_naam || '|' || p.prs_perslid_nr || '|' || p.prs_perslid_oslogin || '|' || l.alg_locatie_code || '] '
|
||
aanduiding
|
||
FROM fac_imp_perslid x,
|
||
prs_v_aanwezigperslid p,
|
||
prs_v_aanwezigkostenplaats kp,
|
||
alg_v_aanweziggebouw g,
|
||
alg_locatie l,
|
||
prs_v_aanwezigkenmerklink tm,
|
||
fac_v_aanwezigusrdata tm_ud
|
||
WHERE x.prs_perslid_nr = p.prs_perslid_nr
|
||
AND x.prs_kenmerk2 = kp.prs_kostenplaats_nr
|
||
AND kp.prs_kostenplaats_key = g.prs_kostenplaats_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S')) hrmloc -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
LEFT JOIN ( SELECT pw.prs_perslid_key,
|
||
COUNT ( * ) aant, -- >1 -> PW-key irrelevant
|
||
MAX (pw.prs_perslidwerkplek_key) pw_key
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp
|
||
WHERE pw.prs_perslidwerkplek_volgnr = 2
|
||
AND pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_werkplek_virtueel = 0
|
||
GROUP BY pw.prs_perslid_key) hrmall
|
||
ON hrmloc.prs_perslid_key = hrmall.prs_perslid_key
|
||
LEFT JOIN ( SELECT pw.prs_perslid_key,
|
||
g.alg_locatie_key,
|
||
COUNT ( * ) aant -- >1 -> PW/volgnr RELEVANT!
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_v_onrgoed_boom ogb, alg_v_aanweziggebouw g
|
||
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_werkplek_virtueel = 0
|
||
AND wp.prs_alg_ruimte_key = ogb.alg_ruimte_key
|
||
AND ogb.alg_gebouw_key = g.alg_gebouw_key
|
||
GROUP BY pw.prs_perslid_key, g.alg_locatie_key) faclo1
|
||
ON hrmloc.prs_perslid_key = faclo1.prs_perslid_key
|
||
AND hrmloc.alg_locatie_key = faclo1.alg_locatie_key
|
||
LEFT JOIN (SELECT pw.prs_perslid_key,
|
||
g.alg_locatie_key,
|
||
pw.prs_perslidwerkplek_key pw_key, -- Laagste/oudste PW!
|
||
pw.prs_perslidwerkplek_volgnr volgnr -- Ter info: volgnr
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_v_onrgoed_boom ogb, alg_v_aanweziggebouw g
|
||
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_werkplek_virtueel = 0
|
||
AND wp.prs_alg_ruimte_key = ogb.alg_ruimte_key
|
||
AND ogb.alg_gebouw_key = g.alg_gebouw_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek pw2, prs_werkplek wp2, alg_v_onrgoed_boom ogb2, alg_v_aanweziggebouw g2
|
||
WHERE pw2.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw2.prs_werkplek_key = wp2.prs_werkplek_key
|
||
AND wp2.prs_werkplek_virtueel = 0
|
||
AND wp2.prs_alg_ruimte_key = ogb2.alg_ruimte_key
|
||
AND ogb2.alg_gebouw_key = g2.alg_gebouw_key
|
||
AND g2.alg_locatie_key = g.alg_locatie_key
|
||
AND COALESCE (pw2.prs_perslidwerkplek_volgnr, 10000 + pw2.prs_perslidwerkplek_key) <
|
||
COALESCE (pw.prs_perslidwerkplek_volgnr, 10000 + pw.prs_perslidwerkplek_key))) faclo2
|
||
ON hrmloc.prs_perslid_key = faclo2.prs_perslid_key
|
||
AND hrmloc.alg_locatie_key = faclo2.alg_locatie_key
|
||
LEFT JOIN ( SELECT pw.prs_perslid_key,
|
||
COUNT ( * ) aant, -- >1 -> PW-key irrelevant
|
||
MAX (pw.prs_perslidwerkplek_key) pw_key
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp
|
||
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_werkplek_virtueel = 0
|
||
GROUP BY pw.prs_perslid_key) facall
|
||
ON hrmloc.prs_perslid_key = facall.prs_perslid_key
|
||
WHERE COALESCE (hrmall.aant, 0) != 1 -- Geen/teveel HRM-WP
|
||
OR COALESCE (faclo1.aant, 0) != 1 -- Geen/teveel WP op HRM-locatie
|
||
OR COALESCE (hrmall.pw_key, 0) != COALESCE (faclo2.pw_key, 0) -- Niet dezelfde?
|
||
;
|
||
-- UWVA#20232: Bijwerken Regio-kenmerkveld van personen uit import als deze
|
||
-- leeg is of afwijkt van het gebouw waar ze zitten (hun HRM-WP
|
||
-- hebben).
|
||
CURSOR c_prs_regio
|
||
IS
|
||
SELECT '[' || TO_CHAR (hpw.prs_perslid_key) || '|' || r.prs_kenmerklink_waarde || '|' || COALESCE (rv.fac_usrdata_omschr, c_usrdata_onbekend_omschr) || '] '
|
||
aanduiding,
|
||
hpw.prs_perslid_key,
|
||
g.alg_gebouw_code,
|
||
r.prs_kenmerklink_key,
|
||
COALESCE (rv.fac_usrdata_key, c_usrdata_onbekend_key) fac_usrdata_key,
|
||
COALESCE (rv.fac_usrdata_omschr, c_usrdata_onbekend_omschr) fac_usrdata_omschr
|
||
FROM prs_v_hoofdperslidwerkplek hpw,
|
||
prs_v_aanwezigkenmerklink tm, -- Type Medwerker
|
||
fac_v_aanwezigusrdata tm_ud,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_regio_key) r, -- WAS
|
||
prs_werkplek w,
|
||
alg_v_onrgoed_boom ogb,
|
||
alg_gebouw g,
|
||
(SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = c_usrtab_pandcoderegio_key) pcr,
|
||
(SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = c_usrtab_regiovinder_key) rv -- WORDT
|
||
WHERE hpw.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND hpw.prs_perslid_key = r.prs_link_key(+)
|
||
AND hpw.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = ogb.alg_ruimte_key
|
||
AND ogb.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_gebouw_code = pcr.fac_usrdata_code(+)
|
||
AND pcr.fac_usrdata_omschr = rv.fac_usrdata_omschr(+)
|
||
AND (r.prs_kenmerklink_waarde IS NULL OR fac.safe_to_number (r.prs_kenmerklink_waarde) != COALESCE (rv.fac_usrdata_key, c_usrdata_onbekend_key))
|
||
ORDER BY 1;
|
||
|
||
-- UWVA#20033: Bijwerken functienamen (hoofdletters matchen).
|
||
CURSOR c_functie
|
||
IS
|
||
SELECT DISTINCT sp.prs_srtperslid_key, x.prs_srtperslid_omschrijving funcdscr
|
||
FROM prs_srtperslid sp, fac_imp_perslid x
|
||
WHERE sp.prs_srtperslid_upper = UPPER (x.prs_srtperslid_omschrijving)
|
||
AND sp.prs_srtperslid_omschrijving != x.prs_srtperslid_omschrijving;
|
||
|
||
-- UWVA#23788: Loggen pandcodes (incl. aantal personen) in importbestand,
|
||
-- waarvoor geen kostenplaats en/of gebouw kan worden bepaald.
|
||
CURSOR c_pandcode_onbekend
|
||
IS
|
||
SELECT x.prs_kenmerk2 pandcode, kp.prs_kostenplaats_nr, COUNT (*) aantal
|
||
FROM fac_imp_perslid x, prs_v_aanwezigkostenplaats kp, alg_v_aanweziggebouw g
|
||
WHERE x.prs_kenmerk2 IS NOT NULL
|
||
AND x.prs_kenmerk2 = kp.prs_kostenplaats_nr(+)
|
||
AND kp.prs_kostenplaats_key = g.prs_kostenplaats_key(+)
|
||
AND g.alg_gebouw_key IS NULL
|
||
GROUP BY x.prs_kenmerk2, kp.prs_kostenplaats_nr
|
||
ORDER BY 1;
|
||
/*
|
||
-- UWVA#20021: Voormalige budgethouderimport, zover de relatie kostenplaats
|
||
-- en persoon (evt. leeg) kan worden gelegd.
|
||
CURSOR c_budgethouder
|
||
IS
|
||
SELECT kp.prs_kostenplaats_key,
|
||
imp.afdeling prs_kostenplaats_nr,
|
||
p.prs_perslid_key,
|
||
imp.perslid_nr imp_perslid_nr,
|
||
imp.mandaatcode imp_mandaatcode
|
||
FROM uwva_imp_kpn imp, prs_v_aanwezigkostenplaats kp, prs_v_aanwezigperslid p
|
||
WHERE imp.afdeling = kp.prs_kostenplaats_nr
|
||
AND imp.perslid_nr = p.prs_perslid_nr(+)
|
||
ORDER BY 2;
|
||
|
||
-- Logging onbekende kostenplaatsen.
|
||
CURSOR c_kpn_onbekend
|
||
IS
|
||
SELECT kp.prs_kostenplaats_key,
|
||
imp.afdeling prs_kostenplaats_nr,
|
||
imp.perslid_nr prs_perslid_nr
|
||
FROM uwva_imp_kpn imp, prs_v_aanwezigkostenplaats kp
|
||
WHERE imp.afdeling = kp.prs_kostenplaats_nr(+)
|
||
AND kp.prs_kostenplaats_nr IS NULL
|
||
AND imp.afdeling IS NOT NULL
|
||
AND imp.status = 'A'
|
||
ORDER BY 2;
|
||
*/
|
||
-- Nieuwe werkplek aanmaken voor persoon en eventuele oude werkplek daarna
|
||
-- verwijderen.
|
||
PROCEDURE uwva_upsert_wp (in_perslid_key IN NUMBER,
|
||
in_ruimte_key IN NUMBER,
|
||
in_ruimte_nr IN VARCHAR2,
|
||
in_wp_oud_key IN NUMBER)
|
||
AS
|
||
v_werkplek_volgnr NUMBER (10);
|
||
v_new_werkplek_key NUMBER (10);
|
||
BEGIN
|
||
-- UWVA#21256: Bepaal laagst beschikbare WP-volgnr (om te voorkomen dat
|
||
-- WP-volgnr hoger wordt dan past in prs_werkplek_volgnr).
|
||
v_errormsg := 'Fout bepalen volgnummer nieuwe werkplek in ruimte ' || in_ruimte_nr;
|
||
SELECT COALESCE (MIN (pw1.prs_werkplek_volgnr), 0) + 1
|
||
INTO v_werkplek_volgnr
|
||
FROM prs_werkplek pw1
|
||
WHERE pw1.prs_alg_ruimte_key = in_ruimte_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_werkplek pw2
|
||
WHERE pw2.prs_alg_ruimte_key = pw1.prs_alg_ruimte_key
|
||
AND pw2.prs_werkplek_volgnr = pw1.prs_werkplek_volgnr + 1);
|
||
|
||
v_errormsg := 'Fout toevoegen nieuwe werkplek in ruimte ' || in_ruimte_nr;
|
||
INSERT INTO prs_werkplek (prs_werkplek_module,
|
||
prs_werkplek_volgnr,
|
||
prs_werkplek_omschrijving,
|
||
prs_werkplek_virtueel,
|
||
prs_alg_ruimte_key)
|
||
VALUES ('PRR',
|
||
v_werkplek_volgnr,
|
||
'',
|
||
0,
|
||
in_ruimte_key)
|
||
RETURNING prs_werkplek_key
|
||
INTO v_new_werkplek_key;
|
||
|
||
-- UWVA#21256: ABS-werkplek heeft altijd bezettingvolgnr 2.
|
||
-- Da's hoger dan Vinder-import (die gebruikt 3 en 4), maar laat 1 over
|
||
-- om handmatig een hoofdwerkplek in te stellen.
|
||
IF in_wp_oud_key IS NULL
|
||
THEN
|
||
-- Insert
|
||
v_errormsg := 'Fout koppelen persoon aan nieuwe werkplek in ruimte ' || in_ruimte_nr;
|
||
INSERT INTO prs_perslidwerkplek (prs_perslid_key,
|
||
prs_werkplek_key,
|
||
prs_perslidwerkplek_bezetting,
|
||
prs_perslidwerkplek_volgnr)
|
||
VALUES (in_perslid_key,
|
||
v_new_werkplek_key,
|
||
100,
|
||
2);
|
||
ELSE
|
||
-- Update
|
||
v_errormsg := 'Fout verplaatsen persoon naar nieuwe werkplek in ruimte ' || in_ruimte_nr;
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_perslidwerkplek_volgnr = 2,
|
||
prs_werkplek_key = v_new_werkplek_key
|
||
WHERE prs_werkplek_key = in_wp_oud_key
|
||
AND prs_perslid_key = in_perslid_key;
|
||
|
||
v_errormsg := 'Fout verwijderen oude werkplek (' || in_wp_oud_key || ')';
|
||
DELETE FROM prs_werkplek
|
||
WHERE prs_werkplek_key = in_wp_oud_key;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'uwva_upsert_wp');
|
||
END;
|
||
BEGIN
|
||
v_errormsg := 'Fout controleren inhoud';
|
||
-- Init
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Facilitor PSHCM-import versie ' || currentversion, '$Revision$');
|
||
|
||
-- Aantal potentieel matchbare personen in importbestand!
|
||
SELECT COUNT (DISTINCT prs_perslid_nr)
|
||
INTO v_perslid_count_imp
|
||
FROM fac_imp_perslid
|
||
-- WHERE prs_kenmerk1 IN ('C', 'I', 'E', 'F', 'D', 'K', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
-- Aantal potentieel matchbare personen in Facilitor!
|
||
-- WEG:Dus m<>t personeelsnummer en/of account en met juiste werknemertype.
|
||
-- Dus m<>t personeelsnummer en met juiste werknemertype.
|
||
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
||
INTO v_perslid_count_fac
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink tm, fac_v_aanwezigusrdata tm_ud
|
||
WHERE --WEG:(p.prs_perslid_nr IS NOT NULL OR p.prs_perslid_oslogin IS NOT NULL)
|
||
p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
IF ((100 * ABS (v_perslid_count_imp - v_perslid_count_fac) / v_perslid_count_fac) > c_maxvariation)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
'Verschil tussen te importeren ('
|
||
|| TO_CHAR (v_perslid_count_fac)
|
||
|| ') en actieve ('
|
||
|| TO_CHAR (v_perslid_count_imp)
|
||
|| ') personen te groot',
|
||
'Afwijking bedraagt '
|
||
|| TO_CHAR (100 * ABS (v_perslid_count_imp - v_perslid_count_fac) / v_perslid_count_fac, '9999999D9')
|
||
|| '%'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Verwijderen personen (onder import-regime) niet meer in importbestand!
|
||
FOR rec IN c_prs_del
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout verwijderen persoon ' || rec.prs_perslid_naam_full || '/' || rec.prs_perslid_nr;
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
|
||
IF rec.verplichtingen > 0 -- Actuele verplichtingen?
|
||
THEN
|
||
-- UWVA#20219: 'Toon in gids' uitvinken, ook als persoon al INACTIEF.
|
||
v_errormsg := 'Fout verwijderen gidsvermelding van ' || rec.prs_perslid_naam_full || '/' || rec.prs_perslid_nr;
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_ingids = NULL
|
||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
|
||
-- UWA#249970: Notificatie naar budgethouder.
|
||
v_errormsg := 'Fout notificeren budgethouder van ' || rec.prs_perslid_naam_full || '/' || rec.prs_perslid_nr;
|
||
SELECT kp.prs_perslid_key
|
||
INTO v_budgethouder_key
|
||
FROM prs_perslid p, prs_afdeling a, prs_kostenplaats kp
|
||
WHERE p.prs_perslid_key = rec.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key;
|
||
|
||
fac.putnotificationsrtprio (88602, -- pfrom (UWVA#37656: Met usesenderasreplyto=true haalt psender niets uit en moet pfrom zijn gevuld: 88602=_EMAIL-user)
|
||
v_budgethouder_key, -- pto
|
||
'CUST21', -- pcode
|
||
1675, -- pref (naar UWVA_V_RAP_UITDIENST)
|
||
NULL, -- poptmessage
|
||
NULL, -- poptstatus
|
||
NULL, -- poptemail
|
||
NULL, -- poptmobile
|
||
rec.prs_perslid_key, -- pxref
|
||
2, -- pprio
|
||
'infobeheer.fi@uwv.nl'); -- psender
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'Verwijderen personen');
|
||
END;
|
||
END LOOP;
|
||
/*
|
||
-- Markeren nieuwe medewerkers in fac_imp_perslid/prs_kenmerk2 voordat deze
|
||
-- worden aangemaakt via prs.update_perslid() en niet te onderscheiden zijn
|
||
-- van bijgewerkte medewerkers (behalve op datum?)!
|
||
UPDATE fac_imp_perslid x
|
||
SET x.prs_kenmerkx = 'Nieuw'
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl, fac_v_aanwezigusrdata ud, prs_afdeling a
|
||
WHERE p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND p.prs_perslid_nr = x.prs_perslid_nr);
|
||
-- TODO:Logging???
|
||
*/
|
||
-- Bewaren huidige afdeling in fac_imp_perslid/prs_kenmerk7 voordat deze
|
||
-- zou kunnen worden gewijzigd via prs.update_perslid()!
|
||
v_errormsg := 'Fout bewaren huidige afdeling';
|
||
UPDATE fac_imp_perslid x
|
||
SET x.prs_kenmerk7 =
|
||
(SELECT TO_CHAR (a.prs_afdeling_key)
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl, fac_v_aanwezigusrdata ud, prs_afdeling a
|
||
WHERE p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND p.prs_perslid_nr = x.prs_perslid_nr)
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl, fac_v_aanwezigusrdata ud, prs_afdeling a
|
||
WHERE p.prs_perslid_key = kl.prs_link_key
|
||
AND kl.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
AND p.prs_perslid_nr = x.prs_perslid_nr);
|
||
-- TODO:Logging???
|
||
|
||
-- Generieke update op personeelsnummer (NR), geen WPs verwijderen (NULL)
|
||
-- en incl. kenmerkvelden (1)!
|
||
v_errormsg := 'Fout generieke update';
|
||
prs.update_perslid (p_import_key, 'NR', NULL, 1);
|
||
|
||
-- *** Bijwerken persoonsgegevens (niet ondersteund door standaard import).
|
||
-- Wijzigen persoonskenmerk=Type medewerker.
|
||
v_count_cursor := 0;
|
||
v_errormsg := 'Fout bijwerken Type medewerker';
|
||
FOR rec IN c_prs_upd_typemdw
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '[' || rec.prs_perslid_naam_full || '|' || rec.prs_perslid_nr || '] Fout bijwerken kenmerk=Type medewerker';
|
||
prs.upsertkenmerk (c_employeetype_key, rec.prs_perslid_key, rec.new_type_key); -- Type medewerker
|
||
v_count_cursor := v_count_cursor + 1;
|
||
END;
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', 'Type medewerker/#bijgewerkt: ' || TO_CHAR (v_count_cursor), '');
|
||
|
||
-- Afnemen gidsvermelding voor - nieuw aangemaakte! - K(etenpartners).
|
||
-- TODO:Alleen initieel???
|
||
v_errormsg := 'Fout afnemen gidsvermelding voor K(etenpartners)';
|
||
UPDATE prs_perslid p
|
||
SET prs_perslid_ingids = NULL
|
||
WHERE p.prs_perslid_aanmaak > SYSDATE - (1 / 24) -- Afgelopen uur aangemaakt (beetje sketchy, maar vooruit)
|
||
AND EXISTS -- In importbestand
|
||
(SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE prs_perslid_nr = p.prs_perslid_nr)
|
||
AND EXISTS -- K(etenpartner)
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigkenmerklink kl, fac_v_aanwezigusrdata ud
|
||
WHERE kl.prs_kenmerk_key = c_employeetype_key
|
||
AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_code = 'K'
|
||
AND kl.prs_link_key = p.prs_perslid_key);
|
||
-- TODO:Logging???
|
||
|
||
-- Afnemen/toekennen Medewerker-groep (key=1601) aan iedereen met een Type
|
||
-- medewerker gezet op 'C', 'I', 'E', 'F', 'D', 'K', 'W', 'P' of 'S'!
|
||
v_errormsg := 'Fout afnemen Medewerker-autorisatiegroep';
|
||
DELETE FROM fac_gebruikersgroep gg
|
||
WHERE gg.fac_groep_key = 1601 -- Medewerker-autorisatiegroep
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid x, prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink tm, fac_v_aanwezigusrdata tm_ud
|
||
WHERE x.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND p.prs_perslid_key = x.prs_perslid_key);
|
||
-- TODO:Logging???
|
||
|
||
v_errormsg := 'Fout toekennen Medewerker-autorisatiegroep';
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 1601, p.prs_perslid_key -- Medewerker-autorisatiegroep
|
||
FROM fac_imp_perslid x, prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink tm, fac_v_aanwezigusrdata tm_ud
|
||
WHERE x.prs_perslid_nr = p.prs_perslid_nr
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND NOT EXISTS -- Niet al in Medewerker-autorisatiegroep!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 1601 -- Medewerker-autorisatiegroep
|
||
AND prs_perslid_key = p.prs_perslid_key);
|
||
-- TODO:Logging???
|
||
|
||
-- Afnemen budgethouderschap/mandaat als afdeling gewijzigd en voorbereiden
|
||
-- CUST13.
|
||
-- UWVA#22892: Verwijder eerst de bewaarde mandaten (Eigen tabel met key=3)
|
||
-- en rapportage-links (hidden kenmerk met key=1111) uit
|
||
-- voorgaande import. Per persoon die deze run naar een andere
|
||
-- afdeling verhuist, worden weer nieuwe records toegevoegd.
|
||
v_errormsg := 'Fout afnemen budgethouderschap/mandaat';
|
||
DELETE FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 3;
|
||
|
||
DELETE FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_niveau = 'P' AND prs_kenmerk_key = 1111;
|
||
|
||
v_count_cursor := 0;
|
||
FOR rec IN c_prs_upd_mandaat
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout verwijderen budgethouderschap';
|
||
IF COALESCE (rec.budgethouderschap, 0) > 0
|
||
THEN
|
||
UPDATE prs_kostenplaats
|
||
SET prs_perslid_key = NULL
|
||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', rec.aanduiding || 'Budgethouderschap/#vervallen: ' || TO_CHAR (rec.budgethouderschap), 'Mandaatschoning');
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout verwijderen mandaat';
|
||
IF COALESCE (rec.mandaat, 0) > 0
|
||
THEN
|
||
-- UWVA#22892: Bewaren - deze PSHCM-import! - verwijderde mandaten
|
||
-- tbv. CUST13-noti en link persoon aan rapportage met
|
||
-- verwijderde mandaten (met key=555).
|
||
INSERT INTO fac_usrdata (fac_usrtab_key,
|
||
fac_usrdata_code,
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_volgnr,
|
||
fac_usrdata_prijs)
|
||
SELECT 3, -- MANDAATREMINDER
|
||
TO_CHAR (pk.prs_perslid_key) || '-' || TO_CHAR (COALESCE (pk.prs_kostenplaats_key, 0)),
|
||
TO_CHAR (rec.old_afdeling_key), -- Oude afdeling
|
||
COALESCE (pk.prs_perslidkostenplaats_boeken, 0),
|
||
COALESCE (pk.prs_perslidkostenplaats_inzage, 0)
|
||
FROM prs_perslidkostenplaats pk, prs_kostenplaats kp
|
||
WHERE pk.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
AND pk.prs_perslid_key = rec.prs_perslid_key
|
||
ORDER BY pk.prs_perslid_key, pk.prs_kostenplaats_key;
|
||
|
||
INSERT INTO prs_kenmerklink (prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerk_key,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (rec.prs_perslid_key,
|
||
'P',
|
||
1111, -- MANDAATREMINDER
|
||
'555'); -- UWVA_V_RAP_GESCHOOND_MANDAAT
|
||
|
||
DELETE FROM prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', rec.aanduiding || 'Mandaat/#vervallen: ' || TO_CHAR (rec.mandaat), 'Mandaatschoning');
|
||
END IF;
|
||
|
||
v_count_cursor := v_count_cursor + 1;
|
||
END;
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', 'Mandaatschoning/#personen: ' || TO_CHAR (v_count_cursor), '');
|
||
|
||
-- UWVA#30547: K(etenpartners) krijgen geen (zelden een) locatie mee vanuit
|
||
-- PSHCM, maar moeten wel een werkplek in AMSG3 krijgen, met in basis
|
||
-- dezelfde voorwaarden als een normale HRM-werkplek. Verschil is dat een
|
||
-- normale HRM-werkplek wordt toegewezen in het eerste gebouw op de locatie
|
||
-- (hier AMSG0), terwijl dat hier expliciet AMSG3 moet zijn. Daarom in de
|
||
-- importtabel voor alle K-personen GAMSG3 invullen, zodat de locatie klopt
|
||
-- en daarna bij het bepalen van het gebouw hard AMSG3 gebruiken ipv. 'het
|
||
-- eerste gebouw'. De rest gaat daarna vanzelf.
|
||
v_errormsg := 'Fout toewijzen AMSG3-werkplek voor K(etenpartners)';
|
||
UPDATE fac_imp_perslid
|
||
SET prs_kenmerk2 = c_def_pandcode_ketenpartner
|
||
WHERE prs_kenmerk1 = 'K' AND prs_kenmerk2 IS NULL;
|
||
|
||
-- Bijwerken HRM-WP van personen uit import volgens ontvangen pandcode.
|
||
-- Cursor levert alleen personen waarvoor iets moet gebeuren!
|
||
v_count_cursor := 0;
|
||
v_errormsg := 'Fout bijwerken HRM-WP';
|
||
FOR rec_wp IN c_prs_wp
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'NONE';
|
||
v_aktie := 'NONE';
|
||
|
||
-- Eerst eens de huidige HRM-WP(s) opruimen, tenzij dit toevallig de
|
||
-- laagste/oudste WP op beoogde HRM-locatie is (dan behouden).
|
||
-- Per 5.3.2/FSN#26947 verdwijnt via trigger vanzelf de bezetting!
|
||
v_errormsg := 'Fout verwijderen (oude) HRM-WP(s)';
|
||
DELETE FROM prs_werkplek wp
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_perslid_key = rec_wp.prs_perslid_key
|
||
AND pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND pw.prs_perslidwerkplek_volgnr = 2
|
||
AND pw.prs_perslidwerkplek_key != COALESCE (rec_wp.facloc_pw_key, 0));
|
||
|
||
-- Gekke situatie (zou niet mogen voorkomen), maar even loggen.
|
||
IF (rec_wp.hrmall_wp_aant > 1)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', rec_wp.aanduiding || '>1 HRM-WP; opruiming uitgevoerd!', 'WP');
|
||
END IF;
|
||
|
||
-- Het aantal WP(s) op HRM-locatie bepaalt wat er moet gebeuren.
|
||
IF (rec_wp.facloc_wp_aant = 0) -- Geen enkele WP op HRM-locatie!
|
||
THEN
|
||
-- Als persoon totaal maar 1 WP had, dan "verhuist" die nu naar de
|
||
-- nieuwe HRM-WP (en blijft het totaal bij 1 WP).
|
||
-- Was die ene WP een HRM-WP, dan is die hierboven reeds opgeruimd
|
||
-- (en hoeft dat hier niet nog eens).
|
||
IF (rec_wp.facall_wp_aant = 1 AND rec_wp.hrmall_wp_aant <> 1)
|
||
THEN
|
||
-- Per 5.3.2 verdwijnt via trigger vanzelf de bezetting!
|
||
v_errormsg := 'Fout verwijderen enige WP op andere locatie';
|
||
DELETE FROM prs_werkplek wp
|
||
WHERE prs_werkplek_key =
|
||
(SELECT prs_werkplek_key
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslidwerkplek_key = rec_wp.facall_pw_key);
|
||
END IF;
|
||
|
||
v_aktie := 'INSERT';
|
||
ELSE -- Een of meer WP op HRM-locatie!
|
||
v_errormsg := 'Fout promoveren WP op HRM-locatie';
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_perslidwerkplek_volgnr = 2
|
||
WHERE prs_perslidwerkplek_key = rec_wp.facloc_pw_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', rec_wp.aanduiding || 'Bestaande WP op HRM-locatie naar 2', 'WP');
|
||
|
||
IF (rec_wp.facloc_wp_aant > 1) -- Teveel WP op HRM-locatie!
|
||
THEN
|
||
-- Per 5.3.2 verdwijnt via trigger vanzelf de bezetting!
|
||
v_errormsg := 'Fout verwijderen overige WP op HRM-locatie';
|
||
DELETE FROM prs_werkplek wp
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_perslid_key = rec_wp.prs_perslid_key
|
||
AND pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND pw.prs_perslidwerkplek_key != rec_wp.facloc_pw_key);
|
||
|
||
fac.imp_writelog (p_import_key, 'I', rec_wp.aanduiding || 'Overige WP(s) op HRM-locatie weg', 'WP');
|
||
END IF;
|
||
END IF;
|
||
|
||
v_update := TRUE;
|
||
|
||
IF (v_aktie = 'INSERT')
|
||
THEN
|
||
-- Dan hebben we hier dus te maken met een persoon die nog geen
|
||
-- HRM-WP heeft op de via pandcode voorgeschreven HRM-locatie.
|
||
-- Hier moeten we een gebouw, verdieping, ruimte en werkplek bij
|
||
-- zoeken.
|
||
BEGIN
|
||
IF (rec_wp.employeetype = 'K')
|
||
THEN
|
||
-- UWVA#30547: Voor K(etenpartners) niet 'het eerste gebouw'
|
||
-- kiezen, maar het gebouw volgens de cursor (AMGS3).
|
||
v_new_gebouw_key := rec_wp.alg_gebouw_key;
|
||
ELSE
|
||
v_errormsg := 'Fout bepalen gebouw op locatie/pandcode ' || rec_wp.alg_locatie_key || '/' || rec_wp.pandcode;
|
||
SELECT MIN (alg_gebouw_code)
|
||
INTO v_gebouw_code
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = rec_wp.alg_locatie_key
|
||
AND COALESCE (alg_gebouw_vervaldatum, SYSDATE) > TRUNC (SYSDATE);
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_new_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = rec_wp.alg_locatie_key
|
||
AND alg_gebouw_code = v_gebouw_code;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_gebouw_code := '0';
|
||
|
||
v_errormsg := 'Fout toevoegen gebouw op locatie/pandcode ' || rec_wp.alg_locatie_key || '/' || rec_wp.pandcode;
|
||
INSERT INTO alg_gebouw (alg_locatie_key,
|
||
alg_srtgebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam)
|
||
VALUES (rec_wp.alg_locatie_key,
|
||
c_srtgebouw_default,
|
||
v_gebouw_code,
|
||
'Onbekend')
|
||
RETURNING alg_gebouw_key
|
||
INTO v_new_gebouw_key;
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', rec_wp.aanduiding || v_errormsg, 'WP');
|
||
v_update := FALSE;
|
||
END;
|
||
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen verdieping in gebouw ' || v_gebouw_code;
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE alg_gebouw_key = v_new_gebouw_key
|
||
AND alg_verdieping_volgnr = 0; -- Begane grond!
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen verdieping in gebouw ' || v_gebouw_code;
|
||
INSERT INTO alg_verdieping (alg_gebouw_key,
|
||
alg_verdieping_omschrijving,
|
||
alg_verdieping_volgnr,
|
||
alg_verdieping_code)
|
||
VALUES (v_new_gebouw_key,
|
||
c_verdieping_omschr_default,
|
||
0,
|
||
'0')
|
||
RETURNING alg_verdieping_key
|
||
INTO v_verdieping_key;
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', rec_wp.aanduiding || v_errormsg, 'WP');
|
||
v_update := FALSE;
|
||
END;
|
||
END IF;
|
||
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen ruimte in gebouw ' || v_gebouw_code || ' (verdieping ' || TO_CHAR (v_verdieping_key) || ')';
|
||
SELECT alg_ruimte_key, alg_ruimte_nr
|
||
INTO v_ruimte_key, v_ruimte_nr
|
||
FROM alg_v_aanwezigruimte
|
||
WHERE alg_verdieping_key = v_verdieping_key
|
||
AND alg_ruimte_nr = c_ruimte_code;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen ruimte in gebouw ' || v_gebouw_code || ' (verdieping ' || TO_CHAR (v_verdieping_key) || ')';
|
||
INSERT INTO alg_ruimte (alg_verdieping_key,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving)
|
||
VALUES (v_verdieping_key,
|
||
c_ruimte_code,
|
||
c_ruimte_omschr_default)
|
||
RETURNING alg_ruimte_key, alg_ruimte_nr
|
||
INTO v_ruimte_key, v_ruimte_nr;
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', rec_wp.aanduiding || v_errormsg, 'WP');
|
||
v_update := FALSE;
|
||
END;
|
||
END IF;
|
||
|
||
IF v_update
|
||
THEN
|
||
uwva_upsert_wp (rec_wp.prs_perslid_key, v_ruimte_key, v_ruimte_nr, NULL);
|
||
|
||
fac.imp_writelog (p_import_key, 'I', rec_wp.aanduiding || 'HRM-WP aangemaakt', 'WP');
|
||
END IF;
|
||
END IF;
|
||
|
||
--UWVA#23124: Verhuisbericht naar intermediair Abonnementen.
|
||
--UWVA#39432: Per overgang Infotrading naar P+C ongewijzigd.
|
||
--UWVA#58768: Opschonen ABO-funtionaliteit.
|
||
|
||
v_count_cursor := v_count_cursor + 1;
|
||
IF MOD (v_count_cursor, c_commitbuffer) = 0 THEN COMMIT; END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', rec_wp.aanduiding || v_errormsg, 'WP');
|
||
END;
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', 'WP/#bijgewerkt: ' || TO_CHAR (v_count_cursor), '');
|
||
|
||
-- UWVA#20232: Bijwerken Regio-kenmerkveld van personen uit import als deze
|
||
-- leeg is of afwijkt van het gebouw waar ze zitten (hun HRM-WP
|
||
-- hebben).
|
||
v_count_cursor := 0;
|
||
FOR rec_regio IN c_prs_regio
|
||
LOOP
|
||
BEGIN
|
||
IF (rec_regio.prs_kenmerklink_key IS NULL)
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen Regio-kenmerkveld';
|
||
INSERT INTO prs_kenmerklink (prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerk_key,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (rec_regio.prs_perslid_key,
|
||
'P',
|
||
c_regio_key,
|
||
TO_CHAR (rec_regio.fac_usrdata_key));
|
||
ELSE
|
||
v_errormsg := 'Fout bijwerken Regio-kenmerkveld';
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = TO_CHAR (rec_regio.fac_usrdata_key)
|
||
WHERE prs_kenmerklink_key = rec_regio.prs_kenmerklink_key;
|
||
END IF;
|
||
|
||
v_count_cursor := v_count_cursor + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := v_errormsg || '( ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', rec_regio.aanduiding || v_errormsg, 'Regio');
|
||
END;
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', 'Regio/#bijgewerkt: ' || TO_CHAR (v_count_cursor), '');
|
||
COMMIT;
|
||
|
||
-- Loggen aantal personen voor en na import.
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink tm, fac_v_aanwezigusrdata tm_ud
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_key = tm.prs_link_key
|
||
AND tm.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (tm.prs_kenmerklink_waarde) = tm_ud.fac_usrdata_key
|
||
AND tm_ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND tm_ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
fac.imp_writelog (p_import_key, 'S', 'PSHCM-personen/#voor: ' || TO_CHAR (v_perslid_count_fac) || ' => #na: ' || TO_CHAR (v_count), '');
|
||
|
||
-- Loggen aantal personen zonder personeelsnummer.
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr IS NULL;
|
||
fac.imp_writelog (p_import_key, 'S', 'Personen/#zonder personeelsnummer: ' || TO_CHAR (v_count), '');
|
||
|
||
-- Verwijderen ongebruikte functies.
|
||
v_errormsg := 'Fout verwijderen functies';
|
||
DELETE FROM prs_srtperslid sp
|
||
WHERE NOT EXISTS (SELECT 1
|
||
FROM prs_perslid
|
||
WHERE prs_srtperslid_key = sp.prs_srtperslid_key);
|
||
|
||
-- UWVA#23714: Logisch verwijderen functies die alleen verwijderde personen
|
||
-- nog hebben.
|
||
v_errormsg := 'Fout logisch verwijderen functies';
|
||
UPDATE prs_srtperslid sp
|
||
SET sp.prs_srtperslid_verwijder = SYSDATE
|
||
WHERE sp.prs_srtperslid_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_srtperslid_key = sp.prs_srtperslid_key);
|
||
|
||
-- Ook verwijderen 'Alternatieve functie'-kenmerkvelden (key=1192) die naar
|
||
-- niet-meer-bestaande functies verwijzen.
|
||
DELETE FROM prs_kenmerklink kl
|
||
WHERE prs_kenmerk_key = 1192 -- Alternatieve functie
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND prs_srtperslid_key = fac.safe_to_number (kl.prs_kenmerklink_waarde));
|
||
|
||
-- UWVA#20033: Bijwerken functieomschrijvingen (hoofdletters matchen).
|
||
FOR rec_func IN c_functie
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout bijwerken functie: ' || rec_func.funcdscr;
|
||
UPDATE prs_srtperslid
|
||
SET prs_srtperslid_omschrijving = rec_func.funcdscr
|
||
WHERE prs_srtperslid_key = rec_func.prs_srtperslid_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' (ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'Functie');
|
||
END;
|
||
END LOOP;
|
||
|
||
-- UWVA#23788: Loggen pandcodes (incl. aantal personen) in importbestand,
|
||
-- waarvoor geen kostenplaats en/of gebouw kan worden bepaald.
|
||
FOR rec IN c_pandcode_onbekend
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout loggen onbekende pandcodes';
|
||
IF (rec.prs_kostenplaats_nr IS NULL) -- Kostenplaats onbekend?
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Kostenplaats onbekend: ' || rec.pandcode || ' (' || TO_CHAR (rec.aantal) || ' personen)', 'Pandcode onbekend');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', 'Geen gebouw met kostenplaats: ' || rec.pandcode || ' (' || TO_CHAR (rec.aantal) || ' personen)', 'Pandcode onbekend');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' (ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'Pandcode onbekend');
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Mooie plek om de telefoonnummers, faxnummers en mobiele nummers te formatteren.
|
||
uwva.format_telefoonnummers (p_import_key);
|
||
|
||
SELECT TO_CHAR (SYSDATE, 'YYYYMMDDHH24MISS')
|
||
INTO v_time
|
||
FROM DUAL;
|
||
fac.imp_writelog (p_import_key, 'S', 'Importproces PSHCM voltooid', v_time);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces PSHCM afgebroken!');
|
||
END uwva_update_pshcm;
|
||
/
|
||
|
||
-- UWVA#18115: ABS-import herzien.
|
||
-- UWVA#19010: Aanvullingen voor Vinder.
|
||
-- UWVA#79055: Meeste verplaatst naar PSHCM-import (live per 27-9-2024) en
|
||
-- daarna ABS-import omgebutst naar nieuwe formaat (4 kolommen:
|
||
-- EMPNUM;GRPFNAME;GRPID;ACCNT).
|
||
CREATE OR REPLACE PROCEDURE uwva_import_abs (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||
c_commitbuffer NUMBER := 2000; -- Om de zoveel committen
|
||
v_newline VARCHAR2 (1000); -- Import line
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_found BOOLEAN := FALSE;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_buffercount NUMBER (10) := 0;
|
||
-- De importvelden
|
||
v_empnum VARCHAR2 (100);
|
||
v_grpfname VARCHAR2 (100);
|
||
v_grpid VARCHAR2 (100);
|
||
v_account VARCHAR2 (100);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Clear my previous imported rows
|
||
DELETE FROM uwva_imp_abs;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
fac.imp_getfield (v_newline, c_delim, v_empnum);
|
||
fac.imp_getfield (v_newline, c_delim, v_grpfname);
|
||
fac.imp_getfield (v_newline, c_delim, v_grpid);
|
||
fac.imp_getfield (v_newline, c_delim, v_account);
|
||
|
||
-- Skip until the header is found
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
IF UPPER (v_empnum) = 'EMPNUM'
|
||
AND UPPER (v_grpfname) = 'GRPFNAME'
|
||
AND UPPER (v_grpid) = 'GRPID'
|
||
AND UPPER (v_account) = 'ACCNT'
|
||
THEN
|
||
header_found := TRUE;
|
||
END IF;
|
||
ELSE
|
||
INSERT INTO uwva_imp_abs (empnum, -- Personeelsnummer (zonder prefix zoals in importbestand+Facilitor)
|
||
grpfname,
|
||
grpid,
|
||
account)
|
||
VALUES (TRIM (v_empnum),
|
||
SUBSTR (v_grpfname, 1, 40),
|
||
SUBSTR (v_grpid, 1, 40),
|
||
UPPER (SUBSTR (v_account, 1, 30)));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
|
||
v_buffercount := v_buffercount + 1;
|
||
IF (v_buffercount >= c_commitbuffer)
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_found = FALSE)
|
||
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', 'Aantal ingelezen regels: ' || TO_CHAR (v_count_import), '');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces ABSIIQ afgebroken!');
|
||
END;
|
||
/
|
||
|
||
-- Functie om werknemertype te bepalen.
|
||
CREATE OR REPLACE PACKAGE uwva_abs
|
||
AS
|
||
FUNCTION get_employeetype (perslid_key IN NUMBER,
|
||
employeetype_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
END uwva_abs;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY uwva_abs
|
||
AS
|
||
FUNCTION get_employeetype (perslid_key IN NUMBER,
|
||
employeetype_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
IS
|
||
vf_employeetype VARCHAR (5) := '';
|
||
BEGIN
|
||
SELECT ud.fac_usrdata_upper
|
||
INTO vf_employeetype
|
||
FROM prs_kenmerklink km, fac_usrdata ud
|
||
WHERE km.prs_link_key = perslid_key
|
||
AND km.prs_kenmerk_key = employeetype_key
|
||
AND fac.safe_to_number (km.prs_kenmerklink_waarde) = ud.fac_usrdata_key;
|
||
RETURN vf_employeetype;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
RETURN '';
|
||
END get_employeetype;
|
||
END uwva_abs;
|
||
/
|
||
|
||
-- UWVA#18115: ABS-import herzien (en met UWVA#19010 nog Vinder-aanvullingen).
|
||
-- UWVA#79055: ABS-import gesplitst. Meeste verhuisd naar PSHCM-import en wat
|
||
-- overblijft op basis van de personeelsnummer (ipv. ABS-ID)!
|
||
CREATE OR REPLACE PROCEDURE uwva_update_abs (p_import_key IN NUMBER)
|
||
AS
|
||
-- Constanten
|
||
c_grp_default_key NUMBER (10) := 241;
|
||
c_grp_budgh_key NUMBER := 1061;
|
||
c_grp_medewerker_key NUMBER := 1601;
|
||
c_employeetype_key NUMBER (10) := 1040; -- Het flexkenmerk dat het employeetype registreert [W is P geworden en S is nieuw!]
|
||
-- C(contract), I(intern), E(extern), F(flexplek), D(dummy), K(ketenpartner), W(wonga), P(?), S(?)
|
||
c_usrtab_employeetype_key NUMBER (10) := 301; -- Dat is een referentiekenmerk naar fac_userdata die we opzoeken
|
||
-- Voor budgethouders (uit voormalige budgethouderimport)
|
||
l_oldcount NUMBER;
|
||
l_impcount NUMBER;
|
||
l_impcount_prj NUMBER;
|
||
c_kpn_maxvariation NUMBER := 0.5; -- Max new/old ratio to prevent undesired changes
|
||
nrbh1 NUMBER;
|
||
nrbh2 NUMBER;
|
||
|
||
c_maxvariation NUMBER := 80;
|
||
c_commitbuffer NUMBER := 5000; -- Om de zoveel committen
|
||
v_buffercount NUMBER := 0;
|
||
v_time VARCHAR2 (50);
|
||
/*
|
||
C???
|
||
I
|
||
E
|
||
F
|
||
D???
|
||
K???
|
||
W???
|
||
P
|
||
S
|
||
B???
|
||
L???
|
||
M???
|
||
T???
|
||
CURSOR c_prs_upd
|
||
IS
|
||
SELECT x.empnum, x.account, p.prs_perslid_key,
|
||
COUNT (*) aantal
|
||
FROM uwva_imp_abs x, prs_v_aanwezigperslid p
|
||
WHERE 1 = 1
|
||
--AND SUBSTR (x.empnum, 1, 1) IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
AND x.empnum != '000000' -- Of K helemaal uitsluiten?
|
||
AND x.empnum = p.prs_perslid_nr(+)
|
||
GROUP BY x.empnum, x.account, p.prs_perslid_key;
|
||
*/
|
||
CURSOR c_prs_upd
|
||
IS
|
||
SELECT DISTINCT empnum, account
|
||
FROM uwva_imp_abs
|
||
WHERE empnum != '000000' -- Of K helemaal uitsluiten?
|
||
UNION -- UWVA#86694: Niet iedereen in ABS(IIQ)-bestand, dus doen alsof!
|
||
SELECT p.prs_perslid_nr empnum, p.prs_perslid_oslogin account
|
||
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink km, fac_v_aanwezigusrdata ud
|
||
WHERE p.prs_perslid_nr != '000000' -- Of K helemaal uitsluiten?
|
||
AND p.prs_perslid_key = km.prs_link_key
|
||
AND km.prs_kenmerk_key = c_employeetype_key
|
||
AND fac.safe_to_number (km.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_code IN ('C', 'I', 'E', 'F', 'D', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
-- Gegeven persoon (Personeelsnummer en perslid_key), bepaal op basis van de rollen
|
||
-- die deze persoon heeft, welke autorisatiegroepen verwijderd moeten worden.
|
||
-- UWVA#20021: negeer daarbij de groep 'Budgethouders' (key 1061); daar gaat ABS
|
||
-- niet over. (Die groep wordt onderaan de import door de voormalige budgethouder-
|
||
-- import geregeld.)
|
||
-- UWVA#30547: Ketenpartners (type K) hebben voortaan beperktere rechten dan 'normale'
|
||
-- medewerkers. Daarom alleen andere medewerkertypes in groep 'Medewerker' laten.
|
||
CURSOR c_groep (in_persnr VARCHAR2, in_perslid_key NUMBER)
|
||
IS
|
||
SELECT fg.fac_groep_key, fg.fac_groep_omschrijving
|
||
FROM fac_gebruikersgroep fgg, fac_groep fg
|
||
WHERE fgg.fac_groep_key = fg.fac_groep_key
|
||
AND fgg.prs_perslid_key = in_perslid_key
|
||
AND fgg.fac_groep_key != c_grp_default_key
|
||
AND fgg.fac_groep_key != c_grp_budgh_key
|
||
MINUS
|
||
(SELECT DISTINCT fg.fac_groep_key, fg.fac_groep_omschrijving
|
||
FROM uwva_imp_abs uia, uwva_provisioning up, fac_groep fg
|
||
WHERE up.fac_groep_key = fg.fac_groep_key
|
||
AND up.uwva_rol_omschr = uia.grpfname
|
||
AND uia.empnum = in_persnr
|
||
UNION
|
||
SELECT fac_groep_key, fac_groep_omschrijving
|
||
FROM fac_groep fg, prs_kenmerklink km, fac_usrdata ud
|
||
WHERE fg.fac_groep_key = c_grp_medewerker_key
|
||
AND km.prs_link_key = in_perslid_key
|
||
AND km.prs_kenmerk_key = c_employeetype_key
|
||
AND km.prs_kenmerklink_verwijder IS NULL
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_key(+) = fac.safe_to_number (km.prs_kenmerklink_waarde)
|
||
AND ud.fac_usrdata_upper IN ('C', 'I', 'E', 'F', 'D', 'W', 'P', 'S')) -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
-- Gegeven persoon (Personeelsnummer en perslid_key), bepaal op basis van de rollen
|
||
-- die deze persoon heeft, welke autorisatiegroepen nog ontbreken.
|
||
-- UWVA#30547: Ketenpartners (type K) hebben voortaan beperktere rechten dan 'normale'
|
||
-- medewerkers. Daarom alleen de andere medewerkertypes in groep 'Medewerker' zetten.
|
||
CURSOR c_rol (in_persnr VARCHAR2, in_perslid_key NUMBER)
|
||
IS
|
||
(SELECT DISTINCT fg.fac_groep_key, fg.fac_groep_omschrijving
|
||
FROM uwva_imp_abs uia, uwva_provisioning up, fac_groep fg
|
||
WHERE up.fac_groep_key = fg.fac_groep_key
|
||
AND up.uwva_rol_omschr = uia.grpfname
|
||
AND uia.empnum = in_persnr
|
||
UNION
|
||
SELECT fac_groep_key, fac_groep_omschrijving
|
||
FROM fac_groep fg, prs_kenmerklink km, fac_usrdata ud
|
||
WHERE fg.fac_groep_key = c_grp_medewerker_key
|
||
AND km.prs_link_key = in_perslid_key
|
||
AND km.prs_kenmerk_key = c_employeetype_key
|
||
AND km.prs_kenmerklink_verwijder IS NULL
|
||
AND ud.fac_usrtab_key = c_usrtab_employeetype_key
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrdata_key(+) = fac.safe_to_number(km.prs_kenmerklink_waarde)
|
||
AND ud.fac_usrdata_upper IN ('C', 'I', 'E', 'F', 'D', 'W', 'P', 'S')) -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
MINUS
|
||
SELECT fg.fac_groep_key, fg.fac_groep_omschrijving
|
||
FROM fac_gebruikersgroep fgg, fac_groep fg
|
||
WHERE fgg.fac_groep_key = fg.fac_groep_key
|
||
AND fgg.prs_perslid_key = in_perslid_key;
|
||
|
||
-- Door ABS niet meer gebruikte rollen, die toch nog in de provisioning-tabel
|
||
-- voorkomen.
|
||
CURSOR c_rol_not_used
|
||
IS
|
||
SELECT DISTINCT uwva_rol_omschr rol FROM uwva_provisioning
|
||
MINUS
|
||
SELECT DISTINCT grpfname rol FROM uwva_imp_abs;
|
||
|
||
-- UWVA#20021: voormalige budgethouderimport
|
||
-- Record for update: relatie kostenplaats en persoon (evt leeg) kan worden gelegd.
|
||
CURSOR c_budgethouder
|
||
IS
|
||
SELECT kpn.prs_kostenplaats_key,
|
||
kpn.prs_kostenplaats_nr,
|
||
p.prs_perslid_key,
|
||
imp.perslid_nr imp_perslid_nr,
|
||
imp.mandaatcode imp_mandaatcode
|
||
FROM uwva_imp_kpn imp, prs_v_aanwezigkostenplaats kpn, prs_v_aanwezigperslid p
|
||
WHERE imp.afdeling = kpn.prs_kostenplaats_nr
|
||
AND imp.perslid_nr = p.prs_perslid_nr(+) -- Personeelsnummer (zonder prefix zoals in KPN-importbestand+Facilitor)
|
||
ORDER BY 2;
|
||
|
||
-- Onbekende kostenplaats
|
||
CURSOR c_kpn_onbekend
|
||
IS
|
||
SELECT kpn.prs_kostenplaats_key,
|
||
imp.afdeling prs_kostenplaats_nr,
|
||
imp.perslid_nr imp_perslid_nr
|
||
FROM uwva_imp_kpn imp,
|
||
prs_v_aanwezigkostenplaats kpn
|
||
WHERE imp.afdeling IS NOT NULL
|
||
AND imp.status = 'A'
|
||
AND imp.afdeling = kpn.prs_kostenplaats_nr(+)
|
||
AND kpn.prs_kostenplaats_nr IS NULL
|
||
ORDER BY 2;
|
||
|
||
rec_upd c_prs_upd%ROWTYPE;
|
||
rec_groep c_groep%ROWTYPE;
|
||
rec_rol c_rol%ROWTYPE;
|
||
rec_rnu c_rol_not_used%ROWTYPE;
|
||
rec_budgh c_budgethouder%ROWTYPE;
|
||
rec_kpnon c_kpn_onbekend%ROWTYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (250);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
v_perslid_count_imp NUMBER;
|
||
v_perslid_count_fclt NUMBER;
|
||
v_count NUMBER (10);
|
||
v_update BOOLEAN;
|
||
v_perslid_key NUMBER (10);
|
||
v_prs_omschr VARCHAR2 (150);
|
||
v_profiel_key NUMBER (10);
|
||
v_profiel_omschr VARCHAR2 (30);
|
||
v_limiet NUMBER (10);
|
||
BEGIN
|
||
-- Init
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Facilitor ABS import versie ' || currentversion, '$Revision$');
|
||
|
||
-- Aantal potentieel matchbare personen in importbestand
|
||
SELECT COUNT (DISTINCT (empnum))
|
||
INTO v_perslid_count_imp
|
||
FROM uwva_imp_abs
|
||
;
|
||
-- Aantal actieve, potentieel matchbare personen in Facilitor
|
||
-- (dus m<>t account en/of personeelsnummer en met een juist werknemertype)
|
||
-- (DECODE ivm vermijden deling door 0)
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_perslid_count_fclt
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE (prs_perslid_nr IS NOT NULL OR prs_perslid_oslogin IS NOT NULL)
|
||
AND uwva_abs.get_employeetype (prs_perslid_key, c_employeetype_key)
|
||
IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
IF (100 * ABS (v_perslid_count_imp - v_perslid_count_fclt) / v_perslid_count_fclt ) > c_maxvariation
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
'Het verschil tussen de actieve personen ('
|
||
|| TO_CHAR (v_perslid_count_fclt)
|
||
|| ') en te importeren aantallen ('
|
||
|| TO_CHAR (v_perslid_count_imp)
|
||
|| ') is te groot',
|
||
'Zie Specificaties: De afwijking is teveel en bedraagt '
|
||
|| TO_CHAR (100 * ABS (v_perslid_count_fclt - v_perslid_count_imp) / v_perslid_count_fclt, '9999999D9')
|
||
|| '%.'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- *** Update ***
|
||
FOR rec_upd IN c_prs_upd
|
||
LOOP
|
||
BEGIN
|
||
-- Init
|
||
v_errormsg := 'Update init';
|
||
v_update := TRUE;
|
||
v_perslid_key := 0;
|
||
v_prs_omschr := 'Personeelsnummer/Login: ' || rec_upd.empnum || '/' || rec_upd.account;
|
||
|
||
-- *** Matching ***********************************
|
||
-- NB: zie uitleg bij cursor
|
||
IF v_update
|
||
THEN
|
||
-- *** Matching op Personeelsnummer ***
|
||
v_errormsg := 'Uniek Personeelsnummer';
|
||
|
||
-- Check of empnum=Personeelsnummer wel uniek is in importbestand
|
||
-- Een persoon kan vaker in het importbestandvoorkomen, met alle gegevens behalve de rol hetzelfde.
|
||
-- Daarom SELECT DISTINCT op 'empnum' en (omdat die ook uniek moet zijn) 'account'!
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM (SELECT DISTINCT empnum, account
|
||
FROM uwva_imp_abs
|
||
WHERE empnum = rec_upd.empnum);
|
||
|
||
-- Niet uniek (en wel in importbestand!) --> error
|
||
IF v_count > 1
|
||
THEN
|
||
v_errorhint := 'Personeelsnummer is niet uniek in importbestand. ' || v_prs_omschr;
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
|
||
-- Wel uniek (of niet in importbestand!) --> komt het ook (uniek) voor in Facilitor?
|
||
ELSE
|
||
v_errormsg := 'Matching op Personeelsnummer';
|
||
-- Probeer persoon op ABS-ID te matchen.
|
||
-- NB. Dit doorzoekt alleen personen in Facilitor met een ABS-type, maar een persoon
|
||
-- met een ander type kan best deze Personeelsnummer hebben (bijv. O of P).
|
||
-- Type buiten beschouwing laten?
|
||
-- Extragratis bonus is om die persoon-met-een-ander type dan te rapporteren,
|
||
-- of als P te markeren.
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = rec_upd.empnum
|
||
AND uwva_abs.get_employeetype (prs_perslid_key, c_employeetype_key)
|
||
IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
-- Persoon zou met PSHCM-import reeds moeten zijn aangemaakt!
|
||
IF v_count = 1
|
||
THEN
|
||
v_errormsg := 'Fout bepalen persoon (obv. Personeelsnummer)';
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = rec_upd.empnum
|
||
AND uwva_abs.get_employeetype (prs_perslid_key, c_employeetype_key)
|
||
IN ('C', 'I', 'E', 'F', 'D', 'K', 'W', 'P', 'S') -- W is P geworden en S is nieuw! Komen C, D en K nog voor???
|
||
;
|
||
-- Is niet uniek --> error
|
||
ELSE
|
||
v_errorhint := 'Kan Personeelsnummer niet eenduidig bepalen in Facilitor. ' || v_prs_omschr;
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
v_update := FALSE;
|
||
END IF; -- komt account (uniek) voor in FAC?
|
||
END IF; -- account uniek in ABS?
|
||
END IF;
|
||
|
||
-- *** Rol(len) ***************************************************************************
|
||
-- Als persoon uniek bepaald (v_perslid_key gevuld), dan v_update=TRUE!
|
||
IF v_update
|
||
THEN
|
||
BEGIN
|
||
-- *** Profiel/Limiet ***********************
|
||
-- Kan ik uit de rol(len) die deze persoon heeft een profiel/limiet afleiden?
|
||
-- (i.e. bepaal aantal rollen van persoon dat naar een profiel verwijst)
|
||
v_errormsg := 'Aantal profielen bepalen';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_imp_abs uia, uwva_provisioning up, fac_profiel fp
|
||
WHERE uia.empnum = rec_upd.empnum
|
||
AND uia.grpfname = up.uwva_rol_omschr
|
||
AND up.fac_profiel_key = fp.fac_profiel_key;
|
||
|
||
-- Ja --> bepaal profiel met hoogste limiet
|
||
IF v_count > 0
|
||
THEN
|
||
v_errormsg := 'Rol->Profiel+Limiet';
|
||
SELECT fac_profiel_key, fac_profiel_omschrijving, limiet
|
||
INTO v_profiel_key, v_profiel_omschr, v_limiet
|
||
FROM ( SELECT DISTINCT
|
||
fp.fac_profiel_key,
|
||
fp.fac_profiel_omschrijving,
|
||
COALESCE (fp.fac_profiel_limiet,
|
||
(SELECT MAX (fpw.fac_profielwaarde_limiet)
|
||
FROM fac_profielwaarde fpw
|
||
WHERE fp.fac_profiel_key = fpw.fac_profiel_key))
|
||
limiet
|
||
FROM uwva_imp_abs uia, uwva_provisioning up, fac_profiel fp
|
||
WHERE uia.empnum = rec_upd.empnum
|
||
AND uia.grpfname = up.uwva_rol_omschr
|
||
AND up.fac_profiel_key = fp.fac_profiel_key
|
||
ORDER BY limiet DESC)
|
||
WHERE ROWNUM = 1;
|
||
|
||
v_errormsg := 'Wijzigen limiet';
|
||
UPDATE prs_perslid
|
||
SET fac_profiel_key = v_profiel_key
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_prs_omschr,
|
||
'Profiel gewijzigd: '||v_profiel_omschr||' ('||v_profiel_key||'): E '||v_limiet||',-');
|
||
-- Nee --> Verwijder eventueel aanwezige profiel(limiet)en
|
||
ELSE
|
||
v_errormsg := 'Verwijderen profiel(-limiet)';
|
||
UPDATE prs_perslid
|
||
SET fac_profiel_key = NULL
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
--fac.imp_writelog (p_import_key,
|
||
-- 'I',
|
||
-- v_prs_omschr,
|
||
-- 'Profiel verwijderd.');
|
||
END IF; -- v_count>0
|
||
|
||
-- *** Autorisatiegroepen *********************
|
||
-- Verwijder alle rechten, die iemand volgens ABS niet heeft.
|
||
FOR rec_groep IN c_groep (rec_upd.empnum, v_perslid_key)
|
||
LOOP
|
||
v_errormsg := 'Rol->Autgroep verwijderen';
|
||
DELETE FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = rec_groep.fac_groep_key
|
||
AND prs_perslid_key = v_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_prs_omschr,
|
||
'Groep verwijderd: ' || rec_groep.fac_groep_omschrijving||' (#'||rec_groep.fac_groep_key||')');
|
||
END LOOP;
|
||
|
||
-- Voeg alle rechten-volgens-ABS toe, die iemand nog niet heeft.
|
||
FOR rec_rol IN c_rol (rec_upd.empnum, v_perslid_key)
|
||
LOOP
|
||
v_errormsg := 'Rol->Autgroep toevoegen';
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
VALUES (rec_rol.fac_groep_key, v_perslid_key);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_prs_omschr,
|
||
'Groep toegevoegd: ' || rec_rol.fac_groep_omschrijving||' (#'||rec_rol.fac_groep_key||')');
|
||
END LOOP;
|
||
|
||
-- Iedereen uit ABS met een oslogin moet ook groep _default krijgen, als 'ie die nog niet heeft
|
||
IF rec_upd.account IS NOT NULL
|
||
THEN
|
||
v_errormsg := '_default toevoegen?';
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_gebruikersgroep fgg
|
||
WHERE fgg.prs_perslid_key = v_perslid_key
|
||
AND fac_groep_key = c_grp_default_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := '_default toevoegen';
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
VALUES (c_grp_default_key, v_perslid_key);
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Rollen: ' || v_errormsg,
|
||
v_prs_omschr);
|
||
END;
|
||
END IF; -- v_update
|
||
|
||
v_buffercount := v_buffercount + 1;
|
||
IF v_buffercount >= c_commitbuffer
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- Ongebruikte rollen
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM (SELECT DISTINCT uwva_rol_omschr rol FROM uwva_provisioning
|
||
MINUS
|
||
SELECT DISTINCT grpfname rol FROM uwva_imp_abs);
|
||
|
||
IF v_count > 0
|
||
THEN
|
||
BEGIN
|
||
FOR rec_rnu IN c_rol_not_used
|
||
LOOP
|
||
fac.imp_writelog (p_import_key, 'S', 'Ongebruikte rol in provisioning-tabel', rec_rnu.rol);
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
-- *** Budgethouders ****************************************************************************
|
||
-- UWVA#20021: Onderstaande was voorheen een aparte budgethouder-import. Sinds het smoelenboek
|
||
-- zijn de importbestanden voor de KPN- en budgethouderimports samengevoegd tot <20><>n bestand met
|
||
-- de mandateringsboom, inclusief volledige organisatiestructuur. De KPN-import 'maakt' voortaan
|
||
-- de afdelingen en kostenplaatsen (PRS <20>n PRJ), terwijl de ABS-import eerst de personeelsleden
|
||
-- aanmaakt en rechten geeft en vervolgens de taken van de budgethouder-import uitvoert:
|
||
-- budgethouders instellen, mandaat (profiel) instellen en personen aan de Budgethouder-autori-
|
||
-- satiegroep (key 1061) toevoegen.
|
||
-- (NB: budgethouderimport moet n<> KPN en ABS, omdat KPN de kostenplaatsen en ABS de personen
|
||
-- importeert die de budgethouderimport nodig heeft)
|
||
|
||
-- UWVA#23269: Eerst dezelfde check als in uwva_update_kpn(), want als die is overgeslagen, dan
|
||
-- ook hier overslaan (ie. geen budgethouders wijzigen)!
|
||
-- UWVA#75874: Check op 50% voortaan tegen alleen actieve/niet verlopen KPN.
|
||
-- How many active records are now present?
|
||
SELECT COUNT ( * )
|
||
INTO l_oldcount
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_omschrijving NOT LIKE 'INACTIEF:%'
|
||
AND COALESCE (prs_kostenplaats_eind, SYSDATE + 1) > TRUNC (SYSDATE);
|
||
|
||
-- How many (in)active records are imported?
|
||
SELECT COUNT ( * )
|
||
INTO l_impcount
|
||
FROM uwva_imp_kpn
|
||
WHERE status = 'A';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO l_impcount_prj
|
||
FROM uwva_imp_kpn_prj
|
||
WHERE status = 'A';
|
||
|
||
IF ABS ((l_impcount + l_impcount_prj) - l_oldcount) > (c_kpn_maxvariation * l_oldcount)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Het verschil tussen de actieve kostenplaatsen ('
|
||
|| TO_CHAR (l_oldcount)
|
||
|| ') en geimporteerde aantallen ('
|
||
|| TO_CHAR (l_impcount + l_impcount_prj)
|
||
|| ') is te groot',
|
||
'Budgethouders niet bijgewerkt!');
|
||
ELSE
|
||
FOR rec_budgh IN c_budgethouder
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij wijzigen kostenplaats "'
|
||
|| rec_budgh.prs_kostenplaats_nr
|
||
|| '" met budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" ';
|
||
|
||
-- Ken budgethouder toe aan kostenplaats (of verwijder als NULL)
|
||
UPDATE prs_kostenplaats
|
||
SET prs_perslid_key = rec_budgh.prs_perslid_key
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_key = rec_budgh.prs_kostenplaats_key;
|
||
|
||
-- Als de kostenplaats een budgethouder heeft, stel hiervoor dan mandaat
|
||
-- en autorisatiegroep in
|
||
IF (rec_budgh.prs_perslid_key IS NOT NULL)
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij zetten profiel budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" voor KPN "'
|
||
|| rec_budgh.prs_kostenplaats_nr
|
||
|| '" ';
|
||
|
||
-- UWVA#36421: Flexibel - via Eigen tabel met key=1342 - toekennen van profiel aan budgethouders, als
|
||
-- geen entry wordt gevonden, dan wordt profiel met key=81 toegekend!
|
||
UPDATE prs_perslid
|
||
SET fac_profiel_key =
|
||
COALESCE (
|
||
(SELECT MAX (fac.safe_to_number (ud.fac_usrdata_omschr))
|
||
FROM fac_v_aanwezigusrdata ud
|
||
WHERE ud.fac_usrtab_key = 1342
|
||
AND ud.fac_usrdata_code = rec_budgh.imp_mandaatcode),
|
||
81)
|
||
WHERE prs_perslid_key = rec_budgh.prs_perslid_key;
|
||
|
||
-- UWVA#21163: Budgethouders ook mandaat geven op hun kostenplaats
|
||
-- Eerst kijken of er al een mandaat voor die kostenplaats is. Zoniet, dan toevoegen.
|
||
-- NB: bij een lege kostenplaats_key heeft de persoon al mandaat op alle kostenplaatsen!
|
||
v_errormsg :=
|
||
'Fout bij tellen mandaten van "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" voor KPN "'
|
||
|| rec_budgh.prs_kostenplaats_nr
|
||
|| '" ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = rec_budgh.prs_perslid_key
|
||
AND (prs_kostenplaats_key = rec_budgh.prs_kostenplaats_key OR prs_kostenplaats_key IS NULL);
|
||
|
||
-- Nog geen mandaat --> toevoegen
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toekennen mandaat voor KPN "'
|
||
|| rec_budgh.prs_kostenplaats_nr
|
||
|| '" aan budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '"';
|
||
|
||
INSERT INTO prs_perslidkostenplaats (prs_perslid_key,
|
||
prs_kostenplaats_key,
|
||
prs_perslidkostenplaats_boeken,
|
||
prs_perslidkostenplaats_inzage)
|
||
VALUES (rec_budgh.prs_perslid_key,
|
||
rec_budgh.prs_kostenplaats_key,
|
||
1,
|
||
1);
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Mandaat voor budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" op KPN "'
|
||
|| rec_budgh.prs_kostenplaats_nr
|
||
|| '"',
|
||
'');
|
||
END IF;
|
||
|
||
-- UWVA#17365: Zorg dat alle budgethouders en alleen budgethouders in
|
||
-- de groep van budgethouders zit (1/2)
|
||
v_errormsg :=
|
||
'Fout bij toekennen budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" aan autorisatiegroep budgethouders ('
|
||
|| TO_CHAR (c_grp_budgh_key)
|
||
|| ')';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT c_grp_budgh_key, rec_budgh.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = c_grp_budgh_key
|
||
AND prs_perslid_key = rec_budgh.prs_perslid_key);
|
||
ELSE
|
||
-- Wel een budgethouder gegeven in importbestand (perslid_nr), maar
|
||
-- persoon niet gevonden in Facilitor (geen perslid_key).
|
||
IF (rec_budgh.imp_perslid_nr IS NOT NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Onbekende budgethouder "'
|
||
|| rec_budgh.imp_perslid_nr
|
||
|| '" bij kostenplaats '
|
||
|| rec_budgh.prs_kostenplaats_nr,
|
||
'');
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec_kpnon IN c_kpn_onbekend
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij wijzigen kostenplaats "'
|
||
|| rec_kpnon.prs_kostenplaats_nr
|
||
|| '" met budgethouder "'
|
||
|| rec_kpnon.imp_perslid_nr
|
||
|| '": kostenplaats komt niet voor';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO nrbh1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = c_grp_budgh_key;
|
||
|
||
-- UWVA#17365: Zorg dat alle budgethouders en alleen budgethouders in
|
||
-- de groep van budgethouders zit (2/2)
|
||
DELETE FROM fac_gebruikersgroep gg
|
||
WHERE gg.fac_groep_key = c_grp_budgh_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM uwva_imp_kpn imp, prs_v_aanwezigperslid p
|
||
WHERE imp.perslid_nr = p.prs_perslid_nr -- Personeelsnummer (zonder prefix zoals in KPN-importbestand+Facilitor)
|
||
AND p.prs_perslid_key = gg.prs_perslid_key);
|
||
|
||
SELECT COUNT ( * )
|
||
INTO nrbh2
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = c_grp_budgh_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
TO_CHAR (nrbh1 - nrbh2)
|
||
|| ' budgethouder(s) uit autorisatiegroep '
|
||
|| TO_CHAR (c_grp_budgh_key)
|
||
|| ' verwijderd.',
|
||
'');
|
||
END IF;
|
||
-- Einde voormalige budgethoudersimport
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Import voltooid', v_time);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END uwva_update_abs;
|
||
/
|
||
|
||
-- Persoonsgegevens met werknemertype, login en rollen (UWVA#18115)
|
||
CREATE OR REPLACE VIEW uwva_v_rap_prs_abs
|
||
(
|
||
fclt_f_type,
|
||
fclt_f_account,
|
||
persnr,
|
||
fclt_f_naam,
|
||
last_login,
|
||
aantal_rollen
|
||
)
|
||
AS
|
||
(SELECT COALESCE(emptype.fac_usrdata_omschr, '<geen type>'),
|
||
pers.prs_perslid_oslogin,
|
||
pers.prs_perslid_nr,
|
||
pers.prs_perslid_naam_full,
|
||
pers.prs_perslid_login,
|
||
TO_CHAR (0)
|
||
FROM ( (SELECT p.*, pf.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf, prs_perslid p
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL) pers
|
||
LEFT OUTER JOIN
|
||
(SELECT p.prs_perslid_key, ud.fac_usrdata_omschr
|
||
FROM prs_perslid p,
|
||
prs_kenmerklink km,
|
||
fac_usrdata ud
|
||
WHERE p.prs_perslid_key = km.prs_link_key
|
||
AND km.prs_kenmerk_key = 1040
|
||
AND ud.fac_usrdata_key =
|
||
km.prs_kenmerklink_waarde
|
||
AND km.prs_kenmerklink_verwijder IS NULL
|
||
AND ud.fac_usrdata_verwijder IS NULL) emptype
|
||
ON pers.prs_perslid_key = emptype.prs_perslid_key) );
|
||
|
||
-- Inhoud eigen tabel pandcodes (UWVA#18115)
|
||
CREATE OR REPLACE VIEW uwva_v_rap_abs_pandcodes
|
||
(
|
||
key,
|
||
fclt_f_locatie,
|
||
fclt_f_pandcode
|
||
)
|
||
AS
|
||
(SELECT TO_CHAR (fac_usrdata_key), fac_usrdata_omschr, fac_usrdata_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 1
|
||
AND fac_usrdata_verwijder IS NULL);
|
||
|
||
COMMIT;
|
||
|
||
-- *** Oude PVIEW-rapportages, maar nu in een ABS-jasje ***
|
||
|
||
-- Toon verplichtingen van de personen die vervallen zijn volgens abs.
|
||
CREATE OR REPLACE VIEW uwva_v_imp_abs_01_verpl
|
||
(
|
||
fclt_f_servicepunt,
|
||
fclt_f_locatie,
|
||
personeelsnr,
|
||
prs_perslid_naam,
|
||
omschrijving,
|
||
verplichting,
|
||
fclt_3d_locatie_key
|
||
)
|
||
AS
|
||
SELECT di.alg_district_omschrijving fclt_f_servicepunt,
|
||
l.alg_locatie_code fclt_f_locatie,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_naam,
|
||
COALESCE (t.fac_message_text, vp.fac_message_code) omschrijving,
|
||
vp.item verplichting,
|
||
vp.locatie_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_verplichting vp,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
fac_message t
|
||
WHERE p.prs_perslid_naam LIKE 'INACTIEF:%'
|
||
AND p.prs_perslid_key = vp.prs_perslid_key
|
||
AND vp.locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND vp.fac_message_code = t.fac_message_code(+);
|
||
|
||
|
||
-- Personen die bij de laatste import zijn verwijderd (o.b.v. prs_perslid_verwijder).
|
||
CREATE OR REPLACE VIEW uwva_v_imp_abs_02_verwijderd
|
||
(
|
||
fclt_f_personeelsnummer,
|
||
fclt_f_naam,
|
||
fclt_3d_locatie_key,
|
||
fclt_f_locatie,
|
||
fclt_f_afdeling,
|
||
verwijderd,
|
||
key
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_nr,
|
||
pf.prs_perslid_naam_full,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_code,
|
||
d.prs_afdeling_naam,
|
||
TO_CHAR (p.prs_perslid_verwijder, 'YYYY-MM-DD') verwijderd,
|
||
TO_CHAR (p.prs_perslid_key)
|
||
FROM prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling d,
|
||
prs_v_werkplek_gegevens w,
|
||
prs_perslidwerkplek pw,
|
||
alg_locatie l
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND w.prs_werkplek_key(+) = pw.prs_werkplek_key
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND w.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND d.prs_afdeling_key(+) = p.prs_afdeling_key
|
||
AND SYSDATE - p.prs_perslid_verwijder < 31;
|
||
|
||
-- Personen die bij de laatste import zijn toegevoegd (o.b.v. prs_perslid_aanmaak).
|
||
CREATE OR REPLACE VIEW uwva_v_imp_abs_03_toegevoegd
|
||
(
|
||
fclt_f_personeelsnummer,
|
||
fclt_f_naam,
|
||
fclt_f_afdeling,
|
||
aanmaak,
|
||
key
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_nr,
|
||
pf.prs_perslid_naam_full,
|
||
d.prs_afdeling_naam,
|
||
TO_CHAR (p.prs_perslid_aanmaak, 'YYYY-MM-DD') aanmaak,
|
||
TO_CHAR (p.prs_perslid_key)
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling d
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND d.prs_afdeling_key = p.prs_afdeling_key
|
||
AND SYSDATE - p.prs_perslid_aanmaak < 31;
|
||
|
||
-- Onbekende pandcodes in de importfile, met aantal personen
|
||
CREATE OR REPLACE VIEW uwva_v_abs_05_pponbekendloc
|
||
(
|
||
locatiecode,
|
||
aantal_personen
|
||
)
|
||
AS
|
||
SELECT ab.pandcode, COUNT (*)
|
||
FROM uwva_imp_abs ab
|
||
WHERE ab.pandcode IS NOT NULL
|
||
AND NOT EXISTS (SELECT 'x'
|
||
FROM fac_usrdata fu
|
||
WHERE ab.pandcode = fu.fac_usrdata_code)
|
||
GROUP BY ab.pandcode;
|
||
|
||
---- Personen die geimporteerd worden maar die ondertussen handmatig zijn verwijderd UWVA#679 (OBSOLETE?)
|
||
--CREATE OR REPLACE VIEW uwva_v_imp_abs_06_verwijderd
|
||
--(
|
||
-- fclt_f_personeelsnr,
|
||
-- naam,
|
||
-- voorletters,
|
||
-- fclt_3d_locatie_key,
|
||
-- fclt_f_locatie,
|
||
-- verwijderdatum,
|
||
-- importdatum,
|
||
-- KEY
|
||
--)
|
||
--AS
|
||
-- SELECT p.prs_perslid_nr, p.prs_perslid_naam, p.prs_perslid_voorletters,
|
||
-- l.alg_locatie_key, l.alg_locatie_code,
|
||
-- p.prs_perslid_verwijder verwijderdatum,
|
||
-- ab.uwva_imp_abs_aanmaak importdatum,
|
||
-- p.prs_perslid_key
|
||
-- FROM prs_perslid p,
|
||
-- uwva_imp_abs ab,
|
||
-- prs_v_werkplek_gegevens w,
|
||
-- prs_perslidwerkplek pw,
|
||
-- alg_locatie l
|
||
-- WHERE p.prs_perslid_nr = ab.empnum
|
||
-- AND p.prs_perslid_verwijder IS NOT NULL
|
||
-- AND w.prs_werkplek_key(+) = pw.prs_werkplek_key
|
||
-- AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
-- AND w.alg_locatie_key = l.alg_locatie_key(+)
|
||
-- ORDER BY p.prs_perslid_verwijder DESC;
|
||
|
||
-- Verwijderde personen per SP en per pand (UWVA#12158)
|
||
CREATE OR REPLACE VIEW uwva_v_imp_abs_07_verwijderd
|
||
AS
|
||
SELECT d.alg_district_omschrijving fclt_f_servicepunt,
|
||
g.alg_gebouw_omschrijving gebouw,
|
||
l.imp_log_omschrijving fclt_f_medewerker,
|
||
TO_CHAR (MIN(l.imp_log_datum), 'YYYY-MM-DD') datum,
|
||
l.imp_log_hint fclt_3d_gebouw_key
|
||
FROM IMP_LOG l, ALG_GEBOUW g, ALG_LOCATIE ll, ALG_DISTRICT d
|
||
WHERE l.imp_log_applicatie = 'ABS0'
|
||
AND l.imp_log_hint = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = ll.alg_locatie_key
|
||
AND ll.alg_district_key = d.alg_district_key
|
||
GROUP BY d.alg_district_omschrijving, g.alg_gebouw_omschrijving, l.imp_log_omschrijving, l.imp_log_hint;
|
||
|
||
|
||
CREATE OR REPLACE VIEW uwva_v_export_vinderdump
|
||
(
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '"volledige naam";'
|
||
|| '"achternaam";'
|
||
|| '"tussenvoegsel";'
|
||
|| '"voorletters";'
|
||
|| '"voornaam";'
|
||
|| '"divisie";'
|
||
|| '"afdeling";'
|
||
|| '"functie";'
|
||
|| '"alt_divisie";'
|
||
|| '"alt_afdeling";'
|
||
|| '"alt_functie";'
|
||
|| '"persoonsnr";'
|
||
|| '"account";'
|
||
|| '"werknemertype";'
|
||
|| '"regio";'
|
||
|| '"locatie";'
|
||
|| '"gebouw";'
|
||
|| '"verdieping";'
|
||
|| '"ruimte";'
|
||
|| '"e-mail";'
|
||
|| '"telefoon";'
|
||
|| '"mobiel";'
|
||
|| '"faxnummer";'
|
||
|| '"maandag";'
|
||
|| '"dinsdag";'
|
||
|| '"woensdag";'
|
||
|| '"donderdag";'
|
||
|| '"vrijdag";'
|
||
|| '"geslacht";'
|
||
|| '"toon in gids"'
|
||
result,
|
||
0 result_order
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT '"' || prs_perslid_naam_full || '";"'
|
||
|| prs_perslid_naam || '";"'
|
||
|| prs_perslid_tussenvoegsel || '";"'
|
||
|| prs_perslid_voorletters || '";"'
|
||
|| prs_perslid_voornaam || '";"'
|
||
|| divisie || '";"'
|
||
|| afdeling || '";"'
|
||
|| prs_srtperslid_omschrijving || '";"'
|
||
|| alt_divisie || '";"'
|
||
|| alt_afdeling || '";"'
|
||
|| alt_functie || '";"'
|
||
|| prs_perslid_nr || '";"'
|
||
|| prs_perslid_oslogin || '";"'
|
||
|| emptype || '";"'
|
||
|| regio || '";"'
|
||
|| alg_locatie_code || '";"'
|
||
|| alg_gebouw_code || '";"'
|
||
|| alg_verdieping_code || '";"'
|
||
|| alg_ruimte_nr || '";"'
|
||
|| prs_perslid_email || '";"'
|
||
|| prs_perslid_telefoonnr || '";"'
|
||
|| prs_perslid_mobiel || '";"'
|
||
|| faxnr || '";"'
|
||
|| maandag || '";"'
|
||
|| dinsdag || '";"'
|
||
|| woensdag || '";"'
|
||
|| donderdag || '";"'
|
||
|| vrijdag || '";"'
|
||
|| DECODE (prs_perslid_geslacht, 0, 'V', 1, 'M', 'O') || '";"'
|
||
|| DECODE (prs_perslid_ingids, 0, 'Nee', 1, 'Ja', 'O') || '"'
|
||
result,
|
||
1 result_order
|
||
FROM (SELECT p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_voornaam,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_email,
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_geslacht,
|
||
p.prs_perslid_ingids,
|
||
wpg.alg_locatie_code,
|
||
wpg.alg_gebouw_code,
|
||
wpg.alg_verdieping_code,
|
||
wpg.alg_ruimte_nr,
|
||
pf.prs_perslid_naam_full,
|
||
--afd.prs_afdeling_naam6 afdeling,
|
||
afd.prs_afdeling_naam || '-' || afd.prs_afdeling_omschrijving
|
||
afdeling,
|
||
--div.prs_afdeling_naam6 divisie,
|
||
div.prs_afdeling_naam || '-' || div.prs_afdeling_omschrijving
|
||
divisie,
|
||
sp.prs_srtperslid_omschrijving
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
--prs_v_aanwezigafdeling afd,
|
||
prs_afdeling afd,
|
||
prs_v_afdeling_boom ab,
|
||
--prs_v_aanwezigafdeling div,
|
||
prs_afdeling div,
|
||
prs_v_hoofdperslidwerkplek hpwp,
|
||
prs_v_werkplek_gegevens wpg,
|
||
prs_v_aanwezigsrtperslid sp
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_afdeling_key1 = div.prs_afdeling_key
|
||
AND p.prs_perslid_key = hpwp.prs_perslid_key(+)
|
||
AND hpwp.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key) pl
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr emptype
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 301 -- 301 = Type_medewerker (fac_usrtab)
|
||
AND prs_kenmerk_key = 1040 -- 1040 = Type Medewerker (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f1
|
||
ON pl.prs_perslid_key = f1.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr regio
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 783 -- 783 = RegioVinder (fac_usrtab)
|
||
AND prs_kenmerk_key = 1193 -- 1193 = Regio (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f2
|
||
ON pl.prs_perslid_key = f2.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key,
|
||
afd.prs_afdeling_naam6 alt_afdeling,
|
||
div.prs_afdeling_naam6 alt_divisie
|
||
FROM prs_kenmerklink,
|
||
prs_v_aanwezigafdeling afd,
|
||
prs_v_afdeling_boom ab,
|
||
prs_v_aanwezigafdeling div
|
||
WHERE prs_kenmerk_key = 1173 -- 1173 = Alternatieve afdeling (S)
|
||
AND afd.prs_afdeling_key =
|
||
fac.safe_to_number (prs_kenmerklink_waarde)
|
||
AND ab.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND div.prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_kenmerklink_verwijder IS NULL) f3
|
||
ON pl.prs_perslid_key = f3.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key,
|
||
prs_srtperslid_omschrijving alt_functie
|
||
FROM prs_kenmerklink, prs_v_aanwezigsrtperslid
|
||
WHERE prs_kenmerk_key = 1192 -- 1192 = Alternatieve functie (S)
|
||
AND prs_srtperslid_key = prs_kenmerklink_waarde
|
||
AND prs_kenmerklink_verwijder IS NULL) f4
|
||
ON pl.prs_perslid_key = f4.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, prs_kenmerklink_waarde faxnr
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 7 -- 7 = Faxnr (C)
|
||
AND prs_kenmerklink_verwijder IS NULL) f7
|
||
ON pl.prs_perslid_key = f7.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr maandag
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 761 -- 761 = AanwezigOp (fac_usrtab)
|
||
AND prs_kenmerk_key = 1163 -- 1163 = Maandag (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f8
|
||
ON pl.prs_perslid_key = f8.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr dinsdag
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 761 -- 761 = AanwezigOp (fac_usrtab)
|
||
AND prs_kenmerk_key = 1164 -- 1164 = Dinsdag (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f9
|
||
ON pl.prs_perslid_key = f9.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr woensdag
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 761 -- 761 = AanwezigOp (fac_usrtab)
|
||
AND prs_kenmerk_key = 1165 -- 1165 = Woensdag (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f10
|
||
ON pl.prs_perslid_key = f10.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr donderdag
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 761 -- 761 = AanwezigOp (fac_usrtab)
|
||
AND prs_kenmerk_key = 1166 -- 1166 = Donderdag (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f11
|
||
ON pl.prs_perslid_key = f11.prs_link_key
|
||
LEFT JOIN (SELECT prs_link_key, fac_usrdata_omschr vrijdag
|
||
FROM fac_usrdata, prs_kenmerklink
|
||
WHERE fac_usrtab_key = 761 -- 761 = AanwezigOp (fac_usrtab)
|
||
AND prs_kenmerk_key = 1167 -- 1167 = Vrijdag (R)
|
||
AND prs_kenmerklink_waarde = fac_usrdata_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND prs_kenmerklink_verwijder IS NULL) f12
|
||
ON pl.prs_perslid_key = f12.prs_link_key;
|
||
|
||
-- View voor phonebook, met contactgegevens per afdeling
|
||
CREATE OR REPLACE VIEW uwva_v_rap_afd_contact
|
||
(
|
||
fclt_f_afdeling,
|
||
fclt_f_telefoonnummer,
|
||
fclt_f_emailadres,
|
||
fclt_3d_afdeling_key
|
||
)
|
||
AS
|
||
SELECT afdeling,
|
||
telefoonnummer,
|
||
mail,
|
||
prs_afdeling_key
|
||
FROM (SELECT afd.prs_afdeling_naam6 afdeling,
|
||
kml_tel.prs_kenmerklink_waarde telefoonnummer,
|
||
kml_mail.prs_kenmerklink_waarde mail,
|
||
afd.prs_afdeling_key
|
||
FROM prs_v_aanwezigafdeling afd,
|
||
prs_kenmerklink kml_tel,
|
||
prs_kenmerklink kml_mail
|
||
WHERE kml_tel.prs_link_key(+) = afd.prs_afdeling_key
|
||
AND kml_mail.prs_link_key(+) = afd.prs_afdeling_key
|
||
AND kml_tel.prs_kenmerk_key(+) = 1212 --PROD
|
||
AND kml_mail.prs_kenmerk_key(+) = 1213) --PROD
|
||
WHERE telefoonnummer IS NOT NULL OR mail IS NOT NULL;
|
||
|
||
|
||
-- UWVA#19010: Importfuncties voor provisioning met ABS
|
||
-- (mapping van ABS-rollen op Facilitor autorisatiegroepen en profielen)
|
||
CREATE OR REPLACE PROCEDURE uwva_import_rolprofiel (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
v_newline VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_buffercount NUMBER := 0;
|
||
c_commitbuffer NUMBER := 5; -- om de zoveel committen
|
||
-- De importvelden
|
||
v_rol VARCHAR2 (100);
|
||
v_profiel VARCHAR2 (100);
|
||
header_found BOOLEAN := FALSE;
|
||
BEGIN
|
||
-- Clear my previous imported rows
|
||
DELETE FROM uwva_imp_provisioning;
|
||
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_rol); -- rol
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_profiel); -- profiel
|
||
|
||
-- Skip until the header is found
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
IF UPPER (v_rol) = 'ROL'
|
||
AND UPPER (v_profiel) = 'PROFIELNAAM'
|
||
THEN
|
||
header_found := TRUE;
|
||
END IF;
|
||
ELSE
|
||
INSERT INTO uwva_imp_provisioning (rol,
|
||
naam)
|
||
VALUES (SUBSTR ( TRIM (v_rol), 1, 50),
|
||
SUBSTR ( TRIM (v_profiel), 1, 30));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
|
||
-- Elke c_commitbuffer regels committen
|
||
v_buffercount := v_buffercount + 1;
|
||
IF (v_buffercount >= c_commitbuffer)
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Aantal ingelezen regels: '
|
||
|| TO_CHAR (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,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_import_rolgroep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
v_newline VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_buffercount NUMBER := 0;
|
||
c_commitbuffer NUMBER := 5; -- om de zoveel committen
|
||
-- De importvelden
|
||
v_rol VARCHAR2 (100);
|
||
v_groep VARCHAR2 (100);
|
||
header_found BOOLEAN := FALSE;
|
||
BEGIN
|
||
-- Clear my previous imported rows
|
||
DELETE FROM uwva_imp_provisioning;
|
||
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_rol); -- rol
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_groep); -- groep
|
||
|
||
-- Skip until the header is found
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
IF UPPER (v_rol) = 'ROL'
|
||
AND UPPER (v_groep) = 'AUTHORISATIEGROEPNAAM'
|
||
THEN
|
||
header_found := TRUE;
|
||
END IF;
|
||
ELSE
|
||
INSERT INTO uwva_imp_provisioning (rol,
|
||
naam)
|
||
VALUES (SUBSTR ( TRIM (v_rol), 1, 50),
|
||
SUBSTR ( TRIM (v_groep), 1, 30));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
|
||
-- Elke c_commitbuffer regels committen
|
||
v_buffercount := v_buffercount + 1;
|
||
IF (v_buffercount >= c_commitbuffer)
|
||
THEN
|
||
COMMIT;
|
||
v_buffercount := 0;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Aantal ingelezen regels: '
|
||
|| TO_CHAR (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,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_rolprofiel (p_import_key IN NUMBER)
|
||
AS
|
||
-- Constanten
|
||
c_num_rows NUMBER := 10;
|
||
c_maxvariation NUMBER := 20;
|
||
c_commitbuffer NUMBER := 5;
|
||
-- om de zoveel committen
|
||
v_buffercount NUMBER := 0;
|
||
|
||
CURSOR c_rol
|
||
IS
|
||
SELECT rol,
|
||
naam
|
||
FROM uwva_imp_provisioning
|
||
WHERE naam IS NOT NULL;
|
||
|
||
v_rol_omschr VARCHAR2 (100);
|
||
recl c_rol%ROWTYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_count NUMBER (10);
|
||
v_update BOOLEAN;
|
||
v_aktie VARCHAR (10);
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
|
||
v_rol_naam VARCHAR2 (100);
|
||
v_profiel_key NUMBER (10);
|
||
|
||
BEGIN
|
||
-- Init
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
-- Zinnige data in importbestand?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_imp_provisioning
|
||
WHERE naam IS NOT NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Importtabel is leeg!',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Huidige mappings rol-->profiel verwijderen (dus alle regels zonder fac_groep_key)
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_provisioning
|
||
WHERE fac_groep_key IS NULL;
|
||
|
||
DELETE FROM uwva_provisioning
|
||
WHERE fac_groep_key IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Provisioning-tabel (profielen): ' || v_count || ' regels verwijderd',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
|
||
-- *** Rol-->Profiel ****************************************************************************
|
||
FOR recl IN c_rol
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Zoek groep';
|
||
|
||
v_rol_omschr := 'Rol/Profiel: '
|
||
|| recl.rol
|
||
|| '/' || recl.naam;
|
||
|
||
v_update := TRUE;
|
||
|
||
-- Bestaat profiel in fac_profiel?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM fac_profiel
|
||
WHERE UPPER(fac_profiel_omschrijving) = UPPER(recl.naam);
|
||
|
||
-- Nee --> error
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Profiel "' || recl.naam || '" bestaat niet!',
|
||
v_rol_omschr
|
||
);
|
||
ELSIF (v_count > 1)
|
||
THEN
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kan profiel "' || recl.naam || '" niet uniek bepalen!',
|
||
v_rol_omschr
|
||
);
|
||
END IF;
|
||
|
||
IF (v_update)
|
||
THEN
|
||
v_errormsg := 'Key profiel ophalen';
|
||
-- Haal profiel_key op uit fac_profiel
|
||
SELECT fac_profiel_key
|
||
INTO v_profiel_key
|
||
FROM fac_profiel
|
||
WHERE UPPER(fac_profiel_omschrijving) = UPPER(recl.naam);
|
||
|
||
v_errormsg := 'Toevoegen rol-->profiel';
|
||
-- Voeg rol-->profiel toe aan uwva_provisioning
|
||
INSERT INTO uwva_provisioning
|
||
(uwva_rol_omschr,
|
||
fac_profiel_key,
|
||
fac_groep_key)
|
||
VALUES (recl.rol,
|
||
v_profiel_key,
|
||
NULL);
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint
|
||
|| ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error '
|
||
|| oracle_err_num || '/' || oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_provisioning
|
||
WHERE fac_groep_key IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Provisioning-tabel (profielen): ' || v_count || ' regels toegevoegd',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint
|
||
|| ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error '
|
||
|| oracle_err_num || '/' || oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE uwva_update_rolgroep (p_import_key IN NUMBER)
|
||
AS
|
||
-- Constanten
|
||
c_num_rows NUMBER := 10;
|
||
c_maxvariation NUMBER := 20;
|
||
c_commitbuffer NUMBER := 5;
|
||
-- om de zoveel committen
|
||
v_buffercount NUMBER := 0;
|
||
|
||
CURSOR c_rol
|
||
IS
|
||
SELECT rol,
|
||
naam
|
||
FROM uwva_imp_provisioning
|
||
WHERE naam IS NOT NULL;
|
||
|
||
v_rol_omschr VARCHAR2 (100);
|
||
recl c_rol%ROWTYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_count NUMBER (10);
|
||
v_update BOOLEAN;
|
||
v_aktie VARCHAR (10);
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
|
||
v_rol_naam VARCHAR2 (100);
|
||
v_groep_key NUMBER (10);
|
||
|
||
BEGIN
|
||
-- Init
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
-- Zinnige data in importbestand?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_imp_provisioning
|
||
WHERE naam IS NOT NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Importtabel is leeg!',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Huidige mappings rol-->groep verwijderen (dus alle regels zonder fac_groep_key)
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_provisioning
|
||
WHERE fac_profiel_key IS NULL;
|
||
|
||
DELETE FROM uwva_provisioning
|
||
WHERE fac_profiel_key IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Provisioning-tabel (groepen): ' || v_count || ' regels verwijderd',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
|
||
-- *** Rol-->Groep ****************************************************************************
|
||
FOR recl IN c_rol
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Zoek groep';
|
||
|
||
v_rol_omschr := 'Rol/Groep: '
|
||
|| recl.rol
|
||
|| '/' || recl.naam;
|
||
|
||
v_update := TRUE;
|
||
|
||
-- Bestaat groep in fac_groep?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM fac_groep
|
||
WHERE UPPER(fac_groep_omschrijving) = UPPER(recl.naam);
|
||
|
||
-- Nee --> error
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Groep "' || recl.naam || '" bestaat niet!',
|
||
v_rol_omschr
|
||
);
|
||
ELSIF (v_count > 1)
|
||
THEN
|
||
v_update := FALSE;
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kan groep "' || recl.naam || '" niet uniek bepalen!',
|
||
v_rol_omschr
|
||
);
|
||
END IF;
|
||
|
||
IF (v_update)
|
||
THEN
|
||
v_errormsg := 'Key groep ophalen';
|
||
-- Haal groep_key op uit fac_groep
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER(fac_groep_omschrijving) = UPPER(recl.naam);
|
||
|
||
v_errormsg := 'Toevoegen rol-->groep';
|
||
-- Voeg rol-->groep toe aan uwva_provisioning
|
||
INSERT INTO uwva_provisioning
|
||
(uwva_rol_omschr,
|
||
fac_profiel_key,
|
||
fac_groep_key)
|
||
VALUES (recl.rol,
|
||
NULL,
|
||
v_groep_key);
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint
|
||
|| ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error '
|
||
|| oracle_err_num || '/' || oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM uwva_provisioning
|
||
WHERE fac_profiel_key IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Provisioning-tabel (groepen): ' || v_count || ' regels toegevoegd',
|
||
currentversion || ', $Revision$'
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint
|
||
|| ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error '
|
||
|| oracle_err_num || '/' || oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW uwva_v_rap_provisioning
|
||
AS
|
||
SELECT up.uwva_rol_omschr fclt_f_rol,
|
||
fp.fac_profiel_omschrijving fclt_f_profiel,
|
||
fg.fac_groep_omschrijving fclt_f_authorisatiegroep
|
||
FROM uwva_provisioning up, fac_profiel fp, fac_groep fg
|
||
WHERE up.fac_profiel_key = fp.fac_profiel_key(+)
|
||
AND up.fac_groep_key = fg.fac_groep_key(+)
|
||
ORDER BY 1, 2, 3;
|
||
|
||
|
||
-- UWVA#21045: Vinder-export voor ABS
|
||
-- UWVA#24931: ABS-ID met voorloopnullen
|
||
-- UWVA#40346: Toestel-kolom zomder data
|
||
CREATE OR REPLACE VIEW uwva_v_export_vinder2abs
|
||
(
|
||
RESULT,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '"ABS-ID","Telefoon","Mobielnr","Toestel"', 0 FROM DUAL
|
||
UNION ALL
|
||
SELECT '"'
|
||
|| LPAD( kl1.prs_kenmerklink_waarde, 8, '0' )
|
||
|| '","'
|
||
|| p.prs_perslid_telefoonnr
|
||
|| '","'
|
||
|| p.prs_perslid_mobiel
|
||
|| '","'
|
||
|| '"',
|
||
1
|
||
FROM (SELECT *
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL) p
|
||
LEFT OUTER JOIN (SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1232) kl1
|
||
ON kl1.prs_link_key = p.prs_perslid_key;
|
||
|
||
|
||
-- UWVA#22892: Noti geschoond mandaat naar (onder)gemandateerde bij wijziging
|
||
-- van afdeling op basis van gegevens uit eigen tabel zoals gevuld
|
||
-- tijdens ABS-import (via rapportage), zo is dat!
|
||
/* Formatted on 12-6-2012 16:18:12 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW uwva_v_rap_geschoond_mandaat
|
||
(
|
||
hide_f_prs_key,
|
||
fclt_f_prs_naam_full,
|
||
cur_afd_naam,
|
||
cur_afd_oms,
|
||
cur_kpn_nr,
|
||
cur_kpn_oms,
|
||
old_afd_naam,
|
||
old_afd_oms,
|
||
old_kpn_nr,
|
||
old_kpn_oms,
|
||
hide_f_kpn_key,
|
||
kpn_nr,
|
||
kpn_oms,
|
||
kpn_boeken,
|
||
kpn_inzage,
|
||
budgethouder
|
||
)
|
||
AS
|
||
SELECT pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
cur_a.prs_afdeling_naam,
|
||
cur_a.prs_afdeling_omschrijving,
|
||
cur_k.prs_kostenplaats_nr,
|
||
cur_k.prs_kostenplaats_omschrijving,
|
||
old_a.prs_afdeling_naam,
|
||
old_a.prs_afdeling_omschrijving,
|
||
old_k.prs_kostenplaats_nr,
|
||
old_k.prs_kostenplaats_omschrijving,
|
||
k.prs_kostenplaats_key,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
ud.boeken,
|
||
ud.inzage,
|
||
bh.prs_perslid_naam_full
|
||
FROM (SELECT fac.safe_to_number(SUBSTR (
|
||
fac_usrdata_code,
|
||
1,
|
||
INSTR (fac_usrdata_code, '-') - 1
|
||
))
|
||
prs_perslid_key,
|
||
fac.safe_to_number (fac_usrdata_omschr)
|
||
prs_afdeling_key,
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_usrdata_code,
|
||
INSTR (fac_usrdata_code, '-') + 1
|
||
))
|
||
prs_kostenplaats_key,
|
||
fac_usrdata_volgnr boeken,
|
||
fac_usrdata_prijs inzage
|
||
FROM fac_v_aanwezigusrdata
|
||
WHERE fac_usrtab_key = 3
|
||
AND TRUNC (fac_usrdata_aanmaak) = TRUNC (SYSDATE)) ud,
|
||
prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_afdeling cur_a,
|
||
prs_afdeling old_a,
|
||
prs_kostenplaats cur_k,
|
||
prs_kostenplaats old_k,
|
||
prs_kostenplaats k,
|
||
prs_v_perslid_fullnames_all bh
|
||
WHERE ud.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = cur_a.prs_afdeling_key
|
||
AND cur_a.prs_kostenplaats_key = cur_k.prs_kostenplaats_key(+)
|
||
AND ud.prs_afdeling_key = old_a.prs_afdeling_key
|
||
AND old_a.prs_kostenplaats_key = old_k.prs_kostenplaats_key(+)
|
||
AND ud.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND k.prs_perslid_key = bh.prs_perslid_key(+);
|
||
|
||
/* Formatted on 11-6-2012 15:26:45 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE VIEW uwva_v_noti_geschoond_mandaat
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
KEY,
|
||
par1,
|
||
par2,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
x.hide_f_prs_key,
|
||
sn.fac_srtnotificatie_oms,
|
||
x.hide_f_prs_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM uwva_v_rap_geschoond_mandaat x, fac_srtnotificatie sn
|
||
WHERE sn.fac_srtnotificatie_code = 'CUST13';
|
||
|
||
CREATE OR REPLACE VIEW uwva_v_noti_prs_inactalg
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
par1,
|
||
par2,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT 'CUST26',
|
||
NULL,
|
||
p2.prs_perslid_key,
|
||
'Medewerker gekoppeld aan gesloten pand ('
|
||
|| pf.prs_perslid_naam_friendly
|
||
|| ')',
|
||
p.prs_perslid_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM prs_perslidwerkplek pw,
|
||
prs_werkplek w,
|
||
alg_v_allonrgoed_gegevens aog,
|
||
alg_gebouw g,
|
||
alg_srtgebouw sg,
|
||
prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
prs_v_aanwezigperslid p2,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = aog.alg_ruimte_key
|
||
AND aog.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key
|
||
AND sg.alg_srtgebouw_passief = 1
|
||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND k.prs_perslid_key = p2.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND pw.prs_perslidwerkplek_volgnr = 2
|
||
UNION
|
||
SELECT 'CUST27',
|
||
NULL,
|
||
p.prs_perslid_key,
|
||
'Account gekoppeld aan gesloten pand',
|
||
p.prs_perslid_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM prs_perslidwerkplek pw,
|
||
prs_werkplek w,
|
||
alg_v_allonrgoed_gegevens aog,
|
||
alg_gebouw g,
|
||
alg_srtgebouw sg,
|
||
prs_v_aanwezigperslid p
|
||
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = aog.alg_ruimte_key
|
||
AND aog.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key
|
||
AND sg.alg_srtgebouw_passief = 1
|
||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw.prs_perslidwerkplek_volgnr = 2;
|
||
|
||
------ 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
|