Files
Customer/BVB1/bvb1.sql
Arthur Egberink b268a5f472 BVB1#87767 Implementatie koppeling Rentman
svn path=/Customer/trunk/; revision=70170
2025-09-01 17:24:48 +00:00

1043 lines
48 KiB
MySQL

--
-- $Id$
--
DEFINE thisfile = 'bvb1.SQL'
DEFINE dbuser = 'BVB1'
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 BVB1
AS
PROCEDURE melding_after_save (p_melding_key IN NUMBER);
PROCEDURE processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE RM_update_folders;
PROCEDURE RM_update_equipment;
END;
/
CREATE OR REPLACE PACKAGE BODY BVB1
AS
PROCEDURE melding_after_save (p_melding_key IN NUMBER)
AS
CURSOR c IS
SELECT mld_melding_key
FROM mld_melding m, mld_stdmelding std, mld_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key IN (2,3) -- Storingen en interne actielijst
AND BITAND(std.mld_stdmelding_planbaar,4) = 4
AND m.mld_melding_status = 4
AND mld_melding_actiedatum IS NULL AND 1=0;
v_tijdsduur NUMBER;
v_eenheid VARCHAR2(1);
v_actiedatum DATE;
v_status MLD_MELDING.MLD_MELDING_STATUS%TYPE;
BEGIN
-- meldingen die binnen een dag afgehandeld moeten worden krijgen
-- direct een actiedatum. Hierdoor komen ze in het planbord te staan.
SELECT std.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur,
std.mld_stdmelding_t_uitvoertijd.eenheid eenheid,
m.mld_melding_actiedatum,
m.mld_melding_status
INTO v_tijdsduur, v_eenheid, v_actiedatum, v_status
FROM mld_stdmelding std, mld_melding m
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_key = p_melding_key;
IF v_actiedatum IS NULL
AND ( v_eenheid = 'D' AND v_tijdsduur = 1
OR v_eenheid = 'U' AND v_tijdsduur <= 8)
THEN
UPDATE mld_melding
SET mld_melding_actiedatum = mld_melding_datum
WHERE mld_melding_key = p_melding_key;
END IF;
-- Als de melding geaccepteerd wordt en de actiedatum is nog leeg dan gaan we de actiedatum
-- vullen met de dag van vandaag zodat de melding ook op de kalender (rapportage) verschijnt.
FOR rec IN c
LOOP
UPDATE mld_melding
SET mld_melding_actiedatum = SYSDATE
WHERE mld_melding_key = rec.mld_melding_key;
END LOOP;
END;
PROCEDURE processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER
)
AS
sender prs_perslid.prs_perslid_key%TYPE;
newkey mld_melding.mld_melding_key%TYPE;
defaultstdmelding fac_setting.fac_setting_default%TYPE;
kkey_att mld_kenmerk.mld_kenmerk_key%TYPE;
kkey_mail mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
BEGIN
BEGIN
-- Valideer de sender in pfrom: kennen we deze?
SELECT prs_perslid_key
INTO sender
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND UPPER (prs_perslid_email) = UPPER (pfrom);
EXCEPTION WHEN NO_DATA_FOUND
THEN
sender := 4801;
END;
CASE
WHEN UPPER (pto) LIKE 'HUURDER@%'
THEN
defaultstdmelding := 1861;
kkey_att := 1;
kkey_mail := 4661;
WHEN UPPER (pto) LIKE 'OBJECTREGISTRATIE@%'
THEN
defaultstdmelding := 1981;
kkey_att := 1;
kkey_mail := 4661;
ELSE
NULL;
END CASE;
IF defaultstdmelding IS NOT NULL
THEN
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
-- append (as a note?) to an existing melding if #key is found in the subject
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
mld_melding_email_ext,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
SUBSTR (psubject, 1, 80),
SUBSTR (REPLACE (SUBSTR (pbody, 1, 4000),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
NULL,
defaultstdmelding,
pfrom,
sender,
sender,
NULL,
3)
RETURNING mld_melding_key
INTO newkey;
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_att || CHR(92));
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkorgmailpath',
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));
mld.setmeldingstatus (newkey, 2, sender);
END;
END IF;
IF errormsg IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid, 'errormsg', errormsg);
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'PROCESSEMAIL',
'W',
'Mail kon niet verwerkt worden afzender: '
|| pfrom
|| '['
|| errormsg
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder');
END;
PROCEDURE RM_update_folders
AS
-- We nemen alleen groepen over die ook objectsoorten bevatten.
CURSOR c_srtgroep
IS
SELECT *
FROM bvb1_v_folder_structuur fs
WHERE fs.niveau = 1
AND EXISTS
(SELECT 1
FROM bvb1_v_folder_structuur fs2
WHERE fs2.niveau = 2 AND fs2.parent1 = fs.id);
CURSOR c_srtdeel (c_srtgroep_id VARCHAR2)
IS
SELECT *
FROM bvb1_v_folder_structuur
WHERE parent1 = c_srtgroep_id AND name IS NOT NULL;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_srtgroep_key INS_SRTGROEP.INS_SRTGROEP_KEY%TYPE;
v_srtdeel_key INS_SRTDEEL.INS_SRTDEEL_KEY%TYPE;
v_aanduiding VARCHAR2 (200);
BEGIN
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_discipline
WHERE ins_discipline_omschrijving = 'AV';
FOR rec IN c_srtgroep
LOOP
BEGIN
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL AND ins_srtgroep_externnr = rec.id;
UPDATE ins_srtgroep
SET ins_srtgroep_omschrijving = rec.name || ' (' || rec.id || ')'
WHERE ins_srtgroep_key = v_srtgroep_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtgroep (ins_discipline_key, ins_srtgroep_omschrijving, ins_srtgroep_externnr)
VALUES (v_discipline_key, rec.name || ' (' || rec.id || ')', rec.id)
RETURNING ins_srtgroep_key
INTO v_srtgroep_key;
END;
FOR rec_d IN c_srtdeel (rec.id)
LOOP
BEGIN
DBMS_OUTPUT.put_line (rec_d.id || '- ' || rec_d.name);
SELECT ins_srtdeel_key
INTO v_srtdeel_key
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL AND ins_srtdeel_externnr = rec_d.id;
UPDATE ins_srtdeel
SET ins_srtdeel_omschrijving = REPLACE (rec_d.PATH, rec.name || CHR (47), ''),
ins_srtgroep_key = v_srtgroep_key
WHERE ins_srtdeel_key = v_srtdeel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_externnr,
ins_srtdeel_binding)
VALUES (v_srtgroep_key,
rec_d.id,
REPLACE (rec_d.PATH, rec.name || CHR (47), ''),
rec_d.id,
1) -- ruimte koppeling
RETURNING ins_srtdeel_key
INTO v_srtdeel_key;
END;
END LOOP;
END LOOP;
END;
PROCEDURE RM_update_equipment
AS
CURSOR c IS SELECT * FROM bvb1_imp_equipment;
v_discipline_key INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
v_srtgroep_key INS_SRTGROEP.INS_SRTGROEP_KEY%TYPE;
v_srtdeel_key INS_SRTDEEL.INS_SRTDEEL_KEY%TYPE;
v_deel_key INS_DEEL.INS_DEEL_KEY%TYPE;
v_kk_aanschafdatum INS_KENMERK.INS_KENMERK_KEY%TYPE;
v_kk_aanschafprijs INS_KENMERK.INS_KENMERK_KEY%TYPE;
v_kk_serienummer INS_KENMERK.INS_KENMERK_KEY%TYPE;
v_srtcontrole_key INS_SRTCONTROLE.INS_SRTCONTROLE_KEY%TYPE;
v_srtcontroledl_xcp_key INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_KEY%TYPE;
v_count NUMBER;
BEGIN
-- Eerst gaan we de kenmerk-keys opzoeken:
SELECT ins_kenmerk_key
INTO v_kk_aanschafdatum
FROM ins_kenmerk
WHERE ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_code = 'AV_AANSCHAFDATUM';
SELECT ins_kenmerk_key
INTO v_kk_aanschafprijs
FROM ins_kenmerk
WHERE ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_code = 'AV_AANSCHAFPRIJS';
SELECT ins_kenmerk_key
INTO v_kk_serienummer
FROM ins_kenmerk
WHERE ins_kenmerk_verwijder IS NULL
AND ins_kenmerk_code = 'AV_SERIENUMMER';
FOR rec IN c
LOOP
BEGIN
SELECT ins_srtdeel_key, ins_discipline_key
INTO v_srtdeel_key, v_discipline_key
FROM ins_srtdeel sd, ins_srtgroep sg
WHERE sd.ins_srtdeel_externnr = REPLACE (rec.folder, '/folders/')
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND ins_srtdeel_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line ('Srtdeel niet gevonden: ' || rec.folder);
v_srtdeel_key := -1;
END;
IF v_srtdeel_key <> -1
THEN
BEGIN
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE ins_deel_verwijder IS NULL AND ins_deel_externnr = rec.serial_id;
UPDATE ins_deel SET ins_srtdeel_key = v_srtdeel_key,
ins_deel_omschrijving = SUBSTR ('AV_' || rec.serial_qrcodes, 1, 60),
ins_deel_opmerking = SUBSTR (rec.name, 1, 320 - LENGTH (rec.serial_displayname) - 4),
ins_deel_aanmaak = COALESCE (rec.serial_purchasedate, SYSDATE),
ins_discipline_key = v_discipline_key
WHERE ins_deel_key = v_deel_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
--dbms_output.put_line ( SUBSTR (rec.name, 1, 60 - LENGTH (rec.serial_id) - 4) || ' (' || rec.serial_id || ')');
INSERT INTO ins_deel (ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_deel_aantal,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_aanmaak,
ins_discipline_key,
ins_deel_externnr)
VALUES (
v_srtdeel_key,
404,
'R',
1,
SUBSTR ('AV_' || rec.serial_qrcodes, 1, 60),
SUBSTR (rec.name, 1, 320 - LENGTH (rec.serial_displayname) - 4)
|| ' ('
|| rec.serial_displayname
|| ')',
COALESCE (rec.serial_purchasedate, SYSDATE),
v_discipline_key,
rec.serial_id)
RETURNING ins_deel_key INTO v_deel_key;
END;
END;
-- nu kijken of er een inspectie gekoppeld is aan het objectsoort
BEGIN
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontrole sc
WHERE ins_srtinstallatie_key = v_srtdeel_key
AND ins_srtcontrole_niveau = 'S';
BEGIN
SELECT ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key = v_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key;
IF COALESCE(rec.serial_purchase_costs,0) <> 0
THEN
UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_kosten = rec.serial_purchase_costs WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
ELSE
DELETE ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Nieuwe uitzondering aanmaken om de prijs op te slaan
IF COALESCE(rec.serial_purchase_costs,0) <> 0
THEN
INSERT INTO ins_srtcontroledl_xcp( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_kosten)
VALUES (v_deel_key, v_srtcontrole_key, rec.serial_purchase_costs);
END IF;
END;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Geen vervangingstaak gevonden. Misschien niet nodig of misschien een nieuw objectsoort.
fac.writelog ('IMPORT_AV', 'W', 'Vervangingstaak niet gevonden.', rec.folder);
END;
-- update kenmerken
FLX.setflex('INS', v_kk_aanschafdatum, v_deel_key, TO_CHAR(rec.serial_purchasedate, 'dd-mm-yyyy'));
FLX.setflex('INS', v_kk_aanschafprijs, v_deel_key, rec.serial_purchase_costs);
FLX.setflex('INS', v_kk_serienummer, v_deel_key, rec.serial);
END IF;
END LOOP;
SELECT count(*) INTO v_count FROM bvb1_imp_equipment;
IF v_count > 500
THEN
-- Verwijder objecten die niet meer voorkomen in de import
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel_key IN (SELECT d.ins_deel_key
FROM ins_v_deel_gegevens dg, ins_deel d
WHERE ins_discipline_omschrijving = 'AV'
AND d.ins_deel_externnr IS NOT NULL
AND dg.ins_deel_key = d.ins_deel_key
AND NOT EXISTS
(SELECT 1
FROM bvb1_imp_equipment i
WHERE d.ins_deel_externnr = i.serial_id));
END IF;
END;
END;
/
-- view om overzicht van de geplande acties te krijgen.
CREATE OR REPLACE VIEW bvb1_v_rap_gepl_acties
AS
SELECT o.mld_opdr_key,
pf.prs_perslid_naam_full,
o.mld_melding_key,
fac_activiteit_omschrijving,
fac_activiteit_periode,
DECODE (fac_activiteit_eenheid,
4, 'jaarlijks',
3, 'maandelijks',
2, 'wekelijks',
1, 'dagelijks') fac_activiteit_eenheid,
o.mld_opdr_datumbegin,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) mld_opdr_afgemeld
FROM fac_activiteit a,
mld_opdr ao,
mld_melding m,
mld_opdr o,
prs_v_perslid_fullnames_all pf
WHERE a.fac_activiteit_key = ao.fac_activiteit_key
AND ao.mld_melding_key = m.mld_melding_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = pf.prs_perslid_key;
-- rapport om de opmerkingen van de inspecteur te zien
CREATE OR REPLACE VIEW bvb1_v_rap_deel_notities
AS
SELECT n.ins_deel_note_aanmaak,
n.ins_deel_note_omschrijving,
pf.prs_perslid_naam_full,
dg.ins_discipline_omschrijving,
dg.ins_srtgroep_omschrijving,
dg.ins_srtdeel_omschrijving,
dg.ins_srtdeel_upper,
dg.alg_gebouw_omschrijving,
dg.alg_gebouw_upper,
dg.alg_verdieping_omschrijving,
dg.alg_verdieping_code,
dg.alg_ruimte_nr,
dg.ins_deel_omschrijving,
dg.ins_deel_aantal,
dg.ins_deel_opmerking,
dg.ins_deel_vervaldatum
FROM ins_deel_note n,
ins_v_deel_gegevens dg,
prs_v_perslid_fullnames_all pf
WHERE n.ins_deel_key = dg.ins_deel_key
AND n.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW bvb1_v_rap_conditiemetingen
AS
SELECT m.mld_melding_key,
l.alg_locatie_code complexnummer,
l.alg_locatie_omschrijving complexnaam,
aog.alg_gebouw_code clusternummer,
aog.alg_gebouw_naam clusternaam,
aog.alg_gebouw_groep gebouwgroep,
id.ins_discipline_omschrijving hoofdrecept,
isg.ins_srtgroep_omschrijving groeprecept,
isd.ins_srtdeel_omschrijving || ' (' || isd.ins_srtdeel_code || ')' subrecept,
d.ins_deel_omschrijving identificatie,
m.mld_melding_key gebreknummer,
m.mld_melding_datum datum_tijd,
TO_CHAR(m.MLD_MELDING_ACTIEDATUM, 'YYYY') uitvoerjaar,
TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') datum,
pf.prs_perslid_naam_full inspecteur,
s.mld_statuses_omschrijving status,
std.mld_stdmelding_omschrijving gebrek,
m.mld_melding_omschrijving omschrijving,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ERNST'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) ernst,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'OMVANG'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) omvang,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'INTENSITEIT'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) intensiteit,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT1'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) veiligheid_gezondheid,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT2'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) cultuurhistorische_waarde,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT3'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) gebruik_en_bedrijfsproces,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT4'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) technische_vervolgschade,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT5'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) toename_klachtenonderhoud,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT6'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) beleving_esthetica,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'KOSTEN'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) kosten,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'EENHEID'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) eenheid,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) taakgroep,
(SELECT k.mld_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'FOTO' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key) foto
FROM mld_melding m,
mld_melding_object mo,
ins_deel d,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
mld_statuses s,
prs_v_perslid_fullnames_all pf,
mld_stdmelding std,
mld_discipline md
WHERE m.mld_melding_key = mo.mld_melding_key
AND d.ins_deel_key = mo.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
AND isg.ins_discipline_key = id.ins_discipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND l.alg_locatie_key = aog.alg_locatie_key
AND s.mld_statuses_key = m.mld_melding_status
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND FAC.getsetting('cnd_gebreken_srtdisc_key') = md.ins_srtdiscipline_key;
-- RTM views
-- RTM voor openstaande meldingen.
CREATE OR REPLACE VIEW bvb1_v_rtm_meldingen
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) - LEVEL + 1 datum
FROM DUAL
CONNECT BY LEVEL <= 30)
SELECT datum
fclt_f_datum,
mld_melding_key,
mld_stdmelding_omschrijving,
ins_discipline_omschrijving,
ins_discipline_key fclt_3d_discipline_key,
ins_srtdiscipline_omschrijving
FROM (SELECT datums.datum,
m.mld_melding_key,
std.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
d.ins_discipline_key,
ins_srtdiscipline_omschrijving
FROM mld_melding m, datums, 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 NOT IN (1) -- Afgewezen
AND datums.datum BETWEEN mld_melding_datum AND COALESCE(MLD.getmeldingstatusdate(m.mld_melding_key, 5), SYSDATE +1));
-- KPI views voor meldingen
CREATE OR REPLACE VIEW bvb1_v_rap_meldingen_per_maand
AS
WITH
mld_melding_freezes
AS
(SELECT mld_melding_key,
mld_melding_datum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), COALESCE(mld.getmeldingstatusdate (m.mld_melding_key, 1), SYSDATE + 600)) mld_melding_afgemeld,
mld_melding_einddatum_std,
ins_srtdiscipline_omschrijving,
mld_behandelgroep_naam
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
mld_disc_params dp,
ins_srtdiscipline sd,
mld_behandelgroep bhg
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 d.ins_discipline_key = dp.mld_ins_discipline_key
AND dp.MLD_BEHANDELGROEP_KEY = bhg.MLD_BEHANDELGROEP_KEY
AND m.fac_activiteit_key IS NULL),
maanden
AS
( SELECT LEVEL lvl
FROM DUAL
CONNECT BY LEVEL <= 12),
startdatum AS (SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -12) datum FROM DUAL)
SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1) maand,
'aangemaakt' status,
ins_srtdiscipline_omschrijving soortdisc,
mld_behandelgroep_naam behandelgroep,
m.mld_melding_key
FROM mld_melding_freezes m, maanden, startdatum sd
WHERE mld_melding_datum BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1) AND ADD_MONTHS (sd.datum, maanden.lvl)
UNION ALL
SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1) maand,
'afgemeld op tijd',
ins_srtdiscipline_omschrijving soortdisc,
mld_behandelgroep_naam behandelgroep,
m.mld_melding_key
FROM mld_melding_freezes m, maanden, startdatum sd
WHERE m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1)
AND ADD_MONTHS (sd.datum, maanden.lvl)
AND mld_melding_afgemeld < mld_melding_einddatum_std
UNION ALL
SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1) maand,
'afgemeld te laat',
ins_srtdiscipline_omschrijving soortdisc,
mld_behandelgroep_naam behandelgroep,
m.mld_melding_key
FROM mld_melding_freezes m, maanden, startdatum sd
WHERE m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1)
AND ADD_MONTHS (sd.datum, maanden.lvl)
AND mld_melding_afgemeld > mld_melding_einddatum_std
UNION ALL
SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1) maand,
'afgemeld',
ins_srtdiscipline_omschrijving soortdisc,
mld_behandelgroep_naam behandelgroep,
m.mld_melding_key
FROM mld_melding_freezes m, maanden, startdatum sd
WHERE m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1) AND ADD_MONTHS (sd.datum, maanden.lvl)
UNION ALL
SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1) maand,
'open',
ins_srtdiscipline_omschrijving soortdisc,
mld_behandelgroep_naam behandelgroep,
m.mld_melding_key
FROM mld_melding_freezes m, maanden, startdatum sd
WHERE m.mld_melding_datum < ADD_MONTHS (sd.datum, maanden.lvl)
AND m.mld_melding_afgemeld > ADD_MONTHS (sd.datum, maanden.lvl);
-- View om QR-codes bij objecten te tonen.
CREATE OR REPLACE VIEW bvb1_v_rap_qr_deel
AS
SELECT fac_bookmark_naam,
fac_bookmark_id,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
alg_locatie_key,
alg_gebouw_omschrijving,
ins_deel_aanmaak,
ins_deel_key
FROM fac_bookmark b, ins_v_deel_gegevens d
WHERE fac_bookmark_expire IS NULL
AND fac_bookmark_id = '5XaFlgljfYX2_ta-';
CREATE OR REPLACE VIEW bvb1_rap_cal_planning
AS
SELECT m.mld_melding_behandelaar_key xuser_key,
pf.prs_perslid_naam_full behandelaar,
m.mld_melding_key || ' ' ||
SUBSTR(p.prs_perslid_voornaam, 1,1) ||
SUBSTR(p.prs_perslid_naam, 1,1) || ' ' ||
mld_melding_onderwerp title,
mld_melding_actiedatum tot,
mld_melding_actiedatum van,
m.mld_melding_key item_key,
SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 1, 7) color,
SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 9, 7) textcolor,
'?u=melding' || CHR (38) || 'k=' || m.mld_melding_key url
FROM mld_melding m, prs_v_perslid_fullnames_all pf, prs_perslid p
WHERE mld_melding_actiedatum IS NOT NULL
AND m.mld_melding_behandelaar_key = p.prs_perslid_key
AND m.mld_melding_behandelaar_key = pf.prs_perslid_key
AND mld_melding_status not in (1, 5, 6) -- Afgewezen, afgemeld, historie
UNION ALL
SELECT NULL xuser_key,
'<geen behandelaar>' behandelaar,
m.mld_melding_key || ' ' || mld_melding_onderwerp title,
mld_melding_actiedatum tot,
mld_melding_actiedatum van,
m.mld_melding_key item_key,
'#FF0000',
'#FFFFFF',
'?u=melding' || CHR (38) || 'k=' || m.mld_melding_key url
FROM mld_melding m
WHERE mld_melding_actiedatum IS NOT NULL
AND mld_melding_status not in (1, 5, 6) -- Afgewezen, afgemeld, historie
AND m.mld_melding_behandelaar_key IS NULL;
-- Overzicht naast de kalender om nieuwe meldingen te tonen.
CREATE OR REPLACE VIEW bvb1_v_mld_zonder_actiedat
AS
SELECT m.mld_melding_key || '-' || m.mld_melding_onderwerp title,
m.mld_melding_key,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving
FROM mld_melding m,
mld_stdmelding std,
mld_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 mld_melding_status NOT IN (1, 5, 6) -- Afgewezen, afgemeld, historie
AND mld_melding_actiedatum IS NULL;
-- View om de relatie tussen standaardmeldingen en objectstructuur aan te geven.
CREATE OR REPLACE VIEW bvb1_v_rap_stdmelding_srtinst
AS
SELECT mss.mld_stdmelding_srtinst_key,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving vakgroep,
std.mld_stdmelding_omschrijving,
mss.ins_srtinstallatie_niveau,
isd.ins_srtdeel_omschrijving,
isg.ins_srtgroep_omschrijving,
id.ins_discipline_omschrijving
FROM mld_stdmelding_srtinst mss,
ins_srtgroep isg,
ins_srtdeel isd,
mld_stdmelding std,
ins_discipline id,
mld_discipline md,
ins_srtdiscipline sd
WHERE isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND isg.ins_discipline_key = id.ins_discipline_key
AND mss.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 ( mss.ins_srtinstallatie_niveau = 'S' AND mss.ins_srtinstallatie_key = isd.ins_srtdeel_key
OR mss.ins_srtinstallatie_niveau = 'G' AND mss.ins_srtinstallatie_key = isg.ins_srtgroep_key
OR mss.ins_srtinstallatie_niveau = 'D' AND mss.ins_srtinstallatie_key = isg.ins_discipline_key);
-- RentMan view om de folderstructuur uit RentMan te vertalen naar een boomstructuur.
CREATE OR REPLACE VIEW bvb1_v_folder_structuur
AS
SELECT 1 niveau,
id,
displayname,
name,
itemtype,
PATH,
NULL parent1,
NULL parent2,
NULL parent3
FROM bvb1_imp_folder
WHERE parent IS NULL AND itemtype = 'equipment'
UNION ALL
SELECT 2 niveau,
f2.id,
f2.displayname,
f2.name,
f2.itemtype,
f2.PATH,
REPLACE (f2.parent, '/folders/') parent1,
NULL parent2,
NULL parent3
FROM bvb1_imp_folder f1, bvb1_imp_folder f2
WHERE f1.parent IS NULL AND f1.itemtype = 'equipment' AND REPLACE (f2.parent, '/folders/') = f1.id
UNION ALL
SELECT 3 niveau,
f3.id,
f3.displayname,
f3.name,
f3.itemtype,
f3.PATH,
REPLACE (f2.parent, '/folders/') parent1,
REPLACE (f3.parent, '/folders/') parent2,
NULL parent3
FROM bvb1_imp_folder f1, bvb1_imp_folder f2, bvb1_imp_folder f3
WHERE f1.parent IS NULL
AND f2.itemtype = 'equipment'
AND REPLACE (f2.parent, '/folders/') = f1.id
AND REPLACE (f3.parent, '/folders/') = f2.id
UNION ALL
SELECT 4 niveau,
f4.id,
f4.displayname,
f4.name,
f4.itemtype,
f4.PATH,
REPLACE (f2.parent, '/folders/') parent1,
REPLACE (f3.parent, '/folders/') parent2,
REPLACE (f3.parent, '/folders/') parent3
FROM bvb1_imp_folder f1,
bvb1_imp_folder f2,
bvb1_imp_folder f3,
bvb1_imp_folder f4
WHERE f1.parent IS NULL
AND f4.itemtype = 'equipment'
AND REPLACE (f2.parent, '/folders/') = f1.id
AND REPLACE (f3.parent, '/folders/') = f2.id
AND REPLACE (f4.parent, '/folders/') = f3.id;
-- Rapportage om te controleren of de bedragen vanuit Rentman goed overkomen in Facilitor en of de taak wel aangemaakt wordt.
CREATE OR REPLACE VIEW bvb1_v_rap_rentman_imp_check
AS
SELECT dg.ins_discipline_omschrijving,
dg.ins_srtgroep_omschrijving,
dg.ins_srtdeel_omschrijving,
dg.ins_deel_omschrijving,
dg.ins_deel_opmerking,
FLX.getflex ('INS', ak.ins_kenmerk_key, dg.ins_deel_key) object_vervanging,
sc.ins_srtcontrole_omschrijving,
sc.ins_srtcontrole_periode,
x.ins_srtcontroledl_xcp_kosten
FROM ins_v_deel_gegevens dg,
ins_srtcontrole sc,
ins_srtcontroledl_xcp x,
(SELECT k.ins_srtinstallatie_key, k.ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.ins_srtkenmerk_code = 'AANSCHAFPRIJS') ak
WHERE dg.ins_srtdeel_key = sc.ins_srtinstallatie_key(+)
AND dg.ins_deel_key = x.ins_deel_key(+)
--AND ins_discipline_omschrijving = 'AV'
AND dg.ins_discipline_key = ak.ins_srtinstallatie_key(+);
CREATE OR REPLACE PROCEDURE bvb1_daily
AS
-- accepteer de meldingen die aangemaakt zijn met de geplande acties. Anders komen ze niet in de kalender te staan.
CURSOR c IS
SELECT mld_melding_key
FROM mld_melding
WHERE mld_melding_opmerking LIKE 'Automatisch gegenereerd door activiteit%' AND mld_melding_status = 2;
BEGIN
FOR rec IN c
LOOP
MLD.setmeldingstatus (rec.mld_melding_key, 4, NULL);
UPDATE mld_melding
SET mld_melding_actiedatum = SYSDATE
WHERE mld_melding_key = rec.mld_melding_key;
END LOOP;
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