1662 lines
71 KiB
PL/PgSQL
1662 lines
71 KiB
PL/PgSQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
|
||
DEFINE thisfile = 'HGCU.SQL'
|
||
DEFINE dbuser = 'HGCU'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE PACKAGE hgcu
|
||
AS
|
||
FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION get_index_value (p_date IN DATE)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION klant_melding(p_mld_melding_key IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
FUNCTION check_melding(p_mld_melding_key IN NUMBER)
|
||
RETURN VARCHAR2;
|
||
|
||
PROCEDURE update_melding(p_mld_melding_key IN NUMBER);
|
||
|
||
PROCEDURE mail_gbs_melding(pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER);
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PACKAGE BODY hgcu
|
||
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,
|
||
ins_tab_discipline d1,
|
||
ins_srtdiscipline sd1,
|
||
alg_v_allonroerendgoed aog1,
|
||
mld_melding_object mo1,
|
||
mld_melding m2,
|
||
mld_stdmelding std2,
|
||
alg_v_allonroerendgoed aog2,
|
||
mld_melding_object mo2
|
||
WHERE m1.mld_melding_key = p_melding_key
|
||
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
|
||
AND std1.mld_ins_discipline_key = d1.ins_discipline_key
|
||
AND d1.ins_srtdiscipline_key = sd1.ins_srtdiscipline_key
|
||
AND sd1.ins_srtdiscipline_prefix <> 'Q' -- Meldingen over periodieke meldingen zijn nooit overlappend.
|
||
AND m1.mld_alg_onroerendgoed_keys = aog1.alg_onroerendgoed_keys
|
||
AND m1.mld_melding_key = mo1.mld_melding_key(+)
|
||
AND m1.mld_melding_status <> 1 -- Een melding die afgewezen is wordt niet als overlappende melding gezien.
|
||
AND m2.mld_melding_parentkey IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM hgcu_monitoring
|
||
WHERE melding_key = m2.mld_melding_key)
|
||
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
|
||
AND m2.mld_alg_onroerendgoed_keys = aog2.alg_onroerendgoed_keys
|
||
AND m2.mld_melding_key = mo2.mld_melding_key(+)
|
||
AND m1.mld_stdmelding_key = m2.mld_stdmelding_key
|
||
AND m1.mld_stdmelding_key <> 481 -- definitief herstel meldingen gaan we nooit samennemen
|
||
AND std2.mld_stdmelding_slabewaken = 1 -- alleen meldingen waar een sla voor geldt
|
||
-- Melding is toe te wijzen aan specifieke ruimte en ruimtenummer is gelijk
|
||
AND (
|
||
( std1.alg_onrgoed_niveau = 'R'
|
||
AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys -- op dezelfde ruimte
|
||
-- en bij stdmelding 401 op vaste voorzieningen moet ook het object gelijk zijn.
|
||
AND (m1.mld_stdmelding_key <> 401 OR mo1.ins_deel_key = mo2.ins_deel_key)
|
||
)
|
||
OR
|
||
( std1.alg_onrgoed_niveau = 'V'
|
||
AND COALESCE(aog1.alg_ruimte_key, -1) = COALESCE(aog2.alg_ruimte_key, -1) -- op dezelfde ruimte of allebei geen ruimte
|
||
)
|
||
)
|
||
AND ( m1.mld_melding_datum BETWEEN m2.mld_melding_datum
|
||
AND COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE)
|
||
AND (m1.mld_melding_datum <> m2.mld_melding_datum OR m1.mld_melding_key >= m2.mld_melding_key)) -- check bij meldingen met exact het zelfde begintijdstip.
|
||
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 :=
|
||
hgcu.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_index_value (p_date IN DATE)
|
||
RETURN NUMBER
|
||
AS
|
||
v_result NUMBER;
|
||
BEGIN
|
||
SELECT EXP(SUM(LN(1+fac_usrdata_prijs/100))) -- Dit bepaald het product van de groepering
|
||
INTO v_result
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 1 -- indexatie
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND ADD_MONTHS (fac_usrdata_vervaldatum, -12) < p_date;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
|
||
FUNCTION klant_melding(p_mld_melding_key IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_bedrijf_key NUMBER;
|
||
BEGIN
|
||
SELECT a.prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM mld_melding m, prs_perslid p, prs_v_afdeling a
|
||
WHERE m.prs_perslid_key_voor = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND m.mld_melding_key = p_mld_melding_key;
|
||
|
||
IF v_bedrijf_key IN (81, 85) -- DJI (prod/test)
|
||
THEN
|
||
RETURN 1;
|
||
END IF;
|
||
RETURN 0;
|
||
END;
|
||
|
||
FUNCTION check_melding(p_mld_melding_key IN NUMBER)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_check NUMBER(1);
|
||
v_onrgoed_niveau MLD_STDMELDING.ALG_ONRGOED_NIVEAU%TYPE;
|
||
v_melding_status MLD_MELDING.MLD_MELDING_STATUS%TYPE;
|
||
v_kenmerk_key MLD_KENMERK.MLD_KENMERK_KEY%TYPE;
|
||
v_ruimte_key ALG_RUIMTE.ALG_RUIMTE_KEY%TYPE;
|
||
|
||
BEGIN
|
||
SELECT k.mld_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM mld_melding m, mld_kenmerk k
|
||
WHERE mld_srtkenmerk_key = 41
|
||
AND m.mld_stdmelding_key = k.mld_stdmelding_key
|
||
AND m.mld_melding_key = p_mld_melding_key;
|
||
|
||
SELECT std.alg_onrgoed_niveau,
|
||
FLX.getflex ('MLD', v_kenmerk_key, m.mld_melding_key),
|
||
m.mld_melding_status,
|
||
aog.alg_ruimte_key
|
||
INTO v_onrgoed_niveau, v_check, v_melding_status, v_ruimte_key
|
||
FROM mld_melding m,
|
||
alg_v_allonroerendgoed aog,
|
||
mld_stdmelding std
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
|
||
AND m.mld_melding_key = p_mld_melding_key;
|
||
|
||
IF v_onrgoed_niveau = 'V' AND v_ruimte_key IS NULL AND COALESCE(v_check,0) <> 1 AND v_melding_status = 2 -- Nieuw
|
||
THEN
|
||
RETURN('Bevestig in de melding dat de storing betrekking heeft op meerdere ruimten.');
|
||
ELSE
|
||
RETURN('OK');
|
||
END IF;
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Er is geen kenmerk voor deze stdmelding gedefinieerd. Dat houdt in dat de melding alleen
|
||
-- op ruimte ingelegd kan worden.
|
||
RETURN('OK');
|
||
END;
|
||
|
||
PROCEDURE update_melding(p_mld_melding_key IN NUMBER)
|
||
AS
|
||
v_eenheid VARCHAR(2);
|
||
v_tijdsduur NUMBER;
|
||
v_start_key NUMBER;
|
||
v_gemeld DATE;
|
||
v_afgemeld DATE;
|
||
v_tijdsduur_start NUMBER;
|
||
BEGIN
|
||
SELECT m.mld_melding_t_uitvoertijd.eenheid,
|
||
m.mld_melding_t_uitvoertijd.tijdsduur,
|
||
m.mld_melding_start_key
|
||
INTO v_eenheid,
|
||
v_tijdsduur,
|
||
v_start_key
|
||
FROM mld_melding m
|
||
WHERE mld_melding_key = p_mld_melding_key;
|
||
|
||
IF v_start_key IS NOT NULL
|
||
THEN
|
||
|
||
SELECT mld_melding_datum, fac.gettrackingdate ('MLDAFM', m.mld_melding_key), m.mld_melding_t_uitvoertijd.tijdsduur
|
||
INTO v_gemeld, v_afgemeld, v_tijdsduur_start
|
||
FROM mld_melding m
|
||
WHERE mld_melding_key = v_start_key;
|
||
|
||
IF v_eenheid = 'D' AND v_tijdsduur = 14
|
||
THEN
|
||
-- Storing definitief herstel
|
||
IF v_afgemeld IS NOT NULL
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_datum = v_afgemeld
|
||
WHERE mld_melding_key = p_mld_melding_key;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_einddatum = mld_melding_einddatum_std
|
||
WHERE mld_melding_key = p_mld_melding_key;
|
||
END IF;
|
||
ELSIF v_tijdsduur_start = 1
|
||
THEN
|
||
-- Storing kritiek naar vitaal/niet vitaal
|
||
UPDATE mld_melding
|
||
SET mld_melding_datum = v_gemeld
|
||
WHERE mld_melding_key = p_mld_melding_key;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_einddatum = mld_melding_einddatum_std
|
||
WHERE mld_melding_key = p_mld_melding_key;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
PROCEDURE mail_gbs_melding (pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER)
|
||
AS
|
||
v_sender prs_perslid.prs_perslid_key%TYPE;
|
||
v_melding_key mld_melding.mld_melding_key%TYPE;
|
||
v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE;
|
||
v_errormsg fac_result.fac_result_waarde%TYPE;
|
||
v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
|
||
v_onderwerp mld_melding.mld_melding_onderwerp%TYPE;
|
||
v_omschrijving mld_melding.mld_melding_omschrijving%TYPE;
|
||
v_melding_status mld_melding.mld_melding_status%TYPE;
|
||
v_srtruimte_key alg_srtruimte.alg_srtruimte_key%TYPE;
|
||
v_ruimte_nr alg_ruimte.alg_ruimte_nr%TYPE;
|
||
v_std_ruimte_nr alg_ruimte.alg_ruimte_nr%TYPE;
|
||
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
||
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
|
||
v_usrdata_key fac_usrdata.fac_usrdata_key%TYPE;
|
||
v_tijdstip VARCHAR2 (100);
|
||
v_datum VARCHAR2 (100);
|
||
v_date DATE;
|
||
v_gbs_melding VARCHAR2 (1000);
|
||
v_meldingstekst VARCHAR2 (1000);
|
||
v_cabinet VARCHAR2 (1000);
|
||
v_count NUMBER;
|
||
v_error NUMBER;
|
||
v_newline VARCHAR2 (4000);
|
||
v_tag VARCHAR2 (4000);
|
||
v_value VARCHAR2 (4000);
|
||
v_from VARCHAR2 (4000);
|
||
v_body VARCHAR2 (4000);
|
||
v_state VARCHAR2 (4000);
|
||
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
v_volgnr NUMBER;
|
||
BEGIN
|
||
-- Verwijder de Bounce Address Tag Validation
|
||
IF pfrom LIKE 'prvs=%'
|
||
THEN
|
||
v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1);
|
||
ELSE
|
||
v_from := pfrom;
|
||
END IF;
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_sender
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_GBS_KOPPELING';
|
||
|
||
IF psubject = 'Watchdog Alarm'
|
||
THEN
|
||
v_errorhint := SUBSTR(pbody, 1, 500);
|
||
v_errormsg := 'Watchdog Alarm ontvangen ';
|
||
SELECT fac_usrdata_key
|
||
INTO v_usrdata_key
|
||
FROM fac_usrdata ud
|
||
WHERE UPPER(pbody) like '%' || fac_usrdata_upper || '%'
|
||
AND ud.fac_usrtab_key = 61
|
||
AND ud.fac_usrdata_vervaldatum IS NULL
|
||
AND ud.fac_usrdata_verwijder IS NULL;
|
||
|
||
UPDATE fac_usrdata
|
||
SET fac_usrdata_vervaldatum = SYSDATE
|
||
WHERE fac_usrdata_key = v_usrdata_key;
|
||
ELSE
|
||
UPDATE fac_usrdata
|
||
SET fac_usrdata_vervaldatum = SYSDATE
|
||
WHERE fac_usrdata_key = 61; -- Laatst ontvangen bericht
|
||
|
||
-- filter nu de essentiele velden uit de mailbody
|
||
-- vervang cr door lf
|
||
-- TO DO: MOETEN WE EEN FALLBACK STDMELDING KEY DEFINIEREN??????????????????????
|
||
v_stdmelding_key := fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
|
||
|
||
v_body := pbody;
|
||
v_body := REPLACE (v_body, CHR (13), CHR (10));
|
||
-- verwijder dubbele lf's
|
||
v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10));
|
||
v_omschrijving := v_body;
|
||
v_onderwerp := psubject;
|
||
|
||
v_errorhint := 'Bepaal volgnummer';
|
||
|
||
SELECT MAX (fac_rapport_volgnr)
|
||
INTO v_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'GBS_MELDING';
|
||
|
||
v_errorhint := 'Bewaar mail ' || v_volgnr;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES ('GBS_MELDING',
|
||
v_volgnr + 1,
|
||
SUBSTR (pfrom || CHR (10) || psubject || CHR (10) || v_omschrijving, 1, 2000));
|
||
|
||
WHILE LENGTH (v_body) <> 0
|
||
LOOP
|
||
fac.imp_getfield (v_body, CHR (10), v_newline);
|
||
fac.imp_getfield (v_newline, ':', v_tag);
|
||
v_value := v_newline;
|
||
v_tag := UPPER (TRIM (v_tag));
|
||
v_errormsg := '(0x1452)';
|
||
|
||
CASE v_tag
|
||
WHEN 'ERRORNAME'
|
||
THEN
|
||
v_onderwerp := SUBSTR (v_value, 1, 60);
|
||
v_meldingstekst := TRIM (v_value);
|
||
v_errormsg := '(0x1453)';
|
||
WHEN 'STATE'
|
||
THEN
|
||
v_state := TRIM (v_value);
|
||
WHEN 'ALARMDATE'
|
||
THEN
|
||
v_datum := TRIM (v_value);
|
||
WHEN 'ALARMTIME'
|
||
THEN
|
||
v_tijdstip := TRIM (v_value);
|
||
WHEN 'CABINETNAME'
|
||
THEN
|
||
v_cabinet := TRIM (v_value);
|
||
ELSE
|
||
NULL;
|
||
END CASE;
|
||
END LOOP;
|
||
|
||
|
||
|
||
BEGIN
|
||
SELECT fac_usrdata_prijs, fac_usrdata_omschr
|
||
INTO v_stdmelding_key, v_ruimte_nr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_upper = TRIM (UPPER (v_meldingstekst))
|
||
AND fac_usrtab_key = 81; -- Hier staat de verwijzing naar de Stdmeldingen
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_error := 1;
|
||
v_errormsg :=
|
||
'Standaard melding kan niet gevonden worden: '
|
||
|| v_meldingstekst;
|
||
END;
|
||
|
||
BEGIN
|
||
SELECT alg_ruimte_key,
|
||
alg_locatie_key,
|
||
alg_srtruimte_key
|
||
INTO v_ruimte_key, v_locatie_key, v_srtruimte_key
|
||
FROM alg_v_ruimte_gegevens
|
||
WHERE UPPER (alg_ruimte_nr) = v_ruimte_nr;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_error := 1;
|
||
v_errormsg :=
|
||
'Ruimte kan niet gevonden worden: ' || v_ruimte_nr;
|
||
END;
|
||
|
||
v_date :=
|
||
fac.safe_to_date (v_datum || ' ' || v_tijdstip, 'yyyy-mm-dd hh24:mi.ss');
|
||
|
||
IF v_date IS NULL
|
||
THEN
|
||
v_date := SYSDATE;
|
||
END IF;
|
||
|
||
-- nu gaan we de hersteltijd bepalen
|
||
v_errormsg := '(0x147) hersteltijd bepalen uit MELDINGSTEKST ' || v_meldingstekst;
|
||
|
||
BEGIN
|
||
-- vind de uitvoertijd bij de ruimte specifieke sla
|
||
SELECT mld_stdmsrtruimte_t_uitvtijd
|
||
INTO v_uitvoertijd
|
||
FROM mld_stdmsrtruimte
|
||
WHERE alg_srtruimte_key = v_srtruimte_key
|
||
AND mld_stdmelding_key = v_stdmelding_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- vind de uitvoertijd bij de stdmelding
|
||
SELECT mld_stdmelding_t_uitvoertijd
|
||
INTO v_uitvoertijd
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = v_stdmelding_key;
|
||
END;
|
||
|
||
-- suggested extensions:
|
||
-- check for MLDUSE-write autorisations
|
||
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
||
v_errormsg := '(0x148)';
|
||
|
||
SELECT MIN (m.mld_melding_key), COUNT (m.mld_melding_key)
|
||
INTO v_melding_key, v_count
|
||
FROM mld_melding m, mld_kenmerkmelding km
|
||
WHERE mld_stdmelding_key = v_stdmelding_key
|
||
AND mld_alg_onroerendgoed_keys = v_ruimte_key
|
||
AND mld_melding_status IN (0, 2, 3, 4, 7, 99) -- alles behalve 1=Afgewezen, 5= afgemeld, 6= historie
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND km.mld_kenmerk_key = 201
|
||
AND km.mld_kenmerkmelding_waarde =
|
||
v_cabinet
|
||
|| ';'
|
||
|| v_meldingstekst;
|
||
|
||
IF UPPER (v_state) = 'ALARM ON'
|
||
THEN
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := 'Melding kan niet aangemaakt worden (0x1481)';
|
||
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_melding_datum,
|
||
mld_melding_onderwerp,
|
||
mld_melding_omschrijving,
|
||
mld_melding_status,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_stdmelding_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
mld_melding_spoed,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
v_date,
|
||
v_onderwerp,
|
||
v_omschrijving,
|
||
NULL,
|
||
v_uitvoertijd,
|
||
v_stdmelding_key,
|
||
v_sender,
|
||
v_sender,
|
||
NULL,
|
||
3,
|
||
v_locatie_key,
|
||
v_ruimte_key)
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
v_errormsg := '(0x165)';
|
||
mld.setmeldingstatus (v_melding_key, 2, v_sender);
|
||
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key,
|
||
mld_kenmerk_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (v_melding_key,
|
||
201,
|
||
v_cabinet
|
||
|| ';'
|
||
|| v_meldingstekst);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'maillog',
|
||
'Geregistreerd onder melding ' || v_melding_key);
|
||
ELSE
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'maillog',
|
||
'Melding bestaat al ' || v_melding_key);
|
||
|
||
v_error := 1;
|
||
v_errormsg := 'Melding bestaat al ' || v_melding_key;
|
||
END IF;
|
||
ELSE
|
||
IF v_count = 1
|
||
THEN
|
||
v_errormsg := '(0x1482)';
|
||
|
||
SELECT mld_melding_status
|
||
INTO v_melding_status
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = v_melding_key;
|
||
|
||
-- Als status is nieuw of te accepteren dan eerst op geaccepteerd zetten.
|
||
IF v_melding_status = 2 OR v_melding_status = 3
|
||
THEN
|
||
-- melding op geaccepteerd zetten.
|
||
mld.setmeldingstatus (v_melding_key, 4, v_sender);
|
||
END IF;
|
||
|
||
-- nu de status op afgemeld zetten.
|
||
mld.setmeldingstatus (v_melding_key, 5, v_sender);
|
||
|
||
fac.backtrackaction ('MLDAFM',
|
||
v_melding_key,
|
||
v_sender,
|
||
SYSDATE); -- Aangepast in #86889. Dit was eerst v_date, maar daarmee werd in de tracking eerst afgemeld en pas dan MLDNEW/MLDACP
|
||
|
||
-- Vul het kenmerk Bedrijf (malus) met de waarde van Homij uit de eigen tabel
|
||
mld.upsertmeldingkenmerk (61, v_melding_key, 182);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'maillog',
|
||
'Melding '
|
||
|| v_melding_key
|
||
|| ' is afgemeld, aantal gevonden '
|
||
|| v_count
|
||
|| ' Details: '
|
||
|| v_cabinet
|
||
|| ';'
|
||
|| v_meldingstekst);
|
||
ELSE
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'maillog',
|
||
'Melding niet uniek gevonden, aantal gevonden '
|
||
|| v_count
|
||
|| ' Details: '
|
||
|| v_cabinet
|
||
|| ';'
|
||
|| v_meldingstekst);
|
||
|
||
v_error := 1;
|
||
v_errormsg :=
|
||
'Melding niet uniek gevonden, aantal gevonden '
|
||
|| v_count
|
||
|| ' Details: '
|
||
|| v_cabinet
|
||
|| ';'
|
||
|| v_meldingstekst;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog ('GBS_MELDING',
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Fout bij verwerken GBS bericht: ' || psubject);
|
||
END;
|
||
|
||
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 hgcu_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,
|
||
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,
|
||
afw_classificatie,
|
||
afw_stdmelding,
|
||
prs_bedrijf_key,
|
||
mld_melding_start_key,
|
||
bedrijf_malus
|
||
)
|
||
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
|
||
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.afw_classificatie, -- classificitie is aangepast in de melding
|
||
m.afw_stdmelding, -- stdmelding is aangepast in de melding
|
||
m.prs_bedrijf_key, -- bedrijf key van de melder
|
||
m.mld_melding_start_key,
|
||
m.bedrijf_malus
|
||
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.afw_classificatie) afw_classificatie,
|
||
MAX (m.afw_stdmelding) afw_stdmelding,
|
||
MAX (m.prs_bedrijf_key) prs_bedrijf_key,
|
||
MAX (m.mld_melding_start_key) mld_melding_start_key,
|
||
MAX (m.bedrijf_malus) bedrijf_malus
|
||
FROM (SELECT hgcu.get_first_melding (m.mld_melding_key, 1) m_start,
|
||
m.mld_melding_key,
|
||
DECODE (m.mld_melding_status, 4, 1, 0) open, -- open = Geaccepteerd???
|
||
m.mld_melding_datum,
|
||
COALESCE(fac.gettrackingdate ('MLDAFM', m.mld_melding_key), TO_DATE('20991231', 'YYYYMMDD')) gereed,
|
||
m.mld_melding_t_uitvoertijd,
|
||
m.mld_melding_t_respijt,
|
||
m.mld_melding_indult,
|
||
m.mld_melding_einddatum_std,
|
||
m.mld_melding_einddatum,
|
||
a.prs_bedrijf_key,
|
||
(SELECT DISTINCT 'M' FROM fac_tracking t WHERE fac_tracking_oms LIKE '%Melding:%' AND m.mld_melding_key = t.fac_tracking_refkey) afw_stdmelding,
|
||
(SELECT fac_usrdata_code FROM fac_usrdata ud WHERE FAC.Safe_to_number(FLX.getflex ('MLD', 21, m.mld_melding_key)) = fac_usrdata_key) afw_classificatie,
|
||
hgcu.klant_melding(m.mld_melding_key) klant_melding,
|
||
m.mld_melding_start_key,
|
||
bm.bedrijf_malus
|
||
FROM mld_melding m, mld_stdmelding std, prs_perslid p, prs_afdeling a,
|
||
(SELECT km.mld_melding_key, ud.fac_usrdata_omschr bedrijf_malus
|
||
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 1 -- bedrijf_malus
|
||
AND FAC.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) bm
|
||
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
|
||
AND m.mld_melding_key = bm.mld_melding_key(+)
|
||
-- meldingen die al geexporteerd zijn (en in de tabel hgcu_monitoring staan) komen niet meer in deze view
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM hgcu_monitoring
|
||
WHERE melding_key = m.mld_melding_key)
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_stdmelding_slabewaken = 1 -- alleen meldingen waarvoor een we de SLA bewaken 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 hgcu_monitoring komen niet meer voor in deze view.
|
||
--
|
||
CREATE OR REPLACE VIEW hgcu_v_monitoring
|
||
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
|
||
|| afw_stdmelding -- standaardmelding is aangepast.
|
||
|| DECODE (afw_classificatie, 'NV', 'c', 'V', 'C', '')
|
||
afw, -- de classificatie (vital / niet vitaal) is aangepast bij de melding.
|
||
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja')
|
||
indult,
|
||
DECODE (g.respijt.tijdsduur, 0, NULL, TO_CHAR (ROUND (g.respijt.tijdsduur, 2)))
|
||
respijt,
|
||
alg_locatie_code
|
||
locatie,
|
||
alg_gebouw_upper
|
||
gebouw,
|
||
alg_verdieping_volgnr
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
mld_stdmelding_omschrijving
|
||
omschrijving,
|
||
t_van
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking
|
||
WHERE fac_tracking_refkey = m_start --mld_melding_key
|
||
AND fac_srtnotificatie_key = 56)
|
||
verwerkt,
|
||
eenheid,
|
||
ROUND (g.tht.tijdsduur, 2)
|
||
tht,
|
||
ROUND (g.actual.tijdsduur, 2)
|
||
wht,
|
||
regime,
|
||
mld_stdmeldinggroep_naam
|
||
groep,
|
||
prefix,
|
||
-- prefix
|
||
-- || DECODE (prefix, 'S', DECODE (alg_onrgoed_niveau, 'R', '(R)', 'V', DECODE (ruimte, '-', '(V)', '(VR)')))
|
||
DECODE(g.thtsla.tijdsduur, 0.08333, 'P', 5, 'P', 1, 'K', 4, 'V', 48, 'NV', 14, 'DH', 0, 'PM', 90, 'PM')
|
||
typekorting,
|
||
bk
|
||
basiskorting,
|
||
vk
|
||
variabelekorting,
|
||
DECODE (telaat, 1, ROUND (g.uitloop.tijdsduur, 2))
|
||
wht_tht,
|
||
DECODE (telaat, 1, DECODE (g.bk, NULL, 0, g.bk + CEIL (g.uitloop.tijdsduur / DECODE(mld_stdmelding_key, 501, 0.08333, 1)) * g.vk)) -- herhalingstijd is altijd een uur/dag tenzij melding bereibaarheid meldpunt.
|
||
totaal,
|
||
ROUND(DECODE (telaat, 1, DECODE (g.bk, NULL, 0, g.bk + CEIL (g.uitloop.tijdsduur / DECODE(mld_stdmelding_key, 501, 0.08333, 1)) * g.vk)) * HGCU.get_index_value(t_van),2) -- herhalingstijd is altijd een uur/dag tenzij melding bereibaarheid meldpunt..
|
||
totaal_index,
|
||
(SELECT mld_statuses_omschrijving
|
||
FROM mld_statuses
|
||
WHERE mld_statuses_key = mld_melding_status)
|
||
status,
|
||
DECODE (mld_melding_afgerond, 1, 'x')
|
||
afgerond,
|
||
(SELECT prs_dienst_omschrijving
|
||
FROM prs_dienst
|
||
WHERE prs_dienst_key = g.prs_dienst_key)
|
||
dienst,
|
||
mld_stdmelding_key
|
||
stdmelding_key,
|
||
mld_ins_discipline_key
|
||
discipline_key,
|
||
overlappend,
|
||
mld_melding_omschrijving
|
||
melding_omschrijving,
|
||
mld_melding_opmerking
|
||
melding_opmerking,
|
||
klant_melding,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = g.prs_bedrijf_key)
|
||
bedrijf_naam,
|
||
bedrijf_malus,
|
||
FLX.getflex('MLD', 81, m_start) m_rest,
|
||
(SELECT FLX.getflex('MLD', k.mld_kenmerk_key, m_start)
|
||
FROM mld_kenmerk k
|
||
WHERE k.mld_srtkenmerk_key = 121 -- verrekenbaar
|
||
AND k.mld_stdmelding_key = g.ins_srtdiscipline_key
|
||
AND k.mld_kenmerk_verwijder IS NULL) m_verreken,
|
||
DECODE (antedateren + g.respijt.tijdsduur + mld_melding_indult + mld_melding_afgerond, 0, 0, 1) opdrachtgever
|
||
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,
|
||
std.mld_stdmelding_malusbasis,
|
||
m.t_van,
|
||
m.gereed,
|
||
m.mld_melding_einddatum_std
|
||
thtijdstip,
|
||
stdg.mld_stdmeldinggroep_naam,
|
||
24
|
||
regime,
|
||
sd.ins_srtdiscipline_prefix
|
||
prefix,
|
||
sd.ins_srtdiscipline_key,
|
||
rg.alg_locatie_code,
|
||
rg.alg_gebouw_upper,
|
||
rg.alg_verdieping_volgnr,
|
||
rg.alg_ruimte_nr || '-' || rg.alg_ruimte_omschrijving
|
||
ruimte,
|
||
CASE
|
||
WHEN std.mld_stdmelding_key = 501 THEN 500 -- Bereikbaarheid meldpunt
|
||
WHEN std.mld_stdmelding_key = 521 THEN 500 -- Nakomen afspraken
|
||
WHEN std.mld_stdmelding_key = 522 THEN 500 -- Management systeem
|
||
WHEN sd.ins_srtdiscipline_prefix = 'S' THEN DECODE(m.min_t_sla.tijdsduur, 1, 1000, 4, 500, 48, 500, 14, 0)
|
||
-- WHEN sd.ins_srtdiscipline_prefix = 'S' AND klant_melding = 1 THEN DECODE(m.min_t_sla.tijdsduur, 1, 1000, 4, 500, 48, 500, 14, 0)
|
||
-- WHEN sd.ins_srtdiscipline_prefix = 'S' AND klant_melding = 0 THEN DECODE(m.min_t_sla.tijdsduur, 1, 1000, 4, NULL, 48, NULL, 14, 0)
|
||
WHEN sd.ins_srtdiscipline_prefix = 'Q' THEN std.mld_stdmelding_malusbasis
|
||
ELSE
|
||
NULL
|
||
END
|
||
bk,
|
||
CASE
|
||
WHEN std.mld_stdmelding_key = 501 THEN 50 -- Bereikbaarheid meldpunt
|
||
WHEN std.mld_stdmelding_key = 521 THEN 100 -- Nakomen afspraken
|
||
WHEN std.mld_stdmelding_key = 522 THEN 50 -- Management systeem
|
||
WHEN sd.ins_srtdiscipline_prefix = 'S' THEN DECODE(m.min_t_sla.tijdsduur, 1, 100, 4, 75, 48, 50, 14, 200)
|
||
-- WHEN sd.ins_srtdiscipline_prefix = 'S' AND klant_melding = 1 THEN DECODE(m.min_t_sla.tijdsduur, 1, 100, 4, 75, 48, 50, 14, 200)
|
||
-- WHEN sd.ins_srtdiscipline_prefix = 'S' AND klant_melding = 0 THEN DECODE(m.min_t_sla.tijdsduur, 1, 100, 4, NULL, 48, NULL, 14, 200)
|
||
WHEN sd.ins_srtdiscipline_prefix = 'Q' THEN COALESCE(std.mld_stdmelding_malus,0)
|
||
ELSE
|
||
NULL
|
||
END
|
||
vk,
|
||
d.ins_deel_opmerking
|
||
object,
|
||
CASE WHEN klant_melding = 1
|
||
OR krit_parent_key IS NOT NULL
|
||
OR m.min_t_sla.tijdsduur = 1
|
||
OR m.min_t_sla.tijdsduur = 14 -- Werkelijk herstel wordt door een OST medewerker ingevoerd.
|
||
OR m.min_t_sla.tijdsduur = 24
|
||
OR std.mld_ins_discipline_key = 461 -- Proces storingen
|
||
OR sd.ins_srtdiscipline_prefix = 'Q'
|
||
THEN 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 (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
|
||
-- 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,
|
||
afw_classificatie,
|
||
afw_stdmelding,
|
||
std.alg_onrgoed_niveau,
|
||
prs_bedrijf_key,
|
||
bedrijf_malus
|
||
FROM hgcu_v_startmelding_geg m,
|
||
mld_stdmelding std,
|
||
mld_stdmeldinggroep stdg,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_srtruimte sr,
|
||
-- Zijn er vervolgmeldingen op een kritische melding
|
||
(SELECT DISTINCT vv.mld_melding_start_key krit_parent_key FROM mld_melding mkr, mld_melding vv WHERE mkr.mld_melding_key = vv.mld_melding_start_key AND mkr.mld_melding_t_uitvoertijd.tijdsduur = 1) nkr,
|
||
-- 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_melding_start_key = nkr.krit_parent_key(+)
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
|
||
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
|
||
-- AND klant_melding = 1
|
||
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;
|
||
|
||
|
||
-- Het rapport monitoring totaal bevat alle kortingen van de afgelopen maand als deze nog niet
|
||
-- bevroren zijn. Als dit wel zo is dan bevat het rapport de gegevens van de huidige maand.
|
||
CREATE OR REPLACE VIEW hgcu_v_monitoring_tot
|
||
AS
|
||
SELECT mld_melding_key,
|
||
afw,
|
||
indult,
|
||
respijt,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
eenheid,
|
||
tht,
|
||
wht,
|
||
wht_tht,
|
||
regime,
|
||
groep,
|
||
prefix,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
dienst,
|
||
stdmelding_key,
|
||
DECODE (indult, 'Ja', 0, totaal) totaal,
|
||
DECODE (indult, 'Ja', 0, totaal_index) totaal_index,
|
||
SUBSTR (overlappend, 1, 100) overlappend,
|
||
bedrijf_naam,
|
||
klant_melding,
|
||
bedrijf_malus,
|
||
m_rest,
|
||
m_verreken
|
||
FROM hgcu_v_monitoring
|
||
WHERE (totaal IS NOT NULL OR afw IS NOT NULL)
|
||
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
|
||
AND (gereed < TRUNC (SYSDATE, 'Q') -- Vorige kwartaal afgemeld als we al over de kwartaalgrens zitten.
|
||
OR TRUNC (SYSDATE, 'Q') = -- Huidige kwartaal. Dan is de huidige maand gelijk aan het kwartaal van de laatste exportdatum
|
||
(SELECT TRUNC (MAX (export_datum), 'Q') FROM hgcu_monitoring));
|
||
|
||
-- Melding die een freeze datum hebben van 11 juni bevatten alle records van afgelopen jaar. Vandaar dat deze
|
||
-- in periode 2024Q4 vallen
|
||
CREATE OR REPLACE VIEW hgcu_v_monitoring_history
|
||
AS
|
||
SELECT periode,
|
||
export_datum,
|
||
melding_key,
|
||
afw,
|
||
indult,
|
||
respijt,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
omschrijving,
|
||
melder,
|
||
begin,
|
||
gereed,
|
||
afgerond,
|
||
verwerkt,
|
||
thtijdstip,
|
||
eenheid,
|
||
tht,
|
||
wht,
|
||
wht_tht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
totaal,
|
||
totaal_index,
|
||
totaal_z_respijt,
|
||
dienst,
|
||
stdmelding_key,
|
||
wegingsfactor,
|
||
overlappend,
|
||
gekoppeld,
|
||
kinderen,
|
||
klant_melding,
|
||
prs_bedrijf_naam,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
bedrijf_malus,
|
||
prefix
|
||
FROM hgcu_monitoring mo
|
||
WHERE begin IS NOT NULL;
|
||
|
||
CREATE OR REPLACE PROCEDURE hgcu_select_freeze_monitoring (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT mld_melding_key
|
||
FROM hgcu_v_monitoring
|
||
WHERE status = 'Afgemeld'
|
||
AND gereed < TRUNC (SYSDATE, 'Q')
|
||
--AND gereed < TO_DATE('20250401', 'YYYYMMDD') ******
|
||
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 hgcu.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, 'Q')
|
||
-- AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TO_DATE('20250401', 'yyyymmdd') ******
|
||
AND m.mld_melding_key NOT IN
|
||
(SELECT melding_key FROM hgcu_monitoring WHERE melding_key IS NOT NULL)) m,
|
||
hgcu_v_monitoring mo
|
||
WHERE m_start <> m.mld_melding_key AND m_start = mo.mld_melding_key
|
||
AND ( (status = 'Afgemeld' AND afw IS NULL) -- startmelding mag niet hangen op goedkeuring
|
||
OR (status = 'Historie'));
|
||
|
||
CURSOR c3
|
||
IS
|
||
SELECT * FROM hgcu_v_monitoring_tot
|
||
-- WHERE gereed < TO_DATE('20250401', 'YYYYMMDD'); -- *******
|
||
WHERE gereed < TRUNC (SYSDATE, 'Q');
|
||
|
||
|
||
v_exportdate DATE;
|
||
v_lastexport DATE;
|
||
v_kortingen_totaal NUMBER(11,2);
|
||
v_status NUMBER;
|
||
BEGIN
|
||
v_exportdate := SYSDATE;
|
||
--v_exportdate := SYSDATE - 20; -- *******
|
||
|
||
-- Als ik deze maand al een freeze heb uitgevoerd dan mag ik dat niet nog een keer doen.
|
||
SELECT MAX(export_datum)
|
||
INTO v_lastexport
|
||
FROM hgcu_monitoring;
|
||
|
||
DELETE imp_log WHERE COALESCE(imp_log_applicatie, 'QueQeLeQue') = p_applname;
|
||
|
||
DELETE fac_rapport WHERE fac_rapport_node = 'FREEZE';
|
||
|
||
IF TRUNC (COALESCE(v_lastexport, SYSDATE-100), 'Q') <> TRUNC(v_exportdate, 'Q')
|
||
THEN
|
||
-- Zet de meldingen die geen afwijking kennen en die niet op status afgerond staan naar status verwerkt
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
BEGIN
|
||
fac.writelog (p_applname, 'I', 'Melding wordt op verwerkt gezet: ' || rec.mld_melding_key , '');
|
||
|
||
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
|
||
|
||
SELECT mld_melding_status
|
||
INTO v_status
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
fac.writelog (p_applname, 'I', 'Melding is op verwerkt gezet: ' || rec.mld_melding_key , v_status);
|
||
END;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- zet slave meldingen van samenvallende meldingen ook op verwerkt
|
||
FOR rec IN c2
|
||
LOOP
|
||
BEGIN
|
||
IF rec.mld_melding_status = 6 OR rec.mld_melding_status = 5 -- verwerkt of afgemeld
|
||
THEN
|
||
BEGIN
|
||
fac.writelog (p_applname, 'I', 'Slave melding wordt op verwerkt gezet: ' || rec.mld_melding_key , '');
|
||
|
||
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
|
||
|
||
SELECT mld_melding_status
|
||
INTO v_status
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
fac.writelog (p_applname, 'I', 'Slave melding is op verwerkt gezet: ' || rec.mld_melding_key , v_status);
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- Voeg de entries uit het monitoringsoverzicht toe aan de freeze tabel.
|
||
FOR rec IN c3
|
||
LOOP
|
||
BEGIN
|
||
BEGIN
|
||
INSERT INTO hgcu_monitoring (melding_key,
|
||
afw,
|
||
indult,
|
||
respijt,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
melder,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
afgerond,
|
||
thtijdstip,
|
||
verwerkt,
|
||
eenheid,
|
||
tht,
|
||
wht,
|
||
wht_tht,
|
||
regime,
|
||
groep,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
dienst,
|
||
stdmelding_key,
|
||
totaal,
|
||
totaal_index,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
overlappend,
|
||
prs_bedrijf_naam,
|
||
bedrijf_malus,
|
||
klant_melding,
|
||
export_datum,
|
||
prefix,
|
||
periode)
|
||
VALUES (rec.mld_melding_key,
|
||
rec.afw,
|
||
rec.indult,
|
||
rec.respijt,
|
||
rec.locatie,
|
||
rec.gebouw,
|
||
rec.verdieping,
|
||
rec.ruimte,
|
||
rec.object,
|
||
(SELECT pf.prs_perslid_naam_full
|
||
FROM mld_melding m, prs_v_perslid_fullnames_all pf
|
||
WHERE rec.mld_melding_key = m.mld_melding_key AND m.prs_perslid_key = pf.prs_perslid_key),
|
||
rec.omschrijving,
|
||
rec.begin,
|
||
rec.gereed,
|
||
fac.gettrackingdate ('MLDAFR', rec.mld_melding_key),
|
||
rec.thtijdstip,
|
||
rec.verwerkt,
|
||
rec.eenheid,
|
||
rec.tht,
|
||
rec.wht,
|
||
rec.wht_tht,
|
||
rec.regime,
|
||
rec.groep,
|
||
rec.typekorting,
|
||
rec.basiskorting,
|
||
rec.variabelekorting,
|
||
rec.dienst,
|
||
rec.stdmelding_key,
|
||
DECODE (rec.indult, 'Ja', 0, rec.totaal),
|
||
DECODE (rec.indult, 'Ja', 0, rec.totaal_index),
|
||
rec.melding_omschrijving,
|
||
rec.melding_opmerking,
|
||
rec.overlappend,
|
||
rec.bedrijf_naam,
|
||
rec.bedrijf_malus,
|
||
rec.klant_melding,
|
||
v_exportdate,
|
||
rec.prefix,
|
||
REPLACE(TO_CHAR(TRUNC (SYSDATE, 'Q') -1, 'YYYY-Q'), '-', 'Q'));
|
||
END;
|
||
END;
|
||
END LOOP;
|
||
|
||
INSERT INTO hgcu_monitoring (melding_key, indult, export_datum, prefix, periode, klant_melding, tht, wht, bedrijf_malus )
|
||
SELECT mld_melding_key,
|
||
DECODE(mld_melding_indult, 1, 'Ja', 'Nee'),
|
||
v_exportdate,
|
||
sd.ins_srtdiscipline_prefix prefix,
|
||
REPLACE(TO_CHAR(TRUNC (SYSDATE, 'Q') -1, 'YYYY-Q'), '-', 'Q') periode,
|
||
hgcu.klant_melding (m.mld_melding_key),
|
||
m.mld_melding_t_uitvoertijd.tijdsduur tht,
|
||
(mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd!
|
||
m.mld_melding_datum,
|
||
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
|
||
m.mld_stdmelding_key,
|
||
m.mld_melding_spoed,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
NULL)).tijdsduur wht,
|
||
(SELECT ud.fac_usrdata_omschr bedrijf_malus
|
||
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 1 -- bedrijf_malus
|
||
AND FAC.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
|
||
AND km.mld_melding_key = m.mld_melding_key) bedrijf_malus
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.mld_melding_status = 6 -- Historie
|
||
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TRUNC (SYSDATE, 'Q')
|
||
-- AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < TO_DATE('20250401', 'YYYYMMDD') *******
|
||
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
|
||
FROM hgcu_monitoring nm
|
||
WHERE nm.melding_key IS NOT NULL);
|
||
|
||
COMMIT;
|
||
|
||
SELECT SUM(totaal)
|
||
INTO v_kortingen_totaal
|
||
FROM hgcu_monitoring
|
||
WHERE export_datum = v_exportdate;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
|
||
VALUES ('FREEZE', 'Kortingen totaal: ' || v_kortingen_totaal, 1);
|
||
|
||
ELSE
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr)
|
||
VALUES ('FREEZE', 'Kortingen zijn al bevroren deze maand op ' || TO_CHAR(v_lastexport, 'dd-mm-yyyy hh24:mi:ss'), 1);
|
||
END IF;
|
||
END hgcu_select_freeze_monitoring;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE hgcu_export_freeze_monitoring (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
DELETE fac_rapport WHERE fac_rapport_node = 'FREEZE';
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW hgcu_v_export_freeze_monitoring
|
||
( result,
|
||
result_order)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'FREEZE';
|
||
|
||
-- View om het aantal percentage meldingen op tijd opgelost t.o.v. het totaal aantal meldingen te bepalen.
|
||
-- Het afmeldtijdstip van de melding bepaald de datum.
|
||
-- Meldingen met indult worden niet meegenomen.
|
||
-- Meldingen niet ingelegd door de klant worden niet meegenomen.
|
||
-- Alleen storingen komen voor in de lijst.
|
||
|
||
CREATE OR REPLACE VIEW hgcu_v_rap_sla_perc_optijd
|
||
AS
|
||
SELECT bedrijf_malus, ROUND (100 * SUM (optijd) / SUM (aantal), 1) perc
|
||
FROM (SELECT bedrijf_malus, DECODE (SIGN (tht - wht), -1, 0, 1) optijd, 1 aantal
|
||
FROM T_hgcu_v_monitoring_intern
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
-- AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
GROUP BY bedrijf_malus
|
||
UNION ALL
|
||
SELECT 'Totaal' bedrijf_malus, ROUND (100 * SUM (optijd) / SUM (aantal), 1) perc
|
||
FROM (SELECT bedrijf_malus, DECODE (SIGN (tht - wht), -1, 0, 1) optijd, 1 aantal
|
||
FROM T_hgcu_v_monitoring_intern
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
-- AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
|
||
CREATE OR REPLACE VIEW hgcu_v_rap_kpi_sla_perc
|
||
AS
|
||
SELECT jaar,
|
||
teller,
|
||
noemer,
|
||
100 * (teller / DECODE (noemer, 0, 0.000001, noemer)) percentage
|
||
FROM (SELECT TO_CHAR (SYSDATE, 'YYYY') jaar,
|
||
(SELECT COUNT (*)
|
||
FROM hgcu_v_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
+ (SELECT COUNT (*)
|
||
FROM hgcu_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S') teller,
|
||
(SELECT COUNT (*)
|
||
FROM hgcu_v_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
+ (SELECT COUNT (*)
|
||
FROM hgcu_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (SYSDATE, 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND klant_melding = 1
|
||
AND prefix = 'S') noemer
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT TO_CHAR (ADD_MONTHS (SYSDATE, -12), 'YYYY') jaar,
|
||
(SELECT COUNT (*)
|
||
FROM hgcu_v_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
+ (SELECT COUNT (*)
|
||
FROM hgcu_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND tht - wht >= 0
|
||
AND klant_melding = 1
|
||
AND prefix = 'S') teller,
|
||
(SELECT COUNT (*)
|
||
FROM hgcu_v_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND klant_melding = 1
|
||
AND prefix = 'S')
|
||
+ (SELECT COUNT (*)
|
||
FROM hgcu_monitoring
|
||
WHERE TRUNC (gereed, 'YYYY') = TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY')
|
||
AND indult = 'Nee'
|
||
AND klant_melding = 1
|
||
AND prefix = 'S') noemer
|
||
FROM DUAL);
|
||
|
||
-- view om de instelling op de meldingen te bevriezen.
|
||
CREATE OR REPLACE VIEW hgcu_v_mld_transport
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_omschrijving
|
||
vakgroeptype,
|
||
sd.ins_srtdiscipline_prefix
|
||
prefix,
|
||
sd.ins_srtdiscipline_alg
|
||
plaatsgegevens,
|
||
sd.ins_srtdiscipline_ins
|
||
objectgegevens,
|
||
sd.ins_srtdiscipline_bes
|
||
bestelgegevens,
|
||
d.ins_discipline_omschrijving
|
||
vakgroep,
|
||
std.mld_stdmelding_omschrijving
|
||
standaardmelding,
|
||
stdg.mld_stdmeldinggroep_naam
|
||
groep,
|
||
k.prs_kostensoort_oms
|
||
kostensoort,
|
||
std.mld_stdmelding_t_accepttijd.tijdsduur
|
||
acceptatietijd,
|
||
std.mld_stdmelding_t_uitvoertijd.tijdsduur
|
||
uitvoertijd,
|
||
std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur
|
||
uitvoertijd_kritiek,
|
||
std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur
|
||
uitvoertijd_hoog,
|
||
std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur
|
||
uitvoertijd_laag,
|
||
std.mld_stdmelding_directklaar
|
||
directklaar,
|
||
di.prs_dienst_omschrijving
|
||
dienst,
|
||
std.mld_stdmelding_notfrontend
|
||
not_frontend,
|
||
std.alg_onrgoed_niveau
|
||
alg_niveau,
|
||
t.mld_typeopdr_omschrijving
|
||
opdrachttype,
|
||
std.mld_stdmelding_hint
|
||
hint,
|
||
std.mld_stdmelding_kopieerbaar
|
||
kopieerbaar,
|
||
std.mld_stdmelding_afmeldtext
|
||
tekst_bij_afmelden,
|
||
DECODE (std.mld_stdmelding_doublecheck,
|
||
0, 'N',
|
||
1, 'I',
|
||
2, 'A',
|
||
3, 'B')
|
||
dubbele_meldingen, --0:niet, 1:FE/FO, 2:BO, 3:FE/FO/BO
|
||
std.mld_stdmelding_slabewaken
|
||
sla_bewaken,
|
||
d.ins_discipline_image
|
||
vakgroep_image,
|
||
std.mld_stdmelding_image
|
||
melding_image,
|
||
DECODE(std.mld_stdmelding_regime,1,'kantoortijden',2,'openingstijden',3,'24x7')
|
||
melding_regime,
|
||
std.mld_stdmelding_afhankelijk
|
||
melding_afhankelijk
|
||
FROM ins_srtdiscipline sd,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
prs_kostensoort k,
|
||
mld_stdmeldinggroep stdg,
|
||
prs_dienst di,
|
||
mld_typeopdr t
|
||
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
|
||
AND d.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND std.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key(+)
|
||
AND std.prs_dienst_key = di.prs_dienst_key(+)
|
||
AND std.mld_typeopdr_key = t.mld_typeopdr_key(+);
|
||
|
||
-- Maandelijkse rapportage op het resultaat van periodieke metingen.
|
||
CREATE OR REPLACE VIEW hgcu_v_rap_result_pm
|
||
AS
|
||
SELECT TRUNC (ins_deelsrtcontrole_datum) datum, sc.ins_srtcontrole_omschrijving, cm.ins_controlemode_oms
|
||
FROM ins_deelsrtcontrole dsc, ins_srtcontrole sc, ins_controlemode cm
|
||
WHERE dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND dsc.ins_controlemode_key = cm.ins_controlemode_key;
|
||
|
||
-- Interne rapportage die via de tabelizer getoond wordt
|
||
CREATE OR REPLACE VIEW hgcu_v_monitoring_intern
|
||
AS
|
||
SELECT mld_melding_key melding_key,
|
||
afw,
|
||
indult,
|
||
respijt,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
eenheid,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
prefix,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
wht_tht,
|
||
totaal,
|
||
totaal_index,
|
||
status,
|
||
afgerond,
|
||
dienst,
|
||
stdmelding_key,
|
||
discipline_key,
|
||
overlappend,
|
||
TO_CHAR (melding_omschrijving) melding_omschrijving,
|
||
melding_opmerking,
|
||
klant_melding,
|
||
bedrijf_naam,
|
||
bedrijf_malus,
|
||
m_rest,
|
||
m_verreken,
|
||
opdrachtgever
|
||
FROM hgcu_v_monitoring
|
||
UNION ALL
|
||
SELECT melding_key,
|
||
afw,
|
||
indult,
|
||
respijt,
|
||
locatie,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
object,
|
||
omschrijving,
|
||
begin,
|
||
gereed,
|
||
thtijdstip,
|
||
verwerkt,
|
||
eenheid,
|
||
tht,
|
||
wht,
|
||
regime,
|
||
groep,
|
||
prefix,
|
||
typekorting,
|
||
basiskorting,
|
||
variabelekorting,
|
||
wht_tht,
|
||
totaal,
|
||
totaal_index,
|
||
NULL status,
|
||
NULL afgerond,
|
||
dienst,
|
||
stdmelding_key,
|
||
NULL discipline_key,
|
||
overlappend,
|
||
melding_omschrijving,
|
||
melding_opmerking,
|
||
klant_melding,
|
||
NULL bedrijf_naam,
|
||
bedrijf_malus,
|
||
NULL m_rest,
|
||
NULL m_verreken,
|
||
NULL opdrachtgever
|
||
FROM hgcu_monitoring;
|
||
|
||
CREATE OR REPLACE VIEW hgcu_v_rap_gbs_storing_def
|
||
AS
|
||
SELECT fac_usrdata_code gbs_melding,
|
||
sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
||
d.ins_discipline_omschrijving vakgroep,
|
||
mld_stdmelding_omschrijving melding,
|
||
alg_ruimte_nr ruimte
|
||
FROM fac_usrdata ud,
|
||
mld_stdmelding std,
|
||
mld_discipline d,
|
||
ins_srtdiscipline sd,
|
||
alg_v_aanwezigruimte r
|
||
WHERE ud.fac_usrdata_verwijder IS NULL
|
||
AND ud.fac_usrtab_key = 81
|
||
AND TRUNC (ud.fac_usrdata_prijs) = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND ud.fac_usrdata_omschr = r.alg_ruimte_nr(+);
|
||
|
||
-- Rapport om de sychronisatie status van de koppeling op de portal te tonen.
|
||
CREATE OR REPLACE VIEW hgcu_v_rap_gbs_status_info
|
||
(
|
||
item_key,
|
||
item,
|
||
datum
|
||
)
|
||
AS
|
||
SELECT fac_usrdata_key, fac_usrdata_code, fac_usrdata_vervaldatum
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 61;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE hgcu_daily
|
||
AUTHID CURRENT_USER -- ivm create table rechten voor tabelizer
|
||
AS
|
||
BEGIN
|
||
-- Zware rapportages laden via tabelizer
|
||
fac.tabelize_usrraps();
|
||
END;
|
||
/
|
||
|
||
------ 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
|