-- -- $Id$ -- -- Script containing customer specific configuration sql statements for RABO: Rabobank DEFINE thisfile = 'RABO.SQL' DEFINE dbuser = '^RABO' 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 ------ -- export overrules -- exact -- Leverancier overrulles -- exact verkoop voor Vast/Variabele opdrachten (ticket 65680) CREATE OR REPLACE VIEW rabo_v_export_exact_vastvar_b AS SELECT TO_CHAR (o.mld_opdr_datumbegin, 'YYYY') opdr_jaar, o.mld_opdr_key, o.mld_opdr_bedrijfopdr_volgnr, o.mld_melding_key, o.mld_statusopdr_key, o.mld_opdr_kosten, o.prs_kostenplaats_key, kp.prs_kostenplaats_nr, sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) || ' ' || md.ins_discipline_omschrijving || ' (' || (SELECT MAX (mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 55 -- projectnaam AND km.mld_melding_key = m.mld_melding_key) || ')' fin_verkoopfactuur_oms, COALESCE (ks2.prs_kostensoort_upper, ks1.prs_kostensoort_upper) prs_kostensoort_oms, COALESCE (ks2.prs_kostensoort_opmerking, ks1.prs_kostensoort_opmerking) prs_kostensoort_opmerking, b.prs_bedrijf_key, aaxx_get_dep_code (kp.prs_kostenplaats_nr) prs_debiteur_naam, DECODE(sd.ins_srtdiscipline_prefix, 'PR', 'Projecten', 'Servicekosten ' || aaxx_get_dep_code(kp.prs_kostenplaats_nr)) prs_kostensoortgrp_oms, '5' fin_btwtabelwaarde_code, TO_CHAR (o.mld_opdr_datumbegin, 'YYYY') fin_verkoopfactuur_maand, m.mld_alg_locatie_key fin_verkoopfactuur_n1, -- volgnr aaxx_get_top_bedrijf_key (kp.prs_kostenplaats_nr) fin_verkoopfactuur_n2, -- N2 bedrijfskey van de hoogste afdeling COALESCE (exact.exact_code, g.alg_gebouw_code) fin_verkoopfactuur_c1, aaxx_get_dep_code (kp.prs_kostenplaats_nr) || DECODE ( COALESCE (ks2.prs_kostensoort_upper, ks1.prs_kostensoort_upper), 'NC PROJ', m.mld_melding_key) fin_verkoopfactuur_c2, (SELECT MAX (f.fin_verkoopfactuur_datum) FROM fin_verkoopfactuur f WHERE f.fin_verkoopfactuur_refkey = o.mld_opdr_key AND f.fin_verkoopfactuur_datum IS NOT NULL) verwerkt_exact FROM mld_opdr o, mld_typeopdr ot, prs_kostenplaats kp, prs_kostensoort ks2, mld_melding m, mld_stdmelding sm, prs_kostensoort ks1, mld_discipline md, ins_srtdiscipline sd, prs_bedrijf b, alg_v_onroerendgoed og, alg_gebouw g, aaxx_v_exact_code_gebouw exact WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_upper = 'VAST/VARIABEL' AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key 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_srtdiscipline_key = sd.ins_srtdiscipline_key AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND og.alg_gebouw_key = g.alg_gebouw_key(+) AND og.alg_gebouw_key = exact.alg_gebouw_key(+) AND o.prs_kostensoort_key = ks2.prs_kostensoort_key(+) AND sm.prs_kostensoort_key = ks1.prs_kostensoort_key(+) ; CREATE OR REPLACE PROCEDURE rabo_select_exact_vastvar ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_opdr_jaar IN VARCHAR2 ) AS CURSOR c IS SELECT * FROM rabo_v_export_exact_vastvar_b WHERE mld_statusopdr_key = 9 AND mld_opdr_kosten > 0 AND opdr_jaar = p_opdr_jaar AND verwerkt_exact IS NULL ; v_order_count NUMBER; v_amount_sum NUMBER(10,2); v_count NUMBER; v_logdate DATE; BEGIN -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; -- verwijder niet verwerkte regels uit de verkoopfactuur tabel DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_c4 = 'Verkoopfactuur_VASTVAR' AND fin_verkoopfactuur_datum IS NULL; v_order_count := 0; v_amount_sum := 0; v_logdate := SYSDATE; FOR rec IN c LOOP BEGIN -- Vul de verkoopfactuurtabel met de nieuwe records INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_id, fin_verkoopfactuur_aanmaak, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, prs_kostenplaats_nr, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_bedrijf_key, prs_debiteur_naam, prs_kostensoortgrp_oms, fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, fin_verkoopfactuur_maand, fin_verkoopfactuur_n1, fin_verkoopfactuur_n2, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c4) VALUES ( TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' O' || rec.mld_melding_key || '/' || rec.mld_opdr_bedrijfopdr_volgnr, v_logdate, rec.fin_verkoopfactuur_oms, -- vb SA124461/2 Gebouwonderhoud (loodgieter) (projectnaam) 'opdracht', rec.mld_opdr_key, rec.prs_kostenplaats_nr, -- kostenplaatsnr... 'VAST VARIABEL UREN', -- oms_exact = kostensoort_code maar voor VAST_VAR moet dit vast code zijn rec.prs_kostensoort_opmerking, -- code_exact = kostensoort_omschrijving rec.prs_bedrijf_key, rec.prs_debiteur_naam, rec.prs_kostensoortgrp_oms, rec.mld_opdr_kosten, -- Geen "aaxx_imp_uplift" NULL, -- Geen ROUND (bedrag * (fin_btwtabelwaarde_perc / 100), 2), rec.fin_btwtabelwaarde_code, NULL, -- Geen fin_btwtabelwaarde_perc, rec.fin_verkoopfactuur_maand, -- Voor OPDR is dit JAAR opdrachtdatum rec.fin_verkoopfactuur_n1, -- volgorde rec.fin_verkoopfactuur_n2, -- bedrijfskey van de hoogste afdeling rec.fin_verkoopfactuur_c1, rec.fin_verkoopfactuur_c2, 'Verkoopfactuur_VASTVAR' -- C4 ); v_order_count := v_order_count + 1 ; v_amount_sum := v_amount_sum + rec.mld_opdr_kosten; -- Door Facilitor (4) -- tracking toevoegen aan Opdracht fac.trackaction ('#ORDUPD', rec.mld_opdr_key, 4, NULL, 'Verkoopfactuur ingeboekt'); -- status opdracht aanpassen naar vewerkt mld.setopdrachtstatus(rec.mld_opdr_key, 7, 4); END; END LOOP; fac.writelog (p_applname, 'S', 'Exact export Opdrachten Vast/Variabel ten behoeve van verkoopinterface. Aantal facturen: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, ''); END; / -- exact verkoop CREATE OR REPLACE VIEW rabo_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop; CREATE OR REPLACE PROCEDURE rabo_select_exact_verkoop ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN rabo_select_exact_vastvar(p_applname, p_applrun, to_char(sysdate, 'yyyy')); aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'), 'CORE'); END; / CREATE OR REPLACE PROCEDURE rabo_export_exact_verkoop ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'), 'CORE'); END; / -- exact verkoop over het vorige jaar CREATE OR REPLACE VIEW rabo_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop; CREATE OR REPLACE PROCEDURE rabo_select_exact_verkoop_vj ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN rabo_select_exact_vastvar(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1)); aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1), 'CORE'); END; / CREATE OR REPLACE PROCEDURE rabo_export_exact_verkoop_vj ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1), 'CORE'); END; / -- exact projecturen (XML) CREATE OR REPLACE VIEW rabo_v_export_exact_uren (result, result_order) AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml; CREATE OR REPLACE PROCEDURE rabo_select_exact_uren ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN aaxx_select_exact_uren_xml(p_applname, p_applrun, ''); END; / -- verwerk exact projecturen (XML) CREATE OR REPLACE PROCEDURE rabo_export_verwerk_exact_uren ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, ''); END; / -- bundel catering CREATE OR REPLACE VIEW rabo_v_export_bundel_catering (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_bundel_catering; CREATE OR REPLACE PROCEDURE rabo_export_bundel_catering ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_bundel_catering(p_applname, p_applrun, p_filedir, p_filename); END; / -- script om dagelijks terugkerende scripts aan te roepen. CREATE OR REPLACE PROCEDURE rabo_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c IS SELECT ins_deel_omschrijving, ins_deel_mjb_score1, ins_deel_mjb_score2, ins_srtcontroledl_xcp_key, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk WHERE kd.ins_deel_key = d.ins_deel_key AND kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.ins_srtkenmerk_omschrijving = 'Kritische asset') kritisch, (SELECT TO_CHAR (ins_deelsrtcontrole_datum_org, 'YYYY') FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND dsc.ins_srtcontrole_key = x.ins_srtcontrole_key AND dsc.ins_deelsrtcontrole_status = 0) orgdatum, COALESCE (fac.nextcyclusdate ( COALESCE ( (SELECT MAX (ins_deelsrtcontrole_datum) FROM ins_deelsrtcontrole dsc WHERE ins_deelsrtcontrole_status <> 0 AND dsc.ins_deel_key = d.ins_deel_key AND dsc.ins_srtcontrole_key = x.ins_srtcontrole_key), DECODE (x.ins_srtcontroledl_xcp_startdat, NULL, d.ins_deel_aanmaak, TO_DATE (NULL))), 1, -- interval ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_bits, 1, 1), ins_srtcontroledl_xcp_startdat) volgende FROM ins_deel d, ins_srtcontroledl_xcp x, ins_srtcontrole sc, ctr_disc_params dp WHERE d.ins_deel_key = x.ins_deel_key AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.ctr_discipline_key = dp.ctr_ins_discipline_key AND dp.ctr_disc_params_ismjob = 1; v_prio NUMBER; v_freeze VARCHAR2 (4); BEGIN -- Conditiescores worden vanaf 2020.1 in het proces berekend, per melding en ook direct naar het object. -- Deze object-scores worden moeten vervolgens geagregeerd worden naar gebouw en locatieniveau. Doen we dagelijks dmv onderstaande procedure: ---- Call this procedure to update aggregate scores (for a location/building) ---- PROCEDURE update_aggr_scores (p_locatie_key IN NUMBER DEFAULT NULL, p_gebouw_key IN NUMBER DEFAULT NULL); cnd.update_aggr_scores (NULL, NULL); -- pas de urgentie bij de taken aan SELECT fac.getSetting ('mjb_freeze_year') INTO v_freeze FROM DUAL; FOR rec IN c LOOP -- kritische installatie en planning dit jaar of vorig jaar niet uitgevoerd. IF rec.kritisch = 1 AND (TO_CHAR (rec.volgende, 'yyyy') = v_freeze OR rec.orgdatum <= v_freeze) THEN v_prio := 3; -- planning vorig jaar + storingshistorie ELSIF rec.orgdatum < v_freeze THEN v_prio := 3; --prioriteit < 4 ELSIF rec.ins_deel_mjb_score2 < 4 OR rec.ins_deel_mjb_score1 >= 4 THEN v_prio := 3; ELSIF rec.ins_deel_mjb_score2 < 7 THEN v_prio := 2; ELSE v_prio := 1; END IF; UPDATE ins_srtcontroledl_xcp x SET ins_srtcontroledl_xcp_prio = v_prio WHERE x.ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key; END LOOP; aaxx_daily_task (p_applname, p_applrun); END; / -- Bronview voor procedure rabo_select_status_axxerion CREATE OR REPLACE VIEW rabo_v_status_axxerion ( MLD_MELDING_KEY, MLD_MELDING_EXTERNNR, DATUM, STATUS, MLD_MELDING_EINDDATUM, MLD_MELDING_OPMERKING, MLD_MELDING_NOTITIE, KOSTEN, FIATTEUR, DATUMFIAT, VOLGORDE ) AS SELECT m.mld_melding_key, m.mld_melding_externnr, mn.mld_melding_note_aanmaak as datum, 'NOTE' status, mld_melding_einddatum, '' opmerking, mn.mld_melding_note_omschrijving, '' kosten, '' fiatteur, '' datumfiat, 2 volgorde FROM mld_melding m, mld_melding_note mn WHERE m.mld_melding_key = mn.mld_melding_key AND mn.mld_melding_note_flag = 1 -- Alle notities zichtbaar voor aanvrager AND m.mld_melding_externnr IS NOT NULL UNION ALL SELECT m.mld_melding_key, mld_melding_externnr, fac_tracking_datum AS datum, DECODE (sn.fac_srtnotificatie_code, 'MLDACP', 'ACCEPT', 'MLDREJ', 'REJECT', 'MLDAFM', 'CLOSE', 'MLDAFR', 'FINCLOSE', 'MLDUPD', 'UPDATE', 'Invalid') status, mld_melding_einddatum, mld_melding_opmerking, '' notitie, DECODE (fac_srtnotificatie_code, 'MLDAFR', COALESCE(TO_CHAR(k.kosten), '0'),'') kosten, DECODE (fac_srtnotificatie_code, 'MLDAFR', COALESCE(f.fiatteur,'geen fiattering'),'') fiatteur, DECODE (fac_srtnotificatie_code, 'MLDAFR', COALESCE(TO_CHAR(f.datumfiat,'yyyy-mm-dd hh24:mi'),''),'') datumfiat, DECODE (fac_srtnotificatie_code, 'MLDUPD', 1, 0) volgorde FROM fac_tracking t, fac_srtnotificatie sn, mld_melding m, (SELECT mld_melding_key, SUM (mld_opdr_kosten) kosten FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 0 GROUP BY mld_melding_key) k, (SELECT mld_melding_key, MAX (ft.fac_tracking_datum) AS datumfiat,MAX (prs_perslid_naam || '(' || prs_perslid_voornaam || ')') AS fiatteur FROM mld_opdr o, fac_tracking ft, fac_srtnotificatie sn, prs_perslid p WHERE o.mld_opdr_key = ft.fac_tracking_refkey AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND ft.prs_perslid_key = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'ORDFOK' GROUP BY mld_melding_key) f WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = m.mld_melding_key AND m.mld_melding_key = k.mld_melding_key (+) AND m.mld_melding_key = f.mld_melding_key (+) AND m.mld_melding_externnr IS NOT NULL AND ( sn.fac_srtnotificatie_code = 'MLDACP' OR sn.fac_srtnotificatie_code = 'MLDREJ' OR sn.fac_srtnotificatie_code = 'MLDAFM' OR sn.fac_srtnotificatie_code = 'MLDAFR' OR sn.fac_srtnotificatie_code = 'MLDUPD') ; CREATE OR REPLACE VIEW rabo_v_export_status_axxerion ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = SUBSTR ('STATUS_AXXERION', 1, 12); CREATE OR REPLACE PROCEDURE rabo_select_status_axxerion (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c ( p_from DATE, p_to DATE) IS SELECT * FROM rabo_v_status_axxerion WHERE datum BETWEEN p_from AND p_to ORDER BY mld_melding_externnr, volgorde, datum; v_from DATE; v_to DATE; v_count NUMBER; v_externnr VARCHAR2 (10); v_bestand VARCHAR2 (100); v_empty NUMBER; v_mld_melding_key NUMBER (10); BEGIN v_count := 0; v_empty := 1; v_externnr := '9999'; v_bestand := SUBSTR (p_applname, 1, 12); -- de laatste synchronisatietijd wordt opgeslagen in fac_rapport met een speciale node naam eindigend op een 1. -- mocht deze niet gevuld zijn (initieel) dan gebruiken we het huidige uur. BEGIN SELECT fac.safe_to_date (fac_rapport_regel, 'yyyy-mm-dd hh24:mi') INTO v_from FROM fac_rapport WHERE SUBSTR (v_bestand, 1, 11) || '1' = fac_rapport_node; EXCEPTION WHEN NO_DATA_FOUND THEN v_from := TRUNC (SYSDATE, 'HH24'); END; -- het einde van de periode mag niet verder liggen dan de huidige tijd v_to := v_from + 1 / (24 * 4); IF v_to > SYSDATE THEN v_to := v_from; END IF; -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- als de export een tijdje niet gedraaid is dan halen we dit weer in door de periode groter te maken. WHILE v_to + 1 / (24 * 4) < SYSDATE AND v_count < 10 LOOP v_to := v_to + 1 / (24 * 4); v_count := v_count + 1; END LOOP; -- header aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); FOR rec IN c (v_from, v_to) LOOP v_empty := 0; v_mld_melding_key := rec.mld_melding_key; IF NOT (rec.mld_melding_externnr = v_externnr AND rec.status = 'UPDATE') THEN v_externnr := rec.mld_melding_externnr; aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'timestamp', TO_CHAR (rec.datum, 'dd-mm-yyyy hh24:mi')); aaxx_add_xml_element (v_bestand, 'status', rec.status); aaxx_add_xml_element (v_bestand, 'afhandeling', SUBSTR(rec.mld_melding_opmerking,1,1900)); aaxx_add_xml_element (v_bestand, 'notitie', SUBSTR(rec.mld_melding_notitie,1,1900)); aaxx_add_xml_element (v_bestand, 'oplosdatum', TO_CHAR (rec.mld_melding_einddatum, 'dd-mm-yyyy hh24:mi')); IF rec.status = 'FINCLOSE' THEN aaxx_add_xml_element (v_bestand, 'kosten', rec.kosten); aaxx_add_xml_element (v_bestand, 'fiatteur', rec.fiatteur); aaxx_add_xml_element (v_bestand, 'datumfiat', TO_CHAR (rec.datumfiat, 'dd-mm-yyyy hh24:mi')); -- tracking toevoegen aan melding fac.trackaction ('#MLDINF', v_mld_melding_key, 4, NULL, 'Kosten naar Axxerion: ' || rec.kosten || ' euro'); END IF; aaxx_add_xml_row (v_bestand, ''); END IF; END LOOP; aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); -- Als er niet geexporteerd is dan gaan we alle regels verwijderen -- zodat er niet een leeg xml bestand komt te staan met alleen de facilitor tags. IF v_empty = 1 THEN DELETE fac_rapport WHERE fac_rapport_node = v_bestand; END IF; DELETE fac_rapport WHERE fac_rapport_node = SUBSTR (v_bestand, 1, 11) || '1'; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel) VALUES (SUBSTR (v_bestand, 1, 11) || '1', TO_CHAR (v_to, 'yyyy-mm-dd hh24:mi')); END; / -- Bronview voor exportfunctie MELDING AXXERION - zie ticket 62723 -- 1. De SA- en ST-meldingen ---- Moeten bij aanmaken in Facilitor doorgestuurd worden naar Axxerion + ---- Krijgen terugkoppeling met Axxerion-nr omdat ze verder in status-updates (vanuit facilitor => axxerion) moeten meelopen -- 2. De MJOB-meldingen ---- Moeten pas doorgezet worden als op MJP-meldingsniveau de Motivatie met gunningsbrief is ingevuld/gekoppeld. ---- Een MJOB-melding kan meerdere keren naar Axxerion doorgestuurd worden (meerdere gunningsaanvragen) CREATE OR REPLACE VIEW rabo_v_melding_axxerion ( MLD_MELDING_KEY, REF_KEY, -- Externe nummer - ref_key axxerion STDMELDING2, -- mld_stdmelding_omschrijving VAKGROEP, -- vakgroep DISCIPLINE_OMSCHRIJVING KWIS, -- Vakgroeptype INS_SRTDISCIPLINE_OMSCHRIJVING OPMERKING, -- Afhandelingstekst -- De korte omschrijving - Deze wordt vaak niet gevuld bij RABO (is uitgezet..._ OMSCHRIJVING, DATUM, EINDDATUM, LOCATIE_CODE, LOCATIE, MELDING, -- Voor prefix-xml HOOFDMELDING, ORDERNR_KLANT, -- Komt WBS-code KOSTENSOORT_KLANT, -- Alternatieve kostensoort_code RFQ_AANTAL, -- Aantal rfq's uitgezet, zodat je weet hoeveel bijlagen je moet ontvangen.... RFQ_MOTIVATIE, RFQ_BEGELEIDING_KOSTEN,-- Begeleidingskosten HEYDAY (excl. Btw) RFQ_LEVERANCIER_KOSTEN, RFQ_FASE, -- Hoeveelste vergunningsaanvraag die is ingediend? (1,2 of 3) DATUM_NAAR_AXXERION ) AS SELECT m.mld_melding_key, m.mld_melding_externnr, v.mld_stdmelding_omschrijving, v.ins_discipline_omschrijving, v.ins_srtdiscipline_omschrijving, m.mld_melding_opmerking, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)), m.mld_melding_datum, m.mld_melding_einddatum, 'PR' || l.alg_locatie_code, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving, 'MELDINGEN_' || sd.ins_srtdiscipline_prefix || '_' melding, m.mld_melding_mldgroup_key, aaxx_get_kenmerk ( 'MLD', (SELECT k.mld_kenmerk_key FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_key = 481 -- ordernr_klant AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL), m.mld_melding_key) ordernr_klant, ks.prs_kostensoort_altcode kostensoort_klant, NULL rfq_aantal, NULL rfq_motivatie, NULL rfq_begeleiding_kosten, NULL rfq_leverancier_kosten, NULL rfq_fase, (SELECT fac.safe_to_date(km.mld_kenmerkmelding_waarde,'DD-MM-YYYY') FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 522 -- Datum melding naar Axxerion ) datum_naar_axxerion FROM mld_melding m, alg_locatie l, aaxx_v_dwh_mld_stdmelding v, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, prs_kostensoort ks WHERE m.mld_alg_locatie_key = l.alg_locatie_key AND v.mld_stdmelding_key = m.mld_stdmelding_key AND v.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key in (4,5) -- ST en SA AND sm.prs_kostensoort_key = ks.prs_kostensoort_key (+) AND TRUNC(m.mld_melding_datum) >= TO_DATE('18-06-2021','dd-mm-yyyy') -- Datum uitrol ST/SA is 18-6-2021 AND m.mld_melding_externnr IS NULL AND m.mld_melding_status NOT IN (1) -- Afgewezen meldingen niet meenemen naar Axxerion AND NOT EXISTS (SELECT km.mld_kenmerkmelding_key FROM mld_melding mm, mld_kenmerkmelding km, mld_kenmerk k WHERE mm.mld_melding_key = m.mld_melding_key AND mm.mld_melding_key = km.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 522) -- Datum melding naar Axxerion UNION SELECT m.mld_melding_key, m.mld_melding_externnr, v.mld_stdmelding_omschrijving, v.ins_discipline_omschrijving, v.ins_srtdiscipline_omschrijving, m.mld_melding_opmerking, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)), rfq.datum_motivatie, m.mld_melding_einddatum, 'PR' || l.alg_locatie_code, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving, 'MELDINGEN_' || sd.ins_srtdiscipline_prefix || '_' melding, m.mld_melding_mldgroup_key, aaxx_get_kenmerk ( 'MLD', (SELECT k.mld_kenmerk_key FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_key = 481 -- ordernr_klant AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL), m.mld_melding_key) ordernr_klant, ks.prs_kostensoort_altcode kostensoort_klant, (SELECT COUNT (*) FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_statusopdr_key not in (1,2) -- Afgekeurde en Afgewezen offertes hoeven niet naar Axxerion AND ot.mld_typeopdr_isofferte = 1) rfq_aantal, rfq.motivatie rfq_motivatie, fac.safe_to_number(rfq.begeleiding_kosten) rfq_begeleiding_kosten, fac.safe_to_number(rfq.leverancier_kosten) rfq_leverancier_kosten, rfq.fase rfq_fase, rfq.datum_axxerion datum_naar_axxerion FROM mld_melding m, alg_locatie l, aaxx_v_dwh_mld_stdmelding v, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, prs_kostensoort ks, (SELECT mm.mld_melding_key, km.mld_kenmerkmelding_aanmaak datum_motivatie, SUBSTR(k.mld_kenmerk_omschrijving, LENGTH(k.mld_kenmerk_omschrijving),1) fase, (SELECT max(km.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km WHERE km.mld_melding_key = k_mot.mld_melding_key AND km.mld_kenmerkmelding_key = k_mot.mld_kenmerkmelding_key ) motivatie, (SELECT max(km.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km WHERE km.mld_melding_key = k_kost.mld_melding_key AND km.mld_kenmerkmelding_key = k_kost.mld_kenmerkmelding_key ) begeleiding_kosten, (SELECT max(km.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km WHERE km.mld_melding_key = k_kost.mld_melding_key AND km.mld_kenmerkmelding_key = k_lev.mld_kenmerkmelding_key ) leverancier_kosten, (SELECT fac.safe_to_date(km.mld_kenmerkmelding_waarde,'DD-MM-YYYY') FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = mm.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 522 -- Datum melding naar Axxerion ) datum_axxerion FROM mld_melding mm, mld_kenmerkmelding km, mld_kenmerk k, (SELECT mld_melding_key, max(km.mld_kenmerkmelding_key) mld_kenmerkmelding_key FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 524 -- Motivatie naar Axxerion GROUP BY mld_melding_key) k_mot, (SELECT mld_melding_key, max(km.mld_kenmerkmelding_key) mld_kenmerkmelding_key FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 525 -- Kostenraming naar Axxerion GROUP BY mld_melding_key) k_kost, (SELECT mld_melding_key, max(km.mld_kenmerkmelding_key) mld_kenmerkmelding_key FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 541 -- Kostenraming Leverancierskosten naar Axxerion GROUP BY mld_melding_key) k_lev WHERE mm.mld_melding_key = km.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 523 -- Checkbox MJOP-melding doorzetten naar Axxerion AND mm.mld_melding_key = k_mot.mld_melding_key AND mm.mld_melding_key = k_kost.mld_melding_key AND mm.mld_melding_key = k_lev.mld_melding_key ORDER BY mm.mld_melding_key, km.mld_kenmerkmelding_aanmaak) rfq WHERE m.mld_alg_locatie_key = l.alg_locatie_key AND v.mld_stdmelding_key = m.mld_stdmelding_key AND v.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key in (61) -- MJOP AND sm.prs_kostensoort_key = ks.prs_kostensoort_key (+) AND m.mld_melding_key = rfq.mld_melding_key AND (trunc(rfq.datum_motivatie) > rfq.datum_axxerion OR rfq.datum_axxerion IS NULL) ; CREATE OR REPLACE VIEW rabo_v_export_melding_axxerion ( result, result_order, melding ) AS SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2), fac_rapport_volgnr, SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1) FROM fac_rapport WHERE fac_rapport_node = SUBSTR ('MELDING_AXXERION', 1, 12) -- MELDING_AXXE (12 posities is max voor fac_rappor_node) ; CREATE OR REPLACE PROCEDURE rabo_select_melding_axxerion (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c ( p_from DATE, p_to DATE) IS SELECT melding FROM rabo_v_melding_axxerion WHERE datum BETWEEN p_from AND p_to GROUP BY melding; CURSOR c_mld ( p_from DATE, p_to DATE, p_melding VARCHAR2) IS SELECT * FROM rabo_v_melding_axxerion WHERE datum BETWEEN p_from AND p_to AND melding = p_melding ORDER BY mld_melding_key; v_from DATE; v_to DATE; v_melding VARCHAR2 (20); v_count NUMBER; v_externnr VARCHAR2 (10); v_bestand VARCHAR2 (100); v_empty NUMBER; v_mld_melding_key NUMBER (10); v_prefix VARCHAR2(20); v_datum_axxerion VARCHAR2 (10) ; BEGIN v_count := 0; v_empty := 1; v_bestand := SUBSTR (p_applname, 1, 12); -- MELDING_AXXE -- de laatste synchronisatietijd wordt opgeslagen in fac_rapport met een speciale node naam eindigend op een 1. -- mocht deze niet gevuld zijn (initieel) dan gebruiken we het huidige uur. BEGIN SELECT fac.safe_to_date (fac_rapport_regel, 'yyyy-mm-dd hh24:mi') INTO v_from FROM fac_rapport WHERE SUBSTR (v_bestand, 1, 11) || '1' = fac_rapport_node; -- MELDING_AXX1 EXCEPTION WHEN NO_DATA_FOUND THEN v_from := TRUNC (SYSDATE, 'HH24'); END; -- het einde van de periode mag niet verder liggen dan de huidige tijd v_to := v_from + 1 / (24 * 4); IF v_to > SYSDATE THEN v_to := v_from; END IF; -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- als de export een tijdje niet gedraaid is dan halen we dit weer in door de periode groter te maken. WHILE v_to + 1 / (24 * 4) < SYSDATE AND v_count < 10 LOOP v_to := v_to + 1 / (24 * 4); v_count := v_count + 1; END LOOP; FOR rec IN c (v_from, v_to) LOOP v_empty := 0; v_datum_axxerion := TO_CHAR(TRUNC(sysdate),'DD-MM-YYYY'); v_prefix := rec.melding || '##' ; v_melding := rec.melding ; -- header aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); FOR rec IN c_mld (v_from, v_to, v_melding) LOOP v_mld_melding_key := rec.mld_melding_key; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_element_p (v_bestand, v_prefix, 'ref_key', rec.ref_key); aaxx_add_xml_element_p (v_bestand, v_prefix,'timestamp', TO_CHAR (rec.datum, 'dd-mm-yyyy hh24:mi')); aaxx_add_xml_element_p (v_bestand, v_prefix, 'stdmelding2', rec.stdmelding2); aaxx_add_xml_element_p (v_bestand, v_prefix, 'kwis', rec.kwis); aaxx_add_xml_element_p (v_bestand, v_prefix, 'vakgroep', rec.vakgroep); aaxx_add_xml_element_p (v_bestand, v_prefix, 'opmerking', SUBSTR(rec.opmerking,1,1900)); aaxx_add_xml_element_p (v_bestand, v_prefix, 'omschrijving', SUBSTR(rec.omschrijving,1,1900)); aaxx_add_xml_element_p (v_bestand, v_prefix, 'locatie_code', rec.locatie_code); aaxx_add_xml_element_p (v_bestand, v_prefix, 'locatie', rec.locatie); aaxx_add_xml_element_p (v_bestand, v_prefix,'datum', TO_CHAR (rec.datum, 'dd-mm-yyyy hh24:mi')); aaxx_add_xml_element_p (v_bestand, v_prefix, 'sla_datum', TO_CHAR (rec.einddatum, 'dd-mm-yyyy hh24:mi')); aaxx_add_xml_element_p (v_bestand, v_prefix, 'ordernr_klant', rec.ordernr_klant); IF rec.kwis = 'MJOP' OR rec.kwis = 'Service Aanvraag' THEN aaxx_add_xml_element_p (v_bestand, v_prefix, 'kostensoort_klant', rec.kostensoort_klant); END IF; IF rec.kwis = 'MJOP' THEN aaxx_add_xml_element_p (v_bestand, v_prefix, 'aantal_rfqs', rec.rfq_aantal); aaxx_add_xml_element_p (v_bestand, v_prefix, 'motivatie', REPLACE(rec.rfq_motivatie, CHR(128), 'euro ')); -- Axxerion lijkt probleem te hebben met verwerkingen euro-teken, daarom hier maar vervangactie.. aaxx_add_xml_element_p (v_bestand, v_prefix, 'kosten_begeleiding', rec.rfq_begeleiding_kosten); -- RABO#68697 Kosten gesplitst in Begeleidingskosten HEYDAY (was Geplande_kosten) aaxx_add_xml_element_p (v_bestand, v_prefix, 'kosten_leverancier', rec.rfq_leverancier_kosten); --- en Leverancierskosten (excl. Btw) aaxx_add_xml_element_p (v_bestand, v_prefix, 'fase', rec.rfq_fase); -- tracking toevoegen aan melding en opdracht fac.trackaction ('#MLDINF', v_mld_melding_key, 4, NULL, 'Motivatie offerte-selectie naar Axxerion doorgezet voor akkoord'); -- Ook nog datum-kenmerkveld vullen, ter info voor gebruikers + voor sturing BIJLAGE_AXXERION (bij avondrun) mld.upsertmeldingkenmerk (4814 , -- v_kenmerk_key v_mld_melding_key, v_datum_axxerion); -- En nog filterbolletjes omzetten naar mld_melding_flag dat melding bij axxerion ligt ter beoordeling UPDATE mld_melding SET mld_melding_flag = 1 WHERE mld_melding_key = v_mld_melding_key ; END IF; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); -- Op ST/SA-melding: Tracking toevoegen + Filterstatus zetten (on hold = 3) + Kenmerk-datumveld vullen IF rec.kwis != 'MJOP' THEN fac.trackaction ('#MLDINF', v_mld_melding_key, 4, NULL, 'Melding XML naar Axxerion verzonden'); UPDATE mld_melding SET mld_melding_flag = 3 WHERE mld_melding_key = v_mld_melding_key ; IF rec.kwis = 'Storing' THEN mld.upsertmeldingkenmerk (4901 , -- v_kenmerk_key v_mld_melding_key, v_datum_axxerion); END IF; IF rec.kwis = 'Service Aanvraag' THEN mld.upsertmeldingkenmerk (4902 , -- v_kenmerk_key v_mld_melding_key, v_datum_axxerion); END IF; END IF; END LOOP; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); END LOOP; -- Als er niet geexporteerd is dan gaan we alle regels verwijderen -- zodat er niet een leeg xml bestand komt te staan met alleen de facilitor tags. IF v_empty = 1 THEN DELETE fac_rapport WHERE fac_rapport_node = v_bestand; END IF; DELETE fac_rapport WHERE fac_rapport_node = SUBSTR (v_bestand, 1, 11) || '1'; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel) VALUES (SUBSTR (v_bestand, 1, 11) || '1', TO_CHAR (v_to, 'yyyy-mm-dd hh24:mi')); END; / -- Voor export dagelijks van de bijlagen van de MJOP-RFQ's die voor akkoord naar Axxerion gaan/moeten --- Zie ticket 62723 --- De M-melding (MJOP melding) wordt in de dag naar Axxerion verstuurd via exportfunctie MELDING_AXXERION --- De bijlagen 'getekende offertes' uit Opdracht-folder 'Offerte_ondertekend' en de Gunningsbrief HeyDay op M-meldingsniveau moeten ook door naar Axxerion en onder die M-melding komen. --- OPZET: 1. Een batfile maken om fysiek alle bestanden op de SFTP te krijgen. ---- 2. Een procedure die de bijbehorende XML ook op die SFTP map zet. --- LET OP! ---- Volgorde uitvoer van 1 en 2 is belangrijk omdat bij stap 2, in de procedure, een datum gezet wordt. ---- Door deze datum worden dezelfde bijlagen niet meerdere keren verstuurd wanneer voor eenzelfde M-melding meerdere keren een gunning wordt aangevraagd. -- Bronview CREATE OR REPLACE VIEW rabo_v_bijlage_axxerion ( MLD_MELDING_KEY, FILENAME, DATUM_EXPORT, BIJLAGE, -- Voor prefix XML DISK_DIRECTORY, BIJLAGE_KEY, BIJLAGE_AANMAAK, DATUM_EXPORT_VORIGE ) AS SELECT m.mld_melding_key, b.fac_bijlagen_filename, v.datum_export, 'BIJLAGEN_' || sd.ins_srtdiscipline_prefix || '_' bijlage, b.fac_bijlagen_disk_directory, b.fac_bijlagen_key, b.fac_bijlagen_aanmaak, t.datum_export_vorige FROM fac_v_bijlagen b, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, mld_opdr o, mld_statusopdr so, mld_kenmerk k, (SELECT km.mld_melding_key, fac.safe_to_date(km.mld_kenmerkmelding_waarde,'dd-mm-yyyy') datum_export FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 522 -- RABO-A 482 -- Datum melding naar Axxerion ) v, (SELECT fac_tracking_refkey, MAX (fac_tracking_datum) datum_export_vorige FROM fac_tracking WHERE fac_srtnotificatie_key = 31 -- MLDINF AND fac_tracking_oms = 'Bijlagen uit offerte-folders naar Axxerion doorgezet' GROUP BY fac_tracking_refkey ) t WHERE m.mld_melding_key = v.mld_melding_key AND m.mld_melding_key = o.mld_melding_key AND m.mld_melding_key = t.fac_tracking_refkey(+) AND o.mld_statusopdr_key = so.mld_statusopdr_key AND o.mld_opdr_key = b.fac_bijlagen_refkey AND b.fac_bijlagen_module = 'MLD' AND b.fac_bijlagen_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 521 -- Alle bijlagen MJOP_NaarAxxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key in (61) -- MJOP AND o.mld_statusopdr_key not in (1,2) -- Voor Afgewezen en Afgekeurde offertes worden geen bijlagen verstuurd. AND ( t.datum_export_vorige IS NULL OR b.fac_bijlagen_aanmaak > t.datum_export_vorige ) UNION SELECT m.mld_melding_key, b.fac_bijlagen_filename, v.datum_export, 'BIJLAGEN_' || sd.ins_srtdiscipline_prefix || '_' bijlage, b.fac_bijlagen_disk_directory, b.fac_bijlagen_key, b.fac_bijlagen_aanmaak, t.datum_export_vorige FROM fac_v_bijlagen b, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, mld_kenmerk k, (SELECT km.mld_melding_key, fac.safe_to_date(km.mld_kenmerkmelding_waarde,'dd-mm-yyyy') datum_export FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 522 -- Datum melding naar Axxerion ) v, (SELECT fac_tracking_refkey, MAX (fac_tracking_datum) datum_export_vorige FROM fac_tracking WHERE fac_srtnotificatie_key = 31 -- MLDINF AND fac_tracking_oms = 'Bijlagen uit offerte-folders naar Axxerion doorgezet' GROUP BY fac_tracking_refkey ) t WHERE m.mld_melding_key = v.mld_melding_key AND m.mld_melding_key = b.fac_bijlagen_refkey AND m.mld_melding_key = t.fac_tracking_refkey(+) AND b.fac_bijlagen_module = 'MLD' AND b.fac_bijlagen_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 521 -- Alle bijlagen MJOP_NaarAxxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key in (61) -- MJOP AND ( t.datum_export_vorige IS NULL OR b.fac_bijlagen_aanmaak > t.datum_export_vorige ) ; -- View om fysiek alle bestanden op de SFTP te krijgen. ---- Ps2. Het chcp statement (= change code page) aan begin batfile opnemen zodat de bestandsnamen met diacritic characters niet ge-encodeerd worden. ---- Ps2. Ik gebruik hieronder voor '\' de ASCII-code (=92) om in ultra-edit syntax-interpretatie goed te krijgen. CREATE OR REPLACE VIEW rabo_v_export_bijlage_axx_pdf ( result, result_order ) AS SELECT 'chcp 1252>nul' result, 0 result_order FROM DUAL UNION SELECT DISTINCT 'xcopy /y /S "' || 'd:\Apps\Facilitor\AAFM_DATA\RABO' || CHR(92) || v.disk_directory || CHR(92) || v.filename || '" "d:\Apps\Facilitor\ftp_sites\RABO\bijlagen_naar_axxerion' || '\"', v.bijlage_key result_order FROM rabo_v_bijlage_axxerion v WHERE v.datum_export = trunc(sysdate) ORDER BY result_order; CREATE OR REPLACE VIEW rabo_v_export_bijlage_axxerion ( result, result_order, bijlage ) AS SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2), fac_rapport_volgnr, SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1) FROM fac_rapport WHERE fac_rapport_node = SUBSTR ('BIJLAGE_AXXERION', 1, 12) -- BIJLAGE_AXXE (12 posities is max voor fac_rappor_node) ; CREATE OR REPLACE PROCEDURE rabo_select_bijlage_axxerion (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c ( p_from DATE, p_to DATE) IS SELECT bijlage FROM rabo_v_bijlage_axxerion WHERE datum_export BETWEEN p_from AND p_to GROUP BY bijlage ; CURSOR c_mld ( p_from DATE, p_to DATE, p_bijlage VARCHAR2) IS SELECT mld_melding_key, datum_export FROM rabo_v_bijlage_axxerion WHERE datum_export BETWEEN p_from AND p_to AND bijlage = p_bijlage GROUP BY mld_melding_key, datum_export ; CURSOR c_bijlage ( p_from DATE, p_to DATE, p_mld_melding_key NUMBER) IS SELECT filename FROM rabo_v_bijlage_axxerion WHERE datum_export BETWEEN p_from AND p_to AND mld_melding_key = p_mld_melding_key ; v_from DATE; v_to DATE; v_count NUMBER; v_externnr VARCHAR2 (10); v_bestand VARCHAR2 (100); v_empty NUMBER; v_mld_melding_key NUMBER (10); v_prefix VARCHAR2(20); v_bijlage VARCHAR2(20) ; BEGIN v_count := 0; v_empty := 1; v_bestand := SUBSTR (p_applname, 1, 12); -- BIJLAGE_AXXE -- de laatste synchronisatietijd wordt opgeslagen in fac_rapport met een speciale node naam eindigend op een 1. -- mocht deze niet gevuld zijn (initieel) dan gebruiken we het huidige uur. BEGIN SELECT fac.safe_to_date (fac_rapport_regel, 'yyyy-mm-dd') + 1 -- Volgende dag gaan we pakken INTO v_from FROM fac_rapport WHERE SUBSTR (v_bestand, 1, 11) || '1' = fac_rapport_node; -- BIJLAGE_AXX1 EXCEPTION WHEN NO_DATA_FOUND THEN v_from := TRUNC (SYSDATE); END; -- We exporteren in principe 1 maal per dag, alles van die dag (avondrun) v_to := v_from; -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- als de export een tijdje niet gedraaid is dan halen we dit weer in door de periode groter te maken. WHILE v_to < TRUNC(SYSDATE) AND v_count < 10 LOOP v_to := v_to + 1; v_count := v_count + 1; END LOOP; FOR rec IN c (v_from, v_to) LOOP v_empty := 0; v_prefix := rec.bijlage || '##' ; v_bijlage := rec.bijlage ; -- header aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); FOR rec IN c_mld (v_from, v_to, v_bijlage) LOOP v_mld_melding_key := rec.mld_melding_key; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); FOR rec IN c_bijlage (v_from, v_to, v_mld_melding_key) LOOP aaxx_add_xml_element_p (v_bestand, v_prefix, 'filename', rec.filename); END LOOP; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); -- tracking toevoegen aan melding fac.trackaction ('#MLDINF', v_mld_melding_key, 4, NULL, 'Bijlagen uit offerte-folders naar Axxerion doorgezet'); END LOOP; aaxx_add_xml_row_p (v_bestand, v_prefix, ''); aaxx_add_xml_row_p (v_bestand, v_prefix, ''); END LOOP; -- Als er niet geexporteerd is dan gaan we alle regels verwijderen -- zodat er niet een leeg xml bestand komt te staan met alleen de facilitor tags. IF v_empty = 1 THEN DELETE fac_rapport WHERE fac_rapport_node = v_bestand; END IF; DELETE fac_rapport WHERE fac_rapport_node = SUBSTR (v_bestand, 1, 11) || '1'; INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel) VALUES (SUBSTR (v_bestand, 1, 11) || '1', TO_CHAR (v_to, 'yyyy-mm-dd')); END; / CREATE OR REPLACE PROCEDURE rabo_import_axx_refkey (p_import_key IN NUMBER) AS CURSOR c_cursor IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_newline VARCHAR2 (1000); -- Import line v_field VARCHAR2 (100); -- Import field v_fielddelimitor VARCHAR2 (1); -- Field seperator v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_index NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- De importvelden v_referentie VARCHAR2 (200); v_mld_melding_key VARCHAR2 (200); header_found BOOLEAN; v_impfile_id VARCHAR2 (20); BEGIN -- Init header_found := FALSE; v_fielddelimitor := ';'; v_index := 0; FOR rec IN c_cursor LOOP BEGIN v_newline := rec.fac_imp_file_line; IF SUBSTR (v_newline, 1, 3) = '?' THEN -- EF BB BF aangetroffen fac.imp_writelog (p_import_key, 'W', 'Byte Order Mark aangetroffen', 'Bestand heeft onbehandeld UTF-8 formaat.'); v_newline := SUBSTR (v_newline, 4); END IF; v_errorhint := 'Velden inlezen'; fac.imp_getfield (v_newline, v_fielddelimitor, v_referentie); fac.imp_getfield (v_newline, v_fielddelimitor, v_mld_melding_key); v_referentie := SUBSTR (v_referentie, INSTR(v_referentie, '-') + 1); -- Skip until a valid header is found IF UPPER (rec.fac_imp_file_line) LIKE 'REFERENTIE;MELDING_FACILITOR%' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found) THEN v_index := rec.fac_imp_file_index; -- Dan slaan we eerst de ontvangen gegevens op INSERT INTO rabo_imp_axx_refkey (fac_imp_file_index, mld_melding_key, referentie_axx ) VALUES ( v_index, v_mld_melding_key, v_referentie ); ELSE -- geen geldige header aangetroffen IF rec.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'I', 'Aangetroffen header', rec.fac_imp_file_line); END IF; END IF; END; END LOOP; DELETE fac_imp_file WHERE fac_import_key = p_import_key; IF NOT header_found THEN fac.imp_writelog (p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig bijlagen bestand.'); END IF; END; / CREATE OR REPLACE PROCEDURE rabo_update_axx_refkey (p_import_key IN NUMBER) IS CURSOR c IS SELECT fac_imp_file_index, mld_melding_key, referentie_axx FROM rabo_imp_axx_refkey ORDER BY fac_imp_file_index ; v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_aanduiding VARCHAR2 (400); v_melding_key NUMBER(10); v_ins_srtdiscipline_key NUMBER(10); BEGIN FOR rec IN c LOOP v_aanduiding := 'Toevoegen ref_key ' || rec.referentie_axx || ' (Axxerion) aan Facilitor-melding ' || rec.mld_melding_key ; v_errorhint := 'update mld_melding_externnr' ; v_count := 0 ; SELECT COUNT ( * ) INTO v_count FROM mld_melding WHERE mld_melding_key = rec.mld_melding_key; IF v_count = 1 AND fac.safe_to_number(rec.mld_melding_key) IS NOT NULL THEN UPDATE mld_melding SET mld_melding_externnr = rec.referentie_axx WHERE mld_melding_key = rec.mld_melding_key ; -- tracking toevoegen aan melding fac.trackaction ('#MLDINF', rec.mld_melding_key, 4, NULL, v_aanduiding); -- status ST/SA-melding weer van OnHold afhalen SELECT vak.ins_srtdiscipline_key INTO v_ins_srtdiscipline_key FROM mld_melding m, mld_stdmelding std, mld_discipline vak WHERE m.mld_melding_key = rec.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = vak.ins_discipline_key ; IF v_ins_srtdiscipline_key in (4,5) THEN UPDATE mld_melding SET mld_melding_flag = NULL WHERE mld_melding_key = rec.mld_melding_key ; END IF; ELSE fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); END IF; END LOOP; -- Tussen-tabel leeggooien DELETE FROM rabo_imp_axx_refkey ; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE PROCEDURE rabo_import_bijlagen (p_import_key IN NUMBER) AS CURSOR c_cursor IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_newline VARCHAR2 (1000); -- Import line v_field VARCHAR2 (100); -- Import field v_fielddelimitor VARCHAR2 (1); -- Field seperator v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_index NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- De importvelden v_referentie VARCHAR2 (200); v_documentname VARCHAR2 (200); v_extensie VARCHAR2 (200); v_filename VARCHAR2 (200); header_found BOOLEAN; v_impfile_id VARCHAR2 (20); BEGIN -- Init header_found := FALSE; v_fielddelimitor := ';'; v_index := 0; -- de tijdelijke tabel bevat bijlagen die door de batch file geimporteerd moeten worden. -- doordat de bijlagen vaak eerder komen dan de melding slaan we de bijlagen op en -- verwachten dan dat er binnen een dag een melding bij is. -- Let op: Als er meerdere xml bestanden ingelezen worden dan komen deze onder dezelfde -- import_key te staan. De combinatie import_key en line_index is dan niet uniek. Vandaar -- dat hier een nieuwe index wordt geïntroduceerd. Ook is het belangrijk dat aan het einde -- de fac_imp_file leeg gemaakt wordt omdat ander de resultaten van volgende bestanden er aan -- toe gevoegd worden. DELETE rabo_imp_bijlagen WHERE verwerkt < SYSDATE - 2 OR aanmaak < SYSDATE - 2; SELECT COUNT (*) INTO v_index FROM fac_imp_file WHERE fac_import_key = p_import_key; SELECT MAX (SUBSTR (impfile_id, INSTR (impfile_id, '-') + 1, 100)) INTO v_index FROM rabo_imp_bijlagen WHERE SUBSTR (impfile_id, 1, INSTR (impfile_id, '-') - 1) = p_import_key; IF v_index IS NULL THEN v_index := 0; END IF; FOR rec IN c_cursor LOOP BEGIN v_newline := rec.fac_imp_file_line; IF SUBSTR (v_newline, 1, 3) = '?' THEN -- EF BB BF aangetroffen fac.imp_writelog (p_import_key, 'W', 'Byte Order Mark aangetroffen', 'Bestand heeft onbehandeld UTF-8 formaat.'); v_newline := SUBSTR (v_newline, 4); END IF; v_errorhint := 'Velden inlezen'; fac.imp_getfield (v_newline, v_fielddelimitor, v_documentname); fac.imp_getfield (v_newline, v_fielddelimitor, v_extensie); fac.imp_getfield (v_newline, v_fielddelimitor, v_referentie); fac.imp_getfield (v_newline, v_fielddelimitor, v_filename); v_referentie := REPLACE (v_referentie, 'REQ-'); -- Skip until a valid header is found IF UPPER (rec.fac_imp_file_line) LIKE 'DOCUMENTNAME;EXTENSIE;REFERENTIE;FILENAME%' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found) THEN -- Bestandsnaam groter dan 100 is te groot voor import-tabel, dus aanpassen IF LENGTH (v_filename) > 100 THEN v_filename := 'ORIGINEEL_TE_GROOT_' || SUBSTR (v_filename, 1, (100 - (20 + LENGTH (v_extensie)))) || '.' || v_extensie; v_documentname := 'ORIGINEEL_TE_GROOT_' || 'bijlage wordt niet ingelezen'; END IF; v_index := v_index + 1; -- Dan slaan we eerst de ontvangen gegevens op INSERT INTO rabo_imp_bijlagen (impfile_id, referentie, filenaam, filenaam_org, aanmaak) VALUES ( rec.fac_import_key || '-' || v_index, v_referentie, v_filename, REPLACE (v_documentname || '.' || v_extensie, ' '), SYSDATE); ELSE -- geen geldige header aangetroffen IF rec.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'I', 'Aangetroffen header', rec.fac_imp_file_line); END IF; END IF; END; END LOOP; DELETE fac_imp_file WHERE fac_import_key = p_import_key; IF NOT header_found THEN fac.imp_writelog (p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig bijlagen bestand.'); END IF; END; / CREATE OR REPLACE PROCEDURE rabo_update_bijlagen (p_import_key NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE rabo_export_bijlagen ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS CURSOR c_tabel IS SELECT * FROM rabo_imp_bijlagen WHERE verwerkt IS NULL; v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_index NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- De importvelden v_melding_key mld_melding.mld_melding_key%TYPE; v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE; v_discpline_key ins_tab_discipline.ins_discipline_key%TYPE; v_srtdiscipline_key ins_srtdiscipline.ins_srtdiscipline_key%TYPE; v_kenmerk_key ins_kenmerk.ins_kenmerk_key%TYPE; v_impfile_id VARCHAR2(20); BEGIN FOR rec1 IN c_tabel LOOP BEGIN v_impfile_id := rec1.impfile_id; -- -- zoek de juiste melding erbij v_errorhint := 'Geen geldige melding kunnen vinden ref:' || rec1.referentie; SELECT m.mld_melding_key, std.mld_stdmelding_key, d.ins_discipline_key, sd.ins_srtdiscipline_key INTO v_melding_key, v_stdmelding_key, v_discpline_key, v_srtdiscipline_key FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd WHERE m.mld_melding_externnr = rec1.referentie AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key; -- En het juist kenmerk erbij zoeken. v_errorhint := 'Geen geldig kenmerk kunnen vinden ref:' || rec1.referentie; SELECT mld_kenmerk_key INTO v_kenmerk_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = 1 -- Bijlagen AND ( (mld_kenmerk_niveau = 'T' AND mld_stdmelding_key = v_srtdiscipline_key) OR (mld_kenmerk_niveau = 'D' AND mld_stdmelding_key = v_discpline_key) OR (mld_kenmerk_niveau = 'S' AND mld_stdmelding_key = v_stdmelding_key)); UPDATE rabo_imp_bijlagen SET melding_key = v_melding_key , kenmerk_key = v_kenmerk_key WHERE impfile_id = v_impfile_id; --- HIER GAAT DIE FOUT! and m.mld_melding_externnr = rec1.referentie v_index := v_index + 1; --- WAT DOET DEZE PRECIES? NIETS COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', SUBSTR (v_errormsg, 1, 1000), v_errorhint); UPDATE rabo_imp_bijlagen SET logline = SUBSTR (v_errorhint || ' - ' || v_errormsg, 1, 1000) WHERE impfile_id = v_impfile_id; -- DEZE KLOPT NIET. Zou moeten zijn: where iimpfile_id = v_impfile_id and m.mld_melding_externnr = rec1.referentie END; END LOOP; END; / -- Rapportviews -- Rapporten voor EXPORT van bijlagen naar zip-file (zie ticket 64348) --- In rapport opgenomen fac_bijlagen_key en fac_bijlagen_zippath voor download-optie vanuit rapport-wizard --- Exportdefinities voor: 1. TAKEN 2. ASSETS 3. CONTRACTEN 4. MELDINGEN/OPDRACHTEN CREATE OR REPLACE VIEW rabo_v_export_taken_udr ( ins_discpline_omschrijving, alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_omschrijving, alg_locatie_plaats, alg_locatie_adres, alg_gebouw_naam, ins_srtgroep_omschrijving, ins_srtdeel_code, fac_bijlagen_aanmaak, fac_bijlagen_key, fac_bijlagen_zippath, check_lengte ) AS SELECT sd.ins_discipline_omschrijving, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')', l.alg_locatie_plaats, l.alg_locatie_adres, g.alg_gebouw_naam || ' (' || g.alg_gebouw_code || ')', d.ins_srtgroep_omschrijving, srtd.ins_srtdeel_code, b.fac_bijlagen_aanmaak, b.fac_bijlagen_key, alg_regio_omschrijving || CHR(92) || alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_discipline_omschrijving || CHR(92) || REGEXP_REPLACE(d.ins_srtgroep_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', '') || CHR(92) || srtd.ins_srtdeel_code || CHR(92) || b.fac_bijlagen_filename fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory) LENGTH ( alg_regio_omschrijving || CHR(92) || alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres, '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_discipline_omschrijving || CHR(92) || REGEXP_REPLACE(d.ins_srtgroep_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', '') || CHR(92) || srtd.ins_srtdeel_code || CHR(92) || b.fac_bijlagen_filename ) check_lengte FROM fac_v_bijlagen b, ins_deelsrtcontrole c, ins_srtcontrole sc, ins_tab_discipline sd, ctr_disc_params sdp, ins_v_deel_gegevens d, ins_srtdeel srtd, alg_gebouw g, alg_locatie l, alg_district di, alg_regio r, ins_kenmerk k WHERE b.fac_bijlagen_refkey = c.ins_deelsrtcontrole_key AND b.fac_bijlagen_module = 'INS' AND c.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.ctr_discipline_key = sd.ins_discipline_key AND sd.ins_discipline_module = 'CTR' AND sd.ins_discipline_key = sdp.ctr_ins_discipline_key -- AND sd.ins_discipline_key in (821, 624) -- Verplichtingen en Preventief onderhoud AND c.ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = srtd.ins_srtdeel_key AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND b.fac_bijlagen_verwijder IS NULL AND k.ins_kenmerk_key = b.fac_bijlagen_kenmerk_key AND k.ins_kenmerk_niveau = 'C' AND c.ins_srtcontrole_key = k.ins_srtinstallatie_key ORDER BY fac_bijlagen_zippath ; CREATE OR REPLACE VIEW rabo_v_export_assets_udr ( ins_discpline_omschrijving, alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_omschrijving, alg_locatie_plaats, alg_locatie_adres, alg_gebouw_naam, ins_srtgroep_omschrijving, ins_srtdeel_code, fac_bijlagen_aanmaak, fac_bijlagen_key, fac_bijlagen_zippath, check_lengte ) AS SELECT sd.ins_discipline_omschrijving, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')', l.alg_locatie_plaats, l.alg_locatie_adres, g.alg_gebouw_naam || ' (' || g.alg_gebouw_code || ')', d.ins_srtgroep_omschrijving, srtd.ins_srtdeel_code, b.fac_bijlagen_aanmaak, b.fac_bijlagen_key, alg_regio_omschrijving || CHR(92) || alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || REGEXP_REPLACE(d.ins_srtgroep_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', '') || CHR(92) || srtd.ins_srtdeel_code || CHR(92) || b.fac_bijlagen_filename fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory) LENGTH( alg_regio_omschrijving || CHR(92) || alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || REGEXP_REPLACE(d.ins_srtgroep_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', '') || CHR(92) || srtd.ins_srtdeel_code || CHR(92) || b.fac_bijlagen_filename ) check_lengte FROM fac_v_bijlagen b, ins_tab_discipline sd, ins_v_deel_gegevens d, ins_srtdeel srtd, alg_gebouw g, alg_locatie l, alg_district di, alg_regio r WHERE b.fac_bijlagen_refkey = d.ins_deel_key AND b.fac_bijlagen_module = 'INS' AND d.ins_discipline_key = sd.ins_discipline_key AND sd.ins_discipline_module = 'INS' AND d.ins_srtdeel_key = srtd.ins_srtdeel_key AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND b.fac_bijlagen_verwijder IS NULL ORDER BY fac_bijlagen_zippath ; CREATE OR REPLACE VIEW rabo_v_export_contracten_udr ( ins_discpline_omschrijving, alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_omschrijving, alg_locatie_plaats, alg_locatie_adres, alg_gebouw_naam, fac_bijlagen_aanmaak, fac_bijlagen_key, fac_bijlagen_zippath, check_lengte ) AS SELECT d.ins_discipline_omschrijving, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')', l.alg_locatie_plaats, l.alg_locatie_adres, cp.cnt_alg_gebouw_code, b.fac_bijlagen_aanmaak, b.fac_bijlagen_key, r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || d.ins_discipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') || CHR(92) || b.fac_bijlagen_filename fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory) LENGTH( r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || d.ins_discipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') || CHR(92) || b.fac_bijlagen_filename ) check_lengte FROM fac_v_bijlagen b, cnt_contract c, cnt_discipline d, (SELECT v.cnt_contract_key, CASE WHEN v.cnt_alg_plaats_code = 'L' THEN NULL ELSE v.cnt_alg_plaats_key END cnt_alg_onroerendgoed_keys, CASE WHEN v.cnt_alg_plaats_code = 'L' THEN 'Alle' ELSE (SELECT og.alg_gebouw_code FROM alg_v_onroerendgoed_gegevens og WHERE og.alg_onroerendgoed_keys = v.cnt_alg_plaats_key) END cnt_alg_gebouw_code, CASE WHEN v.cnt_alg_plaats_code = 'L' THEN v.cnt_alg_plaats_key ELSE (SELECT og.alg_locatie_key FROM alg_v_onroerendgoed_gegevens og WHERE og.alg_onroerendgoed_keys = v.cnt_alg_plaats_key) END cnt_alg_locatie_key FROM cnt_v_aanwezigcontract_plaats v WHERE v.cnt_contract_plaats_verwijder IS NULL ) cp, alg_locatie l, alg_district di, alg_regio r WHERE b.fac_bijlagen_refkey = c.cnt_contract_key AND b.fac_bijlagen_module = 'CNT' AND c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'CNT' AND c.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND b.fac_bijlagen_verwijder IS NULL ; CREATE OR REPLACE VIEW rabo_v_export_meldingen_udr ( ins_discpline_omschrijving, alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_omschrijving, alg_locatie_plaats, alg_locatie_adres, alg_gebouw_naam, fac_bijlagen_aanmaak, fac_bijlagen_key, fac_bijlagen_zippath, check_lengte ) AS SELECT sd.ins_srtdiscipline_omschrijving, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')', l.alg_locatie_plaats, l.alg_locatie_adres, g.alg_gebouw_code, b.fac_bijlagen_aanmaak, b.fac_bijlagen_key, r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_srtdiscipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || TO_CHAR(m.mld_melding_key) || DECODE (m.mld_melding_externnr, NULL, NULL, ' - ' || m.mld_melding_externnr) || CHR(92) || b.fac_bijlagen_filename fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory) LENGTH( r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_srtdiscipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || TO_CHAR(m.mld_melding_key) || DECODE (m.mld_melding_externnr, NULL, NULL, ' - ' || m.mld_melding_externnr) || CHR(92) || b.fac_bijlagen_filename ) check_lengte FROM fac_v_bijlagen b, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, (SELECT m.mld_melding_key, COALESCE (og.alg_gebouw_code, 'Geen gebouw') alg_gebouw_code FROM mld_melding m, alg_v_onroerendgoed_gegevens og WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) ) g, alg_locatie l, alg_district di, alg_regio r WHERE b.fac_bijlagen_refkey = m.mld_melding_key AND b.fac_bijlagen_module = 'MLD' AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'MLD' AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = g.mld_melding_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND b.fac_bijlagen_verwijder IS NULL UNION SELECT sd.ins_srtdiscipline_omschrijving, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')', l.alg_locatie_plaats, l.alg_locatie_adres, g.alg_gebouw_code, b.fac_bijlagen_aanmaak, b.fac_bijlagen_key, r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_srtdiscipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || TO_CHAR(m.mld_melding_key) || DECODE (m.mld_melding_externnr, NULL, NULL, ' - ' || m.mld_melding_externnr) || CHR(92) || o.mld_opdr_bedrijfopdr_volgnr || CHR(92) || b.fac_bijlagen_filename fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (i.v.m. insuffficient memory) LENGTH( r.alg_regio_omschrijving || CHR(92) || di.alg_district_omschrijving || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_plaats , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(l.alg_locatie_adres , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44), '') || CHR(92) || sd.ins_srtdiscipline_omschrijving || CHR(92) || TO_CHAR (b.fac_bijlagen_aanmaak, 'YYYY-MM') || CHR(92) || TO_CHAR(m.mld_melding_key) || DECODE (m.mld_melding_externnr, NULL, NULL, ' - ' || m.mld_melding_externnr) || CHR(92) || o.mld_opdr_bedrijfopdr_volgnr || CHR(92) || b.fac_bijlagen_filename ) check_lengte FROM fac_v_bijlagen b, mld_melding m, mld_opdr o, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, (SELECT m.mld_melding_key, COALESCE (og.alg_gebouw_code, 'Geen gebouw') alg_gebouw_code FROM mld_melding m, alg_v_onroerendgoed_gegevens og WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) ) g, alg_locatie l, alg_district di, alg_regio r, mld_kenmerk km WHERE b.fac_bijlagen_refkey = o.mld_opdr_key AND b.fac_bijlagen_module = 'MLD' AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'MLD' AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = g.mld_melding_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND b.fac_bijlagen_verwijder IS NULL AND b.fac_bijlagen_kenmerk_key = km.mld_kenmerk_key AND km.mld_kenmerk_niveau = 'O' ; -- Ticket 63704 - Layout Bijlage MJOP-RFQ -- M-melding is Hoofdmelding. De O-melding is Onderliggende melding CREATE OR REPLACE VIEW rabo_v_rap_mjop_offerte ( SOORT, -- H = hoofdmelding O = onderliggende/gekoppelde meldingen HOOFDMELDING_KEY, MELDING_KEY, MELDING_STATUS, REFERENTIE, ONDERWERP, -- korte omschrijving - wordt vaak niet gevuld bij RABO / uitgezet... OMSCHRIJVING, DATUM, EINDDATUM, PROJECTLEIDER, -- verantwoordelijke HeyDay LOCATIE_CODE, LOCATIE_OMSCHRIJVING, LOCATIE_ADRES, -- Bezoekadres, postcode, plaats OBJECT_IDENTIFICATIE, OBJECT_OMSCHRIJVING, OBJECT_AANTAL, OBJECT_EENHEID, OBJECT_BOUWJAAR, OBJECT_CAPACITEIT, OBJECT_FABRICAAT, OBJECT_REF_LEVERANCIER, OBJECT_TYPE, TAAK_OMSCHRIJVING, TAAK_OPMERKING_OT, -- Opmerking bij Objecttaak TAAK_OPMERKING_GT, -- Opmerking bij Geplande/Gestarte taak TAAK_KOSTEN, ------- OVERIGE ----- FILTER_1, -- Snelle filter voor mld - taken FILTER_2, -- Snelle filter voor plaats - taken FILTER_3, -- Snelle filter voor plaats OFFERTES, OPDRACHTEN ) AS SELECT CASE WHEN m.mld_melding_mldgroup_key IS NULL THEN 'H' ELSE 'O' END soort, COALESCE (m.mld_melding_mldgroup_key, m.mld_melding_key) mld_hoofd_melding_key, m.mld_melding_key, v.mld_statuses_omschrijving, sd.ins_srtdiscipline_prefix || TO_CHAR(m.mld_melding_key) referentie, m.mld_melding_onderwerp, m.mld_melding_omschrijving, m.mld_melding_datum, m.mld_melding_einddatum, (SELECT p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')' FROM mld_kenmerkmelding km, mld_kenmerk k, prs_perslid p WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_kenmerk_key = 4761 AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = p.prs_perslid_key ) projectleider, l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_adres || ', ' || l.alg_locatie_postcode || ', ' || l.alg_locatie_plaats adres, object.ins_deel_omschrijving object_identificatie, object.ins_deel_opmerking object_omschrijving, object.ins_deel_aantal object_aantal, object.eenheid, object.bouwjaar, object.capaciteit, object.fabricaat, object.ref_leverancier, object.type_obj, taak.ins_srtcontrole_omschrijving -- taak.srtcontrole_omschrijving taak, taak.ins_srtcontroledl_xcp_opmerk -- opmerking bij objecttaak (xcp record) taak_opmerking_ot, taak.ins_deelsrtcontrole_opmerking -- opmerking bij gestarte taak taak_opmerking_gt, taak.ins_deelsrtcontrole_freezecost taak_kosten, TO_CHAR(m.mld_melding_key) || ' - ' || m.mld_melding_onderwerp || ' - ' || taak.ins_srtcontrole_omschrijving filter_1, l.alg_locatie_plaats || ' - ' || TO_CHAR(m.mld_melding_key) || ' (' || taak.ins_srtcontrole_omschrijving || ')' filter_2, l.alg_locatie_plaats filter_3, (SELECT count(*) FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 1 -- AND o.mld_statusopdr_key not in (1,2) ) offertes, (SELECT count(*) FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_melding_key = m.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 0 ) opdrachten FROM mld_melding m, alg_locatie l,mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, mld_statuses v, (SELECT mo.mld_melding_key, d.ins_deel_omschrijving, d.ins_deel_opmerking, d.ins_deel_aantal, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 41) -- eenheid eenheid, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 42) -- Bouwjaar bouwjaar, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 44) -- Type type_obj, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 51) -- Referentienummer leverancier ref_leverancier, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 45) -- Capaciteit capaciteit, (select ins_kenmerkdeel_waarde from ins_kenmerkdeel kd, ins_kenmerk k where kd.ins_deel_key = d.ins_deel_key and kd.ins_kenmerk_key = k.ins_kenmerk_key and k.ins_kenmerk_key = 43) -- Fabricaat fabricaat FROM mld_melding_object mo, ins_deel d WHERE mo.ins_deel_key = d.ins_deel_key AND d.ins_deel_verwijder IS NULL ) object, (SELECT dc.ins_deelsrtcontrole_key, dc.ins_deel_key, dc.ins_srtcontrole_key, dc.ins_deelsrtcontrole_opmerking, dc.ins_deelsrtcontrole_freezecost, v.ins_srtcontrole_omschrijving, v.ins_srtcontroledl_xcp_opmerk, v.ins_srtcontrole_eenheid, v.ins_srtcontrole_periode, v.ins_srtcontroledl_xcp_eenheid, v.ins_srtcontroledl_xcp_periode FROM ins_deelsrtcontrole dc, ins_v_defined_inspect_xcp v WHERE dc.ins_deelsrtcontrole_status in (0,2) -- ingepland of in behandeling OF ALLES TONEN ??? AND dc.ins_srtcontrole_key = v.ins_srtcontrole_key AND dc.ins_deel_key = v.ins_deel_key AND v.ins_scenario_key = 1 ) taak WHERE m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key in (61) -- MJOP AND m.mld_melding_key = object.mld_melding_key AND m.mld_melding_kto_key = taak.ins_deelsrtcontrole_key AND m.mld_melding_status = v.mld_statuses_key ORDER BY COALESCE (m.mld_melding_mldgroup_key, m.mld_melding_key), m.mld_melding_mldgroup_key DESC ; -- RABO-compliance verklaring - Ticket 64875 ---- Aanvulling: Compliance voor meerdere doeleinden te gebruiken - Ticket 66307 CREATE OR REPLACE VIEW RABO_V_RAP_TAKEN_COMPLIANCE ( TOEPASSING, -- Compliance_toepassing - keuzelijst eigen tabel UITGEVOERD, JAAR, -- Jaar laatste uitvoer DATUM, -- Laatste uitvoerdatum OF datum waarop het uitgevoerd had moeten worden JAAR_NEXTCYCLUS, DATUM_NEXTCYCLUS, JAAR_COMPLIANCE, -- SYSDATE - 1 CATEGORIE, TAAKSOORT, SRTCONTROLE__KEY, BASISTAAK_INFO, -- Hierin opgenomen of klant RABO taak in compliance meegenomen wil hebben DEELSOORTCONTROLE_KEY, -- Laatste uitvoer_key STATUS, INS_DEEL_KEY, LOCATIE_PLAATS, KRING, BANK, LOCATIE, LOCATIE_CODE, GEBOUWFUNCTIE, VERVALDATUM_GEBOUW, OMSCHRIJVING, OBJECTIDENTIFICATIE, VERVALDATUM_OBJECT, OBJECT_VERVAL_FILTER, TAAKOMSCHRIJVING, FREQUENCY, PERIODE, AANTAL_X_UITGEVOERD, -- In Compliancejaar (sysdate-jaar minus 1) AANTAL_X_UITGEVOERD_TOT, -- In totaal ACTIE, -- 1, 0.5, 0 of -1 (1 = voltooid 0.5 = afgemeld 0 = ingepland, -1 is nog niet gestart/uitgevoerd in geselecteerde jaar DEMARCATIE, OPMERKING_UITVOER, OPMERKING_OBJECTTAAK ) AS -- Uitgevoerd t/m datum van uitdraai... SELECT ud.fac_usrdata_upper, 'ja' uitgevoerd, TO_CHAR (dc.ins_deelsrtcontrole_datum, 'YYYY') jaar, dc.ins_deelsrtcontrole_datum datum, -- datum laatste uitvoering TO_CHAR(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1),'YYYY') jaar_nextcyclus, fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1) datum_nextcyclus, CASE WHEN ud.fac_usrdata_key = 821 THEN TO_CHAR(sysdate,'YYYY')-1 ELSE TO_CHAR(sysdate,'YYYY')-0 END -- key 821 is compliance voorgaand jaar jaar_compliance, cd.ins_discipline_omschrijving, CASE WHEN cdp.ctr_disc_params_controle_type = 1 THEN lcl.l ('lcl_ins_srtcontrole_insp') WHEN cdp.ctr_disc_params_controle_type = 2 THEN lcl.l ('lcl_ins_srtcontrole_repl') WHEN cdp.ctr_disc_params_controle_type = 3 THEN lcl.l ('lcl_ins_srtcontrole_cert') END taaksoort, t.ins_srtcontrole_key, sc.ins_srtcontrole_info, t.laatste_uitvoer_key, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 5, 'Afgemeld', 6, 'Voltooid') status, d.ins_deel_key, l.alg_locatie_plaats || ' ' || l.alg_locatie_adres, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, sg.alg_srtgebouw_omschrijving gebouwfunctie, TO_CHAR(g.alg_gebouw_vervaldatum,'dd-mm-yyyy'), d.ins_deel_opmerking, d.ins_deel_omschrijving, TO_CHAR(d.ins_deel_vervaldatum, 'dd-mm-yyyy'), CASE WHEN d.ins_deel_vervaldatum IS NULL THEN 'actueel' WHEN d.ins_deel_vervaldatum IS NOT NULL AND d.ins_deel_vervaldatum <= sysdate THEN 'vervallen' WHEN d.ins_deel_vervaldatum IS NOT NULL AND d.ins_deel_vervaldatum > sysdate THEN 'vervallen - toekomst' ELSE '' END object_verval_filter, sc.ins_srtcontrole_omschrijving, DECODE ( COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') frequentie, COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) periode, (SELECT count(*) FROM ins_deelsrtcontrole dc WHERE dc.ins_deel_key = d.ins_deel_key AND dc.ins_srtcontrole_key = t.ins_srtcontrole_key AND TO_CHAR(dc.ins_deelsrtcontrole_datum,'yyyy') = to_char(sysdate,'yyyy') - DECODE(ud.fac_usrdata_key,821,1,0) ) aantal_x_uitgevoerd_c, -- in compliance-jaar uitgevoerd t.aantal_x_uitgevoerd aantal_x_uitgevoerd_tot, CASE WHEN INSTR (LOWER (x.ins_srtcontroledl_xcp_groep), 'nee') > 0 AND ud.fac_usrdata_key = 821 -- compliance voorgaand jaar AND ( LOWER (dc.ins_deelsrtcontrole_status) NOT IN (6) -- uitleg: Als demarcatie is nee (geen taak HEYDAY) en laatste taak is niet of niet succesvol uitgevoerd, dan op verklaring altijd nvt vermelden OR (LOWER (dc.ins_deelsrtcontrole_status) IN (6) -- uitleg: Ook als laatste uitvoerdatum nog voor compliance jaar ligt en voltooid was en de nextcycli_datum is in compliance-jaar (of ervoor) ligt, dan wordt status op nvt gezet AND TO_NUMBER(TO_CHAR(dc.ins_deelsrtcontrole_datum, 'YYYY')) < TO_NUMBER(TO_CHAR(sysdate,'YYYY')-1) AND TO_NUMBER(TO_CHAR(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1),'YYYY')) <= TO_NUMBER(TO_CHAR(sysdate,'YYYY')-1) ) ) THEN 'nvt' WHEN -- uitleg: Als demarcatie is nee (geen taak HEYDAY) en laatste uitvoerdatum nog voor compliance jaar ligt en nextcycli_datum is in compliance-jaar (of ervoor) en is kleiner dan datum uitdraai, dan status nvt (= nog uitvoeren) INSTR (LOWER (x.ins_srtcontroledl_xcp_groep), 'nee') > 0 AND ud.fac_usrdata_key = 822 -- compliance lopend jaar AND TO_NUMBER(TO_CHAR(dc.ins_deelsrtcontrole_datum, 'YYYY')) < TO_NUMBER(TO_CHAR(sysdate,'YYYY')) AND TO_NUMBER(TO_CHAR(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1),'YYYY')) <= TO_NUMBER(TO_CHAR(sysdate,'YYYY')) AND TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1)) <= TRUNC(SYSDATE) THEN 'nvt' WHEN -- uitleg: Als demarcatie is ja (is taak HEYDAY) en laatste uitvoerdatum nog voor compliance jaar ligt en nextcycli_datum is in compliance-jaar (of ervoor) en is kleiner dan datum uitdraai, dan status -1 (= nog uitvoeren) INSTR (LOWER (COALESCE(x.ins_srtcontroledl_xcp_groep,'leeg')), 'nee') = 0 AND TO_NUMBER(TO_CHAR(dc.ins_deelsrtcontrole_datum, 'YYYY')) < TO_NUMBER(TO_CHAR(sysdate,'YYYY')-DECODE(ud.fac_usrdata_key,821,1,0)) -- 821 is compliance voorgaand jaar AND TO_NUMBER(TO_CHAR(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1),'YYYY')) <= TO_NUMBER(TO_CHAR(sysdate,'YYYY')-DECODE(ud.fac_usrdata_key,821,1,0)) AND TRUNC(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1)) <= TRUNC(SYSDATE) THEN '-1' ELSE DECODE (dc.ins_deelsrtcontrole_status, 6, '1', -- Voltooid 5, '0.5', -- Afgemeld 2, '0', -- In behandeling 0, '0', -- Ingepland '-1') END actie, x.ins_srtcontroledl_xcp_groep demarcatie, dc.ins_deelsrtcontrole_opmerking opmerking_uitvoer, -- opmerking bij laatste uitvoering x.ins_srtcontroledl_xcp_opmerk opmerking_basistaak FROM ins_v_deel_gegevens d, ins_srtcontrole sc, ins_srtcontroledl_xcp x, ins_srtdeel ds, ins_srtgroep dg, ctr_discipline cd, ctr_disc_params cdp, ( SELECT dc.ins_deel_key, dc.ins_srtcontrole_key, MAX (ins_deelsrtcontrole_key) laatste_uitvoer_key, COUNT (ins_deelsrtcontrole_key) aantal_x_uitgevoerd FROM ins_deelsrtcontrole dc, ins_deel d WHERE d.ins_deel_key = dc.ins_deel_key AND d.ins_deel_verwijder IS NULL GROUP BY dc.ins_deel_key, dc.ins_srtcontrole_key ) t, ins_deelsrtcontrole dc, alg_gebouw g, alg_locatie l, alg_district di, alg_regio r, alg_srtgebouw sg, fac_usrdata ud WHERE t.ins_deel_key = d.ins_deel_key AND t.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.ctr_discipline_key = cd.ins_discipline_key AND cdp.ctr_disc_params_controle_type = 3 -- Taaksoort Certificering AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key AND t.ins_deel_key = x.ins_deel_key AND t.ins_srtcontrole_key = x.ins_srtcontrole_key AND x.ins_scenario_key = 1 AND t.laatste_uitvoer_key = dc.ins_deelsrtcontrole_key AND sc.ins_srtinstallatie_key = ds.ins_srtdeel_key AND sc.ins_srtcontrole_niveau = 'S' AND ds.ins_srtgroep_key = dg.ins_srtgroep_key AND dg.ins_srtgroep_key NOT IN (161) -- Groep 01 Algemeen uitsluiten AND d.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key AND ud.fac_usrtab_key = 281 AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrdata_vervaldatum IS NULL UNION -- Nog niet uitgevoerd in geselecteerde jaar SELECT ud.fac_usrdata_upper, CASE WHEN TO_NUMBER(TO_CHAR(t.deelsrtcontrole_datum, 'yyyy')) < TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) THEN 'nee - verleden' WHEN TO_NUMBER(TO_CHAR(t.deelsrtcontrole_datum, 'yyyy')) = TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) THEN 'nee - lopend jaar' WHEN TO_NUMBER(TO_CHAR(t.deelsrtcontrole_datum, 'yyyy')) > TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) THEN 'nee - toekomst' ELSE '' END uitgevoerd, t.jaar, t.deelsrtcontrole_datum datum, -- datum waarop het uitgevoerd had moeten worden.. TO_CHAR(fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1),'YYYY') jaar_nextcyclus, fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1) datum_nextcyclus, CASE WHEN ud.fac_usrdata_key = 821 THEN TO_CHAR(sysdate,'YYYY')-1 ELSE TO_CHAR(sysdate,'YYYY')-0 END -- key 821 is compliance voorgaand jaar jaar_compliance, cd.ins_discipline_omschrijving, CASE WHEN cdp.ctr_disc_params_controle_type = 1 THEN lcl.l ('lcl_ins_srtcontrole_insp') WHEN cdp.ctr_disc_params_controle_type = 2 THEN lcl.l ('lcl_ins_srtcontrole_repl') WHEN cdp.ctr_disc_params_controle_type = 3 THEN lcl.l ('lcl_ins_srtcontrole_cert') END taaksoort, t.ins_srtcontrole_key, sc.ins_srtcontrole_info, NULL deelsrtcontrole_key, NULL status, d.ins_deel_key, l.alg_locatie_plaats || ' ' || l.alg_locatie_adres, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, sg.alg_srtgebouw_omschrijving gebouwfunctie, TO_CHAR(g.alg_gebouw_vervaldatum,'dd-mm-yyyy'), d.ins_deel_opmerking, d.ins_deel_omschrijving, TO_CHAR(d.ins_deel_vervaldatum, 'dd-mm-yyyy'), CASE WHEN d.ins_deel_vervaldatum IS NULL THEN 'actueel' WHEN d.ins_deel_vervaldatum IS NOT NULL AND d.ins_deel_vervaldatum <= sysdate THEN 'vervallen' WHEN d.ins_deel_vervaldatum IS NOT NULL AND d.ins_deel_vervaldatum > sysdate THEN 'vervallen - toekomst' ELSE '' END object_verval_filter, sc.ins_srtcontrole_omschrijving, DECODE ( COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') frequentie, COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) periode, 0 aantal_x_uitgevoerd, 0 aantal_x_uitgevoerd_c, CASE WHEN INSTR (LOWER (x.ins_srtcontroledl_xcp_groep), 'nee') > 0 THEN 'nvt' WHEN INSTR (LOWER (COALESCE(x.ins_srtcontroledl_xcp_groep,'leeg')), 'nee') = 0 AND TRUNC(t.deelsrtcontrole_datum) > TRUNC(SYSDATE) -- taak voor toekomst THEN '-0.5' ELSE '-1' END actie, x.ins_srtcontroledl_xcp_groep demarcatie, NULL opmerking_uitvoer, x.ins_srtcontroledl_xcp_opmerk opmerking_basistaak FROM ins_v_deel_gegevens d, ins_srtcontrole sc, ins_srtcontroledl_xcp x, ins_srtdeel ds, ins_srtgroep dg, ctr_discipline cd, ctr_disc_params cdp, ( SELECT v.deel_key, v.srtcontrole_key ins_srtcontrole_key, MAX(TO_CHAR (v.deelsrtcontrole_datum, 'YYYY')) jaar, MAX (v.deelsrtcontrole_datum) deelsrtcontrole_datum FROM aaxx_v_dwh_inspectie_2 v WHERE v.deelsrtcontrole_key IS NULL -- Of wel de basistaak uit deze view AND v.taaksoort = 'Certificering' AND NOT EXISTS (SELECT dc.ins_deelsrtcontrole_key FROM ins_deelsrtcontrole dc WHERE dc.ins_deel_key = v.deel_key AND dc.ins_srtcontrole_key = v.srtcontrole_key) GROUP BY v.deel_key, v.srtcontrole_key ) t, alg_gebouw g, alg_locatie l, alg_district di, alg_regio r, alg_srtgebouw sg, fac_usrdata ud WHERE t.deel_key = d.ins_deel_key AND t.ins_srtcontrole_key = sc.ins_srtcontrole_key AND t.deel_key = x.ins_deel_key AND t.ins_srtcontrole_key = x.ins_srtcontrole_key AND x.ins_scenario_key = 1 AND sc.ctr_discipline_key = cd.ins_discipline_key AND cdp.ctr_disc_params_controle_type = 3 -- Taaksoort Certificering AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key AND sc.ins_srtinstallatie_key = ds.ins_srtdeel_key AND sc.ins_srtcontrole_niveau = 'S' AND ds.ins_srtgroep_key = dg.ins_srtgroep_key AND dg.ins_srtgroep_key NOT IN (161) -- Groep 01 Algemeen uitsluiten AND d.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND di.alg_regio_key = r.alg_regio_key AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key AND ud.fac_usrtab_key = 281 AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrdata_vervaldatum IS NULL ; -- Rapport - voor dashboard - zie ticket 63002 CREATE OR REPLACE VIEW RABO_V_OPDR_GEBOUWVERANTW ( VERANTW1_KEY, NAAM_VERANTWOORDELIJK, VERANTW2_KEY, NAAM_VERANTWOORDELIJK2, PLAATSAANDUIDING, MLD_OPDR_KEY, OPDRACHTNUMMER, TYPE_OPDRACHT, OPDRACHTOMSCHRIJVING, OPDRACHT_BEDRAG, KOSTENPLAATS_OPDR, BUDGETHOUDER_KP, OPDRACHT_AANMAAKDATUM, OPDRACHT_EINDDATUM, OPDRACHT_PLANDATUM, HUIDIGE_STATUS, GOEDGEKEURD_BO_1E, GOEDGEKEURD_1E_DOOR, GOEDGEKEURD_AANTAL, GOEDGEKEURD_BO_MAX, GOEDGEKEURD_MAX_DOOR, GEFIATTERD_1E, FIATTEUR, LEVERANCIERSNAAM, OPDRACHT_VERZONDEN, OPDRACHT_ACCEPT, DATUM_GEREED, GEBOUWCODE -- Voor filtering - Beter: Via kenmerkveld te laten lopen ) AS SELECT sub.prs_perslid_key_verantw, sub.Naam_Verantwoordelijk, sub.prs_perslid_key_verantw2, sub.Naam_Verantwoordelijk2, l.alg_locatie_code || ' - ' || (SELECT g.alg_gebouw_naam || ' (' || og.alg_plaatsaanduiding || '}' FROM alg_v_allonrgoed_gegevens og, alg_gebouw g WHERE og.alg_gebouw_key = g.alg_gebouw_key AND og.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND og.alg_locatie_key = m.mld_alg_locatie_key) AS Locatie_Plaatsaanduiding, o.mld_opdr_key, ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr AS OPDR_NR, top.mld_typeopdr_omschrijving, o.mld_opdr_omschrijving, o.mld_opdr_kosten, kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving kostenplaats_opdr, p.prs_perslid_naam || '(' || p.prs_perslid_voornaam || ')' budgethouder_kp, o.mld_opdr_datumbegin, o.mld_opdr_einddatum, o.mld_opdr_plandatum, (SELECT st.mld_statusopdr_omschrijving FROM mld_statusopdr st WHERE st.mld_statusopdr_key = o.mld_statusopdr_key) AS HuidigeStatus, (SELECT MIN (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND SUBSTR (ft.fac_tracking_oms, 1, 28) = 'Opdracht is goedgekeurd door') AS Goedgekeurd_BO_1e, (SELECT p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam FROM prs_perslid p, fac_tracking ft WHERE p.prs_perslid_key = ft.prs_perslid_key AND ft.fac_tracking_key = (SELECT MIN (ft.fac_tracking_key) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND SUBSTR (ft.fac_tracking_oms, 1, 28) = 'Opdracht is goedgekeurd door')) AS Goedgekeurd_BO_1e_Door, bo.teller_BO, (CASE WHEN bo.teller_bo > 1 THEN ((SELECT p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam FROM prs_perslid p, fac_tracking ft WHERE p.prs_perslid_key = ft.prs_perslid_key AND ft.fac_tracking_key = (SELECT MAX (ft.fac_tracking_key) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND SUBSTR (ft.fac_tracking_oms, 1, 28) = 'Opdracht is goedgekeurd door'))) ELSE '' END) AS Goedkeuring_BO_Door_max, bo.datum_max, (SELECT MIN (ft.fac_tracking_datum) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = 48) AS Gefiatteerd_1e, (SELECT p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam FROM prs_perslid p, fac_tracking ft WHERE p.prs_perslid_key = ft.prs_perslid_key AND ft.fac_tracking_key = (SELECT MIN (ft.fac_tracking_key) FROM fac_tracking ft WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = 48)) AS Fiatteur, (SELECT naam FROM mld_v_uitvoerende u WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys) opdracht_uitvoerende, o.mld_opdr_verzonden AS Opdracht_VerzondenLeverancier, mld.getopdrachtstatusdate (o.mld_opdr_key, 8) AS Opdracht_Accept, mld.getopdrachtstatusdate (o.mld_opdr_key, 6) AS DatumAfgemeld, (SELECT g.alg_gebouw_code FROM alg_v_allonrgoed_gegevens og, alg_gebouw g WHERE og.alg_gebouw_key = g.alg_gebouw_key AND og.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND og.alg_locatie_key = m.mld_alg_locatie_key) AS gebouw_code FROM alg_locatie l, mld_opdr o, prs_kostenplaats kp, prs_perslid p, mld_typeopdr top, mld_melding m, mld_stdmelding stdm, ins_tab_discipline di, ins_srtdiscipline sdi, (SELECT mm.mld_melding_key, og.alg_onroerendgoed_keys, og.alg_locatie_key, g.prs_perslid_key_verantw, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam AS Naam_Verantwoordelijk, g.prs_perslid_key_verantw2, p2.prs_perslid_voornaam || ' ' || p2.prs_perslid_naam AS Naam_Verantwoordelijk2, g.alg_gebouw_naam, g.alg_gebouw_code FROM mld_melding mm, alg_v_allonrgoed_gegevens og, alg_gebouw g, prs_perslid p, prs_perslid p2 WHERE mm.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_gebouw_key = g.alg_gebouw_key AND g.prs_perslid_key_verantw = p.prs_perslid_key AND g.prs_perslid_key_verantw2 = p2.prs_perslid_key (+)) sub, (SELECT * FROM (SELECT v.mld_opdr_key, v.teller_bo, v.datum_max FROM ( SELECT mo.mld_opdr_key, COUNT (*) AS teller_bo, MAX (fac_tracking_datum) AS Datum_max FROM fac_tracking ft, mld_opdr mo WHERE mo.mld_opdr_key = ft.fac_tracking_refkey AND SUBSTR (ft.fac_tracking_oms, 1, 28) = 'Opdracht is goedgekeurd door' GROUP BY mo.mld_opdr_key) v) vv WHERE vv.Teller_BO > 1) bo WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+) AND m.mld_melding_key = sub.mld_melding_key AND o.mld_opdr_key = bo.mld_opdr_key(+) AND m.mld_stdmelding_key = stdm.mld_stdmelding_key AND stdm.mld_ins_discipline_key = di.ins_discipline_key AND di.ins_srtdiscipline_key = sdi.ins_srtdiscipline_key AND o.mld_melding_key = m.mld_melding_key AND o.mld_typeopdr_key = top.mld_typeopdr_key(+) AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key AND kp.prs_perslid_key = p.prs_perslid_key ; -- Graphics CREATE OR REPLACE VIEW rabo_v_label_ruimte_nr ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT alg_ruimte_key, alg_ruimte_nr FROM alg_ruimte; -- thema op kenmerk 1240 ruimtefunctie. De normale ruimtefunctie is al in gebruik. CREATE OR REPLACE VIEW rabo_v_thema_ruimtefunctie ( alg_ruimte_key, waarde ) AS SELECT alg_onrgoed_key alg_ruimte_key, fac_usrdata_omschr FROM alg_onrgoedkenmerk aog, fac_usrdata ud WHERE fac.safe_to_number (aog.alg_onrgoedkenmerk_waarde) = fac_usrdata_key AND alg_kenmerk_key = 1240; ------ 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