Files
Customer/PCHX/pchx_mon.sql
Arthur Egberink ebba9b0566 PGHE#68684 -- Aanpassing monitoring bij geen korting
svn path=/Customer/trunk/; revision=55043
2022-02-18 18:54:53 +00:00

2677 lines
104 KiB
PL/PgSQL
Raw Blame History

-- 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;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
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;
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
mld_melding m2,
mld_stdmelding std2,
(select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
where mld_kenmerk_key = 121) km2
WHERE m1.mld_melding_key = p_melding_key
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
AND m1.mld_melding_key = km1.mld_melding_key(+)
AND km1.mld_kenmerkmelding_waarde IS NULL
AND m2.mld_melding_key = km2.mld_melding_key(+)
AND km2.mld_kenmerkmelding_waarde IS NULL
AND m2.mld_melding_parentkey IS NULL
AND NOT EXISTS (SELECT 1
FROM pchx_monitoring
WHERE melding_key = m2.mld_melding_key)
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
AND std2.mld_stdmelding_slabewaken <> 0 -- alleen meldingen waarvoor een malus geldt
AND std1.mld_Stdmeldinggroep_key = std2.mld_stdmeldinggroep_key -- voor stdmeldinggroep
AND (
( std1.mld_stdmeldinggroep_key = 1 -- Prestatiekortingen
AND std1.mld_stdmelding_key = std2.mld_stdmelding_key)
OR
( std1.mld_stdmeldinggroep_key <> 1 -- Prestatiekortingen
AND std1.mld_Stdmeldinggroep_key <> 8 -- Losse voorzieningen worden niet samengenomen
AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys) -- op dezelfde ruimte
)
AND m1.mld_melding_key <> m2.mld_melding_key
AND m2.mld_melding_indult <> 1
AND m1.mld_melding_indult <> 1
AND m2.mld_melding_status <> 1 -- Afgewezen
AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
AND COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE)
ORDER BY m2.mld_melding_datum;
v_melding_key NUMBER;
l_melding_key NUMBER;
v_datum_begin DATE;
l_datum_begin DATE;
v_loop_index NUMBER;
rec ca%ROWTYPE; -- maakt niet uit welke cursor we hier kiezen. Ze hebben dezelfde structuur.
BEGIN
v_melding_key := p_melding_key;
IF pchx_mon.klant_melding (p_melding_key) = 0 THEN
RETURN p_melding_key;
END IF;
SELECT mld_melding_datum
INTO v_datum_begin
FROM mld_melding
WHERE mld_melding_key = p_melding_key;
v_loop_index := 1;
IF pchx.get_user = 'PCHA' THEN
OPEN ca;
ELSIF pchx.get_user = 'PCHW' THEN
OPEN cw;
ELSE
OPEN ch;
END IF;
LOOP
IF pchx.get_user = 'PCHA' THEN
FETCH ca INTO rec;
EXIT WHEN ca%NOTFOUND;
ELSIF pchx.get_user = 'PCHW' THEN
FETCH cw INTO rec;
EXIT WHEN cw%NOTFOUND;
ELSE
FETCH ch INTO rec;
EXIT WHEN ch%NOTFOUND;
END IF;
-- FOR rec IN c
-- LOOP
-- door de sortering op de cursor hoeven we alleen het eerste record te gebruiken tenzij deze niet door de klant is ingediend.
IF p_index < 10 AND v_loop_index = 1
THEN
-- DBMS_OUTPUT.put_line(p_melding_key || '-' || rec.mld_melding_key || '-' || p_index);
-- DBMS_OUTPUT.put_line('Klant melding: ' || '-' || pchx_mon.klant_melding (rec.mld_melding_key));
IF pchx_mon.klant_melding (rec.mld_melding_key) = 1
THEN
BEGIN
l_melding_key :=
PCHX_MON.get_first_melding (rec.mld_melding_key, p_index + 1);
END;
--- DBMS_OUTPUT.put_line('Resultaat: ' || rec.mld_melding_key || '-' || l_melding_key);
SELECT mld_melding_datum
INTO l_datum_begin
FROM mld_melding
WHERE mld_melding_key = l_melding_key;
IF l_datum_begin < v_datum_begin
THEN
v_datum_begin := l_datum_begin;
v_melding_key := l_melding_key;
END IF;
v_loop_index := v_loop_index + 1;
END IF;
END IF;
END LOOP;
IF pchx_mon.klant_melding (v_melding_key) = 1
THEN
RETURN v_melding_key;
ELSE
RETURN p_melding_key;
END IF;
END;
FUNCTION get_regime (p_stdm_key IN NUMBER,
p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund
p_ins_key IN NUMBER)
RETURN NUMBER
AS
v_mld_stdmelding_regime NUMBER;
v_norm_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL);
v_beginuur NUMBER;
v_einduur NUMBER;
v_werkdagen NUMBER;
BEGIN
mld.getslaparams (p_stdm_key,
3, -- prio
p_alg_key,
NULL, -- ins key
v_mld_stdmelding_regime,
v_norm_uitvoertijd,
v_beginuur,
v_einduur,
v_werkdagen);
-- kantoortijden of openingstijden waarbij de tijd niet gevuld is.
IF v_mld_stdmelding_regime = 1 OR (v_mld_stdmelding_regime = 2 AND (v_beginuur = -1 OR v_einduur = -1))
THEN
RETURN fac.safe_to_number (fac.getsetting ('fac_t_endofworkday'))
- fac.safe_to_number (fac.getsetting ('fac_t_startofworkday'));
END IF;
IF v_mld_stdmelding_regime = 2 -- openingstijden
THEN
RETURN v_einduur - v_beginuur;
END IF;
IF v_mld_stdmelding_regime = 3 -- 24/7
THEN
RETURN 24;
END IF;
RETURN NULL;
END;
FUNCTION get_index_value (p_date IN DATE, p_key IN NUMBER)
RETURN NUMBER
AS
v_result NUMBER;
BEGIN
SELECT FAC.SAFE_TO_NUMBER(fac_usrdata_prijs) / 100000 fac_usrdata_prijs
INTO v_result
FROM fac_usrdata
WHERE fac_usrtab_key = p_key
AND fac_usrdata_verwijder IS NULL
AND trunc(p_date, 'YYYY') = add_months(fac_usrdata_vervaldatum, -12);
RETURN v_result;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN 1;
END;
FUNCTION get_index_value (p_date IN DATE, p_categorie IN VARCHAR2)
RETURN NUMBER
AS
v_index_1_key NUMBER;
v_index_4_key NUMBER;
v_index_5_key NUMBER;
v_index_7_key NUMBER;
v_index_10_key NUMBER;
v_index_14_key NUMBER;
v_index_18_key NUMBER;
v_index_19_key NUMBER;
v_index_20_key NUMBER;
v_index_24_key NUMBER;
v_index_25_key NUMBER;
v_index_28_key NUMBER;
v_index_1_value NUMBER;
v_index_4_value NUMBER;
v_index_5_value NUMBER;
v_index_7_value NUMBER;
v_index_10_value NUMBER;
v_index_14_value NUMBER;
v_index_18_value NUMBER;
v_index_19_value NUMBER;
v_index_20_value NUMBER;
v_index_24_value NUMBER;
v_index_25_value NUMBER;
v_index_28_value NUMBER;
v_result NUMBER;
BEGIN
IF PCHX.get_user = 'PCHA'
THEN
v_index_1_key := 181;
v_index_4_key := 182;
v_index_5_key := 183;
v_index_7_key := 184;
v_index_18_key := 241;
v_index_20_key := 185;
ELSE
-- PCHW
v_index_1_key := 121;
v_index_10_key := 122;
v_index_14_key := 123;
v_index_19_key := 124;
v_index_24_key := 125;
v_index_25_key := 141;
v_index_28_key := 126;
END IF;
v_index_1_value := get_index_value (p_date, v_index_1_key);
v_index_4_value := get_index_value (p_date, v_index_4_key);
v_index_5_value := get_index_value (p_date, v_index_5_key);
v_index_7_value := get_index_value (p_date, v_index_7_key);
v_index_10_value := get_index_value (p_date, v_index_10_key);
v_index_14_value := get_index_value (p_date, v_index_14_key);
v_index_18_value := get_index_value (p_date, v_index_18_key);
v_index_19_value := get_index_value (p_date, v_index_19_key);
v_index_20_value := get_index_value (p_date, v_index_20_key);
v_index_24_value := get_index_value (p_date, v_index_24_key);
v_index_25_value := get_index_value (p_date, v_index_25_key);
v_index_28_value := get_index_value (p_date, v_index_28_key);
CASE p_categorie
WHEN 'MON'
THEN v_result := v_index_1_value;
WHEN 'CAT'
THEN v_result := 1;
WHEN 'FAC'
THEN v_result := v_index_18_value;
WHEN 'BEV'
THEN v_result := 0.75 * v_index_5_value + 0.25 * v_index_7_value;
WHEN 'SCH'
THEN v_result := 0.80 * v_index_4_value + 0.15 * v_index_7_value + 0.05 * v_index_20_value;
WHEN 'GLA'
THEN v_result := 0.05 * v_index_1_value + 0.80 * v_index_4_value + 0.15 * v_index_7_value;
WHEN 'SVD1'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD2'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD3'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD4'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD5'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD6'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD7'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD8'
THEN v_result := 0.5 * v_index_24_value + 0.5 * v_index_25_value;
WHEN 'SVD9'
THEN v_result := 0.3 * v_index_10_value + 0.7 * v_index_28_value;
WHEN 'SVD10'
THEN v_result := 0.3 * v_index_10_value + 0.7 * v_index_28_value;
WHEN 'SVD11'
THEN v_result := v_index_10_value;
WHEN 'SVD12'
THEN v_result := v_index_10_value;
WHEN 'SVD13'
THEN v_result := 0.2 * v_index_10_value + 0.8 * v_index_19_value;
WHEN 'SVD14'
THEN v_result := v_index_14_value;
ELSE v_result := 1;
END CASE;
RETURN v_result;
END;
FUNCTION get_weging (p_startdatum IN DATE, p_stdmeldinggroep_key IN NUMBER)
RETURN NUMBER
AS
v_mld_stdmelding_regime NUMBER;
v_norm_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL);
v_beginuur NUMBER;
v_einduur NUMBER;
v_werkdagen NUMBER;
v_stdmeldinggroep_naam VARCHAR2(100);
BEGIN
SELECT mld_stdmeldinggroep_naam
INTO v_stdmeldinggroep_naam
FROM mld_stdmeldinggroep
WHERE mld_stdmeldinggroep_key = p_stdmeldinggroep_key;
IF SUBSTR(v_stdmeldinggroep_naam,1,15) = 'Beschikbaarheid' -- TODO conditie metingen toevoegen
OR p_stdmeldinggroep_key = 8 -- Functionaliteit voorziening
OR p_stdmeldinggroep_key = 22 -- Periodieke Meting Onderhoud
THEN
CASE WHEN p_startdatum BETWEEN TO_DATE('20210101', 'yyyymmdd') AND TO_DATE('20270101', 'yyyymmdd')
THEN RETURN 1;
WHEN p_startdatum BETWEEN TO_DATE('20270101', 'yyyymmdd') AND TO_DATE('20320101', 'yyyymmdd')
THEN RETURN 0.85;
WHEN p_startdatum BETWEEN TO_DATE('20320101', 'yyyymmdd') AND TO_DATE('20370101', 'yyyymmdd')
THEN RETURN 0.7;
ELSE
RETURN 0;
END CASE;
ELSE
RETURN 1;
END IF;
END;
FUNCTION klant_melding (p_melding_key IN NUMBER)
RETURN NUMBER
AS
v_klant_melding NUMBER;
BEGIN
SELECT DECODE (a.prs_bedrijf_key, DECODE (pchx.get_user, 'PCHW', 121, 'PCHA', 102, 'PGHE', 1021), 1, 0) klant_melding
INTO v_klant_melding
FROM mld_melding m,
prs_perslid p,
prs_v_afdeling a
WHERE m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND m.mld_melding_key = p_melding_key;
RETURN v_klant_melding;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN 0;
END;
FUNCTION get_max_korting (p_stdm_key IN NUMBER)
RETURN NUMBER
AS
v_max_korting NUMBER;
BEGIN
IF pchx.get_user = 'PGHE'
THEN
SELECT FAC.safe_to_number(std.mld_stdmelding_externnr)
INTO v_max_korting
FROM mld_stdmelding std
WHERE mld_stdmelding_key = p_stdm_key;
END IF;
RETURN v_max_korting;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN 0;
END;
END;
/
-- 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 <20><>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
-- 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,
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,
DECODE (pchx.get_user, 'PGHE' ,
DECODE (SIGN ( COALESCE(PCHX_MON.get_max_korting(mld_stdmelding_key), 100000000) -
DECODE (
telaat,
1,
(coalesce(bk,0) + DECODE(vk, null, 0, (TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk))) * -- Alleen als dagen x24!
wegingsfactor,
NULL)), -1, PCHX_MON.get_max_korting(mld_stdmelding_key),
(coalesce(bk,0) + DECODE(vk, null, 0, (TRUNC (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur)) * vk))) * -- Alleen als dagen x24!
wegingsfactor),
DECODE (
telaat,
1,
coalesce(bk,0) + DECODE(vk, null, 0, (ROUND (g.uitloop.tijdsduur/DECODE(g.thtsla.tijdsduur, 0, 0.1, g.thtsla.tijdsduur), DECODE(pchx.get_user, 'PCHW', 1,0)) * vk)), -- Alleen als dagen x24!
NULL) * PCHX_MON.get_index_value(t_van, 'MON'))
totaal_index, -- voor PGHE is dit het totaal tov de max vergoeding en verminigvuldigd met de weging
(SELECT mld_statuses_omschrijving
FROM mld_statuses
WHERE mld_statuses_key = mld_melding_status),
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,
rg.alg_locatie_code,
rg.alg_gebouw_upper,
rg.alg_verdieping_volgnr,
rg.alg_ruimte_nr || '-' || rg.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 = 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,
(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_v_ruimte_gegevens rg,
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 = rg.alg_ruimte_key(+)
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND ( ( PCHX.get_user = 'PGHE'
AND ( UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) IN ('P', 'M') -- Prestatiemelding, Monitoring
OR d.ins_discipline_key IN (86, 90) -- V en G, W en R
OR klant_melding = 1
)
-- Meldingen met Ruimtesoort: Geen Korting hebben voor een aantal stdmeldingen geen korting
-- Deze meldingen worden dan niet meegenomen in het monitoringsrapport.
AND NOT EXISTS (SELECT mld_stdmsrtruimte_key
FROM mld_stdmsrtruimte stdsr
WHERE stdsr.mld_stdmelding_key = std.mld_stdmelding_key
AND stdsr.alg_srtruimte_key = rg.alg_srtruimte_key
AND COALESCE(mld_stdmsrtruimte_malusbasis,0) = 0
AND COALESCE(mld_stdmsrtruimte_malus,0) = 0)
)
OR
( PCHX.get_user <> 'PGHE'
AND ( UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) = 'Q'
OR (PCHX.get_user = 'PCHA' AND d.ins_discipline_key in (232, 220)) -- V en G, W en R
OR klant_melding = 1
)
) )
-- meldingen op inspecties worden altijd getoond (Kq)
-- anders alleen storingen ingelegd door klant medewerkers
-- alleen meldingen waarvoor een malus geldt
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))) 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,
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,
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),
rra.res_rsv_artikel_key,
ra.res_artikel_omschrijving,
ra.res_artikel_groep,
NULL,
k.prs_kostenplaats_nr,
TO_NUMBER(NULL),
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 23
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) fcl -- FCL
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_status_bo b,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_status_bo_key = b.res_status_bo_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_rsv_artikel_verwijder IS NULL
AND ra.res_artikel_groep LIKE 'SVD%'
AND ra.res_artikel_groep <> 'SVD14'
UNION ALL
SELECT 'artikel',
res_reservering_key || '/' || res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_key,
'Electriciteit',
TO_CHAR (NULL),
b.res_status_bo_omschrijving,
res_rsv_ruimte_van,
ra.res_artikel_omschrijving,
rra.res_rsv_artikel_aantal,
ra.res_artikel_prijs / 1000,
res.getartikelprijs (rra.res_rsv_artikel_key) / 1000,
pchx_mon.get_index_value (rra.res_rsv_artikel_levering,
ra.res_artikel_groep)
* res.getartikelprijs (rra.res_rsv_artikel_key)
/ 1000,
rra.res_rsv_artikel_key,
ra.res_artikel_omschrijving,
ra.res_artikel_groep,
NULL,
k.prs_kostenplaats_nr,
TO_NUMBER (NULL),
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 23
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
fcl -- FCL
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
res_status_bo b,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_status_bo_key = b.res_status_bo_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_rsv_artikel_verwijder IS NULL
AND ra.res_artikel_groep = 'SVD14';
-- Het rapport svd totaal bevat alle SVDs van de afgelopen maand als deze nog niet
-- bevroren zijn. Als dit wel zo is dan bevat het rapport de gegevens van de huidige maand.
CREATE OR REPLACE VIEW pchx_v_rap_svd_tot
AS
SELECT *
FROM pchx_v_rap_svd
WHERE status = 'Verwerkt'
--WHERE status = DECODE(PCHX.get_user, 'PCHW', 'Afgemeld', 'Verwerkt') -- In PCHW#61325 is deze uitzondering komen te vervallen en worden SVD's getoond met status Verwerkt
AND (datum < TRUNC (SYSDATE, 'MONTH') -- Vorige maand afgemeld als we al over de maandgrens zitten.
OR TRUNC (SYSDATE, 'MONTH') = -- Huidige maand. Dan is de huidige maand gelijk aan de maand van de laatste export
(SELECT TRUNC (MAX (export_datum), 'MONTH') FROM pchx_svd))
AND mld_opdr_key NOT IN (SELECT mld_opdr_key FROM pchx_svd);
CREATE OR REPLACE PROCEDURE pchx_select_freeze_mon (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c1
IS
SELECT melding_key, indult
FROM pchx_v_monitoring
WHERE status = 'Afgemeld'
AND gereed < TRUNC (SYSDATE, 'MONTH')
AND afw IS NULL; -- geen afwijkingen die goedgekeurd moeten worden
--AND afgerond IS NULL -- expliciete goedkeuring staat niet aan
-- !!! controleer ook meldingen die aan elkaar gekoppeld zijn !!!!!!!!!!!!!!!!!!
CURSOR c2
IS
SELECT m_start,
m.mld_melding_key,
(SELECT mld_melding_status
FROM mld_melding ms
WHERE ms.mld_melding_key = m_start)
mld_melding_status
FROM (SELECT PCHX_MON.get_first_melding (mld_melding_key, 1) m_start,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed,
m.*
FROM mld_melding m
WHERE m.mld_melding_parentkey IS NULL
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) <
TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN
(SELECT melding_key FROM pchx_monitoring WHERE melding_key IS NOT NULL)
) m,
pchx_v_monitoring mo
WHERE m_start <> m.mld_melding_key AND m_start = mo.melding_key
AND ( (status = 'Afgemeld' AND afw IS NULL) -- startmelding mag niet hangen op goedkeuring
OR (status = 'Historie'));
CURSOR c3
IS
SELECT * FROM pchx_v_monitoring_tot
WHERE groep <> 'Overschrijding';
CURSOR c_svd_opdracht
IS
SELECT * FROM pchx_v_rap_svd
WHERE status = 'Verwerkt'
AND xml_node = 'opdracht'
AND datum < TRUNC (SYSDATE, 'MONTH')
AND mld_opdr_key NOT IN (SELECT mld_opdr_key FROM pchx_svd);
CURSOR c_svd_artikel
IS
SELECT * FROM pchx_v_rap_svd
WHERE status = 'Afgemeld'
AND xml_node = 'artikel'
AND datum < TRUNC (SYSDATE, 'MONTH');
v_exportdate DATE;
v_lastexport DATE;
v_kortingen_totaal NUMBER(11,2);
v_svd_totaal NUMBER(11,2);
v_status NUMBER;
BEGIN
v_exportdate := SYSDATE;
-- Als ik deze maand al een freeze heb uitgevoerd dan mag ik dat niet nog een keer doen.
SELECT MAX(export_datum)
INTO v_lastexport
FROM pchx_monitoring;
DELETE imp_log WHERE COALESCE(imp_log_applicatie, 'QueQeLeQue') = p_applname;
IF TRUNC (COALESCE(v_lastexport, SYSDATE-100), 'MONTH') <> TRUNC(v_exportdate, 'MONTH')
THEN
-- Zet de meldingen die geen afwijking kennen en die niet op status afgerond staan naar status verwerkt
FOR rec IN c1
LOOP
BEGIN
BEGIN
fac.writelog (p_applname, 'I', 'Melding wordt op verwerkt gezet: ' || rec.melding_key , '');
mld.setmeldingstatus (rec.melding_key, 6, NULL);
SELECT mld_melding_status
INTO v_status
FROM mld_melding
WHERE mld_melding_key = rec.melding_key;
fac.writelog (p_applname, 'I', 'Melding is op verwerkt gezet: ' || rec.melding_key , v_status);
END;
END;
END LOOP;
-- zet slave meldingen van samenvallende meldingen ook op verwerkt
FOR rec IN c2
LOOP
BEGIN
IF rec.mld_melding_status = 6 OR rec.mld_melding_status = 5 -- verwerkt of afgemeld
THEN
BEGIN
fac.writelog (p_applname, 'I', 'Slave melding wordt op verwerkt gezet: ' || rec.mld_melding_key , '');
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
SELECT mld_melding_status
INTO v_status
FROM mld_melding
WHERE mld_melding_key = rec.mld_melding_key;
fac.writelog (p_applname, 'I', 'Slave melding is op verwerkt gezet: ' || rec.mld_melding_key , v_status);
END;
END IF;
END;
END LOOP;
-- Voeg de entries uit het monitoringsoverzicht toe aan de freeze tabel.
FOR rec IN c3
LOOP
BEGIN
BEGIN
INSERT INTO pchx_monitoring (melding_key,
afw,
indult,
respijt,
locatie,
gebouw,
verdieping,
ruimte,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
tht,
wht,
wht_tht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
wegingsfactor,
dienst,
stdmelding_key,
totaal,
totaal_index,
totaal_z_respijt,
overlappend,
gekoppeld,
kinderen,
prs_bedrijf_naam,
klant_melding,
melding_omschrijving,
melding_opmerking,
export_datum,
bedrijf_malus,
prefix)
VALUES (rec.melding_key,
rec.afw,
rec.indult,
rec.respijt,
rec.locatie,
rec.gebouw,
rec.verdieping,
rec.ruimte,
rec.omschrijving,
rec.begin,
rec.gereed,
rec.thtijdstip,
rec.verwerkt,
rec.eenheid,
rec.tht,
rec.wht,
rec.wht_tht,
rec.regime,
rec.groep,
rec.typekorting,
rec.basiskorting,
rec.variabelekorting,
rec.wegingsfactor,
rec.dienst,
rec.stdmelding_key,
rec.totaal,
rec.totaal_index,
rec.totaal_z_respijt,
rec.overlappend,
rec.gekoppeld,
rec.kinderen,
rec.bedrijf_naam,
rec.klant_melding,
rec.melding_omschrijving,
rec.melding_opmerking,
v_exportdate,
rec.bedrijf_malus,
rec.prefix);
END;
END;
END LOOP;
INSERT INTO pchx_monitoring (melding_key, indult, export_datum)
SELECT mld_melding_key, DECODE(mld_melding_indult, 1, 'Ja', 'Nee'), v_exportdate
FROM mld_melding m
WHERE m.mld_melding_status = 6 -- Historie
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) <
TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
FROM pchx_monitoring nm
WHERE nm.melding_key IS NOT NULL);
IF PCHX.get_user = 'PCHW'
THEN
-- Voeg de overschrijdingskorting toe.
INSERT INTO pchx_monitoring (begin,
gereed,
groep,
variabelekorting,
totaal,
totaal_index,
kinderen,
export_datum)
SELECT ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin,
TRUNC (SYSDATE, 'MONTH') gereed,
'Overschrijding' groep,
250 variabelekorting,
250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal,
PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal_index,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting
v_exportdate
FROM pchx_monitoring
WHERE totaal IS NOT NULL
AND totaal <> 0
AND COALESCE(groep, 'Quequleque') <> 'Overschrijding'
AND export_datum = v_exportdate
GROUP BY 'Overschrijding'
UNION ALL
SELECT ADD_MONTHS(TRUNC (SYSDATE, 'MONTH'), -1) begin,
TRUNC (SYSDATE, 'MONTH') gereed,
'Overschrijding' groep,
50 variabelekorting,
50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal,
PCHX_MON.get_index_value(LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),-1)), 'MON') * 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal_index,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen, -- kinderen bij overschrijdingskorting
v_exportdate
FROM pchx_monitoring
WHERE COALESCE(groep, 'Quequleque') <> 'Overschrijding'
AND indult = 'Nee'
AND export_datum = v_exportdate
GROUP BY 'Overschrijding';
END IF;
SELECT SUM(totaal)
INTO v_kortingen_totaal
FROM pchx_monitoring
WHERE export_datum = v_exportdate;
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
VALUES ('FREEZE', 'Kortingen totaal: ' || v_kortingen_totaal, 1);
ELSE
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
VALUES ('FREEZE', 'Kortingen zijn al bevroren deze maand op ' || TO_CHAR(v_lastexport, 'dd-mm-yyyy hh24:mi:ss'), 1);
END IF;
-- Freeze van SVD's
-- Als ik deze maand al een freeze heb uitgevoerd dan mag ik dat niet nog een keer doen.
SELECT MAX(export_datum)
INTO v_lastexport
FROM pchx_svd;
IF TRUNC (COALESCE(v_lastexport, SYSDATE-100), 'MONTH') <> TRUNC(v_exportdate, 'MONTH')
THEN
FOR rec IN c_svd_opdracht
LOOP
BEGIN
INSERT INTO pchx_svd (mld_melding_key,
svd_type,
status,
datum,
omschrijving,
aantal,
prijs,
totaal,
index_totaal,
mld_opdr_key,
lomschr,
kostensoort,
kostenkenmerk,
export_datum)
VALUES (rec.mld_melding_key,
rec.svd_type,
rec.status,
rec.datum,
rec.omschrijving,
rec.aantal,
rec.prijs,
rec.totaal,
rec.index_totaal,
rec.mld_opdr_key,
rec.lomschr,
rec.kostensoort,
rec.kostenkenmerk,
v_exportdate);
mld.setopdrachtstatus (rec.mld_opdr_key, 7, NULL);
mld.updatemeldingstatus (rec.mld_melding_key, 0, NULL);
END;
END LOOP;
FOR rec IN c_svd_artikel
LOOP
BEGIN
INSERT INTO pchx_svd (mld_melding_key,
svd_type,
status,
datum,
omschrijving,
aantal,
prijs,
totaal,
index_totaal,
mld_opdr_key,
lomschr,
kostensoort,
kostenkenmerk,
fcl,
export_datum)
VALUES (rec.mld_melding_key,
rec.svd_type,
rec.status,
rec.datum,
rec.omschrijving,
rec.aantal,
rec.prijs,
rec.totaal,
rec.index_totaal,
rec.mld_opdr_key,
rec.lomschr,
rec.kostensoort,
rec.kostenkenmerk,
rec.fcl,
v_exportdate);
UPDATE res_rsv_artikel rra
SET res_rsv_artikel_verwerkt = v_exportdate, res_status_bo_key = 6
WHERE rra.res_rsv_artikel_key = rec.mld_opdr_key;
END;
END LOOP;
SELECT SUM(totaal)
INTO v_svd_totaal
FROM pchx_svd
WHERE export_datum = v_exportdate;
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
VALUES ('FREEZE', 'SVD totaal: ' || v_svd_totaal, 2);
ELSE
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
VALUES ('FREEZE', 'SVDs zijn al bevroren deze maand op ' || TO_CHAR(v_lastexport, 'dd-mm-yyyy hh24:mi:ss'), 2);
END IF;
COMMIT;
END pchx_select_freeze_mon;
/
CREATE OR REPLACE PROCEDURE pchx_export_freeze_mon (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
DELETE fac_rapport WHERE fac_rapport_node = 'FREEZE';
END;
/
CREATE OR REPLACE VIEW pchx_v_export_freeze_mon
( result,
result_order)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'FREEZE';
CREATE OR REPLACE VIEW pchx_v_svd_history
(
mld_melding_key,
mld_opdr_key,
svd_type,
status,
datum,
omschrijving,
aantal,
prijs,
totaal,
index_totaal,
export_datum,
maand,
lomschr,
kostensoort,
kostenkenmerk,
fcl
)
AS
SELECT mld_melding_key,
mld_opdr_key,
svd_type,
status,
datum,
omschrijving,
aantal,
prijs,
totaal,
index_totaal,
export_datum,
TO_CHAR(TRUNC(export_datum, 'MONTH')-1, 'yyyy-month') maand,
lomschr,
kostensoort,
kostenkenmerk,
fcl
FROM pchx_svd;
-- Rapport om aanpassingen in de stdmelding/vakgroep te signaleren.
CREATE OR REPLACE VIEW pchx_v_mld_cat_aanpassing
AS
SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
fac_tracking_datum,
fac_tracking_oms
FROM fac_tracking t, mld_melding m
WHERE fac_tracking_oms LIKE '%Melding:%' AND m.mld_melding_key = t.fac_tracking_refkey;
CREATE OR REPLACE VIEW pchx_v_rap_melding_details
AS
SELECT sd.INS_SRTDISCIPLINE_OMSCHRIJVing,
d.ins_discipline_omschrijving,
std.mld_stdmelding_omschrijving,
m.mld_melding_key,
m.mld_melding_datum,
rg.alg_locatie_code,
rg.alg_gebouw_upper,
rg.alg_verdieping_code,
rg.alg_ruimte_nr || ' - ' || rg.alg_ruimte_omschrijving alg_ruimte_nr,
rg.alg_ruimte_omschrijving,
rg.alg_srtruimte_omschrijving,
km.fac_usrdata_omschr
FROM mld_melding m,
alg_v_ruimte_gegevens rg,
mld_stdmelding std,
ins_tab_discipline d,
alg_srtruimte rm,
ins_srtdiscipline sd,
(SELECT km.mld_melding_key, fac_usrdata_omschr
FROM mld_srtkenmerk sk,
mld_kenmerk k,
mld_kenmerkmelding km,
fac_usrdata ud
WHERE mld_srtkenmerk_upper LIKE 'TYPE %'
AND mld_srtkenmerk_kenmerktype = 'R'
AND mld_srtkenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'S'
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
fac_usrdata_key) km
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key
AND rm.alg_srtruimte_key = rg.alg_srtruimte_key;
-- Rapport om de koppeling met Homij te monitoren.
CREATE OR REPLACE VIEW pchx_v_rap_stmelding_os_check
(
ins_srtdiscipline_omschrijving,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_stdmelding_slabewaken,
mld_stdmeldinggroep_naam,
mld_stdmelding_uitvoertijd_t,
mld_stdmelding_uitvoertijd_e,
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_malusbasis,
alg_srtruimte_code,
alg_srtruimte_omschrijving,
mld_stdmsrtruimte_t_uitvtijd_t,
mld_stdmsrtruimte_t_uitvtijd_e,
mld_stdmsrtruimte_regime,
mld_stdmsrtruimte_malus,
mld_stdmsrtruimte_malusbasis
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_stdmelding_slabewaken,
stdmg.mld_stdmeldinggroep_naam,
std.mld_stdmelding_t_uitvoertijd.tijdsduur mld_stdmelding_uitvoertijd_t,
std.mld_stdmelding_t_uitvoertijd.eenheid mld_stdmelding_uitvoertijd_e,
DECODE (mld_stdmelding_regime, 1, 'DagregimeDienst', 2, 'DagregimeRuimte', 3, '24/7')
mld_stdmelding_regime,
mld_stdmelding_malus,
mld_stdmelding_malusbasis,
sr.alg_srtruimte_code,
sr.alg_srtruimte_omschrijving,
stdsr.mld_stdmsrtruimte_t_uitvtijd.tijdsduur mld_stdmsrtruimte_t_uitvtijd_t,
stdsr.mld_stdmsrtruimte_t_uitvtijd.eenheid mld_stdmsrtruimte_t_uitvtijd_e,
DECODE (mld_stdmsrtruimte_regime, 1, 'DagregimeDienst', 2, 'DagregimeRuimte', 3, '24/7')
mld_stdmsrtruimte_regime,
stdsr.mld_stdmsrtruimte_malus,
stdsr.mld_stdmsrtruimte_malusbasis
FROM mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_stdmsrtruimte stdsr,
alg_srtruimte sr,
mld_stdmeldinggroep stdmg
WHERE std.mld_stdmelding_key = stdsr.mld_stdmelding_key(+)
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND std.mld_stdmelding_verwijder IS NULL
AND stdsr.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND std.mld_stdmeldinggroep_key = stdmg.mld_stdmeldinggroep_key(+);
CREATE OR REPLACE VIEW pchx_v_rap_homij_status
( mld_melding_key, status)
AS
SELECT mld_melding_key, 'Nog te verzenden'
FROM mld_opdr
WHERE mld_uitvoerende_keys = 4963 -- Homij Vianen
AND mld_opdr_teverzenden = 1
AND mld_opdr_verzonden IS NULL
UNION ALL
SELECT mld_melding_key, 'Geen opdracht'
FROM mld_melding m, mld_stdmelding std
WHERE mld_melding_datum > TO_DATE ('20190114', 'yyyymmdd')
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_dienst_key = 66 -- Hard FM
AND NOT EXISTS
(SELECT mld_opdr_key
FROM mld_opdr o
WHERE o.mld_melding_key = m.mld_melding_key)
AND m.mld_melding_status IN (0,
2,
3,
4,
99,
7)
UNION ALL
SELECT mld_melding_key, 'Geen lopende opdracht'
FROM mld_melding m, mld_stdmelding std
WHERE mld_melding_datum > TO_DATE ('20190114', 'yyyymmdd')
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_dienst_key = 66 -- Hard FM
AND NOT EXISTS
(SELECT mld_opdr_key
FROM mld_opdr o
WHERE o.mld_melding_key = m.mld_melding_key
AND mld_statusopdr_key IN (2,
3,
4,
5,
8))
AND m.mld_melding_status IN (4, 99, 7);
-- View tbv infobord om laatst afgemelde homij opdracht te tonen.
CREATE OR REPLACE VIEW PCHX_V_LAATSTE_HOMIJ_AFM
AS
SELECT mld_opdr_key, mld_melding_key, mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr o, fac_tracking t2
WHERE t2.fac_tracking_refkey = o.mld_opdr_key
AND t2.fac_tracking_key =
(SELECT MAX (fac_tracking_key)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'ORDAFM'
AND prs_perslid_key = 17981 -- homij koppling api user
);
-- Notificatiejob om een bericht naar de contractmanager te sturen op het moment dat een melding afgerond of afgemeld (alleen PCHW) wordt
CREATE OR REPLACE VIEW pchx_v_noti_melding_afrond
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT DISTINCT
NULL sender,
gg.prs_perslid_key receiver,
'Facilitor: Melding: ' || m.mld_melding_key || ' is ter goedkeuring aangeboden.',
'MLDINF' code,
mld_melding_key key,
NULL xkey
FROM mld_melding m,
fac_srtnotificatie sn,
fac_tracking t,
fac_gebruikersgroep gg
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFR'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE LOWER (fac_notificatie_job_view) =
'pchx_v_noti_melding_afrond')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE LOWER (fac_notificatie_job_view) =
'pchx_v_noti_melding_afrond')
-- Notificatie wordt gestuurd naar de contractbeheerders
AND gg.fac_groep_key = DECODE(pchx.get_user, 'PCHW',63, 'PCHA', 61)
UNION ALL
SELECT DISTINCT
NULL sender,
gg.prs_perslid_key receiver,
'Facilitor: Melding: ' || m.mld_melding_key || ' is gereed gemeld.',
'MLDINF' code,
mld_melding_key key,
NULL xkey
FROM mld_melding m,
prs_perslid p,
prs_v_afdeling a,
fac_srtnotificatie sn,
fac_tracking t,
fac_gebruikersgroep gg
WHERE m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = 121 -- Gemeente Westland
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM'
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE LOWER (fac_notificatie_job_view) =
'pchx_v_noti_melding_afrond')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE LOWER (fac_notificatie_job_view) =
'pchx_v_noti_melding_afrond')
-- Notificatie wordt gestuurd naar de contractbeheerders
AND gg.fac_groep_key = 63
AND pchx.get_user = 'PCHW';
-- Notificatieview om afgemelde opdrachten van Homij te notificeren.
CREATE OR REPLACE VIEW pchx_v_noti_opdr_afm_homij
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL
sender,
4101
receiver, -- Servicedesk DGS
'Opdracht: '
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| ' is door Homij afgemeld.',
'ORDAFM'
code,
mld_opdr_key
key,
NULL
xkey
FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE LOWER (
fac_notificatie_job_view) =
'pchx_v_noti_opdr_afm_homij')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE LOWER (
fac_notificatie_job_view) =
'pchx_v_noti_opdr_afm_homij');
/* Formatted on 4/12/2017 16:43:33 (QP5 v5.313) */
CREATE OR REPLACE VIEW pchx_v_dashboard_korting
(
melding,
omschrijving,
bedrijf_malus,
marge,
hide_f_marge,
totaal_index,
tht_tijdstip,
eenheid,
tht,
status,
basiskorting,
variabelekorting,
overlap_kort,
melder,
afw
)
AS
SELECT melding_key,
omschrijving,
bedrijf_malus,
(SELECT ROUND (
m.mld_melding_t_uitvoertijd.tijdsduur
- 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,
ROUND (totaal_index)
totaal_index,
thtijdstip,
eenheid,
tht,
status,
basiskorting,
variabelekorting,
DECODE (INSTR (overlappend, ',', 1, 1),
0, '',
NULL, '',
SUBSTR (overlappend,
INSTR (overlappend, ',', 1, 1) + 1,
DECODE (INSTR (overlappend, ',', 1, 2),
0, 100,
DECODE (INSTR (overlappend, ',', 1, 3),
0, 100,
INSTR (overlappend, ',', 1, 3)
- INSTR (overlappend, ',', 1, 1)
- 1))))
|| DECODE (INSTR (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
WHERE gereed IS NULL AND indult <> 'Ja';
-- nieuwe versie
CREATE OR REPLACE VIEW pchx_v_dashboard_korting_optij
(
melding,
omschrijving,
bedrijf_malus,
marge,
hide_f_marge,
totaal_index,
tht_tijdstip,
eenheid,
tht,
status,
basiskorting,
variabelekorting,
melder,
afw
)
AS
SELECT mld_melding_key,
mld_stdmelding_omschrijving,
PCHX.get_kenmerk ('MLD',
DECODE (PCHX.get_user, 'PCHA', 61, 'PCHW', 121, 'PGHE', 102),
m.mld_melding_key)
bedrijf_malus,
ROUND (
m.mld_melding_t_uitvoertijd.tijdsduur
- mld.getactualuitvoer (m.mld_melding_key).tijdsduur,
2)
|| ' '
|| m.mld_melding_t_uitvoertijd.eenheid
marge_txt,
ROUND (
m.mld_melding_t_uitvoertijd.tijdsduur
- mld.getactualuitvoer (m.mld_melding_key).tijdsduur,
2)
marge,
NULL
totaal_index,
mld.geteinddatum (m.mld_melding_key)
thttijdstip,
m.mld_melding_t_uitvoertijd.eenheid
tht_eenheid,
m.mld_melding_t_uitvoertijd.tijdsduur
+ COALESCE (m.mld_melding_t_respijt.tijdsduur, 0)
tht,
s.mld_statuses_omschrijving,
COALESCE (
(SELECT stsr.mld_stdmsrtruimte_malusbasis
FROM mld_stdmsrtruimte stsr
WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key
AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key),
std.mld_stdmelding_malusbasis)
bk,
COALESCE (
(SELECT stsr.mld_stdmsrtruimte_malus
FROM mld_stdmsrtruimte stsr
WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key
AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key),
std.mld_stdmelding_malus)
vk,
prs_perslid_naam_full,
DECODE (mld_melding_indult, 1, 'I') || DECODE (m.mld_melding_t_respijt.eenheid, NULL, '', 'R')
FROM mld_melding m,
mld_stdmelding std,
mld_statuses s,
alg_v_ruimte_gegevens rg,
prs_v_perslid_fullnames_all pf
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_indult = 0
AND std.mld_stdmelding_slabewaken = 1
AND s.mld_statuses_key = m.mld_melding_status
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) IS NULL
AND pchx_mon.klant_melding (m.mld_melding_key) = 1
AND m.mld_melding_parentkey IS NULL
AND m.mld_melding_status <> 1 -- Afgewezen
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key;
CREATE OR REPLACE VIEW pchx_v_dashboard_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(+);
------ 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