Files
Customer/NMMS/nmms.sql
Jos Migo 70f016371c NMMS#65267 -- Opstellen nieuwe tekening buitengebied - thema
svn path=/Customer/trunk/; revision=49905
2021-02-18 09:27:38 +00:00

1881 lines
64 KiB
PL/PgSQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'NMMS.SQL'
DEFINE dbuser = '^NMMS'
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 ------
-- exact verkoop
CREATE OR REPLACE VIEW nmms_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE nmms_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE nmms_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
END;
/
-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW nmms_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE nmms_select_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE nmms_export_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
-- exact projecturen (XML)
CREATE OR REPLACE VIEW nmms_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE nmms_select_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
END;
/
-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE nmms_export_verwerk_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
END;
/
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 prs_kenmerklink_waarde = 161 -- MA
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;
aaxx_daily_task (p_applname, p_applrun);
END;
/
-- Selecteer oa. de MIN(begintijd) en MAX(eindtijd) van overlappende meldingen:
-- op dezelfde ruimte voor dezelfde dienst
-- met hetzelfde regime in dezelfde eenheid
-- Hierin ook opgenomen of men een fictieve gereeddatum heeft meegegeven (ticket 62463)
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,
fictief,
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,
nmm_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
m.fictief,
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.nmm_melding, -- melding gemeld door medewerker NMM
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 (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,
MAX (m.nmm_melding) nmm_melding,
MAX (m.prs_bedrijf_key) prs_bedrijf_key,
MAX (m.fictief) fictief
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,
COALESCE(fac.gettrackingdate ('MLDAFM', m.mld_melding_key), f.gereed_fictief, 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,
DECODE(a.prs_bedrijf_key, 1542, 1, 0) nmm_melding,
CASE WHEN f.mld_melding_key IS NULL THEN 0 ELSE 1 END fictief
FROM mld_melding m, mld_stdmelding std, prs_perslid p, prs_afdeling a,
(SELECT v.mld_melding_key, vv.gereed_fictief, SYSDATE
FROM (SELECT m.mld_melding_key
FROM mld_melding m, mld_kenmerkmelding km
WHERE m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = 321 -- Vinkbox aan
AND m.mld_melding_status NOT IN (1, 5, 6) -- Lopende melding
) v,
(SELECT m.mld_melding_key,
TO_DATE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 322) -- Datum
|| ' ' ||
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 323), -- Tijdstip
'DD-MM-YYYY HH24:MI') gereed_fictief
FROM mld_melding m, mld_kenmerkmelding km
WHERE m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = 321 -- Vinkbox aan
AND m.mld_melding_status NOT IN (1, 5, 6) -- Lopende melding
) vv
WHERE v.mld_melding_key = vv.mld_melding_key AND vv.gereed_fictief > SYSDATE
) f
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 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
AND m.mld_melding_key = f.mld_melding_key (+)
) 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.
--
CREATE OR REPLACE VIEW nmms_v_monitoring
(
melding_key,
afw,
q_vervolg,
indult,
respijt,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
fictief,
thtijdstip,
verwerkt,
eenheid,
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,
nmm_melding,
bedrijf_naam
)
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)))
respijt,
prs_kostenplaats_nr,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
ruimte,
object,
thema,
mld_stdmelding_omschrijving,
t_van,
gereed,
fictief,
DECODE (kortingtype,
'Q', (SELECT mld_melding_einddatum FROM mld_melding mtht WHERE mtht.mld_melding_key = m_start),
thtijdstip) thtijdstip,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = m_start --mld_melding_key
AND fac_srtnotificatie_key = 36)
verwerkt,
eenheid,
DECODE (kortingtype,
'Q', to_number(NULL),
ROUND (g.tht.tijdsduur, 2))
tht,
DECODE (kortingtype,
'Q', to_number(NULL),
ROUND (g.actual.tijdsduur, 2))
wht,
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',
ROUND (g.uitloop.tijdsduur, 2),
'S',
ROUND (g.uitloop.tijdsduur, 2)))
uren, -- uitloop in beschikbaarheid is altijd 50 euro per uur.
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', (g.uitloop.tijdsduur / g.thtsla.tijdsduur) + 1))
factor,
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,
nmm_melding,
(SELECT prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = g.prs_bedrijf_key) prs_bedrijf_naam
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.fictief,
m.mld_melding_einddatum_std thtijdstip,
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 (stdg.mld_stdmeldinggroep_naam, 1, 1)),
'Q',
DECODE ( (SELECT COUNT (km.mld_kenmerkmelding_key)
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 261 -- TEST resultaat herkeuring
AND km.mld_melding_key = m.m_start
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = 525), -- TEST Niet succesvol
1, 1, -- Te laat als een niet succesvol kenmerk bestaat
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.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 (
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,
nmm_melding,
prs_bedrijf_key
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 (q.vervolg IS NOT NULL OR UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1)) = 'Q' OR nmm_melding = 1)
-- storingen op vervolgmeldingen en inspecties (Q) worden altijd getoond
-- anders alleen storingen ingelegd door NMM medewerkers
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(+)
AND std.mld_stdmelding_slabewaken = 1) 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,
fictief,
thtijdstip,
eenheid,
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,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
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,
CASE WHEN fictief = 1 THEN 'fictief' ELSE '' END fictief,
to_char(thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
afgerond,
dienst,
stdmelding_key,
wegingsfactor,
(COALESCE(kb,0) * COALESCE(wegingsfactor,1)) + COALESCE(kp,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(nmm_melding, 1, 'x', ''),
bedrijf_naam,
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,
eenheid,
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,
eenheid,
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,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
wegingsfactor,
dienst,
stdmelding_key,
totaal,
overlappend,
kinderen,
bedrijf_naam,
nmm_melding
)
AS
SELECT melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
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,0) * COALESCE(wegingsfactor,1)) + COALESCE(kp,0),
SUBSTR(overlappend,1,100),
NULL,
bedrijf_naam,
nmm_melding
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,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
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,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
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,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
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,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
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,
eenheid,
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,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
kinderen,
wegingsfactor,
totaal
FROM nmms_v_monitoring_tot;
-- rapport om historische informatie te tonen
CREATE OR REPLACE VIEW nmms_v_monitoring_history
( fclt_d_export_datum,
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
fclt_f_dienst,
hide_f_stdmelding_key,
wegingsfactor,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
)
AS
SELECT TO_CHAR (export_datum, 'dd-mm-yyyy') export_datum,
'<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,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
dienst,
stdmelding_key,
wegingsfactor,
(COALESCE(kb,0) * COALESCE(wegingsfactor,1)) + COALESCE(kp,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(nmm_melding, 1, 'x', ''),
prs_bedrijf_naam,
mld_melding_omschrijving,
mld_melding_opmerking
FROM nmms_monitoring mo, mld_melding m
WHERE mo.melding_key = m.mld_melding_key
AND begin IS NOT NULL;
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,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
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,
(COALESCE(kb,0) * COALESCE(wegingsfactor,1)) + COALESCE(kp,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(nmm_melding, 1, 'x', ''),
prs_bedrijf_naam,
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 WHERE melding_key IS NOT NULL)) 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'));
CURSOR c3
IS
SELECT * FROM nmms_v_monitoring_tot;
BEGIN
-- Gaan we vandaag de freeze starten? Dit mag alleen op de derde werkdag van de maand om 17:00 uur.
IF fac.count_Work_Days(trunc(sysdate, 'MON'), sysdate) = 2
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, 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 OR rec.mld_melding_status = 5 -- verwerkt of afgemeld
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.
FOR rec IN c3
LOOP
BEGIN
BEGIN
INSERT INTO nmms_monitoring (melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
wegingsfactor,
dienst,
stdmelding_key,
totaal,
overlappend,
kinderen,
prs_bedrijf_naam,
nmm_melding,
export_datum)
VALUES (rec.melding_key,
rec.afw,
rec.q_vervolg,
rec.indult,
rec.respijt,
rec.ruimte,
rec.object,
rec.thema,
rec.omschrijving,
rec.begin,
rec.gereed,
rec.thtijdstip,
rec.verwerkt,
rec.eenheid,
rec.tht,
rec.wht,
rec.regime,
rec.groep,
rec.typekorting,
rec.basiskorting,
rec.variabelekorting,
rec.uren,
rec.kb,
rec.prestatiekorting,
rec.factor,
rec.kp,
rec.herhalingskorting,
rec.aantal,
rec.kh,
rec.wegingsfactor,
rec.dienst,
rec.stdmelding_key,
DECODE (rec.indult, 'Ja', 0, rec.totaal),
rec.overlappend,
rec.kinderen,
rec.bedrijf_naam,
rec.nmm_melding,
SYSDATE);
END;
END;
END LOOP;
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 IF;
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 * COALESCE(wegingsfactor,1),
kp,
basiskorting,
prestatiekorting)
korting,
thtijdstip,
tht
FROM nmms_v_monitoring mo
WHERE gereed IS NULL
AND nmm_melding = 1 AND mo.fictief = 0;
--------------------------------------------------------------
--
-- 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;
--------------------------------------------------------------
--
-- Graphics
--
--------------------------------------------------------------
CREATE OR REPLACE VIEW nmms_v_thema_legenda_bt
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT alg_ruimte_key,
sr.alg_srtruimte_omschrijving,
sr.alg_srtruimte_key waarde_key
FROM alg_v_aanwezigruimte r, alg_onrgoedkenmerk k, alg_srtruimte sr
WHERE r.alg_ruimte_key = k.alg_onrgoed_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND k.alg_onrgoed_niveau = 'R'
AND k.alg_kenmerk_key = 1100;
GRANT SELECT ON nmms_v_dwh_monitoring TO aafm;
GRANT SELECT ON nmms_v_dwh_opdr_materiaal TO aafm;
------ 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