UWVA#86694 ABS(IIQ)-import/Afnemen autorisatiegroepen

svn path=/Customer/trunk/; revision=67315
This commit is contained in:
Maarten van der Heide
2024-12-06 08:50:47 +00:00
parent 2acdc1eb27
commit 0514b0510d

View File

@@ -503,7 +503,7 @@ BEGIN
lkostenplaatskey := -1;
WHEN TOO_MANY_ROWS
THEN
-- Meer dan <20><>n verwijderde instantie, dan heeft iemand zeer
-- 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);
@@ -790,7 +790,7 @@ BEGIN
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
-- Haal die dus <20><>n laag omhoog (oftewel zet 'niveau-6' afdelingen
-- naast hun parent in afdelingsniveau 5).
IF (rc.niveau6 = 1)
THEN
@@ -1058,13 +1058,13 @@ AS
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errmes VARCHAR(1024);
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_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
@@ -1210,7 +1210,6 @@ 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
@@ -1219,8 +1218,7 @@ AS
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 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
@@ -1231,39 +1229,34 @@ AS
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 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);
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
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
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 = 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;
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
@@ -1273,26 +1266,21 @@ BEGIN
fac.imp_writelog (p_import_key,
'E',
'Kan login niet aanpassen ' || v_errormsg,
'Personeelsnummer: ' || rc.prs_perslid_nr || ' login: ' || rc.prs_perslid_oslogin
);
'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,
''
);
fac.imp_writelog (p_import_key, 'S', 'Aantal aangepaste logins: ' || v_aantal, '');
v_aantal := 0;
FOR rc IN c_email
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;
AND prs_perslid_verwijder IS NULL;
v_aantal := v_aantal + 1;
EXCEPTION
WHEN OTHERS
@@ -1301,21 +1289,13 @@ BEGIN
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Kan emailadres niet aanpassen ' || v_errormsg,
'Personeelnummer: ' || rc.prs_perslid_nr || ' email: ' || rc.prs_perslid_email
);
'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,
''
);
commit;
fac.imp_writelog (p_import_key, 'S', 'Aantal aangepaste emailadressen: ' || v_aantal, '');
END;
/
@@ -2562,7 +2542,7 @@ CREATE OR REPLACE VIEW uwva_v_rap_uitdienst
kpn_oms,
verplichting
)
AS -- Voorgaande import uitdienst <20>n lopende/actuele verplichtingen!
AS -- Voorgaande import uitdienst <20>n lopende/actuele verplichtingen!
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
kl2.prs_kenmerklink_waarde,
@@ -3213,8 +3193,8 @@ BEGIN
-- 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.
-- 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
@@ -3979,7 +3959,20 @@ AS
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,
@@ -3990,7 +3983,22 @@ AS
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
@@ -4021,7 +4029,7 @@ AS
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_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
@@ -4122,7 +4130,7 @@ BEGIN
FROM uwva_imp_abs
;
-- Aantal actieve, potentieel matchbare personen in Facilitor
-- (dus m<>t account en/of personeelsnummer en met een juist werknemertype)
-- (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
@@ -4172,14 +4180,14 @@ BEGIN
FROM uwva_imp_abs
WHERE empnum = rec_upd.empnum);
-- Niet uniek --> error
IF v_count != 1
-- 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 --> komt het ook (uniek) voor in Facilitor?
-- 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.
@@ -4377,13 +4385,13 @@ BEGIN
-- *** 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
-- 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
-- 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
-- (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
@@ -4732,7 +4740,7 @@ AS
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)
TO_CHAR (p.prs_perslid_key)
FROM prs_v_aanwezigperslid p,
prs_v_perslid_fullnames_all pf,
prs_afdeling d