2973 lines
117 KiB
PL/PgSQL
2973 lines
117 KiB
PL/PgSQL
-- 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;
|
|
v_accepttijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL);
|
|
BEGIN
|
|
mld.getslaparams (p_stdm_key,
|
|
3, -- prio
|
|
p_alg_key,
|
|
NULL, -- ins key
|
|
v_mld_stdmelding_regime,
|
|
v_norm_uitvoertijd,
|
|
v_accepttijd,
|
|
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
|
|
OR (PCHX.get_user = 'PCHW' AND rrr.res_status_fo_key = 4)) --PCHW#83417
|
|
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
|
|
OR (PCHX.get_user = 'PCHW' AND rrr.res_status_fo_key = 4)) --PCHW#83417
|
|
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 m1
|
|
WHERE NOT EXISTS -- Meldingen die overlappend zijn worden niet meegeteld.
|
|
(SELECT 1
|
|
FROM pchx_monitoring m2
|
|
WHERE m2.overlappend LIKE '%' || m1.melding_key || '%' AND m1.overlappend IS NULL)
|
|
AND 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 m1
|
|
WHERE NOT EXISTS -- Meldingen die overlappend zijn worden niet meegeteld.
|
|
(SELECT 1
|
|
FROM pchx_monitoring m2
|
|
WHERE m2.overlappend LIKE '%' || m1.melding_key || '%' AND m1.overlappend IS NULL)
|
|
AND 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,
|
|
meldingen,
|
|
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,
|
|
mlds.overlappend,
|
|
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,
|
|
meldingen,
|
|
omschrijving,
|
|
bedrijf_malus,
|
|
marge,
|
|
hide_f_marge,
|
|
totaal_index,
|
|
tht_tijdstip,
|
|
eenheid,
|
|
tht,
|
|
status,
|
|
basiskorting,
|
|
variabelekorting,
|
|
melder,
|
|
afw
|
|
)
|
|
AS
|
|
SELECT mld_melding_key,
|
|
COALESCE(mlds.m_start, m.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 (m.mld_melding_indult, 1, 'I') || DECODE (m.mld_melding_t_respijt.eenheid, NULL, '', 'R')
|
|
FROM mld_melding m,
|
|
pchx_v_startmelding_geg mlds,
|
|
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 pchx_mon.klant_melding (m.mld_melding_key) = 1
|
|
AND m.mld_melding_parentkey IS NULL
|
|
AND m.mld_melding_status NOT IN (1,5,6) -- Afgewezen
|
|
AND m.prs_perslid_key = pf.prs_perslid_key
|
|
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key
|
|
AND m.mld_melding_key = mlds.m_start (+);
|
|
|
|
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 pchx_mon.klant_melding (m.mld_melding_key) = 1
|
|
AND m.mld_melding_parentkey IS NULL
|
|
AND m.mld_melding_status NOT IN (1,5,6) -- 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 |