-- Script containing customer generic configuration sql statements for all PCHA and PCHW accounts -- $Revision$ -- $Id$ -- DEFINE thisfile = 'PCHX_MON.SQL' DEFINE dbuser = 'PCHA|PCHW|PGHE' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PACKAGE PCHX_MON AS -- PPS functies voor PCHA en PCHW FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER) RETURN NUMBER; FUNCTION get_regime (p_stdm_key IN NUMBER, p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund p_ins_key IN NUMBER) RETURN NUMBER; FUNCTION get_index_value (p_date IN DATE, p_categorie IN VARCHAR2) RETURN NUMBER; FUNCTION get_weging (p_startdatum IN DATE, p_stdmeldinggroep_key IN NUMBER) RETURN NUMBER; FUNCTION klant_melding (p_melding_key IN NUMBER) RETURN NUMBER; FUNCTION get_max_korting (p_stdm_key IN NUMBER) RETURN NUMBER; FUNCTION get_abs_bedrag (p_bedrag IN NUMBER) RETURN NUMBER; FUNCTION check_max (p_bedrag IN NUMBER, p_max IN NUMBER) RETURN NUMBER; END; / CREATE OR REPLACE PACKAGE BODY PCHX_MON AS FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER) RETURN NUMBER AS CURSOR ca IS SELECT m2.mld_melding_datum van, m2.mld_melding_key FROM mld_melding m1, mld_stdmelding std1, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 241) km1, mld_melding m2, mld_stdmelding std2, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 241) km2 WHERE m1.mld_melding_key = p_melding_key AND m1.mld_stdmelding_key = std1.mld_stdmelding_key AND m1.mld_melding_key = km1.mld_melding_key(+) AND km1.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_key = km2.mld_melding_key(+) AND km2.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_parentkey IS NULL AND NOT EXISTS (SELECT 1 FROM pchx_monitoring WHERE melding_key = m2.mld_melding_key) AND m2.mld_stdmelding_key = std2.mld_stdmelding_key AND std1.mld_ins_discipline_key NOT IN (232,220) -- V-G en W-R koppelen we nooit AND std1.mld_stdmeldinggroep_key = std2.mld_stdmeldinggroep_key -- voor stdmeldinggroep AND ( ( std1.mld_stdmeldinggroep_key = 161 -- FTRC AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte OR ( std1.mld_stdmeldinggroep_key <> 161 -- FTRC AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte AND std1.mld_ins_discipline_key = std2.mld_ins_discipline_key -- zelfde vakgroep. ) AND m1.mld_melding_key <> m2.mld_melding_key AND m2.mld_melding_indult <> 1 AND m1.mld_melding_indult <> 1 AND m2.mld_melding_status <> 1 -- Afgewezen AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum AND COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE) ORDER BY m2.mld_melding_datum; CURSOR cw IS SELECT m2.mld_melding_datum van, m2.mld_melding_key FROM mld_melding m1, mld_stdmelding std1, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 221) km1, mld_melding m2, mld_stdmelding std2, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 221) km2 WHERE m1.mld_melding_key = p_melding_key AND m1.mld_stdmelding_key = std1.mld_stdmelding_key AND m1.mld_melding_key = km1.mld_melding_key(+) AND km1.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_key = km2.mld_melding_key(+) AND km2.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_parentkey IS NULL AND NOT EXISTS (SELECT 1 FROM pchx_monitoring WHERE melding_key = m2.mld_melding_key) AND m2.mld_stdmelding_key = std2.mld_stdmelding_key AND std2.mld_stdmelding_malus IS NOT NULL -- alleen meldingen waarvoor een malus geldt AND std1.mld_Stdmeldinggroep_key = std2.mld_stdmeldinggroep_key -- voor stdmeldinggroep AND ( ( std1.mld_stdmeldinggroep_key = 181 -- Prestatiekortingen AND std1.mld_ins_discipline_key = std2.mld_ins_discipline_key) OR ( std1.mld_stdmeldinggroep_key <> 181 -- Prestatiekortingen AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte ) AND m1.mld_melding_key <> m2.mld_melding_key AND m2.mld_melding_indult <> 1 AND m1.mld_melding_indult <> 1 AND m2.mld_melding_status <> 1 -- Afgewezen AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum AND COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE) ORDER BY m2.mld_melding_datum; CURSOR ch IS SELECT m2.mld_melding_datum van, m2.mld_melding_key FROM mld_melding m1, mld_stdmelding std1, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 121) km1, -- Niet overlappen (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 141) kh1, -- nlsfb hoofdgroep mld_melding m2, mld_stdmelding std2, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 121) km2, (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding where mld_kenmerk_key = 141) kh2 WHERE m1.mld_melding_key = p_melding_key AND m1.mld_stdmelding_key = std1.mld_stdmelding_key AND m1.mld_melding_key = km1.mld_melding_key(+) AND m1.mld_melding_key = kh1.mld_melding_key(+) AND km1.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_key = km2.mld_melding_key(+) AND m2.mld_melding_key = kh2.mld_melding_key(+) AND km2.mld_kenmerkmelding_waarde IS NULL AND m2.mld_melding_parentkey IS NULL AND NOT EXISTS (SELECT 1 FROM pchx_monitoring WHERE melding_key = m2.mld_melding_key) AND m2.mld_stdmelding_key = std2.mld_stdmelding_key AND std2.mld_stdmelding_slabewaken <> 0 -- alleen meldingen waarvoor een malus geldt AND std1.mld_stdmeldinggroep_key = std2.mld_stdmeldinggroep_key -- voor stdmeldinggroep AND ( ( std1.mld_stdmeldinggroep_key = 1 -- Prestatiekortingen AND std1.mld_stdmelding_key = std2.mld_stdmelding_key AND ( std1.mld_stdmelding_key <> 91 -- Prestatiekortingen op automaten overlappen alleen als het dezelfde ruimte (automaat) is. OR m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) ) OR ( std1.mld_stdmeldinggroep_key <> 22 -- Periodieke meting onderhoud AND COALESCE(kh1.mld_kenmerkmelding_waarde, '-1') = COALESCE(kh2.mld_kenmerkmelding_waarde, '-2') -- nlsfb hoofdgroep is ingevuld en is gelijk. ) OR ( std1.mld_stdmeldinggroep_key <> 1 -- Prestatiekortingen AND std1.mld_Stdmeldinggroep_key <> 8 -- Losse voorzieningen worden niet samengenomen AND std1.mld_Stdmeldinggroep_key <> 22 -- Periodieke meting onderhoud worden niet samengenomen AND std1.mld_Stdmeldinggroep_key <> 23 -- Periodieke meting diensten worden niet samengenomen AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte ) AND m1.mld_melding_key <> m2.mld_melding_key AND m2.mld_melding_indult <> 1 AND m1.mld_melding_indult <> 1 AND m2.mld_melding_status <> 1 -- Afgewezen AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum AND COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE) ORDER BY m2.mld_melding_datum; v_melding_key NUMBER; l_melding_key NUMBER; v_datum_begin DATE; l_datum_begin DATE; v_loop_index NUMBER; rec ca%ROWTYPE; -- maakt niet uit welke cursor we hier kiezen. Ze hebben dezelfde structuur. BEGIN v_melding_key := p_melding_key; IF pchx_mon.klant_melding (p_melding_key) = 0 THEN RETURN p_melding_key; END IF; SELECT mld_melding_datum INTO v_datum_begin FROM mld_melding WHERE mld_melding_key = p_melding_key; v_loop_index := 1; IF pchx.get_user = 'PCHA' THEN OPEN ca; ELSIF pchx.get_user = 'PCHW' THEN OPEN cw; ELSE OPEN ch; END IF; LOOP IF pchx.get_user = 'PCHA' THEN FETCH ca INTO rec; EXIT WHEN ca%NOTFOUND; ELSIF pchx.get_user = 'PCHW' THEN FETCH cw INTO rec; EXIT WHEN cw%NOTFOUND; ELSE FETCH ch INTO rec; EXIT WHEN ch%NOTFOUND; END IF; -- FOR rec IN c -- LOOP -- door de sortering op de cursor hoeven we alleen het eerste record te gebruiken tenzij deze niet door de klant is ingediend. IF p_index < 10 AND v_loop_index = 1 THEN -- DBMS_OUTPUT.put_line(p_melding_key || '-' || rec.mld_melding_key || '-' || p_index); -- DBMS_OUTPUT.put_line('Klant melding: ' || '-' || pchx_mon.klant_melding (rec.mld_melding_key)); IF pchx_mon.klant_melding (rec.mld_melding_key) = 1 THEN BEGIN l_melding_key := PCHX_MON.get_first_melding (rec.mld_melding_key, p_index + 1); END; --- DBMS_OUTPUT.put_line('Resultaat: ' || rec.mld_melding_key || '-' || l_melding_key); SELECT mld_melding_datum INTO l_datum_begin FROM mld_melding WHERE mld_melding_key = l_melding_key; IF l_datum_begin < v_datum_begin THEN v_datum_begin := l_datum_begin; v_melding_key := l_melding_key; END IF; v_loop_index := v_loop_index + 1; END IF; END IF; END LOOP; IF pchx_mon.klant_melding (v_melding_key) = 1 THEN RETURN v_melding_key; ELSE RETURN p_melding_key; END IF; END; FUNCTION get_regime (p_stdm_key IN NUMBER, p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund p_ins_key IN NUMBER) RETURN NUMBER AS v_mld_stdmelding_regime NUMBER; v_norm_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL); v_beginuur NUMBER; v_einduur NUMBER; v_werkdagen NUMBER; BEGIN mld.getslaparams (p_stdm_key, 3, -- prio p_alg_key, NULL, -- ins key v_mld_stdmelding_regime, v_norm_uitvoertijd, v_beginuur, v_einduur, v_werkdagen); -- kantoortijden of openingstijden waarbij de tijd niet gevuld is. IF v_mld_stdmelding_regime = 1 OR (v_mld_stdmelding_regime = 2 AND (v_beginuur = -1 OR v_einduur = -1)) THEN RETURN fac.safe_to_number (fac.getsetting ('fac_t_endofworkday')) - fac.safe_to_number (fac.getsetting ('fac_t_startofworkday')); END IF; IF v_mld_stdmelding_regime = 2 -- openingstijden THEN RETURN v_einduur - v_beginuur; END IF; IF v_mld_stdmelding_regime = 3 -- 24/7 THEN RETURN 24; END IF; RETURN NULL; END; FUNCTION get_index_value (p_date IN DATE, p_key IN NUMBER) RETURN NUMBER AS v_result NUMBER; BEGIN SELECT FAC.SAFE_TO_NUMBER(fac_usrdata_prijs) / 100000 fac_usrdata_prijs INTO v_result FROM fac_usrdata WHERE fac_usrtab_key = p_key AND fac_usrdata_verwijder IS NULL AND trunc(p_date, 'YYYY') = add_months(fac_usrdata_vervaldatum, -12); RETURN v_result; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 1; END; FUNCTION get_index_value (p_date IN DATE, p_categorie IN VARCHAR2) RETURN NUMBER AS v_index_1_key NUMBER; v_index_4_key NUMBER; v_index_5_key NUMBER; v_index_7_key NUMBER; v_index_10_key NUMBER; v_index_14_key NUMBER; v_index_18_key NUMBER; v_index_19_key NUMBER; v_index_20_key NUMBER; v_index_24_key NUMBER; v_index_25_key NUMBER; v_index_28_key NUMBER; v_index_1_value NUMBER; v_index_4_value NUMBER; v_index_5_value NUMBER; v_index_7_value NUMBER; v_index_10_value NUMBER; v_index_14_value NUMBER; v_index_18_value NUMBER; v_index_19_value NUMBER; v_index_20_value NUMBER; v_index_24_value NUMBER; v_index_25_value NUMBER; v_index_28_value NUMBER; v_result NUMBER; BEGIN IF PCHX.get_user = 'PCHA' THEN v_index_1_key := 181; v_index_4_key := 182; v_index_5_key := 183; v_index_7_key := 184; v_index_18_key := 241; v_index_20_key := 185; ELSE -- PCHW v_index_1_key := 121; v_index_10_key := 122; v_index_14_key := 123; v_index_19_key := 124; v_index_24_key := 125; v_index_25_key := 141; v_index_28_key := 126; END IF; v_index_1_value := get_index_value (p_date, v_index_1_key); v_index_4_value := get_index_value (p_date, v_index_4_key); v_index_5_value := get_index_value (p_date, v_index_5_key); v_index_7_value := get_index_value (p_date, v_index_7_key); v_index_10_value := get_index_value (p_date, v_index_10_key); v_index_14_value := get_index_value (p_date, v_index_14_key); v_index_18_value := get_index_value (p_date, v_index_18_key); v_index_19_value := get_index_value (p_date, v_index_19_key); v_index_20_value := get_index_value (p_date, v_index_20_key); v_index_24_value := get_index_value (p_date, v_index_24_key); v_index_25_value := get_index_value (p_date, v_index_25_key); v_index_28_value := get_index_value (p_date, v_index_28_key); CASE p_categorie WHEN 'MON' THEN v_result := v_index_1_value; WHEN 'CAT' THEN v_result := 1; WHEN 'FAC' THEN v_result := v_index_18_value; WHEN 'BEV' THEN v_result := 0.75 * v_index_5_value + 0.25 * v_index_7_value; WHEN 'SCH' THEN v_result := 0.80 * v_index_4_value + 0.15 * v_index_7_value + 0.05 * v_index_20_value; WHEN 'GLA' THEN v_result := 0.05 * v_index_1_value + 0.80 * v_index_4_value + 0.15 * v_index_7_value; WHEN 'SVD1' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD2' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD3' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD4' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD5' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD6' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD7' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD8' THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value; WHEN 'SVD9' THEN v_result := 0.3 * v_index_10_value + 0.7 * v_index_28_value; WHEN 'SVD10' THEN v_result := 0.3 * v_index_10_value + 0.7 * v_index_28_value; WHEN 'SVD11' THEN v_result := v_index_10_value; WHEN 'SVD12' THEN v_result := v_index_10_value; WHEN 'SVD13' THEN v_result := 0.2 * v_index_10_value + 0.8 * v_index_19_value; WHEN 'SVD14' THEN v_result := v_index_14_value; ELSE v_result := 1; END CASE; RETURN v_result; END; FUNCTION get_weging (p_startdatum IN DATE, p_stdmeldinggroep_key IN NUMBER) RETURN NUMBER AS v_mld_stdmelding_regime NUMBER; v_norm_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL); v_beginuur NUMBER; v_einduur NUMBER; v_werkdagen NUMBER; v_stdmeldinggroep_naam VARCHAR2(100); BEGIN SELECT mld_stdmeldinggroep_naam INTO v_stdmeldinggroep_naam FROM mld_stdmeldinggroep WHERE mld_stdmeldinggroep_key = p_stdmeldinggroep_key; IF SUBSTR(v_stdmeldinggroep_naam,1,15) = 'Beschikbaarheid' -- TODO conditie metingen toevoegen OR p_stdmeldinggroep_key = 8 -- Functionaliteit voorziening OR p_stdmeldinggroep_key = 22 -- Periodieke Meting Onderhoud THEN CASE WHEN p_startdatum BETWEEN TO_DATE('20210101', 'yyyymmdd') AND TO_DATE('20270101', 'yyyymmdd') THEN RETURN 1; WHEN p_startdatum BETWEEN TO_DATE('20270101', 'yyyymmdd') AND TO_DATE('20320101', 'yyyymmdd') THEN RETURN 0.85; WHEN p_startdatum BETWEEN TO_DATE('20320101', 'yyyymmdd') AND TO_DATE('20370101', 'yyyymmdd') THEN RETURN 0.7; ELSE RETURN 0; END CASE; ELSE RETURN 1; END IF; END; FUNCTION klant_melding (p_melding_key IN NUMBER) RETURN NUMBER AS v_klant_melding NUMBER; BEGIN SELECT DECODE (a.prs_bedrijf_key, DECODE (pchx.get_user, 'PCHW', 121, 'PCHA', 102, 'PGHE', 1021), 1, 0) klant_melding INTO v_klant_melding FROM mld_melding m, prs_perslid p, prs_v_afdeling a WHERE m.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND m.mld_melding_key = p_melding_key; RETURN v_klant_melding; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 0; END; FUNCTION get_max_korting (p_stdm_key IN NUMBER) RETURN NUMBER AS v_max_korting NUMBER; BEGIN IF pchx.get_user = 'PGHE' THEN SELECT FAC.safe_to_number(std.mld_stdmelding_malusmax) INTO v_max_korting FROM mld_stdmelding std WHERE mld_stdmelding_key = p_stdm_key; END IF; RETURN v_max_korting; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN 0; END; -- functie om er voor te zorgen dat de korting in het overzicht alleen positief kan zijn. -- Doordat de respijt langer kan zijn dan de WHT kan anders de korting negatief zijn. FUNCTION get_abs_bedrag (p_bedrag IN NUMBER) RETURN NUMBER AS BEGIN IF p_bedrag > 0 THEN RETURN p_bedrag; END IF; RETURN 0; END; FUNCTION check_max (p_bedrag IN NUMBER, p_max IN NUMBER) RETURN NUMBER AS BEGIN IF p_bedrag IS NULL THEN RETURN NULL; END IF; IF p_max IS NULL THEN RETURN p_bedrag; END IF; IF p_bedrag > p_max THEN RETURN p_max; ELSE RETURN p_bedrag; END IF; END; END; / -- Monitoring CREATE OR REPLACE VIEW pchx_v_startmelding_geg ( m_start, mld_alg_onroerendgoed_keys, mld_melding_status, mld_melding_afgerond, aantal, overlappend, t_van, gereed, mld_melding_spoed, mld_stdmelding_key, prs_kostenplaats_key, max_t_actual, min_t_sla, max_t_respijt, min_tht_einddatum_start, mld_melding_indult, mld_melding_einddatum_std, mld_melding_einddatum, mld_melding_omschrijving, mld_melding_opmerking, klant_melding, prs_bedrijf_key ) AS SELECT m.m_start, x.mld_alg_onroerendgoed_keys, -- als één van de onderliggende meldingen "open", dan moet ook M_START status Uitgegeven krijgen DECODE (m.open, 0, x.mld_melding_status, 4) mld_melding_status, --- 4 = Geaccepteerd??? x.mld_melding_afgerond, -- mld_melding_afgerond van alleen M_START m.aantal, m.overlappend, m.t_van, -- min_melding_datum DECODE(m.gereed, TO_DATE('20991231', 'YYYYMMDD'), TO_DATE(NULL), m.gereed), -- max_actual_einddatum x.mld_melding_spoed, -- mld_melding_spoed van alleen M_START x.mld_stdmelding_key, -- mld_stdmelding_key van alleen M_START x.prs_kostenplaats_key, -- prs_kostenplaats_key van alleen M_START mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd! m.t_van, DECODE (m.gereed, TO_DATE('20991231', 'YYYYMMDD'), SYSDATE, m.gereed), x.mld_stdmelding_key, x.mld_melding_spoed, x.mld_alg_onroerendgoed_keys, NULL) max_t_actual, mld_t_uitvoertijd (m.min_uitvoertijd, m.min_uitvoertijd_eenheid) min_t_sla, mld_t_uitvoertijd (COALESCE (m.max_respijt, 0), m.max_respijt_eenheid) max_t_respijt, -- altijd dezelfde eenheid als uitvoertijd??? mld.geteinddatum ( m.m_start, mld_t_uitvoertijd (m.min_uitvoertijd + m.max_respijt, m.min_uitvoertijd_eenheid), m.t_van) min_tht_einddatum_start, -- meest nabije tht-einddatum van overlappende meldingen (t_van + MIN SLA + MAX respijt) m.mld_melding_indult, -- max_melding_indult m.mld_melding_einddatum_std, -- min_melding_einddatum_std of min_tht_einddatum_start??? m.mld_melding_einddatum, -- max_melding_einddatum x.mld_melding_omschrijving, -- mld_melding_oms. van alleen M_START x.mld_melding_opmerking, -- mld_melding_opm. van alleen M_START m.klant_melding, -- melding gemeld door medewerker klant m.prs_bedrijf_key -- bedrijf key van de melder FROM ( SELECT m.m_start, SUM (m.open) open, COUNT (m.mld_melding_key) aantal, listagg (m.mld_melding_key, ',') WITHIN GROUP (ORDER BY m.mld_melding_key) AS overlappend, MIN (m.mld_melding_datum) t_van, -- min_melding_datum MAX (m.gereed) gereed, -- max_actual_einddatum MIN (m.mld_melding_t_uitvoertijd.tijdsduur) min_uitvoertijd, MIN (m.mld_melding_t_uitvoertijd.eenheid) min_uitvoertijd_eenheid, MAX (m.mld_melding_t_respijt.tijdsduur) max_respijt, MAX (m.mld_melding_t_respijt.eenheid) max_respijt_eenheid, -- altijd dezelfde eenheid als uitvoertijd??? MAX (m.mld_melding_indult) mld_melding_indult, MIN (m.mld_melding_einddatum_std) mld_melding_einddatum_std, -- min_melding_einddatum_std of min_thtsla_einddatum_start??? MAX (m.mld_melding_einddatum) mld_melding_einddatum, MAX (m.klant_melding) klant_melding, MAX (m.prs_bedrijf_key) prs_bedrijf_key FROM (SELECT PCHX_MON.get_first_melding (m.mld_melding_key, 1) m_start, m.mld_melding_key, DECODE (m.mld_melding_status, 4, 1, 0) open, -- open = Geaccepteerd??? m.mld_melding_datum, COALESCE(fac.gettrackingdate ('MLDAFM', m.mld_melding_key), TO_DATE('20991231', 'YYYYMMDD')) gereed, m.mld_melding_t_uitvoertijd, m.mld_melding_t_respijt, m.mld_melding_indult, m.mld_melding_einddatum_std, m.mld_melding_einddatum, a.prs_bedrijf_key, pchx_mon.klant_melding(m.mld_melding_key) klant_melding FROM mld_melding m, mld_stdmelding std, prs_perslid p, prs_v_afdeling a WHERE m.mld_melding_parentkey IS NULL AND m.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND m.mld_melding_status <> 1 --Ivm PCHA#72857, geen afgewezen meldingen meenemen -- meldingen die al geexporteerd zijn (en in de tabel nmms_monitoring staan) komen niet meer in deze view AND NOT EXISTS (SELECT 1 FROM pchx_monitoring WHERE melding_key = m.mld_melding_key) AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_stdmelding_slabewaken = 1 -- alleen meldingen waarvoor een malus geldt ) m GROUP BY m.m_start) m, mld_melding x -- gedefinieerde set gegevens bij M_START als referentie WHERE m.m_start = x.mld_melding_key; CREATE OR REPLACE VIEW pchx_v_monitoring ( melding_key, afw, indult, respijt, kostenplaats, locatie, gebouw, verdieping, ruimte, omschrijving, begin, gereed, thtijdstip, verwerkt, eenheid, tht, wht, regime, groep, basiskorting, variabelekorting, wht_tht, totaal, totaal_z_respijt, totaal_index, status, afgerond, dienst, stdmelding_key, discipline_key, overlappend, gekoppeld, wegingsfactor, melding_omschrijving, melding_opmerking, klant_melding, bedrijf_naam, og, bedrijf_malus, prefix, kenmerken, note ) AS SELECT m_start, --mld_melding_key, DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast || DECODE (g.respijt.tijdsduur, 0, '', 'R') -- er is een respijt ingevuld || DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee || DECODE (niet_overlappen, 1, 'O', '') -- melding is gemarkeerd als zijnde niet te overlappen met een andere melding || DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'), DECODE (g.respijt.tijdsduur, 0, NULL, TO_CHAR (ROUND (g.respijt.tijdsduur, 2))) respijt, prs_kostenplaats_nr, alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr, ruimte, mld_stdmelding_omschrijving, t_van, gereed, thtijdstip, (SELECT MAX(fac_tracking_datum) FROM fac_tracking WHERE fac_tracking_refkey = m_start --mld_melding_key AND fac_srtnotificatie_key = DECODE(pchx.get_user, 'PGHE', 56, 46)) verwerkt, eenheid, ROUND (g.tht.tijdsduur, 2) tht, ROUND (g.actual.tijdsduur, 2) wht, regime, mld_stdmeldinggroep_naam groep, bk basiskorting, vk variabelekorting, DECODE (telaat, 1, ROUND (g.uitloop.tijdsduur, 2)) wht_tht, PCHX_MON.get_abs_bedrag ( DECODE ( telaat, 1, -- Westland rond de breuk af op 1 decimaal en HGH rond af op gehele getallen. Gemeente Heerlen rond de breuk naar beneden af op gehele getallen. coalesce(bk,0) + DECODE(vk, null, 0, (DECODE(pchx.get_user, 'PGHE' , TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk, ROUND (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur), DECODE(pchx.get_user, 'PCHW', 1,0)) * vk))), -- Alleen als dagen x24! NULL)) totaal, DECODE ( telaat_z_respijt, 1, -- Westland rond de breuk af op 1 decimaal en HGH rond af op gehele getallen. Gemeente Heerlen rond de breuk naar beneden af op gehele getallen. coalesce(bk,0) + DECODE(vk, null, 0, (DECODE(pchx.get_user, 'PGHE' , TRUNC (g.uitloop_z_respijt.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk, ROUND (g.uitloop_z_respijt.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur), DECODE(pchx.get_user, 'PCHW', 1,0)) * vk))), -- Alleen als dagen x24! NULL) totaal_z_respijt, PCHX_MON.get_abs_bedrag ( DECODE (pchx.get_user, 'PGHE' , DECODE ( telaat, 1, PCHX_MON.check_max(coalesce(bk,0) + DECODE(vk, null, 0, (TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk)) * -- Alleen als dagen x24! wegingsfactor, PCHX_MON.get_max_korting(mld_stdmelding_key))), DECODE ( telaat, 1, coalesce(bk,0) + DECODE(vk, null, 0, (ROUND (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur), DECODE(pchx.get_user, 'PCHW', 1,0)) * vk)), -- Alleen als dagen x24! NULL) * PCHX_MON.get_index_value(t_van, 'MON')) ) totaal_index, -- voor PGHE is dit het totaal tov de max vergoeding en verminigvuldigd met de weging (SELECT mld_statuses_omschrijving FROM mld_statuses WHERE mld_statuses_key = mld_melding_status), DECODE (mld_melding_afgerond, 1, 'x'), (SELECT prs_dienst_omschrijving FROM prs_dienst WHERE prs_dienst_key = g.prs_dienst_key), mld_stdmelding_key, mld_ins_discipline_key, overlappend, (SELECT listagg (m2.mld_melding_key, ',') WITHIN GROUP (ORDER BY m2.mld_melding_key) AS gekoppeld FROM mld_melding m2 WHERE COALESCE(m2.mld_melding_parentkey, -1) = m_start GROUP BY m2.mld_melding_parentkey) gekoppeld, wegingsfactor, mld_melding_omschrijving, mld_melding_opmerking, klant_melding, (SELECT prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = g.prs_bedrijf_key) prs_bedrijf_naam, DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1), PCHX.get_kenmerk('MLD', DECODE(PCHX.get_user, 'PCHA', 61, 'PCHW', 121, 'PGHE', 102), m_start), ins_srtdiscipline_prefix, (SELECT listagg (mld_srtkenmerk_omschrijving || ': ' || PCHX.get_kenmerk ('MLD',k.mld_kenmerk_key, m_start), chr(10)) WITHIN GROUP (ORDER BY k.mld_kenmerk_volgnummer) AS kenmerken FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = m_start AND km.mld_kenmerk_key = k.mld_kenmerk_key and k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL and sk.mld_srtkenmerk_verwijder IS NULL GROUP BY mld_melding_key) kenmerken, (SELECT mld_melding_note_omschrijving FROM mld_melding_note n WHERE n.mld_melding_key = m_start AND NOT EXISTS (SELECT mld_melding_note_key FROM mld_melding_note n2 WHERE n2.mld_melding_key = n.mld_melding_key AND n2.mld_melding_note_key > n.mld_melding_note_key)) note FROM (SELECT m.m_start, m.aantal, DECODE (m.aantal, 1, NULL, m.overlappend) overlappend, ( SELECT count(*) FROM mld_kenmerkmelding km WHERE mld_kenmerk_key = DECODE(PCHX.get_user, 'PCHA', 241, 'PCHW', 221, 'PGHE', 121) AND km.mld_melding_key = m_start) niet_overlappen, m.mld_melding_status, m.mld_melding_afgerond, m.mld_melding_indult, m.mld_melding_omschrijving, m.mld_melding_opmerking, std.prs_dienst_key, std.mld_stdmelding_key, std.mld_ins_discipline_key, std.mld_stdmelding_omschrijving, std.mld_stdmelding_malus, m.t_van, m.gereed, m.mld_melding_einddatum_std thtijdstip, stdg.mld_stdmeldinggroep_naam, PCHX_MON.get_regime (std.mld_stdmelding_key, m.mld_alg_onroerendgoed_keys, NULL) regime, -- aantal werkuren per dag UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) kortingtype, -- de meldingsgroep bevat het type storing kp.prs_kostenplaats_nr, l.alg_locatie_code, g.alg_gebouw_upper, v.alg_verdieping_volgnr, r.alg_ruimte_nr || '-' || r.alg_ruimte_omschrijving ruimte, COALESCE ((SELECT stsr.mld_stdmsrtruimte_malusbasis FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = r.alg_srtruimte_key), std.mld_stdmelding_malusbasis) bk, COALESCE ((SELECT stsr.mld_stdmsrtruimte_malus FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = r.alg_srtruimte_key), std.mld_stdmelding_malus) vk, (SELECT COUNT (mb.mld_melding_key) aantal -- kijk of er op het moment van de melding er een beschikbaarheidsstoring was FROM mld_melding mb, mld_stdmelding std_b WHERE (mb.mld_melding_datum BETWEEN m.t_van AND COALESCE (m.gereed, SYSDATE) OR fac.gettrackingdate ('MLDAFM', mb.mld_melding_key) BETWEEN m.t_van AND COALESCE ( m.gereed, SYSDATE)) AND mb.mld_alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND mb.mld_stdmelding_key = std_b.mld_stdmelding_key AND std_b.mld_stdmeldinggroep_key = 63 -- beschikbaarheid AND std.mld_stdmeldinggroep_key <> 63) aantal_beschikb, -- beschikbaarheid -- vervolgmelding op een inspectie zijn per definitie te laat -- inspecties zelf zijn te laat als de geplande einddatum verstreken is. -- anders geldt de normale formule SIGN( m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur - m.max_t_respijt.tijdsduur) -- positief, dan te laat telaat, SIGN( m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur) -- positief, dan te laat telaat_z_respijt, m.max_t_actual actual, -- MAX actuele doorlooptijd m.min_t_sla thtsla, -- MIN SLA m.min_t_sla.eenheid eenheid, m.max_t_respijt respijt, -- MAX respijt mld_t_uitvoertijd ( m.min_t_sla.tijdsduur + m.max_t_respijt.tijdsduur, m.min_t_sla.eenheid) tht, -- MIN SLA + MAX respijt mld_t_uitvoertijd ( m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur - m.max_t_respijt.tijdsduur, m.max_t_actual.eenheid) uitloop, -- hoeveel te laat mld_t_uitvoertijd ( m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur, m.max_t_actual.eenheid) uitloop_z_respijt, -- hoeveel te laat DECODE(PCHX.get_user, 'PGHE', pchx_mon.get_weging(m.t_van, stdg.mld_stdmeldinggroep_key), -- Afhankelijk van de stdmeldinggroep en de periode sr.alg_srtruimte_prijs4) wegingsfactor, -- wegingsfactor bij soortruimte -- is de tijd van de melding aangepast? (SELECT COUNT ( * ) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_tracking_refkey = m.m_start -- mld_melding_key VAN MELDING MET LAAGSTE KEY??? AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDUPD' AND (t.fac_tracking_oms LIKE '%Start :%' OR t.fac_tracking_oms LIKE '%Afgemeld:%')) antedateren, klant_melding, prs_bedrijf_key, ins_srtdiscipline_prefix FROM pchx_v_startmelding_geg m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmeldinggroep stdg, prs_kostenplaats kp, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r, alg_srtruimte sr WHERE m.mld_melding_status IN (0, 2, 3, 4, 5, 6, 7, 99) -- alles behalve 1=Afgewezen AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key(+) AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key(+) AND r.alg_verdieping_key = v.alg_verdieping_key(+) AND v.alg_gebouw_key = g.alg_gebouw_key(+) AND g.alg_locatie_key = l.alg_locatie_key(+) AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND ( ( PCHX.get_user = 'PGHE' AND ( UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) IN ('M') -- Meting Periodiek -- Meldingen op V&G en W&R worden altijd getoond ook als ze door een eigen medewerker zijn ingelegd. OR d.ins_discipline_key IN (154, 150) -- Veiligheid en gezondheid, Regelgeving OR klant_melding = 1 ) -- alleen meldingen waarvoor een malus geldt AND ( std.mld_stdmelding_malus IS NOT NULL OR std.mld_stdmelding_malusbasis IS NOT NULL OR EXISTS (SELECT mld_stdmsrtruimte_key FROM mld_stdmsrtruimte stdsr WHERE stdsr.mld_stdmelding_key = std.mld_stdmelding_key AND stdsr.alg_srtruimte_key = r.alg_srtruimte_key) ) ) OR ( PCHX.get_user = 'PCHA' -- meldingen op inspecties worden altijd getoond (Kq) AND ( UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q' -- anders alleen storingen ingelegd door klant medewerkers OR klant_melding = 1 -- Meldingen op V&G en W&R worden altijd getoond ook als ze door een eigen medewerker zijn ingelegd. OR d.ins_discipline_key in (232, 220) -- V en G, W en R ) AND ( std.mld_stdmelding_malus IS NOT NULL OR EXISTS (SELECT mld_stdmsrtruimte_key FROM mld_stdmsrtruimte stdsr WHERE stdsr.mld_stdmelding_key = std.mld_stdmelding_key) ) ) OR ( PCHX.get_user = 'PCHW' -- meldingen op inspecties worden altijd getoond (Kq) AND ( UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q' OR klant_melding = 1 ) -- alleen meldingen waarvoor een malus geldt of als er een uitzondering voor deze ruimtefunctie is. AND ( std.mld_stdmelding_malus IS NOT NULL OR EXISTS (SELECT mld_stdmsrtruimte_key FROM mld_stdmsrtruimte stdsr WHERE stdsr.mld_stdmelding_key = std.mld_stdmelding_key) ) ) ) ) g; -- Rapport om de niet gegroeperde data te zien CREATE OR REPLACE VIEW pchx_v_monitoring_onderlegger ( start_key, melding_key, afw, indult, respijt, locatie, gebouw, verdieping, ruimte, omschrijving, begin, gereed, thtijdstip, tht, eenheid, wht, regime, basiskorting, variabelekorting, melding_omschrijving, melding_opmerking, klant_melding ) AS SELECT pchx_mon.get_first_melding (m.mld_melding_key, 1) m_start, m.mld_melding_key, DECODE (antedateren.aantal, 0, '', NULL, '', 'T') -- de begintijd of eindtijd van de melding is aangepast || DECODE (m.mld_melding_t_respijt.tijdsduur, 0, '', NULL, '', 'R') -- er is een respijt ingevuld || DECODE (m.mld_melding_indult, 1, 'I', '') afw, -- indult is aangevinkt dus melding doet niet mee m.mld_melding_indult indult, m.mld_melding_t_respijt.tijdsduur respijt, alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr, alg_ruimte_nr, std.mld_stdmelding_omschrijving, m.mld_melding_datum begin, fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed, m.mld_melding_einddatum_std thttijdstip, m.mld_melding_t_uitvoertijd.tijdsduur tht, m.mld_melding_t_uitvoertijd.eenheid thteenheid, mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd! m.mld_melding_datum, COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE), m.mld_stdmelding_key, m.mld_melding_spoed, m.mld_alg_onroerendgoed_keys, NULL).tijdsduur wht, pchx_mon.get_regime (std.mld_stdmelding_key, m.mld_alg_onroerendgoed_keys, NULL) regime, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malusbasis FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malusbasis) bk, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malus FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malus) vk, mld_melding_omschrijving, mld_melding_opmerking, pchx_mon.klant_melding(m.mld_melding_key) FROM mld_melding m, mld_stdmelding std, alg_v_ruimte_gegevens rg, ( SELECT COUNT ( * ) aantal, t.fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDUPD' AND (t.fac_tracking_oms LIKE '%Start :%' OR t.fac_tracking_oms LIKE '%Afgemeld:%') GROUP BY t.fac_tracking_refkey) antedateren WHERE m.mld_melding_parentkey IS NULL AND m.mld_melding_key = antedateren.fac_tracking_refkey(+) AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+) -- meldingen die al geexporteerd zijn (en in de tabel nmms_monitoring staan) komen niet meer in deze view AND NOT EXISTS (SELECT 1 FROM pchx_monitoring WHERE melding_key = m.mld_melding_key) AND m.mld_stdmelding_key = std.mld_stdmelding_key -- alleen meldingen waarvoor een malus geldt AND ( std.mld_stdmelding_malus IS NOT NULL OR (PCHX.get_user = 'PGHE' AND std.mld_stdmelding_malusbasis IS NOT NULL) -- Dit zou eigenlijk ook voor de andere klanten moeten gelden. OR EXISTS (SELECT mld_stdmsrtruimte_key FROM mld_stdmsrtruimte stdsr WHERE stdsr.mld_stdmelding_key = std.mld_stdmelding_key)); -- Het rapport monitoring totaal bevat alle kortingen van de afgelopen maand als deze nog niet -- bevroren zijn. Als dit wel zo is dan bevat het rapport de gegevens van de huidige maand. CREATE OR REPLACE VIEW pchx_v_monitoring_tot ( melding_key, afw, indult, respijt, locatie, gebouw, verdieping, ruimte, omschrijving, begin, gereed, thtijdstip, verwerkt, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, wegingsfactor, melding_omschrijving, melding_opmerking, dienst, stdmelding_key, totaal, totaal_index, totaal_z_respijt, overlappend, gekoppeld, kinderen, bedrijf_naam, klant_melding, bedrijf_malus, prefix ) AS SELECT melding_key, afw, indult, respijt, locatie, gebouw, verdieping, ruimte, omschrijving, begin, gereed, thtijdstip, verwerkt, eenheid, tht, wht, wht_tht, regime, groep, NULL typekorting, basiskorting, variabelekorting, wegingsfactor, melding_omschrijving, melding_opmerking, dienst, stdmelding_key, DECODE (indult, 'Ja', 0, totaal), DECODE (indult, 'Ja', 0, totaal_index), totaal_z_respijt, SUBSTR (overlappend, 1, 100), SUBSTR (gekoppeld, 1, 100), NULL, -- kinderen bij herhalingskorting bedrijf_naam, klant_melding, bedrijf_malus, prefix FROM pchx_v_monitoring WHERE (totaal IS NOT NULL OR afw IS NOT NULL) AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie')) AND (gereed < TRUNC (SYSDATE, 'MONTH') -- Vorige maand afgemeld als we al over de maandgrens zitten. OR TRUNC (SYSDATE, 'MONTH') = -- Huidige maand. Dan is de huidige maand gelijk aan de maand van de laatste export (SELECT TRUNC (MAX (export_datum), 'MONTH') FROM pchx_monitoring)) UNION ALL SELECT NULL melding_key, NULL afw, NULL indult, NULL respijt, NULL locatie, NULL gebouw, NULL verdieping, NULL ruimte, NULL omschrijving, ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin, TRUNC (SYSDATE, 'MONTH') gereed, NULL thtijdstip, NULL verwerkt, NULL eenheid, NULL tht, NULL wht, NULL wht_tht, NULL regime, 'Overschrijding' groep, NULL typekorting, NULL basiskorting, 250 variabelekorting, NULL wegingsfactor, NULL melding_omschrijving, NULL melding_opmerking, NULL dienst, NULL stdmelding_key, 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal, PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal_index, NULL totaal_z_respijt, NULL overlappend, NULL gekoppeld, listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting NULL bedrijf_naam, NULL klant_melding, NULL bedrijf_malus, NULL prefix FROM pchx_v_monitoring WHERE PCHX.get_user = 'PCHW' AND totaal IS NOT NULL AND totaal <> 0 AND indult = 'Nee' AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie')) AND (gereed < TRUNC (SYSDATE, 'MONTH') OR TRUNC (SYSDATE, 'MONTH') = (SELECT TRUNC (MAX (export_datum), 'MONTH') FROM pchx_monitoring)) GROUP BY 'Overschrijding' UNION ALL SELECT NULL melding_key, NULL afw, NULL indult, NULL respijt, NULL locatie, NULL gebouw, NULL verdieping, NULL ruimte, NULL omschrijving, ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin, TRUNC (SYSDATE, 'MONTH') gereed, NULL thtijdstip, NULL verwerkt, NULL eenheid, NULL tht, NULL wht, NULL wht_tht, NULL regime, 'Overschrijding' groep, NULL typekorting, NULL basiskorting, 50 variabelekorting, NULL wegingsfactor, NULL melding_omschrijving, NULL melding_opmerking, NULL dienst, NULL stdmelding_key, 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal, PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal_index, NULL totaal_z_respijt, NULL overlappend, NULL gekoppeld, listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting NULL bedrijf_naam, NULL klant_melding, NULL bedrijf_malus, NULL prefix FROM pchx_v_monitoring WHERE PCHX.get_user = 'PCHW' AND indult = 'Nee' AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie')) AND (gereed < TRUNC (SYSDATE, 'MONTH') OR TRUNC (SYSDATE, 'MONTH') = (SELECT TRUNC (MAX (export_datum), 'MONTH') FROM pchx_monitoring)) GROUP BY 'Overschrijding'; CREATE OR REPLACE VIEW pchx_v_monitoring_history ( maand, export_datum, melding_key, afw, indult, respijt, ruimte, omschrijving, begin, gereed, thtijdstip, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, totaal, totaal_index, totaal_z_respijt, dienst, hide_f_stdmelding_key, wegingsfactor, overlappend, gekoppeld, kinderen, klant_melding, bedrijf, melding_omschrijving, melding_opmerking, bedrijf_malus, prefix ) AS SELECT TO_CHAR(TRUNC(export_datum, 'MONTH')-1, 'yyyy-month') maand, export_datum, melding_key, afw, indult, respijt, ruimte, omschrijving, begin, gereed, thtijdstip, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, totaal, totaal_index, totaal_z_respijt, dienst, stdmelding_key, wegingsfactor, overlappend, gekoppeld, kinderen, klant_melding, prs_bedrijf_naam, melding_omschrijving, melding_opmerking, bedrijf_malus, prefix FROM pchx_monitoring mo WHERE begin IS NOT NULL; CREATE OR REPLACE VIEW pchx_v_facuur_onderlegger ( maand, export_datum, melding_key, afw, indult, respijt, ruimte, omschrijving, begin, gereed, thtijdstip, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, totaal, totaal_index, dienst, hide_f_stdmelding_key, wegingsfactor, overlappend, gekoppeld, klant_melding, bedrijf, melding_omschrijving, melding_opmerking, bedrijf_malus, prefix ) AS SELECT TO_CHAR(TRUNC(export_datum, 'MONTH')-1, 'yyyy-month') maand, export_datum, melding_key, afw, indult, respijt, ruimte, omschrijving, begin, gereed, thtijdstip, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, totaal, totaal_index, dienst, stdmelding_key, wegingsfactor, overlappend, gekoppeld, klant_melding, prs_bedrijf_naam, melding_omschrijving, melding_opmerking, bedrijf_malus, prefix FROM pchx_monitoring mo WHERE totaal <> 0; CREATE OR REPLACE VIEW pchx_v_rap_svd ( xml_node, mld_melding_nr, mld_melding_key, svd_type, mld_status, status, datum, omschrijving, aantal, prijs, totaal, index_totaal, index_cijfer, actuele_prijs, mld_opdr_key, lomschr, kostensoort, kostenkenmerk, kostenplaats, goedgekeurd, fcl ) AS SELECT 'opdracht', TO_CHAR (m.mld_melding_key), m.mld_melding_key, DECODE (SUBSTR (fac_usrdata_upper, 1, 3), 'BEV', 'Risicobeheersing', 'FAC', 'Facilitair ondersteuner', 'GLA', 'Gladheidsbestrijding', 'Schoonmaken'), st.mld_statuses_omschrijving, DECODE (mld_statusopdr_key, 6, 'Afgemeld', 9, 'Afgerond', 7, 'Verwerkt', 'Open'), COALESCE (mld_opdr_plandatum, mld_opdr_einddatum), COALESCE (mld_opdr_materiaal_omschr, ud.fac_usrdata_omschr), mld_opdr_materiaal_aantal, mld_opdr_materiaal_prijs, mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs totaal, ROUND ( PCHX_MON.get_index_value (COALESCE (mld_opdr_plandatum, mld_opdr_einddatum), SUBSTR(fac_usrdata_code, 1,3) ) * mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs, 2) index_totaal, TO_CHAR(REPLACE(PCHX_MON.get_index_value (COALESCE (mld_opdr_plandatum, mld_opdr_einddatum), SUBSTR(fac_usrdata_code, 1,3) ), '.', ',')) AS indexcijfer, TO_CHAR(REPLACE(PCHX_MON.get_index_value (COALESCE (mld_opdr_plandatum, mld_opdr_einddatum), SUBSTR(fac_usrdata_code, 1,3) ) * mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs, '.', ',')) AS ActuelePrijs, o.mld_opdr_key, DECODE ( fac_usrdata_upper, 'BEVBINKAN24', 'Extra capaciteit beveiliging binnen reguliere gebruikstijden, die binnen 24 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVBINKAN4', 'Extra capaciteit beveiliging binnen reguliere gebruikstijden, die binnen 4 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVBUIKANA24', 'Extra capaciteit beveiliging buiten reguliere gebruikstijden, avond die binnen 24 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVBUIKANA4', 'Extra capaciteit beveiliging buiten reguliere gebruikstijden, avond die binnen 4 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVBUIKANW24', 'Extra capaciteit beveiliging buiten reguliere gebruikstijden, weekend die binnen 24 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVBUIKANW4', 'Extra capaciteit beveiliging buiten reguliere gebruikstijden, weekend die binnen 4 uur voorafgaand aan de inzet wordt aangevraagd.', 'BEVCALBINKAN2', 'Onbekend', 'BEVCALBUIKANA2', 'Onbekend', 'BEVCALBUIKANW2', 'Onbekend', 'SCHSPOEL', 'Extra capaciteit schoonmaak, spoelkeuken medewerker', 'SCHPC', 'Extra capaciteit schoonmaak, reiniging PC en toebehoren (= toetsenbord en muis)', 'SCHBINKAN', 'Extra capaciteit schoonmaak, dagkracht', 'SCHBUIKAN', 'Extra capaciteit schoonmaak, avonden / weekenden', 'SCHGRAF', 'Extra capaciteit schoonmaak, verwijderen graffiti', 'GLADHEIDBESTR', 'Gladheidbestrijding', 'FACONDAVO', 'Fac. Ondersteuner avond', 'FACONDKAN', 'Fac. Ondersteuner kantoor (>160 uur)', 'FACONDKANLT160', 'Fac. Ondersteuner kantoor (<160 uur)', 'FACONDZAT', 'Fac. Ondersteuner zaterdag', 'FACONDZON', 'Fac. Ondersteuner zondag', fac_usrdata_upper) lomschr, DECODE (fac_usrdata_upper, 'BEVBINKAN24', '80', 'BEVBINKAN4', '81', 'BEVBUIKANA24', '82', 'BEVBUIKANA4', '83', 'BEVBUIKANW24', '84', 'BEVBUIKANW4', '85', 'BEVCALBINKAN2', 'Onbekend', 'BEVCALBUIKANA2', 'Onbekend', 'BEVCALBUIKANW2', 'Onbekend', 'SCHSPOEL', '88', 'SCHPC', '89', 'SCHBINKAN', '90', 'SCHBUIKAN', '91', 'SCHGRAF', '92', 'GLADHEIDBESTR', '93', fac_usrdata_upper) kostensoort, DECODE (fac_usrdata_upper, 'BEVBINKAN24', '6.1.1', 'BEVBINKAN4', '6.1.2', 'BEVBUIKANA24', '6.1.3', 'BEVBUIKANA4', '6.1.4', 'BEVBUIKANW24', '6.1.5', 'BEVBUIKANW4', '6.1.6', 'BEVCALBINKAN2', 'Onbekend', 'BEVCALBUIKANA2', 'Onbekend', 'BEVCALBUIKANW2', 'Onbekend', 'SCHSPOEL', '6.2.7', 'SCHPC', '6.2.8', 'SCHBINKAN', '6.2.9', 'SCHBUIKAN', '6.2.10', 'SCHGRAF', '6.2.11', 'GLADHEIDBESTR', '6.2.12', fac_usrdata_upper) kostenkenmerk, prs_kostenplaats_nr, COALESCE ( ( SELECT FAC.safe_to_number(ko.mld_kenmerkopdr_waarde) FROM mld_kenmerkopdr ko WHERE ko.mld_kenmerk_key = 281 -- goedgekeurd door aanvrager AND ko.mld_opdr_key = o.mld_opdr_key) , 0) goedgekeurd, NULL fcl FROM mld_opdr o, mld_opdr_materiaal om, fac_usrdata ud, mld_melding m, mld_stdmelding std, mld_discipline d, prs_kostenplaats k, mld_statuses st WHERE o.mld_opdr_key = om.mld_opdr_key AND ud.fac_usrdata_key = om.fac_usrdata_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND mld_statusopdr_key NOT IN (1, 2) AND st.mld_statuses_key = m.mld_melding_status AND NOT EXISTS ( SELECT f.mld_opdr_key FROM pchx_svd f WHERE f.mld_opdr_key = o.mld_opdr_key) UNION ALL SELECT 'artikel', res_reservering_key || '/' || res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_key, 'Catering', TO_CHAR(NULL), b.res_status_bo_omschrijving, res_rsv_ruimte_van, ra.res_artikel_omschrijving, rra.res_rsv_artikel_aantal, ra.res_artikel_prijs, res.getartikelprijs (rra.res_rsv_artikel_key), PCHX_MON.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep) * res.getartikelprijs (rra.res_rsv_artikel_key), TO_CHAR(REPLACE(PCHX_MON.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep), '.', ',')) AS indexcijfer, TO_CHAR(REPLACE(PCHX_MON.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep) * res.getartikelprijs (rra.res_rsv_artikel_key), '.', ',')) AS ActuelePrijs, rra.res_rsv_artikel_key, ra.res_artikel_omschrijving, ra.res_artikel_groep, NULL, k.prs_kostenplaats_nr, TO_NUMBER(NULL), (SELECT res_kenmerkreservering_waarde FROM res_kenmerkwaarde kw, res_kenmerk k WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 23 AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) fcl -- FCL FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra, res_status_bo b, prs_kostenplaats k WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_status_bo_key = b.res_status_bo_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rra.res_rsv_artikel_verwijder IS NULL AND ra.res_artikel_groep LIKE 'SVD%' AND ra.res_artikel_groep <> 'SVD14' UNION ALL SELECT 'artikel', res_reservering_key || '/' || res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_key, 'Electriciteit', TO_CHAR (NULL), b.res_status_bo_omschrijving, res_rsv_ruimte_van, ra.res_artikel_omschrijving, rra.res_rsv_artikel_aantal, ra.res_artikel_prijs / 1000, res.getartikelprijs (rra.res_rsv_artikel_key) / 1000, pchx_mon.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep) * res.getartikelprijs (rra.res_rsv_artikel_key) / 1000, TO_CHAR(REPLACE(PCHX_MON.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep), '.', ',')) AS indexcijfer, TO_CHAR(REPLACE(PCHX_MON.get_index_value (rra.res_rsv_artikel_levering, ra.res_artikel_groep) * res.getartikelprijs (rra.res_rsv_artikel_key), '.', ',')) AS ActuelePrijs, rra.res_rsv_artikel_key, ra.res_artikel_omschrijving, ra.res_artikel_groep, NULL, k.prs_kostenplaats_nr, TO_NUMBER (NULL), (SELECT res_kenmerkreservering_waarde FROM res_kenmerkwaarde kw, res_kenmerk k WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 23 AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) fcl -- FCL FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra, res_status_bo b, prs_kostenplaats k WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_status_bo_key = b.res_status_bo_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rra.res_rsv_artikel_verwijder IS NULL AND ra.res_artikel_groep = 'SVD14'; -- Het rapport svd totaal bevat alle SVDs van de afgelopen maand als deze nog niet -- bevroren zijn. Als dit wel zo is dan bevat het rapport de gegevens van de huidige maand. CREATE OR REPLACE VIEW pchx_v_rap_svd_tot AS SELECT * FROM pchx_v_rap_svd WHERE status = 'Verwerkt' --WHERE status = DECODE(PCHX.get_user, 'PCHW', 'Afgemeld', 'Verwerkt') -- In PCHW#61325 is deze uitzondering komen te vervallen en worden SVD's getoond met status Verwerkt AND (datum < TRUNC (SYSDATE, 'MONTH') -- Vorige maand afgemeld als we al over de maandgrens zitten. OR TRUNC (SYSDATE, 'MONTH') = -- Huidige maand. Dan is de huidige maand gelijk aan de maand van de laatste export (SELECT TRUNC (MAX (export_datum), 'MONTH') FROM pchx_svd)) AND mld_opdr_key NOT IN (SELECT mld_opdr_key FROM pchx_svd); CREATE OR REPLACE PROCEDURE pchx_select_freeze_mon ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c1 IS SELECT melding_key, indult FROM pchx_v_monitoring WHERE status = 'Afgemeld' AND gereed < TRUNC (SYSDATE, 'MONTH') AND afw IS NULL; -- geen afwijkingen die goedgekeurd moeten worden --AND afgerond IS NULL -- expliciete goedkeuring staat niet aan -- !!! controleer ook meldingen die aan elkaar gekoppeld zijn !!!!!!!!!!!!!!!!!! CURSOR c2 IS SELECT m_start, m.mld_melding_key, (SELECT mld_melding_status FROM mld_melding ms WHERE ms.mld_melding_key = m_start) mld_melding_status FROM (SELECT PCHX_MON.get_first_melding (mld_melding_key, 1) m_start, fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed, m.* FROM mld_melding m WHERE m.mld_melding_parentkey IS NULL AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'MONTH') AND m.mld_melding_key NOT IN (SELECT melding_key FROM pchx_monitoring WHERE melding_key IS NOT NULL) ) m, pchx_v_monitoring mo WHERE m_start <> m.mld_melding_key AND m_start = mo.melding_key AND ( (status = 'Afgemeld' AND afw IS NULL) -- startmelding mag niet hangen op goedkeuring OR (status = 'Historie')); CURSOR c3 IS SELECT * FROM pchx_v_monitoring_tot WHERE groep <> 'Overschrijding'; CURSOR c_svd_opdracht IS SELECT * FROM pchx_v_rap_svd WHERE status = 'Verwerkt' AND xml_node = 'opdracht' AND datum < TRUNC (SYSDATE, 'MONTH') AND mld_opdr_key NOT IN (SELECT mld_opdr_key FROM pchx_svd); CURSOR c_svd_artikel IS SELECT * FROM pchx_v_rap_svd WHERE status = 'Afgemeld' AND xml_node = 'artikel' AND datum < TRUNC (SYSDATE, 'MONTH'); v_exportdate DATE; v_lastexport DATE; v_kortingen_totaal NUMBER(11,2); v_svd_totaal NUMBER(11,2); v_status NUMBER; BEGIN v_exportdate := SYSDATE; -- Als ik deze maand al een freeze heb uitgevoerd dan mag ik dat niet nog een keer doen. SELECT MAX(export_datum) INTO v_lastexport FROM pchx_monitoring; DELETE imp_log WHERE COALESCE(imp_log_applicatie, 'QueQeLeQue') = p_applname; IF TRUNC (COALESCE(v_lastexport, SYSDATE-100), 'MONTH') <> TRUNC(v_exportdate, 'MONTH') THEN -- Zet de meldingen die geen afwijking kennen en die niet op status afgerond staan naar status verwerkt FOR rec IN c1 LOOP BEGIN BEGIN fac.writelog (p_applname, 'I', 'Melding wordt op verwerkt gezet: ' || rec.melding_key , ''); mld.setmeldingstatus (rec.melding_key, 6, NULL); SELECT mld_melding_status INTO v_status FROM mld_melding WHERE mld_melding_key = rec.melding_key; fac.writelog (p_applname, 'I', 'Melding is op verwerkt gezet: ' || rec.melding_key , v_status); END; END; END LOOP; -- zet slave meldingen van samenvallende meldingen ook op verwerkt FOR rec IN c2 LOOP BEGIN IF rec.mld_melding_status = 6 OR rec.mld_melding_status = 5 -- verwerkt of afgemeld THEN BEGIN fac.writelog (p_applname, 'I', 'Slave melding wordt op verwerkt gezet: ' || rec.mld_melding_key , ''); mld.setmeldingstatus (rec.mld_melding_key, 6, NULL); SELECT mld_melding_status INTO v_status FROM mld_melding WHERE mld_melding_key = rec.mld_melding_key; fac.writelog (p_applname, 'I', 'Slave melding is op verwerkt gezet: ' || rec.mld_melding_key , v_status); END; END IF; END; END LOOP; -- Voeg de entries uit het monitoringsoverzicht toe aan de freeze tabel. FOR rec IN c3 LOOP BEGIN BEGIN INSERT INTO pchx_monitoring (melding_key, afw, indult, respijt, locatie, gebouw, verdieping, ruimte, omschrijving, begin, gereed, thtijdstip, verwerkt, eenheid, tht, wht, wht_tht, regime, groep, typekorting, basiskorting, variabelekorting, wegingsfactor, dienst, stdmelding_key, totaal, totaal_index, totaal_z_respijt, overlappend, gekoppeld, kinderen, prs_bedrijf_naam, klant_melding, melding_omschrijving, melding_opmerking, export_datum, bedrijf_malus, prefix) VALUES (rec.melding_key, rec.afw, rec.indult, rec.respijt, rec.locatie, rec.gebouw, rec.verdieping, rec.ruimte, rec.omschrijving, rec.begin, rec.gereed, rec.thtijdstip, rec.verwerkt, rec.eenheid, rec.tht, rec.wht, rec.wht_tht, rec.regime, rec.groep, rec.typekorting, rec.basiskorting, rec.variabelekorting, rec.wegingsfactor, rec.dienst, rec.stdmelding_key, rec.totaal, rec.totaal_index, rec.totaal_z_respijt, rec.overlappend, rec.gekoppeld, rec.kinderen, rec.bedrijf_naam, rec.klant_melding, rec.melding_omschrijving, rec.melding_opmerking, v_exportdate, rec.bedrijf_malus, rec.prefix); END; END; END LOOP; INSERT INTO pchx_monitoring (melding_key, indult, export_datum) SELECT mld_melding_key, DECODE(mld_melding_indult, 1, 'Ja', 'Nee'), v_exportdate FROM mld_melding m WHERE m.mld_melding_status = 6 -- Historie AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'MONTH') AND m.mld_melding_key NOT IN (SELECT nm.melding_key FROM pchx_monitoring nm WHERE nm.melding_key IS NOT NULL); IF PCHX.get_user = 'PCHW' THEN -- Voeg de overschrijdingskorting toe. INSERT INTO pchx_monitoring (begin, gereed, groep, variabelekorting, totaal, totaal_index, kinderen, export_datum) SELECT ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin, TRUNC (SYSDATE, 'MONTH') gereed, 'Overschrijding' groep, 250 variabelekorting, 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal, PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal_index, listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting v_exportdate FROM pchx_monitoring WHERE totaal IS NOT NULL AND totaal <> 0 AND COALESCE(groep, 'Quequleque') <> 'Overschrijding' AND export_datum = v_exportdate GROUP BY 'Overschrijding' UNION ALL SELECT ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin, TRUNC (SYSDATE, 'MONTH') gereed, 'Overschrijding' groep, 50 variabelekorting, 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal, PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal_index, listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting v_exportdate FROM pchx_monitoring WHERE COALESCE(groep, 'Quequleque') <> 'Overschrijding' AND indult = 'Nee' AND export_datum = v_exportdate GROUP BY 'Overschrijding'; END IF; SELECT SUM(totaal) INTO v_kortingen_totaal FROM pchx_monitoring WHERE export_datum = v_exportdate; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr) VALUES ('FREEZE', 'Kortingen totaal: ' || v_kortingen_totaal, 1); ELSE INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr) VALUES ('FREEZE', 'Kortingen zijn al bevroren deze maand op ' || TO_CHAR(v_lastexport, 'dd-mm-yyyy hh24:mi:ss'), 1); END IF; -- Freeze van SVD's -- Als ik deze maand al een freeze heb uitgevoerd dan mag ik dat niet nog een keer doen. SELECT MAX(export_datum) INTO v_lastexport FROM pchx_svd; IF TRUNC (COALESCE(v_lastexport, SYSDATE-100), 'MONTH') <> TRUNC(v_exportdate, 'MONTH') THEN FOR rec IN c_svd_opdracht LOOP BEGIN INSERT INTO pchx_svd (mld_melding_key, svd_type, status, datum, omschrijving, aantal, prijs, totaal, index_totaal, mld_opdr_key, lomschr, kostensoort, kostenkenmerk, export_datum) VALUES (rec.mld_melding_key, rec.svd_type, rec.status, rec.datum, rec.omschrijving, rec.aantal, rec.prijs, rec.totaal, rec.index_totaal, rec.mld_opdr_key, rec.lomschr, rec.kostensoort, rec.kostenkenmerk, v_exportdate); mld.setopdrachtstatus (rec.mld_opdr_key, 7, NULL); mld.updatemeldingstatus (rec.mld_melding_key, 0, NULL); END; END LOOP; FOR rec IN c_svd_artikel LOOP BEGIN INSERT INTO pchx_svd (mld_melding_key, svd_type, status, datum, omschrijving, aantal, prijs, totaal, index_totaal, mld_opdr_key, lomschr, kostensoort, kostenkenmerk, fcl, export_datum) VALUES (rec.mld_melding_key, rec.svd_type, rec.status, rec.datum, rec.omschrijving, rec.aantal, rec.prijs, rec.totaal, rec.index_totaal, rec.mld_opdr_key, rec.lomschr, rec.kostensoort, rec.kostenkenmerk, rec.fcl, v_exportdate); UPDATE res_rsv_artikel rra SET res_rsv_artikel_verwerkt = v_exportdate, res_status_bo_key = 6 WHERE rra.res_rsv_artikel_key = rec.mld_opdr_key; END; END LOOP; SELECT SUM(totaal) INTO v_svd_totaal FROM pchx_svd WHERE export_datum = v_exportdate; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr) VALUES ('FREEZE', 'SVD totaal: ' || v_svd_totaal, 2); ELSE INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr) VALUES ('FREEZE', 'SVDs zijn al bevroren deze maand op ' || TO_CHAR(v_lastexport, 'dd-mm-yyyy hh24:mi:ss'), 2); END IF; COMMIT; END pchx_select_freeze_mon; / CREATE OR REPLACE PROCEDURE pchx_export_freeze_mon ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS BEGIN DELETE fac_rapport WHERE fac_rapport_node = 'FREEZE'; END; / CREATE OR REPLACE VIEW pchx_v_export_freeze_mon ( result, result_order) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = 'FREEZE'; CREATE OR REPLACE VIEW pchx_v_svd_history ( mld_melding_key, mld_opdr_key, svd_type, status, datum, omschrijving, aantal, prijs, totaal, index_totaal, export_datum, maand, lomschr, kostensoort, kostenkenmerk, fcl ) AS SELECT mld_melding_key, mld_opdr_key, svd_type, status, datum, omschrijving, aantal, prijs, totaal, index_totaal, export_datum, TO_CHAR(TRUNC(export_datum, 'MONTH')-1, 'yyyy-month') maand, lomschr, kostensoort, kostenkenmerk, fcl FROM pchx_svd; -- Rapport om aanpassingen in de stdmelding/vakgroep te signaleren. CREATE OR REPLACE VIEW pchx_v_mld_cat_aanpassing AS SELECT m.mld_melding_key, m.mld_melding_onderwerp, fac_tracking_datum, fac_tracking_oms FROM fac_tracking t, mld_melding m WHERE fac_tracking_oms LIKE '%Melding:%' AND m.mld_melding_key = t.fac_tracking_refkey; CREATE OR REPLACE VIEW pchx_v_rap_melding_details AS SELECT sd.INS_SRTDISCIPLINE_OMSCHRIJVing, d.ins_discipline_omschrijving, std.mld_stdmelding_omschrijving, m.mld_melding_key, m.mld_melding_datum, rg.alg_locatie_code, rg.alg_gebouw_upper, rg.alg_verdieping_code, rg.alg_ruimte_nr || ' - ' || rg.alg_ruimte_omschrijving alg_ruimte_nr, rg.alg_ruimte_omschrijving, rg.alg_srtruimte_omschrijving, km.fac_usrdata_omschr FROM mld_melding m, alg_v_ruimte_gegevens rg, mld_stdmelding std, ins_tab_discipline d, alg_srtruimte rm, ins_srtdiscipline sd, (SELECT km.mld_melding_key, fac_usrdata_omschr FROM mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, fac_usrdata ud WHERE mld_srtkenmerk_upper LIKE 'TYPE %' AND mld_srtkenmerk_kenmerktype = 'R' AND mld_srtkenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'S' AND km.mld_kenmerk_key = k.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = fac_usrdata_key) km WHERE m.mld_melding_key = km.mld_melding_key(+) AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key AND rm.alg_srtruimte_key = rg.alg_srtruimte_key; -- Rapport om de koppeling met Homij te monitoren. CREATE OR REPLACE VIEW pchx_v_rap_stmelding_os_check ( ins_srtdiscipline_omschrijving, ins_discipline_omschrijving, mld_stdmelding_omschrijving, mld_stdmelding_slabewaken, mld_stdmeldinggroep_naam, mld_stdmelding_uitvoertijd_t, mld_stdmelding_uitvoertijd_e, mld_stdmelding_regime, mld_stdmelding_malus, mld_stdmelding_malusbasis, alg_srtruimte_code, alg_srtruimte_omschrijving, mld_stdmsrtruimte_t_uitvtijd_t, mld_stdmsrtruimte_t_uitvtijd_e, mld_stdmsrtruimte_regime, mld_stdmsrtruimte_malus, mld_stdmsrtruimte_malusbasis ) AS SELECT sd.ins_srtdiscipline_omschrijving, ins_discipline_omschrijving, mld_stdmelding_omschrijving, mld_stdmelding_slabewaken, stdmg.mld_stdmeldinggroep_naam, std.mld_stdmelding_t_uitvoertijd.tijdsduur mld_stdmelding_uitvoertijd_t, std.mld_stdmelding_t_uitvoertijd.eenheid mld_stdmelding_uitvoertijd_e, DECODE (mld_stdmelding_regime, 1, 'DagregimeDienst', 2, 'DagregimeRuimte', 3, '24/7') mld_stdmelding_regime, mld_stdmelding_malus, mld_stdmelding_malusbasis, sr.alg_srtruimte_code, sr.alg_srtruimte_omschrijving, stdsr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur mld_stdmsrtruimte_t_uitvtijd_t, stdsr.mld_stdmsrtruimte_t_uitvtijd.eenheid mld_stdmsrtruimte_t_uitvtijd_e, DECODE (mld_stdmsrtruimte_regime, 1, 'DagregimeDienst', 2, 'DagregimeRuimte', 3, '24/7') mld_stdmsrtruimte_regime, stdsr.mld_stdmsrtruimte_malus, stdsr.mld_stdmsrtruimte_malusbasis FROM mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmsrtruimte stdsr, alg_srtruimte sr, mld_stdmeldinggroep stdmg WHERE std.mld_stdmelding_key = stdsr.mld_stdmelding_key(+) AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND std.mld_stdmelding_verwijder IS NULL AND stdsr.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND std.mld_stdmeldinggroep_key = stdmg.mld_stdmeldinggroep_key(+); CREATE OR REPLACE VIEW pchx_v_rap_homij_status ( mld_melding_key, status) AS SELECT mld_melding_key, 'Nog te verzenden' FROM mld_opdr WHERE mld_uitvoerende_keys = 4963 -- Homij Vianen AND mld_opdr_teverzenden = 1 AND mld_opdr_verzonden IS NULL UNION ALL SELECT mld_melding_key, 'Geen opdracht' FROM mld_melding m, mld_stdmelding std WHERE mld_melding_datum > TO_DATE ('20190114', 'yyyymmdd') AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.prs_dienst_key = 66 -- Hard FM AND NOT EXISTS (SELECT mld_opdr_key FROM mld_opdr o WHERE o.mld_melding_key = m.mld_melding_key) AND m.mld_melding_status IN (0, 2, 3, 4, 99, 7) UNION ALL SELECT mld_melding_key, 'Geen lopende opdracht' FROM mld_melding m, mld_stdmelding std WHERE mld_melding_datum > TO_DATE ('20190114', 'yyyymmdd') AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.prs_dienst_key = 66 -- Hard FM AND NOT EXISTS (SELECT mld_opdr_key FROM mld_opdr o WHERE o.mld_melding_key = m.mld_melding_key AND mld_statusopdr_key IN (2, 3, 4, 5, 8)) AND m.mld_melding_status IN (4, 99, 7); -- View tbv infobord om laatst afgemelde homij opdracht te tonen. CREATE OR REPLACE VIEW PCHX_V_LAATSTE_HOMIJ_AFM AS SELECT mld_opdr_key, mld_melding_key, mld_opdr_bedrijfopdr_volgnr FROM mld_opdr o, fac_tracking t2 WHERE t2.fac_tracking_refkey = o.mld_opdr_key AND t2.fac_tracking_key = (SELECT MAX (fac_tracking_key) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'ORDAFM' AND prs_perslid_key = 17981 -- homij koppling api user ); -- Notificatiejob om een bericht naar de contractmanager te sturen op het moment dat een melding afgerond of afgemeld (alleen PCHW) wordt CREATE OR REPLACE VIEW pchx_v_noti_melding_afrond ( sender, receiver, text, code, key, xkey ) AS SELECT DISTINCT NULL sender, gg.prs_perslid_key receiver, 'Facilitor: Melding: ' || m.mld_melding_key || ' is ter goedkeuring aangeboden.', 'MLDINF' code, mld_melding_key key, NULL xkey FROM mld_melding m, fac_srtnotificatie sn, fac_tracking t, fac_gebruikersgroep gg WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFR' AND t.fac_tracking_refkey = m.mld_melding_key AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE LOWER (fac_notificatie_job_view) = 'pchx_v_noti_melding_afrond') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE LOWER (fac_notificatie_job_view) = 'pchx_v_noti_melding_afrond') -- Notificatie wordt gestuurd naar de contractbeheerders AND gg.fac_groep_key = DECODE(pchx.get_user, 'PCHW',63, 'PCHA', 61) UNION ALL SELECT DISTINCT NULL sender, gg.prs_perslid_key receiver, 'Facilitor: Melding: ' || m.mld_melding_key || ' is gereed gemeld.', 'MLDINF' code, mld_melding_key key, NULL xkey FROM mld_melding m, prs_perslid p, prs_v_afdeling a, fac_srtnotificatie sn, fac_tracking t, fac_gebruikersgroep gg WHERE m.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 121 -- Gemeente Westland AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFM' AND t.fac_tracking_refkey = m.mld_melding_key AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE LOWER (fac_notificatie_job_view) = 'pchx_v_noti_melding_afrond') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE LOWER (fac_notificatie_job_view) = 'pchx_v_noti_melding_afrond') -- Notificatie wordt gestuurd naar de contractbeheerders AND gg.fac_groep_key = 63 AND pchx.get_user = 'PCHW'; -- Notificatieview om afgemelde opdrachten van Homij te notificeren. CREATE OR REPLACE VIEW pchx_v_noti_opdr_afm_homij ( sender, receiver, text, code, key, xkey ) AS SELECT NULL sender, 4101 receiver, -- Servicedesk DGS 'Opdracht: ' || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || ' is door Homij afgemeld.', 'ORDAFM' code, mld_opdr_key key, NULL xkey FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND fac_srtnotificatie_code = 'ORDAFM' AND t.fac_tracking_refkey = o.mld_opdr_key AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE LOWER ( fac_notificatie_job_view) = 'pchx_v_noti_opdr_afm_homij') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE LOWER ( fac_notificatie_job_view) = 'pchx_v_noti_opdr_afm_homij'); /* Formatted on 4/12/2017 16:43:33 (QP5 v5.313) */ CREATE OR REPLACE VIEW pchx_v_dashboard_korting ( melding, omschrijving, bedrijf_malus, marge, hide_f_marge, hide_f_marge_respijt, totaal_index, tht_tijdstip, tht_tijdstip_respijt, eenheid, tht, status, basiskorting, variabelekorting, overlap_kort, melder, afw ) AS SELECT melding_key, omschrijving, bedrijf_malus, (SELECT ROUND ( mo.tht - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) || ' ' || m.mld_melding_t_uitvoertijd.eenheid FROM mld_melding m WHERE mo.melding_key = m.mld_melding_key) marge_txt, (SELECT ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) FROM mld_melding m WHERE mo.melding_key = m.mld_melding_key) marge, (SELECT ROUND ( mo.tht - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) FROM mld_melding m WHERE mo.melding_key = m.mld_melding_key) marge_respijt, ROUND (totaal_index) totaal_index, thtijdstip, COALESCE (mlds.min_tht_einddatum_start, thtijdstip) thttijdstipplusrespijt, eenheid, tht, status, basiskorting, variabelekorting, DECODE (INSTR (mo.overlappend, ',', 1, 1), 0, '', NULL, '', SUBSTR (mo.overlappend, INSTR (mo.overlappend, ',', 1, 1) + 1, DECODE (INSTR (mo.overlappend, ',', 1, 2), 0, 100, DECODE (INSTR (mo.overlappend, ',', 1, 3), 0, 100, INSTR (mo.overlappend, ',', 1, 3) - INSTR (mo.overlappend, ',', 1, 1) - 1)))) || DECODE (INSTR (mo.overlappend, ',', 1, 3), NULL, '', 0, '', '...') overl_kort, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf, mld_melding m WHERE mo.melding_key = m.mld_melding_key AND m.prs_perslid_key = pf.prs_perslid_key) melder, afw FROM pchx_v_monitoring mo, pchx_v_startmelding_geg mlds WHERE mo.gereed IS NULL AND mo.indult <> 'Ja' AND mlds.m_start = mo.melding_key; -- nieuwe versie CREATE OR REPLACE VIEW pchx_v_dashboard_korting_optij ( melding, omschrijving, bedrijf_malus, marge, hide_f_marge, totaal_index, tht_tijdstip, eenheid, tht, status, basiskorting, variabelekorting, melder, afw ) AS SELECT mld_melding_key, mld_stdmelding_omschrijving, PCHX.get_kenmerk ('MLD', DECODE (PCHX.get_user, 'PCHA', 61, 'PCHW', 121, 'PGHE', 102), m.mld_melding_key) bedrijf_malus, ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) || ' ' || m.mld_melding_t_uitvoertijd.eenheid marge_txt, ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) marge, NULL totaal_index, mld.geteinddatum (m.mld_melding_key) thttijdstip, m.mld_melding_t_uitvoertijd.eenheid tht_eenheid, m.mld_melding_t_uitvoertijd.tijdsduur + COALESCE (m.mld_melding_t_respijt.tijdsduur, 0) tht, s.mld_statuses_omschrijving, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malusbasis FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malusbasis) bk, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malus FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malus) vk, prs_perslid_naam_full, DECODE (mld_melding_indult, 1, 'I') || DECODE (m.mld_melding_t_respijt.eenheid, NULL, '', 'R') FROM mld_melding m, mld_stdmelding std, mld_statuses s, alg_v_ruimte_gegevens rg, prs_v_perslid_fullnames_all pf WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND m.mld_melding_indult = 0 AND std.mld_stdmelding_slabewaken = 1 AND s.mld_statuses_key = m.mld_melding_status AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) IS NULL AND pchx_mon.klant_melding (m.mld_melding_key) = 1 AND m.mld_melding_parentkey IS NULL AND m.mld_melding_status <> 1 -- Afgewezen AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key; CREATE OR REPLACE VIEW PCHX_V_DASHBOARD_NEW_OPTIJD ( MELDING, OMSCHRIJVING, VAKGROEP, BEDRIJF_MALUS, MARGE, HIDE_F_MARGE, HIDE_F_MARGE_RESPIJT, TOTAAL_INDEX, REGISTRATIETIJD, THT_TIJDSTIP, THT_TIJDSTIP_RESPIJT, EENHEID, THT, STATUS, BASISKORTING, VARIABELEKORTING, MELDER, AFW ) AS SELECT mld_melding_key, mld_stdmelding_omschrijving, disc.ins_discipline_omschrijving, PCHX.get_kenmerk ( 'MLD', DECODE (PCHX.get_user, 'PCHA', 61, 'PCHW', 121, 'PGHE', 102), m.mld_melding_key) bedrijf_malus, ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur + COALESCE (m.mld_melding_t_respijt.tijdsduur, 0) - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) || ' ' || m.mld_melding_t_uitvoertijd.eenheid marge_txt, ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) marge, ROUND ( m.mld_melding_t_uitvoertijd.tijdsduur + COALESCE (m.mld_melding_t_respijt.tijdsduur, 0) - mld.getactualuitvoer (m.mld_melding_key).tijdsduur, 2) marge_respijt, NULL totaal_index, m.mld_melding_datum, mld.geteinddatum (m.mld_melding_key) thttijdstip, COALESCE ( mld.geteinddatum ( PCHX_MON.get_first_melding (m.mld_melding_key, 1), mld_t_uitvoertijd ( (m.mld_melding_t_uitvoertijd.tijdsduur) + (m.mld_melding_t_respijt.tijdsduur), (m.mld_melding_t_uitvoertijd.eenheid)), (m.mld_melding_datum)), mld.geteinddatum (m.mld_melding_key)) thttijdstipplusrespijt, m.mld_melding_t_uitvoertijd.eenheid tht_eenheid, m.mld_melding_t_uitvoertijd.tijdsduur + COALESCE (m.mld_melding_t_respijt.tijdsduur, 0) tht, s.mld_statuses_omschrijving, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malusbasis FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malusbasis) bk, COALESCE ( (SELECT stsr.mld_stdmsrtruimte_malus FROM mld_stdmsrtruimte stsr WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malus) vk, prs_perslid_naam_full, DECODE (m.mld_melding_indult, 1, 'I') || DECODE (m.mld_melding_t_respijt.eenheid, NULL, '', 'R') FROM mld_melding m, mld_stdmelding std, ins_tab_discipline disc, mld_statuses s, alg_v_ruimte_gegevens rg, prs_v_perslid_fullnames_all pf WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = disc.ins_discipline_key AND m.mld_melding_indult = 0 AND std.mld_stdmelding_slabewaken = 1 AND s.mld_statuses_key = m.mld_melding_status AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) IS NULL AND pchx_mon.klant_melding (m.mld_melding_key) = 1 AND m.mld_melding_parentkey IS NULL AND m.mld_melding_status <> 1 -- Afgewezen AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key AND NOT EXISTS (SELECT melding FROM PCHX_V_DASHBOARD_KORTING tl WHERE mld_melding_key = tl.melding); CREATE OR REPLACE VIEW pchx_v_dashboard_kwis ( ins_srtdiscipline_omschrijving, aantal ) AS SELECT ins_srtdiscipline_omschrijving, COUNT (mld_melding_key) FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd WHERE m.MLD_STDMELDING_KEY = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.INS_SRTDISCIPLINE_KEY AND m.mld_melding_status IN (0, 2, 3, 4, 7) GROUP BY ins_srtdiscipline_omschrijving; CREATE OR REPLACE FORCE VIEW pchx_mld_v_meldingkenmerk_cnd ( MELDING_KEY, MELDINGNUMMER, MELDING_REGIO, MELDING_DISTRICT, MELDING_LOCATIECODE, MELDING_LOCATIE, MELDING_LOCATIEPLAATS, FCLT_3D_LOCATIE_KEY, MELDING_GEBOUWCODE, MELDING_GEBOUW, MELDING_VERDIEPING, MELDING_RUIMTENR, MELDING_RUIMTE, MELDING_ORDERNR, KOSTENSOORTGROEP, KOSTENSOORT, KOSTENPLAATS, KOSTENPLAATS_OMS, MELDER, MELDER_KEY, AFDELING, AFDELING_OMSCHRIJVING, FCLT_3D_AFDELING_KEY, BEDRIJF_KEY, INVOERDER, MELDBRON, SOORTMELDING, FCLT_3D_DISCIPLINE_KEY, PRODUCTGROEP, SUBPRODUCTGROEP, BEHANDELGROEP, BEHANDELAAR, BEHANDELAAR_KEY, SUBPRODUCTGROEPGROEP, MELDING_STATUS, SLA_NVT, SLA_WERKDGN, SLA_WERKUREN, SLA_RESPIJTDGN, SLA_RESPIJTUREN, SLA_ACCPTDGN, SLA_ACCPTUREN, PLAN_UITVOERTIJD_SLA, MELDING_DATUM, MELDING_EINDDATUM, MELDING_ACCEPTDATUM, MELDING_AFGEMELD, MELDING_ACCEPTED, DOORLOOPTIJD_WERKDGN, DOORLOOPTIJD_WERKUREN, ONDERWERP, VOMSCHRIJVING, MELDING_OPMERKING, PRIORITEIT, PRIORITEITTXT, RATING, RATING_OPMERKING, BOLLETJE, ACCEPT_SLA_DAGEN, ACCEPT_SLA_UREN, UITVOERING_SLA_DAGEN, UITVOERING_SLA_UREN, AFSPRAAK_SLA_DAGEN, AFSPRAAK_SLA_UREN, ACCEPT_SLA_OPTIJD, UITVOERING_SLA_OPTIJD, AFSPRAAK_SLA_OPTIJD, SELFSERVICE, KENMERK, WAARDE_C, WAARDE_N, WAARDE_D, RUIMTE_FUNCTIE ) AS SELECT mk.MELDING_KEY, mk.MELDINGNUMMER, mk.MELDING_REGIO, mk.MELDING_DISTRICT, mk.MELDING_LOCATIECODE, mk.MELDING_LOCATIE, mk.MELDING_LOCATIEPLAATS, mk.FCLT_3D_LOCATIE_KEY, mk.MELDING_GEBOUWCODE, mk.MELDING_GEBOUW, mk.MELDING_VERDIEPING, mk.MELDING_RUIMTENR, mk.MELDING_RUIMTE, mk.MELDING_ORDERNR, mk.KOSTENSOORTGROEP, mk.KOSTENSOORT, mk.KOSTENPLAATS, mk.KOSTENPLAATS_OMS, mk.MELDER, mk.MELDER_KEY, mk.AFDELING, mk.AFDELING_OMSCHRIJVING, mk.FCLT_3D_AFDELING_KEY, mk.BEDRIJF_KEY, mk.INVOERDER, mk.MELDBRON, mk.SOORTMELDING, mk.FCLT_3D_DISCIPLINE_KEY, mk.PRODUCTGROEP, mk.SUBPRODUCTGROEP, mk.BEHANDELGROEP, mk.BEHANDELAAR, mk.BEHANDELAAR_KEY, mk.SUBPRODUCTGROEPGROEP, mk.MELDING_STATUS, mk.SLA_NVT, mk.SLA_WERKDGN, mk.SLA_WERKUREN, mk.SLA_RESPIJTDGN, mk.SLA_RESPIJTUREN, mk.SLA_ACCPTDGN, mk.SLA_ACCPTUREN, mk.PLAN_UITVOERTIJD_SLA, mk.MELDING_DATUM, mk.MELDING_EINDDATUM, mk.MELDING_ACCEPTDATUM, mk.MELDING_AFGEMELD, mk.MELDING_ACCEPTED, mk.DOORLOOPTIJD_WERKDGN, mk.DOORLOOPTIJD_WERKUREN, mk.ONDERWERP, mk.VOMSCHRIJVING, mk.MELDING_OPMERKING, mk.PRIORITEIT, mk.PRIORITEITTXT, mk.RATING, mk.RATING_OPMERKING, mk.BOLLETJE, mk.ACCEPT_SLA_DAGEN, mk.ACCEPT_SLA_UREN, mk.UITVOERING_SLA_DAGEN, mk.UITVOERING_SLA_UREN, mk.AFSPRAAK_SLA_DAGEN, mk.AFSPRAAK_SLA_UREN, mk.ACCEPT_SLA_OPTIJD, mk.UITVOERING_SLA_OPTIJD, mk.AFSPRAAK_SLA_OPTIJD, mk.SELFSERVICE, mk.KENMERK, mk.WAARDE_C, mk.WAARDE_N, mk.WAARDE_D, (SELECT r.alg_srtruimte_omschrijving FROM alg_v_ruimte_gegevens r, alg_v_onroerendgoed onr WHERE r.alg_ruimte_key = onr.alg_ruimte_key AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys) RUIMTE_FUNCTIE FROM mld_v_udr_meldingkenmerk_cnd mk, mld_melding m WHERE m.mld_melding_key = mk.melding_key; CREATE OR REPLACE VIEW pchx_v_rap_mldmetoverlap ( prefix, melding_key, vakgroep, melding, datum, locatie, onderwerp, omschrijving, status, aanvrager, behandelaar, einddatum, overlappend, overlap ) AS SELECT sd.ins_srtdiscipline_prefix, m.mld_melding_key, disc.ins_discipline_omschrijving, sm.mld_stdmelding_omschrijving, m.mld_melding_datum, COALESCE (alg.alg_plaatsaanduiding, loc.alg_locatie_code), m.mld_melding_onderwerp, m.mld_melding_omschrijving, ms.mld_statuses_omschrijving, aanv.prs_perslid_naam_full, beh.prs_perslid_naam_full, mld.geteinddatum (m.mld_melding_key), st.overlappend, (CASE WHEN fac.safe_to_number (st.overlappend) = m.mld_melding_key OR st.overlappend IS NULL THEN 'Nee' ELSE 'Ja' END) AS overlap FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline disc, ins_srtdiscipline sd, prs_v_perslid_fullnames aanv, prs_v_perslid_fullnames beh, pchx_v_startmelding_geg st, mld_statuses ms, alg_v_onroerendgoed_gegevens alg, alg_locatie loc WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = disc.ins_discipline_key AND disc.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.prs_perslid_key_voor = aanv.prs_perslid_key(+) AND m.mld_melding_behandelaar_key = beh.prs_perslid_key(+) AND m.mld_melding_key = st.m_start(+) AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_alg_onroerendgoed_keys = alg.alg_onroerendgoed_keys(+) AND m.mld_alg_locatie_key = loc.alg_locatie_key(+); CREATE OR REPLACE VIEW PCHX_V_NOTI_MLD_GOEDKEURING ( SENDER, RECEIVER, TEXT, CODE, KEY, XKEY ) AS SELECT DISTINCT NULL sender, gg.prs_perslid_key receiver, 'Facilitor: melding ' || m.melding_key || ' moet goedgekeurd worden in ' || pchx.get_user, 'CUST15' code, m.melding_key key, NULL xkey FROM PCHX_V_MONITORING m, fac_srtnotificatie sn, fac_tracking t, fac_gebruikersgroep gg WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFR' AND t.fac_tracking_refkey = m.melding_key AND m.afgerond = 'x' AND m.status = 'Afgemeld' AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE UPPER ( fac_notificatie_job_view) = 'PCHX_V_NOTI_MLD_GOEDKEURING') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE UPPER ( fac_notificatie_job_view) = 'PCHX_V_NOTI_MLD_GOEDKEURING') --Notificatie wordt gestuurd naar de contractbeheerders AND gg.fac_groep_key = DECODE (pchx.get_user, 'PCHW', 63, 'PCHA', 61, 'PGHE', 181); ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile