1592 lines
55 KiB
PL/PgSQL
1592 lines
55 KiB
PL/PgSQL
-- Script containing customer specific configuration sql statements for NMMS: Nationaal Militair Museum
|
||
-- (c) 2011 SG|facilitor
|
||
-- $Revision$
|
||
-- $Id$
|
||
--
|
||
-- Support: +31 53 4800710
|
||
SPOOL xNMMS.LST
|
||
SET ECHO ON
|
||
--------------
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE nmms
|
||
AS
|
||
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;
|
||
|
||
PROCEDURE daily_verwerk_opdr;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE BODY nmms
|
||
AS
|
||
FUNCTION get_first_melding (p_melding_key IN NUMBER,
|
||
p_index IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT m2.mld_melding_datum van, m2.mld_melding_key
|
||
FROM mld_melding m1,
|
||
mld_stdmelding std1,
|
||
mld_melding m2,
|
||
mld_stdmelding std2
|
||
WHERE m1.mld_melding_key = p_melding_key
|
||
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
|
||
AND m2.mld_melding_parentkey IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM nmms_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 m1.mld_alg_onroerendgoed_keys =
|
||
m2.mld_alg_onroerendgoed_keys -- op dezelfde ruimte
|
||
AND std1.prs_dienst_key =
|
||
std2.prs_dienst_key -- voor dezelfde dienst
|
||
AND std1.mld_stdmelding_regime =
|
||
std2.mld_stdmelding_regime -- met hetzelfde regime
|
||
AND m1.mld_melding_t_uitvoertijd.eenheid =
|
||
m2.mld_melding_t_uitvoertijd.eenheid -- in dezelfde eenheid
|
||
AND m1.mld_melding_key <> m2.mld_melding_key
|
||
AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
|
||
AND fac.gettrackingdate ('MLDAFM', m2.mld_melding_key)
|
||
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;
|
||
BEGIN
|
||
v_melding_key := p_melding_key;
|
||
|
||
SELECT mld_melding_datum
|
||
INTO v_datum_begin
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = p_melding_key;
|
||
|
||
v_loop_index := 1;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
-- door de sortering op de cursor hoeven we alleen het eerste record te gebruiken.
|
||
IF p_index < 10 AND v_loop_index = 1
|
||
THEN
|
||
BEGIN
|
||
l_melding_key :=
|
||
nmms.get_first_melding (rec.mld_melding_key, p_index + 1);
|
||
END;
|
||
|
||
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 LOOP;
|
||
|
||
RETURN v_melding_key;
|
||
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;
|
||
|
||
-- onderstaande procedure wordt of iedere nacht vanuit de daily_task aangeroepen of in de exact_verwerk routine. It's up to Jonathan.
|
||
PROCEDURE daily_verwerk_opdr
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM mld_opdr o, prs_kenmerklink kl
|
||
WHERE o.mld_uitvoerende_keys = kl.prs_link_key
|
||
AND prs_kenmerk_key = 1000 -- MA/CP
|
||
AND prs_kostenplaats_key <> 1 -- AAFM
|
||
AND mld_statusopdr_key = 9;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
-- zet de status naar verwerkt (user is 4 -> facilitor)
|
||
mld.setopdrachtstatus (rec.mld_opdr_key, 7, 4);
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE nmms_export_daily_task (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
nmms.daily_verwerk_opdr;
|
||
END;
|
||
/
|
||
|
||
|
||
-- Selecteer oa. de MIN(begintijd) en MAX(eindtijd) van overlappende meldingen:
|
||
-- op dezelfde ruimte voor dezelfde dienst
|
||
-- met hetzelfde regime in dezelfde eenheid
|
||
/* Formatted on 21-10-2014 16:54:44 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW nmms_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
|
||
)
|
||
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
|
||
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,
|
||
COALESCE (m.gereed, SYSDATE),
|
||
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 (m.max_respijt, 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
|
||
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 (mld_melding_uitvoertijd) mld_melding_uitvoertijd, -- hieronder anders opgelost!
|
||
MIN (m.mld_melding_t_uitvoertijd.tijdsduur) min_uitvoertijd,
|
||
MIN (m.mld_melding_t_uitvoertijd.eenheid) min_uitvoertijd_eenheid,
|
||
--SUM (mld_melding_respijt) mld_melding_respijt, -- hieronder anders opgelost!
|
||
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
|
||
FROM (SELECT nmms.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,
|
||
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed,
|
||
m.mld_melding_t_uitvoertijd,
|
||
m.mld_melding_t_respijt,
|
||
m.mld_melding_indult,
|
||
m.mld_melding_einddatum_std,
|
||
m.mld_melding_einddatum
|
||
FROM mld_melding m, mld_stdmelding std
|
||
WHERE m.mld_melding_parentkey IS NULL
|
||
-- meldingen die al geexporteerd zijn (en in de tabel nmms_monitoring staan) komen niet meer in deze view
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM nmms_monitoring
|
||
WHERE melding_key = m.mld_melding_key)
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_stdmelding_malus IS NOT NULL -- 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;
|
||
|
||
--
|
||
-- Basis monitoringsview voor operationele zaken. Meldingen die opgenomen zijn in de tabel nmms_monitoring komen niet meer voor in deze view.
|
||
--
|
||
/* Formatted on 23-10-2014 11:06:24 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW nmms_v_monitoring
|
||
(
|
||
melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
kostenplaats,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
status,
|
||
afgerond,
|
||
dienst,
|
||
stdmelding_key,
|
||
discipline_key,
|
||
overlappend,
|
||
wegingsfactor,
|
||
melding_omschrijving,
|
||
melding_opmerking
|
||
)
|
||
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 (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
|
||
q_vervolg,
|
||
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'),
|
||
DECODE (g.respijt.tijdsduur,
|
||
0, NULL,
|
||
TO_CHAR (ROUND (g.respijt.tijdsduur, 2)) || g.respijt.eenheid)
|
||
respijt, -- Of Uren/Dagen??? => Maakt niet uit
|
||
prs_kostenplaats_nr,
|
||
alg_locatie_code,
|
||
alg_gebouw_upper,
|
||
alg_verdieping_volgnr,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
mld_stdmelding_omschrijving,
|
||
t_van,
|
||
gereed,
|
||
DECODE (kortingtype,
|
||
'Q', (SELECT mld_melding_einddatum FROM mld_melding mtht WHERE mtht.mld_melding_key = m_start),
|
||
thtijdstip) thtijdstip,
|
||
(SELECT fac_tracking_datum
|
||
FROM fac_tracking
|
||
WHERE fac_tracking_refkey = m_start --mld_melding_key
|
||
AND fac_srtnotificatie_key = 36)
|
||
verwerkt,
|
||
DECODE (kortingtype,
|
||
'Q', NULL,
|
||
TO_CHAR (ROUND (g.tht.tijdsduur, 2)) || g.tht.eenheid)
|
||
tht_txt, -- Of Uren/Dagen??? => Maakt niet uit
|
||
DECODE (kortingtype,
|
||
'Q', NULL,
|
||
TO_CHAR (ROUND (g.actual.tijdsduur, 2)) || g.actual.eenheid)
|
||
wht, -- Of zonder U/D??? => Nu beter
|
||
DECODE (kortingtype, 'Q', TO_NUMBER (NULL), regime) regime,
|
||
mld_stdmeldinggroep_naam groep,
|
||
'K' || LOWER (kortingtype) || DECODE (q_vervolg, 1, '/q')
|
||
typekorting,
|
||
DECODE (kortingtype,
|
||
'B', mld_stdmelding_malus,
|
||
'S', mld_stdmelding_malus,
|
||
'Q', mld_stdmelding_malus)
|
||
basiskorting,
|
||
DECODE (kortingtype, 'B', 50, 'S', 1000) variabelekorting,
|
||
--DECODE (
|
||
-- telaat,
|
||
-- 1,
|
||
-- DECODE (kortingtype,
|
||
-- 'B', (actual - tht) * 24,
|
||
-- 'S', (actual - tht) * 24))
|
||
-- uren,
|
||
DECODE (
|
||
telaat,
|
||
1,
|
||
DECODE (
|
||
kortingtype,
|
||
'B',
|
||
TO_CHAR (ROUND (g.uitloop.tijdsduur, 2)) || g.uitloop.eenheid,
|
||
'S',
|
||
TO_CHAR (ROUND (g.uitloop.tijdsduur, 2)) || g.uitloop.eenheid))
|
||
uren, -- NIET ALTIJD MEER UREN (en ook niet meer numeriek)???
|
||
--DECODE (
|
||
-- telaat,
|
||
-- 1,
|
||
-- DECODE (
|
||
-- kortingtype,
|
||
-- 'Q',
|
||
-- mld_stdmelding_malus,
|
||
-- 'B',
|
||
-- mld_stdmelding_malus
|
||
-- + ( (TRUNC ( (actual - tht) * 24) + 1) * 50),
|
||
-- 'S',
|
||
-- mld_stdmelding_malus
|
||
-- + ( (TRUNC ( (actual - tht) / thtsla) + 1) * 1000),
|
||
-- NULL))
|
||
-- kb,
|
||
DECODE (
|
||
telaat,
|
||
1,
|
||
DECODE (
|
||
kortingtype,
|
||
'Q',
|
||
mld_stdmelding_malus,
|
||
'B',
|
||
mld_stdmelding_malus
|
||
+ (CEIL(DECODE (g.uitloop.eenheid, 'D', g.uitloop.tijdsduur * 24, g.uitloop.tijdsduur)) * 50), -- Alleen als dagen x24!
|
||
'S',
|
||
mld_stdmelding_malus
|
||
+ (CEIL (g.uitloop.tijdsduur / g.thtsla.tijdsduur) * 1000),
|
||
NULL))
|
||
kb,
|
||
DECODE (kortingtype, 'P', mld_stdmelding_malus) prestatiekorting,
|
||
--DECODE (telaat,
|
||
-- 1,
|
||
-- DECODE (kortingtype, 'P', ( (actual - tht) / thtsla) + 1))
|
||
-- factor,
|
||
DECODE (
|
||
telaat,
|
||
1,
|
||
DECODE (kortingtype, 'P', (g.uitloop.tijdsduur / g.thtsla.tijdsduur) + 1))
|
||
factor,
|
||
--DECODE (
|
||
-- telaat,
|
||
-- 1,
|
||
-- DECODE (
|
||
-- kortingtype,
|
||
-- 'P',
|
||
-- TRUNC (
|
||
-- DECODE (telaat, 1, ( (actual - tht) / thtsla) + 1, NULL))
|
||
-- * mld_stdmelding_malus))
|
||
-- kp,
|
||
DECODE (
|
||
telaat,
|
||
1,
|
||
DECODE (kortingtype, 'P', CEIL (g.uitloop.tijdsduur / g.thtsla.tijdsduur) * mld_stdmelding_malus))
|
||
kp,
|
||
(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,
|
||
wegingsfactor,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking
|
||
FROM (SELECT m.m_start,
|
||
m.aantal,
|
||
DECODE (m.aantal, 1, NULL, m.overlappend) overlappend,
|
||
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,
|
||
q.vervolg q_vervolg,
|
||
m.t_van,
|
||
m.gereed,
|
||
m.mld_melding_einddatum_std thtijdstip, -- min_melding_einddatum_std
|
||
stdg.mld_stdmeldinggroep_naam,
|
||
nmms.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,
|
||
d.ins_deel_omschrijving object,
|
||
(SELECT ins_kenmerkdeel_waarde
|
||
FROM ins_kenmerkdeel
|
||
WHERE ins_deel_key = d.ins_deel_key
|
||
AND ins_kenmerk_key = 9)
|
||
thema,
|
||
(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
|
||
--CASE COALESCE (q.vervolg, 0)
|
||
-- WHEN 1
|
||
-- THEN
|
||
-- 1
|
||
-- ELSE
|
||
-- DECODE (
|
||
-- UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)),
|
||
-- 'Q',
|
||
-- SIGN (gereed - mld_melding_einddatum),
|
||
-- SIGN(mld.getactualuitvoer (m.mld_melding_key) -- uitvoertijd VAN MELDING MET LAAGSTE KEY???
|
||
-- - (mld_melding_uitvoertijd
|
||
-- + mld_melding_respijt)))
|
||
--END
|
||
-- telaat,
|
||
CASE COALESCE (q.vervolg, 0)
|
||
WHEN 1
|
||
THEN
|
||
1
|
||
ELSE
|
||
DECODE (
|
||
UPPER (
|
||
SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)),
|
||
'Q',
|
||
SIGN(COALESCE (m.gereed, SYSDATE) -- COALESCE met SYSDATE of niet???
|
||
- m.mld_melding_einddatum), -- max_actual_einddatum - max_melding_einddatum over ALLE m_start-meldingen
|
||
SIGN(m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur - m.max_t_respijt.tijdsduur)) -- positief, dan te laat
|
||
END
|
||
telaat,
|
||
--m.min_tht_einddatum_start, -- meest nabije tht-einddatum van overlappende meldingen (t_van + MIN SLA + MAX respijt)
|
||
m.max_t_actual actual, -- MAX actuele doorlooptijd
|
||
--mld_melding_uitvoertijd thtsla,
|
||
m.min_t_sla thtsla, -- MIN SLA
|
||
--COALESCE (m.mld_melding_respijt, 0) mld_melding_respijt,
|
||
m.max_t_respijt respijt, -- MAX respijt
|
||
--DECODE (
|
||
-- q.vervolg,
|
||
-- NULL,
|
||
-- COALESCE (ins_deel_uitvoertijd, mld_melding_uitvoertijd),
|
||
-- 0)
|
||
--+ mld_melding_respijt
|
||
-- tht,
|
||
MLD_T_UITVOERTIJD (
|
||
DECODE (q.vervolg, NULL, m.min_t_sla.tijdsduur, 0)
|
||
+ m.max_t_respijt.tijdsduur,
|
||
m.min_t_sla.eenheid)
|
||
tht, -- MIN SLA + MAX respijt
|
||
MLD_T_UITVOERTIJD (
|
||
m.max_t_actual.tijdsduur
|
||
- DECODE (q.vervolg, NULL, m.min_t_sla.tijdsduur, 0)
|
||
- m.max_t_respijt.tijdsduur,
|
||
m.max_t_actual.eenheid)
|
||
uitloop, -- hoeveel te laat
|
||
DECODE (
|
||
d.ins_deel_key,
|
||
NULL,
|
||
sr.alg_srtruimte_prijs4, -- wegingsfactor bij soortruimte
|
||
(SELECT ins_kenmerkdeel_waarde
|
||
FROM ins_kenmerkdeel
|
||
WHERE ins_deel_key = d.ins_deel_key
|
||
AND ins_kenmerk_key = 10)) -- wegingsfactor bij object
|
||
wegingsfactor,
|
||
-- 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
|
||
FROM nmms_v_startmelding_geg m,
|
||
mld_stdmelding std,
|
||
mld_stdmeldinggroep stdg,
|
||
prs_kostenplaats kp,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_srtruimte sr,
|
||
-- vind vervolgmeldingen op Q-meldingen (periodieke inspecties)
|
||
(SELECT m1.mld_melding_key,
|
||
DECODE (m2.mld_melding_key, NULL, 0, 1) vervolg
|
||
FROM mld_melding m1,
|
||
mld_stdmelding std1,
|
||
mld_stdmeldinggroep stdg1,
|
||
mld_melding m2,
|
||
mld_stdmelding std2,
|
||
mld_stdmeldinggroep stdg2
|
||
WHERE m1.mld_stdmelding_key = std1.mld_stdmelding_key
|
||
AND std1.mld_stdmeldinggroep_key =
|
||
stdg1.mld_stdmeldinggroep_key
|
||
AND UPPER(SUBSTR (stdg1.mld_stdmeldinggroep_naam,
|
||
1,
|
||
1)) = 'Q'
|
||
AND m1.mld_melding_start_key = m2.mld_melding_key
|
||
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
|
||
AND std2.mld_stdmeldinggroep_key =
|
||
stdg2.mld_stdmeldinggroep_key
|
||
AND UPPER(SUBSTR (stdg2.mld_stdmeldinggroep_naam,
|
||
1,
|
||
1)) <> 'Q') q,
|
||
-- vind object met kortste doorlooptijd per melding
|
||
(SELECT mld_melding_key,
|
||
MLD.getlowestobjectuitvoer (mld_melding_key)
|
||
ins_deel_key
|
||
FROM mld_melding_object) obj,
|
||
ins_deel d
|
||
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_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 m.m_start = q.mld_melding_key(+)
|
||
AND m.m_start = obj.mld_melding_key(+) -- mld_melding_key VAN MELDING MET LAAGSTE KEY???
|
||
AND obj.ins_deel_key = d.ins_deel_key(+)) g;
|
||
|
||
--
|
||
-- Rapportage gebasseerd op de basis rapportage
|
||
--
|
||
CREATE OR REPLACE VIEW nmms_v_rap_monitoring
|
||
(
|
||
html_melding,
|
||
hide_f_melding_key,
|
||
fclt_f_afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
fclt_f_status,
|
||
fclt_f_afgerond,
|
||
fclt_f_dienst,
|
||
hide_f_stdmelding_key,
|
||
wegingsfactor,
|
||
overlappend,
|
||
hide_f_melding_omschrijving,
|
||
hide_f_melding_opmerking
|
||
)
|
||
AS
|
||
SELECT '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|
||
|| 'mld_key='
|
||
|| melding_key
|
||
|| '")''>'
|
||
|| melding_key
|
||
|| '</a>'
|
||
melding,
|
||
melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
to_char(begin, 'dd-mm-yyyy hh24:mi:ss') begin,
|
||
to_char(gereed, 'dd-mm-yyyy hh24:mi:ss') gereed,
|
||
to_char(thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
status,
|
||
afgerond,
|
||
dienst,
|
||
stdmelding_key,
|
||
wegingsfactor,
|
||
overlappend,
|
||
melding_omschrijving,
|
||
melding_opmerking
|
||
FROM nmms_v_monitoring;
|
||
|
||
--
|
||
-- rapportage view tbv de opdrachtgever. In deze gestylede rapportage kan de opdrachtgever afwijkingen goedkeuren.
|
||
--
|
||
|
||
CREATE OR REPLACE VIEW nmms_v_rap_monitoring_og
|
||
(
|
||
html_melding,
|
||
hide_f_melding_key,
|
||
fclt_f_afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
fclt_f_status,
|
||
fclt_f_afgerond,
|
||
fclt_f_dienst,
|
||
hide_f_stdmelding_key,
|
||
wegingsfactor,
|
||
hide_f_melding_omschrijving,
|
||
hide_f_melding_opmerking
|
||
)
|
||
AS
|
||
SELECT html_melding,
|
||
hide_f_melding_key,
|
||
fclt_f_afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
fclt_f_status,
|
||
fclt_f_afgerond,
|
||
fclt_f_dienst,
|
||
hide_f_stdmelding_key,
|
||
wegingsfactor,
|
||
hide_f_melding_omschrijving,
|
||
hide_f_melding_opmerking
|
||
FROM nmms_v_rap_monitoring
|
||
WHERE fclt_f_afw IS NOT NULL OR fclt_f_afgerond IS NOT NULL;
|
||
|
||
--
|
||
-- view van nog te exporteren meldingen die afwijken of tot een korting leiden.
|
||
--
|
||
CREATE OR REPLACE VIEW nmms_v_monitoring_tot
|
||
(
|
||
melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
wegingsfactor,
|
||
dienst,
|
||
stdmelding_key,
|
||
totaal,
|
||
kinderen
|
||
)
|
||
AS
|
||
SELECT melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
to_number(NULL),
|
||
to_number(NULL),
|
||
to_number(NULL),
|
||
wegingsfactor,
|
||
dienst,
|
||
stdmelding_key,
|
||
COALESCE (kb, kp) * COALESCE (wegingsfactor, 1),
|
||
NULL
|
||
FROM nmms_v_monitoring
|
||
WHERE (kb IS NOT NULL OR kp IS NOT NULL)
|
||
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 nmms_monitoring))
|
||
UNION ALL
|
||
-- herhalingskorting op beschikbaarheid bij thema
|
||
SELECT NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
thema,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
'Kh',
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
250,
|
||
COUNT ( * ) - 4,
|
||
(COUNT ( * ) - 4) * 250,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
(COUNT ( * ) - 4) * 250,
|
||
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
|
||
FROM nmms_v_monitoring
|
||
WHERE typekorting = 'Kb' AND thema IS NOT NULL 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 nmms_monitoring))
|
||
GROUP BY thema, typekorting
|
||
HAVING COUNT (ruimte) > 4
|
||
UNION ALL
|
||
-- herhalingskorting op beschikbaarheid bij ruimte
|
||
SELECT NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
ruimte,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
'Kh',
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
250,
|
||
COUNT ( * ) - 4,
|
||
(COUNT ( * ) - 4) * 250,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
(COUNT ( * ) - 4) * 250,
|
||
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
|
||
FROM nmms_v_monitoring
|
||
WHERE typekorting = 'Kb' AND thema IS NULL 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 nmms_monitoring))
|
||
GROUP BY ruimte, typekorting
|
||
HAVING COUNT (ruimte) > 4
|
||
UNION ALL
|
||
-- Herhalingskorting op prestatiegebrek (stdmelding)
|
||
SELECT NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
(SELECT mld_stdmelding_omschrijving
|
||
FROM mld_stdmelding std
|
||
WHERE std.mld_stdmelding_key = r.stdmelding_key),
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
'Kh',
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
250,
|
||
COUNT ( * ) - 4,
|
||
(COUNT ( * ) - 4) * 250,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
(COUNT ( * ) - 4) * 250,
|
||
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
|
||
FROM nmms_v_monitoring r
|
||
WHERE typekorting = 'Kp' AND indult = 'Nee'
|
||
AND discipline_key <> 354 -- schoonmaak
|
||
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 nmms_monitoring))
|
||
GROUP BY stdmelding_key, typekorting
|
||
HAVING COUNT (stdmelding_key) > 4
|
||
UNION ALL
|
||
-- Herhalingskorting op prestatiegebrek schoonmaak (vakgroep key 354) en ruimte
|
||
SELECT NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
ruimte,
|
||
NULL,
|
||
NULL,
|
||
'Schoonmaak',
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
'Kh',
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
250,
|
||
COUNT ( * ) - 4,
|
||
(COUNT ( * ) - 4) * 250,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
(COUNT ( * ) - 4) * 250,
|
||
LISTAGG(melding_key, ',') WITHIN GROUP (ORDER BY melding_key) AS kinderen
|
||
FROM nmms_v_monitoring r
|
||
WHERE typekorting = 'Kp' AND indult = 'Nee'
|
||
AND discipline_key = 354 -- schoonmaak
|
||
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 nmms_monitoring))
|
||
GROUP BY discipline_key, ruimte, typekorting
|
||
HAVING COUNT (ruimte) > 4;
|
||
|
||
|
||
-- rapportage view van nog te exporteren meldingen die afwijken of tot een korting leiden.
|
||
CREATE OR REPLACE VIEW nmms_v_rap_monitoring_tot
|
||
(
|
||
html_melding,
|
||
hide_f_melding_key,
|
||
fclt_f_afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
kinderen,
|
||
wegingsfactor,
|
||
totaal
|
||
)
|
||
AS
|
||
SELECT '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|
||
|| 'mld_key='
|
||
|| melding_key
|
||
|| '")''>'
|
||
|| melding_key
|
||
|| '</a>'
|
||
melding,
|
||
melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
to_char(begin, 'dd-mm-yyyy hh24:mi:ss') begin,
|
||
to_char(gereed, 'dd-mm-yyyy hh24:mi:ss') gereed,
|
||
to_char(thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
kinderen,
|
||
wegingsfactor,
|
||
totaal
|
||
FROM nmms_v_monitoring_tot;
|
||
|
||
CREATE OR REPLACE VIEW nmms_v_dwh_monitoring
|
||
(
|
||
melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
kostenplaats,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
status,
|
||
dienst,
|
||
stdmelding_key,
|
||
wegingsfactor,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
kostensoort_oms,
|
||
verwerkt,
|
||
export_datum
|
||
)
|
||
AS
|
||
SELECT melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
kostenplaats,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
'Historie',
|
||
dienst,
|
||
stdmelding_key,
|
||
wegingsfactor,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
(SELECT prs_kostensoort_oms
|
||
FROM prs_kostensoort ks, mld_stdmelding std
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.prs_kostensoort_key = ks.prs_kostensoort_key),
|
||
verwerkt,
|
||
export_datum
|
||
FROM nmms_monitoring mo, mld_melding m
|
||
WHERE mo.melding_key = m.mld_melding_key
|
||
AND totaal IS NOT NULL;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE nmms_export_freeze_monitoring (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT melding_key
|
||
FROM nmms_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
|
||
|
||
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 nmms.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 nmms_monitoring)) m,
|
||
nmms_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' ));
|
||
BEGIN
|
||
-- 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, 4);
|
||
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
|
||
THEN
|
||
BEGIN
|
||
mld.setmeldingstatus (rec.mld_melding_key, 6, 4);
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- Voeg de entries uit het monitoringsoverzicht toe aan de freeze tabel.
|
||
INSERT INTO nmms_monitoring (melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
wegingsfactor,
|
||
dienst,
|
||
stdmelding_key,
|
||
totaal,
|
||
kinderen,
|
||
export_datum)
|
||
SELECT melding_key,
|
||
afw,
|
||
q_vervolg,
|
||
indult,
|
||
respijt,
|
||
ruimte,
|
||
object,
|
||
thema,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
uren,
|
||
kb,
|
||
prestatiekorting,
|
||
factor,
|
||
kp,
|
||
herhalingskorting,
|
||
aantal,
|
||
kh,
|
||
wegingsfactor,
|
||
dienst,
|
||
stdmelding_key,
|
||
DECODE(respijt, 'Ja', 0, totaal),
|
||
kinderen,
|
||
SYSDATE
|
||
FROM nmms_v_monitoring_tot;
|
||
|
||
INSERT INTO nmms_monitoring (melding_key, export_datum)
|
||
SELECT mld_melding_key, SYSDATE
|
||
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 nmms_monitoring nm
|
||
WHERE nm.melding_key IS NOT NULL);
|
||
COMMIT;
|
||
|
||
END nmms_export_freeze_monitoring;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW nmms_v_dwh_opdr_materiaal
|
||
(
|
||
opdr_id,
|
||
opdr_key,
|
||
opdr_datum,
|
||
kostenplaats,
|
||
aanvrager,
|
||
aanvrager_key,
|
||
aantal,
|
||
omschrijving,
|
||
prijs,
|
||
totaal_inkoop,
|
||
totaal_verkoop
|
||
)
|
||
AS
|
||
SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
|
||
o.mld_opdr_key,
|
||
TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy'),
|
||
k.prs_kostenplaats_nr,
|
||
pf.prs_perslid_naam_full,
|
||
pf.prs_perslid_key,
|
||
mld_opdr_materiaal_aantal,
|
||
ud.fac_usrdata_omschr,
|
||
mld_opdr_materiaal_prijs,
|
||
mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs,
|
||
ROUND (
|
||
mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs
|
||
* COALESCE (
|
||
(SELECT MAX (u.uplift)
|
||
FROM aaxx_imp_uplift u
|
||
WHERE UPPER (soort_order) =
|
||
UPPER (ot.mld_typeopdr_omschrijving)
|
||
AND UPPER (u.prs_kostensoort_oms) =
|
||
ks.prs_kostensoort_upper
|
||
AND TO_CHAR (o.mld_opdr_datumbegin, 'yyyy-mm') =
|
||
u.jaar || '-' || LTRIM (TO_CHAR (u.maand, '00'))),
|
||
1),
|
||
2)
|
||
prijs_uplift
|
||
FROM mld_opdr_materiaal om,
|
||
fac_usrdata ud,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_kostenplaats k,
|
||
mld_stdmelding std,
|
||
prs_kostensoort ks,
|
||
mld_typeopdr ot
|
||
WHERE om.mld_opdr_key = o.mld_opdr_key
|
||
AND om.fac_usrdata_key = ud.fac_usrdata_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.prs_perslid_key = pf.prs_perslid_key
|
||
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key;
|
||
|
||
|
||
--------------------------------------------------------------
|
||
--
|
||
-- Dashboard views
|
||
--
|
||
--------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW nmms_v_dashboard_korting
|
||
(
|
||
melding,
|
||
omschrijving,
|
||
typekorting,
|
||
marge,
|
||
hide_f_marge,
|
||
korting,
|
||
tht_tijdstip,
|
||
tht
|
||
)
|
||
AS
|
||
SELECT melding_key,
|
||
omschrijving,
|
||
typekorting,
|
||
(SELECT ROUND (
|
||
DECODE (
|
||
typekorting,
|
||
'Kq',
|
||
fac.count_work_days (SYSDATE, mld_melding_einddatum),
|
||
(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 (
|
||
DECODE (
|
||
typekorting,
|
||
'Kq',
|
||
fac.count_work_days (SYSDATE, mld_melding_einddatum),
|
||
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,
|
||
COALESCE (kb,
|
||
kp,
|
||
basiskorting,
|
||
prestatiekorting)
|
||
korting,
|
||
thtijdstip,
|
||
tht
|
||
FROM nmms_v_monitoring mo
|
||
WHERE gereed IS NULL;
|
||
|
||
|
||
--------------------------------------------------------------
|
||
--
|
||
-- Real time monitoring views
|
||
--
|
||
--------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW nmms_v_graph_vakgroep_open
|
||
(
|
||
fclt_xas_,
|
||
fclt_yas_,
|
||
fclt_yas2_,
|
||
sortering,
|
||
fclt_url,
|
||
fclt_3d_discipline_key
|
||
)
|
||
AS
|
||
SELECT ins_srtdiscipline_prefix || ' '
|
||
|| lcl.x ('ins_discipline_omschrijving',
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving),
|
||
COUNT (m.mld_melding_key) - SUM (uitvoeringoptijd) telaat,
|
||
SUM (uitvoeringoptijd) op_tijd,
|
||
-1 * COUNT (m.mld_melding_key) totaal,
|
||
'appl/mld/mld_search.asp?urole=fo'
|
||
|| '&'
|
||
|| 'autosearch=1'
|
||
|| '&'
|
||
|| 'disc_key_str='
|
||
|| d.ins_discipline_key,
|
||
d.ins_discipline_key
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
(SELECT mld_melding_key,
|
||
CASE SIGN (mld_melding_einddatum - SYSDATE)
|
||
WHEN -1 THEN 0
|
||
ELSE 1
|
||
END
|
||
uitvoeringoptijd
|
||
FROM mld_melding m2) uitv
|
||
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_key = uitv.mld_melding_key
|
||
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
|
||
GROUP BY d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving,
|
||
ins_srtdiscipline_prefix
|
||
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
|
||
|
||
|
||
CREATE OR REPLACE VIEW nmms_v_graph_openst_behand
|
||
(
|
||
fclt_xas_,
|
||
fclt_yas_,
|
||
fclt_yas2_op_tijd
|
||
)
|
||
AS
|
||
SELECT COALESCE (behandelaar, 'Onbekend') behandelaar,
|
||
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
|
||
SUM (uitvoeringoptijd) op_tijd
|
||
FROM (SELECT DISTINCT
|
||
m.mld_melding_key mld_key,
|
||
CASE
|
||
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
||
THEN
|
||
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
||
m.mld_melding_datum,
|
||
m.mld_melding_t_uitvoertijd.tijdsduur,
|
||
m.mld_melding_t_uitvoertijd.eenheid)
|
||
- COALESCE (
|
||
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
||
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
||
SYSDATE))
|
||
WHEN -1
|
||
THEN
|
||
0
|
||
ELSE
|
||
1
|
||
END
|
||
ELSE
|
||
1
|
||
END
|
||
uitvoeringoptijd,
|
||
DECODE (
|
||
mld_melding_status,
|
||
7,
|
||
(SELECT MAX (prs_bedrijf_naam)
|
||
FROM mld_opdr o, prs_bedrijf b
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||
AND o.mld_statusopdr_key IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
|
||
4,
|
||
COALESCE (
|
||
(SELECT MAX (prs_bedrijf_naam)
|
||
FROM mld_opdr o, prs_bedrijf b
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||
AND o.mld_statusopdr_key IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames pf
|
||
WHERE pf.prs_perslid_key =
|
||
m.mld_melding_behandelaar_key)),
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames pf
|
||
WHERE pf.prs_perslid_key =
|
||
m.mld_melding_behandelaar_key))
|
||
behandelaar
|
||
FROM mld_melding m,
|
||
mld_discipline md,
|
||
prs_perslid p,
|
||
mld_stdmelding std
|
||
WHERE m.prs_perslid_key = p.prs_perslid_key
|
||
AND md.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND mld_melding_status IN (2, 3, 4, 7, 0)) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
|
||
GROUP BY behandelaar;
|
||
|
||
GRANT SELECT ON nmms_v_dwh_monitoring TO aafm;
|
||
GRANT SELECT ON nmms_v_dwh_opdr_materiaal TO aafm;
|
||
|
||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||
/
|
||
BEGIN fac.registercustversion('NMMS', 4); END;
|
||
/
|
||
COMMIT;
|
||
spool off
|