2027 lines
78 KiB
PL/PgSQL
2027 lines
78 KiB
PL/PgSQL
-- Script containing customer generic configuration sql statements for all PCHA and PCHW accounts
|
||
-- $Revision$
|
||
-- $Id$
|
||
--
|
||
|
||
DEFINE thisfile = 'PCHX.SQL'
|
||
DEFINE dbuser = 'PCHA|PCHW'
|
||
|
||
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 klant_melding (p_melding_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;
|
||
|
||
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;
|
||
ELSE
|
||
OPEN cw;
|
||
END IF;
|
||
|
||
LOOP
|
||
IF pchx.get_user = 'PCHA' THEN
|
||
FETCH ca INTO rec;
|
||
EXIT WHEN ca%NOTFOUND;
|
||
ELSE
|
||
FETCH cw INTO rec;
|
||
EXIT WHEN cw%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
|
||
CURSOR c
|
||
IS
|
||
SELECT COALESCE(fac_usrdata_volgnr, 1) * fac_usrdata_prijs / 100000 fac_usrdata_prijs
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = p_key
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND p_date > add_months(fac_usrdata_vervaldatum, -12);
|
||
v_result NUMBER;
|
||
BEGIN
|
||
dbms_output.put_line('start ' || p_key);
|
||
v_result := 1;
|
||
FOR rec IN c LOOP
|
||
BEGIN
|
||
dbms_output.put_line(rec.fac_usrdata_prijs);
|
||
v_result := v_result * (rec.fac_usrdata_prijs / 100 + 1);
|
||
END;
|
||
END LOOP;
|
||
RETURN v_result;
|
||
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;
|
||
ELSE v_result := 1;
|
||
END CASE;
|
||
RETURN v_result;
|
||
END;
|
||
|
||
FUNCTION klant_melding (p_melding_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_klant_melding NUMBER;
|
||
BEGIN
|
||
SELECT DECODE (a.prs_bedrijf_key, DECODE (pchx.get_user, 'PCHW', 121, 102), 1, 0) klant_melding
|
||
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 OTHERS
|
||
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_index,
|
||
status,
|
||
afgerond,
|
||
dienst,
|
||
stdmelding_key,
|
||
discipline_key,
|
||
overlappend,
|
||
gekoppeld,
|
||
wegingsfactor,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
klant_melding,
|
||
bedrijf_naam,
|
||
og,
|
||
bedrijf_malus,
|
||
prefix
|
||
)
|
||
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 = 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.
|
||
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)
|
||
totaal,
|
||
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,
|
||
(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 m2.mld_melding_parentkey = m_start) 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, 121), m_start),
|
||
ins_srtdiscipline_prefix
|
||
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, 221)
|
||
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,
|
||
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
|
||
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 (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 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 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,
|
||
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),
|
||
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
|
||
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(TRUNC(SYSDATE)-1, 'MON') * 250 * (COUNT ( * ) - 10) * DECODE (SIGN (COUNT ( * ) - 10), 1, 1, 0) totaal_index,
|
||
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(TRUNC(SYSDATE)-1, 'MON') * 50 * (COUNT ( * ) - 20) * DECODE (SIGN (COUNT ( * ) - 20), 1, 1, 0) totaal_index,
|
||
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,
|
||
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,
|
||
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_key,
|
||
svd_type,
|
||
status,
|
||
datum,
|
||
omschrijving,
|
||
aantal,
|
||
prijs,
|
||
totaal,
|
||
index_totaal,
|
||
mld_opdr_key,
|
||
lomschr,
|
||
kostensoort,
|
||
kostenkenmerk,
|
||
kostenplaats
|
||
)
|
||
AS
|
||
SELECT 'opdracht',
|
||
TO_CHAR (m.mld_melding_key),
|
||
DECODE (SUBSTR (fac_usrdata_upper, 1, 3), 'BEV', 'Risicobeheersing', 'FAC', 'Facilitair ondersteuner', 'Schoonmaken'),
|
||
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
|
||
FROM mld_opdr o,
|
||
mld_opdr_materiaal om,
|
||
fac_usrdata ud,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline d,
|
||
prs_kostenplaats k
|
||
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)
|
||
UNION ALL
|
||
SELECT 'artikel',
|
||
res_reservering_key || '/' || res_rsv_ruimte_volgnr,
|
||
'Catering',
|
||
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 (SYSDATE, 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
|
||
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%';
|
||
|
||
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 = 'Afgerond'
|
||
AND xml_node = 'opdracht'
|
||
AND datum < TRUNC (SYSDATE, 'MONTH');
|
||
|
||
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);
|
||
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;
|
||
|
||
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
|
||
mld.setmeldingstatus (rec.melding_key, 6, NULL);
|
||
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
|
||
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
|
||
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,
|
||
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.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(TRUNC(SYSDATE)-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(TRUNC(SYSDATE)-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,
|
||
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);
|
||
|
||
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
|
||
)
|
||
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
|
||
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_stmelding_os_check
|
||
(
|
||
ins_srtdiscipline_omschrijving,
|
||
ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
mld_stdmelding_uitvoertijd_t,
|
||
mld_stdmelding_uitvoertijd_e,
|
||
mld_stdmelding_regime,
|
||
mld_stdmelding_malus,
|
||
mld_stdmelding_malusbasis,
|
||
alg_srtruimte_code,
|
||
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,
|
||
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,
|
||
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
|
||
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(+);
|
||
|
||
|
||
-- 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';
|
||
|
||
|
||
/* 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, 121),
|
||
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;
|
||
|
||
------ 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 |