Files
Customer/NOVA/nova.sql
Maarten van der Heide b0d8a79752 NOVA#80968 NOVA0
svn path=/Customer/trunk/; revision=65965
2024-08-21 07:42:13 +00:00

2616 lines
134 KiB
SQL
Raw 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_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';
v_opdracht_id := psubject;
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
THEN
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus ' '!
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exist_ticket!
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) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
-- 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);
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 || '\');
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);
-- Naam Straat (Bezoek) Huisnummer (Bezoek) Postcode (Bezoek) Plaats (Bezoek) Land (Bezoek)
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;
--Naam Vestiging Plaats
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,
COALESCE (fac.gettrackingdate ('ALGRUP', alg_ruimte_key), r.alg_ruimte_aanmaak) last_change
FROM alg_v_aanwezigruimte 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;
/*
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 = 221 -- 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 = 283 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 = 284 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 = 286 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 = 287 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 = 288 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 = 289 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 = 290 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 = 291 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 = 661 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 = 293 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 = 222 -- 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 = 294 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 = 295 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 = 297 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 = 298 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 = 299 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 = 300 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 = 301 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 = 302 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 = 662 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 = 304 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 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 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 TOPdesk).
CURSOR c1
IS
SELECT o.mld_melding_key
FROM mld_opdr o, mld_melding m
WHERE o.mld_typeopdr_key = 61 -- 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_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;
PROCEDURE res2benq
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
CURSOR res
IS
SELECT DISTINCT rrr.res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
(SELECT fac.safe_to_number (fac_usrdata_omschr) export_days
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 161 -- BENQUE-koppeling
AND fac_usrdata_upper = 'BENQ_EXPORT_DAYS') b
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_status_fo_key = 2 -- Definitief
AND rrr.res_status_bo_key = 2 -- Geregistreerd
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND fac.count_work_days (rrr.res_rsv_ruimte_van, SYSDATE) >= b.export_days
AND rrr.res_rsv_ruimte_key NOT IN
(SELECT res_rsv_ruimte_key
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);
BEGIN
v_count := 0;
FOR rec IN res
LOOP
v_errormsg := 'Fout teverzenden reservering';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_teverzenden = 1
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_count := v_count + 1;
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 meldingen (zoals helder gespecificeerd)!
nova.afmelden_mld;
-- Alle RES verondersteld voor uitwisseling naar BENQ!
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;
/
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,
(SELECT * FROM prs_v_aanwezigkostenplaats WHERE prs_kostenplaats_module IN ('ALG', 'PRJ')) kp,
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
SET prs_kostenplaats_omschrijving = rec.prs_kostenplaats_omschrijving,
prs_kostenplaats_module = rec.prs_kostenplaats_module,
prs_perslid_key = rec.prs_perslid_key
WHERE prs_kostenplaats_key = rec.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);
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);
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
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
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
NULL,
rec.locatie_key,
rec.gebouw_key,
fac.safe_to_date ('01-01-2024', 'dd-mm-yyyy'), -- TODO???
NULL, -- Leeg/TODO???
rec.omschrijving,
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-2024', 'dd-mm-yyyy'), -- TODO???
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
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-2024', 'dd-mm-yyyy'), -- TODO???
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-2024', 'dd-mm-yyyy'), -- TODO???
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
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 'CUST01',
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 'CUST02',
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 'CUST02',
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 'CUST03',
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));
------ 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