From d3ad876b0b360f7672d09f2039987495d58ab867 Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Thu, 13 Jan 2022 15:34:11 +0000 Subject: [PATCH] IVET#69716 Notijob/CUST07-notificatie naar bezitter om PBM om te wisselen svn path=/Customer/trunk/; revision=54523 --- IVET/ivet.sql | 193 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 181 insertions(+), 12 deletions(-) diff --git a/IVET/ivet.sql b/IVET/ivet.sql index 1f78d5ca2..d1e3550f9 100644 --- a/IVET/ivet.sql +++ b/IVET/ivet.sql @@ -3965,53 +3965,52 @@ AS LEFT JOIN mld_v_aanwezigkenmerkmelding geb -- Locatie / gebouw (Soort 20286) ON x.mld_melding_key = geb.mld_melding_key AND geb.mld_kenmerk_key = 20286 - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (20421, 20322, 20323, 20324) GROUP BY mld_melding_key) hfd1_sv -- Start vereisten ON x.mld_melding_key = hfd1_sv.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding - WHERE mld_kenmerk_key IN - (20326, 20327, 20341, 20361, 25941) + WHERE mld_kenmerk_key IN (20326, 20327, 20341, 20361, 25941) GROUP BY mld_melding_key) hfd2_on -- Orde / Netheid ON x.mld_melding_key = hfd2_on.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (20328, 20330, 20343, 20481, 24206, 24201, 24202, 24203, 24204, 24205) GROUP BY mld_melding_key) hfd3_wz -- Werkzaamheden ON x.mld_melding_key = hfd3_wz.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24241, 24242, 24243) GROUP BY mld_melding_key) hfd4_np -- Noodprocedures ON x.mld_melding_key = hfd4_np.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24262, 24263, 25961) GROUP BY mld_melding_key) hfd5_bp -- Brand Preventie ON x.mld_melding_key = hfd5_bp.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24264, 24265, 24266, 24267) GROUP BY mld_melding_key) hfd6_gs -- Opslag gevaarlijke stoffen ON x.mld_melding_key = hfd6_gs.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24321, 24322) GROUP BY mld_melding_key) hfd7_pbm -- PBMs ON x.mld_melding_key = hfd7_pbm.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24341, 24361, 24363, 24364, 24365) GROUP BY mld_melding_key) hfd8_mg -- Materieel / Gereedschap ON x.mld_melding_key = hfd8_mg.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24382, 24383, 24384, 24385, 24386, 24387, 24388, 24389) GROUP BY mld_melding_key) hfd9_hr -- Hoog Risico werk ON x.mld_melding_key = hfd9_hr.mld_melding_key - LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '9262', 1, 0)) neg + LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key IN (24391) GROUP BY mld_melding_key) hfd10_m -- Milieu @@ -4294,6 +4293,176 @@ AS prs_afdeling_verwijder FROM prs_afdeling; +-- IVET#68372: Bezettingspercentage (WP-reserveringen uit catalogi 4201 en 4321)! +CREATE OR REPLACE VIEW ivet_v_rap_res_wp_bzg +( + fclt_3d_locatie_key, + maand, + catalogus, + locatie, + wp_aant_nl, + wp_aant_loc, + wp_bzg_nl, + wp_bzg_loc +) +AS + WITH rescatl -- Per catalogus/locatie de reserveringen van WP-objecten op tot-tijd! + AS ( SELECT resbes.mnd, + rd.ins_discipline_omschrijving catalogus, + l.alg_locatie_key, + l.alg_locatie_omschrijving locatie_oms, + SUM (resbez.aant) aantal_reserveringen, + SUM (ROUND (resbes.uren, 2)) bes_uren, + SUM (ROUND (resbez.uren, 2)) bez_uren + FROM (SELECT TO_CHAR (p.mnd, 'yyyy-mm') mnd, -- DISTINCT per definitie! + rd.res_discipline_key, + rd.res_deel_key resource_key, + COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key, + fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1) * 9 -- = 17-8 + uren + FROM res_deel rd, ins_deel d, + (SELECT ADD_MONTHS (TRUNC (SYSDATE, 'mm'), LEVEL - 26) mnd FROM DUAL CONNECT BY LEVEL <= 25) p + WHERE rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3 + AND rd.res_ins_deel_key = d.ins_deel_key + AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk? + AND rd.res_deel_aanmaak < ADD_MONTHS (p.mnd, 1) + AND (rd.res_deel_verwijder IS NULL OR rd.res_deel_verwijder >= p.mnd)) resbes, + ( SELECT TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm') mnd, + rd.res_discipline_key, + rd.res_deel_key resource_key, + COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key, + COUNT ( * ) aant, + SUM (LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17) + - GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8)) + uren + FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d + WHERE rrd.res_rsv_deel_verwijder IS NULL + AND rrd.res_rsv_deel_dirtlevel = 0 + AND TRUNC (rrd.res_rsv_deel_van) = TRUNC (rrd.res_rsv_deel_tot) -- Eendaags! + AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25) AND TRUNC (SYSDATE, 'mm') + AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6' + AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrd.res_rsv_deel_tot)) + --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17' + --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08' + --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen! + AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) + AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief + AND rrd.res_deel_key = rd.res_deel_key + AND rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3 + AND rd.res_ins_deel_key = d.ins_deel_key + AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk? + GROUP BY TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm'), + rd.res_discipline_key, + rd.res_deel_key, + COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) + UNION ALL -- Meerdaagse voorzieningen? + SELECT TO_CHAR (p.dag, 'yyyy-mm') mnd, + rd.res_discipline_key, + rd.res_deel_key resource_key, + COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key, + COUNT ( * ) aant, + SUM (DECODE (p.dag, + TRUNC (rrd.res_rsv_deel_van), 17 - GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8), + TRUNC (rrd.res_rsv_deel_tot), LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17) - 8, + 9)) -- = 17-8 + uren + FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d, + (SELECT TRUNC (SYSDATE, 'mm') - LEVEL dag FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE, 'mm') - ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)) p + WHERE rrd.res_rsv_deel_verwijder IS NULL + AND rrd.res_rsv_deel_dirtlevel = 0 + AND TRUNC (rrd.res_rsv_deel_van) != TRUNC (rrd.res_rsv_deel_tot) -- Meerdaags! + AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25) AND TRUNC (SYSDATE, 'mm') + --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17' + --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08' + --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen! + AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) + AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief + AND rrd.res_deel_key = rd.res_deel_key + AND rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3 + AND rd.res_ins_deel_key = d.ins_deel_key + AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk? + AND p.dag BETWEEN TRUNC (rrd.res_rsv_deel_van) AND TRUNC (rrd.res_rsv_deel_tot) + AND TO_CHAR (p.dag, 'd') BETWEEN '2' AND '6' + AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (p.dag)) + GROUP BY TO_CHAR (p.dag, 'yyyy-mm'), + rd.res_discipline_key, + rd.res_deel_key, + COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)) resbez, + res_discipline rd, -- Ook verwijderde catalogi! + alg_v_onrgoed_boom aob, -- Ook verwijderde ruimten! + alg_locatie l -- Ook verwijderde locaties! + WHERE resbes.mnd = resbez.mnd(+) + AND resbes.res_discipline_key = resbez.res_discipline_key(+) + AND resbes.resource_key = resbez.resource_key(+) + AND resbes.alg_ruimte_key = resbez.alg_ruimte_key(+) + AND resbes.res_discipline_key = rd.ins_discipline_key(+) + AND resbes.alg_ruimte_key = aob.alg_ruimte_key + AND aob.alg_locatie_key = l.alg_locatie_key + AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)! + AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)! + GROUP BY l.alg_locatie_key, + resbes.mnd, + rd.ins_discipline_omschrijving, + l.alg_locatie_omschrijving) + SELECT loc.alg_locatie_key, nl.mnd, nl.catalogus, + loc.locatie_oms, + TO_CHAR (nl.ant_nl, '999990'), + TO_CHAR (loc.ant_loc, '999990'), + TO_CHAR (100 * nl.bzg_nl, '990') || '%', + TO_CHAR (100 * loc.bzg_loc, '990') || '%' + FROM ( SELECT mnd, catalogus, SUM (aantal_reserveringen) ant_nl, SUM (COALESCE (bez_uren, 0)) / SUM (bes_uren) bzg_nl + FROM rescatl + GROUP BY mnd, catalogus) nl + LEFT JOIN (SELECT mnd, catalogus, alg_locatie_key, locatie_oms, aantal_reserveringen ant_loc, COALESCE (bez_uren, 0) / bes_uren bzg_loc + FROM rescatl) loc + ON nl.mnd = loc.mnd AND nl.catalogus = loc.catalogus; + +-- IVET#69716: CUST07-notificatie naar bezitter om PBM om te wisselen. +-- Wekelijks totdat geretourneerd? +--Ja dit is wenselijk voor ons. Het betreft dus de discipline Persoonsgebonden PBM. +--Een mailnotificatie voor de beeldschermbril=3501 en correctiebril=3521 na 3 jaar vervangen, +--de oordoppen=3561 (otoplastieken) na 4 jaar vervangen +--en de steunzolen=3541 (orthopedie) na 18 maanden een mailnotificatie. +--Staat al in productieomgeving. +--Er is nog 1 object bij gekomen bij de PBM , een insert=3581 op sterkte (ook na 3 jaar vervangen) +CREATE OR REPLACE VIEW IVET_V_NOTI_PBM +( + code, + sender, + receiver, + text, + key, + xkey, + xemail, + xmobile +) +AS + SELECT sn.fac_srtnotificatie_code, + NULL, + d.ins_alg_ruimte_key, + REPLACE (sn.fac_srtnotificatie_oms, '##OBJSRT##', sd.ins_srtdeel_key_omschrijving), + d.ins_deel_key, + NULL, + NULL, + NULL + FROM ins_v_aanwezigdeel d, + ins_srtdeel sd, + ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k, + fac_srtnotificatie sn + WHERE d.ins_srtdeel_key IN (3501, 3521, 3541, 3561, 3581) -- Beeldschermbril/Correctiebril/Oordop/Steunzool/Insert + AND d.ins_discipline_key = 4541 -- Persoonsgebonden PBM + --AND d.ins_alg_ruimte_key_org IS NOT NULL -- Uitgeleend + AND d.ins_alg_ruimte_type = 'P' + AND d.ins_srtdeel_key = sd.ins_srtdeel_key + AND d.ins_deel_key = kd.ins_deel_key + AND kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 342 -- Datum object vervangen + --AND fac.safe_to_date (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 7 < SYSDATE + --AND MOD (fac.safe_to_date (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - TRUNC (SYSDATE), 7) = 0 -- Wekelijks totdat geretourneerd? + AND ADD_MONTHS (fac.safe_to_date (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy'), -2) = TRUNC (SYSDATE) + AND sn.fac_srtnotificatie_code = 'CUST07'; + ------ payload end ------ SET DEFINE OFF