CIZN#81269 -- Implementatie CIZ
svn path=/Customer/trunk/; revision=65815
This commit is contained in:
314
CIZN/cizn.sql
314
CIZN/cizn.sql
@@ -26,38 +26,124 @@ SET DEFINE OFF
|
||||
CREATE OR REPLACE PACKAGE CIZN
|
||||
AS
|
||||
PROCEDURE update_devices_from_ad;
|
||||
PROCEDURE select_asset_jaar_not;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY CIZN
|
||||
AS
|
||||
PROCEDURE update_devices_from_ad
|
||||
AS
|
||||
CURSOR c IS
|
||||
SELECT i.serialnumber,
|
||||
CAST (
|
||||
FROM_TZ (CAST (TO_DATE (REPLACE (i.lastsyncdatetime, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
||||
AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime,
|
||||
i.userDisplayName,
|
||||
i.emailaddress,
|
||||
i.phoneNumber,
|
||||
i.imei,
|
||||
i.manufacturer,
|
||||
i.model,
|
||||
d.ins_deel_key
|
||||
FROM cizn_imp_device_info i, ins_deel d
|
||||
WHERE serialnumber = COALESCE (ins_deel_opmerking, 'QueQuLeQue');
|
||||
PROCEDURE update_devices_from_ad
|
||||
AS
|
||||
CURSOR c IS
|
||||
SELECT i.serialnumber,
|
||||
CAST (
|
||||
FROM_TZ (CAST (TO_DATE (REPLACE (i.lastsyncdatetime, 'Z'), 'yyyy-mm-dd"T"hh24:mi:ss') AS TIMESTAMP), 'UTC')
|
||||
AT TIME ZONE 'Europe/Amsterdam' AS DATE) lastLocalSyncDateTime,
|
||||
i.userDisplayName,
|
||||
i.emailaddress,
|
||||
i.phoneNumber,
|
||||
i.imei,
|
||||
i.manufacturer,
|
||||
i.model,
|
||||
d.ins_deel_key
|
||||
FROM cizn_imp_device_info i, ins_deel d
|
||||
WHERE serialnumber = COALESCE (ins_deel_opmerking, 'QueQuLeQue');
|
||||
|
||||
BEGIN
|
||||
FOR rec IN c LOOP
|
||||
FLX.setflex('INS', 47, rec.ins_deel_key, rec.lastLocalSyncDateTime);
|
||||
FLX.setflex('INS', 45, rec.ins_deel_key, rec.userDisplayName);
|
||||
FLX.setflex('INS', 44, rec.ins_deel_key, rec.imei);
|
||||
FLX.setflex('INS', 82, rec.ins_deel_key, rec.manufacturer);
|
||||
FLX.setflex('INS', 81, rec.ins_deel_key, rec.model);
|
||||
UPDATE ins_deel SET ins_deel_externsyncdate = SYSDATE WHERE ins_deel_key = rec.ins_deel_key;
|
||||
END LOOP;
|
||||
END;
|
||||
|
||||
-- Procedure om ieder jaar een notificatie te sturen naar personen die <20><>n of meerdere voorzieningen
|
||||
-- in hun bezit hebben. Als een persoon al eerder een notificiatie ontvangen heeft omdat er een voorziening
|
||||
-- op zijn/haar naam is gezet CUST03 of omdat er een voorziening is ingeleverd CUST04, dan zal dit als laatste
|
||||
-- notificatiemoment genomen worden. Om het systeem op te starten wordt vanaf 4 juli per week een letter uit het
|
||||
-- alfabet genotificeerd.
|
||||
PROCEDURE select_asset_jaar_not
|
||||
AS
|
||||
CURSOR c_jaar IS
|
||||
SELECT *
|
||||
FROM (SELECT DISTINCT
|
||||
p.prs_perslid_key,
|
||||
p.prs_perslid_email,
|
||||
ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64,
|
||||
prs_perslid_naam,
|
||||
-- De positie van de letter in het alfabet: (ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64)
|
||||
TO_DATE ('2023-07-04', 'yyyy-mm-dd') + (ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64) * 7
|
||||
ddefault,
|
||||
GREATEST (
|
||||
COALESCE (
|
||||
FAC.gettrackingdate ('CUST03', p.prs_perslid_key),
|
||||
TO_DATE ('2023-07-04', 'yyyy-mm-dd') + (ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64) * 7),
|
||||
COALESCE (
|
||||
FAC.gettrackingdate ('CUST04', p.prs_perslid_key),
|
||||
TO_DATE ('2023-07-04', 'yyyy-mm-dd') + (ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64) * 7),
|
||||
COALESCE (
|
||||
FAC.gettrackingdate ('CUST05', p.prs_perslid_key),
|
||||
TO_DATE ('2023-07-04', 'yyyy-mm-dd') + (ASCII (UPPER (SUBSTR (prs_perslid_naam, 1, 1))) - 64) * 7))
|
||||
laatsteNot
|
||||
FROM prs_perslid p, ins_deel_uitgifte u
|
||||
WHERE p.prs_perslid_key = u.prs_perslid_key
|
||||
AND ins_deel_uitgifte_ingeleverd IS NULL
|
||||
AND prs_perslid_inactief IS NULL
|
||||
AND prs_perslid_verwijder IS NULL
|
||||
AND prs_perslid_email IS NOT NULL)
|
||||
WHERE laatsteNot + 355 < SYSDATE;
|
||||
|
||||
v_cust06_key NUMBER;
|
||||
v_rapport_key NUMBER;
|
||||
v_timestamp DATE;
|
||||
BEGIN
|
||||
v_timestamp := SYSDATE;
|
||||
|
||||
SELECT fac_srtnotificatie_key
|
||||
INTO v_cust06_key
|
||||
FROM fac_srtnotificatie
|
||||
WHERE fac_srtnotificatie_code = 'CUST06';
|
||||
|
||||
SELECT fac_usrrap_key
|
||||
INTO v_rapport_key
|
||||
FROM fac_usrrap
|
||||
WHERE fac_usrrap_code = 'ICTJAARNOT';
|
||||
|
||||
FOR rec IN c_jaar
|
||||
LOOP
|
||||
|
||||
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
||||
fac_notificatie_status,
|
||||
fac_notificatie_oms,
|
||||
fac_notificatie_refkey,
|
||||
fac_notificatie_extrakey,
|
||||
fac_notificatie_datum,
|
||||
prs_perslid_key_receiver,
|
||||
fac_notificatie_receiver_email,
|
||||
fac_notificatie_sender_email)
|
||||
VALUES (v_cust06_key,
|
||||
2,
|
||||
'Jaarlijkse controle ICT voorzieningen',
|
||||
v_rapport_key,
|
||||
rec.prs_perslid_key,
|
||||
v_timestamp,
|
||||
rec.prs_perslid_key,
|
||||
rec.prs_perslid_email,
|
||||
'servicedesk@ciz.nl');
|
||||
|
||||
FAC.trackaction ('CUST05',
|
||||
rec.prs_perslid_key,
|
||||
NULL,
|
||||
v_timestamp,
|
||||
'Jaarlijkse controle ICT voorzieningen');
|
||||
END LOOP;
|
||||
|
||||
END;
|
||||
|
||||
|
||||
BEGIN
|
||||
FOR rec IN c LOOP
|
||||
FLX.setflex('INS', 47, rec.ins_deel_key, rec.lastLocalSyncDateTime);
|
||||
FLX.setflex('INS', 45, rec.ins_deel_key, rec.userDisplayName);
|
||||
FLX.setflex('INS', 44, rec.ins_deel_key, rec.imei);
|
||||
FLX.setflex('INS', 82, rec.ins_deel_key, rec.manufacturer);
|
||||
FLX.setflex('INS', 81, rec.ins_deel_key, rec.model);
|
||||
UPDATE ins_deel SET ins_deel_externsyncdate = SYSDATE WHERE ins_deel_key = rec.ins_deel_key;
|
||||
END LOOP;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -112,18 +198,17 @@ SELECT 'bezoekers' typebezoek,
|
||||
ELSE NULL
|
||||
END
|
||||
END datum_te_laat
|
||||
FROM bez_bezoekers b,
|
||||
bez_afspraak a,
|
||||
res_rsv_deel rrd,
|
||||
res_deel rd,
|
||||
ins_v_deel_gegevens dg,
|
||||
alg_locatie l
|
||||
FROM bez_bezoekers b,
|
||||
bez_afspraak a,
|
||||
res_v_aanwezigrsv_deel rrd,
|
||||
res_deel rd,
|
||||
ins_v_deel_gegevens dg,
|
||||
alg_locatie l
|
||||
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
||||
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
|
||||
AND rrd.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_ins_deel_key = dg.ins_deel_key
|
||||
AND dg.alg_locatie_key = l.alg_locatie_key
|
||||
AND rrd.res_rsv_deel_verwijder IS NULL;
|
||||
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key(+)
|
||||
AND rrd.res_deel_key = rd.res_deel_key(+)
|
||||
AND rd.res_ins_deel_key = dg.ins_deel_key(+)
|
||||
AND a.alg_locatie_key = l.alg_locatie_key(+);
|
||||
|
||||
-- View om de juiste labels te tonen in het werkplekreserveringsscherm.
|
||||
CREATE OR REPLACE FORCE VIEW CIZN_V_LABEL_DEEL_RES_DATUM
|
||||
@@ -530,6 +615,161 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
-- Overzicht van ICT voorzieningen die niet gevonden worden in de intune database.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_not_in_intune
|
||||
AS
|
||||
SELECT ins_srtgroep_omschrijving,
|
||||
ins_srtdeel_omschrijving,
|
||||
ins_deel_opmerking,
|
||||
alg_gebouw_naam,
|
||||
prs_perslid_volnaam,
|
||||
flx.getdomeinwaarde (21, flx.getflex ('INS', 41, ins_deel_key)) status
|
||||
FROM ins_v_deel_gegevens
|
||||
WHERE ins_discipline_omschrijving = 'ICT'
|
||||
AND ins_srtgroep_omschrijving IN ('Computer', 'Telefoon', 'Tablet')
|
||||
AND COALESCE (ins_deel_opmerking, 'Leeg') NOT IN
|
||||
(SELECT COALESCE (serialnumber, 'QueQeLeQue') FROM cizn_imp_device_info)
|
||||
AND ins_deel_vervaldatum IS NULL;
|
||||
|
||||
-- Rapportage met algemene gegevens van de ICT voorziening. Hierbij wordt ook de aanmaakdatum getoond. Deze
|
||||
-- is op andere manieren niet te achterhalen.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_gegevens
|
||||
AS
|
||||
SELECT d.ins_deel_aanmaak,
|
||||
sg.ins_srtgroep_omschrijving,
|
||||
sd.ins_srtdeel_omschrijving,
|
||||
d.ins_deel_omschrijving,
|
||||
d.ins_deel_opmerking,
|
||||
flx.getdomeinwaarde (21, flx.getflex ('INS', 41, d.ins_deel_key)) status,
|
||||
flx.getdomeinwaarde (22, flx.getflex ('INS', 48, d.ins_deel_key)) regio,
|
||||
alg_gebouw_naam,
|
||||
prs_perslid_volnaam,
|
||||
d.ins_deel_key
|
||||
FROM ins_deel d,
|
||||
ins_srtdeel sd,
|
||||
ins_srtgroep sg,
|
||||
ins_discipline di,
|
||||
ins_v_deel_gegevens dg
|
||||
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND sg.ins_discipline_key = di.ins_discipline_key
|
||||
AND di.ins_discipline_omschrijving = 'ICT'
|
||||
AND d.ins_deel_verwijder IS NULL
|
||||
AND d.ins_deel_vervaldatum IS NULL
|
||||
AND d.ins_deel_key = dg.ins_deel_key(+);
|
||||
|
||||
-- Rapportage met de gegevens van de ICT voorzieningen waarbij de gedurende de laatste 30 dagen ingelogd is
|
||||
-- en waar de gebruiker die ingelogd is niet overeenkomt met de persoon aan wie het device is uitgegeven.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_login_mismatch
|
||||
AS
|
||||
SELECT manufacturer Merk,
|
||||
model TYPE,
|
||||
serialnumber serienummer,
|
||||
prs_perslid_email gekoppeld_aan,
|
||||
emailaddress ingelogd_door,
|
||||
FAC.safe_TO_DATE (lastsyncdatetime, 'yyyy-mm-dd"T"hh24:mi:ss"Z"') laastelogin
|
||||
FROM cizn_imp_device_info i,
|
||||
(SELECT *
|
||||
FROM ins_deel
|
||||
WHERE ins_alg_ruimte_type = 'P') d,
|
||||
prs_perslid p
|
||||
WHERE COALESCE (ins_deel_opmerking, '-2') = COALESCE (i.serialnumber, '-1')
|
||||
AND d.ins_alg_ruimte_key = p.prs_perslid_key(+)
|
||||
AND UPPER (COALESCE (prs_perslid_email, 'Leeg')) <> UPPER (COALESCE (emailaddress, 'Leeg'))
|
||||
AND FAC.safe_TO_DATE (lastsyncdatetime, 'yyyy-mm-dd"T"hh24:mi:ss"Z"') > SYSDATE - 30;
|
||||
|
||||
-- Rapport om de historie van bezittingen per persoon te kunnen raadplegen.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_prs_historie
|
||||
AS
|
||||
SELECT ins_srtgroep_omschrijving,
|
||||
ins_srtdeel_omschrijving,
|
||||
ins_deel_omschrijving,
|
||||
ins_deel_opmerking,
|
||||
flx.getdomeinwaarde (21, flx.getflex ('INS', 41, d.ins_deel_key)) status,
|
||||
u.ins_deel_uitgifte_begin uitgegeven,
|
||||
u.ins_deel_uitgifte_ingeleverd ingenomen,
|
||||
pf.prs_perslid_naam_full,
|
||||
pf.prs_perslid_naam_friendly,
|
||||
p.prs_perslid_verwijder,
|
||||
p.prs_perslid_inactief,
|
||||
d.ins_deel_key,
|
||||
p.prs_perslid_key,
|
||||
d.ins_deel_verwijder,
|
||||
d.ins_deel_vervaldatum
|
||||
FROM ins_deel_uitgifte u,
|
||||
ins_deel d,
|
||||
ins_srtdeel sd,
|
||||
ins_srtgroep sg,
|
||||
ins_discipline di,
|
||||
prs_v_perslid_fullnames_all pf,
|
||||
prs_perslid p
|
||||
WHERE u.ins_deel_key = d.ins_deel_key
|
||||
AND u.prs_perslid_key = p.prs_perslid_key
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||||
AND sg.ins_discipline_key = di.ins_discipline_key
|
||||
AND di.ins_discipline_omschrijving = 'ICT';
|
||||
|
||||
|
||||
-- Rapport om inzichtelijk te maken welke personen die door de SCIM koppeling op Inactief zijn gezet
|
||||
-- toch nog ICT voorzieningen in het bezit hebben.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_einde_contract
|
||||
AS
|
||||
SELECT pf.prs_perslid_naam_full,
|
||||
p.prs_perslid_inactief,
|
||||
d.ins_deel_opmerking,
|
||||
sd.ins_srtdeel_omschrijving,
|
||||
d.ins_deel_key,
|
||||
p.prs_perslid_key
|
||||
FROM prs_perslid p,
|
||||
ins_deel_uitgifte u,
|
||||
ins_deel d,
|
||||
prs_v_perslid_fullnames_all pf,
|
||||
ins_srtdeel sd
|
||||
WHERE prs_perslid_inactief IS NOT NULL
|
||||
AND u.prs_perslid_key = p.prs_perslid_key
|
||||
AND ins_deel_uitgifte_ingeleverd IS NULL
|
||||
AND u.ins_deel_key = d.ins_deel_key
|
||||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||||
AND d.ins_deel_vervaldatum IS NULL
|
||||
AND d.ins_deel_verwijder IS NULL;
|
||||
|
||||
-- Dashboard met informatie omtrent assetbeheer. Per regel wordt het aantal van een rapport getoond. Doorklikken leidt tot het rapport zelf.
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_dashboard
|
||||
AS
|
||||
SELECT 1 volgorde,
|
||||
'<a onclick=''FcltMgr.openDetail("Appl/fac/fac_report.asp?rapcode=ASSETM_DASHB_INACTIEF", "Apparaten toegewezen aan gebruikers met be<62>indigd contract")''>'
|
||||
|| 'Apparaten toegewezen aan gebruikers met be<62>indigd contract'
|
||||
|| '</a>' html_omschrijving,
|
||||
(SELECT COUNT (*) FROM cizn_v_rap_asset_einde_contract) aantal
|
||||
FROM DUAL;
|
||||
|
||||
-- View om te gebuiken in de notificatie CUST06 om jaarlijks de ICT voorzieningen te noticeren
|
||||
CREATE OR REPLACE VIEW cizn_v_rap_asset_jaar
|
||||
AS
|
||||
SELECT ins_deel_omschrijving,
|
||||
ins_srtgroep_omschrijving,
|
||||
ins_srtdeel_omschrijving,
|
||||
ins_deel_opmerking serienummer,
|
||||
uitgegeven,
|
||||
prs_perslid_naam_friendly,
|
||||
prs_perslid_key extra_key
|
||||
FROM cizn_v_rap_asset_prs_historie
|
||||
WHERE ins_deel_verwijder IS NULL
|
||||
AND ins_deel_vervaldatum IS NULL
|
||||
AND ingenomen IS NULL;
|
||||
|
||||
CREATE OR REPLACE PROCEDURE cizn_daily
|
||||
AS
|
||||
BEGIN
|
||||
cizn.select_asset_jaar_not;
|
||||
END;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user