From 2facd0fd532fef8c195e3d96a78a31b37d35a377 Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Mon, 7 Oct 2024 19:32:09 +0000 Subject: [PATCH] NOVA#80968 NOVA0 svn path=/Customer/trunk/; revision=66512 --- NOVA/nova.sql | 834 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 789 insertions(+), 45 deletions(-) diff --git a/NOVA/nova.sql b/NOVA/nova.sql index 4c3d26b15..65f5062e8 100644 --- a/NOVA/nova.sql +++ b/NOVA/nova.sql @@ -116,7 +116,7 @@ BEGIN 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) @@ -136,9 +136,12 @@ BEGIN AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key AND sk2.mld_srtkenmerk_kenmerktype = 'M' AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer); - +*/ + v_folder_kkey := 421; IF v_folder_kkey IS NOT NULL THEN + --INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) + -- VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\'); END IF; @@ -473,7 +476,7 @@ AS mld_discipline md, ins_srtdiscipline sd, prs_v_perslid_fullnames pf - WHERE m.mld_stdmelding_key = 221 -- Examentransport uitgaand + WHERE m.mld_stdmelding_key = 25 -- Examentransport uitgaand AND m.mld_melding_status = ms.mld_statuses_key(+) AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key @@ -481,10 +484,10 @@ AS 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 + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 65 AND mld_kenmerk_key = wanneer.mld_kenmerk_key) -- Wanneer LEFT JOIN mld_v_aanwezigkenmerkmelding route ON x.mld_melding_key = route.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 284 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route + 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 '/'! @@ -496,32 +499,32 @@ AS 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 + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 86 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie LEFT JOIN alg_locatie altlocvan ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key LEFT JOIN mld_v_aanwezigkenmerkmelding altvantijd ON x.mld_melding_key = altvantijd.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 287 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 74 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar ON x.mld_melding_key = altnaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 288 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 89 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie LEFT JOIN alg_locatie altlocnaar ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key LEFT JOIN mld_v_aanwezigkenmerkmelding altnaartijd ON x.mld_melding_key = altnaartijd.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 289 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 77 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie LEFT JOIN mld_v_aanwezigkenmerkmelding kratten ON x.mld_melding_key = kratten.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 290 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 68 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtevan ON x.mld_melding_key = ruimtevan.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 291 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 80 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtenaar ON x.mld_melding_key = ruimtenaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 661 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 83 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen LEFT JOIN mld_v_aanwezigkenmerkmelding cpnaar ON x.mld_melding_key = cpnaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 293 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 62 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen LEFT JOIN prs_v_perslid_fullnames pfnaar ON fac.safe_to_number (cpnaar.mld_kenmerkmelding_waarde) = pfnaar.prs_perslid_key WHERE fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') >= TRUNC (SYSDATE) @@ -562,7 +565,7 @@ AS mld_discipline md, ins_srtdiscipline sd, prs_v_perslid_fullnames pf - WHERE m.mld_stdmelding_key = 222 -- Examentransport inkomend + WHERE m.mld_stdmelding_key = 26 -- Examentransport inkomend AND m.mld_melding_status = ms.mld_statuses_key(+) AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key @@ -570,10 +573,10 @@ AS 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 + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 66 AND mld_kenmerk_key = wanneer.mld_kenmerk_key) -- Wanneer LEFT JOIN mld_v_aanwezigkenmerkmelding route ON x.mld_melding_key = route.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 295 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 72 AND mld_kenmerk_key = route.mld_kenmerk_key) -- Van-naar-route LEFT JOIN fac_v_aanwezigusrdata ud_route ON fac.safe_to_number (route.mld_kenmerkmelding_waarde) = ud_route.fac_usrdata_key LEFT JOIN alg_locatie locvan -- Van-locatie = ID na 1e '@' tot '/'! @@ -585,32 +588,32 @@ AS 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 + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 87 AND mld_kenmerk_key = altvan.mld_kenmerk_key) -- Van-locatie LEFT JOIN alg_locatie altlocvan ON fac.safe_to_number (altvan.mld_kenmerkmelding_waarde) = altlocvan.alg_locatie_key LEFT JOIN mld_v_aanwezigkenmerkmelding altvantijd ON x.mld_melding_key = altvantijd.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 298 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 75 AND mld_kenmerk_key = altvantijd.mld_kenmerk_key) -- Tijdstip vertrek op van-locatie LEFT JOIN mld_v_aanwezigkenmerkmelding altnaar ON x.mld_melding_key = altnaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 299 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 90 AND mld_kenmerk_key = altnaar.mld_kenmerk_key) -- Naar-locatie LEFT JOIN alg_locatie altlocnaar ON fac.safe_to_number (altnaar.mld_kenmerkmelding_waarde) = altlocnaar.alg_locatie_key LEFT JOIN mld_v_aanwezigkenmerkmelding altnaartijd ON x.mld_melding_key = altnaartijd.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 300 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 78 AND mld_kenmerk_key = altnaartijd.mld_kenmerk_key) -- Tijdstip aankomst op naar-locatie LEFT JOIN mld_v_aanwezigkenmerkmelding kratten ON x.mld_melding_key = kratten.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 301 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 69 AND mld_kenmerk_key = kratten.mld_kenmerk_key) -- Hoeveel kratten LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtevan ON x.mld_melding_key = ruimtevan.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 302 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 81 AND mld_kenmerk_key = ruimtevan.mld_kenmerk_key) -- Ruimte ophalen LEFT JOIN mld_v_aanwezigkenmerkmelding ruimtenaar ON x.mld_melding_key = ruimtenaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 662 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 84 AND mld_kenmerk_key = ruimtenaar.mld_kenmerk_key) -- Ruimte bezorgen LEFT JOIN mld_v_aanwezigkenmerkmelding cpnaar ON x.mld_melding_key = cpnaar.mld_melding_key - AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 304 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen + AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_kenmerk_key = 63 AND mld_kenmerk_key = cpnaar.mld_kenmerk_key) -- Contactpersoon bezorgen LEFT JOIN prs_v_perslid_fullnames pfnaar ON fac.safe_to_number (cpnaar.mld_kenmerkmelding_waarde) = pfnaar.prs_perslid_key WHERE fac.safe_to_date (wanneer.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') >= TRUNC (SYSDATE) @@ -622,6 +625,7 @@ AS PROCEDURE update_prs2loc; PROCEDURE afmelden_bes; PROCEDURE afmelden_mld; + PROCEDURE insert_kanaal; PROCEDURE res2benq; END; / @@ -986,6 +990,63 @@ AS fac.writelog ('AFMELDEN_MLD', 'E', v_errormsg, ''); END afmelden_mld; + -- Automatisch toevoegen O-kanaal (prs_bedrijfadres) voor nieuwe relaties. + PROCEDURE insert_kanaal + AS + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count NUMBER (10); + + -- Bepalen nieuwe relaties nog zonder O-kanaal. + CURSOR c1 + IS + SELECT b.prs_bedrijf_key, b.prs_bedrijf_email + FROM prs_v_aanwezigbedrijf b + WHERE b.prs_bedrijf_intern IS NULL + AND b.prs_bedrijf_email IS NOT NULL + AND NOT EXISTS + (SELECT 1 + FROM prs_bedrijfadres + WHERE prs_bedrijfadres_type = 'O' + AND prs_bedrijf_key = b.prs_bedrijf_key) + ORDER BY 1; + BEGIN + v_count := 0; + FOR rec IN c1 + LOOP + v_errormsg := 'Fout toevoegen O-kanaal ' || TO_CHAR (rec.prs_bedrijf_key); + UPDATE prs_bedrijf + SET prs_bedrijf_uitvoerende = 1 + WHERE prs_bedrijf_key = rec.prs_bedrijf_key; + + INSERT INTO prs_bedrijfadres (prs_bedrijf_key, + prs_bedrijfadres_type, + prs_bedrijfadres_url, + prs_bedrijfadres_ordermode, + prs_bedrijfadres_xsl, + prs_bedrijfadres_attachfile, + prs_bedrijfadres_flexfiles) + VALUES (rec.prs_bedrijf_key, + 'O', + 'mailto:' || rec.prs_bedrijf_email, + 0, + 'xsl/NOVA.xsl', + 'Algemene-Inkoopvoorwaarden-FSR-V4.0.pdf', + 1); + v_count := v_count + 1; + END LOOP; + + fac.writelog ('INSERT_KANAAL', 'S', 'Relaties/#gekanaliseerd: ' || TO_CHAR (v_count), ''); + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.writelog ('INSERT_KANAAL', 'E', v_errormsg, ''); + END insert_kanaal; + PROCEDURE res2benq AS v_errormsg VARCHAR2 (1000); @@ -1016,7 +1077,6 @@ AS 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'; @@ -1060,6 +1120,9 @@ BEGIN -- Automatisch sluiten meldingen (zoals helder gespecificeerd)! nova.afmelden_mld; + -- Automatisch toevoegen O-kanaal voor nieuwe relaties! + nova.insert_kanaal; + -- Alle RES verondersteld voor uitwisseling naar BENQ! nova.res2benq; EXCEPTION @@ -1199,13 +1262,12 @@ AS SELECT '[' || x.prs_kostenplaats_nr || '|' || x.prs_kostenplaats_omschrijving || '|' || x.prs_kostenplaats_module || '] ' aanduiding, x.prs_kostenplaats_nr, x.prs_kostenplaats_omschrijving, - 'PRS' prs_kostenplaats_module, -- Negeer 'SOORT CODE' uit import! + 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, - (SELECT * FROM prs_v_aanwezigkostenplaats WHERE prs_kostenplaats_module IN ('PRS')) kp, + prs_v_aanwezigkostenplaats kp, -- Beschouw alle kostenplaatsen! prs_v_perslid_fullnames pf WHERE UPPER (x.prs_kostenplaats_nr) = kp.prs_kostenplaats_upper(+) AND UPPER (x.prs_kostenplaats_externnr) = UPPER (pf.prs_perslid_naam_friendly(+)) @@ -1222,11 +1284,12 @@ BEGIN 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; + UPDATE prs_kostenplaats kp + SET kp.prs_kostenplaats_omschrijving = rec.prs_kostenplaats_omschrijving, + kp.prs_kostenplaats_module = rec.prs_kostenplaats_module, + kp.prs_perslid_key = rec.prs_perslid_key + WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key + AND NOT EXISTS (SELECT 1 FROM prs_afdeling WHERE prs_kostenplaats_key = kp.prs_kostenplaats_key); END IF; v_count := v_count + 1; EXCEPTION @@ -1241,17 +1304,13 @@ BEGIN fac.imp_writelog (p_import_key, 'S', 'KPN/#bijgewerkt: ' || TO_CHAR (v_count), ''); /* - --UPDATE prs_kostenplaats - -- SET prs_kostenplaats_module = 'PRS' - -- WHERE prs_kostenplaats_module != 'PRS'; -- 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_module IN ('PRS') + 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) @@ -1268,8 +1327,7 @@ BEGIN 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_module IN ('PRS') + 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) @@ -1787,12 +1845,12 @@ BEGIN mld_melding_opmerking) VALUES ('MLD', 1, -- Onbekend - NULL, + rec.nrs, rec.locatie_key, rec.gebouw_key, fac.safe_to_date ('01-01-2024', 'dd-mm-yyyy'), -- TODO??? NULL, -- Leeg/TODO??? - rec.omschrijving, + SUBSTR (DECODE (rec.nrs, NULL, '', rec.nrs || CHR (13) || CHR (10)) || rec.omschrijving, 1, 4000), TO_NUMBER (NULL), -- mld_melding_behandelaar_key TO_NUMBER (NULL), -- mld_melding_behandelaar2_key TO_NUMBER (NULL), -- mld_ins_discipline_key @@ -2358,8 +2416,7 @@ CREATE OR REPLACE VIEW NOVA_V_NOTI_CNTREMINDER AS SELECT 'CNTMAI', '', - --COALESCE (c.prs_perslid_key_eig, 765), -- 765=dslager@novacollege.nl - 765, -- 765=dslager@novacollege.nl + COALESCE (c.prs_perslid_key_eig, 765), -- 765=dslager@novacollege.nl 'Rappel: Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie) @@ -2457,7 +2514,7 @@ AS 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) + 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 @@ -2689,6 +2746,693 @@ AS AND nj.fac_notificatie_job_view = 'NOVA_V_NOTI_ROOSTERBUREAU' AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)); +/* +Ter inspiratie de volgende 4 real-time monitors (of grafieken) gerealiseerd: +1. Staafdiagram met lopende meldingen per standaardmelding met de kleuren: [a] blauw=meer dan 2 werkdagen voor geplande einddatum (van de melding!) en actie bij aanvrager, [b] groen=meer dan 2 werkdagen voor geplande einddatum en actie bij backoffice (niet bij aanvrager) en [c] rood=minder dan 2 werkdagen voor geplande einddatum. +2. Staafdiagram met lopende meldingen per locatie en zie verder 1. +3. Staafdiagram met lopende opdrachten die zijn uitgegeven per externe uitvoerder met de kleuren: [a] groen=meer dan 2 werkdagen voor geplande einddatum (van de opdracht!) en [b] rood=minder dan 2 werkdagen voor geplande einddatum. +4. Lijndiagram met afgehandelde melding per maand voor elke standaardmelding. +TODO: Staafdiagrammen (1 t/m 3) klikbaar maken? +*/ +CREATE OR REPLACE VIEW NOVA_V_UDR_MLD_OPEN +( + mld_melding_key, + meldingid, + vakgroeptype, + --vakgroep_key, + fclt_3d_discipline_key, + vakgroep, + standaardmelding, + --locatie_key, + fclt_3d_locatie_key, + locatiecode, + locatie, + status, + behandelteam_key, + behandelteam, + mldnew, + melding_datum, + geplande_einddatum, + --uitvoertijd, + optijd_telaat +) +AS + SELECT x.mld_melding_key, + x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingid, + x.ins_srtdiscipline_omschrijving vakgroeptype, + x.ins_discipline_key vakgroep_key, + x.ins_discipline_omschrijving vakgroep, + x.mld_stdmelding_omschrijving standaardmelding, + x.alg_locatie_key, + x.alg_locatie_code, + x.alg_locatie_omschrijving, + x.mld_statuses_omschrijving status, + x.behandelteam_key, + COALESCE (x.behandelteam, ''), + x.mldnew, + x.mld_melding_datum, + x.mld_melding_einddatum, + --TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd, + DECODE (SIGN (x.gepland_over_2wd - SYSDATE), + -1, + DECODE (SIGN (x.mld_melding_einddatum - SYSDATE), + -1, 'Te laat', -- Rood + 'Over 2 dagen te laat'), -- Oranje + DECODE (BITAND (x.mld_melding_actiecode, 1), + 1, 'Actie bij behandelaar', -- Groen en "alle tijd" + 'Actie bij aanvrager')) -- Blauw en "alle tijd" + optijd_telaat + FROM (SELECT m.mld_melding_key, + sd.ins_srtdiscipline_prefix, + sd.ins_srtdiscipline_omschrijving, + md.ins_discipline_key, + md.ins_discipline_omschrijving, + sm.mld_stdmelding_key, + sm.mld_stdmelding_omschrijving, + l.alg_locatie_key, + l.alg_locatie_code, + l.alg_locatie_omschrijving, + ms.mld_statuses_omschrijving, + bt.ins_discipline_key behandelteam_key, + bt.ins_discipline_omschrijving behandelteam, + --m.mld_melding_spoed, + fac.gettrackingdate ('MLDNEW', m.mld_melding_key) mldnew, + m.mld_melding_datum, + m.mld_melding_einddatum, + --m.mld_melding_t_uitvoertijd, + fac.datumtijdplusuitvoertijd ( + m.mld_melding_einddatum - 14, + mld.getactualuitvoer (m.mld_melding_einddatum - 14, m.mld_melding_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 2, + 'D') + gepland_over_2wd, -- Twee werkdagen voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf) + m.mld_melding_actiecode -- 1=bij behandelaar/2=bij aanvrager/129=reactie aanvrager/257=info aanvrager/258=actie aanvrager + FROM mld_melding m, + mld_stdmelding sm, + mld_discipline md, + ins_srtdiscipline sd, + alg_locatie l, + mld_statuses ms, + mld_discipline bt + WHERE 1 = 1 + --AND m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') + --AND fac.gettrackingdate ('MLDNEW', m.mld_melding_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') + AND m.fac_activiteit_key IS NULL + AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding) + AND sm.mld_ins_discipline_key = md.ins_discipline_key + AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting + AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion + AND m.mld_alg_locatie_key = l.alg_locatie_key(+) + AND m.mld_melding_status = ms.mld_statuses_key + AND m.mld_ins_discipline_key = bt.ins_discipline_key(+)) x; + +CREATE OR REPLACE VIEW NOVA_V_UDR_ORD_OPEN +( + mld_opdr_key, + opdrachtid, + opdrachttype_key, + opdrachttype, + uitvoerende_key, + uitvoerende, + vakgroeptype, + --fclt_3d_discipline_key, + vakgroep_key, + vakgroep, + standaardmelding, + --fclt_3d_locatie_key, + locatie_key, + locatiecode, + locatie, + status, + ordnew, + opdracht_datum, + opdracht_verzonden, + geplande_einddatum, + --uitvoertijd, + optijd_telaat +) +AS + SELECT x.mld_opdr_key, + x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) opdrachtid, + x.mld_typeopdr_key, + x.mld_typeopdr_omschrijving, + x.mld_uitvoerende_keys, + --DECODE (x.prs_bedrijf_naam, + -- NULL, + -- x.prs_perslid_naam_full, + -- x.prs_bedrijf_naam) + x.prs_bedrijf_naam uitvoerende, + x.ins_srtdiscipline_omschrijving vakgroeptype, + x.ins_discipline_key vakgroep_key, + x.ins_discipline_omschrijving vakgroep, + x.mld_stdmelding_omschrijving standaardmelding, + x.alg_locatie_key, + x.alg_locatie_code, + x.alg_locatie_omschrijving, + x.mld_statusopdr_omschrijving status, + x.ordnew, + x.mld_opdr_datumbegin, + x.mld_opdr_verzonden, + x.mld_opdr_einddatum, + --TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd, + DECODE (SIGN (x.gepland_over_2wd - SYSDATE), + -1, + DECODE (SIGN (x.mld_opdr_einddatum - SYSDATE), + -1, 'Te laat', -- Rood + 'Over 2 dagen te laat'), -- Oranje + 'Op tijd') -- Groen en "alle tijd" + optijd_telaat + FROM (SELECT o.mld_opdr_key, + o.mld_melding_key, + o.mld_opdr_bedrijfopdr_volgnr, + ot.mld_typeopdr_key, + ot.mld_typeopdr_omschrijving, + o.mld_uitvoerende_keys, + lev.prs_bedrijf_naam, + --iuv.prs_perslid_naam_full, + sd.ins_srtdiscipline_prefix, + sd.ins_srtdiscipline_omschrijving, + md.ins_discipline_key, + md.ins_discipline_omschrijving, + sm.mld_stdmelding_key, + sm.mld_stdmelding_omschrijving, + l.alg_locatie_key, + l.alg_locatie_code, + l.alg_locatie_omschrijving, + os.mld_statusopdr_omschrijving, + --m.mld_melding_spoed, + fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) ordnew, + o.mld_opdr_datumbegin, + o.mld_opdr_verzonden, + o.mld_opdr_einddatum, + --m.mld_melding_t_uitvoertijd, + fac.datumtijdplusuitvoertijd ( + o.mld_opdr_einddatum - 14, + mld.getactualuitvoer (o.mld_opdr_einddatum - 14, o.mld_opdr_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 2, + 'D') + gepland_over_2wd -- Twee werkdagen voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf) + FROM mld_opdr o, + mld_typeopdr ot, + prs_bedrijf lev, + --prs_v_perslid_fullnames iuv, + mld_melding m, + mld_stdmelding sm, + mld_discipline md, + ins_srtdiscipline sd, + alg_locatie l, + mld_statusopdr os + WHERE 1 = 1 + --AND o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') + --AND fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') + AND o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Open opdrachten + AND o.mld_typeopdr_key = ot.mld_typeopdr_key + AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+) + --AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+) + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding) + AND sm.mld_ins_discipline_key = md.ins_discipline_key + --AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting + AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion + AND m.mld_alg_locatie_key = l.alg_locatie_key(+) + AND o.mld_statusopdr_key = os.mld_statusopdr_key) x; + +CREATE OR REPLACE VIEW NOVA_V_UDR_MLD_AFM +( + mldafm_maand, + mld_melding_key, + meldingid, + vakgroeptype, + --vakgroep_key, + fclt_3d_discipline_key, + vakgroep, + standaardmelding, + --locatie_key, + fclt_3d_locatie_key, + locatiecode, + locatie, + status +) +AS + SELECT TO_CHAR (x.mldafm, 'yyyy-mm') mldafm_maand, + x.mld_melding_key, + x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingid, + x.ins_srtdiscipline_omschrijving vakgroeptype, + x.ins_discipline_key vakgroep_key, + x.ins_discipline_omschrijving vakgroep, + x.mld_stdmelding_omschrijving standaardmelding, + x.alg_locatie_key, + x.alg_locatie_code, + x.alg_locatie_omschrijving, + x.mld_statuses_omschrijving status + FROM (SELECT m.mld_melding_key, + sd.ins_srtdiscipline_prefix, + sd.ins_srtdiscipline_omschrijving, + md.ins_discipline_key, + md.ins_discipline_omschrijving, + sm.mld_stdmelding_key, + sm.mld_stdmelding_omschrijving, + l.alg_locatie_key, + l.alg_locatie_code, + l.alg_locatie_omschrijving, + ms.mld_statuses_omschrijving, + fac.gettrackingdate ('MLDAFM', m.mld_melding_key) mldafm + FROM mld_melding m, + mld_stdmelding sm, + mld_discipline md, + ins_srtdiscipline sd, + alg_locatie l, + mld_statuses ms + WHERE fac.gettrackingdate ('MLDAFM', m.mld_melding_key) > TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm') + AND m.fac_activiteit_key IS NULL + AND m.mld_melding_status IN (1, 5, 6) -- Gesloten meldingen + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_stdmelding_key NOT IN (24) -- Intern transport vertrouwelijke documenten (WF-startmelding) + AND sm.mld_ins_discipline_key = md.ins_discipline_key + AND md.ins_discipline_key NOT IN (126, 130) -- Bestellen-Begroting/Huisvesting-Begroting + AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND sd.ins_srtdiscipline_key NOT IN (21, 41) -- Behandelteams/Axxerion + AND m.mld_alg_locatie_key = l.alg_locatie_key(+) + AND m.mld_melding_status = ms.mld_statuses_key) x; + +-- Rapportage voor Joost Knol? +CREATE OR REPLACE VIEW NOVA_V_BENQUE_ARTIKELEN +AS + SELECT rd.ins_discipline_key catalogus_key, + rd.ins_discipline_aanmaak catalogus_aanmaak, + rd.ins_discipline_verwijder catalogus_verwijder, + rd.ins_discipline_omschrijving catalogus, + ra.res_artikel_key artikel_key, + ra.res_artikel_aanmaak artikel_aanmaak, + ra.res_artikel_verwijder artikel_verwijder, + ra.res_artikel_nr artikelnummer, + ra.res_artikel_eenheid eenheid, + ra.res_artikel_prijs prijs, + ra.res_artikel_btw btw, + ra.res_artikel_opmerking opmerking, + ra.res_artikel_minimum minimum_bestelaantal, + DECODE (ra.res_artikel_flags, 1, 'Ja', 'Nee') + meermaal_reserveerbaar + FROM res_artikel ra, res_discipline rd + WHERE ra.res_discipline_key = rd.ins_discipline_key + AND (rd.ins_discipline_key IN (321, 341, 361, 362, 363, 364, 365, 366, 367) + OR rd.ins_discipline_externnr = 'BENQ'); + +-- HV-opdrachten/uitnutting! +CREATE OR REPLACE VIEW NOVA_V_RAP_HV_OPDRACHTEN +AS + SELECT o.mld_opdr_key, + fac.safe_to_number (m.mld_meldbron_nr) begr_nr, -- Of leeg voor Uitvoeringsopdrachten? + -1 begr_reg_kkey, + sm.mld_stdmelding_omschrijving standaardmelding, + sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) + opdracht_nr, + NULL axx_ref, + NULL bgt_nr, + NULL b_nr, + --DECODE (kpg.prs_kostenplaatsgrp_nr, NULL, '', kpg.prs_kostenplaatsgrp_nr || '-') || kpg.prs_kostenplaatsgrp_oms kostenplaats_groep, + kp.prs_kostenplaats_upper kostenplaats, + COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms) + kostensoort, + ot.mld_typeopdr_key opdrachttype_key, + ot.mld_typeopdr_omschrijving opdrachttype, + (SELECT naam FROM mld_v_uitvoerende WHERE mld_uitvoerende_key = o.mld_uitvoerende_keys) + uitvoerende, + o.mld_statusopdr_key status_key, + (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr WHERE mld_statusopdr_key = o.mld_statusopdr_key) + status, + --TO_CHAR (o.mld_opdr_kosten, 'fm999999999999999990.00') kosten + o.mld_opdr_kosten + FROM mld_opdr o, + mld_typeopdr ot, + mld_melding m, + mld_stdmelding sm, + mld_discipline md, + ins_srtdiscipline sd, + prs_kostenplaats kp, + --prs_kostenplaatsgrp kpg, + prs_kostensoort kso, + prs_kostensoort ksm, + prs_kostensoort ksv + WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key + AND ot.mld_typeopdr_key = 5 -- Uitvoeringsopdracht + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = md.ins_discipline_key + --AND md.ins_discipline_key IN (130, 264) -- HV-Begroting+AXX-Inkoop/Huisvesting + AND md.ins_discipline_key = 130 -- HV-Begroting + AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) + --AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+) + AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+) + AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+) + AND md.prs_kostensoort_key = ksv.prs_kostensoort_key(+) + UNION ALL + SELECT o.mld_opdr_key, + DECODE (o.mld_opdr_ordernr, + 'B-04189', 900, + 'B-04190', 900, + 'B-04191', 900, + 'B-04192', 900, + 'B-04193', 900, + 'B-04194', 900, + 'B-04202', 901, + 'B-04203', 901, + 'B-04204', 901, + 'B-04205', 901, + 'B-04206', 901, + 'B-04207', 901, + 'B-04196', 902, + 'B-04197', 902, + 'B-04198', 902, + 'B-04199', 902, + 'B-04200', 902, + 'B-04201', 902, + 'B-04208', 903, + 'B-04209', 903, + 'B-04210', 903, + 'B-04211', 903, + 'B-04212', 903, + 'B-04213', 903, + fac.safe_to_number (o.mld_opdr_ordernr)) + begr_nr, + DECODE (o.mld_opdr_ordernr, + 'B-04189', 307, + 'B-04190', 309, + 'B-04191', 310, + 'B-04192', 312, + 'B-04193', 311, + 'B-04194', 308, + 'B-04202', 307, + 'B-04203', 309, + 'B-04204', 310, + 'B-04205', 312, + 'B-04206', 311, + 'B-04207', 308, + 'B-04196', 307, + 'B-04197', 309, + 'B-04198', 310, + 'B-04199', 312, + 'B-04200', 311, + 'B-04201', 308, + 'B-04208', 307, + 'B-04209', 308, + 'B-04210', 309, + 'B-04211', 310, + 'B-04212', 311, + 'B-04213', 312, + -1) + begr_reg_kkey, + sm.mld_stdmelding_omschrijving standaardmelding, + sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) + opdracht_nr, + DECODE ( + INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:'), + 0, NULL, + TRIM (SUBSTR ( + SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:') + 15), + 1, + INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'AXX-referentie:') + 15) || CHR (13), CHR (13)) - 1))) + axx_ref, + DECODE ( + INSTR (o.mld_opdr_omschrijving, 'BGT'), + 0, NULL, + SUBSTR ( + SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), + 1, + INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1)) + bgt_nr, + DECODE (SUBSTR (o.mld_opdr_ordernr, 1, 1), 'B', o.mld_opdr_ordernr, NULL) + b_nr, + --DECODE (kpg.prs_kostenplaatsgrp_nr, NULL, '', kpg.prs_kostenplaatsgrp_nr || '-') || kpg.prs_kostenplaatsgrp_oms kostenplaats_groep, + kp.prs_kostenplaats_upper kostenplaats, + COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms) + kostensoort, + ot.mld_typeopdr_key opdrachttype_key, + ot.mld_typeopdr_omschrijving opdrachttype, + (SELECT naam FROM mld_v_uitvoerende WHERE mld_uitvoerende_key = o.mld_uitvoerende_keys) + uitvoerende, + o.mld_statusopdr_key status_key, + (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr WHERE mld_statusopdr_key = o.mld_statusopdr_key) + status, + --TO_CHAR (o.mld_opdr_kosten, 'fm999999999999999990.00') kosten + o.mld_opdr_kosten + FROM mld_opdr o, + mld_typeopdr ot, + mld_melding m, + mld_stdmelding sm, + mld_discipline md, + ins_srtdiscipline sd, + prs_kostenplaats kp, + --prs_kostenplaatsgrp kpg, + prs_kostensoort kso, + prs_kostensoort ksm, + prs_kostensoort ksv + WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key + AND ot.mld_typeopdr_key = 81 -- Werkopdracht (gemigreerd) + AND o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = sm.mld_stdmelding_key + AND sm.mld_ins_discipline_key = md.ins_discipline_key + --AND md.ins_discipline_key IN (130, 264) -- HV-Begroting+AXX-Inkoop/Huisvesting + AND md.ins_discipline_key = 264 -- AXX-Inkoop/Huisvesting + AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key + AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) + --AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+) + AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+) + AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+) + AND md.prs_kostensoort_key = ksv.prs_kostensoort_key(+) + AND INSTR (o.mld_opdr_omschrijving, 'BGT') > 0 + --AND o.mld_opdr_ordernr IS NOT NULL + AND NOT EXISTS + (SELECT 1 + FROM mld_opdr + WHERE mld_typeopdr_key = 81 + AND INSTR (mld_opdr_omschrijving, 'BGT') > 0 + --AND mld_opdr_ordernr IS NOT NULL + AND mld_melding_key = o.mld_melding_key + AND mld_opdr_bedrijfopdr_volgnr < o.mld_opdr_bedrijfopdr_volgnr); + +CREATE OR REPLACE VIEW NOVA_V_RAP_HV_UITNUTTING +AS + SELECT x.mld_melding_key, + x.mld_stdmelding_omschrijving standaardmelding, + x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) melding_nr, + x.mld_meldbron_nr begr_nr, + x.mld_melding_onderwerp, + x.mld_melding_omschrijving, + DECODE (x.begroot_kkey, + 307, 'Bouwkosten', + 308, 'Vaste inrichting', + 309, 'Advieskosten', + 310, 'Losse inventaris', + 311, 'Bijkomende kosten', + 312, 'Onvoorzien', + 'Investeringsbedrag') + begr_reg, + COALESCE (x.begroot_kosten, 0) begr_totaal, + o_axx.bgt_nr, + o_axx.b_nr, + COALESCE (o_axx.kosten, 0) axx_werk, + o_axx.aantal axx_aantal, + COALESCE (o_fac.kosten, 0) fac_werk, + o_fac.aantal fac_aantal, + COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0) werk_totaal, + COALESCE (x.begroot_kosten, 0) - (COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0)) rest_totaal, + DECODE (SIGN (COALESCE (x.begroot_kosten, 0) - (COALESCE (o_axx.kosten, 0) + COALESCE (o_fac.kosten, 0))), -1, 'Rood', 'Groen') rood_groen + FROM (SELECT sdi.ins_srtdiscipline_prefix, + mi.mld_melding_key, + mi.mld_meldbron_nr, + smi.mld_stdmelding_omschrijving, + mi.mld_melding_onderwerp, + mi.mld_melding_omschrijving, + begroot.mld_kenmerk_key begroot_kkey, + begroot.kosten begroot_kosten + FROM mld_melding mi, + mld_stdmelding smi, + mld_discipline mdi, + ins_srtdiscipline sdi, + ( SELECT mld_melding_key, + DECODE (mld_kenmerk_key, + 302, -1, + 303, -1, + 304, -1, + 305, -1, + 306, -1, + mld_kenmerk_key) + mld_kenmerk_key, + SUM (COALESCE (fac.safe_to_number (mld_kenmerkmelding_waarde), 0)) + kosten + FROM mld_kenmerkmelding + WHERE mld_kenmerk_key BETWEEN 302 AND 312 + GROUP BY mld_melding_key, + DECODE (mld_kenmerk_key, + 302, -1, + 303, -1, + 304, -1, + 305, -1, + 306, -1, + mld_kenmerk_key)) begroot + WHERE mi.mld_stdmelding_key = smi.mld_stdmelding_key + --AND smi.mld_stdmelding_key IN (19, 101, 102, 103, 104, 105) + AND smi.mld_ins_discipline_key = mdi.ins_discipline_key + AND mdi.ins_discipline_key = 130 -- HV-Begroting + AND mdi.ins_srtdiscipline_key = sdi.ins_srtdiscipline_key + AND mi.mld_melding_key = begroot.mld_melding_key(+)) x + LEFT JOIN ( SELECT begr_nr, begr_reg_kkey, bgt_nr, b_nr, + SUM (mld_opdr_kosten) kosten, + COUNT ( * ) aantal -- DISTINCT WRK-nummers! + FROM nova_v_rap_hv_opdrachten + WHERE opdrachttype_key = 81 -- Werkopdracht (gemigreerd) + GROUP BY begr_nr, begr_reg_kkey, bgt_nr, b_nr) o_axx + ON x.mld_meldbron_nr = o_axx.begr_nr + AND x.begroot_kkey = o_axx.begr_reg_kkey + LEFT JOIN ( SELECT mld_melding_key, + DECODE (prs_kostensoort_key, + 1, 307, + 2, 308, + 3, 309, + 4, 310, + 5, 311, + 6, 312, + -1) + mld_kenmerk_key, + SUM (mld_opdr_kosten) kosten, + COUNT ( * ) aantal + FROM mld_opdr + WHERE mld_typeopdr_key = 5 -- Uitvoeringsopdracht + GROUP BY mld_melding_key, + DECODE (prs_kostensoort_key, + 1, 307, + 2, 308, + 3, 309, + 4, 310, + 5, 311, + 6, 312, + -1)) o_fac + ON x.mld_melding_key = o_fac.mld_melding_key + AND x.begroot_kkey = o_fac.mld_kenmerk_key; +/* + LEFT JOIN ( SELECT SUBSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), 1, INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1) bgt_nr, + DECODE (SUBSTR (o.mld_opdr_ordernr, 1, 1), 'B', o.mld_opdr_ordernr, NULL) b_nr, + DECODE (o.mld_opdr_ordernr, + 'B-04189', 900, + 'B-04190', 900, + 'B-04191', 900, + 'B-04192', 900, + 'B-04193', 900, + 'B-04194', 900, + 'B-04202', 901, + 'B-04203', 901, + 'B-04204', 901, + 'B-04205', 901, + 'B-04206', 901, + 'B-04207', 901, + 'B-04196', 902, + 'B-04197', 902, + 'B-04198', 902, + 'B-04199', 902, + 'B-04200', 902, + 'B-04201', 902, + 'B-04208', 903, + 'B-04209', 903, + 'B-04210', 903, + 'B-04211', 903, + 'B-04212', 903, + 'B-04213', 903, + fac.safe_to_number (o.mld_opdr_ordernr)) + mld_meldbron_nr, + DECODE (o.mld_opdr_ordernr, + 'B-04189', 307, + 'B-04190', 309, + 'B-04191', 310, + 'B-04192', 312, + 'B-04193', 311, + 'B-04194', 308, + 'B-04202', 307, + 'B-04203', 309, + 'B-04204', 310, + 'B-04205', 312, + 'B-04206', 311, + 'B-04207', 308, + 'B-04196', 307, + 'B-04197', 309, + 'B-04198', 310, + 'B-04199', 312, + 'B-04200', 311, + 'B-04201', 308, + 'B-04208', 307, + 'B-04209', 308, + 'B-04210', 309, + 'B-04211', 310, + 'B-04212', 311, + 'B-04213', 312, + -1) + mld_kenmerk_key, + SUM (o.mld_opdr_kosten) kosten, + COUNT ( * ) aantal + FROM mld_opdr o + WHERE o.mld_typeopdr_key = 81 -- Werkopdracht (gemigreerd) + AND o.mld_opdr_ordernr IS NOT NULL + GROUP BY SUBSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), 1, INSTR (SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'BGT')), '-', 1, 2) - 1), + o.mld_opdr_ordernr, + DECODE (o.mld_opdr_ordernr, + 'B-04189', 900, + 'B-04190', 900, + 'B-04191', 900, + 'B-04192', 900, + 'B-04193', 900, + 'B-04194', 900, + 'B-04202', 901, + 'B-04203', 901, + 'B-04204', 901, + 'B-04205', 901, + 'B-04206', 901, + 'B-04207', 901, + 'B-04196', 902, + 'B-04197', 902, + 'B-04198', 902, + 'B-04199', 902, + 'B-04200', 902, + 'B-04201', 902, + 'B-04208', 903, + 'B-04209', 903, + 'B-04210', 903, + 'B-04211', 903, + 'B-04212', 903, + 'B-04213', 903, + fac.safe_to_number (o.mld_opdr_ordernr)), + DECODE (o.mld_opdr_ordernr, + 'B-04189', 307, + 'B-04190', 309, + 'B-04191', 310, + 'B-04192', 312, + 'B-04193', 311, + 'B-04194', 308, + 'B-04202', 307, + 'B-04203', 309, + 'B-04204', 310, + 'B-04205', 312, + 'B-04206', 311, + 'B-04207', 308, + 'B-04196', 307, + 'B-04197', 309, + 'B-04198', 310, + 'B-04199', 312, + 'B-04200', 311, + 'B-04201', 308, + 'B-04208', 307, + 'B-04209', 308, + 'B-04210', 309, + 'B-04211', 310, + 'B-04212', 311, + 'B-04213', 312, + -1)) o_axx + ON x.mld_meldbron_nr = o_axx.mld_meldbron_nr + AND x.begroot_kkey = o_axx.mld_kenmerk_key +*/ ------ payload end ------ SET DEFINE OFF