PGHE#68684 -- Monitoringsrapportages generiek maken met PCHA en PCHW
svn path=/Customer/trunk/; revision=54011
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
--
|
||||
|
||||
DEFINE thisfile = 'PCHX_MON.SQL'
|
||||
DEFINE dbuser = 'PCHA|PCHW'
|
||||
DEFINE dbuser = 'PCHA|PCHW|PGHE'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
@@ -31,9 +31,15 @@ AS
|
||||
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;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -123,6 +129,47 @@ AS
|
||||
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
|
||||
mld_melding m2,
|
||||
mld_stdmelding std2,
|
||||
(select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
|
||||
where mld_kenmerk_key = 121) 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_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)
|
||||
OR
|
||||
( std1.mld_stdmeldinggroep_key <> 1 -- Prestatiekortingen
|
||||
AND std1.mld_Stdmeldinggroep_key <> 8 -- Losse voorzieningen 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;
|
||||
@@ -145,17 +192,22 @@ AS
|
||||
|
||||
IF pchx.get_user = 'PCHA' THEN
|
||||
OPEN ca;
|
||||
ELSE
|
||||
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;
|
||||
ELSE
|
||||
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;
|
||||
|
||||
|
||||
@@ -369,12 +421,46 @@ AS
|
||||
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, 102), 1, 0) klant_melding
|
||||
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,
|
||||
@@ -387,6 +473,25 @@ AS
|
||||
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_externnr)
|
||||
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;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -577,7 +682,7 @@ AS
|
||||
(SELECT MAX(fac_tracking_datum)
|
||||
FROM fac_tracking
|
||||
WHERE fac_tracking_refkey = m_start --mld_melding_key
|
||||
AND fac_srtnotificatie_key = 46)
|
||||
AND fac_srtnotificatie_key = DECODE(pchx.get_user, 'PGHE', 56, 46))
|
||||
verwerkt,
|
||||
eenheid,
|
||||
ROUND (g.tht.tijdsduur, 2) tht,
|
||||
@@ -589,22 +694,34 @@ AS
|
||||
DECODE (telaat, 1, ROUND (g.uitloop.tijdsduur, 2)) wht_tht,
|
||||
DECODE (
|
||||
telaat,
|
||||
1, -- Westland rond de breuk af op 1 decimaal en HGH rond af op gehele getallen.
|
||||
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!
|
||||
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.
|
||||
coalesce(bk,0) + DECODE(vk, null, 0, (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!
|
||||
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,
|
||||
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,
|
||||
DECODE (pchx.get_user, 'PGHE' ,
|
||||
DECODE (SIGN ( COALESCE(PCHX_MON.get_max_korting(mld_stdmelding_key), 100000000) -
|
||||
DECODE (
|
||||
telaat,
|
||||
1,
|
||||
(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,
|
||||
NULL)), -1, PCHX_MON.get_max_korting(mld_stdmelding_key),
|
||||
(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),
|
||||
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),
|
||||
@@ -629,7 +746,7 @@ AS
|
||||
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, 121), m_start),
|
||||
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
|
||||
@@ -651,7 +768,7 @@ AS
|
||||
DECODE (m.aantal, 1, NULL, m.overlappend) overlappend,
|
||||
( SELECT count(*)
|
||||
FROM mld_kenmerkmelding km
|
||||
WHERE mld_kenmerk_key = DECODE(PCHX.get_user, 'PCHA', 241, 221)
|
||||
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,
|
||||
@@ -733,7 +850,8 @@ AS
|
||||
- m.min_t_sla.tijdsduur,
|
||||
m.max_t_actual.eenheid)
|
||||
uitloop_z_respijt, -- hoeveel te laat
|
||||
sr.alg_srtruimte_prijs4 wegingsfactor, -- wegingsfactor bij soortruimte
|
||||
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
|
||||
@@ -764,9 +882,19 @@ AS
|
||||
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||||
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
|
||||
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
|
||||
AND (UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q'
|
||||
OR (PCHX.get_user = 'PCHA' AND d.ins_discipline_key in (232, 220)) -- V en G, W en R
|
||||
OR klant_melding = 1)
|
||||
AND ( ( PCHX.get_user = 'PGHE'
|
||||
AND ( UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) IN ('P', 'M') -- Prestatiemelding, Monitoring
|
||||
OR d.ins_discipline_key IN (86, 90) -- V en G, W en R
|
||||
OR klant_melding = 1
|
||||
)
|
||||
)
|
||||
OR
|
||||
( PCHX.get_user <> 'PGHE'
|
||||
AND ( UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q'
|
||||
OR (PCHX.get_user = 'PCHA' AND d.ins_discipline_key in (232, 220)) -- V en G, W en R
|
||||
OR klant_melding = 1
|
||||
)
|
||||
) )
|
||||
-- meldingen op inspecties worden altijd getoond (Kq)
|
||||
-- anders alleen storingen ingelegd door klant medewerkers
|
||||
-- alleen meldingen waarvoor een malus geldt
|
||||
@@ -2219,7 +2347,7 @@ AS
|
||||
SELECT mld_melding_key,
|
||||
mld_stdmelding_omschrijving,
|
||||
PCHX.get_kenmerk ('MLD',
|
||||
DECODE (PCHX.get_user, 'PCHA', 61, 121),
|
||||
DECODE (PCHX.get_user, 'PCHA', 61, 'PCHW', 121, 'PGHE', 102),
|
||||
m.mld_melding_key)
|
||||
bedrijf_malus,
|
||||
ROUND (
|
||||
@@ -2450,7 +2578,7 @@ AS
|
||||
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,
|
||||
@@ -2509,7 +2637,7 @@ AS
|
||||
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(+);
|
||||
AND m.mld_alg_locatie_key = loc.alg_locatie_key(+);
|
||||
|
||||
------ payload end ------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user