763 lines
33 KiB
PL/PgSQL
763 lines
33 KiB
PL/PgSQL
--
|
||
-- $Id$
|
||
--
|
||
-- Vul de historische tabel met monitorings aan met detail informatie voor meldingen
|
||
-- die niet tot een korting geleid hebben maar wel een afwijking hadden.
|
||
|
||
DEFINE thisfile = 'PCHA#52977.sql'
|
||
DEFINE dbuser = 'PCHA'
|
||
|
||
|
||
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 FUNCTION pcha_get_first_melding (p_melding_key IN NUMBER, p_export IN DATE,
|
||
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 EXISTS (SELECT 1
|
||
FROM pchx_monitoring
|
||
WHERE melding_key = m2.mld_melding_key
|
||
AND export_datum = p_export)
|
||
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 EXISTS (SELECT 1
|
||
FROM pchx_monitoring
|
||
WHERE melding_key = m2.mld_melding_key
|
||
AND export_datum = p_export)
|
||
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 :=
|
||
PCHA_get_first_melding (rec.mld_melding_key, p_export, 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;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW PCHX_V_STARTMELDING_GEG1
|
||
(
|
||
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 PCHA_get_first_melding (m.mld_melding_key, export_datum, 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,
|
||
pchx_monitoring mo
|
||
WHERE m.mld_melding_key = mo.melding_key
|
||
AND m.mld_melding_parentkey IS NULL
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND m.mld_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_MONITORING1
|
||
(
|
||
MELDING_KEY,
|
||
AFW,
|
||
INDULT,
|
||
RESPIJT,
|
||
KOSTENPLAATS,
|
||
LOCATIE,
|
||
GEBOUW,
|
||
VERDIEPING,
|
||
RUIMTE,
|
||
OMSCHRIJVING,
|
||
BEGIN,
|
||
GEREED,
|
||
THTIJDSTIP,
|
||
VERWERKT,
|
||
EENHEID,
|
||
THT,
|
||
WHT,
|
||
REGIME,
|
||
GROEP,
|
||
BASISKORTING,
|
||
VARIABELEKORTING,
|
||
WHT_THT,
|
||
TOTAAL,
|
||
TOTAAL_Z_RESPIJT,
|
||
TOTAAL_INDEX,
|
||
STATUS,
|
||
AFGEROND,
|
||
DIENST,
|
||
STDMELDING_KEY,
|
||
DISCIPLINE_KEY,
|
||
OVERLAPPEND,
|
||
GEKOPPELD,
|
||
WEGINGSFACTOR,
|
||
MELDING_OMSCHRIJVING,
|
||
MELDING_OPMERKING,
|
||
KLANT_MELDING,
|
||
BEDRIJF_NAAM,
|
||
OG,
|
||
BEDRIJF_MALUS,
|
||
PREFIX
|
||
)
|
||
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_z_respijt,
|
||
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_z_respijt.tijdsduur
|
||
/ DECODE (g.thtsla.tijdsduur,
|
||
0, 0.1,
|
||
g.thtsla.tijdsduur),
|
||
DECODE (pchx.get_user, 'PCHW', 1, 0))
|
||
* vk)), -- Alleen als dagen x24!
|
||
NULL)
|
||
totaal_z_respijt,
|
||
DECODE (
|
||
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
|
||
GROUP BY m2.mld_melding_parentkey)
|
||
gekoppeld,
|
||
wegingsfactor,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
klant_melding,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = g.prs_bedrijf_key)
|
||
prs_bedrijf_naam,
|
||
DECODE (
|
||
antedateren
|
||
+ g.respijt.tijdsduur
|
||
+ mld_melding_indult
|
||
+ mld_melding_afgerond,
|
||
0, 0,
|
||
1),
|
||
PCHX.get_kenmerk ('MLD',
|
||
DECODE (PCHX.get_user, 'PCHA', 61, 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,
|
||
SIGN (m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur) -- positief, dan te laat
|
||
telaat_z_respijt,
|
||
m.max_t_actual
|
||
actual, -- MAX actuele doorlooptijd
|
||
m.min_t_sla
|
||
thtsla, -- MIN SLA
|
||
m.min_t_sla.eenheid
|
||
eenheid,
|
||
m.max_t_respijt
|
||
respijt, -- MAX respijt
|
||
mld_t_uitvoertijd (
|
||
m.min_t_sla.tijdsduur + m.max_t_respijt.tijdsduur,
|
||
m.min_t_sla.eenheid)
|
||
tht, -- MIN SLA + MAX respijt
|
||
mld_t_uitvoertijd (
|
||
m.max_t_actual.tijdsduur
|
||
- m.min_t_sla.tijdsduur
|
||
- m.max_t_respijt.tijdsduur,
|
||
m.max_t_actual.eenheid)
|
||
uitloop, -- hoeveel te laat
|
||
mld_t_uitvoertijd (
|
||
m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur,
|
||
m.max_t_actual.eenheid)
|
||
uitloop_z_respijt, -- hoeveel te laat
|
||
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_geg1 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;
|
||
|
||
|
||
|
||
DECLARE
|
||
CURSOR c
|
||
IS
|
||
SELECT mo.melding_key,
|
||
mo.afw,
|
||
mo.indult,
|
||
mo.respijt,
|
||
mo.locatie,
|
||
mo.gebouw,
|
||
mo.verdieping,
|
||
mo.ruimte,
|
||
mo.omschrijving,
|
||
mo.begin,
|
||
mo.gereed,
|
||
mo.thtijdstip,
|
||
mo.verwerkt,
|
||
mo.eenheid,
|
||
mo.tht,
|
||
mo.wht,
|
||
mo.wht_tht,
|
||
mo.regime,
|
||
mo.groep,
|
||
-- mo.typekorting ,
|
||
mo.basiskorting,
|
||
mo.variabelekorting,
|
||
mo.wegingsfactor,
|
||
mo.dienst,
|
||
mo.stdmelding_key,
|
||
mo.totaal,
|
||
mo.totaal_index,
|
||
mo.overlappend,
|
||
mo.gekoppeld,
|
||
mo.bedrijf_naam ,
|
||
mo.klant_melding ,
|
||
mo.melding_omschrijving ,
|
||
mo.melding_opmerking,
|
||
mo.bedrijf_malus ,
|
||
mo.prefix
|
||
FROM pchx_v_monitoring1 mo, pchx_monitoring m
|
||
WHERE mo.melding_key = m.melding_key
|
||
AND m.omschrijving IS NULL
|
||
AND mo.afw IS NOT NULL;
|
||
v_count NUMBER;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM pchx_monitoring mo
|
||
WHERE ',' || mo.overlappend || ',' like '%,' || rec.melding_key || ',%'
|
||
AND mo.melding_key <> rec.melding_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
UPDATE pchx_monitoring
|
||
SET afw = rec.afw,
|
||
indult = rec.indult,
|
||
respijt = rec.respijt,
|
||
locatie = rec.locatie,
|
||
gebouw = rec.gebouw,
|
||
verdieping = rec.verdieping,
|
||
ruimte = rec.ruimte,
|
||
omschrijving = rec.omschrijving,
|
||
begin = rec.begin,
|
||
gereed = rec.gereed,
|
||
thtijdstip = rec.thtijdstip,
|
||
verwerkt = rec.verwerkt,
|
||
eenheid = rec.eenheid,
|
||
tht = rec.tht,
|
||
wht = rec.wht,
|
||
wht_tht = rec.wht_tht,
|
||
regime = rec.regime,
|
||
groep = rec.groep,
|
||
typekorting = 'Cor',
|
||
basiskorting = rec.basiskorting,
|
||
variabelekorting = rec.variabelekorting,
|
||
wegingsfactor = rec.wegingsfactor,
|
||
dienst = rec.dienst,
|
||
stdmelding_key = rec.stdmelding_key,
|
||
totaal = 0,
|
||
totaal_index = 0,
|
||
overlappend = rec.overlappend,
|
||
gekoppeld = rec.gekoppeld,
|
||
-- kinderen = rec.kinderen,
|
||
prs_bedrijf_naam = rec.bedrijf_naam,
|
||
klant_melding = rec.klant_melding,
|
||
melding_omschrijving = rec.melding_omschrijving,
|
||
melding_opmerking = rec.melding_opmerking,
|
||
bedrijf_malus = rec.bedrijf_malus,
|
||
prefix = rec.prefix
|
||
WHERE melding_key = rec.melding_key;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
drop view PCHX_V_MONITORING1;
|
||
|
||
drop view PCHX_V_STARTMELDING_GEG1;
|
||
|
||
drop function pcha_get_first_melding;
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile |