diff --git a/CIZN/cizn.sql b/CIZN/cizn.sql index f7fc00c77..1fceb25a1 100644 --- a/CIZN/cizn.sql +++ b/CIZN/cizn.sql @@ -31,7 +31,14 @@ SELECT 'extern' typebezoek, REPLACE (kw.res_kenmerkreservering_waarde, '-') kenteken, pf.prs_perslid_naam_full naam, TO_CHAR (rrd.res_rsv_deel_van, 'dd-mm-yyyy hh24:mi') van, - TO_CHAR (rrd.res_rsv_deel_tot, 'dd-mm-yyyy hh24:mi') tot + TO_CHAR (rrd.res_rsv_deel_tot, 'dd-mm-yyyy hh24:mi') tot, + CASE WHEN fac.count_Work_Days(rrd.res_rsv_deel_aanmaak, rrd.res_rsv_deel_van) = 1 + THEN + CASE WHEN TO_CHAR(rrd.res_rsv_deel_aanmaak, 'hh24mi') > '1630' + THEN rrd.res_rsv_deel_aanmaak + ELSE NULL + END + END datum_te_laat FROM res_rsv_deel rrd, res_deel rd, ins_v_deel_gegevens dg, @@ -58,7 +65,14 @@ SELECT 'bezoekers' typebezoek, REPLACE (bez_bezoekers_kenteken, '-') kenteken, bez_afspraak_naam naam, TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi') van, - TO_CHAR (a.bez_afspraak_eind, 'dd-mm-yyyy hh24:mi') tot + TO_CHAR (a.bez_afspraak_eind, 'dd-mm-yyyy hh24:mi') tot, + CASE WHEN fac.count_Work_Days(b.bez_bezoekers_aanmaak, a.bez_afspraak_datum) = 1 + THEN + CASE WHEN TO_CHAR(b.bez_bezoekers_aanmaak, 'hh24mi') > '1630' + THEN b.bez_bezoekers_aanmaak + ELSE NULL + END + END datum_te_laat FROM bez_bezoekers b, bez_afspraak a, res_rsv_deel rrd, @@ -161,16 +175,6 @@ AS -- Thema om het vlekkenplan te tonen welke afdeling die dag de ruimte gepland heeft. Om dit in te richten moet je voor -- deze ruimten een reservering inleggen en het veld afdeling vullen. CREATE OR REPLACE VIEW cizn_v_thema_ruimte_dag -( - FCLT_F_DATUM, - ALG_RUIMTE_KEY, - alg_ruimte_OMSCHRIJVING, - WAARDE1, - WAARDE, - WAARDE3, - WAARDE_HTML, - WAARDE_HTML2 -) AS WITH datums @@ -178,23 +182,24 @@ AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 14) - SELECT datums.datum fclt_f_datum, --count(res.res_ins_deel_key), - r2a.alg_ruimte_key , + SELECT datums.datum fclt_f_datum, r2a.alg_ruimte_key, - afdeling || 'w1' waarde1, - afdeling waarde2, - afdeling || 'w3' waarde3, - afdeling - || 'h1' waarde_html, - afdeling - || 'h2' waarde_html2 - FROM RES_V_RSV_RUIMTE_2_ALG_RUIMTE r2a, + r2a.alg_ruimte_key alg_ruimte_omschrijving, + NULL waarde1, + afdeling waarde, + NULL waarde3, + NULL waarde_html, + NULL waarde_html2 + FROM res_v_rsv_ruimte_2_alg_ruimte r2a, datums, (SELECT datum, res_rsv_ruimte_key, - flx.getdomeinwaarde(1, flx.getflex ('RES', 41, rrr.res_rsv_ruimte_key)) afdeling + flx.getdomeinwaarde(k.fac_kenmerkdomein_key, flx.getflex ('RES', k.res_kenmerk_key, rrr.res_rsv_ruimte_key)) afdeling FROM res_v_aanwezigrsv_ruimte rrr, - datums + datums, + (SELECT k.res_kenmerk_key, sk.fac_kenmerkdomein_key + FROM res_srtkenmerk sk, res_kenmerk k + WHERE sk.res_srtkenmerk_key = k.res_srtkenmerk_key AND res_srtkenmerk_code = 'AFDELINGWP') k WHERE TRUNC(datum) = TRUNC(res_rsv_ruimte_van)) res -- Bezet WHERE r2a.res_rsv_ruimte_key = res.res_rsv_ruimte_key(+) AND datums.datum = res.datum(+); @@ -252,6 +257,168 @@ AS GROUP BY datum, ins_deel_key, zitsta ORDER BY datum, ins_deel_key; +CREATE OR REPLACE VIEW cizn_v_thema_ruimte +AS + SELECT r.alg_ruimte_key, 'bestaat' waarde, 1 waarde_key + FROM alg_v_aanwezigruimte r; + +CREATE OR REPLACE VIEW cizn_v_uitgifte_ict_basis +AS + SELECT pf.prs_perslid_key extra_key, + TO_CHAR(u.ins_deel_uitgifte_begin, 'DD-MM-YYYY') ins_deel_uitgifte_begin, + TO_CHAR(u.ins_deel_uitgifte_ingeleverd, 'DD-MM-YYYY') ins_deel_uitgifte_ingeleverd, + sg.ins_srtgroep_omschrijving, + sd.ins_srtdeel_omschrijving, + d.ins_deel_omschrijving, + pf.prs_perslid_naam_friendly, + flx.getflex ('INS', 24, d.ins_deel_key) serienummer, + CASE + WHEN tu.fac_srtnotificatie_code = 'CUST03' AND u.ins_deel_uitgifte_ingeleverd BETWEEN COALESCE (tu.intv_begin, TO_DATE('20240517 14:00', 'yyyymmdd hh24:mi')) AND intv_eind THEN 1 + WHEN tu.fac_srtnotificatie_code IS NULL AND u.ins_deel_uitgifte_ingeleverd IS NOT NULL AND u.ins_deel_uitgifte_begin > TO_DATE('20240517 14:00', 'yyyymmdd hh24:mi') THEN 1 + ELSE 0 + END act_ingenomen, + CASE + WHEN SYSDATE - u.ins_deel_uitgifte_ingeleverd < 1 THEN 1 ELSE 0 END rec_ingenomen, + CASE + WHEN ti.fac_srtnotificatie_code = 'CUST04' AND u.ins_deel_uitgifte_begin BETWEEN COALESCE (ti.intv_begin, TO_DATE('20240517 14:00', 'yyyymmdd hh24:mi')) AND intv_eind THEN 1 + WHEN ti.fac_srtnotificatie_code IS NULL AND u.ins_deel_uitgifte_begin IS NOT NULL AND u.ins_deel_uitgifte_begin > TO_DATE('20240517 14:00', 'yyyymmdd hh24:mi') THEN 1 + ELSE 0 + END act_uitgegeven, + (SELECT pfi.prs_perslid_naam_full FROM prs_v_perslid_fullnames pfi WHERE pfi.prs_perslid_key = FAC.gettrackinguserkey('INSIN2', d.ins_deel_key)) ingenomen_door, + TO_CHAR(u.ins_deel_uitgifte_begin, 'YYYYMMDD') volgorde + FROM ins_deel_uitgifte u, + ins_deel d, + ins_srtdeel sd, + ins_srtgroep sg, + prs_perslid p, + prs_v_perslid_fullnames_all pf, + ( SELECT sn.fac_srtnotificatie_code, t.fac_tracking_refkey, MAX (fac_tracking_datum) intv_begin + FROM fac_tracking t, fac_srtnotificatie sn + WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND fac_srtnotificatie_code IN ('CUST03') + GROUP BY fac_tracking_refkey, sn.fac_srtnotificatie_code) tu, + ( SELECT sn.fac_srtnotificatie_code, t.fac_tracking_refkey, MAX (fac_tracking_datum) intv_begin + FROM fac_tracking t, fac_srtnotificatie sn + WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key + AND fac_srtnotificatie_code IN ('CUST04') + GROUP BY fac_tracking_refkey, sn.fac_srtnotificatie_code) ti, + (SELECT fac_usrdata_vervaldatum intv_eind + FROM fac_usrdata + WHERE fac_usrdata_code = 'LastNotIns') l + WHERE u.prs_perslid_key = pf.prs_perslid_key + AND u.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_email IS NOT NULL + AND d.ins_srtdeel_key = sd.ins_srtdeel_key + AND sd.ins_srtgroep_key = sg.ins_srtgroep_key + AND u.prs_perslid_key = tu.fac_tracking_refkey(+) + AND u.prs_perslid_key = ti.fac_tracking_refkey(+) + AND d.ins_deel_key = u.ins_deel_key; + +-- Deze procedure stuurt medewerkers een mail als ze nieuwe ICT voorzieningen op de naam hebben gekregen +-- of als ze ICT voorzieningen hebben ingeleverd. Hiervoor worden 4 notificaties gebruikt; +-- * CUST01 is de notificatie op een rapport naar de medewerker om toegevoegde voorzieningen te notificeren +-- * CUST02 is de notificatie op een rapport naar de medewerker om ingeleverde voorzieningen te notificeren +-- * CUST03 is de tracking op de persoon van de nieuwe voorzieningen +-- * CUST04 is de tracking op de persoon van de ingeleverde voorzieningen +-- Onderstaande procedure zet de timestamp in de eigen tabel met code 'LastNotIns'. Dit is het tijdstip tot wanneer het rapport +-- cizn_v_uitgifte_ict_basis kijkt naar de mutaties. Het tijdstip van het toevoegen van de notificatie en het daadwerkelijk versturen +-- kan namelijk afwijken. +CREATE OR REPLACE PROCEDURE cizn_select_asset_not (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) +AS + CURSOR c_uitgifte IS + SELECT extra_key, + 'CIZ-Facilitor, Bevestiging uitgifte ICT voorziening(en) (' + || LISTAGG (ins_deel_omschrijving, ',') WITHIN GROUP (ORDER BY ins_deel_omschrijving) + || ')' text + FROM cizn_v_uitgifte_ict_basis b + WHERE act_uitgegeven = 1 + GROUP BY extra_key; + + CURSOR c_inname IS + SELECT extra_key, + 'CIZ-Facilitor, Bevestiging inname ICT voorziening(en) (' + || LISTAGG (ins_deel_omschrijving, ',') WITHIN GROUP (ORDER BY ins_deel_omschrijving) + || ')' text + FROM cizn_v_uitgifte_ict_basis b + WHERE act_ingenomen = 1 + GROUP BY extra_key; + + v_cust01_key NUMBER; + v_cust02_key NUMBER; + v_rapport_key NUMBER; + v_timestamp DATE; +BEGIN + v_timestamp := SYSDATE; + + UPDATE fac_usrdata + SET fac_usrdata_vervaldatum = v_timestamp + WHERE fac_usrdata_code = 'LastNotIns'; + + SELECT fac_srtnotificatie_key + INTO v_cust01_key + FROM fac_srtnotificatie + WHERE fac_srtnotificatie_code = 'CUST01'; + + SELECT fac_srtnotificatie_key + INTO v_cust02_key + FROM fac_srtnotificatie + WHERE fac_srtnotificatie_code = 'CUST02'; + + SELECT fac_usrrap_key + INTO v_rapport_key + FROM fac_usrrap + WHERE fac_usrrap_code = 'UITGIFTEINNAME'; + + FOR rec IN c_uitgifte + 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) + VALUES (v_cust01_key, + 2, + rec.text, + v_rapport_key, + rec.extra_key, + v_timestamp, + rec.extra_key); + + FAC.trackaction ('CUST03', + rec.extra_key, + NULL, + v_timestamp, + rec.text); + END LOOP; + + FOR rec IN c_inname + 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) + VALUES (v_cust02_key, + 2, + rec.text, + v_rapport_key, + rec.extra_key, + v_timestamp, + rec.extra_key); + + FAC.trackaction ('CUST04', + rec.extra_key, + NULL, + v_timestamp, + rec.text); + END LOOP; +END; +/ ------ payload end ------