UWVA63431 -- Andover toegangscontrole zaken uit ABS import gehaald

svn path=/Customer/trunk/; revision=48423
This commit is contained in:
Robin Stoker
2020-10-08 10:21:53 +00:00
parent 6a92ee7103
commit caaef887dc

View File

@@ -3451,78 +3451,6 @@ SELECT hrmloc.prs_perslid_key,
AND imp.status = 'A'
ORDER BY 2;
-- Aanmaken pas-object voor nieuwe medewerkers op Andover-CMS enabled pand.
CURSOR abs_pas_mdw
IS
SELECT DISTINCT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p, prs_v_werkplekperslid_gegevens ps, alg_onrgoedkenmerk ao, prs_kenmerklink pk, uwva_imp_abs uia
WHERE p.prs_perslid_aanmaak >= SYSDATE - (3 / 24) -- Afgelopen 3 uur aangemaakt
AND p.prs_perslid_key = ps.prs_perslid_key
AND ps.prs_werkplek_volgnr = 2 -- HRM-WP
AND ps.alg_locatie_key = ao.alg_onrgoed_key
AND ao.alg_onrgoed_niveau = 'L'
AND ao.alg_kenmerk_key = 1580 -- Toegangscontrole systeem
AND ao.alg_onrgoedkenmerk_waarde = 28809 -- Andover-CMS
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerk_key = 1232 -- ABS-ID
AND pk.prs_kenmerklink_waarde = uia.id
AND SUBSTR (uia.empnum, 1, 1) IN ('C', 'I', 'E', 'F', 'D', 'K', 'W')
--AND p.prs_perslid_key NOT IN (SELECT ins_alg_ruimte_key
-- FROM ins_deel
-- WHERE ins_srtdeel_key = 258998)
AND NOT EXISTS (SELECT 1 -- Niet al een NIET VERWIJDERDE pas!
FROM ins_v_aanwezigdeel
WHERE ins_srtdeel_key = 259000 -- Toegangspas Andover
AND ins_alg_ruimte_type = 'P'
AND ins_alg_ruimte_key = p.prs_perslid_key)
ORDER BY 1;
-- Aanmaken pas-object voor bestaande medewerkers op Andover-CMS enabled pand (verhuisd).
CURSOR abs_pas_mdw_bestaand
IS
SELECT DISTINCT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p, prs_perslidwerkplek pw, prs_v_werkplekperslid_gegevens ps, alg_onrgoedkenmerk ao, prs_kenmerklink pk, uwva_imp_abs uia
WHERE p.prs_perslid_aanmaak < SYSDATE - (3 / 24) -- Eerder al eens aangemaakt
AND p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_perslidwerkplek_volgnr = 2 -- HRM-WP
AND pw.prs_perslidwerkplek_aanmaak >= SYSDATE - (3 / 24) -- Afgelopen 3 uur aangemaakt
AND pw.prs_perslidwerkplek_key = ps.prs_perslidwerkplek_key
AND ps.alg_locatie_key = ao.alg_onrgoed_key
AND ao.alg_onrgoed_niveau = 'L'
AND ao.alg_kenmerk_key = 1580 -- Toegangscontrole systeem
AND ao.alg_onrgoedkenmerk_waarde = 28809 -- Andover-CMS
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerk_key = 1232 -- ABS-ID
AND pk.prs_kenmerklink_waarde = uia.id
AND SUBSTR (uia.empnum, 1, 1) IN ('C', 'I', 'E', 'F', 'D', 'K', 'W')
--AND p.prs_perslid_key NOT IN (SELECT ins_alg_ruimte_key
-- FROM ins_deel
-- WHERE ins_srtdeel_key = 258998)
AND NOT EXISTS (SELECT 1 -- Niet al een NIET VERWIJDERDE pas!
FROM ins_v_aanwezigdeel
WHERE ins_srtdeel_key = 259000 -- Toegangspas Andover
AND ins_alg_ruimte_type = 'P'
AND ins_alg_ruimte_key = p.prs_perslid_key)
ORDER BY 1;
-- Deactiveren/blokkeren extra actieve pas(sen) van medewerkers; alleen de nieuwste/hoogste ins_deel_key blijft behouden/actief.
-- NB. Medewerkers die verhuizen naar een pand zonder Andover behouden gewoon hun pas.
-- NB. Passen met status Vermist of Defect worden niet door ABS-import geblokkeerd.
CURSOR abs_pas_disable
IS
SELECT i.ins_deel_key, p.prs_perslid_key, 'Dubbele pas' aanduiding
FROM ins_v_aanwezigdeel i, prs_perslid p
WHERE i.ins_srtdeel_key = 259000 -- Toegangspas Andover
AND i.ins_alg_ruimte_type = 'P'
AND i.ins_alg_ruimte_key = p.prs_perslid_key
AND EXISTS (SELECT 1 -- Er bestaat een nieuwere pas
FROM ins_v_aanwezigdeel
WHERE ins_srtdeel_key = 259000
AND ins_alg_ruimte_type = 'P'
AND ins_alg_ruimte_key = i.ins_alg_ruimte_key
AND ins_deel_key > i.ins_deel_key)
ORDER BY 1;
v_prs_omschr VARCHAR2 (150);
v_perslid prs_perslid%ROWTYPE;
v_perslid_key NUMBER (10);
@@ -4303,60 +4231,6 @@ BEGIN
'Persoon verwijderd.',
v_prs_omschr);
ELSE
FOR rec IN (
SELECT i.ins_deel_key, i.ins_deel_omschrijving, ik.ins_kenmerkdeel_waarde uitgifte, 'Uitdienst' aanduiding
FROM ins_v_aanwezigdeel i, ins_v_aanwezigkenmerkdeel ik
WHERE i.ins_srtdeel_key = 259000 -- Toegangspas Andover
AND i.ins_alg_ruimte_type = 'P'
AND i.ins_alg_ruimte_key = v_perslid_key
AND i.ins_deel_key = ik.ins_deel_key
AND ik.ins_kenmerk_key = 502) -- Uitgifte
LOOP
BEGIN
v_errormsg := 'Blokkeren pas NIET gelukt';
-- Ophalen passtatus voordat deze op Geblokkeerd wordt gezet (v_deelstat) tbv. logging.
SELECT f.fac_usrdata_omschr
INTO v_deelstat
FROM fac_usrdata f, ins_kenmerkdeel ik
WHERE f.fac_usrdata_key = ik.ins_kenmerkdeel_waarde
AND ik.ins_kenmerk_key = 489
AND ik.ins_deel_key = rec.ins_deel_key;
-- Status-kenmerk op Geblokkeerd zetten.
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = '29875' -- Geblokkeerd
WHERE ins_kenmerk_key = 489 AND ins_deel_key = rec.ins_deel_key;
fac.trackaction ('INSUPD', rec.ins_deel_key, NULL, NULL, 'Status gewijzigd: ' || v_deelstat || ' --> Geblokkeerd');
IF rec.uitgifte = '29742' -- Nog Uitgegeven?
THEN
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || rec.ins_deel_omschrijving || ' geblokkeerd voor medewerker met key ' || TO_CHAR (v_perslid_key), rec.aanduiding);
ELSE
v_errormsg := 'Verwijderen pas NIET gelukt';
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE,
ins_deel_vervaldatum = SYSDATE
WHERE ins_deel_key = rec.ins_deel_key;
fac.trackaction ('INSDEL', rec.ins_deel_key, NULL, NULL, NULL);
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || rec.ins_deel_omschrijving || ' verwijderd voor medewerker met key ' || TO_CHAR (v_perslid_key), rec.aanduiding);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, rec.aanduiding);
END;
END LOOP;
v_errorhint := 'Actuele verplichtingen zoeken';
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
@@ -4744,58 +4618,7 @@ BEGIN
UPDATE prs_perslid
SET prs_perslid_ingids = DECODE (rec_upd.employeetype, 'K', NULL, 1)
WHERE prs_perslid_key = v_perslid.prs_perslid_key;
-- Heractiveren van eventuele inactieve pas.
BEGIN
v_errormsg := 'Heractiveren pas NIET gelukt';
SELECT MAX (i.ins_deel_key)
INTO v_deelkey
FROM ins_deel i -- Ook een verwijderde pas kan worden gereanimeerd!
WHERE i.ins_srtdeel_key = 259000 -- Toegangspas Andover
AND i.ins_alg_ruimte_type = 'P'
AND i.ins_alg_ruimte_key = v_perslid.prs_perslid_key
AND NOT EXISTS (SELECT 1 -- Geen defecte/vermiste pas
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerkdeel_waarde IN ('29874', '29877') -- Defect/Vermist
AND ins_kenmerk_key = 489 -- Status
AND ins_deel_key = i.ins_deel_key);
IF v_deelkey IS NOT NULL
THEN
UPDATE ins_deel
SET ins_deel_actief = 1,
ins_deel_verwijder = NULL
WHERE ins_deel_key = v_deelkey;
-- Ophalen passtatus voordat deze op Actief wordt gezet (v_deelstat) tbv. logging.
SELECT f.fac_usrdata_omschr, i.ins_deel_omschrijving
INTO v_deelstat, v_deeloms
FROM fac_usrdata f, ins_kenmerkdeel ik, ins_deel i
WHERE TO_CHAR (f.fac_usrdata_key) = ik.ins_kenmerkdeel_waarde
AND ik.ins_kenmerk_key = 489
AND ik.ins_deel_key = i.ins_deel_key
AND i.ins_deel_key = v_deelkey;
-- Ook Status-kenmerk op Actief zetten.
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = '29873' -- Actief
WHERE ins_kenmerk_key = 489 AND ins_deel_key = v_deelkey;
fac.trackaction ('INSUPD', v_deelkey, NULL, NULL, 'Object geheractiveerd, status: ' || v_deelstat || ' --> Actief');
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || v_deeloms || ' geheractiveerd voor medewerker met key ' || TO_CHAR (v_perslid.prs_perslid_key), 'Heractiveren');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
END;
v_errormsg := 'Persoon wordt gereactiveerd.';
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_prs_omschr);
END IF;
@@ -6018,187 +5841,7 @@ BEGIN
v_errormsg := '';
END;
END LOOP;
-- Nieuw pas-object aanmaken en toekennen aan nieuwe medewerker (werkzaam op een Andover-CMS enabled pand).
FOR rec IN abs_pas_mdw
LOOP
BEGIN
v_errormsg := 'Aanmaken pas nieuwe medewerker NIET gelukt';
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
INSERT INTO ins_deel (ins_deel_module,
ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_deel_omschrijving,
ins_deel_actief)
VALUES ('INS',
259000, -- Toegangspas
rec.prs_perslid_key,
'P',
'XXXX' || TO_CHAR (v_count),
1) -- Actief
RETURNING ins_deel_key, ins_deel_omschrijving
INTO v_deelkey, v_deeloms;
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (489, -- Status
29873, -- Actief
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (490, -- Template
29072, -- Medewerker
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (501, -- Sitecode
29879, -- 171
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (502, -- Uitgifte
29739, -- Aangemaakt
v_deelkey);
fac.trackaction ('INSNEW', v_deelkey, NULL, NULL, NULL);
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || v_deeloms || ' aangemaakt voor medewerker met key ' || TO_CHAR (rec.prs_perslid_key), 'Pas nieuwe medewerker');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'abs_pas_mdw');
END;
END LOOP;
COMMIT;
-- Nieuw pas-object aanmaken en toekennen aan bestaande medewerker die is verhuisd naar een Andover-CMS enabled pand.
FOR rec IN abs_pas_mdw_bestaand
LOOP
BEGIN
v_errormsg := 'Aanmaken pas bestaande medewerker NIET gelukt';
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
INSERT INTO ins_deel (ins_deel_module,
ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_deel_omschrijving,
ins_deel_actief)
VALUES ('INS',
259000, -- Toegangspas
rec.prs_perslid_key,
'P',
'XXXX' || TO_CHAR (v_count),
1) -- Actief
RETURNING ins_deel_key, ins_deel_omschrijving
INTO v_deelkey, v_deeloms;
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (489, -- Status
29873, -- Actief
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (490, -- Template
29072, -- Medewerker
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (501, -- Sitecode
29879, -- 171
v_deelkey);
INSERT INTO ins_kenmerkdeel (ins_kenmerk_key,
ins_kenmerkdeel_waarde,
ins_deel_key)
VALUES (502, -- Uitgifte
29739, -- Aangemaakt
v_deelkey);
fac.trackaction ('INSNEW', v_deelkey, NULL, NULL, NULL);
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || v_deeloms || ' aangemaakt voor medewerker met key ' || TO_CHAR (rec.prs_perslid_key), 'Pas verhuisde medewerker');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'abs_pas_mdw_bestaand');
END;
END LOOP;
COMMIT;
-- Deactiveren/blokkeren extra actieve pas(sen) van medewerkers; alleen de nieuwste/hoogste ins_deel_key blijft behouden/actief.
-- NB. Medewerkers die verhuizen naar een pand zonder Andover behouden gewoon hun pas.
-- NB. Passen met status Vermist of Defect worden niet door ABS-import geblokkeerd.
FOR rec IN abs_pas_disable
LOOP
BEGIN
v_errormsg := 'Deactiveren pas NIET gelukt';
-- Ophalen passtatus voordat deze op Geblokkeeerd wordt gezet (v_deelstat) tbv. logging.
SELECT f.fac_usrdata_omschr
INTO v_deelstat
FROM fac_usrdata f, ins_kenmerkdeel ik
WHERE f.fac_usrdata_key = ik.ins_kenmerkdeel_waarde
AND ik.ins_kenmerk_key = 489
AND ik.ins_deel_key = rec.ins_deel_key;
-- Status-kenmerk op Geblokkeerd zetten.
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = '29875' -- Geblokkeerd
WHERE ins_kenmerk_key = 489 AND ins_deel_key = rec.ins_deel_key;
fac.trackaction ('INSUPD', rec.ins_deel_key, NULL, NULL, 'Status gewijzigd: ' || v_deelstat || ' --> Geblokkeerd');
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE,
ins_deel_vervaldatum = SYSDATE
WHERE ins_deel_key = rec.ins_deel_key
RETURNING ins_deel_omschrijving
INTO v_deeloms;
fac.trackaction ('INSDEL', rec.ins_deel_key, NULL, NULL, NULL);
fac.imp_writelog (p_import_key, 'I',
'Toegangspas ' || v_deeloms || ' verwijderd voor medewerker met key ' || TO_CHAR (rec.prs_perslid_key), rec.aanduiding);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, 'abs_pas_disable/' || rec.aanduiding);
END;
END LOOP;
COMMIT;
SELECT COUNT ( * )
INTO nrbh1
FROM fac_gebruikersgroep