Files
Customer/NOVA/nova.sql
Maarten van der Heide cb27225435 NOVA#88495 RES_DEL-rap+NOVA#90536 HV_UITNUTTING-rap/Toevoegen kolommen
svn path=/Customer/trunk/; revision=70535
2025-10-06 10:58:23 +00:00

3890 lines
197 KiB
SQL
Raw Permalink Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for NOVA.
DEFINE thisfile = 'NOVA.SQL'
DEFINE dbuser = '^NOVA'
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 ------
-- Mail2Opdracht: INKOOP!
CREATE OR REPLACE PROCEDURE NOVA_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
c_onbekend_key NUMBER (10) := 3561; -- 3561=Onbekend bij migratie/import!
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_van_regel VARCHAR2 (255) := '';
v_van_email VARCHAR2 (255) := '';
v_perslid_key NUMBER (10);
v_opdracht_id VARCHAR2 (255);
v_opdracht_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_folder_kkey NUMBER (10);
v_count NUMBER (10);
BEGIN
CASE
WHEN UPPER (pto) LIKE 'INKOOP@%'
THEN
-- Probeer noteur te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
v_errormsg := 'Fout bepalen noteur';
IF INSTR (UPPER (pbody), 'VAN:') > 0
THEN
v_van_regel := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), 'VAN:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
THEN
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
END IF;
END IF;
--SELECT COUNT (*)
-- INTO v_count
-- FROM prs_bedrijfadres
-- WHERE prs_bedrijfadres_type = 'O'
-- AND INSTR (UPPER (prs_bedrijfadres_url), 'MAILTO:') = 1
-- AND SUBSTR (UPPER (prs_bedrijfadres_url), INSTR (prs_bedrijfadres_url, '@')) = SUBSTR (UPPER (v_van_email), INSTR (v_van_email, '@'));
SELECT COUNT (*)
INTO v_count
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
IF v_count = 1
THEN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
ELSE -- Noteur kan niet 1-duidig worden bepaald, dus Onbekend!
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_onbekend_key;
END IF;
v_errormsg := 'Fout bepalen opdracht';
IF INSTR (UPPER (psubject), 'OPDRACHT NR.') > 0
THEN
-- 'Opdracht nr.' in subject, dan beschouw alleen gedeelte daarna!
v_opdracht_id := SUBSTR (psubject, INSTR (UPPER (psubject), 'OPDRACHT NR.'));
ELSE
-- Geen 'Opdracht nr.' in subject, dan beschouw hele subject!
v_opdracht_id := psubject;
END IF;
-- OpdrachtID is gedeelte vanaf 1e cijfer tot volgende white space in
-- v_opdracht_id!
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
THEN
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' ';
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1);
ELSE
v_opdracht_id := NULL;
END IF;
v_errormsg := 'Fout bepalen opdracht ' || v_opdracht_id;
SELECT mld_opdr_key, mld_typeopdr_key
INTO v_opdracht_key, v_typeopdr_key
FROM mld_opdr
WHERE TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = v_opdracht_id;
-- Notitie-vlaggetje op 4 + 64 (= zichtbaarUITV + ismail)
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving, mld_opdr_note_flag)
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000), 4 + 64);
-- Bijwerken attentie (of is hier een primitieve voor?)
v_errormsg := 'Fout bijwerken attentie';
BEGIN
IF fac.getsetting ('mld_opdr_actiecode') IN ('1', '2') -- Aanname?
THEN
UPDATE mld_opdr
SET mld_opdr_actiecode = 1 + 128 -- Backoffice + Attentie
WHERE mld_opdr_key = v_opdracht_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Niet gelukt om attentie te zetten.');
END;
/*
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout toevoegen opdracht-bijlage';
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE k1.mld_typeopdr_key = v_typeopdr_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND NOT EXISTS
(SELECT 1
FROM mld_kenmerk k2, mld_srtkenmerk sk2
WHERE k2.mld_typeopdr_key = v_typeopdr_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_kenmerk_niveau = 'O'
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
*/
v_folder_kkey := 421;
IF v_folder_kkey IS NOT NULL
THEN
--INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
-- VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
END IF;
-- Per 2021.1 mogelijk dat originele mail (incl. bijlagen?) ook wordt opgeslagen!
v_errormsg := 'Fout toevoegen originele mail';
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || 421 || '\');
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.writelog ('PROCESSEMAIL', 'E', 'NOVA_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
/* NIEUWSTE DSMA-VERSIE NOG EENS LADEN?!
CREATE OR REPLACE VIEW NOVA_V_RAP_QRC
AS
SELECT d.ins_deel_omschrijving hide_f_sort,
dd.ins_discipline_omschrijving || ' / ' || sm.mld_stdmelding_omschrijving
fclt_f_melding,
'Plaats' gekoppeld_aan,
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
fclt_f_locatie,
--o.alg_gebouw_omschrijving fclt_f_gebouw,
o.alg_plaatsaanduiding fclt_f_plaats,
NULL fclt_f_persoon,
dd.ins_discipline_omschrijving fclt_f_discipline,
sg.ins_srtgroep_omschrijving fclt_f_objectgroep,
sd.ins_srtdeel_omschrijving fclt_f_objectsoort,
d.ins_deel_omschrijving fclt_f_identificatie,
--b.fac_bookmark_naam fclt_f_bookmark,
dd.ins_discipline_key fclt_3d_discipline_key,
sd.ins_srtdeel_key,
d.ins_deel_key,
d.ins_alg_locatie_key fclt_3d_locatie_key,
d.ins_alg_ruimte_type,
d.ins_alg_ruimte_key,
--o.alg_gebouw_code,
--o.alg_verdieping_code,
b.fac_bookmark_id hide_f_bookmark_id
FROM --fac_bookmark b,
(SELECT SUBSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9), 1, INSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9) || '&', '&') - 1)
stdmkina,
--fac_bookmark_naam,
fac_bookmark_id
FROM fac_bookmark
WHERE (fac_bookmark_expire IS NULL OR fac_bookmark_expire > SYSDATE)
AND UPPER (TRIM (fac_bookmark_path)) = 'APPL/PDA/INS_DEEL.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') > 0) b, -- STDMKINA-bookmarks
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline dd,
alg_locatie l,
ins_v_alg_overzicht o,
mld_stdmelding sm,
mld_stdmelding_srtinst smsd
WHERE --(b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
--AND b.fac_bookmark_naam = 'QRC_MELDING'
--AND d.ins_deel_module = 'INS'
d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = dd.ins_discipline_key
AND d.ins_deel_parent_key IS NULL
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_alg_locatie_key = l.alg_locatie_key
--AND d.ins_alg_locatie_key = o.alg_locatie_key
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND fac.safe_to_number (b.stdmkina) = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = smsd.mld_stdmelding_key
AND smsd.ins_srtinstallatie_key = DECODE (smsd.ins_srtinstallatie_niveau, 'S', sd.ins_srtdeel_key, 'G', sg.ins_srtgroep_key, 'D', dd.ins_discipline_key)
UNION ALL
SELECT d.ins_deel_omschrijving hide_f_sort,
dd.ins_discipline_omschrijving || ' / ' || sm.mld_stdmelding_omschrijving
fclt_f_melding,
'Persoon' gekoppeld_aan,
NULL fclt_f_locatie,
--NULL fclt_f_gebouw,
NULL fclt_f_plaats,
pf.prs_perslid_naam_full fclt_f_persoon,
dd.ins_discipline_omschrijving fclt_f_discipline,
sg.ins_srtgroep_omschrijving fclt_f_objectgroep,
sd.ins_srtdeel_omschrijving fclt_f_objectsoort,
d.ins_deel_omschrijving fclt_f_identificatie,
--b.fac_bookmark_naam fclt_f_bookmark,
dd.ins_discipline_key fclt_3d_discipline_key,
sd.ins_srtdeel_key,
d.ins_deel_key,
d.ins_alg_locatie_key fclt_3d_locatie_key,
d.ins_alg_ruimte_type,
d.ins_alg_ruimte_key,
--NULL alg_gebouw_code,
--NULL alg_verdieping_code,
b.fac_bookmark_id hide_f_bookmark_id
FROM --fac_bookmark b,
(SELECT SUBSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9), 1, INSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9) || '&', '&') - 1)
stdmkina,
--fac_bookmark_naam,
fac_bookmark_id
FROM fac_bookmark
WHERE (fac_bookmark_expire IS NULL OR fac_bookmark_expire > SYSDATE)
AND UPPER (TRIM (fac_bookmark_path)) = 'APPL/PDA/INS_DEEL.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') > 0) b, -- STDMKINA-bookmarks
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline dd,
prs_v_perslid_fullnames pf,
mld_stdmelding sm,
mld_stdmelding_srtinst smsd
WHERE --(b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
--AND b.fac_bookmark_naam = 'QRC_MELDING'
--AND d.ins_deel_module = 'INS'
d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = dd.ins_discipline_key
AND d.ins_deel_parent_key IS NULL
AND d.ins_alg_ruimte_type IN ('P')
AND d.ins_alg_ruimte_key = pf.prs_perslid_key
AND fac.safe_to_number (b.stdmkina) = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = smsd.mld_stdmelding_key
AND smsd.ins_srtinstallatie_key = DECODE (smsd.ins_srtinstallatie_niveau, 'S', sd.ins_srtdeel_key, 'G', sg.ins_srtgroep_key, 'D', dd.ins_discipline_key);
*/
CREATE OR REPLACE VIEW NOVA_V_MEDEWERKERS
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full,
pf.prs_perslid_naam_friendly,
pf.prs_perslid_verwijder
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_apikey IS NULL
AND p.prs_perslid_externid IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW NOVA_V_EVENEMENTENRUIMTE
(
res_ruimte_key,
res_ruimte_nr,
res_ruimte_vervaldatum
)
AS
SELECT res_ruimte_key, res_ruimte_nr, res_ruimte_vervaldatum
FROM res_ruimte
WHERE res_ruimte_verwijder IS NULL
AND COALESCE (res_ruimte_vervaldatum, SYSDATE + 1) > SYSDATE
AND res_discipline_key = 301 -- Evenementenruimte
UNION ALL -- Reserveerbare ruimte beschikbaar houden als ooit gebruikt!
SELECT rr.res_ruimte_key, rr.res_ruimte_nr, TRUNC (SYSDATE, 'yyyy')
FROM (SELECT km.*
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerkmelding_verwijder IS NULL
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 321) km, -- Voorkeur voor ruimte
res_ruimte rr
WHERE fac.safe_to_number (km.mld_kenmerkmelding_waarde) = rr.res_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM res_ruimte
WHERE res_ruimte_verwijder IS NULL
AND COALESCE (res_ruimte_vervaldatum, SYSDATE + 1) > SYSDATE
AND res_discipline_key = 301 -- Evenementenruimte
AND res_ruimte_key = rr.res_ruimte_key);
/*
SELECT x.mld_melding_key melding_key,
COALESCE (x.ins_srtdiscipline_prefix, '') || TO_CHAR (x.mld_melding_key) meldingnr,
x.mld_statuses_omschrijving meldingstatus,
x.prs_perslid_naam_friendly aanvrager,
wanneer.mld_kenmerkmelding_waarde wanneer,
route.mld_kenmerkmelding_waarde route,
COALESCE (locvan.alg_locatie_code, altlocvan.alg_locatie_code) route_van,
COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1), ']', 1) - 1),
altvantijd.mld_kenmerkmelding_waarde) van_tijd,
COALESCE (locnaar.alg_locatie_code, altlocnaar.alg_locatie_code) route_naar,
COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1), ']', 1) - 1),
altnaartijd.mld_kenmerkmelding_waarde) naar_tijd,
kratten.mld_kenmerkmelding_waarde kratten,
ruimtevan.mld_kenmerkmelding_waarde ruimte_ophalen,
ruimtenaar.mld_kenmerkmelding_waarde ruimte_bezorgen,
pfnaar.prs_perslid_naam_friendly bezorgen_bij
FROM (SELECT sd.ins_srtdiscipline_omschrijving,
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
ms.mld_statuses_omschrijving,
pf.prs_perslid_naam_friendly
FROM mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_v_perslid_fullnames pf
WHERE m.mld_stdmelding_key = 9 --IN (221, 222)
AND m.mld_melding_status = ms.mld_statuses_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_perslid_key_voor = pf.prs_perslid_key) x
LEFT JOIN mld_v_aanwezigkenmerkmelding wanneer
ON x.mld_melding_key = wanneer.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 243 AND mld_kenmerk_key = wanneer.mld_kenmerk_key) -- Wanneer
LEFT JOIN mld_v_aanwezigkenmerkmelding route
ON x.mld_melding_key = route.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 281 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route
LEFT JOIN fac_v_aanwezigusrdata ud_route
ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key
LEFT JOIN alg_locatie locvan -- Van-locatie = ID na 1e '@' tot '/'!
ON fac.safe_to_number (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1), '/', 1) - 1)) = locvan.alg_locatie_key
LEFT JOIN alg_locatie locnaar -- Naar-locatie = ID na 2e '@'!
ON fac.safe_to_number (SUBSTR (ud_route.fac_usrdata_omschr2,
INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 2) + 1)) = locnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvan
ON x.mld_melding_key = altvan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 241 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie
LEFT JOIN alg_locatie altlocvan
ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvantijd
ON x.mld_melding_key = altvantijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 244 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar
ON x.mld_melding_key = altnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 242 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie
LEFT JOIN alg_locatie altlocnaar
ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaartijd
ON x.mld_melding_key = altnaartijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 282 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding kratten
ON x.mld_melding_key = kratten.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 245 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtevan
ON x.mld_melding_key = ruimtevan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 246 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtenaar
ON x.mld_melding_key = ruimtenaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 621 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen
LEFT JOIN mld_v_aanwezigkenmerkmelding cpnaar
ON x.mld_melding_key = cpnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 248 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen
LEFT JOIN prs_v_perslid_fullnames pfnaar
*/
CREATE OR REPLACE VIEW NOVA_V_RAP_ITVD
AS
SELECT TO_CHAR (fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 'yyyymmdd')
|| COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1), ']', 1) - 1),
altvantijd.mld_kenmerkmelding_waarde)
hide_f_sortering,
locvan.alg_locatie_key fclt_3d_locatie_key,
x.mld_melding_key melding_key,
COALESCE (x.ins_srtdiscipline_prefix, '') || TO_CHAR (x.mld_melding_key) meldingnr,
x.mld_statuses_omschrijving meldingstatus,
x.prs_perslid_naam_friendly aanvrager,
'Uitgaand' inkomend_uitgaand,
wanneer.mld_kenmerkmelding_waarde wanneer,
COALESCE (locvan.alg_locatie_code, altlocvan.alg_locatie_code) locatie,
ruimtevan.mld_kenmerkmelding_waarde ruimte,
COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 1) + 1), ']', 1) - 1),
altvantijd.mld_kenmerkmelding_waarde) tijd,
kratten.mld_kenmerkmelding_waarde kratten,
route.mld_kenmerkmelding_waarde route_id,
ud_route.fac_usrdata_omschr route,
x.prs_perslid_naam_friendly contactpersoon
FROM (SELECT sd.ins_srtdiscipline_omschrijving,
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
ms.mld_statuses_omschrijving,
pf.prs_perslid_naam_friendly
FROM mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_v_perslid_fullnames pf
WHERE m.mld_stdmelding_key = 25 -- Examentransport uitgaand
AND m.mld_melding_status = ms.mld_statuses_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_perslid_key_voor = pf.prs_perslid_key) x
LEFT JOIN mld_v_aanwezigkenmerkmelding wanneer
ON x.mld_melding_key = wanneer.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 65 AND mld_kenmerk_key = wanneer.mld_kenmerk_key) -- Wanneer
LEFT JOIN mld_v_aanwezigkenmerkmelding route
ON x.mld_melding_key = route.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 71 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route
LEFT JOIN fac_v_aanwezigusrdata ud_route
ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key
LEFT JOIN alg_locatie locvan -- Van-locatie = ID na 1e '@' tot '/'!
ON fac.safe_to_number (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1), '/', 1) - 1)) = locvan.alg_locatie_key
LEFT JOIN alg_locatie locnaar -- Naar-locatie = ID na 2e '@'!
ON fac.safe_to_number (SUBSTR (ud_route.fac_usrdata_omschr2,
INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 2) + 1)) = locnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvan
ON x.mld_melding_key = altvan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 86 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie
LEFT JOIN alg_locatie altlocvan
ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvantijd
ON x.mld_melding_key = altvantijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 74 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar
ON x.mld_melding_key = altnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 89 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie
LEFT JOIN alg_locatie altlocnaar
ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaartijd
ON x.mld_melding_key = altnaartijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 77 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding kratten
ON x.mld_melding_key = kratten.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 68 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtevan
ON x.mld_melding_key = ruimtevan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 80 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtenaar
ON x.mld_melding_key = ruimtenaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 83 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen
LEFT JOIN mld_v_aanwezigkenmerkmelding cpnaar
ON x.mld_melding_key = cpnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 62 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen
LEFT JOIN prs_v_perslid_fullnames pfnaar
ON fac.safe_to_number (cpnaar.mld_kenmerkmelding_waarde) = pfnaar.prs_perslid_key
WHERE fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') >= TRUNC (SYSDATE)
UNION ALL
SELECT TO_CHAR (fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 'yyyymmdd')
|| COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1), ']', 1) - 1),
altnaartijd.mld_kenmerkmelding_waarde)
hide_f_sortering,
locnaar.alg_locatie_key fclt_3d_locatie_key,
x.mld_melding_key melding_key,
COALESCE (x.ins_srtdiscipline_prefix, '') || TO_CHAR (x.mld_melding_key) meldingnr,
x.mld_statuses_omschrijving meldingstatus,
x.prs_perslid_naam_friendly aanvrager,
'Inkomend' inkomend_uitgaand,
wanneer.mld_kenmerkmelding_waarde wanneer,
COALESCE (locnaar.alg_locatie_code, altlocnaar.alg_locatie_code) locatie,
ruimtenaar.mld_kenmerkmelding_waarde ruimte,
COALESCE (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr, INSTR (ud_route.fac_usrdata_omschr, '[', 1, 2) + 1), ']', 1) - 1),
altnaartijd.mld_kenmerkmelding_waarde) tijd,
kratten.mld_kenmerkmelding_waarde kratten,
route.mld_kenmerkmelding_waarde route_id,
ud_route.fac_usrdata_omschr route,
pfnaar.prs_perslid_naam_friendly contactpersoon
FROM (SELECT sd.ins_srtdiscipline_omschrijving,
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
ms.mld_statuses_omschrijving,
pf.prs_perslid_naam_friendly
FROM mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_v_perslid_fullnames pf
WHERE m.mld_stdmelding_key = 26 -- Examentransport inkomend
AND m.mld_melding_status = ms.mld_statuses_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_perslid_key_voor = pf.prs_perslid_key) x
LEFT JOIN mld_v_aanwezigkenmerkmelding wanneer
ON x.mld_melding_key = wanneer.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 66 AND mld_kenmerk_key = wanneer.mld_kenmerk_key) -- Wanneer
LEFT JOIN mld_v_aanwezigkenmerkmelding route
ON x.mld_melding_key = route.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 72 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route
LEFT JOIN fac_v_aanwezigusrdata ud_route
ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key
LEFT JOIN alg_locatie locvan -- Van-locatie = ID na 1e '@' tot '/'!
ON fac.safe_to_number (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1), '/', 1) - 1)) = locvan.alg_locatie_key
LEFT JOIN alg_locatie locnaar -- Naar-locatie = ID na 2e '@'!
ON fac.safe_to_number (SUBSTR (ud_route.fac_usrdata_omschr2,
INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 2) + 1)) = locnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvan
ON x.mld_melding_key = altvan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 87 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie
LEFT JOIN alg_locatie altlocvan
ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvantijd
ON x.mld_melding_key = altvantijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 75 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar
ON x.mld_melding_key = altnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 90 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie
LEFT JOIN alg_locatie altlocnaar
ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaartijd
ON x.mld_melding_key = altnaartijd.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 78 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie
LEFT JOIN mld_v_aanwezigkenmerkmelding kratten
ON x.mld_melding_key = kratten.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 69 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtevan
ON x.mld_melding_key = ruimtevan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 81 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen
LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtenaar
ON x.mld_melding_key = ruimtenaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 84 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen
LEFT JOIN mld_v_aanwezigkenmerkmelding cpnaar
ON x.mld_melding_key = cpnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 63 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen
LEFT JOIN prs_v_perslid_fullnames pfnaar
ON fac.safe_to_number (cpnaar.mld_kenmerkmelding_waarde) = pfnaar.prs_perslid_key
WHERE fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') >= TRUNC (SYSDATE)
;
CREATE OR REPLACE PACKAGE NOVA
AS
PROCEDURE update_afd2kpn;
PROCEDURE update_prs2loc;
PROCEDURE afmelden_bes;
PROCEDURE afmelden_mld;
PROCEDURE upsert_kanaal;
PROCEDURE verwerken_res; -- VOOR res2benq: Verwerkt eerder doorgezette RES!
PROCEDURE res2benq;
END;
/
CREATE OR REPLACE PACKAGE BODY NOVA
AS
-- Bijwerken/toevoegen/koppelen PRS-kostenplaatsen!
PROCEDURE update_afd2kpn
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_kostenplaats_key NUMBER (10);
v_count NUMBER (10);
-- Bijwerken PRS-kostenplaatsen die al zijn gekoppeld aan afdelingen.
CURSOR c1
IS
SELECT '[' || TO_CHAR (a.prs_afdeling_key) || '|' || a.prs_afdeling_naam || '] '
aanduiding,
a.prs_afdeling_key, TRIM (a.prs_afdeling_naam) prs_afdeling_naam,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving
FROM prs_afdeling a,
(SELECT * FROM prs_v_aanwezigkostenplaats WHERE prs_kostenplaats_module = 'PRS') kp
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 2 -- Nova College
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND TRIM (a.prs_afdeling_naam) != kp.prs_kostenplaats_nr
ORDER BY 2;
-- Toevoegen PRS-kostenplaatsen en koppelen aan afdelingen nog zonder
-- kostenplaats (zodra nieuw aangemaakt via REST).
CURSOR c2
IS
SELECT '[' || TO_CHAR (a.prs_afdeling_key) || '|' || a.prs_afdeling_naam || '] '
aanduiding,
a.prs_afdeling_key, TRIM (a.prs_afdeling_naam) prs_afdeling_naam,
kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving
FROM prs_afdeling a,
(SELECT * FROM prs_v_aanwezigkostenplaats WHERE prs_kostenplaats_module = 'PRS') kp
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 2 -- Nova College
AND a.prs_kostenplaats_key IS NULL
AND TRIM (a.prs_afdeling_upper) = TRIM (kp.prs_kostenplaats_upper(+)) -- Bestaat PRS-kostenplaats al?
ORDER BY 2;
BEGIN
-- Ontkoppelen PRS-kostenplaatsen die meermaals voorkomen, behalve op
-- afdeling met laagste key.
-- NB. Zou alleen bij 1e DAILY-run iets mogen doen.
v_errormsg := 'Fout ontkoppelen kostenplaatsen';
UPDATE prs_afdeling a
SET prs_kostenplaats_key = NULL
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_bedrijf_key = 2 -- Nova College
AND EXISTS
(SELECT 1
FROM prs_afdeling
WHERE prs_kostenplaats_key = a.prs_kostenplaats_key
AND prs_afdeling_key < a.prs_afdeling_key);
-- Bijwerken PRS-kostenplaatsen die al zijn gekoppeld aan afdelingen.
-- NB. Zou alleen bij 1e DAILY-run iets mogen doen.
v_count := 0;
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout bijwerken kostenplaats';
UPDATE prs_kostenplaats
SET prs_kostenplaats_nr = rec.prs_afdeling_naam,
prs_kostenplaats_omschrijving = rec.prs_afdeling_naam
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key;
v_count := v_count + 1;
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 ('AFD2KPN', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('AFD2KPN', 'S', 'Kostenplaatsen/#bijgewerkt: ' || TO_CHAR (v_count), '');
-- Toevoegen PRS-kostenplaatsen en koppelen aan afdelingen nog zonder
-- kostenplaats (zodra nieuw aangemaakt via REST).
v_count := 0;
FOR rec IN c2
LOOP
BEGIN
v_kostenplaats_key := rec.prs_kostenplaats_key;
IF v_kostenplaats_key IS NULL
THEN
v_errormsg := 'Fout toevoegen kostenplaats';
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module)
VALUES (rec.prs_afdeling_naam, rec.prs_afdeling_naam, 'PRS')
RETURNING prs_kostenplaats_key
INTO v_kostenplaats_key;
ELSE
v_errormsg := 'Fout bijwerken kostenplaats';
UPDATE prs_kostenplaats
SET prs_kostenplaats_nr = rec.prs_afdeling_naam,
prs_kostenplaats_omschrijving = rec.prs_afdeling_naam
WHERE prs_kostenplaats_key = v_kostenplaats_key;
END IF;
v_errormsg := 'Fout koppelen kostenplaats';
UPDATE prs_afdeling
SET prs_kostenplaats_key = v_kostenplaats_key
WHERE prs_afdeling_key = rec.prs_afdeling_key;
v_count := v_count + 1;
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 ('AFD2KPN', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('AFD2KPN', 'S', 'Kostenplaatsen/#toegevoegd: ' || TO_CHAR (v_count), '');
-- Bijwerken einddatum van PRS-kostenplaatsen niet langer in gebruik.
--v_errormsg := 'Fout deactiveren kostenplaatsen';
--UPDATE prs_kostenplaats kp
-- SET kp.prs_kostenplaats_eind = SYSDATE
-- WHERE kp.prs_kostenplaats_verwijder IS NULL
-- AND COALESCE (kp.prs_kostenplaats_eind, SYSDATE) > TRUNC (SYSDATE)
-- AND kp.prs_kostenplaats_module = 'PRS'
-- AND NOT EXISTS
-- (SELECT 1
-- FROM prs_afdeling
-- WHERE prs_afdeling_verwijder IS NULL
-- AND prs_kostenplaats_key = kp.prs_kostenplaats_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('AFD2KPN', 'E', v_errormsg, '');
END update_afd2kpn;
-- Bijwerken/toevoegen/koppelen AD-WP (prs_werkplek_virtueel=0)!
PROCEDURE update_prs2loc
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
-- Bepalen alfabetisch eerste fictieve ruimte op basis van locatiecode
-- (volgens AD).
CURSOR c1
IS
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_email || '|' || l2r.alg_locatie_code || '] '
aanduiding,
p.prs_perslid_key,
p2wp.alg_locatie_key wp_locatie_key, -- Locatie van AD-WP/Ist
COALESCE (p2wp.aantal, 0) wp_aantal, -- Aantal AD-WPs/Ist
p2l.alg_locatie_key ad_locatie_key, -- Locatie van AD-WP/Soll
l2r.alg_ruimte_key ad_ruimte_key -- Ruimte van AD-WP/Soll
FROM prs_v_aanwezigperslid p,
( SELECT pw.prs_perslid_key,
MIN (wpg.alg_locatie_key) alg_locatie_key,
COUNT (*) aantal
FROM prs_perslidwerkplek pw, prs_v_werkplek_gegevens wpg
WHERE pw.prs_werkplek_key = wpg.prs_werkplek_key
AND wpg.prs_werkplek_virtueel = 0 -- AD-WP
GROUP BY pw.prs_perslid_key) p2wp,
(SELECT kl.prs_link_key prs_perslid_key,
fac.safe_to_number (kl.prs_kenmerklink_waarde) alg_locatie_key
FROM prs_v_aanwezigkenmerklink kl
WHERE kl.prs_kenmerk_key = 1000) p2l, -- Locatiecode (volgens AD)
(SELECT rg.alg_locatie_key,
rg.alg_locatie_code,
rg.alg_ruimte_key
FROM alg_v_ruimte_gegevens rg
WHERE rg.alg_srtruimte_key = 21 -- Fictief
AND NOT EXISTS
(SELECT 1
FROM alg_v_ruimte_gegevens
WHERE alg_srtruimte_key = 21 -- Fictief
AND alg_locatie_key = rg.alg_locatie_key
AND alg_ruimte_aanduiding < rg.alg_ruimte_aanduiding)) l2r
WHERE p.prs_perslid_externid IS NOT NULL -- NC-medewerker (aangemaakt via AD-koppeling)
AND p.prs_perslid_key = p2wp.prs_perslid_key(+)
AND p.prs_perslid_key = p2l.prs_perslid_key(+)
AND p2l.alg_locatie_key = l2r.alg_locatie_key(+)
ORDER BY 2;
BEGIN
v_count := 0;
FOR rec IN c1
LOOP
BEGIN
IF rec.ad_locatie_key IS NULL
THEN
fac.writelog ('PRS2LOC', 'W', rec.aanduiding || 'Fout bepalen AD-locatie', '');
ELSIF rec.ad_ruimte_key IS NULL
THEN
fac.writelog ('PRS2LOC', 'W', rec.aanduiding || 'Fout bepalen AD-ruimte', '');
-- Als AD-(stam)locatie gewijzigd of persoon heeft >1 AD-WPs (zou
-- niet mogen), dan bijwerken AD-WP!
-- Ofwel, doe niets als huidige AD-WP op juiste AD-(stam)locatie,
-- ook als deze handmatig gecorrigeerd is naar een andere ruimte.
ELSIF rec.ad_locatie_key != COALESCE (rec.wp_locatie_key, -1) OR rec.wp_aantal > 1
THEN
v_errormsg := 'Fout bijwerken ruimte';
prs.movetoruimte (rec.prs_perslid_key, rec.ad_ruimte_key, 'A');
v_count := v_count + 1;
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 ('PRS2LOC', 'W', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('PRS2LOC', 'S', 'WP/#bijgewerkt: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PRS2LOC', 'E', v_errormsg, '');
END update_prs2loc;
-- Alle BES op geleverd na 'leverdagen'+'notidagen'!
PROCEDURE afmelden_bes
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
CURSOR cboi
IS
SELECT DISTINCT bo.bes_bestelopdr_key
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_disc_params bdp
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, bdp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE)
ORDER BY 1;
-- Cursor loopt over alle bestelling-items met status Besteld waarvan de
-- bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
-- gesloten!
CURSOR cbi
IS
SELECT DISTINCT b.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv
ORDER BY 1;
BEGIN
v_count := 0;
FOR rec IN cboi
LOOP
-- Zeg dat alles geleverd is wat besteld is.
v_errormsg := 'Fout leveren bestelopdracht ' || TO_CHAR (rec.bes_bestelopdr_key);
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
END LOOP;
FOR rec IN cbi
LOOP
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
v_errormsg := 'Fout sluiten bestelaanvraag ' || TO_CHAR (rec.bes_bestelling_key);
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
WHERE bes_bestelling_key = rec.bes_bestelling_key;
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
v_count := v_count + 1;
END LOOP;
fac.writelog ('AFMELDEN_BES', 'S', 'Bestelaanvragen/#geleverd: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('AFMELDEN_BES', 'E', v_errormsg, '');
END afmelden_bes;
-- Automatisch sluiten meldingen waarvoor geldt dat:
-- - Daaronder precies <20><>n (= /1) via API2 afgemelde 'TOPdesk (intern)'-
-- opdracht.
-- NB. In andere gevallen moet melding maar handmatig worden gesloten.
PROCEDURE afmelden_mld
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
-- Bepalen automatisch te sluiten meldingen (als '/1'-opdracht doorgezet
-- naar en gesloten door API-user tbv. TOPdesk-koppeling).
CURSOR c1
IS
SELECT DISTINCT o.mld_melding_key
FROM mld_opdr o, mld_melding m
WHERE o.mld_typeopdr_key = 61 -- IVT/TOPdesk (intern)
--AND o.mld_statusopdr_key = 6 -- Afgemeld
--AND o.mld_opdr_bedrijfopdr_volgnr = 1
AND fac.gettrackinguserkey ('ORDAFM', o.mld_opdr_key) = 3663 -- API-user tbv. TOPdesk-koppeling
AND NOT EXISTS
(SELECT 1
FROM mld_opdr
WHERE mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Lopend
AND mld_opdr_key != o.mld_opdr_key
AND mld_melding_key = o.mld_melding_key)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status NOT IN (1, 5, 6) -- Nog niet gesloten
ORDER BY 1;
BEGIN
v_count := 0;
FOR rec IN c1
LOOP
v_errormsg := 'Fout afmelden melding ' || TO_CHAR (rec.mld_melding_key);
mld.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- Afgemeld (incl. tracking)
v_count := v_count + 1;
END LOOP;
fac.writelog ('AFMELDEN_MLD', 'S', 'Meldingen/#gesloten: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('AFMELDEN_MLD', 'E', v_errormsg, '');
END afmelden_mld;
-- Automatisch bijwerken O-kanaal (prs_bedrijfadres) van relaties.
PROCEDURE upsert_kanaal
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
-- Bepalen nieuwe relaties nog zonder O-kanaal.
CURSOR c1
IS
SELECT b.prs_bedrijf_key, b.prs_bedrijf_email, TO_NUMBER (NULL) prs_bedrijfadres_key, NULL prs_bedrijfadres_url
FROM prs_v_aanwezigbedrijf b
WHERE b.prs_bedrijf_intern IS NULL
AND b.prs_bedrijf_key NOT IN (3661) -- Benque
AND b.prs_bedrijf_email IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'O'
AND prs_bedrijf_key = b.prs_bedrijf_key)
UNION ALL
SELECT b.prs_bedrijf_key, b.prs_bedrijf_email, ba.prs_bedrijfadres_key, ba.prs_bedrijfadres_url
FROM prs_v_aanwezigbedrijf b,
(SELECT *
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'O'
AND INSTR (UPPER (prs_bedrijfadres_url), 'MAILTO:') = 1) ba
WHERE b.prs_bedrijf_intern IS NULL
AND b.prs_bedrijf_key NOT IN (3661) -- Benque
AND b.prs_bedrijf_key = ba.prs_bedrijf_key
AND 'MAILTO:' || UPPER (b.prs_bedrijf_email) != UPPER (ba.prs_bedrijfadres_url)
ORDER BY 1;
BEGIN
v_count := 0;
FOR rec IN c1
LOOP
v_errormsg := 'Fout toevoegen O-kanaal ' || TO_CHAR (rec.prs_bedrijf_key);
UPDATE prs_bedrijf
SET prs_bedrijf_uitvoerende = 1
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
IF rec.prs_bedrijfadres_key IS NULL
THEN
INSERT INTO prs_bedrijfadres (prs_bedrijf_key,
prs_bedrijfadres_type,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_xsl,
prs_bedrijfadres_attachfile,
prs_bedrijfadres_flexfiles)
VALUES (rec.prs_bedrijf_key,
'O',
'mailto:' || rec.prs_bedrijf_email,
0,
'xsl/NOVA.xsl',
'Algemene-Inkoopvoorwaarden-FSR-V4.0.pdf',
1);
ELSE
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url = 'mailto:' || TRIM (rec.prs_bedrijf_email)
WHERE prs_bedrijfadres_key = rec.prs_bedrijfadres_key;
END IF;
v_count := v_count + 1;
END LOOP;
fac.writelog ('UPSERT_KANAAL', 'S', 'Relaties/#gekanaliseerd: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('UPSERT_KANAAL', 'E', v_errormsg, '');
END upsert_kanaal;
-- Automatisch verwerken ruimte-reserveringen (roomservice-reserveringen
-- hebben geen BO-status) die eerder (= voorgaande dag) zijn doogezet naar
-- Benque.
-- LET OP: De procedure 'verwerken_res' moet draaien VOOR 'res2benq'!
PROCEDURE verwerken_res
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
CURSOR c1
IS
WITH wachtdagen
AS (SELECT fac.safe_to_number (fac_usrdata_omschr) aantal
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 161 -- BENQUE-koppeling
AND fac_usrdata_upper = 'BENQ_EXPORT_DAYS')
SELECT DISTINCT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '|' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '] '
aanduiding,
rrr.res_rsv_ruimte_key
FROM wachtdagen wd, res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_van > fac.safe_to_date ('30-09-2024', 'dd-mm-yyyy')
--AND rrr.res_ruimte_opstel_key IS NOT NULL
AND rrr.res_status_bo_key != 6 -- AV
AND rrr.res_status_fo_key = 2 -- Definitief/Of ook Optie?/Zou moeten
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty/Zou moeten
AND fac.count_work_days (rrr.res_rsv_ruimte_van, SYSDATE) >= wd.aantal -- Zou moeten
AND EXISTS -- Succesvol doorgezet naar Benque
(SELECT 1
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_kenmerk_code = 'BENQ_ID'
AND rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
AND EXISTS -- Met verwerkt artikel uit Benque-catalogus/Zou moeten (na 15-11-2024!)
(SELECT 1
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, res_disc_params dp
WHERE rra.res_status_bo_key = 6 -- AV
AND rra.res_rsv_artikel_verwerkt IS NOT NULL
AND rra.res_rsv_artikel_dirtlevel = 0 -- Niet dirty
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = dp.res_ins_discipline_key
AND dp.prs_bedrijf_key = 3661 -- Benque-catalogus
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
ORDER BY 1, 2;
BEGIN
v_count := 0;
FOR rec IN c1
LOOP
v_errormsg := 'Fout verwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6 -- AV
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken verwerking ruimte';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
v_count := v_count + 1;
END LOOP;
fac.writelog ('VERWERKEN_RES', 'S', 'Reserveringen/#dichtgezet: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('VERWERKEN_RES', 'E', v_errormsg, '');
END verwerken_res;
PROCEDURE res2benq
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_prijs NUMBER;
CURSOR c1
IS
WITH wachtdagen
AS (SELECT fac.safe_to_number (fac_usrdata_omschr) aantal
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 161 -- BENQUE-koppeling
AND fac_usrdata_upper = 'BENQ_EXPORT_DAYS')
SELECT DISTINCT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '|' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '] '
aanduiding,
rrr.res_rsv_ruimte_key,
rra.res_rsv_artikel_key,
ra.res_artikel_key,
rra.res_status_bo_key
FROM wachtdagen wd, res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_van > fac.safe_to_date ('30-09-2024', 'dd-mm-yyyy')
AND rrr.res_status_fo_key = 2 -- Definitief/Of ook Optie?
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- TODO:Niet dirty?
AND fac.count_work_days (rrr.res_rsv_ruimte_van, SYSDATE) >= wd.aantal
AND NOT EXISTS -- Niet al doorgezet/Vervangen door check op Verwerkt?
(SELECT 1
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_kenmerk_code = 'BENQ_ID'
AND rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_rsv_artikel_dirtlevel = 0 -- TODO:Niet dirty?
AND rra.res_artikel_key = ra.res_artikel_key
AND EXISTS -- Met artikel uit Benque-catalogus
(SELECT 1
FROM res_disc_params
WHERE prs_bedrijf_key = 3661 -- Benque-catalogus
AND res_ins_discipline_key = ra.res_discipline_key)
UNION ALL
SELECT DISTINCT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '|' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '] '
aanduiding,
rrr.res_rsv_ruimte_key,
NULL res_rsv_artikel_key,
NULL res_artikel_key,
rrr.res_status_bo_key
FROM wachtdagen wd, res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_van > fac.safe_to_date ('30-09-2024', 'dd-mm-yyyy')
AND rrr.res_status_fo_key = 2 -- Definitief/Of ook Optie?
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- TODO:Niet dirty?
AND fac.count_work_days (rrr.res_rsv_ruimte_van, SYSDATE) >= wd.aantal
AND NOT EXISTS -- Niet al doorgezet/Vervangen door check op Verwerkt?
(SELECT 1
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_kenmerk_code = 'BENQ_ID'
AND rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
AND EXISTS -- Met artikel uit Benque-catalogus
(SELECT 1
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, res_disc_params dp
WHERE rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_rsv_artikel_dirtlevel = 0 -- TODO:Niet dirty?
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = dp.res_ins_discipline_key
AND dp.prs_bedrijf_key = 3661 -- Benque-catalogus
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
ORDER BY 1, 3, 2;
BEGIN
v_count := 0;
FOR rec IN c1
LOOP
IF rec.res_rsv_artikel_key IS NOT NULL
THEN -- Catering-regel
IF rec.res_status_bo_key = 2 -- Als 2=Nieuw, dan naar 5=Afgemeld!
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken afmelding catering';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering afgemeld');
END IF;
ELSE -- Ruimte-regel
IF rec.res_status_bo_key = 2 -- Als 2=Nieuw, dan naar 5=Afgemeld (dus niet voor Losse catering)!
THEN
v_errormsg := 'Fout bepalen res_rsv_ruimte_prijs';
SELECT res.getruimteprijs (rec.res_rsv_ruimte_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5,
res_rsv_ruimte_prijs = v_prijs
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken afmelding ruimte';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
v_errormsg := 'Fout teverzenden reservering';
fac.trackaction ('RESSND', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
v_count := v_count + 1;
END IF;
END LOOP;
fac.writelog ('RES2BENQ', 'S', 'Reserveringen/#teverzenden: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('RES2BENQ', 'E', v_errormsg, '');
END res2benq;
END;
/
CREATE OR REPLACE PROCEDURE NOVA_DAILY
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Tegenwoordig worden accounts automatisch geschoond via gen_scheduler.bat
-- rond 7:30!
--nova.schonen_accounts;
-- Bijwerken/toevoegen/koppelen PRS-kostenplaatsen (1-op-1)!
nova.update_afd2kpn;
-- Bijwerken/toevoegen/koppelen PRS-werkplekken (1-op-1)!
nova.update_prs2loc;
-- Alle BES op geleverd na 'leverdagen'+'notidagen'!
nova.afmelden_bes;
-- Automatisch sluiten MLD (zoals helder gespecificeerd)!
nova.afmelden_mld;
-- Automatisch bijwerken O-kanaal van relaties!
nova.upsert_kanaal;
-- Automatisch na 5 werkdagen doorzetten RES met App<70>l-catering naar Benque
-- en de volgende dag pas verwerken van de bovenliggende ruimte-reservering
-- (roomservice-reserveringen hebben geen BO-status)!
-- LET OP: De procedure 'verwerken_res' moet draaien VOOR 'res2benq'!
nova.verwerken_res;
nova.res2benq;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', 'Proces afgebroken!', v_errormsg);
END NOVA_DAILY;
/
CREATE OR REPLACE PROCEDURE NOVA_IMPORT_KPN (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';'; -- Field seperator
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden
v_kpn_nr VARCHAR2 (255);
v_kpn_oms VARCHAR2 (255);
v_budgethouder VARCHAR2 (255);
v_kpn_soort VARCHAR2 (255);
CURSOR c1
IS
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM fac_imp_kpn;
COMMIT;
FOR rec IN c1
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- Code verbijzondering;Verb.code omschrijving;Budgethouder;Soort code
fac.imp_getfield (v_newline, c_delim, v_kpn_nr);
fac.imp_getfield (v_newline, c_delim, v_kpn_oms);
fac.imp_getfield (v_newline, c_delim, v_budgethouder);
fac.imp_getfield (v_newline, c_delim, v_kpn_soort);
v_aanduiding := '[' || TRIM (v_kpn_nr) || '|' || TRIM (v_kpn_oms) || '|' || TRIM (v_kpn_soort) || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_kpn_nr) = 'CODE VERBIJZONDERING'
AND UPPER (v_kpn_oms) = 'VERB.CODE OMSCHRIJVING'
AND UPPER (v_budgethouder) = 'BUDGETHOUDER'
AND UPPER (v_kpn_soort) = 'SOORT CODE'
THEN
header_is_valid := 1;
END IF;
ELSIF (rec.regellengte > 0) -- Lege regels overslaan
THEN
BEGIN
v_count_tot := v_count_tot + 1;
-- Controleer veldwaarde v_kpn_soort
v_errormsg := 'Soort code ongeldig';
IF UPPER (TRIM (v_kpn_soort)) = 'GEBOUWKOSTENPLAATS'
THEN
v_kpn_soort := 'ALG';
ELSIF UPPER (TRIM (v_kpn_soort)) = 'PROJECTKOSTENPLAATS'
THEN
v_kpn_soort := 'PRJ';
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO fac_imp_kpn (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module, prs_kostenplaats_externnr)
VALUES (TRIM (v_kpn_nr), TRIM (v_kpn_oms), v_kpn_soort, TRIM (v_budgethouder));
v_count_imp := v_count_imp + 1;
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.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
END IF;
END;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'KPN/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'KPN/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces KPN afgebroken!');
END NOVA_IMPORT_KPN;
/
-- TODO: Speciale kostenplaatsgroep voor ALG- en PRJ-kostenplaatsen?
CREATE OR REPLACE PROCEDURE NOVA_UPDATE_KPN (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER (10);
-- Bijwerken kostenplaatsen.
CURSOR c_upd_kpn
IS
SELECT '[' || x.prs_kostenplaats_nr || '|' || x.prs_kostenplaats_omschrijving || '|' || x.prs_kostenplaats_module || '] ' aanduiding,
x.prs_kostenplaats_nr,
x.prs_kostenplaats_omschrijving,
x.prs_kostenplaats_module,
x.prs_kostenplaats_externnr,
kp.prs_kostenplaats_key,
pf.prs_perslid_key
FROM fac_imp_kpn x,
prs_v_aanwezigkostenplaats kp, -- Beschouw alle kostenplaatsen!
prs_v_perslid_fullnames pf
WHERE UPPER (x.prs_kostenplaats_nr) = kp.prs_kostenplaats_upper(+)
AND UPPER (x.prs_kostenplaats_externnr) = UPPER (pf.prs_perslid_naam_friendly(+))
ORDER BY kp.prs_kostenplaats_key;
BEGIN
v_count := 0;
FOR rec IN c_upd_kpn
LOOP
BEGIN
IF rec.prs_kostenplaats_key IS NULL
THEN
v_errormsg := 'Fout toevoegen kostenplaats';
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module, prs_kostenplaats_begin, prs_perslid_key)
VALUES (rec.prs_kostenplaats_nr, rec.prs_kostenplaats_omschrijving, rec.prs_kostenplaats_module, SYSDATE, rec.prs_perslid_key);
ELSE
v_errormsg := 'Fout bijwerken kostenplaats';
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_omschrijving = rec.prs_kostenplaats_omschrijving,
kp.prs_kostenplaats_module = rec.prs_kostenplaats_module,
kp.prs_perslid_key = rec.prs_perslid_key
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key
AND NOT EXISTS (SELECT 1 FROM prs_afdeling WHERE prs_kostenplaats_key = kp.prs_kostenplaats_key);
END IF;
v_count := v_count + 1;
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.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'KPN/#bijgewerkt: ' || TO_CHAR (v_count), '');
/*
-- Zet kostenplaatsen op VERVALLEN; de rest handmatig verder maar regelen!
v_errormsg := 'Fout inactiveren kostenplaatsen.';
SELECT COUNT ( * )
INTO v_count
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module IN ('ALG', 'PRJ')
AND kp.prs_kostenplaats_upper != 'ONB'
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND COALESCE (kp.prs_kostenplaats_eind, SYSDATE) > TRUNC (SYSDATE) -- Actief (einddatum leeg of in toekomst)
AND NOT EXISTS
(SELECT 1
FROM fac_imp_kpn
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper)
AND NOT EXISTS
(SELECT 1
FROM prs_afdeling
WHERE prs_kostenplaats_key = kp.prs_kostenplaats_key);
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_eind = TRUNC (SYSDATE), -- Per vandaag vervallen
kp.prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN: ' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module IN ('ALG', 'PRJ')
AND kp.prs_kostenplaats_upper != 'ONB'
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND COALESCE (kp.prs_kostenplaats_eind, SYSDATE) > TRUNC (SYSDATE) -- Actief (einddatum leeg of in toekomst)
AND NOT EXISTS
(SELECT 1
FROM fac_imp_kpn
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper)
AND NOT EXISTS
(SELECT 1
FROM prs_afdeling
WHERE prs_kostenplaats_key = kp.prs_kostenplaats_key);
fac.imp_writelog (p_import_key, 'S', 'KPN/#vervallen: ' || TO_CHAR (v_count), '');
*/
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces KPN afgebroken!');
END NOVA_UPDATE_KPN;
/
CREATE OR REPLACE PROCEDURE NOVA_IMPORT_BEGR_HV (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';'; -- Field seperator
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
v_ongeldig NUMBER (1);
v_count_tst NUMBER (10);
-- De importvelden
v_gebouw VARCHAR2 (4000);
v_nrs VARCHAR2 (4000);
v_omschrijving VARCHAR2 (4000);
v_leeg1 VARCHAR2 (4000);
v_mjop VARCHAR2 (4000);
v_leeg2 VARCHAR2 (4000);
v_hv_algemeen VARCHAR2 (4000);
v_leeg3 VARCHAR2 (4000);
v_aanp_gebter VARCHAR2 (4000);
v_activeren1 VARCHAR2 (4000);
v_leeg4 VARCHAR2 (4000);
v_inventaris VARCHAR2 (4000);
v_activeren2 VARCHAR2 (4000);
v_leeg5 VARCHAR2 (4000);
v_noodzaak VARCHAR2 (4000);
v_vervuitbrvern VARCHAR2 (4000);
v_leverancier VARCHAR2 (4000);
v_maand VARCHAR2 (4000);
v_contactpers VARCHAR2 (4000);
v_leeg6 VARCHAR2 (4000);
v_toelichting VARCHAR2 (4000);
v_leeg7 VARCHAR2 (4000);
v_bouwkosten VARCHAR2 (4000);
v_vaste_inr VARCHAR2 (4000);
v_advieskosten VARCHAR2 (4000);
v_losse_inv VARCHAR2 (4000);
v_bijkomende_kosten VARCHAR2 (4000);
v_onvoorzien VARCHAR2 (4000);
v_totaal VARCHAR2 (4000);
v_leeg8 VARCHAR2 (4000);
v_terrein VARCHAR2 (4000);
v_inr_terreinen40k VARCHAR2 (4000);
v_nieuwbouw VARCHAR2 (4000);
v_gebouwen_aankoop VARCHAR2 (4000);
v_verbouwingen40k VARCHAR2 (4000);
v_gr_onderh8j25k VARCHAR2 (4000);
v_gr_onderh10j25k VARCHAR2 (4000);
v_gr_onderh15j25k VARCHAR2 (4000);
v_gr_onderh20j25k VARCHAR2 (4000);
v_gr_onderh25j25k VARCHAR2 (4000);
v_gr_onderh30j25k VARCHAR2 (4000);
v_gr_onderh40j25k VARCHAR2 (4000);
v_lesinv3k VARCHAR2 (4000);
v_overige_inv3k VARCHAR2 (4000);
v_computerapp3k VARCHAR2 (4000);
v_software3k VARCHAR2 (4000);
v_transportmid5k VARCHAR2 (4000);
CURSOR c1
IS
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM nova_imp_begr_hv;
COMMIT;
FOR rec IN c1
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- Code verbijzondering;Verb.code omschrijving;Budgethouder;Soort code
--versiedatum;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--;AANVRAAG PROJECTEN HUISVESTING / OVERIGE INVENTARIS (geen lesinventaris) 2024 (incl.btw);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--;;;;;;;;;;;;;;;;;;;;;;Projecten 2024;;;;;;;;Investeringen 2024;;;;;;;;;;;;;;;;
--Gebouw;Nrs.;Omschrijving;;MJOP;;HV Algemeen3502;;Aanpassing gebouw/ terr.;Activeren;;Inventaris;Activeren;;
--noodzakelijkofwenselijk;vervanging,uitbreiding,vernieuwing,of combinatie;Naam leverancier;Gewenste maand van levering;Contact -persoon;;Eventuele toelichting vanuit de aanvrager;;
--Bouwkosten;Vaste inrichting;Advieskosten;Losseinventaris;Bijkomende kosten;Onvoorzien;Totaal;;
--Terrein;Inrichting terreinen (> EUR 40.000);Nieuwbouw;Gebouwen (aankoop bestaande gebouwen);Verbouwingen (>EUR 40.000 per project);Groot onderhoud (08 jaar) >EUR 25.000;
--Groot onderhoud (10 jaar) >EUR 25.000;Groot onderhoud (15 jaar) >EUR 25.000;Groot onderhoud (20 jaar) >EUR 25.000;
--Groot onderhoud (25 jaar) >EUR 25.000;Groot onderhoud (30 jaar) >EUR 25.000;Groot onderhoud (40 jaar) >EUR 25.000;
--Lesinventaris (>EUR 3.000);Overige inventaris (>EUR 3.000);Computerapparatuur (>EUR 3.000);Software (>EUR 3.000);Transportmiddelen (>EUR 5.000)
-- 1e keer Activeren (Gbk.rek 002.40)???
-- 2e keer Activeren (Gbk.rek 005.10)???
fac.imp_getfield (v_newline, c_delim, v_gebouw);
fac.imp_getfield (v_newline, c_delim, v_nrs);
fac.imp_getfield (v_newline, c_delim, v_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_leeg1);
fac.imp_getfield (v_newline, c_delim, v_mjop);
fac.imp_getfield (v_newline, c_delim, v_leeg2);
fac.imp_getfield (v_newline, c_delim, v_hv_algemeen);
fac.imp_getfield (v_newline, c_delim, v_leeg3);
fac.imp_getfield (v_newline, c_delim, v_aanp_gebter);
fac.imp_getfield (v_newline, c_delim, v_activeren1);
fac.imp_getfield (v_newline, c_delim, v_leeg4);
fac.imp_getfield (v_newline, c_delim, v_inventaris);
fac.imp_getfield (v_newline, c_delim, v_activeren2);
fac.imp_getfield (v_newline, c_delim, v_leeg5);
fac.imp_getfield (v_newline, c_delim, v_noodzaak);
fac.imp_getfield (v_newline, c_delim, v_vervuitbrvern);
fac.imp_getfield (v_newline, c_delim, v_leverancier);
fac.imp_getfield (v_newline, c_delim, v_maand);
fac.imp_getfield (v_newline, c_delim, v_contactpers);
fac.imp_getfield (v_newline, c_delim, v_leeg6);
fac.imp_getfield (v_newline, c_delim, v_toelichting);
fac.imp_getfield (v_newline, c_delim, v_leeg7);
fac.imp_getfield (v_newline, c_delim, v_bouwkosten);
fac.imp_getfield (v_newline, c_delim, v_vaste_inr);
fac.imp_getfield (v_newline, c_delim, v_advieskosten);
fac.imp_getfield (v_newline, c_delim, v_losse_inv);
fac.imp_getfield (v_newline, c_delim, v_bijkomende_kosten);
fac.imp_getfield (v_newline, c_delim, v_onvoorzien);
fac.imp_getfield (v_newline, c_delim, v_totaal);
fac.imp_getfield (v_newline, c_delim, v_leeg8);
fac.imp_getfield (v_newline, c_delim, v_terrein);
fac.imp_getfield (v_newline, c_delim, v_inr_terreinen40k);
fac.imp_getfield (v_newline, c_delim, v_nieuwbouw);
fac.imp_getfield (v_newline, c_delim, v_gebouwen_aankoop);
fac.imp_getfield (v_newline, c_delim, v_verbouwingen40k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh8j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh10j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh15j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh20j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh25j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh30j25k);
fac.imp_getfield (v_newline, c_delim, v_gr_onderh40j25k);
fac.imp_getfield (v_newline, c_delim, v_lesinv3k);
fac.imp_getfield (v_newline, c_delim, v_overige_inv3k);
fac.imp_getfield (v_newline, c_delim, v_computerapp3k);
fac.imp_getfield (v_newline, c_delim, v_software3k);
fac.imp_getfield (v_newline, c_delim, v_transportmid5k);
v_aanduiding := '[' || TRIM (v_gebouw) || '|' || TRIM (v_nrs) || '|' || SUBSTR (TRIM (v_omschrijving), 1, 30) || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_gebouw) = 'GEBOUW'
AND UPPER (v_nrs) = 'NRS.'
AND UPPER (v_omschrijving) = 'OMSCHRIJVING'
--AND UPPER (v_leeg1) = ''
AND UPPER (v_mjop) = 'MJOP'
--AND UPPER (v_leeg2) = ''
AND UPPER (v_hv_algemeen) = 'HV ALGEMEEN3502'
--AND UPPER (v_leeg3) = ''
AND UPPER (v_aanp_gebter) = 'AANPASSING GEBOUW/ TERR.'
--AND UPPER (v_activeren1) = 'ACTIVEREN'
--AND UPPER (v_leeg4) = ''
AND UPPER (v_inventaris) = 'INVENTARIS'
--AND UPPER (v_activeren2) = 'ACTIVEREN'
--AND UPPER (v_leeg5) = ''
--AND UPPER (v_noodzaak) = 'NOODZAKELIJKOFWENSELIJK'
--AND UPPER (v_vervuitbrvern) = 'VERVANGING,UITBREIDING,VERNIEUWING,OF COMBINATIE'
AND UPPER (v_leverancier) = 'NAAM LEVERANCIER'
--AND UPPER (v_maand) = 'GEWENSTE MAAND VAN LEVERING'
--AND UPPER (v_contactpers) = 'CONTACT -PERSOON'
--AND UPPER (v_leeg6) = ''
--AND UPPER (v_toelichting) = 'EVENTUELE TOELICHTING VANUIT DE AANVRAGER'
--AND UPPER (v_leeg7) = ''
AND UPPER (v_bouwkosten) = 'BOUWKOSTEN'
AND UPPER (v_vaste_inr) = 'VASTE INRICHTING'
AND UPPER (v_advieskosten) = 'ADVIESKOSTEN'
AND UPPER (v_losse_inv) = 'LOSSEINVENTARIS'
AND UPPER (v_bijkomende_kosten) = 'BIJKOMENDE KOSTEN'
AND UPPER (v_onvoorzien) = 'ONVOORZIEN'
AND UPPER (v_totaal) = 'TOTAAL'
--AND UPPER (v_leeg8) = ''
AND UPPER (v_terrein) = 'TERREIN'
AND UPPER (v_inr_terreinen40k) = 'INRICHTING TERREINEN (> EUR 40.000)'
AND UPPER (v_nieuwbouw) = 'NIEUWBOUW'
AND UPPER (v_gebouwen_aankoop) = 'GEBOUWEN (AANKOOP BESTAANDE GEBOUWEN)'
AND UPPER (v_verbouwingen40k) = 'VERBOUWINGEN (>EUR 40.000 PER PROJECT)'
AND UPPER (v_gr_onderh8j25k) = 'GROOT ONDERHOUD (08 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh10j25k) = 'GROOT ONDERHOUD (10 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh15j25k) = 'GROOT ONDERHOUD (15 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh20j25k) = 'GROOT ONDERHOUD (20 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh25j25k) = 'GROOT ONDERHOUD (25 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh30j25k) = 'GROOT ONDERHOUD (30 JAAR) >EUR 25.000'
AND UPPER (v_gr_onderh40j25k) = 'GROOT ONDERHOUD (40 JAAR) >EUR 25.000'
AND UPPER (v_lesinv3k) = 'LESINVENTARIS (>EUR 3.000)'
AND UPPER (v_overige_inv3k) = 'OVERIGE INVENTARIS (>EUR 3.000)'
AND UPPER (v_computerapp3k) = 'COMPUTERAPPARATUUR (>EUR 3.000)'
AND UPPER (v_software3k) = 'SOFTWARE (>EUR 3.000)'
AND UPPER (v_transportmid5k) = 'TRANSPORTMIDDELEN (>EUR 5.000)'
THEN
header_is_valid := 1;
END IF;
--ELSIF (rec.regellengte > 0 AND v_gebouw IS NOT NULL AND v_nrs IS NOT NULL) -- Lege regels overslaan
ELSIF (rec.regellengte > 0 AND v_gebouw IS NOT NULL) -- Lege regels overslaan
THEN
BEGIN
v_count_tot := v_count_tot + 1;
v_count_tst := 0;
-- Controleer kritische veldwaarden
-- Overige werkzaamheden
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_mjop, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_hv_algemeen, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_aanp_gebter, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_inventaris, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
-- Projecten
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_bouwkosten, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
OR fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_vaste_inr, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
OR fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_advieskosten, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
OR fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_losse_inv, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
OR fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_bijkomende_kosten, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
OR fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_onvoorzien, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL
THEN
v_count_tst := v_count_tst + 1;
END IF;
-- Investeringen
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_terrein, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_inr_terreinen40k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_nieuwbouw, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gebouwen_aankoop, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_verbouwingen40k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh8j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh10j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh15j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh20j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh25j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh30j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh40j25k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_lesinv3k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_overige_inv3k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_computerapp3k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_software3k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_transportmid5k, '.', ''), ',', '.'), '<EFBFBD>', '')) IS NOT NULL THEN v_count_tst := v_count_tst + 1; END IF;
IF v_count_tst = 0
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen investeringsbedrag', 'Regel overgeslagen!');
v_ongeldig := 1;
ELSIF v_count_tst > 1
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen investeringsrubriek', 'Regel overgeslagen!');
v_ongeldig := 1;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO nova_imp_begr_hv (gebouw,
nrs,
omschrijving,
mjop,
hv_algemeen,
aanp_gebter,
inventaris,
noodzaak,
vervuitbrvern,
leverancier,
maand,
contactpers,
toelichting,
bouwkosten,
vaste_inr,
advieskosten,
losse_inv,
bijkomende_kosten,
onvoorzien,
--totaal,
terrein,
inr_terreinen40k,
nieuwbouw,
gebouwen_aankoop,
verbouwingen40k,
gr_onderh8j25k,
gr_onderh10j25k,
gr_onderh15j25k,
gr_onderh20j25k,
gr_onderh25j25k,
gr_onderh30j25k,
gr_onderh40j25k,
lesinv3k,
overige_inv3k,
computerapp3k,
software3k,
transportmid5k)
VALUES (TRIM (v_gebouw),
TRIM (v_nrs),
TRIM (v_omschrijving),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_mjop, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_hv_algemeen, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_aanp_gebter, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_inventaris, '.', ''), ',', '.'), '<EFBFBD>', '')),
TRIM (v_noodzaak),
TRIM (v_vervuitbrvern),
TRIM (v_leverancier),
TRIM (v_maand),
TRIM (v_contactpers),
TRIM (v_toelichting),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_bouwkosten, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_vaste_inr, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_advieskosten, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_losse_inv, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_bijkomende_kosten, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_onvoorzien, '.', ''), ',', '.'), '<EFBFBD>', '')),
--fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_totaal, '.', ''), ',', '.'), '<27>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_terrein, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_inr_terreinen40k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_nieuwbouw, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gebouwen_aankoop, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_verbouwingen40k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh8j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh10j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh15j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh20j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh25j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh30j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_gr_onderh40j25k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_lesinv3k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_overige_inv3k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_computerapp3k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_software3k, '.', ''), ',', '.'), '<EFBFBD>', '')),
fac.safe_to_number (REPLACE (REPLACE (REPLACE (v_transportmid5k, '.', ''), ',', '.'), '<EFBFBD>', '')));
v_count_imp := v_count_imp + 1;
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.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
END IF;
END;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'BEGR_HV/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'BEGR_HV/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces BEGR_HV afgebroken!');
END NOVA_IMPORT_BEGR_HV;
/
-- 2/ 19 Huisvesting-Begroting-Investering
-- 381/101 Huisvesting-Begroting-Project
-- 382/102 Huisvesting-Begroting-MJOP
-- 383/103 Huisvesting-Begroting-HV Algemeen
-- 384/104 Huisvesting-Begroting-Aanpassing gebouw/terrein
-- 385/105 Huisvesting-Begroting-Inventaris
-- 781/301 Investeringsrubriek
-- 101/302 Investering/Investeringsbedrag (incl. BTW)
-- 790/303 MJOP/Investeringsbedrag (incl. BTW)
-- 791/304 HV Algemeen/Investeringsbedrag (incl. BTW)
-- 792/305 Aanpassing gebouw/terrein/Investeringsbedrag (incl. BTW)
-- 793/306 Inventaris/Investeringsbedrag (incl. BTW)
-- 789/307 Project/Bouwkosten
-- 801/308 Project/Vaste inrichting
-- 802/309 Project/Advieskosten
-- 803/310 Project/Losse inventaris
-- 804/311 Project/Bijkomende kostsen
-- 805/312 Project/Onvoorzien
-- ---/313 Project/Totaal
-- 784/314 Noodzakelijk of wenselijk
-- 785/315 Vervanging, uitbreiding, vernieuwing of combinatie
-- 786/316 Naam leverancier
-- 787/317 Gewenste maand van levering
-- 788/318 Contactpersoon
-- 794/319 Eventuele toelichting vanuit aanvrager
CREATE OR REPLACE PROCEDURE NOVA_UPDATE_BEGR_HV (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER (10);
v_melding_key NUMBER (10);
v_rubriek NUMBER (10);
v_bedrag NUMBER (10, 2);
-- Toevoegen meldingen tbv. (jaar)begroting HV.
CURSOR c_hv
IS
SELECT '[' || x.gebouw || '|' || x.nrs || '|' || SUBSTR (x.omschrijving, 1, 30) || '] ' aanduiding,
x.gebouw,
x.nrs,
x.omschrijving,
x.noodzaak,
x.vervuitbrvern,
x.leverancier,
x.maand,
x.contactpers,
x.toelichting,
CASE
WHEN x.mjop IS NOT NULL
THEN 102
WHEN x.hv_algemeen IS NOT NULL
THEN 103
WHEN x.aanp_gebter IS NOT NULL
THEN 104
WHEN x.inventaris IS NOT NULL
THEN 105
WHEN COALESCE (x.bouwkosten, x.vaste_inr, x.advieskosten, x.losse_inv, x.bijkomende_kosten, x.onvoorzien) IS NOT NULL
THEN 101
--WHEN COALESCE (x.terrein, x.inr_terreinen40k, x.nieuwbouw, x.gebouwen_aankoop, x.verbouwingen40k, x.gr_onderh8j25k, x.gr_onderh10j25k, x.gr_onderh15j25k, x.gr_onderh20j25k, x.gr_onderh25j25k, x.gr_onderh30j25k, x.gr_onderh40j25k, x.lesinv3k, x.overige_inv3k, x.computerapp3k, x.software3k, x.transportmid5k) IS NOT NULL
--THEN 19
ELSE 19
END
stdmelding_key,
COALESCE (g.alg_locatie_key, l.alg_locatie_key, 21) locatie_key, -- Als locatie niet kan worden bepaald, dan 21=Onbekend bij migratie/import
g.alg_gebouw_key gebouw_key, -- Als locatie niet kan worden bepaald, dan NULL
x.mjop,
x.hv_algemeen,
x.aanp_gebter,
x.inventaris,
x.bouwkosten,
x.vaste_inr,
x.advieskosten,
x.losse_inv,
x.bijkomende_kosten,
x.onvoorzien,
--x.totaal,
x.terrein,
x.inr_terreinen40k,
x.nieuwbouw,
x.gebouwen_aankoop,
x.verbouwingen40k,
x.gr_onderh8j25k,
x.gr_onderh10j25k,
x.gr_onderh15j25k,
x.gr_onderh20j25k,
x.gr_onderh25j25k,
x.gr_onderh30j25k,
x.gr_onderh40j25k,
x.lesinv3k,
x.overige_inv3k,
x.computerapp3k,
x.software3k,
x.transportmid5k,
TO_CHAR (ADD_MONTHS (SYSDATE, 2), 'yyyy') jaar
FROM nova_imp_begr_hv x,
alg_v_aanweziggebouw g,
alg_v_aanweziglocatie l
WHERE UPPER (x.gebouw) = g.alg_gebouw_code(+)
AND UPPER (x.gebouw) = UPPER (l.alg_locatie_code(+))
ORDER BY x.nrs;
BEGIN
v_count := 0;
FOR rec IN c_hv
LOOP
BEGIN
v_errormsg := 'Fout toevoegen HV-melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_meldbron_nr,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_behandelaar_key,
mld_melding_behandelaar2_key,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_opmerking)
VALUES ('MLD',
1, -- Onbekend
rec.nrs,
rec.locatie_key,
rec.gebouw_key,
fac.safe_to_date ('01-01-' || rec.jaar, 'dd-mm-yyyy'),
NULL, -- Leeg/TODO???
SUBSTR (DECODE (rec.nrs, NULL, '', rec.nrs || CHR (13) || CHR (10)) || rec.omschrijving, 1, 4000),
TO_NUMBER (NULL), -- mld_melding_behandelaar_key
TO_NUMBER (NULL), -- mld_melding_behandelaar2_key
TO_NUMBER (NULL), -- mld_ins_discipline_key
rec.stdmelding_key,
NULL,
--TO_DATE (NULL),
fac.safe_to_date ('31-12-' || rec.jaar, 'dd-mm-yyyy'),
3561, -- Onbekend bij migratie/import
3561, -- Onbekend bij migratie/import
2, -- Nieuw
3,
NULL)
RETURNING mld_melding_key
INTO v_melding_key;
fac.trackaction ('MLDNEW', v_melding_key, NULL, SYSDATE, 'Ge<EFBFBD>mporteerd vanuit HV-sjabloon');
IF rec.stdmelding_key = 102
THEN
v_errormsg := 'Fout toevoegen [MJOP]-investeringsbedrag';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 303, TO_CHAR (rec.mjop));
ELSIF rec.stdmelding_key = 103
THEN
v_errormsg := 'Fout toevoegen [HV Algemeen]-investeringsbedrag';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 304, TO_CHAR (rec.hv_algemeen));
ELSIF rec.stdmelding_key = 104
THEN
v_errormsg := 'Fout toevoegen [Aanpassing gebouw/terrein]-investeringsbedrag';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 305, TO_CHAR (rec.aanp_gebter));
ELSIF rec.stdmelding_key = 105
THEN
v_errormsg := 'Fout toevoegen [Inventaris]-investeringsbedrag';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 306, TO_CHAR (rec.inventaris));
ELSIF rec.stdmelding_key = 101
THEN
IF rec.bouwkosten IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-bouwkosten';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 307, TO_CHAR (rec.bouwkosten));
END IF;
IF rec.vaste_inr IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-vaste_inr';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 308, TO_CHAR (rec.vaste_inr));
END IF;
IF rec.advieskosten IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-advieskosten';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 309, TO_CHAR (rec.advieskosten));
END IF;
IF rec.losse_inv IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-losse_inv';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 310, TO_CHAR (rec.losse_inv));
END IF;
IF rec.bijkomende_kosten IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-bijkomende_kosten';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 311, TO_CHAR (rec.bijkomende_kosten));
END IF;
IF rec.onvoorzien IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen [Project]-onvoorzien';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 312, TO_CHAR (rec.onvoorzien));
END IF;
ELSIF rec.stdmelding_key = 19
THEN
v_errormsg := 'Fout toevoegen [Investering]-investeringsrubriek';
v_rubriek :=
CASE
WHEN rec.terrein IS NOT NULL THEN 181
WHEN rec.inr_terreinen40k IS NOT NULL THEN 182
WHEN rec.nieuwbouw IS NOT NULL THEN 183
WHEN rec.gebouwen_aankoop IS NOT NULL THEN 184
WHEN rec.verbouwingen40k IS NOT NULL THEN 185
WHEN rec.gr_onderh8j25k IS NOT NULL THEN 186
WHEN rec.gr_onderh10j25k IS NOT NULL THEN 187
WHEN rec.gr_onderh15j25k IS NOT NULL THEN 188
WHEN rec.gr_onderh20j25k IS NOT NULL THEN 189
WHEN rec.gr_onderh25j25k IS NOT NULL THEN 190
WHEN rec.gr_onderh30j25k IS NOT NULL THEN 191
WHEN rec.gr_onderh40j25k IS NOT NULL THEN 192
WHEN rec.lesinv3k IS NOT NULL THEN 193
WHEN rec.overige_inv3k IS NOT NULL THEN 194
WHEN rec.computerapp3k IS NOT NULL THEN 195
WHEN rec.software3k IS NOT NULL THEN 196
--WHEN rec.transportmid5k IS NOT NULL THEN 197
ELSE 197
END;
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 301, TO_CHAR (v_rubriek));
v_errormsg := 'Fout toevoegen [Investering]-investeringsbedrag';
v_bedrag :=
COALESCE (rec.terrein,
rec.inr_terreinen40k,
rec.nieuwbouw,
rec.gebouwen_aankoop,
rec.verbouwingen40k,
rec.gr_onderh8j25k,
rec.gr_onderh10j25k,
rec.gr_onderh15j25k,
rec.gr_onderh20j25k,
rec.gr_onderh25j25k,
rec.gr_onderh30j25k,
rec.gr_onderh40j25k,
rec.lesinv3k,
rec.overige_inv3k,
rec.computerapp3k,
rec.software3k,
rec.transportmid5k);
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 302, TO_CHAR (v_bedrag));
END IF;
IF rec.noodzaak IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen noodzaak';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 314, rec.noodzaak);
END IF;
IF rec.vervuitbrvern IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen vervuitbrvern';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 315, rec.vervuitbrvern);
END IF;
IF rec.leverancier IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen leverancier';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 316, rec.leverancier);
END IF;
IF rec.maand IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen maand';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 317, rec.maand);
END IF;
IF rec.contactpers IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen contactpers';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 318, rec.contactpers);
END IF;
IF rec.toelichting IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen toelichting';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 319, rec.toelichting);
END IF;
v_count := v_count + 1;
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.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'BEGR_HV/#meldingen: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces BEGR_HV afgebroken!');
END NOVA_UPDATE_BEGR_HV;
/
CREATE OR REPLACE PROCEDURE NOVA_IMPORT_BEGR_INK (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';'; -- Field seperator
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden
v_plusje VARCHAR2 (4000);
v_jr VARCHAR2 (4000);
v_dl VARCHAR2 (4000);
v_actgrpnr VARCHAR2 (4000);
v_vestiging VARCHAR2 (4000);
v_aard VARCHAR2 (4000);
v_noodzaak VARCHAR2 (4000);
v_vervuitbrvern VARCHAR2 (4000);
v_leverancier VARCHAR2 (4000);
v_maand VARCHAR2 (4000);
v_contactpers VARCHAR2 (4000);
v_invbedrag VARCHAR2 (4000);
v_afschrkosten VARCHAR2 (4000);
CURSOR c1
IS
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM nova_imp_begr_ink;
COMMIT;
FOR rec IN c1
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- Code verbijzondering;Verb.code omschrijving;Budgethouder;Soort code
--TOTAAL;;;;INVESTERINGEN + AFSCHRIJVINGSKOSTEN 2025;;;;;;Budgetcode:;;
--+;jr;dl;ActGrpNr;Vestiging; - aard van de beoogde uitgaven;Noodzakelijkofwenselijk;Vervanging,uitbreiding,vernieuwing,of combinatie;Naam leverancier;Gewenste maand van levering;Contact -persoon;Investerings -bedrag (incl.btw);Afschrijvingskosten
fac.imp_getfield (v_newline, c_delim, v_plusje);
fac.imp_getfield (v_newline, c_delim, v_jr);
fac.imp_getfield (v_newline, c_delim, v_dl);
fac.imp_getfield (v_newline, c_delim, v_actgrpnr);
fac.imp_getfield (v_newline, c_delim, v_vestiging);
fac.imp_getfield (v_newline, c_delim, v_aard);
fac.imp_getfield (v_newline, c_delim, v_noodzaak);
fac.imp_getfield (v_newline, c_delim, v_vervuitbrvern);
fac.imp_getfield (v_newline, c_delim, v_leverancier);
fac.imp_getfield (v_newline, c_delim, v_maand);
fac.imp_getfield (v_newline, c_delim, v_contactpers);
fac.imp_getfield (v_newline, c_delim, v_invbedrag);
fac.imp_getfield (v_newline, c_delim, v_afschrkosten);
v_aanduiding := '[' || TRIM (v_actgrpnr) || '|' || TRIM (v_vestiging) || '|' || TRIM (v_aard) || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_plusje) = '+'
AND UPPER (v_jr) = 'JR'
AND UPPER (v_dl) = 'DL'
AND UPPER (v_actgrpnr) = 'ACTGRPNR'
AND UPPER (v_vestiging) = 'VESTIGING'
--AND UPPER (v_aard) = ' - AARD VAN DE BEOOGDE UITGAVEN'
--AND UPPER (v_noodzaak) = 'NOODZAKELIJKOFWENSELIJK'
--AND UPPER (v_vervuitbrvern) = 'VERVANGING,UITBREIDING,VERNIEUWING,OF COMBINATIE'
AND UPPER (v_leverancier) = 'NAAM LEVERANCIER'
--AND UPPER (v_maand) = 'GEWENSTE MAAND VAN LEVERING'
--AND UPPER (v_contactpers) = 'CONTACT -PERSOON'
--AND UPPER (v_invbedrag) = 'INVESTERINGS -BEDRAG (INCL.BTW)'
AND UPPER (v_afschrkosten) = 'AFSCHRIJVINGSKOSTEN'
THEN
header_is_valid := 1;
END IF;
-- Lege regels, regels met alleen een '+' overslaan en
ELSIF NOT (rec.regellengte = 0 OR (rec.regellengte = 1 AND SUBSTR (rec.fac_imp_file_line, 1, 1) = '+') OR v_aard IS NULL)
THEN
BEGIN
v_count_tot := v_count_tot + 1;
-- Controleer kritische veldwaarden
IF fac.safe_to_number (REPLACE (REPLACE (v_invbedrag, '.', ''), ',', '.')) IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen investeringsbedrag', 'Regel overgeslagen!');
v_ongeldig := 1;
ELSIF fac.safe_to_number (v_actgrpnr) IS NULL OR fac.safe_to_number (v_actgrpnr) NOT BETWEEN 1 AND 17
THEN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Fout bepalen investeringsrubriek', 'Regel overgeslagen!');
v_ongeldig := 1;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO nova_imp_begr_ink (jr,
dl,
actgrpnr,
vestiging,
aard,
noodzaak,
vervuitbrvern,
leverancier,
maand,
contactpers,
invbedrag,
afschrkosten)
VALUES (TRIM (v_jr),
TRIM (v_dl),
TRIM (v_actgrpnr),
TRIM (v_vestiging),
TRIM (v_aard),
TRIM (v_noodzaak),
TRIM (v_vervuitbrvern),
TRIM (v_leverancier),
TRIM (v_maand),
TRIM (v_contactpers),
fac.safe_to_number (REPLACE (REPLACE (v_invbedrag, '.', ''), ',', '.')),
fac.safe_to_number (REPLACE (REPLACE (v_afschrkosten, '.', ''), ',', '.')));
v_count_imp := v_count_imp + 1;
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.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
END IF;
END;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'BEGR_INK/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'BEGR_INK/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces BEGR_INK afgebroken!');
END NOVA_IMPORT_BEGR_INK;
/
-- 181/ 17 Bestellen-Begroting-Investering
-- 782/321 Investeringsrubriek
-- 783/322 Investeringsbedrag (incl. BTW)
-- 800/323 Afschrijvingskosten
-- 795/324 Noodzakelijk of wenselijk
-- 796/325 Vervanging, uitbreiding, vernieuwing of combinatie
-- 797/326 Naam leverancier
-- 798/327 Gewenste maand van levering
-- 799/328 Contactpersoon
-- 821/329 Budgethouder
-- 822/330 Investeringsstatus
CREATE OR REPLACE PROCEDURE NOVA_UPDATE_BEGR_INK (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER (10);
v_melding_key NUMBER (10);
-- Toevoegen meldingen tbv. (jaar)begroting INK.
CURSOR c_ink
IS
SELECT '[' || x.actgrpnr || '|' || x.vestiging || '|' || SUBSTR (x.aard, 1, 30) || '] ' aanduiding,
--x.jr, x.dl, x.actgrpnr, x.vestiging,
x.aard,
x.noodzaak,
x.vervuitbrvern,
x.leverancier,
x.maand,
x.contactpers,
17 stdmelding_key,
COALESCE (g.alg_locatie_key, l.alg_locatie_key, 21) locatie_key, -- Als locatie niet kan worden bepaald, dan 21=Onbekend bij migratie
g.alg_gebouw_key gebouw_key, -- Als locatie niet kan worden bepaald, dan NULL
CASE
WHEN fac.safe_to_number (x.actgrpnr) = 1 THEN 181
WHEN fac.safe_to_number (x.actgrpnr) = 2 THEN 182
WHEN fac.safe_to_number (x.actgrpnr) = 3 THEN 183
WHEN fac.safe_to_number (x.actgrpnr) = 4 THEN 184
WHEN fac.safe_to_number (x.actgrpnr) = 5 THEN 185
WHEN fac.safe_to_number (x.actgrpnr) = 6 THEN 186
WHEN fac.safe_to_number (x.actgrpnr) = 7 THEN 187
WHEN fac.safe_to_number (x.actgrpnr) = 8 THEN 188
WHEN fac.safe_to_number (x.actgrpnr) = 9 THEN 189
WHEN fac.safe_to_number (x.actgrpnr) = 10 THEN 190
WHEN fac.safe_to_number (x.actgrpnr) = 11 THEN 191
WHEN fac.safe_to_number (x.actgrpnr) = 12 THEN 192
WHEN fac.safe_to_number (x.actgrpnr) = 13 THEN 193
WHEN fac.safe_to_number (x.actgrpnr) = 14 THEN 194
WHEN fac.safe_to_number (x.actgrpnr) = 15 THEN 195
WHEN fac.safe_to_number (x.actgrpnr) = 16 THEN 196
--WHEN fac.safe_to_number (x.actgrpnr) = 17 THEN 197
ELSE 197
END
rubriek,
x.invbedrag,
x.afschrkosten,
TO_CHAR (ADD_MONTHS (SYSDATE, 2), 'yyyy') jaar
FROM nova_imp_begr_ink x,
alg_v_aanweziggebouw g,
alg_v_aanweziglocatie l
WHERE UPPER (x.vestiging) = g.alg_gebouw_code(+)
AND UPPER (x.vestiging) = UPPER (l.alg_locatie_code(+))
ORDER BY x.actgrpnr, COALESCE (g.alg_locatie_key, l.alg_locatie_key, 21), COALESCE (g.alg_gebouw_key, 12761), aard;
BEGIN
v_count := 0;
FOR rec IN c_ink
LOOP
BEGIN
v_errormsg := 'Fout toevoegen INK-melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_meldbron_nr,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_behandelaar_key,
mld_melding_behandelaar2_key,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_opmerking)
VALUES ('MLD',
1, -- Onbekend
NULL,
rec.locatie_key,
rec.gebouw_key,
fac.safe_to_date ('01-01-' || rec.jaar, 'dd-mm-yyyy'),
NULL, -- Leeg/TODO???
rec.aard,
TO_NUMBER (NULL), -- mld_melding_behandelaar_key
TO_NUMBER (NULL), -- mld_melding_behandelaar2_key
TO_NUMBER (NULL), -- mld_ins_discipline_key
rec.stdmelding_key,
NULL,
--TO_DATE (NULL),
fac.safe_to_date ('31-12-' || rec.jaar, 'dd-mm-yyyy'),
3561, -- Onbekend bij migratie/import
3561, -- Onbekend bij migratie/import
2, -- Nieuw
3,
NULL)
RETURNING mld_melding_key
INTO v_melding_key;
fac.trackaction ('MLDNEW', v_melding_key, NULL, SYSDATE, 'Ge<EFBFBD>mporteerd vanuit INK-sjabloon');
-- Moet bestaan!
v_errormsg := 'Fout toevoegen investeringsrubriek';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 321, TO_CHAR (rec.rubriek));
-- Moet bestaan!
v_errormsg := 'Fout toevoegen investeringsbedrag';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 322, TO_CHAR (rec.invbedrag));
--IF rec.afschrkosten IS NOT NULL
--THEN
-- v_errormsg := 'Fout toevoegen afschrijvingskosten';
-- INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
-- VALUES (v_melding_key, 323, TO_CHAR (rec.afschrkosten));
--END IF;
IF rec.noodzaak IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen noodzaak';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 324, rec.noodzaak);
END IF;
IF rec.vervuitbrvern IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen vervuitbrvern';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 325, rec.vervuitbrvern);
END IF;
IF rec.leverancier IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen leverancier';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 326, rec.leverancier);
END IF;
IF rec.maand IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen maand';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 327, rec.maand);
END IF;
IF rec.contactpers IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen contactpers';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 328, rec.contactpers);
END IF;
v_count := v_count + 1;
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.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'BEGR_INK/#meldingen: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := TRIM (v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')');
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces BEGR_INK afgebroken!');
END NOVA_UPDATE_BEGR_INK;
/
CREATE OR REPLACE VIEW NOVA_V_NOTI_CNTREMINDER
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT 'CNTMAI',
'',
COALESCE (c.prs_perslid_key_eig, 765), -- 765=dslager@novacollege.nl
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|| ' ('
--|| c.cnt_contract_omschrijving
--|| ' '
|| TRIM (b.prs_bedrijf_naam)
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY')
|| ' worden verlengd of opgezegd',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_contract_status = 0 -- Definitief
AND c.cnt_contract_key = cnt.getnieuwsteversiekey (c.cnt_contract_key)
--AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)
AND TRUNC (cnt.cnt_getrappeldatum (c.cnt_contract_key)) = TRUNC (SYSDATE)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_perslid_key_eig IS NOT NULL;
/*
UNION ALL -- Naar beheerder=Inkoop
SELECT 'CNTMAI',
'',
c.prs_perslid_key_beh,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|| ' ('
--|| c.cnt_contract_omschrijving
--|| ' '
|| TRIM (b.prs_bedrijf_naam)
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY')
|| ' worden verlengd of opgezegd',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_contract_status = 0 -- Definitief
AND c.cnt_contract_key = cnt.getnieuwsteversiekey (c.cnt_contract_key)
--AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)
AND TRUNC (cnt.cnt_getrappeldatum (c.cnt_contract_key)) = TRUNC (SYSDATE)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
UNION ALL -- Naar _FACILITOR
SELECT 'CNTMAI',
'',
3,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|| ' ('
--|| c.cnt_contract_omschrijving
--|| ' '
|| TRIM (b.prs_bedrijf_naam)
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY')
|| ' worden verlengd of opgezegd',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_contract_status = 0 -- Definitief
AND c.cnt_contract_key = cnt.getnieuwsteversiekey (c.cnt_contract_key)
--AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)
AND TRUNC (cnt.cnt_getrappeldatum (c.cnt_contract_key)) = TRUNC (SYSDATE)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND NOT EXISTS (SELECT 1
FROM cnt_v_aanwezigcontract
WHERE cnt_contract_status = 0
AND cnt_contract_key = cnt.getnieuwsteversiekey (cnt_contract_key)
--AND SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key) AND cnt.cnt_getopzegdatum (c.cnt_contract_key)
AND TRUNC (cnt.cnt_getrappeldatum (cnt_contract_key)) = TRUNC (SYSDATE)
AND cnt_contract_key < c.cnt_contract_key);
*/
-- Notificatie Intern Transport Vertrouwelijke Documenten (of Examentransport)
-- naar de koerier Schotpoort (CUST01), naar het Servicepunt op de ophaal- en
-- bezorglocatie (CUST02) en in specifieke gevallen het Examenbureau (CUST03).
CREATE OR REPLACE VIEW NOVA_V_NOTI_ITVD
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##DAT##', datum.mld_kenmerkmelding_waarde),
m.mld_melding_key,
NULL,
NULL,
NULL,
ud.fac_usrdata_omschr2 xemail, -- Schotpoort
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
fac_tracking t,
fac_v_aanwezigusrdata ud,
(SELECT * FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key = 64) datum, -- Wanneer
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 24 -- Intern transport vertrouwelijke documenten
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 52 -- MLDNEW
AND ud.fac_usrtab_key = 41 -- ITVD/Spec. ontv.
AND COALESCE (ud.fac_usrdata_vervaldatum, SYSDATE + 1) > SYSDATE
AND ud.fac_usrdata_key = 221 -- Schotpoort
AND m.mld_melding_key = datum.mld_melding_key(+)
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ITVD'
AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
UNION ALL
SELECT x.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (REPLACE (x.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (x.mld_melding_key)), '##DAT##', datum.mld_kenmerkmelding_waarde), '##LOC##', '/uitgaand ' || COALESCE (locvan.alg_locatie_omschrijving, altlocvan.alg_locatie_omschrijving)),
x.mld_melding_key,
NULL,
NULL,
NULL,
COALESCE (locvan.alg_locatie_email, altlocvan.alg_locatie_email) xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM (SELECT sn.fac_srtnotificatie_code, sn.fac_srtnotificatie_oms, m.mld_melding_key
FROM mld_melding m, fac_tracking t, fac_srtnotificatie sn, fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 25 -- Examentransport uitgaand
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 52 -- MLDNEW
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ITVD'
AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))) x
LEFT JOIN mld_v_aanwezigkenmerkmelding datum
ON x.mld_melding_key = datum.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 65 AND mld_kenmerk_key = datum.mld_kenmerk_key) -- Wanneer
LEFT JOIN mld_v_aanwezigkenmerkmelding route
ON x.mld_melding_key = route.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 71 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route
LEFT JOIN fac_v_aanwezigusrdata ud_route
ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key
LEFT JOIN alg_locatie locvan -- Van-locatie = ID na 1e '@' tot '/'!
ON fac.safe_to_number (SUBSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1),
1,
INSTR (SUBSTR (ud_route.fac_usrdata_omschr2, INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 1) + 1), '/', 1) - 1)) = locvan.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altvan
ON x.mld_melding_key = altvan.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 86 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie
LEFT JOIN alg_locatie altlocvan
ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key
UNION ALL
SELECT x.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (REPLACE (x.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (x.mld_melding_key)), '##DAT##', datum.mld_kenmerkmelding_waarde), '##LOC##', '/inkomend ' || COALESCE (locnaar.alg_locatie_omschrijving, altlocnaar.alg_locatie_omschrijving)),
x.mld_melding_key,
NULL,
NULL,
NULL,
COALESCE (locnaar.alg_locatie_email, altlocnaar.alg_locatie_email) xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM (SELECT sn.fac_srtnotificatie_code, sn.fac_srtnotificatie_oms, m.mld_melding_key
FROM mld_melding m, fac_tracking t, fac_srtnotificatie sn, fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 26 -- Examentransport inkomend
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 52 -- MLDNEW
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ITVD'
AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))) x
LEFT JOIN mld_v_aanwezigkenmerkmelding datum
ON x.mld_melding_key = datum.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 66 AND mld_kenmerk_key = datum.mld_kenmerk_key) -- Wanneer
LEFT JOIN mld_v_aanwezigkenmerkmelding route
ON x.mld_melding_key = route.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 72 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route
LEFT JOIN fac_v_aanwezigusrdata ud_route
ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key
LEFT JOIN alg_locatie locnaar -- Naar-locatie = ID na 2e '@'!
ON fac.safe_to_number (SUBSTR (ud_route.fac_usrdata_omschr2,
INSTR (ud_route.fac_usrdata_omschr2, '@', 1, 2) + 1)) = locnaar.alg_locatie_key
LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar
ON x.mld_melding_key = altnaar.mld_melding_key
AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 90 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie
LEFT JOIN alg_locatie altlocnaar
ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##DAT##', datum.mld_kenmerkmelding_waarde),
m.mld_melding_key,
NULL,
NULL,
NULL,
ud.fac_usrdata_omschr xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
fac_tracking t,
fac_v_aanwezigusrdata ud,
(SELECT * FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key = 64) datum, -- Wanneer
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 24 -- Intern transport vertrouwelijke documenten
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 52 -- MLDNEW
AND m.prs_perslid_key_voor = fac.safe_to_number (ud.fac_usrdata_code) -- Door specifieke Examenbureau-medewerker, dan naar geconfigureerde e-mail adres!
AND ud.fac_usrtab_key = 41 -- ITVD/Spec. ontv.
AND COALESCE (ud.fac_usrdata_vervaldatum, SYSDATE + 1) > SYSDATE
AND m.mld_melding_key = datum.mld_melding_key(+)
AND sn.fac_srtnotificatie_code = 'CUST03'
AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ITVD'
AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE));
-- Klantspecifieke MLD2BO-notificatie naar Roosterbureau-medewerker met WP op
-- dezelfde locatie als waarvoor de Aanvraag lesruimte(n) is geregistreerd.
CREATE OR REPLACE VIEW NOVA_V_NOTI_ROOSTERBUREAU
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (
--REPLACE (
--REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
--'##DISC##',
--md.ins_discipline_omschrijving),
--'##STDMLD##',
--sm.mld_stdmelding_omschrijving),
'##GEB##',
COALESCE (wpg.alg_gebouw_code, wpg.alg_locatie_code)),
m.mld_melding_key,
NULL,
NULL,
NULL,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
--mld_stdmelding sm,
--mld_discipline md,
fac_tracking t,
fac_gebruikersgroep gg,
prs_perslidwerkplek pw,
prs_v_werkplek_gegevens wpg,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 29 -- Aanvraag lesruimte(n)
--AND m.mld_stdmelding_key = sm.mld_stdmelding_key
--AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 52 -- MLDNEW
AND gg.fac_groep_key = 125 -- Roosterbureau
AND gg.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = wpg.prs_werkplek_key
AND wpg.alg_locatie_key = m.mld_alg_locatie_key -- WP op melding-locatie!
AND sn.fac_srtnotificatie_code = 'CUST04'
AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ROOSTERBUREAU'
AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE));
/* DEPRECATED
CREATE OR REPLACE VIEW NOVA_V_RAP_VESTIGINGEN2TD
AS
SELECT alg_locatie_key locatie_key,
alg_locatie_code code,
alg_locatie_omschrijving naam,
alg_locatie_adres adres,
alg_locatie_postcode postcode,
alg_locatie_plaats plaats,
alg_locatie_land land,
alg_locatie_vervaldatum vervaldatum,
COALESCE (fac.gettrackingdate ('ALGLUP', alg_locatie_key), alg_locatie_aanmaak) last_change
FROM alg_v_aanweziglocatie;
CREATE OR REPLACE VIEW NOVA_V_RAP_RUIMTEN2TD
AS
SELECT r.alg_ruimte_key ruimte_key,
r.alg_ruimte_nr ruimtenr,
l.alg_locatie_code || '-' || g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr
aanduiding,
sr.alg_srtruimte_omschrijving ruimtefunctie,
l.alg_locatie_code locatiecode,
l.alg_locatie_omschrijving locatienaam,
l.alg_locatie_plaats locatieplaats,
r.alg_ruimte_aanmaak aanmaak,
r.alg_ruimte_verwijder verwijder,
COALESCE (r.alg_ruimte_verwijder, t.fac_tracking_datum, r.alg_ruimte_aanmaak)
last_change,
t.fac_tracking_oms last_omschr
FROM alg_ruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l,
(SELECT t.*
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 169 -- ALGRUP
AND NOT EXISTS
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 169 -- ALGRUP
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key)) t
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_key = t.fac_tracking_refkey
--AND COALESCE (r.alg_ruimte_verwijder, t.fac_tracking_datum, r.alg_ruimte_aanmaak) > fac.safe_to_date ('01-12-2024', 'dd-mm-yyyy')
AND COALESCE (r.alg_ruimte_verwijder, t.fac_tracking_datum, r.alg_ruimte_aanmaak) > TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm');
*/
CREATE OR REPLACE VIEW NOVA_V_RAP_RUIMTEN2TD
AS
SELECT TO_CHAR (r.alg_ruimte_aanmaak, 'yyyy-mm') maand,
r.alg_ruimte_aanmaak last_change,
'AANGEMAAKT' last_omschr,
l.alg_locatie_code locatiecode,
l.alg_locatie_omschrijving locatienaam,
l.alg_locatie_plaats locatieplaats,
r.alg_ruimte_key ruimte_key,
r.alg_ruimte_nr ruimtenr,
l.alg_locatie_code || '-' || g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr
aanduiding,
sr.alg_srtruimte_omschrijving ruimtefunctie,
r.alg_ruimte_omschrijving ruimteomschrijving
FROM alg_ruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_aanmaak > fac.safe_to_date ('01-10-2024', 'dd-mm-yyyy')
UNION ALL
SELECT TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') maand,
t.fac_tracking_datum last_change,
t.fac_tracking_oms last_omschr,
l.alg_locatie_code locatiecode,
l.alg_locatie_omschrijving locatienaam,
l.alg_locatie_plaats locatieplaats,
r.alg_ruimte_key ruimte_key,
r.alg_ruimte_nr ruimtenr,
l.alg_locatie_code || '-' || g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr
aanduiding,
sr.alg_srtruimte_omschrijving ruimtefunctie,
r.alg_ruimte_omschrijving ruimteomschrijving
FROM alg_ruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l,
--(SELECT t.*
-- FROM fac_tracking t
-- WHERE t.fac_srtnotificatie_key = 169) t -- ALGRUP
(SELECT t.*
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 169 -- ALGRUP
AND NOT EXISTS
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 169 -- ALGRUP
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key)) t
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_key = t.fac_tracking_refkey
AND t.fac_tracking_datum > fac.safe_to_date ('01-10-2024', 'dd-mm-yyyy')
UNION ALL
SELECT TO_CHAR (r.alg_ruimte_verwijder, 'yyyy-mm') maand,
r.alg_ruimte_verwijder last_change,
'VERWIJDERD' last_omschr,
l.alg_locatie_code locatiecode,
l.alg_locatie_omschrijving locatienaam,
l.alg_locatie_plaats locatieplaats,
r.alg_ruimte_key ruimte_key,
r.alg_ruimte_nr ruimtenr,
l.alg_locatie_code || '-' || g.alg_gebouw_code || '-' || v.alg_verdieping_code || '-' || r.alg_ruimte_nr
aanduiding,
sr.alg_srtruimte_omschrijving ruimtefunctie,
r.alg_ruimte_omschrijving ruimteomschrijving
FROM alg_ruimte r, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_verwijder > fac.safe_to_date ('01-10-2024', 'dd-mm-yyyy')
;
CREATE OR REPLACE VIEW NOVA_V_NOTI_ALG_LASTCHANGED
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code, -- CUST05
NULL,
NULL,
sn.fac_srtnotificatie_oms,
r.fac_usrrap_key,
NULL,
NULL,
NULL,
'eboer@novacollege.nl' xemail, -- TODO
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM nova_v_rap_ruimten2td v, fac_usrrap r, fac_srtnotificatie sn
WHERE TO_CHAR (SYSDATE, 'mm') = '01' -- Maandelijks op de 1e
AND v.last_change > TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm')
AND UPPER (r.fac_usrrap_view_name) = 'NOVA_V_RAP_RUIMTEN2TD'
AND r.fac_usrrap_functie = 1 -- Via stylesheet
AND sn.fac_srtnotificatie_code = 'CUST05'
AND NOT EXISTS
(SELECT 1
FROM fac_usrrap
WHERE UPPER (fac_usrrap_view_name) = 'NOVA_V_RAP_RUIMTEN2TD'
AND fac_usrrap_functie = 1 -- Via stylesheet
AND fac_usrrap_key > r.fac_usrrap_key);
/*
Ter inspiratie de volgende 4 real-time monitors (of grafieken) gerealiseerd:
1. Staafdiagram met lopende meldingen per standaardmelding met de kleuren: [a] blauw=meer dan 2 werkdagen voor geplande einddatum (van de melding!) en actie bij aanvrager, [b] groen=meer dan 2 werkdagen voor geplande einddatum en actie bij backoffice (niet bij aanvrager), [c] oranje=minder dan 2 werkdagen voor geplande einddatum en [d] rood=te laat.
2. Staafdiagram met lopende meldingen per locatie en zie verder 1.
3. Staafdiagram met lopende opdrachten die zijn uitgegeven per externe uitvoerder met de kleuren: [a] groen=meer dan 2 werkdagen voor geplande einddatum (van de opdracht!), [b] oranje=minder dan 2 werkdagen voor geplande einddatum en [c] rood=te laat.
4. Lijndiagram met afgehandelde melding per maand voor elke standaardmelding.
TODO: Staafdiagrammen (1 t/m 3) klikbaar maken?
*/
CREATE OR REPLACE VIEW NOVA_V_UDR_MLD_OPEN
(
mld_melding_key,
meldingid,
vakgroeptype,
--vakgroep_key,
fclt_3d_discipline_key,
vakgroep,
standaardmelding,
--locatie_key,
fclt_3d_locatie_key,
locatiecode,
locatie,
status,
behandelteam_key,
behandelteam,
mldnew,
melding_datum,
geplande_einddatum,
--uitvoertijd,
optijd_telaat
)
AS
SELECT x.mld_melding_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingid,
x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_key vakgroep_key,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving standaardmelding,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.mld_statuses_omschrijving status,
x.behandelteam_key,
COALESCE (x.behandelteam, '<Geen>'),
x.mldnew,
x.mld_melding_datum,
x.mld_melding_einddatum,
--TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd,
DECODE (SIGN (x.gepland_over_2wd - SYSDATE),
-1,
DECODE (SIGN (x.mld_melding_einddatum - SYSDATE),
-1, 'Te laat', -- Rood
'Over 2 dagen te laat'), -- Oranje
DECODE (BITAND (x.mld_melding_actiecode, 1),
1, 'Actie bij behandelaar', -- Groen en "alle tijd"
'Actie bij aanvrager')) -- Blauw en "alle tijd"
optijd_telaat
FROM (SELECT m.mld_melding_key,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
ms.mld_statuses_omschrijving,
bt.ins_discipline_key behandelteam_key,
bt.ins_discipline_omschrijving behandelteam,
--m.mld_melding_spoed,
fac.gettrackingdate ('MLDNEW', m.mld_melding_key) mldnew,
m.mld_melding_datum,
m.mld_melding_einddatum,
--m.mld_melding_t_uitvoertijd,
fac.datumtijdplusuitvoertijd (
m.mld_melding_einddatum - 14,
mld.getactualuitvoer (m.mld_melding_einddatum - 14, m.mld_melding_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 2,
'D')
gepland_over_2wd, -- Twee werkdagen voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf)
m.mld_melding_actiecode -- 1=bij behandelaar/2=bij aanvrager/129=reactie aanvrager/257=info aanvrager/258=actie aanvrager
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
mld_statuses ms,
mld_discipline bt
WHERE 1 = 1
--AND m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
--AND fac.gettrackingdate ('MLDNEW', m.mld_melding_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding)
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_ins_discipline_key = bt.ins_discipline_key(+)) x;
CREATE OR REPLACE VIEW NOVA_V_UDR_ORD_OPEN
(
mld_opdr_key,
opdrachtid,
opdrachttype_key,
opdrachttype,
uitvoerende_key,
uitvoerende,
vakgroeptype,
--fclt_3d_discipline_key,
vakgroep_key,
vakgroep,
standaardmelding,
--fclt_3d_locatie_key,
locatie_key,
locatiecode,
locatie,
status,
ordnew,
opdracht_datum,
opdracht_verzonden,
geplande_einddatum,
--uitvoertijd,
optijd_telaat
)
AS
SELECT x.mld_opdr_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
x.mld_typeopdr_key,
x.mld_typeopdr_omschrijving,
x.mld_uitvoerende_keys,
--DECODE (x.prs_bedrijf_naam,
-- NULL,
-- x.prs_perslid_naam_full,
-- x.prs_bedrijf_naam)
x.prs_bedrijf_naam uitvoerende,
x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_key vakgroep_key,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving standaardmelding,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.mld_statusopdr_omschrijving status,
x.ordnew,
x.mld_opdr_datumbegin,
x.mld_opdr_verzonden,
x.mld_opdr_einddatum,
--TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd,
DECODE (SIGN (x.gepland_over_2wd - SYSDATE),
-1,
DECODE (SIGN (x.mld_opdr_einddatum - SYSDATE),
-1, 'Te laat', -- Rood
'Over 2 dagen te laat'), -- Oranje
'Op tijd') -- Groen en "alle tijd"
optijd_telaat
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
o.mld_uitvoerende_keys,
lev.prs_bedrijf_naam,
--iuv.prs_perslid_naam_full,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
os.mld_statusopdr_omschrijving,
--m.mld_melding_spoed,
fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) ordnew,
o.mld_opdr_datumbegin,
o.mld_opdr_verzonden,
o.mld_opdr_einddatum,
--m.mld_melding_t_uitvoertijd,
fac.datumtijdplusuitvoertijd (
o.mld_opdr_einddatum - 14,
mld.getactualuitvoer (o.mld_opdr_einddatum - 14, o.mld_opdr_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 2,
'D')
gepland_over_2wd -- Twee werkdagen voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf)
FROM mld_opdr o,
mld_typeopdr ot,
prs_bedrijf lev,
--prs_v_perslid_fullnames iuv,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
mld_statusopdr os
WHERE 1 = 1
--AND o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
--AND fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Open opdrachten
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
--AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding)
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key) x;
CREATE OR REPLACE VIEW NOVA_V_UDR_MLD_AFM
(
mldafm_maand,
mld_melding_key,
meldingid,
vakgroeptype,
--vakgroep_key,
fclt_3d_discipline_key,
vakgroep,
standaardmelding,
--locatie_key,
fclt_3d_locatie_key,
locatiecode,
locatie,
status
)
AS
SELECT TO_CHAR (x.mldafm, 'yyyy-mm') mldafm_maand,
x.mld_melding_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingid,
x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_key vakgroep_key,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving standaardmelding,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.mld_statuses_omschrijving status
FROM (SELECT m.mld_melding_key,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
ms.mld_statuses_omschrijving,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) mldafm
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
mld_statuses ms
WHERE fac.gettrackingdate ('MLDAFM', m.mld_melding_key) > TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm')
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_status IN (1, 5, 6) -- Gesloten meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding)
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_melding_status = ms.mld_statuses_key) x;
-- Rapportage voor Joost Knol?
CREATE OR REPLACE VIEW NOVA_V_BENQUE_ARTIKELEN
AS
SELECT rd.ins_discipline_key catalogus_key,
rd.ins_discipline_aanmaak catalogus_aanmaak,
rd.ins_discipline_verwijder catalogus_verwijder,
rd.ins_discipline_omschrijving catalogus,
ra.res_artikel_key artikel_key,
ra.res_artikel_aanmaak aangemaakt,
--ra.res_artikel_vervaldatum vervallen,
--ra.res_artikel_verwijder verwijderd,
ra.res_artikel_nr artikelnummer,
ra.res_artikel_omschrijving omschrijving,
ra.res_artikel_opmerking opmerking,
ra.res_artikel_eenheid eenheid,
ra.res_artikel_prijs prijs,
ra.res_artikel_btw btw,
ra.res_artikel_minimum minimum_bestelaantal,
DECODE (ra.res_artikel_flags, 1, 'Ja', 'Nee')
meermaals_reserveerbaar
FROM res_artikel ra, res_discipline rd
WHERE ra.res_artikel_verwijder IS NULL
AND COALESCE (ra.res_artikel_vervaldatum, SYSDATE) >
TRUNC (SYSDATE)
AND ra.res_discipline_key = rd.ins_discipline_key
AND (rd.ins_discipline_key IN (321, 341, 361, 362, 363, 364, 365, 366, 367)
OR rd.ins_discipline_externnr = 'BENQ'
OR EXISTS
(SELECT 1
FROM res_disc_params
WHERE prs_bedrijf_key = 3661
AND res_ins_discipline_key = rd.ins_discipline_key));
-- HV-opdrachten/uitnutting!
CREATE OR REPLACE VIEW NOVA_V_RAP_HV_OPDRACHTEN
AS
SELECT o.mld_opdr_key,
fac.safe_to_number (m.mld_meldbron_nr) begr_nr, -- Of leeg voor Uitvoeringsopdrachten?
-1 begr_reg_kkey,
sm.mld_stdmelding_omschrijving standaardmelding,
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
opdracht_nr,
NULL axx_ref,
NULL bgt_nr,
NULL b_nr,
--DECODE (kpg.prs_kostenplaatsgrp_nr, NULL, '', kpg.prs_kostenplaatsgrp_nr || '-') || kpg.prs_kostenplaatsgrp_oms kostenplaats_groep,
kp.prs_kostenplaats_upper kostenplaats,
COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
kostensoort,
ot.mld_typeopdr_key opdrachttype_key,
ot.mld_typeopdr_omschrijving opdrachttype,
(SELECT naam FROM mld_v_uitvoerende WHERE mld_uitvoerende_key = o.mld_uitvoerende_keys)
uitvoerende,
o.mld_statusopdr_key status_key,
(SELECT mld_statusopdr_omschrijving FROM mld_statusopdr WHERE mld_statusopdr_key = o.mld_statusopdr_key)
status,
--TO_CHAR (o.mld_opdr_kosten, 'fm999999999999999990.00') kosten
o.mld_opdr_kosten
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_kostenplaats kp,
--prs_kostenplaatsgrp kpg,
prs_kostensoort kso,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_key = 5 -- Uitvoeringsopdracht
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_discipline_key IN (130, 264) -- HV-Begroting+AXX-Inkoop/Huisvesting
AND md.ins_discipline_key = 130 -- HV-Begroting
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
--AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
UNION ALL
SELECT o.mld_opdr_key,
DECODE (o.mld_opdr_ordernr,
'B-04189', 900,
'B-04190', 900,
'B-04191', 900,
'B-04192', 900,
'B-04193', 900,
'B-04194', 900,
'B-04202', 901,
'B-04203', 901,
'B-04204', 901,
'B-04205', 901,
'B-04206', 901,
'B-04207', 901,
'B-04196', 902,
'B-04197', 902,
'B-04198', 902,
'B-04199', 902,
'B-04200', 902,
'B-04201', 902,
'B-04208', 903,
'B-04209', 903,
'B-04210', 903,
'B-04211', 903,
'B-04212', 903,
'B-04213', 903,
fac.safe_to_number (o.mld_opdr_ordernr))
begr_nr,
DECODE (o.mld_opdr_ordernr,
'B-04189', 307,
'B-04190', 309,
'B-04191', 310,
'B-04192', 312,
'B-04193', 311,
'B-04194', 308,
'B-04202', 307,
'B-04203', 309,
'B-04204', 310,
'B-04205', 312,
'B-04206', 311,
'B-04207', 308,
'B-04196', 307,
'B-04197', 309,
'B-04198', 310,
'B-04199', 312,
'B-04200', 311,
'B-04201', 308,
'B-04208', 307,
'B-04209', 308,
'B-04210', 309,
'B-04211', 310,
'B-04212', 311,
'B-04213', 312,
-1)
begr_reg_kkey,
sm.mld_stdmelding_omschrijving standaardmelding,
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
opdracht_nr,
DECODE (
INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:'),
0, NULL,
TRIM (SUBSTR (
SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:') + 15),
1,
INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:') + 15) || CHR (13), CHR (13)) - 1)))
axx_ref,
DECODE (
INSTR (o.mld_opdr_omschrijving, 'BGT'),
0, NULL,
SUBSTR (
SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')),
1,
INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1))
bgt_nr,
DECODE (SUBSTR (o.mld_opdr_ordernr, 1, 1), 'B', o.mld_opdr_ordernr, NULL)
b_nr,
--DECODE (kpg.prs_kostenplaatsgrp_nr, NULL, '', kpg.prs_kostenplaatsgrp_nr || '-') || kpg.prs_kostenplaatsgrp_oms kostenplaats_groep,
kp.prs_kostenplaats_upper kostenplaats,
COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
kostensoort,
ot.mld_typeopdr_key opdrachttype_key,
ot.mld_typeopdr_omschrijving opdrachttype,
(SELECT naam FROM mld_v_uitvoerende WHERE mld_uitvoerende_key = o.mld_uitvoerende_keys)
uitvoerende,
o.mld_statusopdr_key status_key,
(SELECT mld_statusopdr_omschrijving FROM mld_statusopdr WHERE mld_statusopdr_key = o.mld_statusopdr_key)
status,
--TO_CHAR (o.mld_opdr_kosten, 'fm999999999999999990.00') kosten
o.mld_opdr_kosten
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_kostenplaats kp,
--prs_kostenplaatsgrp kpg,
prs_kostensoort kso,
prs_kostensoort ksm,
prs_kostensoort ksv
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_key = 81 -- Werkopdracht (gemigreerd)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_discipline_key IN (130, 264) -- HV-Begroting+AXX-Inkoop/Huisvesting
AND md.ins_discipline_key = 264 -- AXX-Inkoop/Huisvesting
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
--AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND INSTR (o.mld_opdr_omschrijving, 'BGT') > 0
--AND o.mld_opdr_ordernr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM mld_opdr
WHERE mld_typeopdr_key = 81
AND INSTR (mld_opdr_omschrijving, 'BGT') > 0
--AND mld_opdr_ordernr IS NOT NULL
AND mld_melding_key = o.mld_melding_key
AND mld_opdr_bedrijfopdr_volgnr < o.mld_opdr_bedrijfopdr_volgnr);
CREATE OR REPLACE VIEW NOVA_V_RAP_HV_UITNUTTING
AS
SELECT TO_CHAR (x.mld_melding_datum, 'yyyy') jaar,
x.mld_melding_key,
x.mld_stdmelding_omschrijving standaardmelding,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) melding_nr,
x.alg_locatie_code || ' - ' || x.alg_locatie_omschrijving locatie,
x.mld_meldbron_nr begr_nr,
x.mld_melding_onderwerp,
x.mld_melding_omschrijving,
DECODE (x.begroot_kkey,
307, 'Bouwkosten',
308, 'Vaste inrichting',
309, 'Advieskosten',
310, 'Losse inventaris',
311, 'Bijkomende kosten',
312, 'Onvoorzien',
'Investeringsbedrag')
begr_reg,
COALESCE (x.begroot_kosten, 0) begr_totaal,
o_axx.bgt_nr,
o_axx.b_nr,
COALESCE (o_axx.kosten, 0) axx_werk,
o_axx.aantal axx_aantal,
COALESCE (o_fac.kosten, 0) fac_werk,
o_fac.aantal fac_aantal,
COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0) werk_totaal,
COALESCE (x.begroot_kosten, 0) - (COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0)) rest_totaal,
DECODE (SIGN (COALESCE (x.begroot_kosten, 0) - (COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0))), -1, 'Rood', 'Groen') rood_groen,
COALESCE (fac.safe_to_number (prognose.mld_kenmerkmelding_waarde), COALESCE (x.begroot_kosten, 0)) prognose,
COALESCE (x.begroot_kosten, 0) - COALESCE (fac.safe_to_number (prognose.mld_kenmerkmelding_waarde), COALESCE (x.begroot_kosten, 0)) - (COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0)) resultaat
FROM (SELECT sdi.ins_srtdiscipline_prefix,
mi.mld_melding_key,
mi.mld_meldbron_nr,
smi.mld_stdmelding_omschrijving,
mi.mld_melding_datum,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
mi.mld_melding_onderwerp,
mi.mld_melding_omschrijving,
begroot.mld_kenmerk_key begroot_kkey,
begroot.kosten begroot_kosten
FROM mld_melding mi,
mld_stdmelding smi,
mld_discipline mdi,
ins_srtdiscipline sdi,
alg_locatie l,
( SELECT mld_melding_key,
DECODE (mld_kenmerk_key,
302, -1,
303, -1,
304, -1,
305, -1,
306, -1,
mld_kenmerk_key)
mld_kenmerk_key,
SUM (COALESCE (fac.safe_to_number (mld_kenmerkmelding_waarde), 0))
kosten
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key BETWEEN 302 AND 312
GROUP BY mld_melding_key,
DECODE (mld_kenmerk_key,
302, -1,
303, -1,
304, -1,
305, -1,
306, -1,
mld_kenmerk_key)) begroot
WHERE mi.mld_stdmelding_key = smi.mld_stdmelding_key
--AND smi.mld_stdmelding_key IN (19, 101, 102, 103, 104, 105)
AND smi.mld_ins_discipline_key = mdi.ins_discipline_key
AND mdi.ins_discipline_key = 130 -- HV-Begroting
AND mdi.ins_srtdiscipline_key = sdi.ins_srtdiscipline_key
AND mi.mld_alg_locatie_key = l.alg_locatie_key(+)
AND mi.mld_melding_key = begroot.mld_melding_key(+)) x
LEFT JOIN ( SELECT begr_nr, begr_reg_kkey, bgt_nr, b_nr,
SUM (mld_opdr_kosten) kosten,
COUNT ( * ) aantal -- DISTINCT WRK-nummers!
FROM nova_v_rap_hv_opdrachten
WHERE opdrachttype_key = 81 -- Werkopdracht (gemigreerd)
AND bgt_nr >= 'BGT-24'
GROUP BY begr_nr, begr_reg_kkey, bgt_nr, b_nr) o_axx
ON fac.safe_to_number (x.mld_meldbron_nr) = o_axx.begr_nr
AND x.begroot_kkey = o_axx.begr_reg_kkey
AND TO_CHAR (x.mld_melding_datum, 'yy') = SUBSTR (bgt_nr, 5, 2)
LEFT JOIN ( SELECT mld_melding_key,
DECODE (prs_kostensoort_key,
1, 307,
2, 308,
3, 309,
4, 310,
5, 311,
6, 312,
-1)
mld_kenmerk_key,
SUM (mld_opdr_kosten) kosten,
COUNT ( * ) aantal
FROM mld_opdr
WHERE mld_typeopdr_key = 5 -- Uitvoeringsopdracht
GROUP BY mld_melding_key,
DECODE (prs_kostensoort_key,
1, 307,
2, 308,
3, 309,
4, 310,
5, 311,
6, 312,
-1)) o_fac
ON x.mld_melding_key = o_fac.mld_melding_key
AND x.begroot_kkey = o_fac.mld_kenmerk_key
LEFT JOIN mld_v_aanwezigkenmerkmelding prognose
ON x.mld_melding_key = prognose.mld_melding_key
AND prognose.mld_kenmerk_key BETWEEN 841 AND 846 -- Prognose
;
/*
LEFT JOIN ( SELECT SUBSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), 1, INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1) bgt_nr,
DECODE (SUBSTR (o.mld_opdr_ordernr, 1, 1), 'B', o.mld_opdr_ordernr, NULL) b_nr,
DECODE (o.mld_opdr_ordernr,
'B-04189', 900,
'B-04190', 900,
'B-04191', 900,
'B-04192', 900,
'B-04193', 900,
'B-04194', 900,
'B-04202', 901,
'B-04203', 901,
'B-04204', 901,
'B-04205', 901,
'B-04206', 901,
'B-04207', 901,
'B-04196', 902,
'B-04197', 902,
'B-04198', 902,
'B-04199', 902,
'B-04200', 902,
'B-04201', 902,
'B-04208', 903,
'B-04209', 903,
'B-04210', 903,
'B-04211', 903,
'B-04212', 903,
'B-04213', 903,
fac.safe_to_number (o.mld_opdr_ordernr))
mld_meldbron_nr,
DECODE (o.mld_opdr_ordernr,
'B-04189', 307,
'B-04190', 309,
'B-04191', 310,
'B-04192', 312,
'B-04193', 311,
'B-04194', 308,
'B-04202', 307,
'B-04203', 309,
'B-04204', 310,
'B-04205', 312,
'B-04206', 311,
'B-04207', 308,
'B-04196', 307,
'B-04197', 309,
'B-04198', 310,
'B-04199', 312,
'B-04200', 311,
'B-04201', 308,
'B-04208', 307,
'B-04209', 308,
'B-04210', 309,
'B-04211', 310,
'B-04212', 311,
'B-04213', 312,
-1)
mld_kenmerk_key,
SUM (o.mld_opdr_kosten) kosten,
COUNT ( * ) aantal
FROM mld_opdr o
WHERE o.mld_typeopdr_key = 81 -- Werkopdracht (gemigreerd)
AND o.mld_opdr_ordernr IS NOT NULL
GROUP BY SUBSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), 1, INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1),
o.mld_opdr_ordernr,
DECODE (o.mld_opdr_ordernr,
'B-04189', 900,
'B-04190', 900,
'B-04191', 900,
'B-04192', 900,
'B-04193', 900,
'B-04194', 900,
'B-04202', 901,
'B-04203', 901,
'B-04204', 901,
'B-04205', 901,
'B-04206', 901,
'B-04207', 901,
'B-04196', 902,
'B-04197', 902,
'B-04198', 902,
'B-04199', 902,
'B-04200', 902,
'B-04201', 902,
'B-04208', 903,
'B-04209', 903,
'B-04210', 903,
'B-04211', 903,
'B-04212', 903,
'B-04213', 903,
fac.safe_to_number (o.mld_opdr_ordernr)),
DECODE (o.mld_opdr_ordernr,
'B-04189', 307,
'B-04190', 309,
'B-04191', 310,
'B-04192', 312,
'B-04193', 311,
'B-04194', 308,
'B-04202', 307,
'B-04203', 309,
'B-04204', 310,
'B-04205', 312,
'B-04206', 311,
'B-04207', 308,
'B-04196', 307,
'B-04197', 309,
'B-04198', 310,
'B-04199', 312,
'B-04200', 311,
'B-04201', 308,
'B-04208', 307,
'B-04209', 308,
'B-04210', 309,
'B-04211', 310,
'B-04212', 311,
'B-04213', 312,
-1)) o_axx
ON x.mld_meldbron_nr = o_axx.mld_meldbron_nr
AND x.begroot_kkey = o_axx.mld_kenmerk_key
*/
-- Misschien met NOVA#86578 in core, maar NOVA kan daar niet op wachten!
CREATE OR REPLACE VIEW NOVA_V_RAP_CNT_NOTES
AS
SELECT TO_DATE ('01-01-1900', 'dd-mm-yyyy') - cn.cnt_contract_note_aanmaak hide_f_sort,
cn.cnt_contract_note_aanmaak datum,
c.cnt_contract_key,
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie) contractnr,
c.cnt_contract_omschrijving contractbeschrijving,
pf.prs_perslid_naam_full notitie_van,
cn.cnt_contract_note_omschrijving notitie
FROM cnt_contract_note cn, cnt_contract c, cnt_discipline cd, prs_v_perslid_fullnames_all pf
WHERE cn.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key = cd.ins_discipline_key
AND cn.prs_perslid_key = pf.prs_perslid_key;
-- NOVA#88183: Aantal en oppervlakte per pand/praktijk-theorie-kantoor!
CREATE OR REPLACE VIEW NOVA_V_RAP_ALG_LES_KANTOOR
AS
SELECT alg_gebouw_upper pand,
SUM (DECODE (alg_srtruimte_key, 9, 1, 0)) aant_praktijk,
SUM (DECODE (alg_srtruimte_key, 9, COALESCE (alg_ruimte_bruto_vloeropp, 0), 0)) m2_praktijd,
SUM (DECODE (alg_srtruimte_key, 10, 1, 0)) aant_theorie,
SUM (DECODE (alg_srtruimte_key, 10, COALESCE (alg_ruimte_bruto_vloeropp, 0), 0)) m2_theorie,
SUM (DECODE (alg_srtruimte_key, 11, 1, 0)) aant_kantoor,
SUM (DECODE (alg_srtruimte_key, 11, COALESCE (alg_ruimte_bruto_vloeropp, 0), 0)) m2_kantoor
FROM alg_v_ruimte_gegevens
GROUP BY alg_gebouw_upper;
-- Analyse verwijderde reserveringen!
CREATE OR REPLACE VIEW NOVA_V_RAP_RES_DEL
AS
SELECT rrr.res_rsv_ruimte_key,
TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) resid,
rrr.res_activiteit_key activiteitid,
(SELECT res_activiteit_omschrijving FROM res_activiteit WHERE res_activiteit_key = rrr.res_activiteit_key) activiteit,
TRUNC (rrr.res_rsv_ruimte_tot) res_datum,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
--fac.gettrackingdate ('RESDEL', rrr.res_rsv_ruimte_key) del_datum,
rrr.res_rsv_ruimte_verwijder del_datum,
DECODE (SIGN (fac.count_work_days (rrr.res_rsv_ruimte_verwijder, rrr.res_rsv_ruimte_tot)),
-1, 'Ja',
DECODE (fac.count_work_days (rrr.res_rsv_ruimte_verwijder, rrr.res_rsv_ruimte_tot),
0, 'Ja',
1, 'Ja',
'Nee')) dubieus,
TO_CHAR (fac.count_work_days (rrr.res_rsv_ruimte_verwijder, rrr.res_rsv_ruimte_tot)) res_minus_del,
COALESCE ((SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = fac.gettrackinguserkey ('RESDEL', rrr.res_rsv_ruimte_key)), 'System') door,
res.getdeelresprijs (rrr.res_rsv_ruimte_key) kosten,
rrr.res_status_fo_key fo_status,
rrr.res_status_bo_key bo_status,
rrr.res_rsv_ruimte_dirtlevel
FROM res_rsv_ruimte rrr --, res_kenmerkwaarde rk
WHERE rrr.res_rsv_ruimte_van > fac.safe_to_date ('30-09-2024', 'dd-mm-yyyy')
AND rrr.res_rsv_ruimte_verwijder IS NOT NULL -- Verwijderde reserveringen
--AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty?
AND EXISTS -- Met Benque-catering
(SELECT 1
FROM res_artikel ra, res_rsv_artikel rra
WHERE 1 = 1
--AND EXISTS -- Met artikel uit Benque-catalogus
-- (SELECT 1
-- FROM res_disc_params
-- WHERE prs_bedrijf_key = 3661 -- Benque-catalogus
-- AND res_ins_discipline_key = ra.res_discipline_key)
AND ra.res_discipline_key IN (321, 341, 361, 362, 363, 364, 365, 366, 367, 421)
AND ra.res_artikel_key = rra.res_artikel_key
--AND rra.res_rsv_artikel_dirtlevel = 0 -- Niet dirty?
--AND rra.res_rsv_artikel_verwerkt IS NULL
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
--AND rrr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key
--AND EXISTS
-- (SELECT 1
-- FROM res_kenmerk
-- WHERE res_srtkenmerk_key = 21 -- BENQ_ID
-- AND res_kenmerk_key = rk.res_kenmerk_key)
--AND EXISTS
-- (SELECT 1
-- FROM fac_tracking t, fac_srtnotificatie sn
-- WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
-- AND sn.fac_srtnotificatie_code LIKE 'RES%'
-- AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
-- AND t.fac_tracking_datum > rk.res_kenmerkwaarde_aanmaak)
--AND fac.count_work_days (rrr.res_rsv_ruimte_verwijder, rrr.res_rsv_ruimte_tot) <= 1
;
------ 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