-- -- $Id$ -- -- Script containing customer generic configuration sql statements for HEYDAY DEFINE thisfile = 'AAXX.SQL' DEFINE dbuser = 'AAXX' 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 @@aa_prs_pack.sql; --============================================================================= -- EXPORTFUNCTIES GENERIEK ------------------------------------------------------------------------------- CREATE OR REPLACE FUNCTION aaxx_exp_escape (a VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN replace(a, '"', ''''); END aaxx_exp_escape; / CREATE OR REPLACE FUNCTION aaxx_get_user RETURN VARCHAR2 AS v_user VARCHAR2 (20); BEGIN v_user := SUBSTR (USER, 1, 4); -- DWH views komen binnen onder user AAFM. Dan werkt get user niet meer. In dat geval -- halen we nu de informatie uit de fac_version tabel IF v_user = 'AAFM' THEN SELECT UPPER(fac_version_cust) INTO v_user FROM fac_version; END IF; IF v_user = 'AAAH' THEN RETURN 'AH'; END IF; IF v_user = 'AAAR' THEN RETURN 'ARCADIS'; END IF; IF v_user = 'AADS' THEN RETURN 'DSM'; END IF; IF v_user = 'AAES' THEN RETURN 'ESSENT'; END IF; IF v_user = 'AAGN' THEN RETURN 'GN'; END IF; IF v_user = 'AAIT' THEN RETURN 'IT'; END IF; IF v_user = 'AASA' THEN RETURN 'SABIC'; END IF; IF v_user = 'ALLR' THEN RETURN 'ALLIANDER'; END IF; IF v_user = 'CVGZ' THEN RETURN 'VGZ'; END IF; IF v_user = 'GULU' THEN RETURN 'GUL'; END IF; IF v_user = 'NMMS' THEN RETURN 'NMM'; END IF; IF v_user = 'REME' THEN RETURN 'REMEHA'; END IF; IF v_user = 'MENZ' THEN RETURN 'MENZIS'; END IF; RETURN v_user; END aaxx_get_user; / CREATE OR REPLACE FUNCTION aaxx_get_user_sub (p_aaxx_get_user IN VARCHAR2, p_user_exactcode IN VARCHAR2 ) RETURN VARCHAR2 AS v_user_sub VARCHAR2(60); BEGIN IF p_aaxx_get_user = 'INLO' THEN SELECT UPPER(fud.fac_usrdata_omschr) INTO v_user_sub FROM fac_usrtab fut, fac_usrdata fud WHERE fut.fac_usrtab_key = 81 AND fut.fac_usrtab_key = fud.fac_usrtab_key AND fud.fac_usrdata_verwijder IS NULL AND ( fud.fac_usrdata_vervaldatum IS NULL OR (fud.fac_usrdata_vervaldatum IS NOT NULL AND TRUNC(fud.fac_usrdata_vervaldatum) > TRUNC(SYSDATE) ) ) AND fud.fac_usrdata_upper = p_user_exactcode GROUP BY fud.fac_usrdata_omschr ; ELSE v_user_sub := NULL; END IF; RETURN v_user_sub; END aaxx_get_user_sub; / -- functie om geimporteerde bedragen te converteren naar getallen. CREATE OR REPLACE FUNCTION aaxx_get_imp_float (f_float VARCHAR2) RETURN NUMBER AS v_komma_pos NUMBER; v_punt_pos NUMBER; v_float_text VARCHAR2 (100); BEGIN v_punt_pos := INSTR (f_float, '.'); v_komma_pos := INSTR (f_float, ','); IF v_punt_pos <> 0 AND v_komma_pos <> 0 THEN IF v_punt_pos > v_komma_pos THEN v_float_text := REPLACE (f_float, ',', ''); ELSE v_float_text := REPLACE (f_float, '.', ''); END IF; ELSE v_float_text := f_float; END IF; RETURN fac.safe_to_number (REPLACE (v_float_text, ',', '.')); END; / -- view met gegevens over een bestelling en bestelopdracht CREATE OR REPLACE VIEW aaxx_v_bestelgegevens AS SELECT boi.bes_bestelopdr_key, bes_bestelopdr_id, sg.ins_discipline_key, be.mld_adres_key_lev, be.bes_bestelling_leverdatum, bo.prs_bedrijf_key FROM bes_bestelling be, bes_bestelling_item bi, bes_bestelopdr bo, bes_bestelopdr_item boi, bes_srtdeel sd, bes_srtgroep sg WHERE be.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key; -- View om de exact code van een gebouw te bepalen. CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw ( alg_gebouw_key, exact_code) AS SELECT alg_onrgoed_key alg_gebouw_key, alg_onrgoedkenmerk_waarde exact_code FROM alg_onrgoedkenmerk kw, alg_kenmerk k WHERE alg_onrgoed_niveau = 'G' AND kw.alg_kenmerk_key = k.alg_kenmerk_key AND k.alg_kenmerk_verwijder IS NULL AND k.alg_kenmerk_upper = 'CODE EXACT' ; -- View om de exact code van een district te bepalen. CREATE OR REPLACE VIEW aaxx_v_exact_code_district ( alg_district_key, exact_code ) AS SELECT alg_onrgoed_key alg_district_key, alg_onrgoedkenmerk_waarde exact_code FROM alg_onrgoedkenmerk kw, alg_kenmerk k WHERE alg_onrgoed_niveau = 'D' AND kw.alg_kenmerk_key = k.alg_kenmerk_key AND k.alg_kenmerk_verwijder IS NULL AND k.alg_kenmerk_upper = 'CODE EXACT' ; -- View om de klantcode van een gebouw te bepalen. -- Vooralsnog specifieke inrichting voor INLO (ticket 57359) CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw ( alg_gebouw_key, klantcode ) AS SELECT g.alg_gebouw_key, fud.fac_usrdata_upper FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key; -- View om de exact code van een gebouw te bepalen op basis van een factuurkey -- Op dit moment ondersteunen we dit alleen bij opdrachten en contracten CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw_fac ( fin_factuur_key, exact_code ) AS SELECT fin_factuur_key, exact_code FROM fin_factuur f, mld_opdr o, mld_melding m, alg_v_onroerendgoed og, aaxx_v_exact_code_gebouw eg WHERE f.mld_opdr_key = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_gebouw_key = eg.alg_gebouw_key UNION ALL SELECT fin_factuur_key, exact_code FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_exact_code_gebouw eg WHERE f.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_key = eg.alg_gebouw_key AND cp.cnt_alg_plaats_code = 'G' UNION ALL SELECT DISTINCT fin_factuur_key, exact_code FROM fin_factuur f, aaxx_v_bestelgegevens bg, mld_adres ma, aaxx_v_exact_code_gebouw eg, alg_gebouw g WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key AND bg.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+) AND g.alg_gebouw_key = eg.alg_gebouw_key(+); -- View om de exact code van een district te bepalen op basis van een factuurkey -- Op dit moment alleen nog voor DSM CREATE OR REPLACE VIEW aaxx_v_exact_code_district_fac ( fin_factuur_key, exact_code ) AS SELECT fin_factuur_key, exact_code FROM fin_factuur f, mld_opdr o, mld_melding m, alg_v_allonrgoed_gegevens og, alg_locatie l, aaxx_v_exact_code_district aed WHERE f.mld_opdr_key = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = aed.alg_district_key UNION ALL SELECT fin_factuur_key, exact_code FROM fin_factuur f, cnt_contract_plaats cp, alg_gebouw g, alg_locatie l, aaxx_v_exact_code_district aed WHERE f.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = aed.alg_district_key AND cp.cnt_alg_plaats_code = 'G' GROUP BY fin_factuur_key, exact_code UNION ALL SELECT fin_factuur_key, exact_code FROM fin_factuur f, cnt_contract_plaats cp, alg_locatie l, aaxx_v_exact_code_district aed WHERE f.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_key = l.alg_locatie_key AND l.alg_district_key = aed.alg_district_key AND cp.cnt_alg_plaats_code = 'L' GROUP BY fin_factuur_key, exact_code UNION ALL SELECT DISTINCT fin_factuur_key, exact_code FROM fin_factuur f, aaxx_v_bestelgegevens bg, mld_adres ma, aaxx_v_exact_code_district aed, (SELECT g.alg_gebouw_key, g.alg_gebouw_code, l.alg_district_key FROM alg_gebouw g, alg_locatie l WHERE g.alg_locatie_key = l.alg_locatie_key) vg WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key AND bg.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.mld_adres_gebouw_ruimte = vg.alg_gebouw_code(+) AND vg.alg_district_key = aed.alg_district_key(+); -- View om de klantcode van een gebouw te bepalen op basis van een factuurkey -- Vooralsnog specifieke inrichting voor INLO (ticket 57359) CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw_fac ( fin_factuur_key, klantcode ) AS SELECT fin_factuur_key, klantcode FROM fin_factuur f, mld_opdr o, mld_melding m, alg_v_onroerendgoed og, aaxx_v_klantcode_gebouw kg WHERE f.mld_opdr_key = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_gebouw_key = kg.alg_gebouw_key UNION ALL SELECT fin_factuur_key, klantcode FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_klantcode_gebouw kg WHERE f.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_key = kg.alg_gebouw_key AND cp.cnt_alg_plaats_code = 'G' GROUP BY fin_factuur_key, klantcode UNION ALL SELECT fin_factuur_key, klantcode FROM fin_factuur f, aaxx_v_bestelgegevens bg, mld_adres ma, aaxx_v_klantcode_gebouw kg, alg_gebouw g WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key AND bg.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+) AND g.alg_gebouw_key = kg.alg_gebouw_key(+) GROUP BY fin_factuur_key, klantcode; -- Hulpview voor financiele interface tbv opdrachttype 'Projectorder' en 'Projectorder (externe uren)' CREATE OR REPLACE VIEW AAXX_V_PROJECTORDERS_BRON ( VAKGROEPTYPE, VAKGROEP, MLD_MELDING_KEY, HTML_MELDING, MELDING_STATUS, MLD_OPDR_KEY, MLD_OPDR_NR, HTML_OPDRACHT, OPDRACHT_STATUS, MLD_OPDR_DATUMBEGIN, MLD_TYPEOPDR_OMSCHRIJVING, MLD_PROJECT_VOORWAARDEN, -- relatietype voor PR (MA of CP) MLD_MELDING_OPMERKING, MLD_PROJECT_OMSCHRIJVING, MLD_PROJECT_OPDRACHTOMSCHR, MLD_PROJECT_NR, MLD_PO_NR, MLD_PO_NR_AFW, MLD_PROJECTMARGE, MLD_PROJECTMARGE_VAST, OPDR_PROJECT_INKOOPTARIEF, OPDR_PROJECT_VERKOOPTARIEF, PO_NR, FEE_PROC, FEE_VAST, FEE_EXTERNE_UREN, INLO_SUBACCOUNT, KOSTENPLAATS, KOSTENPLAATSGROEP, VERKOOPFACTUREN_AANWEZIG, AANTAL_REGELS_BEDRAG, AANTAL_REGELS_OPDRACHT, AANTAL_REGELS_FEE, AANTAL_REGELS_FEE_VAST, AANTAL_REGELS_OPDRACHT_VERWERKT, AANTAL_REGELS_FEE_VERWERKT, AANTAL_RUNS_VERWERKT ) AS SELECT v.ins_srtdiscipline_omschrijving, v.ins_discipline_omschrijving, v.mld_melding_key, '' || 'klik naar ' || v.mld_project_nr || '' html_melding, v.melding_status, v.mld_opdr_key, v.mld_opdr_nr, '' || 'klik naar ' || v.mld_opdr_nr || '' html_opdracht, v.opdracht_status, v.mld_opdr_datumbegin, v.mld_typeopdr_omschrijving, v.mld_project_voorwaarden, v.mld_melding_opmerking, v.mld_project_omschrijving, v.mld_project_opdrachtomschr, v.mld_project_nr, v.mld_po_nr, v.mld_po_nr_afw, v.mld_projectmarge, v.mld_projectmarge_vast, v.opdr_project_inkooptarief, v.opdr_project_verkooptarief, COALESCE (v.mld_po_nr_afw, v.mld_po_nr, 'onbekend') po_nr, CASE WHEN v.mld_typeopdr_omschrijving = 'Projectorder' AND fac.safe_to_number(v.mld_projectmarge) IS NOT NULL AND v.mld_projectmarge <> 0 THEN TO_CHAR ((100 + v.mld_projectmarge) / 100) WHEN v.mld_typeopdr_omschrijving = 'Projectorder' AND fac.safe_to_number(v.mld_projectmarge) IS NOT NULL AND v.mld_projectmarge = 0 THEN TO_CHAR(0) ELSE 'onbekend' END fee_proc, CASE WHEN v.mld_typeopdr_omschrijving = 'Projectorder' AND fac.safe_to_number(v.mld_projectmarge_vast) IS NOT NULL THEN TO_CHAR(v.mld_projectmarge_vast) ELSE 'onbekend' END fee_vast, CASE WHEN v.mld_typeopdr_omschrijving = 'Projectorder (externe uren)' AND v.opdr_project_inkooptarief IS NOT NULL AND v.opdr_project_verkooptarief IS NOT NULL THEN TO_CHAR (ROUND (v.opdr_project_verkooptarief / v.opdr_project_inkooptarief, 3)) ELSE 'onbekend' END fee_externe_uren, (SELECT aaxx_get_user_sub ('INLO', exact_k.klantcode) FROM alg_v_onroerendgoed onr, aaxx_v_klantcode_gebouw exact_k WHERE onr.alg_gebouw_key = exact_k.alg_gebouw_key AND onr.alg_onroerendgoed_keys = v.mld_alg_onroerendgoed_keys) inlo_subaccount, v.kostenplaats, v.kostenplaatsgroep, -- verkoopfacturen CASE WHEN w.mld_opdr_key IS NULL THEN 'nee' ELSE 'ja' END verkoopfacturen_aanwezig, w.aantal_regels_bedrag, w.aantal_regels_opdracht, w.aantal_regels_fee, w.aantal_regels_fee_vast, w.aantal_regels_opdracht_verwerkt, w.aantal_regels_fee_verwerkt, w.aantal_runs_verwerkt FROM (SELECT m.mld_melding_key, d.ins_discipline_omschrijving, sd.ins_srtdiscipline_omschrijving, m.mld_alg_onroerendgoed_keys, (SELECT mld_statuses_omschrijving FROM mld_statuses WHERE mld_statuses_key = m.mld_melding_status) melding_status, o.mld_opdr_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr mld_opdr_nr, (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr WHERE mld_statusopdr_key = o.mld_statusopdr_key) opdracht_status, o.mld_opdr_datumbegin, ot.mld_typeopdr_omschrijving, m.mld_melding_opmerking, TO_CHAR ( (SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '') FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = o.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Projectnaam')) mld_project_omschrijving, TO_CHAR( (SELECT DISTINCT COALESCE(mld_kenmerkopdr_waarde, '') FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_opdr_key = o.mld_opdr_key AND k.mld_kenmerk_key = ko.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Project-opdrachtomschrijving')) mld_project_opdrachtomschr, TO_CHAR ( (SELECT DISTINCT COALESCE (ud.fac_usrdata_omschr, '') FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk, fac_usrtab ut, fac_usrdata ud WHERE km.mld_melding_key = o.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Project voorwaarden' AND ud.fac_usrdata_key = fac.safe_to_number ( km.mld_kenmerkmelding_waarde) AND ud.fac_usrtab_key = ut.fac_usrtab_key AND UPPER (ut.fac_usrtab_naam) = 'PR-VOORWAARDEN')) mld_project_voorwaarden, sd.ins_srtdiscipline_prefix || m.mld_melding_key mld_project_nr, TO_CHAR ( (SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '') FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = o.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Ordernummer klant')) mld_po_nr, TO_CHAR ( (SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '') FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_opdr_key = o.mld_opdr_key AND k.mld_kenmerk_key = ko.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Ordernummer klant')) mld_po_nr_afw, -- op opdrachtniveau als overrule fac.safe_to_number ( (SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '') FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = o.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Projectmarge')) mld_projectmarge, fac.safe_to_number ( (SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '') FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = o.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerkmelding_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Projectmarge vast')) mld_projectmarge_vast, fac.safe_to_number ( (SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '') FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_opdr_key = o.mld_opdr_key AND k.mld_kenmerk_key = ko.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = '(Uur)tarief')) opdr_project_inkooptarief, fac.safe_to_number ( (SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '') FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_opdr_key = o.mld_opdr_key AND k.mld_kenmerk_key = ko.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_omschrijving = 'Extern (uur)tarief')) opdr_project_verkooptarief, kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving kostenplaats, CASE WHEN kpg.prs_kostenplaatsgrp_key IS NULL THEN '' ELSE kpg.prs_kostenplaatsgrp_nr || ' ' || kpg.prs_kostenplaatsgrp_oms END kostenplaatsgroep FROM mld_melding m, mld_opdr o, prs_kostenplaats kp, prs_kostenplaatsgrp kpg, mld_typeopdr ot, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd WHERE m.mld_melding_key = o.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND LOWER (SUBSTR (ot.mld_typeopdr_omschrijving, 1, 12)) = 'projectorder' 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 AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key (+) ) v, ( SELECT b.mld_melding_key, b.mld_opdr_key, count(*) aantal_regels_bedrag, (SELECT count(*) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee')= 0 AND fin_verkoopfactuur_bedrag <> 0) aantal_regels_opdracht, (SELECT count(*) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee')> 0 AND fin_verkoopfactuur_bedrag <> 0) aantal_regels_fee, (SELECT count(*) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee vast')> 0 AND fin_verkoopfactuur_bedrag <> 0) aantal_regels_fee_vast, (SELECT count(*) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL) aantal_regels_opdracht_verwerkt, (SELECT count(*) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee')> 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL) aantal_regels_fee_verwerkt, (SELECT count(*) FROM (SELECT fin_verkoopfactuurkop_key FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(fin_verkoopfactuur_omschr, 'Projectfee')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL GROUP BY fin_verkoopfactuurkop_key)) aantal_runs_verwerkt FROM (SELECT o.mld_opdr_key, o.mld_melding_key, vf.fin_verkoopfactuur_id, vf.fin_verkoopfactuur_c6, -- ordernummer_klant vf.fin_verkoopfactuur_n2, -- marge vast vf.fin_verkoopfactuur_n3, -- marge procedure vf.fin_verkoopfactuur_bedrag, vf.fin_verkoopfactuur_datum, CASE WHEN INSTR(vf.fin_verkoopfactuur_omschr, 'Projectfee')> 0 THEN 'FEE' ELSE 'OPDRACHT' END soort_regel, vf.fin_verkoopfactuurkop_key FROM fin_verkoopfactuur vf, mld_opdr o WHERE vf.fin_verkoopfactuur_refkey = o.mld_opdr_key AND vf.fin_verkoopfactuur_xmlnode = 'opdracht' AND vf.fin_verkoopfactuur_c8 = 'PROJECT' AND vf.fin_verkoopfactuur_bedrag <> 0 ORDER BY o.mld_melding_key, o.mld_opdr_key) b GROUP BY b.mld_melding_key, b.mld_opdr_key ) w -- verkoopfacturen op deze mld_opdr WHERE v.mld_opdr_key = w.mld_opdr_key (+) ; -- In eigen tabel BTW_VK_INTERFACE is voor HEYDAY de mapping inkoop-btw naar verkoop-btw opgenomen --- de daarin opgenomen codes zijn de exact-codes --- met deze functie haal je der exact-verkoop-btw-code op die hoort bij de exact-inkoop-btw-code. --- ps. wordt gebruikt voor verkoopinterface om op de aan te maken verkoopfactuur de juiste btw-code te krijgen CREATE OR REPLACE FUNCTION aaxx_get_verkoop_btw_code ( p_btwtabelwaarde_key IN NUMBER, p_retour IN NUMBER DEFAULT NULL ) RETURN VARCHAR2 AS v_fac_usrtab_key NUMBER; v_btw_inkoopcode VARCHAR(10) ; v_btw_verkoopcode VARCHAR2(10); v_btw_verkoopperc VARCHAR2(10); v_retour VARCHAR2(10) := 'onbekend' ; BEGIN -- BTW - conversie-tabel-key ophalen SELECT MAX(fac_usrtab_key) INTO v_fac_usrtab_key FROM fac_usrtab WHERE UPPER(fac_usrtab_naam) = 'BTW_VK_INTERFACE' AND fac_usrtab_verwijder IS NULL ; -- BTW - inkoopcode ophalen SELECT MAX(fin_btwtabelwaarde_code) INTO v_btw_inkoopcode FROM fin_btwtabelwaarde WHERE fin_btwtabelwaarde_key = p_btwtabelwaarde_key; IF v_fac_usrtab_key IS NOT NULL AND v_btw_inkoopcode IS NOT NULL THEN -- Op basis inkoopcode gaan we de verkoopcode uit de eigen tabel halen BEGIN SELECT fac_usrdata_omschr, fac_usrdata_volgnr INTO v_btw_verkoopcode, v_btw_verkoopperc FROM fac_usrdata WHERE fac_usrtab_key = v_fac_usrtab_key AND fac_usrdata_code = v_btw_inkoopcode AND fac_usrdata_verwijder IS NULL ; EXCEPTION WHEN NO_DATA_FOUND THEN v_btw_verkoopcode := 'onbekend'; v_btw_verkoopperc := 'onbekend' ; END; IF p_retour IS NULL OR p_retour = 1 THEN v_retour := v_btw_verkoopcode ; END IF; IF p_retour = 2 THEN v_retour := v_btw_verkoopperc || '%' ; END IF; END IF; RETURN v_retour; END aaxx_get_verkoop_btw_code; / -- In eigen tabel BTW_VK_INTERFACE is voor HEYDAY de mapping inkoop-btw naar verkoop-btw opgenomen ---- de daarin opgenomen codes zijn de exact-codes ---- met deze functie halen we het percentage op behorende bij de verkoop-btw-code CREATE OR REPLACE FUNCTION aaxx_get_verkoop_btw_perc ( p_btw_verkoopcode IN VARCHAR2 ) RETURN NUMBER AS v_fac_usrtab_key NUMBER; v_btw_verkoopperc VARCHAR2(10); v_retour NUMBER ; BEGIN -- BTW - conversie-tabel-key ophalen SELECT MAX(fac_usrtab_key) INTO v_fac_usrtab_key FROM fac_usrtab WHERE UPPER(fac_usrtab_naam) = 'BTW_VK_INTERFACE' AND fac_usrtab_verwijder IS NULL ; IF v_fac_usrtab_key IS NOT NULL THEN -- Op basis verkoopcode gaan we het percentage ophalen SELECT MAX(fac_usrdata_volgnr) INTO v_btw_verkoopperc FROM fac_usrdata WHERE fac_usrtab_key = v_fac_usrtab_key AND fac_usrdata_omschr = p_btw_verkoopcode AND fac_usrdata_verwijder IS NULL ; v_retour := v_btw_verkoopperc ; END IF; RETURN v_retour; END aaxx_get_verkoop_btw_perc; / -- script om uurlijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving -- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden. CREATE OR REPLACE PROCEDURE aaxx_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- vul bij de opdrachten het kenmerk relatietype in voor opdrachten -- die vandaag aangemaakt zijn. Dit doen we door naar de eerste datum in -- de tracking te kijken. -- het kenmerk mag niet al aanwezig zijn. INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde) SELECT k.mld_kenmerk_key, o.mld_opdr_key, b.prs_relatietype_key FROM mld_opdr o, mld_kenmerk k, mld_srtkenmerk sk, prs_bedrijf b WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_omschrijving = 'Relatietype' AND o.mld_typeopdr_key = k.mld_typeopdr_key AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND (SELECT TRUNC (MIN (fac_tracking_datum)) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND fac_tracking_refkey = o.mld_opdr_key) = TRUNC (SYSDATE) AND NOT EXISTS (SELECT mld_kenmerkopdr_key FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key); -- dit zelfde gaan we nu ook bij contracten doen waar het kenmerk nog niet aanwezig is. INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module, fac_kenmerkdomein_omschrijving, fac_kenmerkdomein_objectnaam, fac_kenmerkdomein_kolomnaam, fac_kenmerkdomein_kolomtxt, fac_kenmerkdomein_verval) SELECT 'CNT', 'PRS_RELATIETYPE', 'PRS_RELATIETYPE', 'PRS_RELATIETYPE_KEY', 'PRS_RELATIETYPE_OMSCHRIJVING', 'PRS_RELATIETYPE_VERWIJDER' FROM DUAL WHERE NOT EXISTS (SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_module = 'CNT' AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'); INSERT INTO cnt_srtkenmerk (cnt_srtkenmerk_omschrijving, cnt_srtkenmerk_kenmerktype, fac_kenmerkdomein_key) SELECT 'Relatietype', 'R', fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_module = 'CNT' AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE' AND NOT EXISTS (SELECT cnt_srtkenmerk_key FROM cnt_srtkenmerk WHERE cnt_srtkenmerk_omschrijving = 'Relatietype'); INSERT INTO cnt_kenmerk (cnt_srtkenmerk_key, cnt_srtcontract_key, cnt_kenmerk_niveau, cnt_kenmerk_toonbaar, cnt_kenmerk_volgnummer) SELECT cnt_srtkenmerk_key, ins_discipline_key, 'S', 1, 100 FROM cnt_srtkenmerk sk, cnt_discipline d WHERE cnt_srtkenmerk_omschrijving = 'Relatietype' AND NOT EXISTS (SELECT cnt_kenmerk_key FROM cnt_kenmerk k WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND k.cnt_srtcontract_key = d.ins_discipline_key); INSERT INTO cnt_kenmerkcontract (cnt_kenmerk_key, cnt_contract_key, cnt_kenmerkcontract_waarde) SELECT k.cnt_kenmerk_key, c.cnt_contract_key, b.prs_relatietype_key FROM cnt_contract c, cnt_kenmerk k, cnt_srtkenmerk sk, prs_bedrijf b WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_omschrijving = 'Relatietype' AND c.ins_discipline_key = k.cnt_srtcontract_key AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_relatietype_key IS NOT NULL AND NOT EXISTS (SELECT cnt_kenmerkcontract_key FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = c.cnt_contract_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key); -- dit zelfde gaan we nu ook bij bestellingen doen waar het kenmerk nog niet aanwezig is. INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module, fac_kenmerkdomein_omschrijving, fac_kenmerkdomein_objectnaam, fac_kenmerkdomein_kolomnaam, fac_kenmerkdomein_kolomtxt, fac_kenmerkdomein_verval) SELECT 'BES', 'PRS_RELATIETYPE', 'PRS_RELATIETYPE', 'PRS_RELATIETYPE_KEY', 'PRS_RELATIETYPE_OMSCHRIJVING', 'PRS_RELATIETYPE_VERWIJDER' FROM DUAL WHERE NOT EXISTS (SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_module = 'BES' AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'); INSERT INTO bes_srtkenmerk (bes_srtkenmerk_omschrijving, bes_srtkenmerk_kenmerktype, fac_kenmerkdomein_key) SELECT 'Relatietype', 'R', fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_module = 'BES' AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE' AND NOT EXISTS (SELECT bes_srtkenmerk_key FROM bes_srtkenmerk WHERE bes_srtkenmerk_omschrijving = 'Relatietype'); INSERT INTO bes_kenmerk (bes_srtkenmerk_key, bes_srtinstallatie_key, bes_kenmerk_type, bes_kenmerk_niveau, bes_kenmerk_toonbaar, bes_kenmerk_volgnummer) SELECT bes_srtkenmerk_key, ins_discipline_key, 'B', 'D', 1, 100 FROM bes_srtkenmerk sk, bes_discipline d WHERE bes_srtkenmerk_omschrijving = 'Relatietype' AND NOT EXISTS (SELECT bes_kenmerk_key FROM bes_kenmerk k WHERE k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND k.bes_srtinstallatie_key = d.ins_discipline_key); INSERT INTO bes_kenmerkbestell (bes_kenmerk_key, bes_bestelling_key, bes_kenmerkbestell_waarde) SELECT k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key FROM bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_kenmerk k, bes_srtkenmerk sk, prs_bedrijf bd, bes_srtdeel sd, bes_srtgroep sg WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bo.prs_bedrijf_key = bd.prs_bedrijf_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND sk.bes_srtkenmerk_omschrijving = 'Relatietype' AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = k.bes_srtinstallatie_key AND bd.prs_relatietype_key IS NOT NULL AND NOT EXISTS (SELECT bes_kenmerkbestell_key FROM bes_kenmerkbestell kb WHERE kb.bes_bestelling_key = bi.bes_bestelling_key AND kb.bes_kenmerk_key = k.bes_kenmerk_key) GROUP BY k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key; END; / -- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is. CREATE OR REPLACE PROCEDURE aaxx_select_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN aaxx_hourly_task (p_applname, p_applrun); END; / -- script om dagelijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving -- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden. CREATE OR REPLACE PROCEDURE aaxx_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- job om flexkenmerken bij projectorders in te vullen IF aaxx_get_user <> 'GUL' THEN aaxx_select_dwh_set_kenmerken (p_applname, p_applrun); END IF; -- job om gebruikers die recentelijk niet ingelogd zijn de rechten te ontnemen. IF aaxx_get_user = 'ARCADIS' -- AAAR#26433 / weer aangezet AAAR#60481 OR aaxx_get_user = 'DSM' OR aaxx_get_user = 'SABIC' OR aaxx_get_user = 'GUL' OR aaxx_get_user = 'ESSENT' -- AAES#65629 THEN aaxx_delete_non_active_users (p_applname, p_applrun); END IF; -- verwijder key users met ORDBO2 rechten IF -- aaxx_get_user = 'ARCADIS' AAAR#26433 -- OR aaxx_get_user = 'AH' OR aaxx_get_user = 'DSM' OR aaxx_get_user = 'SABIC' OR aaxx_get_user = 'GUL' OR aaxx_get_user = 'NMM' OR aaxx_get_user = 'RABO' THEN aaxx_delete_non_active_key (p_applname, p_applrun); END IF; -- exportfunctie om per klantomgeving de inkoopinterface autuomatisch om 18:00 te runnen IF aaxx_get_user = 'ARCADIS' OR aaxx_get_user = 'DSM' OR aaxx_get_user = 'SMKA' OR aaxx_get_user = 'ESSENT' OR aaxx_get_user = 'EXPO' OR aaxx_get_user = 'RABO' OR aaxx_get_user = 'GN' OR aaxx_get_user = 'SABIC' OR aaxx_get_user = 'REMEHA' OR aaxx_get_user = 'NMM' OR aaxx_get_user = 'IT' OR aaxx_get_user = 'INLO' OR aaxx_get_user = 'MENZIS' OR aaxx_get_user = 'THHD' THEN aaxx_export_exact_auto (p_applname, p_applrun); END IF; -- Haal de mensen die we zojuist de login hebben ontnomen ook uit de autorisatiegroepen. DELETE fac_gebruikersgroep gg WHERE EXISTS (SELECT p.prs_perslid_key FROM prs_perslid p WHERE prs_perslid_oslogin IS NULL AND prs_perslid_oslogin2 IS NULL AND p.prs_perslid_key = gg.prs_perslid_key); -- job om bij to houden welke gebruikers vandaag ingelogd zijn geweest. aaxx_export_login (p_applname, p_applrun); -- job om complimenten af te melden. aaxx_afmelden_complimenten (p_applname, p_applrun); -- job om ordercorrecties door te voeren. aaxx_ordercorrecties (p_applname, p_applrun); END; / -- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is. CREATE OR REPLACE PROCEDURE aaxx_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN aaxx_daily_task (p_applname, p_applrun); END; / CREATE OR REPLACE PROCEDURE aaxx_imp_writelog ( p_import_key IN NUMBER, p_severity IN VARCHAR2, p_errormsg IN VARCHAR2, p_errorhint IN VARCHAR2) AS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN fac.imp_writelog (p_import_key, p_severity, SUBSTR(p_errormsg,1,1000), SUBSTR(p_errorhint,1,1000)); COMMIT; END; / CREATE OR REPLACE PROCEDURE aaxx_add_xml_row_p ( p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_regel IN VARCHAR2) AS v_index NUMBER; BEGIN SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1 INTO v_index FROM fac_rapport WHERE fac_rapport_node = p_bestand; INSERT INTO fac_rapport ( fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (p_bestand, v_index, p_prefix || p_regel); END; / CREATE OR REPLACE PROCEDURE aaxx_add_xml_element_p ( p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2) AS BEGIN aaxx_add_xml_row_p(p_bestand, p_prefix, '<' || p_tag || '>' || xml.char_to_html(p_value) || ''); END; / CREATE OR REPLACE PROCEDURE aaxx_add_xml_row ( p_bestand IN VARCHAR2, p_regel IN VARCHAR2) AS BEGIN aaxx_add_xml_row_p (p_bestand, NULL, p_regel); END; / CREATE OR REPLACE PROCEDURE aaxx_add_xml_element ( p_bestand IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2) AS BEGIN aaxx_add_xml_element_p (p_bestand, NULL, p_tag, p_value); END; / CREATE OR REPLACE FUNCTION aaxx_get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2 AS v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE; v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE; v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE; v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE; BEGIN CASE p_module WHEN 'MLD' THEN SELECT mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = p_link_key AND km.mld_kenmerk_key = p_kenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key; WHEN 'CNT' THEN SELECT cnt_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kc.cnt_kenmerkcontract_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k, cnt_srtkenmerk sk WHERE kc.cnt_contract_key = p_link_key AND kc.cnt_kenmerk_key = p_kenmerk_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key; WHEN 'ALG' THEN SELECT alg_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, aogk.alg_onrgoedkenmerk_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM alg_onrgoedkenmerk aogk, alg_kenmerk k WHERE aogk.alg_onrgoed_key = p_link_key AND aogk.alg_kenmerk_key = p_kenmerk_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key; WHEN 'FIN' THEN SELECT k.fin_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, kf.fin_kenmerkfactuur_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM fin_kenmerkfactuur kf, fin_kenmerk k WHERE kf.fin_factuur_key = p_link_key AND kf.fin_kenmerk_key = p_kenmerk_key AND kf.fin_kenmerk_key = k.fin_kenmerk_key; WHEN 'INS' THEN SELECT k.ins_kenmerk_niveau INTO v_kenmerk_niveau FROM ins_kenmerk k WHERE ins_kenmerk_key = p_kenmerk_key; IF v_kenmerk_niveau = 'C' THEN SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikds.ins_kmdeelsrtcontr_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kmdeelsrtcontr ikds, ins_kenmerk k, ins_srtkenmerk sk WHERE ikds.ins_deelsrtcontrole_key = p_link_key AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL AND ikds.ins_kenmerk_key = p_kenmerk_key AND ikds.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; ELSE SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikd.ins_kenmerkdeel_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk WHERE ikd.ins_deel_key = p_link_key AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ikd.ins_kenmerk_key = p_kenmerk_key AND ikd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; END IF; END CASE; RETURN aaxx_get_kenmerkwaarde (v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde); END; / CREATE OR REPLACE FUNCTION aaxx_get_kenmerkwaarde ( p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2(4000); BEGIN IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN v_result := fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde); ELSIF p_kenmerk_type = 'D' THEN v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd'); ELSE v_result := p_kenmerk_waarde; END IF; return v_result; END aaxx_get_kenmerkwaarde; / CREATE OR REPLACE PROCEDURE aaxx_set_kenmerk(p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER, p_kenmerk_waarde IN VARCHAR2, p_history IN NUMBER) AS v_count NUMBER; v_niveau VARCHAR2 (1); BEGIN CASE p_module WHEN 'PRS' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT prs_kenmerk_niveau INTO v_niveau FROM prs_kenmerk WHERE prs_kenmerk_key = p_kenmerk_key; SELECT COUNT ( * ) INTO v_count FROM prs_kenmerklink WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE prs_kenmerklink WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; ELSE UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = p_kenmerk_waarde WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO prs_kenmerklink (prs_kenmerk_key, prs_link_key, prs_kenmerklink_niveau, prs_kenmerklink_waarde) VALUES (p_kenmerk_key, p_link_key, v_niveau, p_kenmerk_waarde); END IF; END IF; WHEN 'ALG' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT alg_kenmerk_niveau INTO v_niveau FROM alg_kenmerk WHERE alg_kenmerk_key = p_kenmerk_key; SELECT COUNT ( * ) INTO v_count FROM alg_onrgoedkenmerk WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE alg_onrgoedkenmerk WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; ELSE UPDATE alg_onrgoedkenmerk SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key, alg_onrgoed_key, alg_onrgoed_niveau, alg_onrgoedkenmerk_waarde) VALUES (p_kenmerk_key, p_link_key, v_niveau, p_kenmerk_waarde); END IF; END IF; WHEN 'MLD' THEN -- melding- of opdrachtkenmerk? SELECT mld_kenmerk_niveau INTO v_niveau FROM mld_kenmerk WHERE mld_kenmerk_key = p_kenmerk_key; CASE v_niveau WHEN 'O' THEN SELECT COUNT ( * ) INTO v_count FROM mld_kenmerkopdr WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE mld_kenmerkopdr WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; ELSE UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = p_kenmerk_waarde WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; WHEN 'S' THEN SELECT COUNT ( * ) INTO v_count FROM mld_kenmerkmelding WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE mld_kenmerkmelding WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; ELSE UPDATE mld_kenmerkmelding SET mld_kenmerkmelding_waarde = p_kenmerk_waarde WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO mld_kenmerkmelding (mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; END CASE; WHEN 'RES' THEN -- melding- of opdrachtkenmerk? SELECT res_kenmerk_niveau INTO v_niveau FROM res_kenmerk WHERE res_kenmerk_key = p_kenmerk_key; CASE v_niveau WHEN 'A' THEN SELECT COUNT ( * ) INTO v_count FROM res_kenmerkwaarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE res_kenmerkwaarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; ELSE UPDATE res_kenmerkwaarde SET res_kenmerkreservering_waarde = p_kenmerk_waarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO res_kenmerkwaarde (res_kenmerk_key, res_rsv_ruimte_key, res_kenmerkreservering_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; -- Voorlopig alleen op ruimte niveau. END CASE; WHEN 'FIN' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT fin_kenmerk_type INTO v_niveau FROM fin_kenmerk WHERE fin_kenmerk_key = p_kenmerk_key; IF v_niveau = 'F' THEN SELECT COUNT ( * ) INTO v_count FROM fin_kenmerkfactuur WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE fin_kenmerkfactuur WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; ELSE UPDATE fin_kenmerkfactuur SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key, fin_factuur_key, fin_kenmerkfactuur_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; ELSE -- Kenmerk bij factuurregel SELECT COUNT ( * ) INTO v_count FROM fin_kenmerkfactregel WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE fin_kenmerkfactregel WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; ELSE UPDATE fin_kenmerkfactregel SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key, fin_factuurregel_key, fin_kenmerkfactregel_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; END IF; END CASE; END; / CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_kenmerkwaarde (p_melding_key IN NUMBER, p_srtkenmerk_code IN VARCHAR2) RETURN VARCHAR2 AS v_kenmerkwaarde MLD_KENMERKMELDING.MLD_KENMERKMELDING_WAARDE%TYPE; BEGIN SELECT mld_kenmerkmelding_waarde INTO v_kenmerkwaarde FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = p_srtkenmerk_code AND km.mld_melding_key = p_melding_key; RETURN v_kenmerkwaarde; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END; / CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_instelling (p_instelling IN VARCHAR2) RETURN NUMBER AS v_usrdata_prijs NUMBER; BEGIN SELECT ud.fac_usrdata_prijs INTO v_usrdata_prijs FROM fac_usrdata ud, fac_usrtab ut WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_naam = '$PlatoNEN2727' AND ud.fac_usrdata_code = p_instelling AND ud.fac_usrdata_verwijder IS NULL; RETURN v_usrdata_prijs; END; / CREATE OR REPLACE FUNCTION aaxx_get_cnt_cont_plaats_index (p_contract_plaats_key number ) RETURN NUMBER AS CURSOR c (c_cnt_contract_key number) IS SELECT cnt_contract_plaats_key FROM cnt_contract_plaats WHERE cnt_contract_key = c_cnt_contract_key ORDER BY cnt_contract_plaats_key; v_contract_key NUMBER (10); v_index NUMBER (10); BEGIN v_index := 1; SELECT cnt_contract_key INTO v_contract_key FROM cnt_contract_plaats WHERE cnt_contract_plaats_key = p_contract_plaats_key; FOR rec IN c(v_contract_key) LOOP IF rec.cnt_contract_plaats_key = p_contract_plaats_key THEN RETURN (v_index); END IF; v_index := v_index + 1; END LOOP; END; / CREATE OR REPLACE FUNCTION aaxx_get_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2(100); BEGIN v_result := 'Onbekend - ' || p_prs_kostenplaats_nr; BEGIN SELECT prs_afdeling_upper INTO v_result FROM prs_v_aanwezigafdeling a, prs_kostenplaats k WHERE niveau = 1 AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr; RETURN v_result; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT prs_afdeling_upper INTO v_result FROM prs_v_aanwezigafdeling a, prs_kostenplaats k WHERE niveau = 2 AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END; END aaxx_get_dep_code; / -- zoek naar de afdelingscode van het hoogste niveau afdeling CREATE OR REPLACE FUNCTION aaxx_get_top_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2 AS CURSOR c IS SELECT ta.prs_afdeling_naam FROM prs_kostenplaats kp, prs_afdeling a, prs_v_afdeling_boom ab, prs_afdeling ta WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = ta.prs_afdeling_key AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC; v_result VARCHAR2(100); BEGIN v_result := 'Onbekend - ' || p_prs_kostenplaats_nr; BEGIN FOR rec IN C LOOP BEGIN RETURN rec.prs_afdeling_naam; END; END LOOP; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_top_dep_code; / -- zoek naar de bedrijf_key van het hoogste niveau afdeling CREATE OR REPLACE FUNCTION aaxx_get_top_bedrijf_key (p_prs_kostenplaats_nr VARCHAR2) RETURN NUMBER AS CURSOR c IS SELECT ta.prs_afdeling_naam, ta.prs_bedrijf_key FROM prs_kostenplaats kp, prs_afdeling a, prs_v_afdeling_boom ab, prs_afdeling ta WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = ta.prs_afdeling_key AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC; v_result NUMBER; BEGIN v_result := NULL; BEGIN FOR rec IN C LOOP BEGIN RETURN rec.prs_bedrijf_key; END; END LOOP; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_top_bedrijf_key; / -- zoek naar de kostenplaats_key van het hoogste niveau afdeling CREATE OR REPLACE FUNCTION aaxx_get_top_kpn_key (p_prs_kostenplaats_key NUMBER) RETURN VARCHAR2 AS CURSOR c IS SELECT ta.prs_kostenplaats_key FROM prs_afdeling a, prs_v_afdeling_boom ab, prs_bedrijf b, prs_afdeling ta WHERE p_prs_kostenplaats_key = a.prs_kostenplaats_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = ta.prs_afdeling_key AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND a.prs_afdeling_verwijder IS NULL AND ta.prs_afdeling_verwijder IS NULL AND b.prs_bedrijf_verwijder IS NULL ORDER BY a.prs_afdeling_key; v_result NUMBER; BEGIN v_result := NULL; BEGIN FOR rec IN C LOOP BEGIN RETURN rec.prs_kostenplaats_key; END; END LOOP; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_top_kpn_key; / -- zoek naar de kostenplaats_nr van het hoogste niveau afdeling CREATE OR REPLACE FUNCTION aaxx_get_top_kpn_nr (p_prs_kostenplaats_key NUMBER) RETURN VARCHAR2 AS CURSOR c IS SELECT ta.prs_kostenplaats_key FROM prs_afdeling a, prs_v_afdeling_boom ab, prs_bedrijf b, prs_afdeling ta WHERE p_prs_kostenplaats_key = a.prs_kostenplaats_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = ta.prs_afdeling_key AND ab.prs_bedrijf_key = b.prs_bedrijf_key AND a.prs_afdeling_verwijder IS NULL AND ta.prs_afdeling_verwijder IS NULL AND b.prs_bedrijf_verwijder IS NULL ORDER BY a.prs_afdeling_key; v_result VARCHAR2(30); BEGIN v_result := NULL; BEGIN FOR rec IN C LOOP BEGIN -- RETURN rec.prs_kostenplaats_key; SELECT kp.prs_kostenplaats_nr INTO v_result FROM prs_kostenplaats kp WHERE kp.prs_kostenplaats_key = rec.prs_kostenplaats_key ; END; END LOOP; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_top_kpn_nr; / -- Zoek bovenliggende afdelingsniveau 1 en de daarbij vastgelegde kostenplaats bij kenmerkwaarde-veld 'Kostenplaats' -- Nieuwe structuur voor interface voor bepaling DEBITEUR voor SMKA (zie ticket 57797) CREATE OR REPLACE FUNCTION aaxx_get_top_afdeling_kpkenm (p_prs_kostenplaats_key VARCHAR2) RETURN VARCHAR2 AS CURSOR c IS SELECT kp.prs_kostenplaats_nr FROM prs_kenmerklink km, prs_kostenplaats kp, (SELECT kp.prs_kostenplaats_key, a.prs_afdeling_key, ab.prs_afdeling_key1 FROM prs_afdeling a, prs_v_afdeling_boom ab, prs_kostenplaats kp WHERE a.prs_afdeling_key = ab.prs_afdeling_key AND a.prs_kostenplaats_key = p_prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL) v WHERE km.prs_link_key = v.prs_afdeling_key1 AND km.prs_kenmerklink_niveau = 'A' AND km.prs_kenmerklink_waarde = kp.prs_kostenplaats_key AND km.prs_kenmerk_key = 1000 ; v_result VARCHAR2(100); BEGIN v_result := ''; BEGIN FOR rec IN C LOOP BEGIN RETURN rec.prs_kostenplaats_nr; END; END LOOP; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_top_afdeling_kpkenm; / -- zoek naar de afdelingscode van het één na hoogste niveau afdeling CREATE OR REPLACE FUNCTION aaxx_get_lev2_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2(100); BEGIN v_result := 'Onbekend - ' || p_prs_kostenplaats_nr; BEGIN SELECT ta.prs_afdeling_naam INTO v_result FROM prs_kostenplaats kp, prs_afdeling a, prs_v_afdeling_boom ab, prs_afdeling ta WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key2 = ta.prs_afdeling_key AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr; RETURN v_result; EXCEPTION WHEN OTHERS THEN RETURN v_result; END; END aaxx_get_lev2_dep_code; / CREATE OR REPLACE FUNCTION aaxx_bestelling_items (bes_key IN NUMBER) RETURN VARCHAR2 IS lret VARCHAR2 (512); lfirst NUMBER; llast NUMBER; CURSOR items IS SELECT TO_CHAR (bi.bes_bestelling_item_aantal) || 'x ' || s.bes_srtdeel_omschrijving /* lcl.x()?*/ || ' (' || s.bes_srtdeel_eenheid || ') ' besitemdsc FROM bes_bestelling_item bi, bes_srtdeel s WHERE bi.bes_srtdeel_key = s.bes_srtdeel_key AND bi.bes_bestelling_key = bes_key; BEGIN lret := NULL; lfirst := 0; llast := 0; FOR besitem_rec IN items LOOP IF lfirst = 0 THEN BEGIN lret := besitem_rec.besitemdsc; lfirst := 1; END; ELSE IF llast = 0 THEN IF LENGTH (lret) + LENGTH (besitem_rec.besitemdsc) < (512 - 5) THEN lret := lret || CHR (10) || besitem_rec.besitemdsc; ELSE lret := lret || CHR (10) || '...'; llast := 1; END IF; END IF; END IF; END LOOP; RETURN lret; END; / CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_users (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN UPDATE prs_perslid p SET prs_perslid_oslogin = NULL, prs_perslid_oslogin2 = NULL WHERE prs_perslid_verwijder IS NULL AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL) AND ( SYSDATE - prs_perslid_aanmaak > 90 AND ( prs_perslid_login IS NULL OR SYSDATE - prs_perslid_login > 90 ) ) AND NOT EXISTS (SELECT fac_groep_omschrijving FROM fac_gebruikersgroep gg, fac_groep g WHERE p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND UPPER(g.fac_groep_omschrijving) LIKE '%EXTENDED LOGIN%' AND SYSDATE - prs_perslid_login < 276) AND NOT EXISTS ( SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE fac_tracking_refkey = p.prs_perslid_key AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'PRSUPD' AND SYSDATE - t.fac_tracking_datum < 90) AND NOT EXISTS ( SELECT prs_afdeling_key FROM prs_afdeling a WHERE a.prs_afdeling_key = p.prs_afdeling_key AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY')) AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_' AND NOT EXISTS ( SELECT prs_srtperslid_key FROM prs_srtperslid ps WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key AND prs_srtperslid_verwijder IS NULL AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM'); END; / CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_key (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN UPDATE prs_perslid p SET prs_perslid_oslogin = NULL, prs_perslid_oslogin2 = NULL WHERE prs_perslid_verwijder IS NULL AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL) AND ( SYSDATE - prs_perslid_aanmaak > 30 AND ( prs_perslid_login IS NULL OR SYSDATE - prs_perslid_login > 30 ) ) AND EXISTS ( SELECT gg.fac_groep_key FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f WHERE f.fac_functie_key = gr.fac_functie_key AND f.fac_functie_code = 'WEB_EXTORD' AND gr.fac_groep_key = gg.fac_groep_key AND gg.prs_perslid_key = p.prs_perslid_key) AND NOT EXISTS ( SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE fac_tracking_refkey = p.prs_perslid_key AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'PRSUPD' AND SYSDATE - t.fac_tracking_datum < 30) AND NOT EXISTS ( SELECT prs_afdeling_key FROM prs_afdeling a WHERE a.prs_afdeling_key = p.prs_afdeling_key AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY')) AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_' AND NOT EXISTS ( SELECT prs_srtperslid_key FROM prs_srtperslid ps WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key AND prs_srtperslid_verwijder IS NULL AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM'); END; / CREATE OR REPLACE VIEW aaxx_v_noti_non_active_users ( sender, receiver, text, code, fac_srtnotificatie_key, key, xkey, xemail, xmobile ) AS SELECT NULL sender, prs_perslid_key receiver, 'Uw account voor FACILITOR is bijna verlopen. ' text, 'CUST05' code, NULL fac_srtnotificatie_key, p.prs_perslid_key key, NULL xkey, NULL xemail, NULL xmobile FROM prs_perslid p WHERE p.prs_perslid_email IS NOT NULL AND p.prs_perslid_verwijder IS NULL AND TRUNC (p.prs_perslid_login) = TRUNC (SYSDATE - 90 + 7) AND NOT EXISTS (SELECT prs_afdeling_key FROM prs_afdeling a WHERE a.prs_afdeling_key = p.prs_afdeling_key AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY')) AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_' AND NOT EXISTS ( SELECT prs_srtperslid_key FROM prs_srtperslid ps WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key AND prs_srtperslid_verwijder IS NULL AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM'); CREATE OR REPLACE PROCEDURE aaxx_export_login ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN INSERT INTO aaxx_perslid_login (prs_perslid_key, login_datum) (SELECT prs_perslid_key, prs_perslid_login FROM prs_perslid WHERE TRUNC (prs_perslid_login) = TRUNC (SYSDATE)); END; / -- Job om meldingen onder de vakgroeptype AA Complimenten binnen de SLA automatisch af te melden -- Hierbij wordt in de afhandeling de afmeldtekst gebruikt die standaard geconfigureerd staat. CREATE OR REPLACE PROCEDURE aaxx_afmelden_complimenten ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR c IS SELECT m.*, a.mld_afmeldtekst_omschrijving FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, mld_afmeldtekst a WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_prefix = 'AA' AND a.mld_ins_discipline_key = std.mld_ins_discipline_key AND a.mld_stdmelding_key IS NULL AND m.mld_melding_status IN (2, 3, 4) AND m.mld_melding_einddatum_std < SYSDATE + 1; BEGIN FOR rec in c LOOP BEGIN UPDATE mld_melding SET mld_melding_opmerking = rec.mld_afmeldtekst_omschrijving WHERE mld_melding_key = rec.mld_melding_key; -- Als status is nieuw of te accepteren dan eerst op geaccepteerd zetten. IF rec.mld_melding_status = 2 OR rec.mld_melding_status = 3 THEN mld.setmeldingstatus(rec.mld_melding_key, 4, NULL); END IF; -- nu de status op afgemeld zetten. mld.setmeldingstatus(rec.mld_melding_key, 5, NULL); END; END LOOP; END; / -- Correcties op meldingen/opdrachten/facturen bestaan uit aanpassingen in de kostenplaats -- of standaardmelding (kostensoort). De originele opdracht is dan al verwerkt en naar Exact -- gehaald. Daar willen we niet aan gaan zitten knutselen. -- Daarom kan aan een melding die ingelegd is op een verkeerde stdmelding of kostenplaats -- een vervolgmelding (Ordercorrectie) gekoppeld worden. Deze ordercorrectiemelding heeft -- flexvelden voor de nieuwe kostenplaats en nieuwe stdmelding. Onderstaande procedure -- maakt nu een nieuwe structuur van melding/opdrach(en)/factuur(en) aan die gelijk is aan -- de structuur van de originele melding maar met de tegenboeking (negatieve bedragen). Als -- tweede wordt dezelfde structuur nog een keer aangemaakt voor de correctiemelding. Deze -- structuur bevat de originele bedragen maar bevat de nieuwe kostenplaats en/of stdmelding. -- Correctiemeldingen worden pas uitgevoerd op het moment dat ze afgemeld zijn. Aan het -- einde van deze procedure wordt de correctiemelding op afgerond gezet zodat deze niet -- nogmaals uitgevoerd wordt. CREATE OR REPLACE PROCEDURE aaxx_ordercorrecties ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR c IS SELECT m.mld_melding_start_key, m.mld_melding_key, COALESCE ( (SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = m.mld_melding_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'NIEUWE KOSTENPLAATS'), m_org.prs_kostenplaats_key) nieuwe_kostenplaats, COALESCE ( (SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = m.mld_melding_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'NIEUWE MELDING'), m_org.prs_kostenplaats_key) nieuwe_melding FROM mld_melding m, mld_stdmelding std, mld_melding m_org WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_stdmelding_omschrijving = 'Ordercorrecties' AND m.mld_melding_start_key = m_org.mld_melding_key AND m.mld_melding_status = 5 AND m.mld_melding_afgerond = 0; CURSOR c_o (c_melding_key NUMBER) IS SELECT * FROM mld_opdr WHERE mld_melding_key = c_melding_key; CURSOR c_f (c_opdr_key NUMBER) IS SELECT * FROM fin_factuur WHERE mld_opdr_key = c_opdr_key AND fin_factuur_verwijder IS NULL; CURSOR c_fr (c_factuur_key NUMBER) IS SELECT * FROM fin_factuurregel WHERE fin_factuur_key = c_factuur_key; v_melding_tegenb_key NUMBER; v_opdr_tegenb_key NUMBER; v_factuur_tegenb_key NUMBER; v_factuurregel_tegenb_key NUMBER; v_melding_cor_key NUMBER; v_opdr_cor_key NUMBER; v_factuur_cor_key NUMBER; v_factuurregel_cor_key NUMBER; BEGIN FOR rec IN c LOOP BEGIN -- Maak een tegenboeking aan met dezelfde stdmelding/kostenplaats SELECT mld_s_mld_melding_key.NEXTVAL INTO v_melding_tegenb_key FROM DUAL; INSERT INTO mld_melding (mld_melding_key, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_omschrijving, mld_melding_opmerking, mld_stdmelding_key, mld_melding_status, mld_kosten_klant, mld_melding_document, prs_kostenplaats_key, prs_perslid_key, mld_adres_key, mld_melding_ordernr, mld_melding_spoed, mld_melding_onderwerp, mld_melding_start_key) SELECT v_melding_tegenb_key, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, SUBSTR ( 'Tegenboeking' || CHR (10) || mld_melding_omschrijving, 1, 4000), SUBSTR ( 'Tegenboeking' || CHR (10) || mld_melding_opmerking, 1, 4000), mld_stdmelding_key, 2, mld_kosten_klant, mld_melding_document, prs_kostenplaats_key, prs_perslid_key, mld_adres_key, mld_melding_ordernr, mld_melding_spoed, SUBSTR ('Tegenboeking: ' || mld_melding_onderwerp, 1, 60), mld_melding_key FROM mld_melding WHERE mld_melding_key = rec.mld_melding_start_key; fac.trackaction ('MLDNEW', v_melding_tegenb_key, NULL, NULL, NULL); mld.setmeldingstatus (v_melding_tegenb_key, 4, NULL); -- Maak een correctie melding aan met de nieuwe stdmelding en nieuwe kostenplaats SELECT mld_s_mld_melding_key.NEXTVAL INTO v_melding_cor_key FROM DUAL; INSERT INTO mld_melding (mld_melding_key, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_omschrijving, mld_melding_opmerking, mld_stdmelding_key, mld_melding_status, mld_kosten_klant, mld_melding_document, prs_kostenplaats_key, prs_perslid_key, mld_adres_key, mld_melding_ordernr, mld_melding_spoed, mld_melding_onderwerp, mld_melding_start_key) SELECT v_melding_cor_key, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, SUBSTR ( 'Correctie melding' || CHR (10) || mld_melding_omschrijving, 1, 4000), SUBSTR ( 'Correctie melding' || CHR (10) || mld_melding_opmerking, 1, 4000), rec.nieuwe_melding, 2, mld_kosten_klant, mld_melding_document, rec.nieuwe_kostenplaats, prs_perslid_key, mld_adres_key, mld_melding_ordernr, mld_melding_spoed, SUBSTR ('Correctie: ' || mld_melding_onderwerp, 1, 60), mld_melding_key FROM mld_melding WHERE mld_melding_key = rec.mld_melding_start_key; fac.trackaction ('MLDNEW', v_melding_cor_key, NULL, NULL, NULL); mld.setmeldingstatus (v_melding_cor_key, 4, NULL); DBMS_OUTPUT.put_line ( 'Originele melding_key:' || rec.mld_melding_start_key); FOR rec_o IN c_o (rec.mld_melding_start_key) LOOP BEGIN DBMS_OUTPUT.put_line ( 'Originele opdracht_key:' || rec_o.mld_opdr_key); -- Maak voor iedere opdracht onder de originele melding een tegenboekingsopdracht aan. SELECT mld_s_mld_opdr_key.NEXTVAL INTO v_opdr_tegenb_key FROM DUAL; DBMS_OUTPUT.put_line ( 'Tegenboeking opdracht_key:' || v_opdr_tegenb_key); INSERT INTO mld_opdr (mld_opdr_key, mld_opdr_module, mld_melding_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_uitvoerende_keys, mld_typeopdr_key, mld_statusopdr_key, mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin, mld_opdr_dagen, mld_opdr_einddatum, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten, prs_kostenplaats_key, mld_opdr_ordernr, mld_opdr_contactpersoon, mld_opdr_bedrijfopdr_volgnr, mld_opdr_teverzenden, mld_opdr_uurloon, prs_perslid_key, prs_contactpersoon_key, mld_opdr_opmerking_fiat, fac_activiteit_key, mld_opdr_opmerking, cnt_contract_key, cnt_contract_dienst_key, mld_opdr_plandatum, mld_opdr_id) SELECT v_opdr_tegenb_key, mld_opdr_module, v_melding_tegenb_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_uitvoerende_keys, mld_typeopdr_key, 5, -- toegekend mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin, mld_opdr_dagen, mld_opdr_einddatum, mld_opdr_werkzaamheden, 0, 0, -1 * mld_opdr_kosten, prs_kostenplaats_key, mld_opdr_ordernr, mld_opdr_contactpersoon, mld_opdr_bedrijfopdr_volgnr, NULL, -- mld_opdr_teverzenden mld_opdr_uurloon, prs_perslid_key, prs_contactpersoon_key, mld_opdr_opmerking_fiat, fac_activiteit_key, SUBSTR ( 'Tegenboeking' || CHR (10) || mld_opdr_opmerking, 1, 4000), cnt_contract_key, cnt_contract_dienst_key, mld_opdr_plandatum, mld_opdr_id FROM mld_opdr WHERE mld_opdr_key = rec_o.mld_opdr_key; fac.trackaction ('#ORDNEW', v_opdr_tegenb_key, NULL, NULL, NULL); -- Maak voor iedere opdracht onder de originele melding een correctieopdracht aan. SELECT mld_s_mld_opdr_key.NEXTVAL INTO v_opdr_cor_key FROM DUAL; DBMS_OUTPUT.put_line ( 'Correctie opdracht_key:' || v_opdr_cor_key); INSERT INTO mld_opdr (mld_opdr_key, mld_opdr_module, mld_melding_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_uitvoerende_keys, mld_typeopdr_key, mld_statusopdr_key, mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin, mld_opdr_dagen, mld_opdr_einddatum, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten, prs_kostenplaats_key, mld_opdr_ordernr, mld_opdr_contactpersoon, mld_opdr_bedrijfopdr_volgnr, mld_opdr_teverzenden, mld_opdr_uurloon, prs_perslid_key, prs_contactpersoon_key, mld_opdr_opmerking_fiat, fac_activiteit_key, mld_opdr_opmerking, cnt_contract_key, cnt_contract_dienst_key, mld_opdr_plandatum, mld_opdr_id) SELECT v_opdr_cor_key, mld_opdr_module, v_melding_cor_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_uitvoerende_keys, mld_typeopdr_key, 5, -- toegekend mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin, mld_opdr_dagen, mld_opdr_einddatum, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten, rec.nieuwe_kostenplaats, mld_opdr_ordernr, mld_opdr_contactpersoon, mld_opdr_bedrijfopdr_volgnr, NULL, -- mld_opdr_teverzenden mld_opdr_uurloon, prs_perslid_key, prs_contactpersoon_key, mld_opdr_opmerking_fiat, fac_activiteit_key, SUBSTR ( 'Correctie' || CHR (10) || mld_opdr_opmerking, 1, 4000), cnt_contract_key, cnt_contract_dienst_key, mld_opdr_plandatum, mld_opdr_id FROM mld_opdr WHERE mld_opdr_key = rec_o.mld_opdr_key; fac.trackaction ('#ORDNEW', v_opdr_cor_key, NULL, NULL, NULL); FOR rec_f IN c_f (rec_o.mld_opdr_key) LOOP BEGIN DBMS_OUTPUT.put_line ( 'Originele factuur_key:' || rec_f.fin_factuur_key); -- Maak voor iedere factuur onder de originele opdracht een tegenboekingsfactuur aan. SELECT fin_s_fin_factuur_key.NEXTVAL INTO v_factuur_tegenb_key FROM DUAL; DBMS_OUTPUT.put_line ( 'Tegenboekingsfactuur_key:' || v_factuur_tegenb_key); INSERT INTO fin_factuur (fin_factuur_key, mld_opdr_key, fin_factuur_nr, fin_factuur_totaal, fin_factuur_totaal_btw, prs_perslid_key_user, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, prs_kostensoort_key, fin_factuur_opmerking, fin_factuur_statuses_key) SELECT v_factuur_tegenb_key, v_opdr_tegenb_key, fin_factuur_nr, -1 * fin_factuur_totaal, -1 * fin_factuur_totaal_btw, prs_perslid_key_user, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, prs_kostensoort_key, SUBSTR ( 'Tegenboeking' || CHR (10) || fin_factuur_opmerking, 1, 4000), 6 -- goedgekeurd FROM fin_factuur WHERE fin_factuur_key = rec_f.fin_factuur_key; INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) SELECT v_factuur_tegenb_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur WHERE fin_factuur_key = rec_f.fin_factuur_key; fac.trackaction ('FINNEW', v_factuur_tegenb_key, NULL, NULL, NULL); -- Maak voor iedere factuur onder de originele opdracht een correctiefactuur aan. SELECT fin_s_fin_factuur_key.NEXTVAL INTO v_factuur_cor_key FROM DUAL; DBMS_OUTPUT.put_line ( 'Correctie factuur_key:' || v_factuur_cor_key); INSERT INTO fin_factuur (fin_factuur_key, mld_opdr_key, fin_factuur_nr, fin_factuur_totaal, fin_factuur_totaal_btw, prs_perslid_key_user, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, prs_kostensoort_key, fin_factuur_opmerking, fin_factuur_statuses_key) SELECT v_factuur_cor_key, v_opdr_cor_key, fin_factuur_nr, fin_factuur_totaal, fin_factuur_totaal_btw, prs_perslid_key_user, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, (SELECT COALESCE (std.prs_kostensoort_key, d.prs_kostensoort_key) FROM mld_stdmelding std, ins_tab_discipline d WHERE std.mld_ins_discipline_key = d.ins_discipline_key AND std.mld_stdmelding_key = rec.nieuwe_melding), SUBSTR ( 'Correctie' || CHR (10) || fin_factuur_opmerking, 1, 4000), 6 -- goedgekeurd FROM fin_factuur WHERE fin_factuur_key = rec_f.fin_factuur_key; fac.trackaction ('FINNEW', v_factuur_cor_key, NULL, NULL, NULL); INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) SELECT v_factuur_cor_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur WHERE fin_factuur_key = rec_f.fin_factuur_key; FOR rec_fr IN c_fr (rec_f.fin_factuur_key) LOOP BEGIN DBMS_OUTPUT.put_line('Originele factuurregel_key:' || rec_fr.fin_factuurregel_key); -- Maak voor iedere factuurregel onder de originele factuur een tegenboekings factuurregel aan. SELECT fin_s_fin_factuurregel_key.NEXTVAL INTO v_factuurregel_tegenb_key FROM DUAL; DBMS_OUTPUT.put_line('Tegenboekings factuurregel_key:' || v_factuurregel_tegenb_key); INSERT INTO fin_factuurregel (fin_factuurregel_key, fin_factuur_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie, fin_btwtabelwaarde_key, prs_kostensoort_key) SELECT v_factuurregel_tegenb_key, v_factuur_tegenb_key, fin_factuurregel_nr, -1 * fin_factuurregel_totaal, -1 * fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie, fin_btwtabelwaarde_key, prs_kostensoort_key FROM fin_factuurregel WHERE fin_factuurregel_key = rec_fr.fin_factuurregel_key; -- Maak voor iedere factuurregel onder de originele factuur een correctie factuurregel aan. SELECT fin_s_fin_factuurregel_key.NEXTVAL INTO v_factuurregel_cor_key FROM DUAL; DBMS_OUTPUT.put_line('Correctie factuurregel_key:' || v_factuurregel_cor_key); INSERT INTO fin_factuurregel (fin_factuurregel_key, fin_factuur_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie, fin_btwtabelwaarde_key, prs_kostensoort_key) SELECT v_factuurregel_cor_key, v_factuur_cor_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_omschrijving, fin_factuurregel_referentie, fin_btwtabelwaarde_key, (SELECT COALESCE ( std.prs_kostensoort_key, d.prs_kostensoort_key) FROM mld_stdmelding std, ins_tab_discipline d WHERE std.mld_ins_discipline_key = d.ins_discipline_key AND std.mld_stdmelding_key = rec.nieuwe_melding) FROM fin_factuurregel WHERE fin_factuurregel_key = rec_fr.fin_factuurregel_key; END; END LOOP; END; END LOOP; -- set opdrachtstatus op technisch gereed mld.setopdrachtstatus (v_opdr_tegenb_key, 6, NULL); mld.setopdrachtstatus (v_opdr_cor_key, 6, NULL); END; END LOOP; -- zet meldingstatus op technisch gereed mld.updatemeldingstatus (v_melding_tegenb_key, 1, NULL); mld.updatemeldingstatus (v_melding_cor_key, 1, NULL); -- zet de status van de correctiemelding op afgerond zodat deze niet opnieuw verwerkt wordt. UPDATE mld_melding SET mld_melding_afgerond = 1 WHERE mld_melding_key = rec.mld_melding_key; END; END LOOP; END; / -- view om stdmeldingen als suggest bij kenmerk te tonen. CREATE OR REPLACE VIEW aaxx_v_stdmelding_gegevens AS SELECT sd.ins_srtdiscipline_key, ins_srtdiscipline_prefix, ins_srtdiscipline_omschrijving, ins_discipline_key, ins_discipline_omschrijving, mld_stdmelding_key, mld_stdmelding_omschrijving, ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving discstd, mld_stdmelding_verwijder FROM ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key AND d.ins_discipline_key = std.mld_ins_discipline_key; --============================================================================= -- EXPORTFUNCTIES Reserveringen NoShow. -- Exportfunctie moet voor de putorders van de betreffende klant gescheduled worden. -- 10 minuten na aanvang wordt bij no_show een noshow reminder gestuurd -- 15 minuten na aanvang wordt de reservering als noshow aangemerkt en -- wordt de ruimte vrijgegeven. ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_select_noshow_reminder ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS CURSOR c ( c_srtnotificatie_key NUMBER) IS SELECT DISTINCT rrr.res_rsv_ruimte_host_key, rr.res_ruimte_nr, pf.prs_perslid_naam_full, rrr.res_reservering_key, rrr.res_rsv_ruimte_key FROM cad_v_thema_srtruimtesensor s, res_v_rsv_ruimte_2_alg_ruimte r2a, res_rsv_ruimte rrr, res_ruimte rr, prs_v_perslid_fullnames pf WHERE waarde = 'NoShow' AND res_rsv_ruimte_host_key = pf.prs_perslid_key AND s.alg_ruimte_key = r2a.alg_ruimte_key AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND r2a.res_ruimte_key = rr.res_ruimte_key AND SYSDATE BETWEEN rrr.res_rsv_ruimte_van AND rrr.res_rsv_ruimte_tot AND rrr.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 6) -- verder dan tien minuten AND rrr.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 6) -- niet verder dan twintig minuten AND NOT EXISTS (SELECT fac_tracking_key FROM fac_tracking t WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key AND fac_tracking_refkey = rrr.res_rsv_ruimte_key); CURSOR c2 ( c_srtnotificatie_key NUMBER) IS SELECT DISTINCT r2a.res_rsv_ruimte_key FROM cad_v_thema_srtruimtesensor s, res_v_rsv_ruimte_2_alg_ruimte r2a WHERE waarde = 'NoShow' AND s.alg_ruimte_key = r2a.alg_ruimte_key AND SYSDATE BETWEEN r2a.res_rsv_ruimte_van AND r2a.res_rsv_ruimte_tot AND r2a.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 4) -- verder dan een kwartier AND r2a.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 4) -- niet verder dan een half uur AND EXISTS (SELECT fac_tracking_key FROM fac_tracking t WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key AND fac_tracking_refkey = r2a.res_rsv_ruimte_key); v_srtnotificatie_key NUMBER; BEGIN SELECT fac_srtnotificatie_key INTO v_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST06'; -- herinnering noshow FOR rec IN c (v_srtnotificatie_key) LOOP BEGIN fac.putnotificationsrtprio ( NULL, rec.res_rsv_ruimte_host_key, 'CUST06', rec.res_reservering_key, 'No-show waarschuwing reservering ' || rec.res_ruimte_nr, 2, -- mail NULL, -- geen specifiek mail adres NULL, -- geen specifiek mobile nummer rec.res_rsv_ruimte_key, 1, -- hoge prioriteit NULL); fac.trackaction ( '#CUST06', rec.res_rsv_ruimte_key, NULL, NULL, 'No-show waarschuwing verzonden naar: ' || rec.prs_perslid_naam_full); END; END LOOP; FOR rec IN c2 (v_srtnotificatie_key) LOOP BEGIN UPDATE res_rsv_ruimte SET res_rsv_ruimte_bezoekers_shown = 0, res_rsv_ruimte_tot = GREATEST ( res_rsv_ruimte_van, LEAST (res_rsv_ruimte_tot, TRUNC (SYSDATE, 'MI'))) WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; UPDATE res_rsv_deel SET res_rsv_deel_tot = LEAST ( res_rsv_deel_tot, (SELECT res_rsv_ruimte_tot FROM res_rsv_ruimte WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key)) WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; fac.trackaction ('RESNOS', rec.res_rsv_ruimte_key, NULL, NULL, NULL); END; END LOOP; COMMIT; END; / -- hulpview - om mareon-factuurverwerking zo efficient mogelijk te laten lopen registreert men vanaf dec-2022 of men bij verkeerde facturen mareon-helpdesk of leverancier om actie/aanpassing vraagt CREATE OR REPLACE VIEW aaxx_v_fin_factuur_retour ( fin_factuur_key, fin_factuur_nr, referentie_facilitor, fin_factuur_aanmaak, fin_factuur_verwijder, fin_factuur_status, fin_factuur_retour_lev, fin_factuur_retour_lev_reden, fin_factuur_retour_mar, fin_factuur_retour_mar_reden, prs_bedrijf_naam ) AS SELECT f.fin_factuur_key, f.fin_factuur_nr, v.referentie_facilitor, v.fin_factuur_aanmaak, f.fin_factuur_verwijder, v.fin_factuur_status, v.fin_factuur_retour_lev, v.fin_factuur_retour_lev_reden, v.fin_factuur_retour_mar, v.fin_factuur_retour_mar_reden, COALESCE (b_c.prs_bedrijf_naam, COALESCE (b_o.prs_bedrijf_naam, b_b.prs_bedrijf_naam)) prs_bedrijf_naam FROM fin_factuur f, ( SELECT fin_factuur_key, COALESCE (opdr_id, contract_id, bestel_id) referentie_facilitor, fin_factuur_aanmaak, fin_factuur_retour_lev, fin_factuur_retour_lev_reden, fin_factuur_status, fin_factuur_retour_mar, fin_factuur_retour_mar_reden FROM aaxx_v_dwh_fin_factuur GROUP BY fin_factuur_key, COALESCE (opdr_id, contract_id, bestel_id), fin_factuur_aanmaak, fin_factuur_status, fin_factuur_retour_lev, fin_factuur_retour_lev_reden, fin_factuur_retour_mar, fin_factuur_retour_mar_reden) v, mld_opdr o, cnt_contract c, bes_bestelopdr bo, prs_bedrijf b_o, prs_bedrijf b_c, prs_bedrijf b_b WHERE v.fin_factuur_key = f.fin_factuur_key AND f.mld_opdr_key = o.mld_opdr_key(+) AND f.cnt_contract_key = c.cnt_contract_key(+) AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+) AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+) AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+) AND (v.fin_factuur_retour_lev = 1 OR v.fin_factuur_retour_mar = 1); --============================================================================= -- EXPORTFUNCTIES PROJECTUREN --============================================================================= -- Basisgegevens van door te belasten opdrachturen -- (uurtarief van opdracht, anders van persoon) -- Keys: 7 (Project) uren (opdrachttype) -- 14 Type project (eigen tabel) -- 15 Rekening courant (eigen tabel) -- 55 Projectnaam (kenmerksoort) -- 186 Type project (flex opdracht) -- 187 Verrekenen met (flex opdracht) -- 188 Uurtarief (flex opdracht) -- 189 ProjectKPN uit AD (flex opdracht) -- 2 ProjectKPN uit AD (flex perslid) -- 3 AAFM Personeelsnummber (flex perslid) -- 6 Uurtarief intern (flex perslid) CREATE OR REPLACE VIEW aaxx_v_exact_uren_gegevens AS SELECT m.mld_melding_key, o.mld_opdr_key, o.mld_opdr_bedrijfopdr_volgnr, vt.ins_srtdiscipline_prefix, vt.ins_srtdiscipline_prefix || m.mld_melding_key meldingnr, vt.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, pn.mld_kenmerkmelding_waarde projectnaam, tp.fac_usrdata_code projecttype_code, tp.fac_usrdata_omschr projecttype_omschr, DECODE (aaxx_get_user, 'SABIC', DECODE ( (SELECT l.alg_locatie_key FROM alg_locatie l WHERE l.alg_locatie_key = m.mld_alg_locatie_key AND m.mld_melding_key = o.mld_melding_key), 101, -- Bergen op Zoom BOZ '00601000', 102, -- Raamsdonksveer RDV '00601000', 121, -- Genk AASA#66258 '00602000', '00600000'), kpn.prs_kostenplaats_nr) prs_kostenplaats_nr, kpo.mld_kenmerkopdr_waarde projectkpn_opdr, kpp.prs_kenmerklink_waarde projectkpn_perslid, rc.fac_usrdata_code rek_courant, o.mld_statusopdr_key, so.mld_statusopdr_omschrijving, ap.prs_perslid_key, DECODE (aaxx_get_user, 'IT', prs_perslid_nr, pnp.prs_kenmerklink_waarde) aafm_perslid_nr, akpn.prs_kostenplaats_nr afdkpn, o.mld_opdr_uren, ou.mld_opdr_uren_key, ou.mld_opdr_uren_datum, ou.mld_opdr_uren_status, lx.fac_locale_xsl_tekst uren_status_tekst, ou.mld_opdr_uren_besteed, ou.mld_opdr_uren_opmerking, fac.safe_To_Number(ut.mld_kenmerkopdr_waarde) uurtarief_opdr, DECODE (UPPER(tp.fac_usrdata_omschr), 'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde), ap.prs_perslid_uurloon) uurtarief_perslid FROM mld_melding m, mld_stdmelding sm, mld_discipline vg, ins_srtdiscipline vt, prs_kostenplaats kpn, mld_opdr o, mld_statusopdr so, prs_perslid ap, prs_v_aanwezigafdeling aa, prs_kostenplaats akpn, mld_opdr_uren ou, (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key IN (SELECT mld_kenmerk_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = 55 AND mld_kenmerk_verwijder IS NULL) ) pn, -- projectnaam (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 187) vm, -- verrekenen met (SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 15) rc, -- rekening courant (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 186) ep, -- type project (SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 14) tp, -- type project (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr) (SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid) (SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 6) uti, -- uurtarief intern (perslid) (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht) (SELECT * FROM fac_locale_xsl WHERE fac_locale_xsl_lang = 'NL') lx, -- locale-strings (SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 3) pnp -- personeelsnummer (perslid) WHERE o.mld_typeopdr_key = 7 AND m.mld_melding_key = o.mld_melding_key AND sm.mld_stdmelding_key = m.mld_stdmelding_key AND vg.ins_discipline_key = sm.mld_ins_discipline_key AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key AND pn.mld_melding_key(+) = m.mld_melding_key AND so.mld_statusopdr_key = o.mld_statusopdr_key AND kpn.prs_kostenplaats_key = o.prs_kostenplaats_key AND vm.mld_opdr_key(+) = o.mld_opdr_key AND rc.fac_usrdata_key(+) = fac.safe_To_Number(vm.mld_kenmerkopdr_waarde) AND ep.mld_opdr_key(+) = o.mld_opdr_key AND tp.fac_usrdata_key(+) = fac.safe_To_Number(ep.mld_kenmerkopdr_waarde) AND kpo.mld_opdr_key(+) = o.mld_opdr_key AND kpp.prs_link_key(+) = o.mld_uitvoerende_keys AND uti.prs_link_key(+) = o.mld_uitvoerende_keys AND pnp.prs_link_key(+) = o.mld_uitvoerende_keys AND ut.mld_opdr_key(+) = o.mld_opdr_key AND ap.prs_perslid_key = o.mld_uitvoerende_keys AND aa.prs_afdeling_key = ap.prs_afdeling_key AND akpn.prs_kostenplaats_key(+) = aa.prs_kostenplaats_key AND ou.mld_opdr_key = o.mld_opdr_key AND lx.fac_locale_xsl_label = 'lcl_mld_uren_status_'||ou.mld_opdr_uren_status; -- Van fac_rapport naar exportbestand (XML) CREATE OR REPLACE VIEW aaxx_v_export_exact_uren_xml ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = SUBSTR ('EXACT_UREN', 1, 12); -- Exportregels (XML-structuur) in fac_rapport CREATE OR REPLACE PROCEDURE aaxx_select_exact_uren_xml ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_kpnprefix IN VARCHAR2 ) AS -- Status 3 = Goedgekeurd CURSOR c IS SELECT * FROM aaxx_v_exact_uren_gegevens WHERE mld_opdr_uren_status = 3 AND prs_kostenplaats_nr LIKE p_kpnprefix||'%' AND (aaxx_get_user <> 'IT' OR ins_srtdiscipline_prefix = 'PR') ORDER BY mld_opdr_uren_datum, opdrachtnr; v_order_count NUMBER; v_amount_sum NUMBER(10,2); v_count NUMBER; v_bestand VARCHAR2(12); BEGIN v_order_count := 0; v_amount_sum := 0; v_count := 0; v_bestand := SUBSTR(p_applname, 1, 12); -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; DELETE aaxx_exp_uren WHERE COALESCE(administratie, 'GEEN') = COALESCE(p_kpnprefix, 'GEEN'); -- header aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); FOR rec IN c LOOP BEGIN aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Date', TO_CHAR(rec.mld_opdr_uren_datum, 'yyyy-mm-dd') ); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Quantity', TO_CHAR(rec.mld_opdr_uren_besteed) ); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Debit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) ) ); aaxx_add_xml_element (v_bestand, 'Credit', '0'); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') ); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); IF COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) IS NULL THEN fac.writelog (p_applname, 'W', 'Geen uurtarief voor persoon nr ' || rec.aafm_perslid_nr, ''); END IF; v_amount_sum := v_amount_sum + rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, COALESCE(rec.uurtarief_perslid, 0)); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam); --aaxx_add_xml_row (v_bestand, ''); IF (SUBSTR (rec.rek_courant, 1, 1) = '2' OR aaxx_get_user = 'SABIC') -- Begint met '2'! THEN aaxx_add_xml_row (v_bestand, ''); ELSE aaxx_add_xml_row (v_bestand, ''); END IF; aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Quantity', '-'||TO_CHAR(rec.mld_opdr_uren_besteed) ); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'Debit', '0'); aaxx_add_xml_element (v_bestand, 'Credit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid)) ); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_element (v_bestand, 'DocumentDate', SYSDATE); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); END; INSERT INTO aaxx_exp_uren (mld_opdr_uren_key, administratie) VALUES (rec.mld_opdr_uren_key, p_kpnprefix); v_order_count := v_order_count + 1; END LOOP; aaxx_add_xml_row (v_bestand, ''); aaxx_add_xml_row (v_bestand, ''); fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, ''); END; / -- AAIT#22483: kenmerken van urenopdrachten vullen vanuit personeelsgegevens, -- t.b.v. DWH-views CREATE OR REPLACE PROCEDURE aaxx_select_dwh_set_kenmerken ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_aanduiding VARCHAR2 (100); CURSOR c_flex IS SELECT 'PR'||o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, o.mld_opdr_key, kpo.mld_kenmerkopdr_waarde projectkpn_opdr, kpp.prs_kenmerklink_waarde projectkpn_perslid, ut.mld_kenmerkopdr_waarde uurtarief_opdr, DECODE (UPPER(tp.fac_usrdata_omschr), 'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde), ap.prs_perslid_uurloon) uurtarief_perslid FROM mld_opdr o, prs_v_aanwezigperslid ap, (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr) (SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid) (SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht) (SELECT mld_opdr_key, fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkopdr ko WHERE ud.fac_usrtab_key = 14 AND ko.mld_kenmerk_key = 186 AND ud.fac_usrdata_key = fac.safe_To_Number(ko.mld_kenmerkopdr_waarde) ) tp, -- type project (SELECT prs_link_key prs_perslid_key, prs_kenmerklink_waarde FROM prs_kenmerklink WHERE prs_kenmerk_key = 6) uti -- uurtarief intern (perslid) WHERE o.mld_typeopdr_key = 7 -- (Project) uren AND kpo.mld_opdr_key(+) = o.mld_opdr_key AND ut.mld_opdr_key(+) = o.mld_opdr_key AND tp.mld_opdr_key(+) = o.mld_opdr_key AND kpp.prs_link_key = o.mld_uitvoerende_keys AND ap.prs_perslid_key = o.mld_uitvoerende_keys AND ap.prs_perslid_key = uti.prs_perslid_key(+); BEGIN -- Project-KPN en uurtarief vastleggen FOR rec IN c_flex LOOP BEGIN v_aanduiding := rec.opdrachtnr; IF (rec.projectkpn_opdr IS NULL) THEN IF (rec.projectkpn_perslid IS NULL) THEN fac.writelog (p_applname, 'W', v_aanduiding||': Geen project-KPN bekend!', ''); ELSE aaxx_set_kenmerk('MLD', 189, rec.mld_opdr_key, rec.projectkpn_perslid, 0); END IF; END IF; IF (rec.uurtarief_opdr IS NULL) THEN IF(rec.uurtarief_perslid IS NULL) THEN fac.writelog (p_applname, 'W', v_aanduiding||': Geen uurtarief bekend!', ''); ELSE aaxx_set_kenmerk('MLD', 188, rec.mld_opdr_key, rec.uurtarief_perslid, 0); END IF; END IF; 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', v_aanduiding || ': ' || v_errormsg, ''); END; END LOOP; END aaxx_select_dwh_set_kenmerken; / -- Geëxporteerde uren op Verwerkt zetten en uurtarief + kostenplaats vastleggen bij -- opdracht (kopiëren van perslid). -- AAIT#26399: Naast het op Verwerkt zetten van de kostenboekingen tevens voor -- AAIT#35694: ALLEEN de uren op '5130976', '5101200', '4130976', '4370901', '4370904', '0100024' en '4130990') de tegenboeking aanmaken/opslaan! ---- Onder INLO#75512 is dit aangevuld met 5130996 (keuzeoptie 'implementatie') ---- Let op: Als er voor een nieuw project-rekeningnr een dekking/tegenboeking aangemaakt moet worden in aaxx_exp_uren_dekking dan moet ---- dit bij de maandelijkse verwerking in AAIT aangevuld worden op de zogenaamde coveringcode (zie aait_select_uren_dekking_xml) CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact_uren ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2, p_kpnprefix IN VARCHAR2 ) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_count NUMBER; v_logdate DATE; BEGIN v_logdate := SYSDATE; -- Goedgekeurde en geëxporteerde urenregistraties op verwerkt zetten. -- Status 4 = Verwerkt UPDATE mld_opdr_uren SET mld_opdr_uren_status = 4 WHERE mld_opdr_uren_key IN (SELECT mld_opdr_uren_key FROM aaxx_exp_uren WHERE COALESCE (administratie, 'GEEN') = COALESCE (p_kpnprefix, 'GEEN')); -- Goedgekeurde improductieve uren op verwerkt zetten. -- Status 3 = Goedgekeurd -- Status 4 = Verwerkt UPDATE mld_opdr_uren SET mld_opdr_uren_status = 4 WHERE mld_impropdr_key IS NOT NULL AND mld_opdr_uren_status = 3; COMMIT; -- AAIT#26399: Van de hierboven verwerkte/geexporteerde uren wordt voor de -- regels op gedefinieerde projecten (hardgecodeerd!) tot slot -- nog een dekkingsregel aangemaakt. -- Het leverende account wordt bepaald door het gedeelte achter -- de slash ('/') in de 'Rek. Courant'-eigen tabel! INSERT INTO aaxx_exp_uren_dekking (aanmaak, mld_opdr_uren_key, mld_opdr_uren_datum, projecttype, rek_courant, kostenplaats, perslid_nr, projectcode, projectnaam, uren_besteed, uurtarief, lev_account) SELECT SYSDATE, ug.mld_opdr_uren_key, ug.mld_opdr_uren_datum, SUBSTR (ug.projecttype_code, 1, 10), SUBSTR (ug.rek_courant, 1, 10), SUBSTR (COALESCE (ug.projectkpn_opdr, ug.projectkpn_perslid), 1 , 30), SUBSTR (ug.aafm_perslid_nr, 1, 30), SUBSTR (ug.meldingnr, 1, 20), SUBSTR (ug.projectnaam, 1, 30), ug.mld_opdr_uren_besteed, COALESCE (ug.uurtarief_opdr, ug.uurtarief_perslid), COALESCE ( SUBSTR ( TRIM(SUBSTR (ud.fac_usrdata_omschr, INSTR (ud.fac_usrdata_omschr, '/') + 1)), 1, 30 ), 'XXX' ) FROM aaxx_exp_uren u, aaxx_v_exact_uren_gegevens ug, fac_usrdata ud WHERE COALESCE (u.administratie, 'GEEN') = COALESCE (p_kpnprefix, 'GEEN') AND u.mld_opdr_uren_key = ug.mld_opdr_uren_key AND ug.projecttype_code IN ('5130976', '5101200', '4130976', '4370901', '4370904', '0100024', '4130990', '5130996') AND TRIM (ug.rek_courant) = TRIM (ud.fac_usrdata_code) AND ud.fac_usrtab_key = 15 -- Rek. Courant-tabel AND SUBSTR (ud.fac_usrdata_code, 1, 1) = '2' -- Begint met '2'! AND ud.fac_usrdata_verwijder IS NULL AND NOT EXISTS (SELECT 1 FROM aaxx_exp_uren_dekking WHERE mld_opdr_uren_key = ug.mld_opdr_uren_key); 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 ('UREN', 'E', v_errormsg, ''); END; / --============================================================================= -- EXPORTFUNCTIES BUNDEL_CATERING ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_export_bundel_catering ( result, result_order ) AS SELECT REPLACE(REPLACE('RES' || ';' || SYSDATE || ';' || SUBSTR (prs_kostenplaats_nr, 1, 30) || ';' || SUBSTR (prs_kostenplaats_omschrijving, 1, 60) || ';' || SUBSTR (prs_kostensoort_oms, 1, 60) || ';' || rra.res_rsv_artikel_aantal || ' * ' || ra.res_artikel_omschrijving || ';' || to_char(rra.res_rsv_artikel_prijs) || ';' || to_char(ra.res_artikel_inkoopprijs) || ';' || rra.res_rsv_artikel_key ,CHR (13), ''), CHR (10), ''), res_rsv_artikel_key FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra, ins_tab_discipline d, prs_kostensoort ks, prs_kostenplaats k WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_verwijder IS NULL AND rra.res_status_bo_key = 5 AND rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = d.ins_discipline_key AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key AND NVL (rra.res_rsv_artikel_levering, TO_DATE ('20070101', 'yyyymmdd') ) < TO_DATE ( TO_CHAR (SYSDATE, 'yyyy') || TO_CHAR (SYSDATE, 'mm') || '01', 'yyyymmdd' ); -- Procedure om alle geexporteerde facturen naar status verwerkt te zetten. CREATE OR REPLACE PROCEDURE aaxx_export_bundel_catering ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS c_catmld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D'); v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_laatste_export DATE; v_mld_melding_key NUMBER; v_prs_bedrijf_key NUMBER; v_prs_kostenplaats_key NUMBER; v_mld_opdr_bedrijfopdr_volgnr NUMBER; v_aanvrager NUMBER; v_mld_workorder_key NUMBER; BEGIN -- Volgens mij (AEG) wordt deze niet meer gebruikt. -- JM: Klopt. In geval BUNDEL_CATERING wordt dit opgezet in de CUST (zie AASA en INLO bijv.) COMMIT; END; / --============================================================================= -- EXPORTFUNCTIES BUDGET TRACKER ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_export_budget_tracker (result, result_order) AS SELECT '"nummer";' || '"datum";' || '"status";' || '"laatste_actie";' || '"vakgroeptype";' || '"vakgroep";' || '"kostensoort_code";' || '"kostensoort_omschrijving";' || '"financiele_waarde";' || '"kostensoortgroep_omschrijving";' || '"melding";' || '"omschrijving";' || '"organisatie";' || '"naam";' || '"kostenplaats";' || '"kostenplaats_omschrijving";' || '"plaats";' || '"locatie";' || '"gebouw";' || '"code_exact";' || '"opdracht_status";' || '"uitvoerende";' || '"contactpersoon";' || '"uren";' || '"uurloon";' || '"materiaal";' || '"kosten";' || '"gefactureerd"', 0 FROM dual UNION ALL SELECT REPLACE(REPLACE( '"' || nummer || '";"' || datum || '";"' || status || '";"' || laatste_actie || '";"' || vakgroeptype || '";"' || vakgroep || '";"' || kostensoort_code || '";"' || kostensoort_omschrijving || '";"' || financiele_waarde || '";"' || kostensoortgroep_omschrijving || '";"' || melding || '";"' || aaxx_exp_escape (omschrijving) || '";"' || organisatie || '";"' || naam || '";"' || kostenplaats || '";"' || kostenplaats_omschrijving || '";"' || plaats || '";"' || locatie || '";"' || gebouw || '";"' || code_exact || '";"' || opdracht_status || '";"' || uitvoerende || '";"' || contactpersoon || '";"' || uren || '";"' || uurloon || '";"' || materiaal || '";"' || kosten || '";"' || gefactureerd || '"',CHR (13), ''), CHR (10), ''), 1 FROM (SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer, TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY HH24:MI') datum, (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr s WHERE o.mld_statusopdr_key = s.mld_statusopdr_key) status, TO_CHAR (mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key) , 'DD-MM-YYYY HH24:MI' ) laatste_actie, sd.ins_srtdiscipline_prefix vakgroeptype, md.ins_discipline_omschrijving vakgroep, COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms) kostensoort_code, COALESCE (kstd.prs_kostensoort_opmerking, kvg.prs_kostensoort_opmerking ) kostensoort_omschrijving, COALESCE (kstd.prs_kostensoort_refcode, kvg.prs_kostensoort_refcode ) financiele_waarde, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = COALESCE (kstd.prs_kostensoortgrp_key, kvg.prs_kostensoortgrp_key)) kostensoortgroep_omschrijving, std.mld_stdmelding_omschrijving melding, TO_CHAR(SUBSTR (REPLACE (mld_melding_omschrijving, CHR (13) || CHR (10), '' ), 1, 2000) ) omschrijving, (SELECT d.prs_afdeling_naam FROM prs_v_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key) organisatie, p.prs_perslid_naam || DECODE (NVL (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (NVL (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') naam, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kostenplaats, (SELECT k.prs_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kostenplaats_omschrijving, (SELECT alg_locatie_code FROM alg_locatie l WHERE m.mld_alg_locatie_key = l.alg_locatie_key) || (SELECT CASE COALESCE(G.alg_gebouw_code, '') WHEN '' THEN '' ELSE '-' || G.alg_gebouw_code END || CASE COALESCE(G.alg_verdieping_code, '') WHEN '' THEN '' ELSE '-' || G.alg_verdieping_code END || CASE COALESCE(G.alg_ruimte_nr, '') WHEN '' THEN '' ELSE '-' || G.alg_ruimte_nr END FROM alg_v_allonrgoed_gegevens g WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys) plaats, alg_locatie_code locatie, alg_gebouw_code gebouw, COALESCE ((SELECT exact_code FROM aaxx_v_exact_code_gebouw ogk WHERE ogk.alg_gebouw_key = v.alg_gebouw_key) , v.alg_gebouw_code) code_exact, (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr so WHERE o.mld_statusopdr_key = so.mld_statusopdr_key) opdracht_status, COALESCE ( (SELECT prs_bedrijf_naam FROM prs_bedrijf b WHERE o.mld_uitvoerende_keys = prs_bedrijf_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE o.mld_uitvoerende_keys = prs_perslid_key) ) uitvoerende, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE o.prs_perslid_key = pf.prs_perslid_key) contactpersoon, replace(to_char (o.mld_opdr_uren, '999999990.99'), '.', ',') uren, replace(to_char (o.mld_opdr_uurloon, '999999990.99'), '.', ',') uurloon, replace(to_char (o.mld_opdr_materiaal, '999999990.99'), '.', ',') materiaal, replace(to_char (o.mld_opdr_kosten, '999999990.99'), '.', ',') kosten, COALESCE ( (SELECT trim(to_char (SUM (f.fin_factuur_totaal), '999999990.99')) FROM aaxx_v_aanwezigfactuur f WHERE f.mld_opdr_key = o.mld_opdr_key), '0' ) gefactureerd FROM mld_melding m, mld_discipline md, ins_srtdiscipline sd, alg_v_allonrgoed_gegevens v, alg_locatie l, alg_district di, prs_perslid p, mld_opdr o, mld_stdmelding std, prs_kostensoort kstd, prs_kostensoort kvg WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = di.alg_district_key(+) AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+) AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = md.ins_discipline_key AND m.mld_melding_key = o.mld_melding_key AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+) AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+) UNION ALL SELECT cnt_contract_nummer_intern, TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY HH24:MI') datum, DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE), 1, 'Toekomst', -1, DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE), 1, 'Actueel', -1, 'Verlopen' ) ) status, TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY HH24:MI') laatste_actie, 'Contract' vakgroeptype, d.ins_discipline_omschrijving vakgroep, k.prs_kostensoort_oms kostensoort_code, k.prs_kostensoort_opmerking kostensoort_omschrijving, k.prs_kostensoort_refcode financiele_waarde, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key) kostensoortgroep_omschrijving, c.cnt_contract_omschrijving melding, SUBSTR (REPLACE (cnt_contract_document, CHR (13) || CHR (10), ''), 1, 2000 ) omschrijving, prs_afdeling_naam organisatie, p.prs_perslid_naam || DECODE (NVL (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (NVL (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') naam, kp.prs_kostenplaats_nr kostenplaats, kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving, alg_locatie_code || '-' || alg_gebouw_code plaats, alg_locatie_code locatie, alg_gebouw_code gebouw, COALESCE ((SELECT exact_code FROM aaxx_v_exact_code_gebouw ogk WHERE ogk.alg_gebouw_key = g.alg_gebouw_key) , g.alg_gebouw_code) code_exact, '-' opdracht_status, prs_bedrijf_naam uitvoerende, '-' contactpersoon, '0' uren, '0' uurloon, '0' materiaal, COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten), '999999990.99')) , '0' ) kosten, COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * (SELECT SUM(fin_factuur_totaal) FROM aaxx_v_aanwezigfactuur f WHERE f.cnt_contract_key = c.cnt_contract_key )), '999999990.99')) , '0' ) gefactureerd FROM cnt_contract c, cnt_discipline d, cnt_contract_plaats cp, prs_bedrijf b, prs_kostensoort k, prs_kostenplaats kp, prs_afdeling a, prs_perslid p, alg_locatie l, alg_gebouw g, prs_contactpersoon cop, (SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.prs_perslid_key_beh = p.prs_perslid_key AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+) AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND cnt_contract_verwijder IS NULL ); --============================================================================= -- EXPORTFUNCTIES MJB ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_mjb_assets AS SELECT ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_code, sd.ins_srtdeel_omschrijving, d.ins_deel_omschrijving, d.ins_deel_opmerking, l.alg_locatie_code, d.alg_gebouw_upper, d.alg_verdieping_code, d.alg_ruimte_nr, d.ins_deel_aantal, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Plaats' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) plaats, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Bouwjaar' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) bouwjaar, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Capaciteit' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) capaciteit, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Datum laatste asset survey' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) laatste_survey, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Fabricaat' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) fabricaat, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Gewenste Conditie' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) gewenste_conditie, id.ins_deel_mjb_score1 huidige_conditie, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Kritische asset' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) kritische_asset, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Referentienummer leverancier' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) referentie_leverancier, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Type' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) type_asset, aaxx_get_kenmerk ( 'INS', (SELECT ins_kenmerk_key FROM ins_kenmerk k, ins_srtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Eenheid' AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key AND k.ins_kenmerk_verwijder IS NULL AND sk.ins_srtkenmerk_verwijder IS NULL), d.ins_deel_key) eenheid, COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum) vervaldatum, g.alg_gebouw_vervaldatum vervaldatum_gebouw, d.ins_deel_vervaldatum vervaldatum_object, d.ins_deel_key FROM ins_v_deel_gegevens d, ins_srtdeel sd, alg_locatie l, alg_gebouw g, ins_deel id WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND d.ins_deel_key = id.ins_deel_key AND id.ins_deel_verwijder IS NULL AND UPPER(d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN'; -- Basislijst voor Assetmanagement - Start opstellen nieuwe begroting mjob + als checklist bij upload mjob-excel naar facilitor CREATE OR REPLACE VIEW AAXX_V_MJB_TAKEN ( INS_SRTCONTROLE_KEY, INS_DEEL_KEY, OBJECTIDENTIFICATIE, OMSCHRIJVING, CATEGORIE, TAAKOMSCHRIJVING, GROEP, PRIORITEIT, PERCENTAGE, TAAKOPMERKING_X, KOSTEN_MATERIAAL, DIENST, BEDRIJF, PERIODE_EENHEID, PERIODE_FREQUENCY, CYCLUS_STARTDATUM, TAAK_KERENGERUND, STATUS_LAATST_GERUNDE_TAAK, INS_DEELSRTCONTROLE_KEY, PLANDATUM, MJOB_DOORGESCHOVEN, GEPLAND_OP, GEPLAND_DOOR, INBEHANDELING, INBEHANDELING_DOOR, BEHANDELAAR_OPTAAK, GEREEDDATUM, ACTIE_VEREIST, TAAKAFHANDELING, AFGEMELD, AFGEMELD_DOOR, VERWERKT, VERWERKT_DOOR, UITVOERDATUM_ORIGINEEL, TELAAT, FREEZE_JAAR, KOSTEN_MATERIAAL_FREEZE, OPMERKING, FILTERDATUM_GEREED, CYLCUS_VOLGENDE_DATUM, CYCLUS_EINDDATUM, EINDATUM_GEBOUW, EINDDATUM_OBJECT, EINDDATUM_OBJECTTAAK, EINDDATUM_BASISTAAK, FILTER_VERVALLEN, LOCATIE, GEBOUW, MJOB ) AS SELECT x.ins_srtcontrole_key, x.ins_deel_key, d.ins_deel_omschrijving objectidentificatie, d.ins_deel_opmerking omschrijving, di.ins_discipline_omschrijving categorie, sc.ins_srtcontrole_omschrijving taakomschrijving, COALESCE (ins_srtcontroledl_xcp_groep, sc.ins_srtcontrole_groep) groep, sc.ins_srtcontrole_level prioriteit, COALESCE(ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) percentage, x.ins_srtcontroledl_xcp_opmerk taakopmerking_X, COALESCE (ins_srtcontroledl_xcp_materia, sc.ins_srtcontrole_materiaal) kosten_materiaal, prs_dienst_omschrijving Dienst, (SELECT LISTAGG (b.prs_bedrijf_naam, ',') WITHIN GROUP (ORDER BY b.prs_bedrijf_naam) AS bedrijf FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl WHERE pd.prs_dienst_key = bdl.prs_dienst_key AND bdl.prs_bedrijf_key = b.prs_bedrijf_key AND ( bdl.alg_gebouw_key = d.alg_gebouw_key OR bdl.alg_locatie_key = d.alg_locatie_key)) Bedrijf, DECODE (COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), 4, 'J', 3, 'M', 2, 'W', 1, 'D') periode_eenheid, COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) periode_frequency, ins_srtcontroledl_xcp_startdat AS cyclus_startdatum, (SELECT COUNT (dc.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc WHERE dc.ins_deel_key = d.ins_deel_key AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key) taak_kerengerund, v.status_laatst_gerunde_taak, v.ins_deelsrtcontrole_key, v.plandatum, CASE WHEN v.mjob_doorgeschoven IS NOT NULL THEN TO_CHAR(v.ins_deelsrtcontrole_freezedate,'yyyy') ELSE NULL END mjob_doorgeschoven, v.gepland_op, v.gepland_door, v.inbehandeling, v.inbehandeling_door, v.behandelaar_optaak, v.gereeddatum, v.actie_vereist, v.taakafhandeling, v.afgemeld, v.afgemeld_door, v.verwerkt, v.verwerkt_door, v.uitvoerdatum_origineel, v.telaat, v.jaar_freeze, v.kosten_materiaal_freeze, v.opmerking, v.filterdatum_gereed, CASE WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak = 'Voltooid' AND v.ins_controlemode_success = 0 THEN TO_DATE('01-01-' || v.freeze_year_facilitor, 'DD-MM-YYYY') WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak = 'Ingepland' THEN fac.nextcyclusdate (v.plandatum, -- datum COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- intervalmode = 1 COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- eenheid jaar = 4 COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode), -- p_periode COALESCE(ins_srtcontroledl_xcp_bits, sc.ins_srtcontrole_bits), -- x.ins_srtcontrole_bits, 1, -- step = 1 1) -- mjob = 1 WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak IN ('In behandeling', 'Ter uitvoering') THEN fac.nextcyclusdate (v.ins_deelsrtcontrole_freezedate, -- datum COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- intervalmode = 1 COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- eenheid jaar = 4 COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode), -- p_periode COALESCE(ins_srtcontroledl_xcp_bits, sc.ins_srtcontrole_bits), -- x.ins_srtcontrole_bits, 1, -- step = 1 1) -- mjob = 1 ELSE fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1) END cylcus_volgende_datum, COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum, x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind) AS cyclus_einddatum, g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum, x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind, CASE WHEN g.alg_gebouw_vervaldatum IS NULL AND d.ins_deel_vervaldatum IS NULL AND x.ins_srtcontroledl_xcp_eind IS NULL AND sc.ins_srtcontrole_eind IS NULL THEN 'actueel' WHEN COALESCE(g.alg_gebouw_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE) OR COALESCE(d.ins_deel_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE) OR COALESCE(x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE) THEN 'vervallen - verleden' WHEN COALESCE(g.alg_gebouw_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE) AND COALESCE(d.ins_deel_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE) AND COALESCE(x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE) THEN 'vervallen - toekomst' ELSE 'nog bepalen' END filter_vervallen, l.alg_locatie_omschrijving, g.alg_gebouw_code||'-'||g.alg_gebouw_naam, dip.ctr_disc_params_ismjob FROM ins_srtcontrole sc, ins_srtcontroledl_xcp x, ins_v_deel_gegevens d, alg_locatie l, alg_gebouw g, ins_tab_discipline di, ctr_disc_params dip, prs_dienst pd, ( SELECT dc.ins_deelsrtcontrole_key, dc.ins_deel_key, dc.ins_srtcontrole_key, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 3, 'Ter uitvoering', 5, 'Afgemeld', 6, 'Voltooid') status_laatst_gerunde_taak, dc.ins_deelsrtcontrole_plandatum plandatum, '' gepland_op, '' gepland_door, (SELECT MAX (fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCBE' AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) inbehandeling, (SELECT MAX (p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam) FROM fac_srtnotificatie sn, fac_tracking ft, prs_perslid p WHERE ft.prs_perslid_key = p.prs_perslid_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCBE' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) inbehandeling_door, (SELECT p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam FROM prs_perslid p WHERE prs_perslid_key = dc.prs_perslid_key) behandelaar_optaak, dc.ins_deelsrtcontrole_datum gereeddatum, CASE WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'Ja' WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'Nee' ELSE '' END actie_vereist, CASE WHEN cm.ins_controlemode_success = 1 THEN ins_controlemode_oms || ' - Succes' WHEN cm.ins_controlemode_success = 0 THEN ins_controlemode_oms || ' - Geen succes' ELSE NULL END taakafhandeling, cm.ins_controlemode_success, fac.getsetting('mjb_freeze_year') freeze_year_facilitor, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCAF' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) afgemeld, (SELECT MAX (p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam) FROM fac_srtnotificatie sn, fac_tracking ft, prs_perslid p WHERE ft.prs_perslid_key = p.prs_perslid_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCAF' AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) afgemeld_door, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCVE' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) verwerkt, (SELECT MAX (p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam) FROM fac_srtnotificatie sn, fac_tracking ft, prs_perslid p WHERE ft.prs_perslid_key = p.prs_perslid_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCVE' AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) verwerkt_door, dc.ins_deelsrtcontrole_datum_org uitvoerdatum_origineel, CASE WHEN dc.ins_deelsrtcontrole_status in (5,6) AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Ja' WHEN dc.ins_deelsrtcontrole_status in (5,6) AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Nee' ELSE '' END telaat, TO_CHAR(dc.ins_deelsrtcontrole_freezedate, 'yyyy') jaar_freeze, dc.ins_deelsrtcontrole_freezecost kosten_materiaal_freeze, dc.ins_deelsrtcontrole_opmerking opmerking, CASE WHEN dc.ins_deelsrtcontrole_status = 5 THEN (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCAF' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) WHEN dc.ins_deelsrtcontrole_status = 6 THEN (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCVE' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) ELSE NULL END filterdatum_gereed, (SELECT max(ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCUP' AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0 AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) mjob_doorgeschoven, dc.ins_deelsrtcontrole_freezedate FROM ins_deelsrtcontrole dc, ins_controlemode cm WHERE dc.ins_deelsrtcontrole_key = (SELECT MAX (dc2.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key) AND dc.ins_controlemode_key = cm.ins_controlemode_key(+) ORDER BY dc.ins_deel_key, dc.ins_srtcontrole_key) v WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key AND x.ins_deel_key = d.ins_deel_key AND sc.ctr_discipline_key = di.ins_discipline_key AND di.ins_discipline_key = dip.ctr_ins_discipline_key AND sc.prs_dienst_key = pd.prs_dienst_key(+) AND UPPER (d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN' AND x.ins_deel_key = v.ins_deel_key(+) AND x.ins_srtcontrole_key = v.ins_srtcontrole_key(+) AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND sc.ins_srtcontrole_key IN (SELECT i.ins_srtcontrole_key FROM ins_v_defined_inspect i WHERE i.ins_deel_key = d.ins_deel_key) ORDER BY d.ins_deel_omschrijving ; -- AAGN#76391 - MJOB-taken en controle op de gekoppelde M-meldingen CREATE OR REPLACE VIEW AAXX_V_MJB_TAKEN_MLD ( INS_DEEL_KEY, OBJECTIDENTIFICATIE, OMSCHRIJVING, CATEGORIE, TAAKOMSCHRIJVING, DIENST, BEDRIJF, FREEZE_JAAR, STATUS_LAATST_GERUNDE_TAAK, INS_DEELSRTCONTROLE_KEY, KOSTEN_MATERIAAL_FREEZE, LOCATIE, GEBOUW, MJOB, MLD_MELDING_KEY, MLD_MELDING_NR, MLD_HOOFDMELDING_NR, MELDING_SORT, MLD_MELDING_BEHANDELAAR, MLD_MELDING_STATUS, MARKERING_STATUS -- AANTAL OFFERTES + STATUS -- AANTAL OPDRACHTEN + STATUS -- KOSTEN OPDRACHTEN ) AS SELECT v.ins_deel_key, v.objectidentificatie, v.omschrijving, v.categorie, v.taakomschrijving, v.dienst, v.bedrijf, v.freeze_jaar, v.status_laatst_gerunde_taak, v.ins_deelsrtcontrole_key, v.kosten_materiaal_freeze, v.locatie, v.gebouw, v.mjob, m.mld_melding_key, m.mld_melding_nr, m.mld_hoofdmelding_nr, m.melding_sort, m.behandelaar, m.status, m.markering_status FROM aaxx_v_mjb_taken v, (SELECT mo.ins_deelsrtcontrole_key, m.mld_melding_key, v.mld_statuses_omschrijving status, sd.ins_srtdiscipline_prefix || TO_CHAR(m.mld_melding_key) mld_melding_nr, COALESCE (TO_CHAR(m.mld_melding_mldgroup_key), '-') mld_hoofdmelding_nr, COALESCE(m.mld_melding_mldgroup_key, m.mld_melding_key) melding_sort, m.mld_melding_datum, m.mld_melding_einddatum, p.prs_perslid_naam_full behandelaar, (CASE WHEN m.mld_melding_flag>0 THEN Lcl.L('lcl_mld_flag' || m.mld_melding_flag) ELSE '' END) markering_status FROM mld_melding m, mld_melding_object mo, alg_locatie l,mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, mld_statuses v, prs_v_perslid_fullnames p WHERE m.mld_melding_status = v.mld_statuses_key AND m.mld_melding_key = mo.mld_melding_key AND 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 m.mld_melding_behandelaar_key = p.prs_perslid_key(+) ) m WHERE v.mjob = 1 AND v.ins_deelsrtcontrole_key = m.ins_deelsrtcontrole_key ORDER BY m.melding_sort DESC ; CREATE OR REPLACE VIEW aaxx_v_mjb_gebreken AS SELECT d.ins_deel_omschrijving objectomschrijving, sd.ins_srtdeel_omschrijving objectsoortomschrijving, mld_melding_datum datum, disc.ins_discipline_omschrijving vakgroep, sm.mld_stdmelding_omschrijving stdmeldingomschrijving, (SELECT DECODE(substr(ud.fac_usrdata_code,1,1), 'G', 1, 'S', 2, 'E', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ERNST'))) ernst, (SELECT SUBSTR(ud.fac_usrdata_code,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'INTENSITEIT'))) intensiteit, (SELECT SUBSTR(ud.fac_usrdata_volgnr,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'OMVANG'))) omvang, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT1'))) aspectwaardeVG, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT2'))) aspectwaardeCH, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT3'))) aspectwaardeGB, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT4'))) aspectwaardeTV, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT5'))) aspectwaardeTK, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT6'))) aspectwaardeBE, (SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT7'))) aspectwaardeEN, mld_melding_omschrijving opmerking, aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'CONDITIESCORE') cond, aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'PRIORITEITSCORE') prio, p.prs_perslid_email inspecteur, aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'FOTONAAM') fotonaam, fac.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'KOSTEN')) kosten, NULL vervaldatum, m.mld_melding_einddatum datum_gepland, (select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Dienst') dienst, (select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Taakgroep') taakgroep, aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'GEADVISEERDSTARTJAAR') geadviseerd_startjaar, aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'DATUMGEREEDINSPECTEUR') datum_gereed_inspecteur, m.mld_melding_key, s.mld_statuses_omschrijving status, p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')' aanvrager, CASE WHEN m.mld_melding_behandelaar_key IS NOT NULL THEN bh.prs_perslid_naam || ' (' || bh.prs_perslid_voornaam || ')' ELSE '' END behandelaar FROM mld_melding m, mld_stdmelding sm, mld_discipline disc, mld_melding_object mo, ins_deel d, ins_srtdeel sd, prs_perslid p, mld_statuses s, prs_perslid bh WHERE disc.ins_srtdiscipline_key = FAC.getSetting('cnd_gebreken_srtdisc_key') AND sm.mld_stdmelding_code <> 'GEEN' AND disc.ins_discipline_verwijder IS NULL AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sm.mld_ins_discipline_key = disc.ins_discipline_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND mo.mld_melding_key = m.mld_melding_key AND mo.mld_melding_object_verwijder IS NULL AND d.ins_deel_key = mo.ins_deel_key AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_melding_behandelaar_key = bh.prs_perslid_key (+) AND m.mld_melding_key >= COALESCE ( (SELECT MAX (gg.mld_melding_key) FROM (SELECT gg2.ins_deel_key, gg2.mld_melding_key, m.mld_melding_status FROM (SELECT d.ins_deel_key, MAX (m.mld_melding_key) mld_melding_key FROM mld_melding m, mld_melding_object mo, ins_deel d, mld_stdmelding std WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_stdmelding_code = 'GEEN' AND mo.mld_melding_key = m.mld_melding_key AND mo.mld_melding_object_verwijder IS NULL AND d.ins_deel_key = mo.ins_deel_key GROUP BY d.ins_deel_key) gg2, mld_melding m WHERE m.mld_melding_key = gg2.mld_melding_key) gg WHERE gg.ins_deel_key = d.ins_deel_key), m.mld_melding_key) AND m.mld_melding_status = s.mld_statuses_key AND m.mld_melding_status in (0,2,3,4,7,99) -- Alleen lopende zaken ; CREATE OR REPLACE VIEW AAXX_V_MJB_PRIJSLIJST ( INS_DEEL_KEY, OBJECTIDENTIFICATIE, INS_DEEL_AANTAL, EENHEID, OMSCHRIJVING, FABRICAAT, TYPE_ASSET, CAPACITEIT, BOUWJAAR, PLAATS, CATEGORIE, TAAKOMSCHRIJVING, GROEP, PRIORITEIT, PERCENTAGE, TAAKOPMERKING_X, DIENST, BEDRIJF, PERIODE_EENHEID, PERIODE_FREQUENCY, CYCLUS_STARTDATUM, CYLCUS_VOLGENDE_DATUM, LOCATIE, KOSTEN_PERUITVOER, KOSTEN_PERJAAR ) AS SELECT v1.ins_deel_key, v1.objectidentificatie, v2.ins_deel_aantal, v2.eenheid, v1.omschrijving, v2.fabricaat, v2.type_asset, v2.capaciteit, v2.bouwjaar, v2.plaats, v1.categorie, v1.taakomschrijving, v1.groep, v1.prioriteit, v1.percentage, v1.taakopmerking_x, v1.dienst, v1.bedrijf, v1.periode_eenheid, v1.periode_frequency, v1.cyclus_startdatum, v1.cylcus_volgende_datum, v1.locatie, v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) kosten_peruitvoer, CASE WHEN v1.periode_eenheid = 'J' THEN (1 / v1.periode_frequency) * v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) WHEN v1.periode_eenheid = 'M' THEN (12 / v1.periode_frequency) * v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) WHEN v1.periode_eenheid = 'W' THEN (52 / v1.periode_frequency) * v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) WHEN v1.periode_eenheid = 'D' THEN (365 / v1.periode_frequency) * v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) ELSE v1.kosten_materiaal * v2.ins_deel_aantal * (COALESCE (v1.percentage, 100) / 100) END kosten_perjaar FROM aaxx_v_mjb_taken v1, aaxx_v_mjb_assets v2 WHERE v1.ins_deel_key = v2.ins_deel_key AND v1.periode_frequency > 0 -- we sluiten (xcp-)taken uit indien deze niet aan objecten zijn gekoppeld AND (v2.vervaldatum IS NULL OR TRUNC(SYSDATE) < TRUNC(v2.vervaldatum) ) ; -- Ten behoeve van Assetteam - Voor aantal klanten zijn het de externe inspecteurs die de gebreken op de installaties direct in Facilitor loggen ---- Zie ticket 70981 + AAGN#71470 ---- Met deze rapportage-view kan Team Assetmanagement de mutaties (op objecten en gebreken) monitoren en hetzelfde rapport wordt gebruikt door de externe inspecteurs zelf om te kunnen zien wat er aan werk gedaan is CREATE OR REPLACE VIEW aaxx_v_ins_objectmutaties_insp ( ins_deel_key, identificatie, beschrijving, discipline_omschrijving, groep_omschrijving, objectsoort_omschrijving, objectsoort_code, registratiedatum, vervaldatum, koppel_type, plaats_ruimte, regio, district, locatie, gebouw, actief, hoeveelheid, conditie, prioriteit, soort, prs_perslid_key, inspecteur, datum, mutatie, mld_melding_key, html_melding, html_object ) AS SELECT d.ins_deel_key, ins_deel_omschrijving, ins_deel_opmerking, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_srtdeel_code, ins_deel_aanmaak, ins_deel_vervaldatum, DECODE (o.alg_onroerendgoed_type, 'R', 'Ruimte', 'T', 'Terrein', 'W', 'Werkplek') type_koppeling, o.alg_plaatsaanduiding || ' (' || DECODE ( o.alg_onroerendgoed_type, 'R', (SELECT r.alg_ruimte_omschrijving FROM alg_ruimte r WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key), 'T', (SELECT t.alg_terreinsector_naam FROM alg_terreinsector t WHERE t.alg_terreinsector_key = d.ins_alg_ruimte_key), 'W', (SELECT r.alg_ruimte_omschrijving FROM alg_ruimte r, prs_werkplek w WHERE r.alg_ruimte_key = w.prs_alg_ruimte_key AND w.prs_werkplek_key = d.ins_alg_ruimte_key) ) || ')' plaats, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving, o.alg_gebouw_omschrijving, ins_deel_actief, ins_deel_aantal, ins_deel_mjb_score1, ins_deel_mjb_score2, v.soort, v.prs_perslid_key, v.inspecteur, v.datum, v.mutatie, v.mld_melding_key, CASE WHEN v.mld_melding_key IS NOT NULL THEN '' || 'klik naar N' || v.mld_melding_key || '' ELSE NULL END html_melding, '' || 'klik naar object' || '' html_object FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel srt, ins_v_aanwezigsrtgroep sg, ins_v_aanwezigdiscipline disc, ins_v_alg_overzicht o, alg_locatie l, alg_district di, alg_regio r, (SELECT n.ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, CASE WHEN g.fac_groep_externid = '1000' THEN 'notitie op object' WHEN g.fac_groep_externid = '1001' THEN 'notitie (via QRC)' ELSE 'notitie op object' END soort, n.ins_deel_note_aanmaak datum, n.ins_deel_note_omschrijving mutatie, NULL mld_melding_key FROM ins_deel_note n, prs_perslid p, fac_gebruikersgroep gg, fac_groep g WHERE n.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid IN ('1000','1001') UNION ALL SELECT ft.fac_tracking_refkey ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, 'mutatie op object' soort, ft.fac_tracking_datum datum, ft.fac_tracking_oms mutatie, NULL mld_melding_key FROM fac_tracking ft, fac_srtnotificatie sn, prs_perslid p, fac_gebruikersgroep gg, fac_groep g WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND INSTR (ft.fac_tracking_oms, 'Object gewijzigd') > 0 AND UPPER (sn.fac_srtnotificatie_xmlnode) = 'DEEL' AND UPPER (sn.fac_srtnotificatie_code) = 'INSUPD' AND ft.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = '1000' UNION ALL SELECT ft.fac_tracking_refkey ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, 'mutatie (via QRC)' soort, ft.fac_tracking_datum datum, ft.fac_tracking_oms mutatie, NULL mld_melding_key FROM fac_tracking ft, fac_srtnotificatie sn, prs_perslid p, fac_gebruikersgroep gg, fac_groep g WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key -- AND INSTR (ft.fac_tracking_oms, 'Object gewijzigd') > 0 AND UPPER (sn.fac_srtnotificatie_xmlnode) = 'DEEL' AND UPPER (sn.fac_srtnotificatie_code) = 'INSUPD' AND ft.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = '1001' UNION ALL SELECT mo.ins_deel_key ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, 'gebrek toegevoegd' soort, ft.fac_tracking_datum datum, sm.mld_stdmelding_omschrijving mutatie, m.mld_melding_key FROM fac_tracking ft, fac_srtnotificatie sn, prs_perslid p, fac_gebruikersgroep gg, fac_groep g, mld_melding m, mld_melding_object mo, mld_stdmelding sm, mld_discipline di WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND UPPER (sn.fac_srtnotificatie_xmlnode) = 'MELDING' AND UPPER (sn.fac_srtnotificatie_code) = 'MLDNEW' AND ft.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = '1000' AND ft.fac_tracking_refkey = m.mld_melding_key AND m.mld_melding_key = mo.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = di.ins_discipline_key AND di.ins_srtdiscipline_key = fac.getsetting('cnd_gebreken_srtdisc_key') UNION ALL SELECT mo.ins_deel_key ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, 'gebrek aangepast' soort, ft.fac_tracking_datum datum, ft.fac_tracking_oms mutatie, m.mld_melding_key FROM fac_tracking ft, fac_srtnotificatie sn, prs_perslid p, fac_gebruikersgroep gg, fac_groep g, mld_melding m, mld_melding_object mo, mld_stdmelding sm, mld_discipline di WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND UPPER (sn.fac_srtnotificatie_xmlnode) = 'MELDING' AND UPPER (sn.fac_srtnotificatie_code) = 'MLDUPD' AND INSTR (ft.fac_tracking_oms, 'is gewijzigd') > 0 AND ft.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = '1000' AND ft.fac_tracking_refkey = m.mld_melding_key AND m.mld_melding_key = mo.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = di.ins_discipline_key AND di.ins_srtdiscipline_key = fac.getsetting('cnd_gebreken_srtdisc_key') UNION ALL SELECT mo.ins_deel_key ins_deel_key, p.prs_perslid_key, p.prs_perslid_naam inspecteur, 'gebrek notitie geplaatst' soort, mn.mld_melding_note_aanmaak datum, mn.mld_melding_note_omschrijving mutatie, m.mld_melding_key FROM mld_melding_note mn, prs_perslid p, fac_gebruikersgroep gg, fac_groep g, mld_melding m, mld_melding_object mo, mld_stdmelding sm, mld_discipline di WHERE mn.mld_melding_key = m.mld_melding_key AND mn.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = '1000' AND m.mld_melding_key = mo.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = di.ins_discipline_key AND di.ins_srtdiscipline_key = fac.getsetting('cnd_gebreken_srtdisc_key') ) v WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = srt.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND d.ins_deel_module = 'INS' AND d.ins_deel_parent_key IS NULL AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) IN ('T', 'R', 'W') AND o.alg_onroerendgoed_keys = COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) AND o.alg_onroerendgoed_type = COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) AND o.alg_locatie_key = d.ins_alg_locatie_key AND o.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 d.ins_deel_key = v.ins_deel_key (+) ; -- Rapporten voor EXPORT van bijlagen naar zip-file -- Oorspronkelijk, klantspecifiekopgzet via ticket 64348 voorRabo(-exit) -- Onder ticket 86210 generieke opzet voor alle heyday-klant-omgevingen --- 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 -- 1. Taken CREATE OR REPLACE VIEW aaxx_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, alg_gebouw_adres, inlo_subaccount, 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 || ')', g.alg_gebouw_adres, v.inlo_subaccount, 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, 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 AND g.alg_gebouw_key = v.alg_gebouw_key(+) ORDER BY fac_bijlagen_zippath ; -- 2. Assets CREATE OR REPLACE VIEW aaxx_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, alg_gebouw_adres, inlo_subaccount, 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 || ')', g.alg_gebouw_adres, v.inlo_subaccount, 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, 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 AND g.alg_gebouw_key = v.alg_gebouw_key(+) ORDER BY fac_bijlagen_zippath ; -- 3. Contracten CREATE OR REPLACE VIEW aaxx_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, alg_gebouw_adres, inlo_subaccount, 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, CASE WHEN cp.cnt_alg_gebouw_key IS NULL THEN cp.cnt_alg_gebouw_code -- Dus contract-scope op Locatie (dus ALLE gebouwen) ELSE g.alg_gebouw_naam || ' (' || g.alg_gebouw_code || ')' END alg_gebouw_naam, CASE WHEN cp.cnt_alg_gebouw_key IS NULL THEN cp.cnt_alg_gebouw_code -- Dus contract-scope op Locatie (dus ALLE gebouwen) ELSE g.alg_gebouw_adres END alg_gebouw_adres, v.inlo_subaccount, 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(DECODE(cp.cnt_alg_gebouw_code, 'Alle gebouwen', 'Alle gebouwen', g.alg_gebouw_omschrijving) , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') -- Deze geeft voor scope op Locatie de tekst/map ALLE GEBOUWEN en anders de echte gebouwomschrijving || 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(DECODE(cp.cnt_alg_gebouw_code, 'Alle gebouwen', 'Alle gebouwen', g.alg_gebouw_omschrijving) , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') -- Deze geeft voor scope op Locatie de tekst/map ALLE GEBOUWEN en anders de echte gebouwomschrijving || 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 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, CASE WHEN v.cnt_alg_plaats_code = 'L' THEN 'Alle gebouwen' 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 NULL ELSE (SELECT og.alg_gebouw_key FROM alg_v_onroerendgoed_gegevens og WHERE og.alg_onroerendgoed_keys = v.cnt_alg_plaats_key) END cnt_alg_gebouw_key FROM cnt_v_aanwezigcontract_plaats v WHERE v.cnt_contract_plaats_verwijder IS NULL ) cp, alg_locatie l, alg_gebouw g, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, 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 cp.cnt_alg_gebouw_key = g.alg_gebouw_key(+) AND cp.cnt_alg_gebouw_key = v.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 ; -- 4. Meldingen/Opdrachten CREATE OR REPLACE VIEW aaxx_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, alg_gebouw_adres, inlo_subaccount, 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_naam || ' (' || g.alg_gebouw_code || ')', g.alg_gebouw_adres, v.inlo_subaccount, 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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, og.alg_gebouw_key, g.alg_gebouw_adres, g.alg_gebouw_omschrijving, g.alg_gebouw_naam FROM mld_melding m, alg_v_onroerendgoed_gegevens og, alg_gebouw g WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys and og.alg_gebouw_key = g.alg_gebouw_key ) g, alg_locatie l, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, 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 AND g.alg_gebouw_key = v.alg_gebouw_key(+) 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_naam || ' (' || g.alg_gebouw_code || ')', g.alg_gebouw_adres, v.inlo_subaccount, 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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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_omschrijving , '[^[a-z,A-Z,0-9,[:space:]]]*', ''), CHR(44),'') || CHR(92) || REPLACE(REGEXP_REPLACE(g.alg_gebouw_omschrijving , '[^[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, og.alg_gebouw_key, g.alg_gebouw_adres, g.alg_gebouw_omschrijving, g.alg_gebouw_naam FROM mld_melding m, alg_v_onroerendgoed_gegevens og, alg_gebouw g WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys and og.alg_gebouw_key = g.alg_gebouw_key ) g, alg_locatie l, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, 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' AND g.alg_gebouw_key = v.alg_gebouw_key(+) ; --============================================================================= -- EXPORTFUNCTIES DATAWAREHOUSE ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_BEDRIJF ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijf ( prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_naam_upper, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats, prs_bedrijf_post_land, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land, prs_bedrijf_telefoon, prs_bedrijf_fax, prs_bedrijf_telefoon2, prs_bedrijf_contact_persoon, prs_bedrijf_contact_telefoon, prs_bedrijf_contact_fax, prs_bedrijf_opmerking, prs_bedrijf_opmerking2, prs_bedrijf_uurloon, prs_leverancier_nr, prs_overeenkomst_nr, prs_overeenkomst_datum, prs_bedrijf_aanmaak, prs_bedrijf_verwijder, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract, prs_bedrijf_intern, prs_bedrijf_huurder, prs_bedrijf_email, prs_bedrijf_ingids, prs_relatietype ) AS SELECT prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_naam_upper, prs_bedrijf_post_adres, prs_bedrijf_post_postcode, prs_bedrijf_post_plaats, prs_bedrijf_post_land, prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_land, prs_bedrijf_telefoon, prs_bedrijf_fax, prs_bedrijf_telefoon2, prs_bedrijf_contact_persoon, prs_bedrijf_contact_telefoon, prs_bedrijf_contact_fax, prs_bedrijf_opmerking, prs_bedrijf_opmerking2, prs_bedrijf_uurloon, prs_leverancier_nr, prs_overeenkomst_nr, prs_overeenkomst_datum, prs_bedrijf_aanmaak, prs_bedrijf_verwijder, prs_bedrijf_leverancier, prs_bedrijf_uitvoerende, prs_bedrijf_contract, prs_bedrijf_intern, prs_bedrijf_huurder, prs_bedrijf_email, prs_bedrijf_ingids, prs_relatietype_omschrijving FROM prs_bedrijf b, prs_relatietype rt WHERE prs_bedrijf_verwijder IS NULL AND b.prs_relatietype_key = rt.prs_relatietype_key(+); ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_BEDRIJFADRES ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijfadres ( prs_bedrijf_key, prs_bedrijfadres_type, opdrachttype, prs_bedrijfadres_url, prs_bedrijfadres_ordermode, prs_bedrijfadres_certificate, prs_bedrijfadres_xsl, prs_fixed_attach, prs_send_flex, alg_district_omschrijving, alg_locatie_code, prs_perslid_naam, prs_perslid_key, prs_bedrijfadres_expire ) AS SELECT prs_bedrijf_key, DECODE (prs_bedrijfadres_type, 'C', 'Contracten', 'O', 'Opdrachten', 'B', 'Bestellingen', 'Anders?') TYPE, DECODE ( prs_bedrijfadres_type, 'O', COALESCE (t.mld_typeopdr_omschrijving, 'Geen/Overige opdrachten'), 'N.v.t' ) Opdrachttype, prs_bedrijfadres_url, prs_bedrijfadres_ordermode, prs_bedrijfadres_certificate, prs_bedrijfadres_xsl, prs_bedrijfadres_attachfile prs_fixed_attach, DECODE ( prs_bedrijfadres_flexfiles, 0, DECODE ( (SELECT COALESCE (fac_setting_pvalue, fac_setting_default) FROM fac_setting WHERE LOWER (fac_setting_name) = 'puo_order_flexfiles'), 0, 'Nee', 'Ja' ), 1, 'Ja', 'Nee' ) prs_send_flex, d.alg_district_omschrijving, l.alg_locatie_code, pf.prs_perslid_naam_full, pf.prs_perslid_key, ba.prs_bedrijfadres_lockexpire FROM prs_bedrijfadres ba, mld_typeopdr t, alg_locatie l, alg_district d, prs_v_perslid_fullnames_all pf WHERE ba.mld_typeopdr_key = t.mld_typeopdr_key(+) AND ba.alg_locatie_key = l.alg_locatie_key(+) AND ba.alg_district_key = d.alg_district_key(+) AND ba.prs_bedrijfadres_lockuser_key = prs_perslid_key(+); ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_AFDELING ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_afdeling ( prs_afdeling_parent_naam, prs_afdeling_naam, prs_afdeling_omschrijving, prs_afdeling_code, prs_kostenplaats_nr, prs_afdeling_verwijder, prs_bedrijf_naam, niveau ) AS SELECT ap.prs_afdeling_naam, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, a1.prs_afdeling_naam afdeling_code, k.prs_kostenplaats_nr, a.prs_afdeling_verwijder, prs_bedrijf_naam, niveau FROM prs_v_afdeling a, prs_kostenplaats k, prs_bedrijf b, prs_afdeling ap, prs_afdeling a1 WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND a.prs_bedrijf_key = b.prs_bedrijf_key(+) AND a.prs_afdeling_parentkey = ap.prs_afdeling_key(+) AND a.prs_afdeling_key = a1.prs_afdeling_key AND ap.prs_afdeling_verwijder IS NULL; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_PERSOON ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_perslid ( prs_perslid_key, prs_afdeling_naam, prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_perslid_full, prs_perslid_login, prs_perslid_nr, prs_perslid_telefoon, prs_perslid_email, prs_perslid_lastlogin, prs_perslid_aanmaak, prs_perslid_verwijder, prs_perslid_laatstgezien, prs_perslid_bezetdatum ) AS SELECT p.prs_perslid_key, a.prs_afdeling_naam, p.prs_perslid_naam, p.prs_perslid_tussenvoegsel, p.prs_perslid_voornaam, pf.prs_perslid_naam_full, p.prs_perslid_oslogin, p.prs_perslid_nr, p.prs_perslid_telefoonnr, p.prs_perslid_email, p.prs_perslid_login, p.prs_perslid_aanmaak, p.prs_perslid_verwijder, CASE WHEN ( p.alg_onroerendgoed_type = 'G' OR p.alg_onroerendgoed_type = 'V' OR p.alg_onroerendgoed_type = 'R') THEN (SELECT og.alg_gebouw_naam FROM alg_v_allonrgoed_gegevens og WHERE og.alg_onroerendgoed_keys = p.alg_onroerendgoed_keys) WHEN (p.alg_onroerendgoed_type = 'L') THEN (SELECT alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = alg_onroerendgoed_keys) END laatst_gezien, p.prs_perslid_bezetdatum FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf WHERE a.prs_afdeling_key = p.prs_afdeling_key AND p.prs_perslid_key = pf.prs_perslid_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_FAC_GROEPRECHTEN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_fac_groeprechten ( prs_perslid_naam, prs_perslid_key, prs_perslid_login, fac_functie_code, fac_functie_omschrijving, fac_functie_module, ins_discipline_omschrijving, fac_groep_omschrijving, orgr, orgw, algr, algw ) AS SELECT -- GROEPEN MET DISCIPLINES p.prs_perslid_naam, gg.prs_perslid_key, p.prs_perslid_oslogin, f.fac_functie_code, f.fac_functie_omschrijving, f.fac_functie_module, (CASE WHEN ins_srtdiscipline_prefix IS NULL THEN '' ELSE ins_srtdiscipline_prefix || '-' END) || ins_discipline_omschrijving omschrijving, gr.fac_groep_omschrijving, g.fac_gebruiker_prs_level_read orgr, g.fac_gebruiker_prs_level_write orgw, g.fac_gebruiker_alg_level_read algr, g.fac_gebruiker_alg_level_write algw FROM fac_groeprechten g, fac_gebruikersgroep gg, prs_v_aanwezigperslid p, fac_functie f, ins_srtdiscipline isd, ins_tab_discipline a, fac_groep gr WHERE g.ins_discipline_key = a.ins_discipline_key AND g.fac_groep_key = gr.fac_groep_key AND p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = gr.fac_groep_key AND isd.ins_srtdiscipline_key(+) = a.ins_srtdiscipline_key AND f.fac_functie_key = g.fac_functie_key AND f.fac_functie_discipline = 1 AND ins_discipline_verwijder IS NULL UNION ALL -- GROEPEN ZONDER DISCIPLINES SELECT p.prs_perslid_naam, p.prs_perslid_key, p.prs_perslid_oslogin, f.fac_functie_code, f.fac_functie_omschrijving, f.fac_functie_module, NULL, gr.fac_groep_omschrijving, g.fac_gebruiker_prs_level_read orgr, g.fac_gebruiker_prs_level_write orgw, g.fac_gebruiker_alg_level_read algr, g.fac_gebruiker_alg_level_write algw FROM fac_groeprechten g, fac_functie f, fac_gebruikersgroep gg, prs_v_aanwezigperslid p, fac_groep gr WHERE fac_functie_module <> 'LAN' AND fac_functie_discipline = 0 AND g.fac_functie_key = f.fac_functie_key AND g.fac_groep_key = gg.fac_groep_key AND gg.fac_groep_key = gr.fac_groep_key AND p.prs_perslid_key = gg.prs_perslid_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_KOSTENPLAATS ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostenplaats ( prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_budgethouder, prs_kostenplaats_extern, prs_kostenplaatsgrp_oms, prs_kostenplaats_aanmaak, prs_kostenplaats_verwijder ) AS SELECT k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, pf.prs_perslid_naam_full, k.prs_kostenplaats_extern, kg.prs_kostenplaatsgrp_oms, k.prs_kostenplaats_aanmaak, k.prs_kostenplaats_verwijder FROM prs_kostenplaats k, prs_v_perslid_fullnames_all pf, prs_kostenplaatsgrp kg WHERE k.prs_perslid_key = pf.prs_perslid_key(+) AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+); ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_KOSTENSOORT ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostensoort ( prs_kostensoort_code, prs_kostensoort_omschrijving, prs_kostensoort_fin_waarde, prs_kostensoortgroep, prs_kostensoort_aanmaak, prs_kostensoort_altcode ) AS SELECT k.prs_kostensoort_oms, k.prs_kostensoort_opmerking, k.prs_kostensoort_refcode, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key), k.prs_kostensoort_aanmaak, k.prs_kostensoort_altcode FROM prs_kostensoort k; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_PRS_KENMERK_PRS ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_prs ( prs_link_key, prs_kenmerk_niveau, prs_kenmerk_omschrijving, prs_kenmerk_waarde ) AS SELECT prs_link_key, prs_kenmerk_niveau, prs_kenmerk_omschrijving, aaxx_get_kenmerkwaarde (k.prs_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, kl.prs_kenmerklink_waarde) FROM prs_kenmerklink kl, prs_kenmerk k WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_CNT_ALGEMEEN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract ( contract_key, internnr, externnr, mantelcontract_key, beschrijving, contractsoort, typecontract, versie, status, ingangsdatum, rappeldatum, opzegdatum, einddatum, aanmaakdatum, verwijderdatum, eigenaar, verantwoordelijk_manager, beheerder, uitvoerder, kostenplaats, termijnbedrag, contractbedrag, volgnummer, locatie_code, gebouw_code, gebouw_kosten, gebouw_gefactureerd, gebouw_gefactureerd_incl, gebouw_gefactureerdverwerkt, facturatieschema_aanwezig ) AS SELECT c.cnt_contract_key, cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0'), cnt_contract_nummer, cnt_contract_mantel_key, cnt_contract_omschrijving, d.ins_discipline_omschrijving, tc.cnt_typecontract_omschrijving, COALESCE (c.cnt_contract_versie, '0'), DECODE ( c.cnt_contract_status, 0, DECODE (fac.getsetting ('cnt_contract_approval'), 1, lcl.l ('lcl_cnt_active_approval'), lcl.l ('lcl_cnt_active_approval')), -- lcl_cnt_active 1, lcl.l ('lcl_cnt_inactive'), 2, lcl.l ('lcl_cnt_new'), 3, lcl.l ('lcl_cnt_forapproval')) status, cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c.cnt_contract_key), cnt.cnt_getopzegdatum (c.cnt_contract_key), c.cnt_contract_looptijd_tot, c.cnt_contract_aanmaak, c.cnt_contract_verwijder, a.prs_afdeling_naam, pf2.prs_perslid_naam_full, pf.prs_perslid_naam_full, prs_bedrijf_naam, kp.prs_kostenplaats_nr, coalesce (cnt_contract_termijnkosten, 0), cnt_contract_kosten, aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key), alg_locatie_code, g.alg_gebouw_code, ROUND ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 0, COALESCE ( (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten, 0)), 2), ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * fin.fin_factuur_totaal, 0), 2) gg, ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl), 0), 2) ggib, ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * finv.fin_factuur_totaal, 0), 2), CASE WHEN (SELECT count(*) FROM cnt_factuurschema fs WHERE fs.cnt_contract_key = c.cnt_contract_key) = 0 THEN 0 ELSE 1 END facturatieschema_aanwezig FROM cnt_contract c, cnt_discipline d, cnt_disc_params cd, cnt_typecontract tc, (SELECT cnt_contract_plaats_gewicht, cnt_contract_plaats_key, cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL) cp, prs_bedrijf b, prs_kostensoort k, prs_kostenplaats kp, prs_afdeling a, prs_v_perslid_fullnames_all pf2, prs_v_perslid_fullnames_all pf, alg_locatie l, alg_gebouw g, ( SELECT cnt_contract_key, SUM (fin_factuurregel_totaal) fin_factuur_totaal, SUM(fin_factuurregel_btw) fin_factuur_totaal_incl FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key GROUP BY cnt_contract_key) fin, ( SELECT cnt_contract_key, SUM (fin_factuurregel_totaal) fin_factuur_totaal FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = 7 -- verwerkt GROUP BY cnt_contract_key) finv, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_key = cd.cnt_ins_discipline_key AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095 AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.prs_perslid_key_beh = pf.prs_perslid_key AND c.prs_perslid_key_eig = pf2.prs_perslid_key(+) AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND c.cnt_contract_key = fin.cnt_contract_key(+) AND c.cnt_contract_key = finv.cnt_contract_key(+); CREATE OR REPLACE VIEW AAXX_V_DWH_CNT_CONTRACT_SCOPE ( CNT_CONTRACT_PLAATS_KEY, CNT_CONTRACT_KEY, EXTERNNR, INTERNNR, FIN_FACTUUR_KEY, FACTUUR_BOEKMAAND, GEBOUW_CODE, GEBOUW_BEDRAG, GEBOUW_GEFACTUREERD_INCL, GEBOUW_GEFACTUREERDVERWERKT, FACTUURSCHEMA_BOEKMAAND, GEBOUW_GEFACTUREERD_SCHEMA ) AS SELECT cp.cnt_contract_plaats_key, c.cnt_contract_key, cnt_contract_nummer externnr, cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') internnr, f.fin_factuur_key, f.fin_factuur_boekmaand factuur_boekmaand, gc.alg_gebouw_code gebouw_code, ROUND ( cp.cnt_contract_plaats_gewicht / (SELECT DECODE (SUM (cp2.cnt_contract_plaats_gewicht), 0, 1, SUM (cp2.cnt_contract_plaats_gewicht)) FROM cnt_contract_plaats cp2 WHERE cp2.cnt_contract_key = cp.cnt_contract_key) * fin_factuurregel_totaal, 4) gebouw_bedrag, ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl), 0), 4) gebouw_gefactureerd_incl, ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * finv.fin_factuur_totaal, 0), 4) gebouw_gefactureerdverwerkt, cfs.cnt_factuurschema_boekmaand, ROUND ( COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * (cfs.fin_factuur_totaal), NULL), 4) gebouw_gefcatureerd_schema FROM fin_factuur f, fin_factuurregel fr, fin_btwtabelwaarde btw, cnt_contract c, (SELECT c.cnt_contract_key, cnt_factuurschema_boekmaand, fin_factuur_totaal FROM ( SELECT SUM (fin_factuur_totaal) fin_factuur_totaal, SUM (fin_factuurregel_btw) fin_factuur_totaal_incl, cfs.cnt_factuurschema_boekmaand, cfs.cnt_contract_key FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr, cnt_factuurschema cfs WHERE f.fin_factuur_boekmaand = cfs.cnt_factuurschema_boekmaand AND f.fin_factuur_key = fr.fin_factuur_key AND f.cnt_contract_key = cfs.cnt_contract_key AND f.fin_factuur_verwijder IS NULL GROUP BY cfs.cnt_factuurschema_boekmaand, cfs.cnt_contract_key) cs1, cnt_contract c WHERE c.cnt_contract_key = cs1.cnt_contract_key(+)) cfs, (SELECT * FROM cnt_contract_plaats WHERE cnt_alg_plaats_code = 'G') cp, alg_gebouw gc, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL GROUP BY cnt_contract_key) cnt_gew, ( SELECT cnt_contract_key, SUM (fin_factuurregel_totaal) fin_factuur_totaal FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = 7 -- verwerkt GROUP BY cnt_contract_key) finv, ( SELECT cnt_contract_key, SUM (fin_factuurregel_totaal) fin_factuur_totaal, SUM (fin_factuurregel_btw) fin_factuur_totaal_incl FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key GROUP BY cnt_contract_key) fin WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.cnt_contract_key = cp.cnt_contract_key AND f.cnt_contract_key = c.cnt_contract_key AND cp.cnt_alg_plaats_key = gc.alg_gebouw_key(+) AND f.cnt_contract_key = cnt_gew.cnt_contract_key AND f.cnt_contract_key = finv.cnt_contract_key(+) AND f.cnt_contract_key = fin.cnt_contract_key(+) AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+) AND c.cnt_contract_key = cfs.cnt_contract_key AND (f.fin_factuur_boekmaand = cfs.cnt_factuurschema_boekmaand OR cfs.cnt_factuurschema_boekmaand IS NULL); CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract_mantel ( cnt_contract_key, internnr, externnr, beschrijving, contractsoort, typecontract, versie, status, ingangsdatum, rappeldatum, opzegdatum, einddatum, aanmaakdatum, verwijderdatum, eigenaar, beheerder, beheerder_key, uitvoerder, kostenplaats, termijnbedrag, contractbedrag, soort_overeenkomst, omvang_contractduur, commodity, omschrijving_optie_verlenging, tijdstip_facturatie, indexering_tijdens_periode, datum_van_indexering, kortingsafspraken, kortingsafspraak, opmerking_cm_bijzonderheden, contract_met_leverancier, contracteigenaar, indexeringsformule_afspraak, besparing, betalingsafspraak, betalingstermijn, link_contract, omvang_contract_pj, max_indexering, link_prijzenblad, pct_besparing_pj, rappeltermijn_indexering, link_overig ) AS SELECT cnt_contract_key, cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0'), cnt_contract_nummer, cnt_contract_omschrijving, d.ins_discipline_omschrijving, tc.cnt_typecontract_omschrijving, COALESCE (c.cnt_contract_versie, '0'), DECODE (c.cnt_contract_status, '1', 'Gesloten', 'Open'), cnt_contract_looptijd_van, cnt.cnt_getrappeldatum (c.cnt_contract_key), cnt.cnt_getopzegdatum (c.cnt_contract_key), c.cnt_contract_looptijd_tot, c.cnt_contract_aanmaak, c.cnt_contract_verwijder, a.prs_afdeling_naam, prs_perslid_naam_full, pf.prs_perslid_key, prs_bedrijf_naam, kp.prs_kostenplaats_nr, cnt_contract_termijnkosten, cnt_contract_kosten, aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'SOORT OVEREENKOMST'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACTDUUR'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'COMMODITY'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'OMSCHRIJVING OPTIE CONTRACTVERLENGING'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'TIJDSTIP FACTURATIE'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'INDEXERING TIJDENS CONTRACTPERIODE'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'DATUM VAN INDEXERING'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAKEN'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAAK'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'OPMERKING CM/ BIJZONDERHEDEN'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'CONTRACT MET LEVERANCIER'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'CONTRACTEIGENAAR'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'INDEXERINGSFORMULE/ -AFSPRAAK'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'BESPARING'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'BETALINGSAFSPRAAK'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'BETALINGSTERMIJN'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'LINK CONTRACT'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACT P/J'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'MAX. INDEXERING'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'LINK PRIJZENBLAD'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = '% BESPARING P/J'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'RAPPELTERMIJN INDEXERING'), c.cnt_contract_key), aaxx_get_kenmerk ( 'CNT', (SELECT MAX (cnt_kenmerk_key) FROM cnt_kenmerk k, cnt_srtkenmerk sk WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND sk.cnt_srtkenmerk_upper = 'LINK OVERIG'), c.cnt_contract_key) FROM cnt_contract c, cnt_discipline d, cnt_disc_params cd, cnt_typecontract tc, prs_bedrijf b, prs_kostensoort k, prs_kostenplaats kp, prs_afdeling a, prs_v_perslid_fullnames_all pf WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_key = cd.cnt_ins_discipline_key AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.prs_perslid_key_beh = pf.prs_perslid_key AND tc.cnt_typecontract_key = 6; CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_factuurschema ( internnr, externnr, contractsoort, kostenplaats, volgnummer, locatie_code, gebouw_code, verdeelperiode, termijnbedrag, gebouwkosten, opmerking ) AS SELECT cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0') internnr, cnt_contract_nummer externnr, cd.ins_discipline_omschrijving contractsoort, kp.prs_kostenplaats_nr kostenplaats, aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key) volgnummer, alg_locatie_code locatie_code, g.alg_gebouw_code gebouw_code, cf.cnt_factuurschema_boekmaand verdeelperiode, cf.cnt_factuurschema_bedrag termijnbedrag, ROUND ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 0, COALESCE ( (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * cf.cnt_factuurschema_bedrag, 0)), 2) gebouwkosten, cf.cnt_factuurschema_opmerking FROM cnt_contract c, cnt_discipline cd, cnt_factuurschema cf, prs_kostenplaats kp, alg_locatie l, alg_gebouw g, (SELECT cnt_contract_plaats_gewicht, cnt_contract_plaats_key, cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL) cp, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.ins_discipline_key = cd.ins_discipline_key AND c.cnt_contract_verwijder IS NULL AND c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND cf.cnt_contract_key = c.cnt_contract_key AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+); CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_contract ( CNT_CONTRACT_KEY, CNT_KENMERK_OMSCHRIJVING, CNT_KENMERK_WAARDE ) AS SELECT cnt_contract_key, sk.cnt_srtkenmerk_omschrijving, aaxx_get_kenmerkwaarde (sk.cnt_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kc.cnt_kenmerkcontract_waarde) FROM cnt_kenmerk k, cnt_srtkenmerk sk, cnt_kenmerkcontract kc WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_FIN_FACTUUR ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur ( fin_factuur_key, fin_factuur_nr, fin_factuur_totaal_btw, opdr_id, contract_id, bestel_id, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, kostensoort, fin_factuur_datumfiat_ok, fin_factuur_datumfiat_nok, fin_factuur_fiat_user, fin_factuur_opmerking, fin_factuur_datum_export, fin_factuur_status, fin_factuur_aanmaak, fin_factuur_verwerkt, fin_factuur_verwijder, fin_factuur_badgeid, invoerder, invoerder_key, fin_factuurregel_nr, fin_factuurregel_totaal, fin_factuurregel_btw, fin_factuurregel_btw_perc, uplift, incl_uplift, fin_factuurregel_omschrijving, fin_factuurregel_referentie, fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_factuur_bron, fin_factuur_bron_mareon, fin_factuur_bron_mareon_type, fin_factuur_boekstuknr, fin_factuur_verzamelfactuur, fin_factuur_controle, fin_factuur_controle_ok, fin_factuur_retour_lev, fin_factuur_retour_lev_reden, fin_factuur_retour_mar, fin_factuur_retour_mar_reden, fin_factuur_flag, fin_factuur_flag_oms, fin_factuur_intern_bedrijf -- zie ticket AAIT#84789 ) AS SELECT f.fin_factuur_key, f.fin_factuur_nr, f.fin_factuur_totaal_btw, (SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr FROM mld_opdr WHERE mld_opdr_key = f.mld_opdr_key), (SELECT cc.cnt_contract_nummer_intern || '.' || COALESCE (cc.cnt_contract_versie, '0') FROM cnt_contract cc WHERE cc.cnt_contract_key = f.cnt_contract_key), (SELECT bes_bestelopdr_id FROM bes_bestelopdr WHERE bes_bestelopdr_key = f.bes_bestelopdr_key), f.fin_factuur_datum, f.fin_factuur_boekmaand, f.fin_factuur_debiteur_nr, (SELECT prs_kostensoort_oms FROM prs_kostensoort WHERE prs_kostensoort_key = f.prs_kostensoort_key), fac.gettrackingdate ('FINFOK', f.fin_factuur_key), fac.gettrackingdate ('FINFNO', f.fin_factuur_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = fac.gettrackinguserkey ('FINFOK', f.fin_factuur_key)), f.fin_factuur_opmerking, fac.gettrackingdate ('FINVER', f.fin_factuur_key), (SELECT fin_factuur_statuses_omschr FROM fin_factuur_statuses s WHERE s.fin_factuur_statuses_key = f.fin_factuur_statuses_key), COALESCE (fac.gettrackingdate ('FINNEW', f.fin_factuur_key), fin_factuur_datum), fac.gettrackingdate ('FINVER', f.fin_factuur_key), fin_factuur_verwijder, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key), 'yyyymmdd'), fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key) invoerder, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key)) invoerder_key, fr.fin_factuurregel_nr, fr.fin_factuurregel_totaal, ROUND (fr.fin_factuurregel_btw, 2), btw.fin_btwtabelwaarde_perc, uplift, uplift * fr.fin_factuurregel_totaal, fr.fin_factuurregel_omschrijving, fr.fin_factuurregel_referentie, btw.fin_btwtabelwaarde_code, btw.fin_btwtabelwaarde_oms, DECODE (f.fin_factuur_bron, 0, lcl.l ('lcl_fin_source_manual'), 1, lcl.l ('lcl_fin_source_excel'), 2, lcl.l ('lcl_fin_source_mail'), 'Onbekend') factuurbron, (SELECT 'mareon' FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = f.fin_factuur_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'factuur' AND sn.fac_srtnotificatie_code = 'FINUPD' AND INSTR(ft.fac_tracking_oms, 'Factuur geimporteerd vanuit Mareon')>0) fin_factuur_bron_mareon, (SELECT LOWER(fin_kenmerkfactuur_waarde) FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_code) = 'MAREON_BRON' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_bron_mareon_type, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'BOEKSTUKNUMMER' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_boekstuknr, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'VERZAMELFACTUUR?' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_verzamelfactuur, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle_ok, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'RETOUR LEVERANCIER' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_retour_lev, flx.getdomeinwaarde ((SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_upper = 'RETOUR - LEVERANCIER'), flx.getflex ('FIN', COALESCE((SELECT fin_kenmerk_key FROM fin_kenmerk WHERE fin_kenmerk_upper = 'RETOUR LEVERANCIER - REDEN'),0), f.fin_factuur_key)) fin_factuur_retour_lev_reden, (SELECT fin_kenmerkfactuur_waarde FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_omschrijving) = 'RETOUR MAREON-HELPDESK' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_retour_mar, flx.getdomeinwaarde ((SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_upper = 'RETOUR - MAREON HELPDESK'), flx.getflex ('FIN', COALESCE((SELECT fin_kenmerk_key FROM fin_kenmerk WHERE fin_kenmerk_upper = 'RETOUR MAREON HELPDESK - REDEN'),0), f.fin_factuur_key)) fin_factuur_retour_mar_reden, f.fin_factuur_flag, (CASE WHEN f.fin_factuur_flag>0 THEN Lcl.L('lcl_fin_flag' || f.fin_factuur_flag) ELSE '' END) fin_factuur_flag_oms, (SELECT LOWER(fin_kenmerkfactuur_waarde) FROM fin_kenmerkfactuur fk, fin_kenmerk k WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key AND k.fin_kenmerk_verwijder IS NULL AND UPPER (fin_kenmerk_code) = 'MAREON_BEDRIJF_INTERN' AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_intern_bedrijf FROM fin_factuur f, fin_factuurregel fr, fin_btwtabelwaarde btw, (SELECT f2.fin_factuur_key, uplift FROM aaxx_imp_uplift u, prs_bedrijf b, prs_kostensoort ks, fin_factuur f2, mld_opdr o, cnt_contract c WHERE u.prs_leverancier_nr = b.prs_leverancier_nr AND f2.mld_opdr_key = o.mld_opdr_key(+) AND f2.cnt_contract_key = c.cnt_contract_key(+) AND COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key) = b.prs_bedrijf_key AND UPPER (u.prs_kostensoort_oms) = ks.prs_kostensoort_upper AND f2.prs_kostensoort_key = ks.prs_kostensoort_key AND soort_order = DECODE (o.mld_opdr_key, NULL, 'CO', 'WO') AND f2.fin_factuur_boekmaand = u.jaar || '-' || LTRIM (TO_CHAR (u.maand, '00'))) UP WHERE f.fin_factuur_key = fr.fin_factuur_key(+) AND f.fin_factuur_key = UP.fin_factuur_key(+) AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+); CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur_vk ( fin_factuurrun_key, -- Interne key van de verkooprun fin_factuurrun_nr, -- Omschrijving van de verkooprun = BOEKJAAR + Datum run fin_factuur_nr, -- Referentie verkoopfactuur = Datum + Verplichtingsref (opdr, cnt, bestlopdr) fin_factuur_totaal, -- Totaal verkoopfactuur (excl btw) opdr_id, contract_id, bestel_id, fin_factuur_datum, fin_factuur_boekmaand, fin_factuur_debiteur_nr, kostensoort, prs_kostensoortgrp_oms, -- Referentie, omschrijving van de verkoopfactuur fin_factuur_datum_export, fin_factuur_status, fin_factuur_aanmaak, fin_factuur_verwerkt, fin_factuur_verwijder, -- NULL want verwijderactie niet mogelijk voor verkoopfacturen fin_factuur_badgeid, invoerder, -- NULL want verkoopfactuur wordt automatisch bij draaien inkooprun aangemaakt invoerder_key, -- Idem fin_factuurregel_key, -- Interne key van de aangemaakte verkoopregel fin_factuurregel_totaal, -- Regelbedrag (exl btw) fin_factuurregel_btw, fin_factuurregel_btw_perc, fin_factuurregel_omschrijving, fin_factuurregel_referentie, -- Exact code van het gebouw. Is kenmerk van gebouw fin_btwtabelwaarde_code, fin_btwtabelwaarde_oms, fin_factuur_bron, fin_factuur_boekstuknr, -- NULL, nvt voor verkoopfacturen fin_verkoopfactuur_c4 -- Deze wordt gebruikt in RABO om 'Verkoopfactuur_VASTVAR' te vullen ) AS SELECT vf.fin_verkoopfactuurkop_key, vfk.fin_verkoopfactuurkop_id, vf.fin_verkoopfactuur_id fin_factuur_nr, (SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur vf2 WHERE vf2.fin_verkoopfactuur_refkey = vf.fin_verkoopfactuur_refkey AND vf2.fin_verkoopfactuurkop_key = vf.fin_verkoopfactuurkop_key) fin_factuur_totaal, CASE WHEN vf.fin_verkoopfactuur_xmlnode='opdracht' THEN (SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr FROM mld_opdr WHERE mld_opdr_key = vf.fin_verkoopfactuur_refkey) ELSE NULL END opdr_id, CASE WHEN vf.fin_verkoopfactuur_xmlnode='contract' THEN (SELECT cc.cnt_contract_nummer_intern || '.' || COALESCE (cc.cnt_contract_versie, '0') FROM cnt_contract cc WHERE cc.cnt_contract_key = vf.fin_verkoopfactuur_refkey) ELSE NULL END contract_id, CASE WHEN vf.fin_verkoopfactuur_xmlnode='bestelopdr' THEN (SELECT b.bes_bestelopdr_id FROM bes_bestelopdr b WHERE b.bes_bestelopdr_key = vf.fin_verkoopfactuur_refkey) ELSE NULL END bestel_id, vf.fin_verkoopfactuur_aanmaak fin_factuur_datum, vf.fin_verkoopfactuur_maand fin_factuur_boekmaand, vf.prs_debiteur_naam fin_factuur_debiteur_nr, vf.prs_kostensoort_oms, vf.prs_kostensoortgrp_oms prs_kostensoortgrp_oms, vf.fin_verkoopfactuur_datum fin_factuur_datum_export, CASE WHEN vf.fin_verkoopfactuur_datum IS NULL THEN 'nog verwerken' ELSE 'verwerkt' END fin_factuur_status, vf.fin_verkoopfactuur_aanmaak, vf.fin_verkoopfactuur_datum, NULL fin_factuur_verwijder, TO_CHAR (vf.fin_verkoopfactuur_datum,'yyyymmdd') badgeid, NULL invoerder, NULL invoerder_key, vf.fin_verkoopfactuur_key, fin_verkoopfactuur_bedrag fin_factuurregel_totaal, ROUND((btw.fin_btwtabelwaarde_perc/100) * fin_verkoopfactuur_bedrag,2) fin_factuurregel_btw, btw.fin_btwtabelwaarde_perc, fin_verkoopfactuur_omschr fin_factuuregel_omschrijving, fin_verkoopfactuur_c1 fin_factuurregel_referentie, btw.fin_btwtabelwaarde_code, btw.fin_btwtabelwaarde_oms, 'interface' factuurbron, NULL fin_factuur_boekstuknr, CASE WHEN vf.fin_verkoopfactuur_c4 IS NULL THEN 'nee' WHEN vf.fin_verkoopfactuur_c4 = 'Verkoopfactuur_VASTVAR' THEN 'ja' ELSE 'anders' END vast_variabel_opdracht FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk, fin_btwtabelwaarde btw WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key AND vf.fin_btwtabelwaarde_code = btw.fin_btwtabelwaarde_code ORDER BY vf.fin_verkoopfactuur_refkey, vf.fin_verkoopfactuur_key ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_MLD_STDMELDING ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_mld_stdmelding AS SELECT mld_stdmelding_key, 'https://' || (SELECT LOWER(fac_version_cust) FROM fac_version) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || mld_stdmelding_key || CHR(38) || 'role=fe' || CHR(38) || 'sso=HEYDAY' link, (SELECT fac_version_cust FROM fac_version) account, ins_srtdiscipline_omschrijving, vak.ins_discipline_omschrijving, mld_stdmelding_omschrijving, std.mld_stdmelding_t_uitvoertijd.tijdsduur || DECODE (std.mld_stdmelding_t_uitvoertijd.eenheid, 'U', ' Uren', 'D', ' Dagen', '') mld_stdmelding_t_uitvoertijd, mld_stdmeldinggroep_naam, pks.prs_kostensoort_oms, mld_stdmelding_vervaldatum, DECODE (mld_stdmelding_notfrontend, 1, 'ja', 'nee') mld_stdmelding_notfrontend, mld_stdmelding_kanverwijzen, DECODE (alg_onrgoed_niveau, 'R', 'ruimte', 'V', 'verdieping', 'G', 'gebouw', 'L', 'locatie') alg_onrgoed_niveau, DECODE (mld_disc_params_notify, 0, 'Nooit', 1, 'Altijd', 2, 'Afhankelijk van melding', 'Onbekend') mld_disc_params_notify, DECODE (mld_stdmelding_planbaar, 1, 'ja', 'nee') mld_stdmelding_planbaar, DECODE (mld_stdmelding_freetext, 0, 'onzichtbaar', 2, 'verplicht', 'optioneel') mld_stdmelding_freetext, NULL ins_srtinst_verplicht, mld_stdmelding_hint, DECODE (mld_stdmelding_autoorder, 1, 'ja', 'nee') mld_stdmelding_autoorder, DECODE (mld_stdmelding_vereisdienst, 1, 'ja', 'nee') mld_stdmelding_vereisdienst, ot.mld_typeopdr_omschrijving standaard_opdrachttype, mld_stdmelding_opdrtypevast, std.mld_stdmelding_t_accepttijd.tijdsduur || DECODE (std.mld_stdmelding_t_accepttijd.eenheid, 'U', ' Uren', 'D', ' Dagen', '') mld_stdmelding_t_accepttijd, std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur || DECODE (std.mld_stdmelding_t_uitvtijd_pr1.eenheid, 'U', ' Uren', 'D', ' Dagen', '') mld_stdmelding_t_uitvtijd_pr1, std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur || DECODE (std.mld_stdmelding_t_uitvtijd_pr2.eenheid, 'U', ' Uren', 'D', ' Dagen', '') mld_stdmelding_t_uitvtijd_pr2, std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur || DECODE (std.mld_stdmelding_t_uitvtijd_pr4.eenheid, 'U', ' Uren', 'D', ' Dagen', '') mld_stdmelding_t_uitvtijd_pr4 FROM mld_stdmelding std, mld_stdmeldinggroep smg, mld_discipline vak, ins_srtdiscipline srt, prs_kostensoort pks, prs_dienst d, mld_disc_params dp, mld_typeopdr ot, bes_discipline bd WHERE std.mld_stdmelding_verwijder IS NULL AND std.mld_ins_discipline_key = vak.ins_discipline_key AND vak.ins_discipline_verwijder IS NULL AND vak.ins_srtdiscipline_key = srt.ins_srtdiscipline_key AND srt.ins_srtdiscipline_verwijder IS NULL AND std.prs_kostensoort_key = pks.prs_kostensoort_key(+) AND std.prs_dienst_key = d.prs_dienst_key(+) AND std.mld_typeopdr_key = ot.mld_typeopdr_key(+) AND std.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+) AND bd.ins_discipline_key(+) = std.bes_ins_discipline_key AND vak.ins_discipline_key = dp.mld_ins_discipline_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_MLD_ALGEMEEN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_mld_melding ( mld_melding_key, meldingnummer, extern_nr, meldbron, mld_melding_start_key, alg_district_omschrijving, locatie, locatie_omschrijving, alg_locatie_key, onrgoed_key, gebouw, gebouw_naam, gebouw_key, verdieping, verdieping_key, ruimtenr, ruimte_omschrijving, ruimte_key, melding_ordernr, kostensoortgroep, kostensoort, kostenplaats, kostenplaats_oms, melder, prs_perslid_key, afdeling, afdeling_omschrijving, prs_bedrijf_key, invoerder, invoerder_key, behandelaar, behandelaar_key, soortmelding, ins_discipline_key, ins_srtdiscipline_prefix, productgroep, subproductgroep, subproductgroepgroep, status, sla_werkdgn, plan_uitvoertijd, datum, datumfilter, plan_einddatum, prioriteit, ingezien, geaccepteerd, afgemeld, verwerkt, -- nieuw doorlooptijd_werkdgn, acceptoptijd, uitvoeringoptijd_sla, uitvoeringoptijd_afspraak, onderwerp, omschrijving, opmerking, mld_melding_parentkey, tevredenheid, tevredenheid_opm, object_omschrijving, geplande_actie, opdracht_key, opdracht_volgnummer, opdracht_type, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_verzonden, opdracht_geaccepteerd, opdracht_afgemeld, opdracht_verwerkt, -- nieuw opdracht_doorlooptijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_contract, opdracht_behandelaar, opdracht_behandelaar_key, opdracht_uren, opdracht_uren_besteed, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, opdracht_kostenplaats, opdracht_kostenplaats_oms, deelsrtcontrole_key ) AS SELECT m.mld_melding_key, TO_CHAR (m.mld_melding_key) meldingnummer, m.mld_melding_externnr, mld_meldbron_omschrijving meldbron, m.mld_melding_start_key, alg_district_omschrijving, alg_locatie_code locatie, alg_locatie_omschrijving locatie_omschrijving, l.alg_locatie_key, m.mld_alg_onroerendgoed_keys, og.alg_gebouw_code gebouw, og.alg_gebouw_naam gebouw_naam, og.alg_gebouw_key, og.alg_verdieping_code verdieping, og.alg_verdieping_key, og.alg_ruimte_nr ruimte, og.alg_ruimte_omschrijving ruimte_omschrijving, og.alg_ruimte_key, m.mld_melding_ordernr melding_ordernr, (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key) FROM mld_stdmelding sm, mld_discipline disc WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_key = s.mld_stdmelding_key)) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key) FROM mld_stdmelding sm, mld_discipline disc WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_key = s.mld_stdmelding_key)) kostensoort, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats, (SELECT k.prs_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key) kostenplaats_oms, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.prs_perslid_key) melder, m.prs_perslid_key, (SELECT prs_afdeling_naam FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling, (SELECT prs_afdeling_omschrijving FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling_omschrijving, (SELECT prs_bedrijf_key FROM prs_v_afdeling pva, prs_perslid pp WHERE pva.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) prs_bedrijf_key, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key)) invoerder, fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = m.mld_melding_behandelaar_key), m.mld_melding_behandelaar_key, sd.ins_srtdiscipline_omschrijving soortmelding, md.ins_discipline_key ins_discipline_key, ins_srtdiscipline_prefix ins_srtdiscipline_prefix, md.ins_discipline_omschrijving productgroep, s.mld_stdmelding_omschrijving subproductgroep, (SELECT smg.mld_stdmeldinggroep_naam FROM mld_stdmeldinggroep smg WHERE smg.mld_stdmeldinggroep_key = s.mld_stdmeldinggroep_key) subproductgroepgroep, (SELECT DECODE ( COALESCE (par.mld_melding_status, m.mld_melding_status), 4, DECODE (o.mld_opdr_key, NULL, mld_statuses_omschrijving, 'Niet opgelost'), mld_statuses_omschrijving ) FROM mld_statuses sta WHERE sta.mld_statuses_key = COALESCE (par.mld_melding_status, m.mld_melding_status)) status, COALESCE ( par.sla_werkdgn, aaxx.count_work_days (m.mld_melding_datum, m.mld_melding_einddatum) ) sla_werkdgn, COALESCE ( par.plan_uitvoertijd, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'U', TO_NUMBER (NULL), m.mld_melding_t_uitvoertijd.tijdsduur) ) plan_uitvoertijd, -- Altijd in dagen; anders NULL! COALESCE (par.mld_melding_datum, m.mld_melding_datum) datum, m.mld_melding_datum datumfilter, COALESCE (par.mld_melding_einddatum, m.mld_melding_einddatum) plan_einddatum, DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') prioritieit, mld.getmeldingstatusdate (m.mld_melding_key, 3) ingezien, mld.getmeldingstatusdate (m.mld_melding_key, 4) geaccepteerd, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)) afgemeld, fac.gettrackingdate ('MLDVER', m.mld_melding_key) verwerkt, aaxx.count_work_days_incltime ( m.mld_melding_datum, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1), SYSDATE) ) doorlooptijd_werkdgn, CASE WHEN mld_melding_acceptdatum_std < COALESCE ( fac.gettrackingdate ('MLDREJ', m.mld_melding_key), COALESCE ( fac.gettrackingdate ('MLDACP', m.mld_melding_key), SYSDATE ) ) THEN 0 ELSE 1 END acceptoptijd, CASE WHEN s.mld_stdmelding_slabewaken = 0 OR m.mld_melding_indult = 1 THEN NULL WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL THEN 1 ELSE CASE -- vooralsnog WHEN mld.getactualuitvoer(m.mld_melding_key).tijdsduur < -- te traag m.mld_melding_t_uitvoertijd.tijdsduur + m.mld_melding_t_respijt.tijdsduur WHEN m.mld_melding_einddatum_std > COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE ) THEN 1 ELSE 0 END END uitvoeringoptijd_sla, CASE WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL THEN 1 ELSE CASE WHEN m.mld_melding_einddatum > COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE ) THEN 1 ELSE 0 END END uitvoeringoptijd_afspraak, m.mld_melding_onderwerp, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)) omschrijving, m.mld_melding_opmerking opmerking, m.mld_melding_parentkey, m.mld_melding_satisfaction, m.mld_melding_satisfaction_op, (SELECT MAX (ins_deel_omschrijving) FROM ins_deel id, mld_melding_object mo WHERE mo.mld_melding_key = m.mld_melding_key AND mo.ins_deel_key = id.ins_deel_key) object_omschrijving, DECODE ( INSTR (mld_melding_opmerking, 'Automatisch gegenereerd door'), 1, 'yes', 'no') geplande_actie, o.mld_opdr_key, o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer, (SELECT mld_typeopdr_omschrijving FROM mld_typeopdr t WHERE o.mld_typeopdr_key = t.mld_typeopdr_key) opdracht_type, (SELECT REPLACE (mld_statusopdr_omschrijving, 'Uitgegeven', 'Toegekend') mld_statusopdr_omschrijving FROM mld_statusopdr sta WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key) opdracht_status, aaxx.count_work_days (o.mld_opdr_datumbegin, o.mld_opdr_einddatum) opdracht_duur_gepland, o.mld_opdr_datumbegin opdracht_datum, o.mld_opdr_einddatum opdracht_einddatum, o.mld_opdr_plandatum opdracht_plandatum, o.mld_opdr_verzonden opdracht_verzonden, fac.gettrackingdate ('ORDACP', o.mld_opdr_key) opdracht_geaccepteerd, mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld, fac.gettrackingdate ('ORDVER', mld_opdr_key) opdracht_verwerkt, aaxx.count_work_days ( o.mld_opdr_datumbegin, mld.getopdrachtstatusdate (o.mld_opdr_key, 6) ) opdracht_doorlooptijd, o.mld_opdr_omschrijving opdracht_omschrijving, o.mld_opdr_opmerking opdracht_opmerking, (SELECT naam FROM mld_v_uitvoerende u WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys) opdracht_uitvoerende, NULL opdracht_contract, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = o.prs_perslid_key) behandelaar, o.prs_perslid_key opdracht_contactpersoon, DECODE (mld_statusopdr_key, 1, 0, 2, 0, -- afgewezen, niet akkoord o.mld_opdr_uren) opdracht_uren, (SELECT COUNT (mld_opdr_uren_besteed) FROM mld_opdr_uren ou WHERE ou.mld_opdr_key = o.mld_opdr_key AND mld_opdr_uren_status IN (3, -- goedgekeurd 4) -- verwerkt ) uren_besteed, DECODE ( mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_kosten - o.mld_opdr_materiaal - (o.mld_opdr_uren * o.mld_opdr_uurloon) ) opdracht_correctie, DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_materiaal) opdracht_materiaal, DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_uurloon) opdracht_uurtarief, DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_kosten) opdracht_kosten, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) opdracht_kostenplaats, (SELECT k.prs_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) opdracht_kostenplaats_oms, (SELECT min(ins_deelsrtcontrole_key) FROM mld_melding_object mo WHERE mo.mld_melding_key = m.mld_melding_key AND mo.ins_deelsrtcontrole_key IS NOT NULL) -- NOG HERZIEN. In 2023.2 kunnen er meerdere taken aan 1 melding gekoppeld worden. Heyday moet nog aangeven hoe ze dit nu gebruiken en hoe dit aangepast moet worden.. deelsrtcontrole_key FROM mld_melding m, mld_meldbron mb, mld_stdmelding s, alg_locatie l, alg_district d, alg_v_allonrgoed_gegevens og, mld_discipline md, ins_srtdiscipline sd, mld_opdr o, (SELECT mld_melding_key, mld_melding_status, mld_melding_datum, mld_melding_einddatum, aaxx.count_work_days (m.mld_melding_datum, m.mld_melding_einddatum) sla_werkdgn, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'U', TO_NUMBER (NULL), m.mld_melding_t_uitvoertijd.tijdsduur) plan_uitvoertijd FROM mld_melding m WHERE mld_melding_key IN (SELECT mld_melding_parentkey FROM mld_melding WHERE mld_melding_parentkey IS NOT NULL)) par WHERE s.mld_stdmelding_key = m.mld_stdmelding_key AND m.mld_meldbron_key = mb.mld_meldbron_key AND m.fac_activiteit_key IS NULL AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND l.alg_district_key = d.alg_district_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND m.mld_melding_key = o.mld_melding_key(+) AND m.mld_melding_parentkey = par.mld_melding_key(+) UNION ALL SELECT cnt_contract_key, cnt_contract_nummer_intern || '.' || COALESCE (cnt_contract_versie, '0'), TO_CHAR(NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), kg.prs_kostensoortgrp_oms, prs_kostensoort_oms, kp.prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_perslid_naam_full, c.prs_perslid_key_beh, prs_afdeling_naam, prs_afdeling_omschrijving, a.prs_bedrijf_key, TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), 'Contract', c.ins_discipline_key, 'C', d.ins_discipline_omschrijving, TO_CHAR (NULL), TO_CHAR (NULL), DECODE (cnt_contract_status, 1, 'Gesloten', DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE), 1, 'Toekomst', -1, DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE), 1, 'Actueel', -1, 'Verlopen'))), TO_NUMBER (NULL), TO_NUMBER (NULL), -- Altijd in dagen; anders NULL! TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_CHAR (NULL), -- prioriteit TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), -- datum verwerkt TO_NUMBER (NULL), TO_NUMBER (NULL), -- acceptoptijd TO_NUMBER (NULL), -- uitvoeringoptijd_sla TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak TO_CHAR (NULL), -- Onderwerp c.cnt_contract_document, TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), -- tevredenheid TO_CHAR (NULL), -- Opmering bij tevredenheid TO_CHAR (NULL), -- object omschrijving TO_CHAR (NULL), -- geplande actie TO_NUMBER (NULL), 1, 'Contract Order', DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE), 1, 'Uitgegeven', -1, 'Afgemeld'), TO_NUMBER (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), TO_DATE (NULL), -- opdracht verwerkt TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), b.prs_bedrijf_naam, TO_NUMBER (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), c.cnt_contract_uurloon, c.cnt_contract_kosten, kp.prs_kostenplaats_nr, prs_kostenplaats_omschrijving, NULL deelsrtcontrole_key FROM cnt_contract c, cnt_disc_params cd, ins_tab_discipline d, prs_kostensoort ks, prs_kostensoortgrp kg, prs_kostenplaats kp, prs_v_perslid_fullnames_all pf, prs_v_afdeling a, prs_bedrijf b WHERE c.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_key = cd.cnt_ins_discipline_key AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095 AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND ks.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_perslid_key_beh = pf.prs_perslid_key AND c.prs_afdeling_key_eig = a.prs_afdeling_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_verwijder IS NULL UNION ALL SELECT bes_bestelling_key, TO_CHAR (bestelaanvraagnr), TO_CHAR(NULL), TO_CHAR (NULL), TO_NUMBER (NULL), alg_district_omschrijving, alg_locatie_code, alg_locatie_omschrijving, alg_locatie_key, alg_gebouw_key, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_key, TO_CHAR (NULL), -- verdieping TO_NUMBER (NULL), TO_CHAR (NULL), -- ruimte_nr TO_CHAR (NULL), -- ruimte_omschrijving TO_NUMBER (NULL), bes_bestelling_ordernr, kostensoortgroep, kostensoort, kpn, kpn_omschrijving, besteller, prs_perslid_key_best, afdeling_code, afdeling_omschrijving, prs_bedrijf_key, invoerder, invoerder_key, TO_CHAR (NULL), -- Naam van de behandelaar TO_NUMBER (NULL), -- Key van de behandelaar 'Bestelling', ins_discipline_key, 'BE', ins_discipline_omschrijving, TO_CHAR (NULL), -- stdmelding kostensoortgroep, status, sla_tijd, sla_tijd, -- Altijd in dagen; anders NULL! besteldatum, besteldatum, TO_DATE (NULL), TO_CHAR (NULL), -- prioriteit TO_DATE (NULL), -- datum ingezien acceptatie_datum, ontvangen_datum, TO_DATE (NULL), -- datum verwerkt doorlooptijd_werkdgn, TO_NUMBER (NULL), -- acceptoptijd TO_NUMBER (NULL), -- uitvoeringoptijd_sla TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak TO_CHAR (NULL), -- onderwerp omschrijving, TO_CHAR (NULL), -- opmerking TO_NUMBER (NULL), bes_bestelling_satisfaction, -- tevredenheid bes_bestelling_satisfaction_op, -- opmerking bij tevredenheid TO_CHAR (NULL), -- object omschrijving TO_CHAR (NULL), -- geplande actie bes_bestelopdr_key, opdr_volgnr, 'Purchase Order', opdr_status, DECODE (opdr_volgnr, NULL, TO_NUMBER (NULL), sla_tijd), opdr_datum, -- opdr datum TO_DATE (NULL), -- opdr_einddatum TO_DATE (NULL), -- opdr plandatum verzonden_datum, TO_DATE (NULL), -- opdr geaccepteerd opdr_ontv_datum, TO_DATE (NULL), -- datum opdracht verwerkt DECODE (opdr_volgnr, NULL, TO_NUMBER (NULL), doorlooptijd_werkdgn), opdr_omschrijving, bes_bestelopdr_opmerking, leverancier, TO_NUMBER (NULL), -- contract TO_CHAR (NULL), -- behandelaar TO_NUMBER (NULL), -- behandelaar_key TO_NUMBER (NULL), -- uren TO_NUMBER (NULL), -- uren_besteed TO_NUMBER (NULL), -- correctie TO_NUMBER (NULL), -- materiaal TO_NUMBER (NULL), -- uurtarief -- Indien de laatste factuur ontvangen is en de status van de factuur is goedgekeurd -- of verwerkt zal het bedrag uit de factuur gebruikt worden. COALESCE ( (SELECT DECODE (SUM (laatste_factuur), 0, TO_NUMBER (NULL), SUM (fin_factuurregel_totaal)) FROM aaxx_v_factuur_gegevens g WHERE g.bes_bestelopdr_key = b.bes_bestelopdr_key AND g.fin_factuur_statuses_key >= 6), opdr_kosten ) opdr_kosten, DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn), DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn_omschrijving), NULL deelsrtcontrole_key FROM (SELECT b.bes_bestelling_key bes_bestelling_key, b.bes_bestelling_key bestelaanvraagnr, di.alg_district_omschrijving, l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_key, g.alg_gebouw_code, g.alg_gebouw_naam, g.alg_gebouw_key, b.bes_bestelling_ordernr, b.bes_bestelling_datum besteldatum, b.bes_bestelling_satisfaction, b.bes_bestelling_satisfaction_op, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key) besteller, p.prs_perslid_key prs_perslid_key_best, (SELECT MAX (prs_perslid_naam_full) FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = COALESCE ( fac.gettrackinguserkey ( 'BESNEW', b.bes_bestelling_key ), fac.gettrackinguserkey ( 'BESAP2', b.bes_bestelling_key ) )) invoerder, COALESCE ( fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key) ) invoerder_key, fac.gettrackingdate ('BESACP', b.bes_bestelling_key) acceptatie_datum, fac.gettrackingdate ('BESOTV', b.bes_bestelling_key) ontvangen_datum, aaxx_bestelling_items (b.bes_bestelling_key) omschrijving, (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = d.prs_kostensoort_key) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = d.prs_kostensoort_key) kostensoort, k.prs_kostenplaats_nr kpn, k.prs_kostenplaats_omschrijving kpn_omschrijving, a.prs_afdeling_naam afdeling_code, a.prs_afdeling_omschrijving afdeling_omschrijving, d.ins_discipline_key, d.ins_discipline_omschrijving, b.bes_bestelling_leverdatum afleverdatum, aaxx.count_work_days ( b.bes_bestelling_datum, NVL ( fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), SYSDATE ) ) doorlooptijd_werkdgn, NVL ( (SELECT bdp.bes_disc_params_leverdagen FROM bes_disc_params bdp WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key), 0 ) sla_tijd, (SELECT bes_bestellingstatuses_omschr FROM bes_bestellingstatuses bs WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status) status, (SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key) leverancier, (SELECT bes_bestelopdrstatuses_omschr FROM bes_bestelopdrstatuses bs WHERE bs.bes_bestelopdrstatuses_key = bo.bes_bestelopdr_status) opdr_status, bo.bes_bestelopdr_key, fac.safe_to_number(SUBSTR ( bo.bes_bestelopdr_id, INSTR (bo.bes_bestelopdr_id, '/') + 1 )) opdr_volgnr, bo.bes_bestelopdr_datum opdr_datum, fac.gettrackingdate ('BES2SN', bo.bes_bestelopdr_key) verzonden_datum, fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key) opdr_ontv_datum, bes.bestelopdr_tooltip (bo.bes_bestelopdr_key) opdr_omschrijving, bes_bestelopdr_opmerking, DECODE ( bes_bestelopdr_status, 8, 0, -- geannuleerd (SELECT SUM(bes_bestelopdr_item_aantal * COALESCE ( bes_bestelopdr_item_inkprijs, bes_bestelopdr_item_prijs )) FROM bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key) ) opdr_kosten, bo.prs_bedrijf_key FROM bes_bestelling b, prs_perslid p, prs_kostenplaats k, prs_afdeling a, mld_adres ma, bes_bestelopdr bo, ins_tab_discipline d, alg_gebouw g, alg_locatie l, alg_district di, (SELECT DISTINCT bes_bestelling_key, bes_bestelopdr_key FROM bes_bestelling_item bi, bes_bestelopdr_item boi WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key) bes_opdr, (SELECT DISTINCT bes_bestelling_key, ins_discipline_key FROM bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key) cat, ( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key FROM (SELECT ma.mld_adres_key, DECODE ( aaxx_get_user, 'AH', DECODE (ma.mld_adres_key, 101, 280, alg_gebouw_key), alg_gebouw_key) alg_gebouw_key FROM alg_gebouw g FULL OUTER JOIN mld_adres ma ON g.mld_adres_key = ma.mld_adres_key) WHERE alg_gebouw_key IS NOT NULL GROUP BY mld_adres_key) adr_geb WHERE b.prs_perslid_key = p.prs_perslid_key AND b.prs_kostenplaats_key = k.prs_kostenplaats_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.mld_adres_key_lev = ma.mld_adres_key AND b.bes_bestelling_key = bes_opdr.bes_bestelling_key(+) AND bes_opdr.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = di.alg_district_key(+) AND b.bes_bestelling_key = cat.bes_bestelling_key AND cat.ins_discipline_key = d.ins_discipline_key AND ma.mld_adres_key = adr_geb.mld_adres_key(+) AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+)) b; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_MLD_KENM_MLD ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_melding ( mld_melding_id, mld_kenmerk_omschrijving, mld_kenmerk_waarde ) AS SELECT mld_melding_key, sk.mld_srtkenmerk_omschrijving, aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde) FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkmelding km WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_MLD_KENM_OPD ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_opdracht ( mld_opdr_id, mld_kenmerk_omschrijving, mld_kenmerk_waarde ) AS SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, sk.mld_srtkenmerk_omschrijving, aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ko.mld_kenmerkopdr_waarde) FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkopdr ko, mld_opdr o WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_RES_ALGEMEEN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_res_reservering ( res_reservering_key, res_rsv_ruimte_key, nummer, res_omschrijving, res_opmerking, res_ruimte_naam, invoerdatum, datum, gastheer, gastheer_key, contact, contact_key, invoerder, invoerder_key, kostensoortgroep, kostensoort, kpn, kpn_omschrijving, prs_bedrijf_key, afdeling_code, afdeling_omschrijving, district_omschrijving, alg_locatie_key, locatie, locatie_omschrijving, gebouw, gebouw_omschrijving, verdieping, ruimte, ruimte_key, opstelling, no_show, shown_bezoekers, mandaat, personeelsnr, werkplek, ins_discipline_key, catalogus_ins_discipline_key, catalogus, reserveerbare_ruimte, bezoekers, van, tot, duur, status, status_fo, activiteit, kosten_ruimte, tevredenheid, tevredenheid_opm, voorziening_ins_discipline_key, voorziening_catalogus, voorziening_product, voorziening_totaalprijs, voorziening_van, voorziening_tot, voorziening_aantal, voorziening_prijs, voorziening_inkoopprijs, voorziening_btw, voorziening_afgemeld, mld_opdr_key, mld_opdr_id, reservering_verwijder ) AS SELECT res.res_reservering_key, rrr.res_rsv_ruimte_key, res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_omschrijving, rrr.res_rsv_ruimte_opmerking, rr.res_ruimte_nr, COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van), COALESCE (rrr.res_rsv_ruimte_van, voorz.van), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key), rrr.res_rsv_ruimte_host_key, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key), rrr.res_rsv_ruimte_contact_key, (SELECT prs_perslid_naam_full FROM fac_tracking t, fac_srtnotificatie sn, prs_v_perslid_fullnames_all pf WHERE sn.fac_srtnotificatie_code = 'RESNEW' AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND t.prs_perslid_key = pf.prs_perslid_key AND fac_tracking_refkey = rrr.res_rsv_ruimte_key), (SELECT prs_perslid_key FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'RESNEW' AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND fac_tracking_refkey = rrr.res_rsv_ruimte_key), (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT disc.prs_kostensoort_key FROM res_discipline disc WHERE disc.ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)))) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT disc.prs_kostensoort_key FROM res_discipline disc WHERE disc.ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)))) kostensoort, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, (SELECT prs_bedrijf_key FROM prs_v_afdeling pva WHERE pva.prs_afdeling_key = a.prs_afdeling_key), a.prs_afdeling_naam, a.prs_afdeling_omschrijving, (SELECT d.alg_district_omschrijving FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_key FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_locatie_code FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_locatie_omschrijving FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_gebouw_code FROM alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_gebouw_naam FROM alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_verdieping_code FROM alg_verdieping v, alg_ruimte r WHERE v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_ruimte_nr FROM alg_ruimte r WHERE r.alg_ruimte_key = r2a.alg_ruimte_key), r2a.alg_ruimte_key, r2a.opstelling, rrr.res_rsv_ruimte_noshow, rrr.res_rsv_ruimte_bezoekers_shown, NVL ( (SELECT pr.fac_profiel_limiet FROM fac_profiel pr WHERE p.fac_profiel_key = pr.fac_profiel_key), 0), prs_perslid_nr, wp2.prs_werkplek_aanduiding, COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)), (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key), (SELECT ins_discipline_omschrijving FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key), DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'), rrr.res_rsv_ruimte_bezoekers, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, NVL ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0), (SELECT res_status_bo_omschrijving FROM res_status_bo rs WHERE rs.res_status_bo_key = COALESCE (voorz.res_status_bo_key, rrr.res_status_bo_key)), (SELECT res_status_fo_omschrijving FROM res_status_fo rs2 WHERE rs2.res_status_fo_key = rrr.res_status_fo_key ), (SELECT res_activiteit_omschrijving FROM res_activiteit ra WHERE ra.res_activiteit_key = rrr.res_activiteit_key), (SELECT res.getruimteprijs(rrr.res_rsv_ruimte_key) from dual), rrr.res_rsv_ruimte_satisfaction, rrr.res_rsv_ruimte_satisfaction_op, voorz.ins_discipline_key, voorz.catalogus, voorz.product, voorz.totaalprijs, voorz.van, voorz.tot, voorz.aantal, voorz.prijs, voorz.inkoopprijs, voorz.btw, voorz.afgemeld, o.mld_opdr_key, o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr, res_rsv_ruimte_verwijder FROM res_rsv_ruimte rrr, res_reservering res, prs_kostenplaats k, prs_perslid p, prs_afdeling a, res_ruimte_opstelling rro, res_ruimte rr, mld_opdr o, ( SELECT res_rsv_ruimte_key, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ra.alg_ruimte_key) alg_ruimte_key FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key AND rr.res_ruimte_key = ra.res_ruimte_key AND res_alg_ruimte_verwijder IS NULL GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, '' opstelling, alg_ruimte_key FROM res_rsv_ruimte WHERE alg_ruimte_key IS NOT NULL) r2a, (SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key, d.ins_deel_omschrijving product, rrd.res_status_bo_key, DECODE ( rd.res_deel_prijs_vast, 1, NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs), (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 * NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)) totaalprijs, rrd.res_rsv_deel_van van, rrd.res_rsv_deel_tot tot, (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal, NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs, NULL inkoopprijs, NULL btw, res_rsv_deel_afgemeld afgemeld, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, TO_NUMBER(NULL) mld_opdr_key FROM res_rsv_deel rrd, res_deel rd, ins_deel d, ins_tab_discipline c WHERE rrd.res_deel_key = rd.res_deel_key AND d.ins_deel_key = rd.res_ins_deel_key AND rrd.res_rsv_ruimte_key IS NOT NULL AND c.ins_discipline_key = rd.res_discipline_key UNION ALL SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key, ra.res_artikel_omschrijving product, rra.res_status_bo_key, NVL (rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs) totaalprijs, rra.res_rsv_artikel_levering van, NULL tot, rra.res_rsv_artikel_aantal aantal, NVL ( rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal, res_artikel_prijs) prijs, res_artikel_inkoopprijs inkoopprijs, res_artikel_btw btw, res_rsv_artikel_afgemeld afgemeld, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, bc.mld_opdr_key FROM res_rsv_artikel rra, res_artikel ra, ins_tab_discipline c, aaxx_bundel_catering_ref bc WHERE rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = c.ins_discipline_key AND rra.res_rsv_artikel_key = bc.res_rsv_artikel_key(+)) voorz, ( SELECT pw.prs_perslid_key, MIN (prs_werkplek_aanduiding) || DECODE (COUNT ( * ), 1, '', '...') prs_werkplek_aanduiding FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw WHERE wp.prs_werkplek_key = pw.prs_werkplek_key GROUP BY pw.prs_perslid_key) wp2 WHERE rrr.res_reservering_key = res.res_reservering_key AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rr.res_ruimte_key(+) AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+) AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+) AND voorz.mld_opdr_key = o.mld_opdr_key(+) AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND wp2.prs_perslid_key(+) = p.prs_perslid_key AND (rrr.res_ruimte_opstel_key IS NOT NULL OR voorz.res_rsv_ruimte_key IS NOT NULL) ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_RES_KENMERK ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_reservering ( nummer, kenmerk_omschrijving, kenmerk_waarde, reservering_verwijder ) AS SELECT dwhres.nummer, sk.res_srtkenmerk_omschrijving, aaxx_get_kenmerkwaarde (sk.res_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kw.res_kenmerkreservering_waarde), dwhres.reservering_verwijder FROM res_kenmerk k, res_srtkenmerk sk, res_kenmerkwaarde kw, aaxx_v_dwh_res_reservering dwhres WHERE dwhres.res_rsv_ruimte_key = kw.res_rsv_ruimte_key AND kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_BES_ALGEMEEN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_bes_bestelling ( bes_bestelling_key, bestelaanvraagnr, besteldatum, besteller, invoerder, kostensoortgroep, kostensoort, kpn, kpn_omschrijving, prs_bedrijf_key, afdeling_code, afdeling_omschrijving, alg_locatie_key, locatie_code, district_omschijving, afleveradres, mandaat, personeelsnr, werkplek, ins_discipline_key, catalogus, groep, afleverdatum, doorlooptijd_werkdgn, sla_tijd, productcode, prijs, inkoopprijs, status, gefiatteerddoor, tevredenheid, tevredenheid_opm, bestelopdrachtnummer, leverancier, aantal, itemprijs, iteminkoopprijs, productomschrijving, itemposnr ) AS SELECT b.bes_bestelling_key bes_bestelling_key, b.bes_bestelling_key bestelaanvraagnr, b.bes_bestelling_datum besteldatum, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key) besteller, (SELECT MAX (prs_perslid_naam_full) FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = COALESCE(fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key))) invoerder, (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT disc.prs_kostensoort_key FROM bes_discipline disc WHERE disc.ins_discipline_key = d.ins_discipline_key)) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT disc.prs_kostensoort_key FROM bes_discipline disc WHERE disc.ins_discipline_key = d.ins_discipline_key)) kostensoort, k.prs_kostenplaats_nr kpn, k.prs_kostenplaats_omschrijving kpn_omschrijving, (SELECT prs_bedrijf_key FROM prs_v_afdeling pva WHERE pva.prs_afdeling_key = a.prs_afdeling_key) prs_bedrijf_key, a.prs_afdeling_naam afdeling_code, a.prs_afdeling_omschrijving afdeling_omschrijving, ma.alg_locatie_key alg_locatie_key, (SELECT alg_locatie_code FROM alg_locatie l WHERE l.alg_locatie_key = ma.alg_locatie_key) locatie_code, (SELECT alg_district_omschrijving FROM alg_locatie l, alg_district d WHERE l.alg_district_key = d.alg_district_key AND l.alg_locatie_key = ma.alg_locatie_key) district_omschijving, ma.mld_adres_naam afleveradres, NVL ( (SELECT pr.fac_profiel_limiet FROM fac_profiel pr WHERE p.fac_profiel_key = pr.fac_profiel_key), 0) mandaat, prs_perslid_nr personeelsnr, wp2.prs_werkplek_aanduiding werkplek, d.ins_discipline_key ins_discipline_key, d.ins_discipline_omschrijving catalogus, sg.bes_srtgroep_omschrijving groep, b.bes_bestelling_leverdatum afleverdatum, TO_CHAR(aaxx.count_work_days ( b.bes_bestelling_datum, NVL ( fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), SYSDATE))) doorlooptijd_werkdgn, NVL ( (SELECT bdp.bes_disc_params_leverdagen FROM bes_disc_params bdp WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key), 0) sla_tijd, sd.bes_srtdeel_nr productcode, DECODE(bes_bestelling_status, 8,0, -- geannuleerd bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal) prijs, DECODE(bes_bestelling_status, 8,0, -- geannuleerd NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs) * bi.bes_bestelling_item_aantal) inkoopprijs, (SELECT bes_bestellingstatuses_omschr FROM bes_bestellingstatuses bs WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status) status, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user) gefiatteerddoor, b.bes_bestelling_satisfaction, b.bes_bestelling_satisfaction_op, bo.bes_bestelopdr_id bestelopdrachtnummer, (SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key) leverancier, bi.bes_bestelling_item_aantal aantal, DECODE (bes_bestelling_status, 8, 0, -- geannuleerd bi.bes_bestelling_item_prijs) itemprijs, DECODE (bes_bestelling_status, 8,0, -- geannuleerd NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs)) iteminkoopprijs, sd.bes_srtdeel_omschrijving productomschrijving, boi.bes_bestelopdr_item_posnr itemposnr FROM bes_bestelling b, prs_perslid p, prs_kostenplaats k, prs_afdeling a, mld_adres ma, ( SELECT pw.prs_perslid_key, MIN (prs_werkplek_aanduiding) || DECODE (COUNT ( * ), 1, '', '...') prs_werkplek_aanduiding FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw WHERE wp.prs_werkplek_key = pw.prs_werkplek_key GROUP BY pw.prs_perslid_key) wp2, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE b.prs_perslid_key = p.prs_perslid_key AND b.prs_kostenplaats_key = k.prs_kostenplaats_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.mld_adres_key_lev = ma.mld_adres_key AND wp2.prs_perslid_key(+) = p.prs_perslid_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+) AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_BES_KENMERK ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_bestelling ( nummer, kenmerk_omschrijving, kenmerk_waarde ) AS SELECT kb.bes_bestelling_key, sk.bes_srtkenmerk_omschrijving, aaxx_get_kenmerkwaarde (sk.bes_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, bes_kenmerkbestell_waarde) FROM bes_kenmerk k, bes_srtkenmerk sk, fac_kenmerkdomein fkd, bes_kenmerkbestell kb WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_FIN_KENMERK ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_factuur ( fin_factuur_key, kenmerk_omschrijving, kenmerk_waarde ) AS SELECT kf.fin_factuur_key, k.fin_kenmerk_omschrijving, aaxx_get_kenmerkwaarde (k.fin_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, kf.fin_kenmerkfactuur_waarde) FROM fin_kenmerk k, fin_kenmerkfactuur kf WHERE k.fin_kenmerk_key = kf.fin_kenmerk_key ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_BEZ_BEZOEKERS ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_bez_bezoekers ( bezoekers_key, afspraak_begin, afspraak_ontvangen, ontvangen_door, afspraak_eind, afspraak_afgemeld, afgemeld_door, contactpersoon, gastheer, locatie, gebouw, verdieping, ruimte, actie, opmerking, parkeerplaats, ingevoerd_door, ingevoerd, res_rsv_ruimte_key, reservering, bezoeker, bedrijf ) AS SELECT b.bez_bezoekers_key, a.bez_afspraak_datum, bez_bezoekers_done, bezdon.prs_perslid_key, bez_afspraak_eind, bez_bezoekers_out, bezout.prs_perslid_key, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = a.bez_afspraak_contact_key) contact, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = a.bez_afspraak_host_key) HOST, alg_locatie_code || '-' || alg_locatie_omschrijving, (SELECT alg_gebouw_upper || '-' || alg_gebouw_naam FROM alg_gebouw g WHERE g.alg_gebouw_key = og.alg_gebouw_key) gebouw, (SELECT alg_verdieping_volgnr FROM alg_verdieping v WHERE v.alg_verdieping_key = og.alg_verdieping_key) verdieping, (SELECT alg_ruimte_nr || '-' || alg_ruimte_omschrijving FROM alg_ruimte r WHERE r.alg_ruimte_key = og.alg_ruimte_key) ruimte, (SELECT bez_actie_omschrijving FROM bez_actie ac WHERE ac.bez_actie_key = a.bez_actie_key) actie, a.bez_afspraak_opmerking opmerking, (SELECT MAX (ins_deel_omschrijving) FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d WHERE rrd.bez_bezoekers_key = b.bez_bezoekers_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = d.ins_deel_key) parkeer, bezmut.prs_perslid_key, bezmut.fac_tracking_datum, a.res_rsv_ruimte_key res_rsv_ruimte_key, (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr FROM res_rsv_ruimte rrr WHERE rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key) reservering_nummer, b.bez_afspraak_naam, b.bez_afspraak_bedrijf FROM bez_bezoekers b, bez_afspraak a, alg_v_onroerendgoed og, alg_locatie l, (SELECT fac_tracking_refkey, prs_perslid_key FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'BEZDON' AND NOT EXISTS (SELECT fac_tracking_refkey FROM fac_tracking t2 WHERE t2.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND t2.fac_tracking_refkey = t.fac_tracking_refkey AND t2.fac_tracking_key > t.fac_tracking_key)) bezdon, (SELECT fac_tracking_refkey, prs_perslid_key FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'BEZOUT' AND NOT EXISTS (SELECT fac_tracking_refkey FROM fac_tracking t2 WHERE t2.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND t2.fac_tracking_refkey = t.fac_tracking_refkey AND t2.fac_tracking_key > t.fac_tracking_key)) bezout, (SELECT fac_tracking_refkey, prs_perslid_key, fac_tracking_datum FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'BEZMUT' AND NOT EXISTS (SELECT fac_tracking_refkey FROM fac_tracking t2 WHERE t2.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND t2.fac_tracking_refkey = t.fac_tracking_refkey AND t2.fac_tracking_key > t.fac_tracking_key)) bezmut WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+) AND a.alg_locatie_key = l.alg_locatie_key(+) AND b.bez_bezoekers_key = bezdon.fac_tracking_refkey(+) AND b.bez_bezoekers_key = bezout.fac_tracking_refkey(+) AND a.bez_afspraak_key = bezmut.fac_tracking_refkey(+); ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_ALG_ONRGOED ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_alg_onrgoed ( alg_onroerendgoed_keys, alg_onroerendgoed_code, alg_onroerendgoed_omschrijving, alg_onroerendgoed_aanmaak, alg_onroerendgoed_verwijder, alg_type, alg_regio_key, alg_regio_omschrijving, alg_district_key, alg_district_omschrijving, alg_locatie_key, alg_locatie_code, alg_locatie_omschrijving, alg_locatie_bezoek_adres, alg_locatie_bezoek_postcode, alg_locatie_bezoek_plaats, alg_terreinsector_key, alg_terreinsector_code, alg_terreinsector_naam, alg_gebouw_key, alg_gebouw_code, alg_gebouw_naam, alg_gebouw_verantwoordelijke, alg_gebouw_verantwoordelijke2, alg_gebouw_mjb_score1, alg_gebouw_bvo, alg_gebouw_bez, alg_gebouw_werkdagen, alg_gebouw_beginuur, alg_gebouw_einduur, alg_gebouw_functie, alg_gebouw_kostenplaats_key, alg_gebouw_kostenplaats_oms, alg_gebouw_x, alg_gebouw_y, alg_verdieping_key, alg_verdieping_code, alg_verdieping_omschrijving, alg_ruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving, alg_ruimte_m2, alg_ruimte_m2_alt1, alg_ruimte_m2_alt2, dienstniveau_niveau, dienstniveau, alg_srtruimte_omschrijving, prs_afdeling_upper ) AS SELECT alg_onroerendgoed_keys, DECODE (alg_type, 'T', alg_terreinsector_code, 'G', alg_gebouw_code, 'V', alg_verdieping_code, 'R', alg_ruimte_nr) code, DECODE (alg_type, 'T', alg_terreinsector_naam, 'G', alg_gebouw_naam, 'V', alg_verdieping_omschrijving, 'R', alg_ruimte_omschrijving) omschrijving, DECODE (alg_type, 'T', alg_terreinsector_aanmaak, 'G', alg_gebouw_aanmaak, 'V', alg_verdieping_aanmaak, 'R', alg_ruimte_aanmaak) aanmaak, DECODE (alg_type, 'T', alg_terreinsector_verwijder, 'G', alg_gebouw_verwijder, 'V', COALESCE(alg_verdieping_verwijder, alg_gebouw_verwijder), 'R', COALESCE(alg_ruimte_verwijder, alg_verdieping_verwijder, alg_gebouw_verwijder) )verwijder, aog.alg_type, r.alg_regio_key, r.alg_regio_omschrijving, d.alg_district_key, d.alg_district_omschrijving, l.alg_locatie_key, l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_adres, l.alg_locatie_postcode, l.alg_locatie_plaats, t.alg_terreinsector_key, t.alg_terreinsector_code, t.alg_terreinsector_naam, g.alg_gebouw_key, g.alg_gebouw_code, g.alg_gebouw_naam, g.prs_perslid_key_verantw, g.prs_perslid_key_verantw2, g.alg_gebouw_mjb_score1, (SELECT SUM (alg_ruimte_bruto_vloeropp) alg_gebouw_bvo FROM alg_ruimte r, alg_verdieping v WHERE v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_verwijder IS NULL AND v.alg_gebouw_key = g.alg_gebouw_key) alg_gebouw_bvo, alg_gebouw_bez, alg_gebouw_werkdagen, DECODE ( alg_gebouw_beginuur, NULL, TO_CHAR (NULL), 0, TO_CHAR (NULL), TO_CHAR (TRUNC (alg_gebouw_beginuur)) || ':' || TO_CHAR ( (alg_gebouw_beginuur - TRUNC (alg_gebouw_beginuur)) * 60, 'FM00')) alg_gebouw_beginuur, DECODE ( alg_gebouw_einduur, NULL, TO_CHAR (NULL), 0, TO_CHAR (NULL), TO_CHAR (TRUNC (alg_gebouw_einduur)) || ':' || TO_CHAR ( (alg_gebouw_einduur - TRUNC (alg_gebouw_einduur)) * 60, 'FM00')) alg_gebouw_einduur, (SELECT alg_srtgebouw_omschrijving FROM alg_srtgebouw sg WHERE sg.alg_srtgebouw_key = g.alg_srtgebouw_key) alg_gebouw_functie, g.prs_kostenplaats_key, CASE WHEN g.prs_kostenplaats_key IS NOT NULL THEN kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving ELSE '' END alg_gebouw_kostenplaats_oms, alg_gebouw_x, alg_gebouw_y, v.alg_verdieping_key, v.alg_verdieping_code, v.alg_verdieping_omschrijving, ru.alg_ruimte_key, ru.alg_ruimte_nr, ru.alg_ruimte_omschrijving, ru.alg_ruimte_bruto_vloeropp, ru.alg_ruimte_opp_alt1, ru.alg_ruimte_opp_alt2, CASE WHEN mdr.mld_dienstniveau_omschr IS NOT NULL THEN 'R' WHEN mdv.mld_dienstniveau_omschr IS NOT NULL THEN 'V' WHEN mdg.mld_dienstniveau_omschr IS NOT NULL THEN 'G' WHEN mdl.mld_dienstniveau_omschr IS NOT NULL THEN 'L' END dienstniveau_gevuld, COALESCE (mdr.mld_dienstniveau_omschr, mdv.mld_dienstniveau_omschr, mdg.mld_dienstniveau_omschr, mdl.mld_dienstniveau_omschr) dienstniveau, sru.alg_srtruimte_omschrijving, afd.prs_afdeling_upper FROM alg_v_allonroerendgoed aog, mld_dienstniveau mdr, mld_dienstniveau mdv, mld_dienstniveau mdg, mld_dienstniveau mdl, alg_ruimte ru, alg_verdieping v, alg_terreinsector t, alg_gebouw g, prs_kostenplaats kp, alg_locatie l, alg_district d, alg_regio r, alg_srtruimte sru, (SELECT ra.alg_ruimte_key, a.prs_afdeling_upper FROM prs_ruimteafdeling ra, prs_v_afdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key) afd WHERE aog.alg_gebouw_key = g.alg_gebouw_key(+) AND aog.alg_terreinsector_key = t.alg_terreinsector_key(+) AND aog.alg_verdieping_key = v.alg_verdieping_key(+) AND aog.alg_ruimte_key = ru.alg_ruimte_key(+) AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND d.alg_regio_key = r.alg_regio_key AND ru.mld_dienstniveau_key = mdr.mld_dienstniveau_key(+) AND v.mld_dienstniveau_key = mdv.mld_dienstniveau_key(+) AND g.mld_dienstniveau_key = mdg.mld_dienstniveau_key(+) AND l.mld_dienstniveau_key = mdl.mld_dienstniveau_key(+) AND ru.alg_srtruimte_key = sru.alg_srtruimte_key (+) AND ru.alg_ruimte_key = afd.alg_ruimte_key (+) AND g.prs_kostenplaats_key = kp.prs_kostenplaats_key (+) UNION ALL SELECT TO_NUMBER (NULL), alg_locatie_code, alg_locatie_omschrijving, l.alg_locatie_aanmaak, l.alg_locatie_verwijder, 'L', r.alg_regio_key, alg_regio_omschrijving, d.alg_district_key, alg_district_omschrijving, l.alg_locatie_key, alg_locatie_code, alg_locatie_omschrijving, alg_locatie_adres, alg_locatie_postcode, alg_locatie_plaats, TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), -- alg_gebouw_bvo, TO_NUMBER (NULL), -- alg_gebouw_bez, TO_NUMBER (NULL), -- alg_gebouw_werkdagen, TO_CHAR (NULL), -- alg_gebouw_beginuur, TO_CHAR (NULL), -- alg_gebouw_einduur, TO_CHAR (NULL), -- alg_gebouw_functie, TO_NUMBER (NULL), -- prs_kostenplaats_key van gebouw TO_CHAR (NULL), -- prs_kostenplaats_omschrijving van gebouw TO_NUMBER (NULL), -- alg_gebouw_x, TO_NUMBER (NULL), -- alg_gebouw_y, TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), 'L', md.mld_dienstniveau_omschr, TO_CHAR (NULL), TO_CHAR (NULL) FROM alg_locatie l, alg_district d, alg_regio r, mld_dienstniveau md WHERE l.alg_district_key = d.alg_district_key AND d.alg_regio_key = r.alg_regio_key AND l.mld_dienstniveau_key = md.mld_dienstniveau_key(+) UNION ALL SELECT TO_NUMBER (NULL), TO_CHAR (NULL), alg_district_omschrijving, d.alg_district_aanmaak, d.alg_district_verwijder, 'D', r.alg_regio_key, alg_regio_omschrijving, d.alg_district_key, alg_district_omschrijving, TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), -- alg_gebouw_bvo, TO_NUMBER (NULL), -- alg_gebouw_bez, TO_NUMBER (NULL), -- alg_gebouw_werkdagen, TO_CHAR (NULL), -- alg_gebouw_beginuur, TO_CHAR (NULL), -- alg_gebouw_einduur, TO_CHAR (NULL), -- alg_gebouw_functie, TO_NUMBER (NULL), -- prs_kostenplaats_key van gebouw TO_CHAR (NULL), -- prs_kostenplaats_omschrijving van gebouw TO_NUMBER (NULL), -- alg_gebouw_x, TO_NUMBER (NULL), -- alg_gebouw_y, TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL) FROM alg_district d, alg_regio r WHERE d.alg_regio_key = r.alg_regio_key UNION ALL SELECT TO_NUMBER (NULL), TO_CHAR (NULL), alg_regio_omschrijving, r.alg_regio_aanmaak, r.alg_regio_verwijder, 'R', r.alg_regio_key, alg_regio_omschrijving, TO_NUMBER (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), -- alg_gebouw_bvo, TO_NUMBER (NULL), -- alg_gebouw_bez, TO_NUMBER (NULL), -- alg_gebouw_werkdagen, TO_CHAR (NULL), -- alg_gebouw_beginuur, TO_CHAR (NULL), -- alg_gebouw_einduur, TO_CHAR (NULL), -- alg_gebouw_functie, TO_NUMBER (NULL), -- prs_kostenplaats_key van gebouw TO_CHAR (NULL), -- prs_kostenplaats_omschrijving van gebouw TO_NUMBER (NULL), -- alg_gebouw_x, TO_NUMBER (NULL), -- alg_gebouw_y, TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL), TO_CHAR (NULL) FROM alg_regio r; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_ALG_KENMERK ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_onrgoed ( alg_onrgoed_key, alg_kenmerk_niveau, alg_kenmerk_omschrijving, alg_kenmerk_waarde ) AS SELECT aog.alg_onrgoed_key, k.alg_kenmerk_niveau, k.alg_kenmerk_omschrijving, aaxx_get_kenmerkwaarde (k.alg_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, aog.alg_onrgoedkenmerk_waarde) FROM alg_kenmerk k, alg_onrgoedkenmerk aog WHERE k.alg_kenmerk_key = aog.alg_kenmerk_key AND aog.alg_onrgoedkenmerk_verwijder IS NULL; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_INS_SENSOR_STATUS ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_ins_sensor_status ( ruimte_key, sensor_id, tijdstip_aan, tijdstip_uit ) AS SELECT d.ins_alg_ruimte_key, d.ins_deel_omschrijving, h.ins_deel_statedate, h.uit FROM (SELECT h.*, LEAD (ins_deel_statedate) OVER (PARTITION BY ins_deel_key ORDER BY ins_deel_statedate) AS uit FROM ins_deel_state_history h) h, ins_srtdeel sd, ins_deel d WHERE h.ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND h.ins_deel_state = '1' ORDER BY d.ins_alg_ruimte_key, h.ins_deel_statedate; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_INSPECTIE ------------------------------------------------------------------------------- -- Zie ticket 63820. Betreft DWH-view_2.0. Dit is afgeleide van de AAXX_V_DWH_INSPECTIE. -- Bedoeling: ---- Deze view hanteert men nu eerst voor Gemeente Nijmegen om o.a. de gewenste Dashboards mee te realiseren. ---- Indien dit gereed is dan zou de oude AAXX-view vervangen moeten gaan worden door deze. CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie_2 ( taakcategorie, taaksoort, taakmodus, ismjob, taakopties, uitvoer_aantal, deelsrtcontrole_key, deelsrtcontrole_key_vorig, deel_key, deel_omschrijving, srtcontrole_key, srtcontrole_info, srtcontrole_niveau, srtcontrole_omschrijving, srtcontrole_opmerking, srtcontrole_periode, srtcontrole_eenheid, -- Eenheid (jaar, maand, week, dag) op basistaak srtcontrole_level, -- prioriteit basistaak srtcontrole_percentage, srtcontrole_start, srtcontrole_eind, srtcontrole_groep, uitvoer_x, -- De x-ste uitvoer status, -- Is status van de uitvoerende taak (ingepland, in behandeling, afgemeld, voltooid) deelsrtcontrole_datum, -- Voor Uitvoertaak de coalesce(Uitvoerdatum, Plandatum of Startdatum) -- Voor Basistaak indien geen geschiedenis, StartdatumTaak (of indien leeg ins_deel_datum) ----- en indien wel geschiedenis dan NextCyclus op basis van (uitvoerdatum, plandatum, FreezeDate ivm MJOB) laatste/hudige taak. mjob_doorgeschoven, uitvoerdatum_gepland, uitvoerdatum_inbehandeling, uitvoerdatum_gereed, succes, actie_vereist, afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..) verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid) uitvoerdatum_origineel, -- Datum waarop uitvoertaak uitgevoerd zou moeten worden respijt, deelsrtcontrole_status, -- Voor uitvoertaak, de beoordeling Te laat of op Tijd (op basis coalesce(plandatum, originele uitvoerdatum) -- Voor basistaak indicatie of de nog te starten taak al opgestart had moeten worden cycli_dagen, -- VorigeUitvoerdatum MINUS deze uitvoerdatum srtcontrole_materiaal, controlemode_omschrijving, controlemode_opmerking, deelsrtcontrole_opmerking, prs_perslid_key, gecontroleerd_door, taak_categorie, dienst, prs_bedrijf_key ) AS SELECT 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, CASE WHEN sc.ins_srtcontrole_mode = 0 THEN lcl.l ('lcl_ins_srtcontrole_moment') ELSE lcl.l ('lcl_ins_srtcontrole_interval') END taak_modus, cdp.ctr_disc_params_ismjob ismjob, sc.ins_srtcontrole_options taakopties, (SELECT COUNT (dc2.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deel_key = d.ins_deel_key AND dc2.ins_srtcontrole_key = x.ins_srtcontrole_key) uitvoer_aantal, dc.ins_deelsrtcontrole_key, dcp.ins_deelsrtcontrole_key_vorige deelsrtcontrole_key_vorig, d.ins_deel_key, d.ins_deel_omschrijving, sc.ins_srtcontrole_key, sc.ins_srtcontrole_info, sc.ins_srtcontrole_niveau, sc.ins_srtcontrole_omschrijving, COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking, COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode, DECODE ( COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') ins_srtcontrole_eenheid, sc.ins_srtcontrole_level, -- prioriteit COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage, x.ins_srtcontroledl_xcp_startdat, COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind, COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep, (SELECT count(*)+1 FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_scenario_key = dc.ins_scenario_key) uitvoer_x, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 3, 'Ter uitvoering', 5, 'Afgemeld', 6, 'Voltooid') status, COALESCE(dc.ins_deelsrtcontrole_datum, dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling) ins_deelsrtcontrole_datum, CASE WHEN tr.mjob_doorgeschoven IS NOT NULL THEN TO_CHAR (dc.ins_deelsrtcontrole_freezedate, 'yyyy') ELSE NULL END mjob_doorgeschoven, dc.ins_deelsrtcontrole_plandatum uitvoerdatum_gepland, tr.datum_inbehandeling uitvoerdatum_inbehandeling, dc.ins_deelsrtcontrole_datum uitvoerdatum_gereed, (SELECT CASE WHEN cm.ins_controlemode_success = 1 THEN 'ja' ELSE 'nee' END FROM ins_controlemode cm WHERE cm.ins_controlemode_key = dc.ins_controlemode_key) succes, CASE WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'ja' WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'nee' ELSE '' END actie_vereist, tr.datum_afgemeld afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..) tr.datum_verwerkt verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid) dc.ins_deelsrtcontrole_datum_org uitvoerdatum_origineel, CASE WHEN dc.ins_deelsrtcontrole_plandatum IS NOT NULL AND dc.ins_deelsrtcontrole_plandatum > dc.ins_deelsrtcontrole_datum_org THEN 'respijt' ELSE '' END NN_respijt, CASE WHEN dc.ins_deelsrtcontrole_status in (5,6) AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Te laat' WHEN dc.ins_deelsrtcontrole_status in (5,6) AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Op tijd' ELSE '' END NN_ins_deelsrtcontrole_status, CASE WHEN dc.ins_deelsrtcontrole_status in (5,6) THEN dc.ins_deelsrtcontrole_datum - COALESCE(dcp.ins_deelsrtcontrole_datum, x.ins_srtcontroledl_xcp_startdat, d.ins_deel_aanmaak) ELSE NULL END NN_cycli_dagen, COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal, cm.ins_controlemode_oms, cm.ins_controlemode_opmerking, dc.ins_deelsrtcontrole_opmerking, dc.prs_perslid_key, pf.prs_perslid_naam_full, cd.ins_discipline_omschrijving, pd.prs_dienst_omschrijving, (SELECT max(b.prs_bedrijf_key) FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl WHERE pd.prs_dienst_key = bdl.prs_dienst_key AND bdl.prs_bedrijf_key = b.prs_bedrijf_key AND ( bdl.alg_gebouw_key = d.alg_gebouw_key OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key FROM ins_deelsrtcontrole dc, ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst pd, alg_locatie l, alg_gebouw g, ins_controlemode cm, ins_srtcontroledl_xcp x, prs_v_perslid_fullnames_all pf, ctr_discipline cd, ctr_disc_params cdp, (SELECT v.ins_deelsrtcontrole_key, v.ins_deelsrtcontrole_key_vorige, dcv.ins_deelsrtcontrole_datum, dcv.ins_controlemode_key, dcv.ins_deelsrtcontrole_status FROM (SELECT dc.ins_deelsrtcontrole_key, dc.ins_deel_key, dc.ins_srtcontrole_key, (SELECT MAX (dc2.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_scenario_key = dc.ins_scenario_key) AS ins_deelsrtcontrole_key_vorige FROM ins_deelsrtcontrole dc, ins_srtcontroledl_xcp x, ins_srtcontrole sc WHERE dc.ins_deel_key = x.ins_deel_key AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key) v, ins_deelsrtcontrole dcv WHERE v.ins_deelsrtcontrole_key_vorige = dcv.ins_deelsrtcontrole_key) dcp, -- dc_previous (SELECT dc.ins_deelsrtcontrole_key, (SELECT MAX (fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCBE' AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCAF' AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_afgemeld, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCVE' AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) datum_verwerkt, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCUP' AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0 AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) mjob_doorgeschoven FROM ins_deelsrtcontrole dc ) tr WHERE dc.ins_deel_key = d.ins_deel_key AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND dc.ins_controlemode_key = cm.ins_controlemode_key(+) AND dc.prs_perslid_key = pf.prs_perslid_key(+) AND sc.ctr_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+) AND x.ins_deel_key = d.ins_deel_key(+) AND sc.prs_dienst_key = pd.prs_dienst_key(+) AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND dc.ins_deelsrtcontrole_key = dcp.ins_deelsrtcontrole_key (+) AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key (+) UNION ALL -- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is. -- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn. SELECT 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, CASE WHEN sc.ins_srtcontrole_mode = 0 THEN lcl.l ('lcl_ins_srtcontrole_moment') ELSE lcl.l ('lcl_ins_srtcontrole_interval') END taak_modus, cdp.ctr_disc_params_ismjob ismjob, sc.ins_srtcontrole_options taakopties, (SELECT COUNT (dc2.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deel_key = xcp.ins_deel_key AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key) uitvoer_aantal, NULL ins_deelsrtcontrole_key, (SELECT MAX (dc2.ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deel_key = xcp.ins_deel_key AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key ) deelsrtcontrole_key_vorig, xcp.ins_deel_key, d.ins_deel_omschrijving, sc.ins_srtcontrole_key, xcp.ins_srtcontrole_info, ins_srtcontrole_niveau, xcp.ins_srtcontrole_omschrijving, xcp.ins_srtcontrole_opmerking, xcp.ins_srtcontrole_periode, DECODE (xcp.ins_srtcontrole_eenheid, 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') ins_srtcontrole_eenheid, xcp.ins_srtcontrole_level, -- prioriteit xcp.ins_srtcontroledl_xcp_perc, xcp.ins_srtcontroledl_xcp_startdat, xcp.ins_srtcontroledl_xcp_eind, xcp.ins_srtcontroledl_xcp_groep, 0 uitvoer_x, NULL status, CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN COALESCE ( ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1)) WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN -- Als mjob taak afhandeling niet succesvol heeft (= niet uitgevoerd), dan wordt deze in Facilitor voor nieuwe freeze-jaar opgenomen/voorgesteld. Nemen we ook zo op in deze dwh-view (SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year') ELSE fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob) END ins_deelsrtcontrole_datum, NULL mjob_doorgeschoven, NULL uitvoerdatum_gepland, NULL uitvoerdatum_inbehandeling, NULL uitvoerdatum_gereed, NULL succes, NULL actie_vereist, NULL afmeld_datum, NULL verwerk_datum, NULL uitvoerdatum_origineel, NULL respijt, CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN DECODE ( SIGN( COALESCE (ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1)) - SYSDATE), -1, 'Te laat', '') WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN DECODE ( SIGN( (SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year') - SYSDATE), -1, 'Te laat', '') ELSE DECODE ( SIGN( (fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob)) - SYSDATE), -1, 'Te laat', '') END ins_deelsrtcontrole_status, NULL cycli_dagen, xcp.ins_srtcontrole_materiaal, NULL ins_controlemode_oms, NULL ins_controlemode_opmerking, NULL ins_deelsrtcontrole_opmerking, NULL prs_perslid_key, NULL prs_perslid_naam_full, cd.ins_discipline_omschrijving, pd.prs_dienst_omschrijving, (SELECT max(b.prs_bedrijf_key) FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl WHERE pd.prs_dienst_key = bdl.prs_dienst_key AND bdl.prs_bedrijf_key = b.prs_bedrijf_key AND ( bdl.alg_gebouw_key = d.alg_gebouw_key OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key FROM ins_v_defined_inspect_xcp xcp, ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst pd, alg_locatie l, alg_gebouw g, ctr_discipline cd, ctr_disc_params cdp, (SELECT dc.ins_deelsrtcontrole_key, dc.ins_deel_key, dc.ins_srtcontrole_key, dc.ins_controlemode_key, cm.ins_controlemode_success, dc.ins_deelsrtcontrole_freezedate, COALESCE(dc.ins_deelsrtcontrole_datum, DECODE(xcp.ctr_ismjob, 1, COALESCE(dc.ins_deelsrtcontrole_freezedate, dc.ins_deelsrtcontrole_plandatum), COALESCE(dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling) )) datum_uitvoer FROM ins_deelsrtcontrole dc, ins_v_defined_inspect_xcp xcp, ins_controlemode cm, (SELECT dc.ins_deelsrtcontrole_key, (SELECT MAX (fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'INSCBE' AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling FROM ins_deelsrtcontrole dc ) tr WHERE dc.ins_deelsrtcontrole_key = (SELECT max(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key) AND dc.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND dc.ins_deel_key = xcp.ins_deel_key AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key AND dc.ins_controlemode_key = cm.ins_controlemode_key(+) ) v WHERE xcp.ins_deel_key = d.ins_deel_key AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key AND xcp.ins_srtcontrole_periode <> 0 AND sc.ctr_discipline_key = cd.ins_discipline_key AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key AND sc.prs_dienst_key = pd.prs_dienst_key(+) AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key AND xcp.ins_deel_key = v.ins_deel_key (+) AND xcp.ins_srtcontrole_key = v.ins_srtcontrole_key (+) ; CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie ( deelsrtcontrole_key, deel_key, deel_omschrijving, srtcontrole_info, srtcontrole_niveau, srtcontrole_omschrijving, srtcontrole_opmerking, srtcontrole_periode, srtcontrole_eenheid, srtcontrole_level, -- prioriteit srtcontrole_percentage, srtcontrole_start, srtcontrole_eind, srtcontrole_groep, deelsrtcontrole_datum, deelsrtcontrole_gepland, deelsrtcontrole_status, deelsrtcontrole_status_next, srtcontrole_materiaal, controlemode_omschrijving, controlemode_opmerking, deelsrtcontrole_opmerking, prs_perslid_key, gecontroleerd_door, taak_categorie, dienst, prs_bedrijf_key, status, uitvoerdatum ) AS SELECT dc.ins_deelsrtcontrole_key, d.ins_deel_key, d.ins_deel_omschrijving, sc.ins_srtcontrole_info, sc.ins_srtcontrole_niveau, sc.ins_srtcontrole_omschrijving, COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking, COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode, DECODE ( COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') ins_srtcontrole_eenheid, sc.ins_srtcontrole_level, -- prioriteit COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage, x.ins_srtcontroledl_xcp_startdat, COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind, COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep, ins_deelsrtcontrole_datum, (SELECT MAX (dc2.ins_deelsrtcontrole_datum) + sc.ins_srtcontrole_periode FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_datum < dc.ins_deelsrtcontrole_datum AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_controlemode_key = dc.ins_controlemode_key) ins_deelsrtcontrole_gepland, (SELECT DECODE ( SIGN( MAX (dc2.ins_deelsrtcontrole_datum) + sc.ins_srtcontrole_periode - dc.ins_deelsrtcontrole_datum), -1, 'Te laat', 'Op tijd') FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_datum < dc.ins_deelsrtcontrole_datum AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_controlemode_key = dc.ins_controlemode_key) ins_deelsrtcontrole_status, (SELECT DECODE ( COUNT ( * ), 0, DECODE ( SIGN( (dc.ins_deelsrtcontrole_datum + sc.ins_srtcontrole_periode) - SYSDATE), -1, 'Te laat', '')) status_fut FROM ins_deelsrtcontrole dc2 WHERE dc2.ins_deelsrtcontrole_datum > dc.ins_deelsrtcontrole_datum AND dc2.ins_deel_key = dc.ins_deel_key AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key AND dc2.ins_controlemode_key = dc.ins_controlemode_key) ins_deelsrtcontrole_next, COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal, cm.ins_controlemode_oms, cm.ins_controlemode_opmerking, dc.ins_deelsrtcontrole_opmerking, dc.prs_perslid_key, pf.prs_perslid_naam_full, cd.ins_discipline_omschrijving, pd.prs_dienst_omschrijving, (SELECT max(b.prs_bedrijf_key) FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl WHERE pd.prs_dienst_key = bdl.prs_dienst_key AND bdl.prs_bedrijf_key = b.prs_bedrijf_key AND ( bdl.alg_gebouw_key = d.alg_gebouw_key OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 5, 'Afgemeld', 6, 'Voltooid') status, dc.ins_deelsrtcontrole_datum FROM ins_deelsrtcontrole dc, ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst pd, alg_locatie l, alg_gebouw g, ins_controlemode cm, ins_srtcontroledl_xcp x, prs_v_perslid_fullnames_all pf, ctr_discipline cd WHERE dc.ins_deel_key = d.ins_deel_key AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND dc.ins_controlemode_key = cm.ins_controlemode_key(+) AND dc.prs_perslid_key = pf.prs_perslid_key(+) AND sc.ctr_discipline_key = cd.ins_discipline_key AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+) AND x.ins_deel_key = d.ins_deel_key(+) AND sc.prs_dienst_key = pd.prs_dienst_key(+) AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key UNION ALL -- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is. -- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn. SELECT NULL ins_deelsrtcontrole_key, xcp.ins_deel_key, d.ins_deel_omschrijving, xcp.ins_srtcontrole_info, ins_srtcontrole_niveau, xcp.ins_srtcontrole_omschrijving, xcp.ins_srtcontrole_opmerking, xcp.ins_srtcontrole_periode, DECODE (xcp.ins_srtcontrole_eenheid, 0, 'Uurlijks', 1, 'Dagelijks', 2, 'Wekelijks', 3, 'Maandelijks', 4, 'Jaarlijks', 'Onbekend') ins_srtcontrole_eenheid, xcp.ins_srtcontrole_level, -- prioriteit xcp.ins_srtcontroledl_xcp_perc, xcp.ins_srtcontroledl_xcp_startdat, xcp.ins_srtcontroledl_xcp_eind, xcp.ins_srtcontroledl_xcp_groep, DECODE ( (SELECT COUNT ( * ) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND dsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key), 0, COALESCE ( ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1)), fac.nextcyclusdatedeel (d.ins_deel_key, xcp.ins_srtcontrole_key, 1)) ins_deelsrtcontrole_datum, NULL ins_deelsrtcontrole_gepland, DECODE ( SIGN(DECODE ( (SELECT COUNT ( * ) FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = d.ins_deel_key AND dsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key), 0, COALESCE ( ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1)), fac.nextcyclusdatedeel (d.ins_deel_key, xcp.ins_srtcontrole_key, 1)) - SYSDATE), -1, 'Te laat', 'Op tijd') ins_deelsrtcontrole_status, NULL ins_deelsrtcontrole_next, xcp.ins_srtcontrole_materiaal, NULL ins_controlemode_oms, NULL ins_controlemode_opmerking, NULL ins_deelsrtcontrole_opmerking, NULL prs_perslid_key, NULL prs_perslid_naam_full, cd.ins_discipline_omschrijving, pd.prs_dienst_omschrijving, (SELECT max(b.prs_bedrijf_key) FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl WHERE pd.prs_dienst_key = bdl.prs_dienst_key AND bdl.prs_bedrijf_key = b.prs_bedrijf_key AND ( bdl.alg_gebouw_key = d.alg_gebouw_key OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key, NULL status, NULL ins_deelsrtcontrole_datum FROM ins_v_defined_inspect_xcp xcp, ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst pd, alg_locatie l, alg_gebouw g, ctr_discipline cd WHERE xcp.ins_deel_key = d.ins_deel_key AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key AND xcp.ins_srtcontrole_periode <> 0 AND sc.ctr_discipline_key = cd.ins_discipline_key AND sc.prs_dienst_key = pd.prs_dienst_key(+) AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_INS_OBJECT ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_ins_object ( ins_deel_key, identificatie, beschrijving, discipline_omschrijving, groep_omschrijving, objectsoort_omschrijving, objectsoort_code, registratiedatum, vervaldatum, koppel_type, plaats_eigenaar, regio_key, district_key, locatie_key, gebouw_key, terreinsector_key, verdieping_key, ruimte_key, werkplek_key, afdeling_key, perslid_key, beheerder, actief, hoeveelheid, conditie, prioriteit ) AS SELECT ins_deel_key, ins_deel_omschrijving identificatie, ins_deel_opmerking beschrijving, ins_discipline_omschrijving discipline_omschrijving, ins_srtgroep_omschrijving groep_omschrijving, ins_srtdeel_omschrijving objectsoort_omschrijving, ins_srtdeel_code objectsoort_code, ins_deel_aanmaak registratiedatum, ins_deel_vervaldatum vervaldatum, 'Afdeling' koppel_type, (SELECT d.prs_afdeling_omschrijving FROM prs_v_afdeling d WHERE prs_afdeling_key = COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key)) plaats_eigenaar, NULL alg_regio_key, NULL alg_district_key, NULL alg_locatie_key, NULL alg_gebouw_key, NULL terreinsector_key, NULL alg_verdieping_key, NULL alg_ruimte_key, NULL prs_werkplek_key, COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_afdeling_key, NULL prs_perslid_key, pf1.prs_perslid_naam_full beheerder, ins_deel_actief, ins_deel_aantal, ins_deel_mjb_score1, ins_deel_mjb_score2 FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel srt, ins_v_aanwezigsrtgroep sg, ins_v_aanwezigdiscipline disc, prs_v_perslid_fullnames_all pf1, prs_v_afdeling_boom pb WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = srt.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND prs_perslid_key_beh = pf1.prs_perslid_key(+) AND d.ins_alg_ruimte_key = pb.prs_afdeling_key AND d.ins_deel_module = 'INS' AND d.ins_deel_parent_key IS NULL AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'A' UNION SELECT ins_deel_key, ins_deel_omschrijving, ins_deel_opmerking, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_srtdeel_code, ins_deel_aanmaak, ins_deel_vervaldatum, 'Persoon', COALESCE (pf2.prs_perslid_naam_full, 'onbekend') eigenaar, NULL alg_regio_key, NULL alg_district_key, NULL alg_locatie_key, NULL alg_gebouw_key, NULL terreinsector_key, NULL alg_verdieping_key, NULL alg_ruimte_key, NULL prs_werkplek_key, NULL prs_afdeling_key, COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_perslid_key, pf1.prs_perslid_naam_full, ins_deel_actief, ins_deel_aantal, ins_deel_mjb_score1, ins_deel_mjb_score2 FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel srt, ins_v_aanwezigsrtgroep sg, ins_v_aanwezigdiscipline disc, prs_v_perslid_fullnames_all pf1, prs_v_perslid_fullnames_all pf2 WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = srt.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND prs_perslid_key_beh = pf1.prs_perslid_key(+) AND d.ins_deel_module = 'INS' AND d.ins_deel_parent_key IS NULL AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'P' AND pf2.prs_perslid_key(+) = COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) UNION SELECT ins_deel_key, ins_deel_omschrijving, ins_deel_opmerking, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_srtdeel_code, ins_deel_aanmaak, ins_deel_vervaldatum, DECODE (o.alg_onroerendgoed_type, 'R', 'Ruimte', 'T', 'Terrein', 'W', 'Werkplek'), o.alg_plaatsaanduiding || ' (' || DECODE ( o.alg_onroerendgoed_type, 'R', (SELECT r.alg_ruimte_omschrijving FROM alg_ruimte r WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key), 'T', (SELECT t.alg_terreinsector_naam FROM alg_terreinsector t WHERE t.alg_terreinsector_key = d.ins_alg_ruimte_key), 'W', (SELECT r.alg_ruimte_omschrijving FROM alg_ruimte r, prs_werkplek w WHERE r.alg_ruimte_key = w.prs_alg_ruimte_key AND w.prs_werkplek_key = d.ins_alg_ruimte_key) ) || ')' eigenaar, di.alg_regio_key alg_regio_key, l.alg_district_key alg_district_key, o.alg_locatie_key alg_locatie_key, o.alg_gebouw_key alg_gebouw_key, o.alg_terreinsector_key terreinsector_key, o.alg_verdieping_key alg_verdieping_key, o.alg_ruimte_key alg_ruimte_key, o.prs_werkplek_key alg_werkplek_key, NULL prs_afdeling_key, NULL prs_perslid_key, pf1.prs_perslid_naam_full, ins_deel_actief, ins_deel_aantal, ins_deel_mjb_score1, ins_deel_mjb_score2 FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel srt, ins_v_aanwezigsrtgroep sg, ins_v_aanwezigdiscipline disc, prs_v_perslid_fullnames_all pf1, ins_v_alg_overzicht o, alg_locatie l, alg_district di WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = srt.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND prs_perslid_key_beh = pf1.prs_perslid_key(+) AND d.ins_deel_module = 'INS' AND d.ins_deel_parent_key IS NULL AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) IN ('T', 'R', 'W') AND o.alg_onroerendgoed_keys = COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) AND o.alg_onroerendgoed_type = COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) AND o.alg_locatie_key = d.ins_alg_locatie_key AND o.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_INS_KENMERK_OBJECT ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_object ( deel_key, ins_kenmerk_omschrijving, ins_kenmerk_waarde ) AS SELECT ins_deel_key deel_key, srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving, aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype, srt.fac_kenmerkdomein_key, kd.ins_kenmerkdeel_waarde) kenmerk_waarde FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk srt WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND ins_kenmerkdeel_verwijder IS NULL; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_KENMERK_INSPECTIE ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_inspectie ( deelsrtcontrole_key, ins_kenmerk_omschrijving, ins_kenmerk_waarde ) AS SELECT ins_deelsrtcontrole_key deelsrtcontrole_key, srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving, aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype, srt.fac_kenmerkdomein_key, kds.ins_kmdeelsrtcontr_waarde) kenmerk_waarde FROM ins_kmdeelsrtcontr kds, ins_kenmerk k, ins_srtkenmerk srt WHERE kds.ins_kenmerk_key = k.ins_kenmerk_key AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND ins_kmdeelsrtcontr_verwijder IS NULL; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_UREN ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_uren ( mld_opdr_id, prs_perslid_key, datum, uren_besteed, uren_opmerking, uren_status ) AS SELECT ug.mld_melding_key || '/' || ug.mld_opdr_bedrijfopdr_volgnr, ug.prs_perslid_key, ug.mld_opdr_uren_datum, ug.mld_opdr_uren_besteed, ug.mld_opdr_uren_opmerking, REPLACE(ug.uren_status_tekst, '&'||'nbsp;', ' ') uren_status_tekst FROM aaxx_v_exact_uren_gegevens ug; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_UREN_IMPROD ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_uren_improd ( prs_perslid_key, code_improductief, omschr_improductief, datum, uren_besteed, uren_opmerking, uren_status ) AS SELECT ou.prs_perslid_key, io.mld_impropdr_code, io.mld_impropdr_omschrijving, ou.mld_opdr_uren_datum, ou.mld_opdr_uren_besteed, ou.mld_opdr_uren_opmerking, REPLACE(lx.fac_locale_xsl_tekst, '&'||'nbsp;', ' ') fac_locale_xsl_tekst FROM mld_opdr_uren ou, mld_impropdr io, (SELECT * FROM fac_locale_xsl WHERE fac_locale_xsl_lang = 'NL') lx WHERE ou.mld_impropdr_key = io.mld_impropdr_key AND lx.fac_locale_xsl_label = 'lcl_mld_uren_status_' || ou.mld_opdr_uren_status; ------------------------------------------------------------------------------- -- DATAWAREHOUSE - DWH_TRACKING ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_tracking AS SELECT t.fac_tracking_refkey ref_key, sn.fac_srtnotificatie_xmlnode soort, t.fac_tracking_datum datum, -- specifieke actiecodes zijn bepaald bij mareon-factuurverwerking (FIN_FACTUR_MARX) en zijn vastgelegd op Z:\Project\Implementaties\Customers\AAXX\DOC\Mareon_Factuurverwerking\Mareon_factuurscanning_SPELREGELS.xlsx (ticket AAIT#75826) CASE WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat') > 0 THEN 'FINA01' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht') > 0 THEN 'FINA02' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND t.fac_tracking_oms = 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' THEN 'FINA03' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Bedrag van gekoppelde verplichting is 0,- euro en er is een REDEN ingevuld') > 0 THEN 'FINA04' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Credit geboekt op Opdracht/Bestelling') > 0 THEN 'FINA05' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Credit geboekt op Contract in voorgaande periode') > 0 THEN 'FINA06' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Verdeelperiode voor Contract kan niet goed bepaald worden en is dus niet weggeschreven') > 0 THEN 'FINA07' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Betreft factuur op Contract uit vorig boekjaar') > 0 THEN 'FINA08' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld') > 0 THEN 'FINA09' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract met gebroken boekjaar en dus (nog) geen automatische bepaling verdeelperiode') > 0 THEN 'FINA10' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Dit betreft een verzamelfactuur') > 0 THEN 'FINA11' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'PDF opslaan voor SABIC GENK') > 0 THEN 'FINA12' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract CF en 90% al gefactureerd in voorgaande periode') > 0 THEN 'FINA13' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)') > 0 THEN 'FINA14' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Betreft D-categorie factuur!') > 0 THEN 'FINA15' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Leveranciersnummer ontbreekt op leverancierskaart') > 0 THEN 'FINA16' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract met gebroken boekjaar (check verdeelperiode)') > 0 THEN 'FINA17' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'PDF factuur doorzetten naar klant') > 0 THEN 'FINA18' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur op opdracht met 0-reden') > 0 THEN 'FINA19' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur op contract met onjuiste scoping') > 0 THEN 'FINA20' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuurregels niet (allemaal) aangemaakt') > 0 THEN 'FINA21' WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Gecontroleerd: (leeg) --> 1') > 0 THEN 'FINAOK' ELSE fac_srtnotificatie_code END actiecode, t.fac_tracking_oms omschrijving, t.prs_perslid_key prs_perslid_key FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode IS NOT NULL; ------------------------------------------------------------------------------- -- DATAWAREHOUSE - DWH_FAQ ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_faq AS SELECT f.fac_faq_key, (SELECT fac_version_cust FROM fac_version) fac_version_cust, 'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || std.mld_stdmelding_key ||chr(38) || 'role=fe' ||chr(38) || 'sso=HEYDAY' link, 'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/fac/fac_faq.asp?faq_key=' || f.fac_faq_key ||chr(38) || 'role=bo' ||chr(38) || 'sso=HEYDAY' faq_link, fac_faq_question, fac_faq_answer, f.fac_faq_source, f.fac_faq_datum, sd.ins_srtdiscipline_prefix || '-' || d.ins_discipline_omschrijving ins_discipline_omschrijving, std.mld_stdmelding_key, std.mld_stdmelding_omschrijving, DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '') alg_scope, aogg.alg_onroerendgoed_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam) alg_gebouwterrein_naam, COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code) alg_gebouwterrein_code, aogg.alg_verdieping_code, aogg.alg_ruimte_nr, DECODE (f.fac_faq_level, 1, 'Zelfservice', 2, 'Professionals', 3, 'Zelfservice en Professionals') fac_faq_level, fac_faq_hint, fac_faq_url, pf.prs_perslid_naam_full prs_perslid_key_mut FROM fac_faq f, mld_stdmeldingfaq s, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, alg_algfaq a, alg_v_onroerendgoed_gegevens aogg, alg_locatie l, prs_v_perslid_fullnames_all pf WHERE f.fac_faq_key = s.fac_faq_key AND s.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND a.fac_faq_key = f.fac_faq_key AND a.alg_locatie_key = l.alg_locatie_key(+) AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+) AND f.prs_perslid_key = pf.prs_perslid_key(+); ------------------------------------------------------------------------------- -- DATAWAREHOUSE - DWH_FAQ2 Kennisbankitems per vakgroepen en locaties ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW AAXX_V_DWH_FAQ2 ( KENNISBANKSLEUTEL, VRAAG, ANTWOORD, BRON, DATUM, URL, LAATS_GEWIJZIGD, LOCATIE_SCOPE, ONTROERENDGOED_OMSCHR, LOCATIE, LOCATIE_CODE, GEBOUW_NAAM, TERREIN_CODE, VEDRIEPING_CODE, RUIMTE_NR, KENNISBANK_NIVEAU, KENNISBANK_HINT, KENNISBANK_URL, VAKGROEP ) AS SELECT f.fac_faq_key, f.fac_faq_question, f.fac_faq_answer, f.fac_faq_source, f.fac_faq_datum, 'https://' || LOWER ((SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/fac/fac_faq.asp?faq_key=' || f.fac_faq_key || CHR (38) || 'role=bo' || CHR (38) || 'sso=1', pf.PRS_PERSLID_NAAM_FULL, DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '') alg_scope, aogg.alg_onroerendgoed_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam) alg_gebouwterrein_naam, COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code) alg_gebouwterrein_code, aogg.alg_verdieping_code, aogg.alg_ruimte_nr, DECODE (f.fac_faq_level, 1, 'Zelfservice', 2, 'Professionals', 3, 'Zelfservice en Professionals') fac_faq_level, fac_faq_hint, fac_faq_url, sd.ins_srtdiscipline_prefix || '-' || d.ins_discipline_omschrijving ins_discipline_omschrijving FROM fac_faq f, prs_v_perslid_fullnames_all pf, alg_algfaq a, alg_v_onroerendgoed_gegevens aogg, alg_locatie l, mld_stdmeldingfaq s, ins_tab_discipline d, ins_srtdiscipline sd WHERE f.fac_faq_key = s.fac_faq_key (+) AND s.ins_discipline_key = d.ins_discipline_key (+) AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+) AND f.fac_faq_key = a.fac_faq_key (+) AND a.alg_locatie_key = l.alg_locatie_key(+) AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+) AND f.prs_perslid_key = pf.prs_perslid_key(+) ORDER BY f.fac_faq_key; ------------------------------------------------------------------------------- -- DATAWAREHOUSE - DWH_USRDATA Data uit de eigen tabellen in Facilitor ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_usrdata ( tabel_key, tabel_naam, waarde_key, waarde_code, waarde_omschrijving1, waarde_omschrijving2, waarde_vervaldatum, parenttabel_key, parenttabel_waarde_key, parenttabel_waarde ) AS SELECT ut.fac_usrtab_key, ut.fac_usrtab_naam, ud.fac_usrdata_key, ud.fac_usrdata_code, ud.fac_usrdata_omschr, ud.fac_usrdata_omschr2, ud.fac_usrdata_vervaldatum, ut.fac_usrtab_parentkey, ud.fac_usrdata_parentkey, (SELECT udp.fac_usrdata_omschr FROM fac_usrdata udp WHERE udp.fac_usrtab_key = ut.fac_usrtab_parentkey AND udp.fac_usrdata_key = ud.fac_usrdata_parentkey) parenttabel_waarde FROM fac_usrdata ud, fac_usrtab ut WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_verwijder IS NULL AND ud.fac_usrdata_verwijder IS NULL ; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_BUDGET_TRACKER ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_budget_tracker ( nummer, datum, status, laatste_actie, vakgroeptype, vakgroep, kostensoort_code, kostensoort_omschrijving, financiele_waarde, kostensoortgroep_omschrijving, melding, omschrijving, organisatie, naam, kostenplaats, kostenplaats_omschrijving, plaats, locatie, gebouw, code_exact, opdracht_status, uitvoerende, contactpersoon, uren, uurloon, materiaal, kosten, gefactureerd ) AS SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer, o.mld_opdr_datumbegin datum, (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr s WHERE o.mld_statusopdr_key = s.mld_statusopdr_key) status, mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key) laatste_actie, sd.ins_srtdiscipline_prefix vakgroeptype, md.ins_discipline_omschrijving vakgroep, COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms) kostensoort_code, COALESCE (kstd.prs_kostensoort_opmerking, kvg.prs_kostensoort_opmerking) kostensoort_omschrijving, COALESCE (kstd.prs_kostensoort_refcode, kvg.prs_kostensoort_refcode) financiele_waarde, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = COALESCE (kstd.prs_kostensoortgrp_key, kvg.prs_kostensoortgrp_key)) kostensoortgroep_omschrijving, std.mld_stdmelding_omschrijving melding, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)) omschrijving, (SELECT d.prs_afdeling_naam FROM prs_v_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key) organisatie, p.prs_perslid_naam || DECODE (NVL (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (NVL (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') naam, (SELECT k.prs_kostenplaats_nr FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kostenplaats, (SELECT k.prs_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key) kostenplaats_omschrijving, (SELECT alg_locatie_code FROM alg_locatie l WHERE m.mld_alg_locatie_key = l.alg_locatie_key) || (SELECT CASE COALESCE (g.alg_gebouw_code, '') WHEN '' THEN '' ELSE '-' || g.alg_gebouw_code END || CASE COALESCE (g.alg_verdieping_code, '') WHEN '' THEN '' ELSE '-' || g.alg_verdieping_code END || CASE COALESCE (g.alg_ruimte_nr, '') WHEN '' THEN '' ELSE '-' || g.alg_ruimte_nr END FROM alg_v_allonrgoed_gegevens g WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys) plaats, alg_locatie_code locatie, alg_gebouw_code gebouw, COALESCE ( (SELECT exact_code FROM aaxx_v_exact_code_gebouw ogk WHERE ogk.alg_gebouw_key = v.alg_gebouw_key), v.alg_gebouw_code) code_exact, (SELECT mld_statusopdr_omschrijving FROM mld_statusopdr so WHERE o.mld_statusopdr_key = so.mld_statusopdr_key) opdracht_status, COALESCE ( (SELECT prs_bedrijf_naam FROM prs_bedrijf b WHERE o.mld_uitvoerende_keys = prs_bedrijf_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE o.mld_uitvoerende_keys = prs_perslid_key)) uitvoerende, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE o.prs_perslid_key = pf.prs_perslid_key) contactpersoon, o.mld_opdr_uren uren, o.mld_opdr_uurloon uurloon, o.mld_opdr_materiaal materiaal, o.mld_opdr_kosten kosten, COALESCE ( (SELECT SUM (f.fin_factuur_totaal) FROM aaxx_v_aanwezigfactuur f WHERE f.mld_opdr_key = o.mld_opdr_key), 0) gefactureerd FROM mld_melding m, mld_discipline md, ins_srtdiscipline sd, alg_v_allonrgoed_gegevens v, alg_locatie l, alg_district di, prs_perslid p, mld_opdr o, mld_stdmelding std, prs_kostensoort kstd, prs_kostensoort kvg WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = di.alg_district_key(+) AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+) AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = md.ins_discipline_key AND m.mld_melding_key = o.mld_melding_key AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+) AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+) UNION ALL SELECT cnt_contract_nummer_intern, c.cnt_contract_looptijd_van, DECODE ( SIGN (cnt_contract_looptijd_van - SYSDATE), 1, 'Toekomst', -1, DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE), 1, 'Actueel', -1, 'Verlopen')) status, c.cnt_contract_looptijd_tot laatste_actie, 'Contract' vakgroeptype, d.ins_discipline_omschrijving vakgroep, k.prs_kostensoort_oms kostensoort_code, k.prs_kostensoort_opmerking kostensoort_omschrijving, k.prs_kostensoort_refcode financiele_waarde, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key) kostensoortgroep_omschrijving, c.cnt_contract_omschrijving melding, SUBSTR ( REPLACE (cnt_contract_document, CHR (13) || CHR (10), ''), 1, 2000) omschrijving, prs_afdeling_naam organisatie, p.prs_perslid_naam || DECODE (NVL (p.prs_perslid_voorletters, ''), '', '', ', ' || p.prs_perslid_voorletters) || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''), '', '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (NVL (p.prs_perslid_voornaam, ''), '', '', ' (' || p.prs_perslid_voornaam || ')') naam, kp.prs_kostenplaats_nr kostenplaats, kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving, alg_locatie_code || '-' || alg_gebouw_code plaats, alg_locatie_code locatie, alg_gebouw_code gebouw, COALESCE ( (SELECT exact_code FROM aaxx_v_exact_code_gebouw ogk WHERE ogk.alg_gebouw_key = g.alg_gebouw_key), g.alg_gebouw_code) code_exact, '-' opdracht_status, prs_bedrijf_naam uitvoerende, '-' contactpersoon, 0 uren, 0 uurloon, 0 materiaal, COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten), 0) kosten, COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * (SELECT SUM (fin_factuur_totaal) FROM aaxx_v_aanwezigfactuur f WHERE f.cnt_contract_key = c.cnt_contract_key)), 0) gefactureerd FROM cnt_contract c, cnt_discipline d, cnt_contract_plaats cp, prs_bedrijf b, prs_kostensoort k, prs_kostenplaats kp, prs_afdeling a, prs_perslid p, alg_locatie l, alg_gebouw g, prs_contactpersoon cop, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.prs_perslid_key_beh = p.prs_perslid_key AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+) AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND cnt_contract_verwijder IS NULL; ------------------------------------------------------------------------------- -- EXPORTFUNCTIE - DWH_SEARCH_RESULTS ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_dwh_gui_counter ( fac_gui_counter_key, fac_gui_counter_group, fac_gui_counter_info, fac_gui_counter_refkey, fac_gui_counter_choice, fac_gui_counter_result, fac_gui_counter_date, prs_perslid_key, prs_perslid_naam_full ) AS SELECT fgc.fac_gui_counter_key, fgc.fac_gui_counter_group, fgc.fac_gui_counter_info, fgc.fac_gui_counter_refkey, choice.fac_gui_counter_info fac_gui_counter_choice, result.fac_gui_counter_info fac_gui_counter_result, fac_gui_counter_date, fgc.prs_perslid_key, prs_perslid_naam_full FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, (SELECT fac_gui_counter_refkey, fac_gui_counter_info FROM fac_gui_counter fgc WHERE fac_gui_counter_info IS NOT NULL AND fac_gui_counter_group = 'searchchoice') choice, (SELECT fac_gui_counter_refkey, fac_gui_counter_info FROM fac_gui_counter fgc WHERE fac_gui_counter_info IS NOT NULL AND fac_gui_counter_group = 'searchresult') result WHERE fac_gui_counter_group = 'search' AND fgc.fac_gui_counter_info IS NOT NULL AND fgc.prs_perslid_key = pf.prs_perslid_key AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key UNION ALL SELECT fgc.fac_gui_counter_key, fgc.fac_gui_counter_group, fac_usrrap_omschrijving, fgc.fac_gui_counter_refkey, NULL, NULL, fac_gui_counter_date, fgc.prs_perslid_key, prs_perslid_naam_full FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, fac_usrrap fr WHERE fgc.fac_gui_counter_group = 'report' AND fgc.prs_perslid_key = pf.prs_perslid_key(+) AND fr.fac_usrrap_key(+) = fgc.fac_gui_counter_refkey UNION ALL SELECT fgc.fac_gui_counter_key, fgc.fac_gui_counter_group, COALESCE (fac_menu_altlabel, lcl.l (fac_menuitems_label)), fgc.fac_gui_counter_refkey, NULL, NULL, fac_gui_counter_date, fgc.prs_perslid_key, prs_perslid_naam_full FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, fac_menu m, fac_menuitems mi WHERE fgc.fac_gui_counter_group = 'menu' AND fgc.prs_perslid_key = pf.prs_perslid_key(+) AND m.fac_menu_key = fac_gui_counter_refkey AND mi.fac_menuitems_key(+) = m.fac_menuitems_key; ------------------------------------------------------------------------------- -- Rapportage tbv berekening aantal key users ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_lcrap_key_stats ( PRS_PERSLID_KEY, PRS_PERSLID_OSLOGIN, PRS_PERSLID_OSLOGIN2, PRS_PERSLID_NR, PRS_PERSLID_NAAM_FULL, PRS_AFDELING_NAAM, LEV_WRITE_CNT, MAX_ALG_WRITE, MAX_PRS_WRITE, LEV_READ_CNT, MAX_ALG_READ, MAX_PRS_READ, AUT_GROEP_CNT ) AS SELECT x.prs_perslid_key, x.prs_perslid_oslogin, x.prs_perslid_oslogin2, x.prs_perslid_nr, x.prs_perslid_naam_full, prs_afdeling_naam, COALESCE (y.lev_write_cnt, 0) lev_write_cnt, y.max_alg_write, y.max_prs_write, COALESCE (z.lev_read_cnt, 0) lev_read_cnt, z.max_alg_read, z.max_prs_read, x.aut_groep_cnt FROM ( SELECT fn.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_oslogin2, kl.prs_kenmerklink_waarde prs_perslid_nr, prs_afdeling_naam, fn.prs_perslid_naam_full, COUNT (DISTINCT gg.fac_groep_key) aut_groep_cnt FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_v_perslid_fullnames fn, fac_gebruikersgroep gg, (SELECT prs_kenmerklink_waarde, prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 3) kl -- personeelsnummer AAFM WHERE a.prs_afdeling_key = p.prs_afdeling_key AND p.prs_perslid_oslogin IS NOT NULL AND p.prs_perslid_key = fn.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key AND p.prs_perslid_key = kl.prs_link_key(+) GROUP BY fn.prs_perslid_key, fn.prs_perslid_naam_full, prs_perslid_oslogin, prs_perslid_oslogin2, kl.prs_kenmerklink_waarde, prs_afdeling_naam) x LEFT JOIN ( SELECT gg.prs_perslid_key, COUNT (DISTINCT gr.fac_groeprechten_key) lev_write_cnt, MIN (gr.fac_gebruiker_alg_level_write) max_alg_write, MIN (gr.fac_gebruiker_prs_level_write) max_prs_write FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f WHERE gg.fac_groep_key = gr.fac_groep_key AND gr.fac_functie_key = f.fac_functie_key AND fac_functie_groep IN (1, 2) AND (gr.fac_gebruiker_alg_level_write <> 9 OR gr.fac_gebruiker_prs_level_write <> 9) GROUP BY gg.prs_perslid_key) y ON x.prs_perslid_key = y.prs_perslid_key LEFT JOIN ( SELECT gg.prs_perslid_key, COUNT (DISTINCT gr.fac_groeprechten_key) lev_read_cnt, MIN (gr.fac_gebruiker_alg_level_read) max_alg_read, MIN (gr.fac_gebruiker_prs_level_read) max_prs_read FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f WHERE gg.fac_groep_key = gr.fac_groep_key AND gr.fac_functie_key = f.fac_functie_key AND fac_functie_groep IN (1, 2) AND (gr.fac_gebruiker_alg_level_read <> 9 OR gr.fac_gebruiker_prs_level_read <> 9) GROUP BY gg.prs_perslid_key) z ON x.prs_perslid_key = z.prs_perslid_key WHERE COALESCE (y.lev_write_cnt, 0) > 0 OR COALESCE (z.lev_read_cnt, 0) > 0; --============================================================================= -- IMPORTFUNCTIES ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- IMPORTFUNCTIE - Import srtruimte ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_rap_srtruimte ( key, omschrijving, code, werkplek, verhuurbaar, huur, sk_onderhoud, sk_utility, sk_overig, prijs5 ) AS SELECT alg_srtruimte_key, alg_srtruimte_omschrijving, alg_srtruimte_code, prs_bevat_werkplek, prs_verhuurbaar, alg_srtruimte_prijs, alg_srtruimte_prijs2, alg_srtruimte_prijs3, alg_srtruimte_prijs4, alg_srtruimte_prijs5 FROM alg_v_aanwezigsrtruimte; CREATE OR REPLACE PROCEDURE aaxx_import_srtruimte ( 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); v_aanduiding VARCHAR2 (1000); -- Import line v_field VARCHAR2 (100); -- Import field v_fielddelimitor VARCHAR2 (1); -- Field seperator v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_skipfield VARCHAR2 (100); -- De importvelden v_key VARCHAR2 (100); v_omschrijving VARCHAR2 (100); v_code VARCHAR2 (100); v_werkplek VARCHAR2 (100); v_verhuurbaar VARCHAR2 (100); v_prijs1 VARCHAR2 (100); v_prijs2 VARCHAR2 (100); v_prijs3 VARCHAR2 (100); v_prijs4 VARCHAR2 (100); v_prijs5 VARCHAR2 (100); header_found BOOLEAN; BEGIN -- Init header_found := FALSE; v_fielddelimitor := ';'; -- Clear my previous imported rows DELETE FROM aaxx_imp_srtruimte; FOR rec1 IN c_cursor LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := v_newline; 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; fac.imp_getfield (v_newline, v_fielddelimitor, v_key); fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving); fac.imp_getfield (v_newline, v_fielddelimitor, v_code); fac.imp_getfield (v_newline, v_fielddelimitor, v_werkplek); fac.imp_getfield (v_newline, v_fielddelimitor, v_verhuurbaar); fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs1); fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs2); fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs3); fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs4); fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs5); -- Skip until a valid header is found IF UPPER(v_key) = 'KEY' AND UPPER(v_code) = 'CODE' AND UPPER(v_prijs1) = 'HUUR' AND UPPER(v_prijs5) = 'PRIJS5' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found AND v_omschrijving IS NOT NULL) THEN INSERT INTO aaxx_imp_srtruimte (alg_srtruimte_key, alg_srtruimte_omschrijving, alg_srtruimte_code, prs_bevat_werkplek, prs_verhuurbaar, alg_srtruimte_prijs, alg_srtruimte_prijs2, alg_srtruimte_prijs3, alg_srtruimte_prijs4, alg_srtruimte_prijs5 ) VALUES (fac.safe_to_number (v_key), SUBSTR (v_omschrijving, 1, 30), SUBSTR (v_code, 1, 10), fac.safe_to_number (SUBSTR(v_werkplek, 1)), fac.safe_to_number (SUBSTR(v_verhuurbaar, 1)), fac.safe_to_number (REPLACE(v_prijs1,',','.')), fac.safe_to_number (REPLACE(v_prijs2,',','.')), fac.safe_to_number (REPLACE(v_prijs3,',','.')), fac.safe_to_number (REPLACE(v_prijs4,',','.')), fac.safe_to_number (REPLACE(v_prijs5,',','.')) ); END IF; COMMIT; END; END LOOP; IF NOT header_found THEN fac.imp_writelog (p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig ruimtesoort importbestand.' ); END IF; 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.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding); -- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden. DELETE FROM aaxx_imp_srtruimte; END; / CREATE OR REPLACE PROCEDURE aaxx_update_srtruimte (p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM aaxx_imp_srtruimte WHERE alg_srtruimte_omschrijving is not NULL; v_oldcount NUMBER; v_newcount NUMBER; v_prs_bedrijf_key NUMBER; v_prs_dienst_key NUMBER; v_alg_locatie_key NUMBER; v_alg_gebouw_key NUMBER; v_errormsg VARCHAR (1000); v_error_hint VARCHAR (1000); oracle_err_mes VARCHAR2 (150); oracle_err_num VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; BEGIN SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog (p_import_key, 'I', 'AAFM ruimtesoort import version ' || currentversion, '$Revision$' ); SELECT COUNT (*) INTO v_newcount FROM alg_v_aanwezigsrtruimte; IF v_newcount = 0 THEN fac.imp_writelog (p_import_key, 'E', 'AAFM ruimtesoort import bevat geen records', '$Revision$' ); return; END IF; -- How many active records are now present? SELECT COUNT (*) INTO v_oldcount FROM alg_v_aanwezigsrtruimte; FOR rec IN c LOOP BEGIN IF rec.alg_srtruimte_key IS NULL THEN v_errormsg := 'Toevoegen ruimtesoort [' || rec.alg_srtruimte_code || '] '; INSERT INTO alg_srtruimte ( alg_srtruimte_omschrijving, alg_srtruimte_code, prs_bevat_werkplek, prs_verhuurbaar, alg_srtruimte_prijs, alg_srtruimte_prijs2, alg_srtruimte_prijs3, alg_srtruimte_prijs4, alg_srtruimte_prijs5) VALUES ( rec.alg_srtruimte_omschrijving, rec.alg_srtruimte_code, rec.prs_bevat_werkplek, rec.prs_verhuurbaar, rec.alg_srtruimte_prijs, rec.alg_srtruimte_prijs2, rec.alg_srtruimte_prijs3, rec.alg_srtruimte_prijs4, rec.alg_srtruimte_prijs5); ELSE v_errormsg := 'Aanpassen ruimtesoort [' || rec.alg_srtruimte_code || '] '; UPDATE alg_srtruimte SET alg_srtruimte_omschrijving = rec.alg_srtruimte_omschrijving, alg_srtruimte_code = rec.alg_srtruimte_code, prs_bevat_werkplek = rec.prs_bevat_werkplek, prs_verhuurbaar = rec.prs_verhuurbaar, alg_srtruimte_prijs = rec.alg_srtruimte_prijs, alg_srtruimte_prijs2 = rec.alg_srtruimte_prijs2, alg_srtruimte_prijs3 = rec.alg_srtruimte_prijs3, alg_srtruimte_prijs4 = rec.alg_srtruimte_prijs4, alg_srtruimte_prijs5 = rec.alg_srtruimte_prijs5 WHERE alg_srtruimte_key = rec.alg_srtruimte_key; END IF; COMMIT; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint ); COMMIT; -- tbv logging END; END LOOP; SELECT COUNT (*) INTO v_newcount FROM alg_v_aanwezigsrtruimte; fac.imp_writelog (p_import_key, 'S', 'Aantal ruimte soorten vooraf: ' || TO_CHAR (v_oldcount) || ' nu: ' || TO_CHAR (v_newcount), '' ); END; / -------------------------------- -- import facturen -------------------------------- -- rapportage factuurvoorstel inkoopfacturen. Het resultaat kan met onderstaande importroutines ingelezen worden. CREATE OR REPLACE VIEW aaxx_v_rap_inkoopfactuur ( fclt_x_bedrijfnaam, fclt_x_afrond_datum, leveranciernr, factuurnr, factuurdatum, ordernr, locatie, afleverdatum, omschrijving, aantal, kostprijs, btwbedrag, btw, docid, debiteurnummer, opmerking, lastinvoice, btwverlegd, gebouw, orderomschrijving, referentie, afmelddatum, uren, materiaal, opdracht_type ) AS SELECT prs_bedrijf_naam bedrijfsnaam, tr2.fac_tracking_datum datum, prs_leverancier_nr leveranciernr, NULL factuurnr, NULL factuurdatum, (SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd WHERE o.mld_melding_key = m.mld_melding_key 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) ordernr, (SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving FROM alg_locatie l WHERE l.alg_locatie_key = m.mld_alg_locatie_key) locatie, TO_CHAR (mld_opdr_datumbegin, 'ddmmyyyy') afleverdatum, NULL omschrijving, 1 aantal, o.mld_opdr_kosten kostprijs, NULL btwbedrag, 21 btw, NULL docid, NULL debiteurnummer, NULL opmerking, 'Ja' lastinvoice, 'Nee' btwverlegd, (SELECT og.alg_gebouw_code || ' - ' || og.alg_gebouw_naam FROM alg_v_allonrgoed_gegevens og WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys) gebouw, REPLACE (REPLACE (o.mld_opdr_omschrijving, CHR (13), ''), CHR (10), '') orderomschrijving, (SELECT mld_kenmerkopdr_waarde FROM mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkopdr ko WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND mld_kenmerk_niveau = 'O' AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND ko.mld_opdr_key = o.mld_opdr_key AND mld_srtkenmerk_omschrijving LIKE 'Ref. Nr. Leverancier%') referentie, tr.fac_tracking_datum afmelddatum, o.mld_opdr_uren, o.mld_opdr_materiaal, mt.mld_typeopdr_omschrijving FROM prs_bedrijf b, mld_opdr o, mld_typeopdr mt, mld_melding m, mld_typeopdr ot, fac_tracking tr, fac_tracking tr2, fac_srtnotificatie str, fac_srtnotificatie str2 WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key AND o.mld_typeopdr_key = mt.mld_typeopdr_key AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND tr2.fac_srtnotificatie_key = str2.fac_srtnotificatie_key AND str.fac_srtnotificatie_code = 'ORDAFM' AND str2.fac_srtnotificatie_code = 'ORDAFR' AND o.mld_opdr_key = tr.fac_tracking_refkey AND o.mld_opdr_key = tr2.fac_tracking_refkey AND o.mld_melding_key = m.mld_melding_key AND o.mld_statusopdr_key = 9 -- Afgerond AND o.mld_opdr_kosten <> 0 AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND (ot.mld_typeopdr_omschrijving = 'Workorder' OR ot.mld_typeopdr_omschrijving = 'Projectorder' OR ot.mld_typeopdr_omschrijving = 'Vast variabel' OR ot.mld_typeopdr_omschrijving = 'Opdracht' ) AND NOT EXISTS (SELECT mld_kenmerkopdr_key FROM mld_kenmerkopdr ko, mld_kenmerk k WHERE mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = DECODE (aaxx_get_user, 'IT', 381, 'SABIC', 34, 2)) AND NOT EXISTS (SELECT mld_kenmerkopdr_key FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'CLAUSULE' AND UPPER(aaxx_get_kenmerkwaarde ( sk.mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ko.mld_kenmerkopdr_waarde )) = 'BINNEN CLAUSULE'); -- AAVL#33405 rapportage factuurvoorstel inkoopfacturen tbv bestellingen. -- Het resultaat kan met onderstaande importroutines ingelezen worden. CREATE OR REPLACE VIEW aaxx_v_rap_bes_inkfactuur ( FCLT_X_BEDRIJFNAAM, FCLT_X_LEVER_DATUM, LEVERANCIERNR, FACTUURNR, FACTUURDATUM, ORDERNR, LOCATIE, AFLEVERDATUM, OMSCHRIJVING, AANTAL, KOSTPRIJS, BTWBEDRAG, BTW, DOCID, DEBITEURNUMMER, OPMERKING, LASTINVOICE, BTWVERLEGD, GEBOUW, ORDEROMSCHRIJVING, REFERENTIE, AFMELDDATUM, UREN, MATERIAAL ) AS SELECT prs_bedrijf_naam, ft.fac_tracking_datum datum, prs_leverancier_nr leveranciernr, NULL factuurnr, NULL factuurdatum, bes_bestelopdr_id, (SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving FROM alg_locatie l WHERE l.alg_locatie_key = ma.alg_locatie_key) locatie, TO_CHAR (ft.fac_tracking_datum, 'ddmmyyyy') afleverdatum, NULL omschrijving, SUM (bes_bestelopdr_item_aantalontv) aantal, SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantalontv) kostprijs, NULL btwbedrag, bes_srtdeel_btw BTW, NULL docid, NULL debiteurnummer, NULL opmerking, 'Ja' lastinvoice, 'Nee' btwverlegd, NULL gebouw, NULL orderomschrijving, NULL referentie, ft.fac_tracking_datum afmelddatum, NULL uren, NULL materiaal FROM bes_bestelopdr bo, prs_bedrijf b, mld_adres ma, bes_bestelopdr_item bboi, bes_bestelling_item bbi, bes_srtdeel bsd, fac_tracking ft, fac_srtnotificatie srt WHERE bes_bestelopdr_status = 6 AND b.prs_bedrijf_key = bo.prs_bedrijf_key AND bo.mld_adres_key_lev = ma.mld_adres_key AND bo.bes_bestelopdr_key = bboi.bes_bestelopdr_key AND bbi.bes_bestelopdr_item_key = bboi.bes_bestelopdr_item_key AND bbi.bes_srtdeel_key = bsd.bes_srtdeel_key AND ft.fac_tracking_refkey = bo.bes_bestelopdr_key AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key AND srt.fac_srtnotificatie_code = 'BES2AF' GROUP BY prs_bedrijf_naam, TO_CHAR (ft.fac_tracking_datum, 'yyyy-mm'), prs_leverancier_nr, bes_bestelopdr_id, ma.alg_locatie_key, ft.fac_tracking_datum, bes_srtdeel_btw, ft.fac_tracking_datum; CREATE OR REPLACE PROCEDURE aaxx_import_factuur (p_import_key IN NUMBER) AS -- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist) -- Variabelelijst -- v_leveranciernr: 1 -- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet") -- v_factuurdatum: 3 -- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet") -- v_locatie: 5 -- v_afleverdatum: 6 -- v_omschrijving: 7 -- v_aantal: 8 -- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet") -- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet") -- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet") -- v_docid: 12 -- v_debiteur_nr: 13 -- v_opmerking: 14 -- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/ waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet") -- v_kenmerk1: 16 -- v_kenmerk2: 17 -- v_kenmerk3: 18 -- v_kenmerk4: 19 -- v_kenmerk5: 20 -- v_boekmaand: 21 (GELDIG, Indien gevuld dan moet er een geldige jaar-maand combinatie staan. Andere waarden leidt tot "Incompleet") -- Eerst geprobeerd via nette array, geeft problemen met type buiten package, en in package lukt niet omdat -- de import in Facilitor package-loos is (en niet 1-2-3 zo kan worden gemaakt vanwege alle bestaande klanten) -- v_seq_of_columns ListOfInteger := (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21); -- Dus dan maar via een string, en ook op slimme wijze, nl alsof het een ingelezen factuur-record is met p_fielddelimitor v_seq_of_columns VARCHAR(100); -- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen. -- Als leveranciersnr en factuurnr b.v. zijn omgedraaid in het CSV-formaat, -- dan factuurimport ListOfInteger := (2,1,3,4,5,6,7,8,9,10,11,12); -- v_seq_of_columns := '2;1;3;4;5;6;7;8;9;10;11;12'; -- Als leveranciersnr NIET in CSV staat, dan factuurimport ListOfInteger := (0,2,3,4,5,6,7,8,9,10,11,12); -- v_seq_of_columns := '0;2;3;4;5;6;7;8;9;10;11;12'; -- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blift LEEG. BEGIN v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;16;15;0;0;0;0;17'; fac_import_factuur_body(p_import_key, v_seq_of_columns); -- voeg een voorloopnul toe aan de boekmaanden op positie 6 -- 2017-9 wordt dan 2017-09 UPDATE fac_imp_factuur SET boekmaand = SUBSTR (boekmaand, 1, 5) || 0 || SUBSTR (boekmaand, 6, 1) WHERE SUBSTR (boekmaand, 1, 4) IS NOT NULL AND SUBSTR (boekmaand, 5, 1) = '-' AND SUBSTR (boekmaand, 6, 1) IS NOT NULL AND SUBSTR (boekmaand, 7, 1) IS NULL AND fac_import_key = p_import_key; COMMIT; END; / CREATE OR REPLACE PROCEDURE aaxx_update_factuur (p_import_key IN NUMBER) AS v_invoerder NUMBER(10); BEGIN fac_update_factuur (p_import_key); -- AAFM specifieke update voor kenmerken -- ja = 1 -- nee = 2 -- kenmerk_key = 2 voor kenmerk laatste factuur. INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) SELECT DISTINCT fin_factuur_key, fin_kenmerk_key, fac_usrdata_key FROM fac_imp_factuur i, fin_kenmerk k, fac_kenmerkdomein kd, fac_usrdata ud WHERE UPPER (COALESCE (i.kenmerk1, 'Nee')) = UPPER (ud.fac_usrdata_omschr) AND ud.fac_usrtab_key = kd.fac_usrtab_key AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND k.fin_kenmerk_key = 2 AND i.fin_factuur_key IS NOT NULL AND i.fac_import_key = p_import_key AND NOT EXISTS (SELECT fin_kenmerkfactuur_key FROM fin_kenmerkfactuur kf WHERE kf.fin_kenmerk_key = 2 AND kf.fin_factuur_key = i.fin_factuur_key); SELECT MAX(prs_perslid_key) INTO v_invoerder FROM fac_import WHERE fac_import_key = p_import_key; -- zet de FINNEW notificatie op de gebruiker die de import gestart heeft om te kunnen traceren hoe de facturen in het -- systeem gekomen zijn. UPDATE fac_tracking t SET prs_perslid_key = v_invoerder , fac_tracking_oms = fac_tracking_oms || ' (via Excel)' WHERE prs_perslid_key IS NULL AND EXISTS (SELECT fac_tracking_key FROM fac_imp_factuur i, fac_srtnotificatie sn WHERE i.fin_factuur_key = t.fac_tracking_refkey AND i.fac_import_key = p_import_key AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINNEW'); END; / CREATE OR REPLACE PROCEDURE aaxx_import_fin_factuur_marx (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR(255); BEGIN v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28'; fac_import_factuur_body(p_import_key, v_seq_of_columns); END; / CREATE OR REPLACE PROCEDURE aaxx_update_fin_factuur_marx (p_import_key IN NUMBER) AS -- Voor Correctie ORDERNR om standaard update-procedure goed te laten lopen. --- 0. Bug - Als uit Mareo/Scanning geen order-referentie meekomt en er zijn meerdere factuurregels, dan wordt er vanuit fac_update_factuur niet 1 maar meerdere factuurnr's aangemaakt. Oplossing: Ordernr vullen. --- 0.1 Verzamelfactuur-indicatie (2022-maart actief): Vanuit Mareon wordt deze met een "(*)" achter de referentie meegegeven, bijvoorbeeld C5602.5(*). --- 0.2 Orderreferentie-opschoning: Vanuit scanning komt de orderreferentie soms mee inclusief 'extra tekst'. Bijv CO284IN’T of CO534.7HEERLEN. Voor goede verwerking gaan we de tekst achteraan de orderreferentie weghalen. --- 1. Ordernr 101132/1 wordt niet als Opdracht herkend. In FUNCTION try_getopdracht_id gaat Facilitor alleen maar opdrachten matchen als er 1,2 of 3 letters voorstaan... Daarom gaan we er in import-tabel een 'O' voorzetten (dus: 'O101132/1') --- Ps. BCT-regel: Indien geen prefix, en kolom ORDERNR is 6- of 7 cijferig en met een '/' en dan numeriek 1 t/m 3 posities. Voorbeeld: Bijv: 104370/2 vanuit BCT moet worden O104370/2 --- 2. Ordernr beginnende met "CO" wordt niet als Contract herkend. Daarom gaan we er in import-tabel een "C" van maken. --- 3. Als ordernr is C (= contract) echter zonder versienummer - Dan wordt in standaard update altijd automatisch het hoogste versienummer gepakt. --- Ivm overlap 'jaarovergangen' is dat niet altijd juist en moet de vanuit Mareon geimporteerde factuur nog status 'te controleren' meekrijgen voordat deze automatisch de financiele-interface in gaat. --- 4. Ordernr beginnende met "BE" of "B" wordt niet als Bestelling herkend. Daarom gaan we deze prefix in de import-tabel weghalen. --- 5. De klant geeft in PDF/XML als orderreferentie soms ook de klantnaam mee (bijv REMEHA C10.0) - deze wordt dan niet verwerkt in Facilor en daarom halen we klantnamen voor de orderreferentie weg --- 6. Zie ticket AADS#82917 Error in fac_update_factuur bij Ordernr - Er worden verkeerde ORDERNR doorgezet bijv. 'Burg van den (Emiel) Tel. 06-27829750' die een ORA opleveren in standaard verwerking. ------- Gevolg: wel een 200 code naar mareon, maar geen factuuraanmaak in Facilitoir - OPLOSSEN!!!!! --- 7. BTW-verlegd 0% -> Onbekend bij HEYDAY en kan moet onder BTW-verlegd 21% verwerkt worden.. CURSOR ccor_0 IS SELECT ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND ordernr IS NULL GROUP BY ordernr ; CURSOR ccor_0_1 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND INSTR(ordernr,'(*)') > 1 GROUP BY factuurnr, ordernr ; CURSOR ccor_0_2 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1 GROUP BY factuurnr, ordernr ; CURSOR ccor_1 IS SELECT factuurnr, ordernr, fac.safe_to_number(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) as melding_key, fac.safe_to_number(SUBSTR(ordernr,(INSTR(ordernr,'/')+1),LENGTH(ordernr))) opdracht_volgnr, fac.safe_to_number(TO_CHAR(fac.safe_to_date (factuurdatum, 'yyyy-mm-dd'), 'yyyy')) factuurdatum_jaar FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND INSTR(ordernr,'/') >0 AND LENGTH(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) IN (6,7) GROUP BY factuurnr, ordernr, factuurdatum ; CURSOR ccor_2 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND LENGTH(ordernr) >= 2 AND (SUBSTR(UPPER(ordernr),1,2) = 'CO' OR SUBSTR(UPPER(ordernr),1,2) = 'CC') GROUP BY factuurnr, ordernr ; CURSOR ccor_3 IS SELECT factuurnr, ordernr, SUBSTR(ordernr,2) cnt_contract_nummer_intern FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND SUBSTR(UPPER(ordernr),1,1) = 'C' AND INSTR(ordernr,'.')=0 GROUP BY factuurnr, ordernr ; CURSOR ccor_4 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND ( SUBSTR (ordernr, 1, 1) = 'B' AND fac.safe_to_number (SUBSTR (ordernr, 2, 1)) IS NOT NULL) OR (SUBSTR (ordernr, 1, 2) = 'BE') GROUP BY factuurnr, ordernr ; CURSOR ccor_5 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND INSTR(SUBSTR(ordernr, 1, (REGEXP_INSTR((ordernr), '\d')-1)), aaxx_get_user) = 1 -- tekst_voornummer_bevatklantnaam GROUP BY factuurnr, ordernr ; CURSOR ccor_6 IS SELECT factuurnr, ordernr FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND LENGTH(ordernr)>23 AND UPPER(SUBSTR(ordernr, 1, 1)) <> 'C' GROUP BY factuurnr, ordernr ; CURSOR ccor_7 IS SELECT fac_imp_file_index, factuurnr, btw, btw_verlegd FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND UPPER(btw_verlegd) = 'JA' AND btw = 0 ; CURSOR cfactuur IS SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.kenmerk8, i.kenmerk9, i.kenmerk10, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key FROM fac_imp_factuur i, fin_factuur f WHERE i.fin_factuur_key IS NOT NULL AND i.fac_import_key = p_import_key AND f.fin_factuur_key = i.fin_factuur_key AND kenmerk1 IS NOT NULL -- Incl bijlage ; CURSOR cfactuurregel IS SELECT i.fin_factuur_key, i.fac_imp_file_index, i.fin_factuurregel_key, i.kostprijs, i.btw, DECODE(i.btw_verlegd, NULL, 'nee', 'ja') btw_verlegd FROM fac_imp_factuur i WHERE i.fac_import_key = p_import_key AND i.kenmerk1 IS NOT NULL -- Incl bijlage ORDER BY i.fac_imp_file_index ; v_aanduiding VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); c_kenmerk_key_bijlage NUMBER(10); c_kenmerk_key_soort VARCHAR(1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand) c_huidig_jaar NUMBER(4) := fac.safe_to_number((TO_CHAR (SYSDATE, 'yyyy'))); v_disk_directory VARCHAR2 (200); v_bedrag_totaal NUMBER(10); v_bedrag_gefactureerd NUMBER(10); v_count_gefactureerd NUMBER(10); v_bedrag_termijn NUMBER(10); v_ordersoort VARCHAR2 (200); v_contractsoort VARCHAR2 (200); v_bestelsoort VARCHAR2 (200); v_klantnummer_key NUMBER(10); v_klantnummer VARCHAR2 (200); v_prs_leverancier_nr VARCHAR2 (200); v_contract_versies NUMBER(10); c_kenmerk_key_controle NUMBER(10); c_kenmerk_key_verzamel NUMBER(10); c_kenmerk_key_mareon_bron NUMBER(10); c_kenmerk_key_mareon_info NUMBER(10); c_kenmerk_key_bedrijf_intern NUMBER(10); -- interne bedrijfsherkenning (tbv INLO) v_prs_bedrijf_key NUMBER(10); v_opdracht_key NUMBER(10); v_controle NUMBER(1) := 0 ; -- 1 = controlevinkje op inkoopfactuur zetten v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren v_fac_usrdata_key_ja NUMBER(10); v_fac_usrdata_key_nee NUMBER(10); v_mld_statusopdr_key NUMBER(10); v_count_gefactureerd_nr NUMBER(10); v_opdracht_0_reden VARCHAR2 (1000); v_fin_factuur_key NUMBER(10); v_sabic_genk VARCHAR2 (200); v_prs_kostenplaats_key NUMBER(10); v_prs_kostenplaatsgrp_key NUMBER(10); -- Verdeelperiode voor de contracten gaan bepalen v_cnt_jaar_start NUMBER(10); v_cnt_jaar_eind NUMBER(10); v_cnt_maand_start NUMBER(10); v_cnt_maand_start_tekst VARCHAR(2); v_cnt_maand_eind NUMBER(10); v_cnt_maand_eind_tekst VARCHAR(2); v_cnt_start VARCHAR(7); -- Start contract in format tekst "jaar-mnd" (2022-05) v_cnt_eind VARCHAR(7); -- Einde contract in format tekst "jaar-mnd" (2022-05) v_fin_factuur_boekmaand_nu VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05) v_gebroken_boekjaar NUMBER(1) := 0 ; v_cnt_looptijd_mnd NUMBER(10); v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is v_cnt_deel_betaald_2 NUMBER(10); -- Deel van contract wat betaald is als de mareon-factuur ook verwerkt is v_cnt_deel_betaald_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerveld om te kijken of bepaling boekmaand correct is v_cnt_deel_betaald_pvm NUMBER(10); -- Percentage vorige maand (pvm) betaald - ivm 90%-regel heyday v_fin_factuur_boekmaand_2 VARCHAR(7); -- De nieuwe boekmaand op de geimporteerde Mareon-factuur - METHODE 2 v_fin_factuur_boekmaand_tekst VARCHAR2 (1000); -- Tekst voor in tijdelijke kenmerkveld om te kijken of bepaling boekmaand correct is c_kenmerk_key_boekmaand NUMBER(10); v_cnt_termijn_type VARCHAR(1); v_cnt_termijn_aantal NUMBER(3); v_cnt_soort VARCHAR2 (200); v_factuur_datum_boekmaand NUMBER(10); v_factuur_datum_boekmaand_jr NUMBER(10); v_factuur_datum_boekmaand_prev VARCHAR(2); v_factuur_datum_boekmaand_nu VARCHAR(2); v_fin_factuur_boekmaand_laatst VARCHAR(7); v_fin_factuur_boekmaand_prev VARCHAR(7); v_cnt_maandbedrag NUMBER(10); v_gefactureerd_vorige_maand NUMBER(10); v_cnt_scope_gebouw NUMBER(10); v_cnt_scope_afwijkend NUMBER(10); v_fin_btwtabel VARCHAR(30); v_fin_btwtabel_default VARCHAR(30); v_factuurregels_aantal_fout NUMBER(10); v_fin_btwtabelwaarde_found NUMBER(10); v_controle_btw NUMBER(1) := 0 ; -- 1 = controlevinkje ivm geen (eenduidige) btw-code op inkoopfactuur zetten BEGIN -- Voor draaien standaard factuur-update gaan we eerst op fac_imp_factuur een aantal correcties doorvoeren FOR rec IN ccor_0 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = '00000' -- Geen ordernr vanuit scanning WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_0_1 LOOP BEGIN UPDATE fac_imp_factuur SET kenmerk3 = 'verzamelfactuur' WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_0_2 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = SUBSTR(ordernr,1,LENGTH(ordernr)-(REGEXP_INSTR(REVERSE(ordernr), '\d')-1)) WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_1 LOOP BEGIN -- check of je er een ACTUELE opdracht_key voor kunt vinden. zo ja dan gaan we er vanuit dat het idd opdracht is en vullen we ordernr aan met een prefix "O" --- Actueel = Nog niet verwerkte opdracht + Jaar(opdrachtdatum) gelijk aan Jaar(factuurdatum) of Jaar(factuurdatum)-1 IF rec.melding_key IS NOT NULL and rec.opdracht_volgnr IS NOT NULL and rec.factuurdatum_jaar IS NOT NULL THEN SELECT min(mld_opdr_key) INTO v_opdracht_key FROM mld_opdr WHERE mld_melding_key = rec.melding_key AND mld_opdr_bedrijfopdr_volgnr = rec.opdracht_volgnr AND fac.safe_to_number((TO_CHAR (mld_opdr_datumbegin, 'yyyy'))) BETWEEN (rec.factuurdatum_jaar - 1) AND rec.factuurdatum_jaar AND mld_statusopdr_key NOT IN (1,7) ; -- verwerkt of afgewezen IF v_opdracht_key IS NOT NULL THEN UPDATE fac_imp_factuur SET ordernr = 'O' || ordernr WHERE fac_import_key = p_import_key ; END IF; END IF; END; END LOOP; FOR rec IN ccor_2 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = 'C' || SUBSTR(ordernr,3,LENGTH(ordernr)) WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_3 LOOP BEGIN IF fac.safe_to_number(rec.cnt_contract_nummer_intern) IS NOT NULL THEN SELECT count(*) INTO v_contract_versies FROM cnt_contract WHERE cnt_contract_verwijder IS NULL AND cnt_contract_status = 0 AND cnt_contract_nummer_intern = rec.cnt_contract_nummer_intern ; -- Als er meer dan 1 versie is, dan moet factuur ter controle. We gaan hiervoor een kenmerkveld vullen... IF v_contract_versies > 1 THEN UPDATE fac_imp_factuur SET kenmerk2 = 'ter controle' WHERE fac_import_key = p_import_key ; END IF; END IF; END; END LOOP; FOR rec IN ccor_4 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = REPLACE(ordernr,'BE','') WHERE fac_import_key = p_import_key ; UPDATE fac_imp_factuur SET ordernr = REPLACE(ordernr,'B','') WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_5 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = REPLACE(ordernr, aaxx_get_user , '') WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_6 LOOP BEGIN UPDATE fac_imp_factuur SET ordernr = SUBSTR(ordernr, 1, 23) WHERE fac_import_key = p_import_key ; END; END LOOP; FOR rec IN ccor_7 LOOP BEGIN UPDATE fac_imp_factuur SET btw = '21' WHERE fac_import_key = p_import_key AND fac_imp_file_index = rec.fac_imp_file_index ; END; END LOOP; -- Nu kunnen we de standaard FCLT verwerk import facturen draaien fac_update_factuur (p_import_key); -- CUST: post processing voor verwerking van het PDF document SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_bijlage FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = c_kenmerk_key_soort AND fin_kenmerk_verwijder IS NULL; -- CUST: Voor vullen Klantnummer het kenmerk_key ophalen SELECT MIN (prs_kenmerk_key) INTO v_klantnummer_key FROM prs_kenmerk WHERE prs_kenmerk_niveau = 'B' AND prs_kenmerk_upper = 'KLANTNUMMER' AND prs_kenmerk_verwijder IS NULL; -- CUST: Voor verwerking Contracten die qua versienr nog gecontroleerd moeten worden het kenmerk_key ophalen SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_controle FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'V' AND fin_kenmerk_upper = 'EXTRA CONTROLE?' AND fin_kenmerk_verwijder IS NULL; -- CUST: Voor verwerking Contracten en Verdeelperiode goed doorvoeren (= fin_factuur_boekmaand) ----- We gaan dit in een kenmerveld vullen en indien goed te bepalen dan wordt dit ook in procedure straks in het factuur-boekmaand veld weggeschreven SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_boekmaand FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'C' AND fin_kenmerk_upper = 'MAREON_CNT_BOEKMAAND' AND fin_kenmerk_verwijder IS NULL; -- CUST: Voor verwerking Verzamelfactuur-indicatie het kenmerk_key ophalen SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_verzamel FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'V' AND fin_kenmerk_upper = 'VERZAMELFACTUUR?' AND fin_kenmerk_verwijder IS NULL; -- CUST: Ophalen key-waarde Ja en Nee van kenmerkveld Laatste Factuur SELECT ud.fac_usrdata_key INTO v_fac_usrdata_key_ja FROM fin_kenmerk k, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE fin_kenmerk_key = 2 AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND kd.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja SELECT ud.fac_usrdata_key INTO v_fac_usrdata_key_nee FROM fin_kenmerk k, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE fin_kenmerk_key = 2 AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND kd.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (ud.fac_usrdata_code) = 2; -- Waarde is Nee -- CUST: Voor verwerking Mareon-bron het kenmerk_key ophalen SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_mareon_bron FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'C' AND fin_kenmerk_code = 'MAREON_BRON' AND fin_kenmerk_verwijder IS NULL; -- CUST: Voor btw-verhaal (indien factuurregels niet aangemaakt worden) SELECT fin_btwtabel_omschrijving INTO v_fin_btwtabel_default FROM fin_btwtabel WHERE fin_btwtabel_default = 1 AND fin_btwtabel_verwijder IS NULL ; -- CUST: Voor aanvullende info uit mareon-facuurverwerking - Iig voor factuurregels die niet allemaal aangemaakt worden SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_mareon_info FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'C' AND fin_kenmerk_code = 'MAREON_INFO' AND fin_kenmerk_verwijder IS NULL; -- CUST: Voor interne bedrijfsherkenning - In Mareon hebben de INLO-subaccounts eigen mailadressen en AX-nr wordt meegestuurd naar Facilitor met naam subaccount (zie AAIT#84789) SELECT MIN (fin_kenmerk_key) INTO c_kenmerk_key_bedrijf_intern FROM fin_kenmerk WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel AND fin_kenmerk_kenmerktype = 'C' AND fin_kenmerk_code = 'MAREON_BEDRIJF_INTERN' AND fin_kenmerk_verwijder IS NULL; -- We gaan nu beginnen met het verder verwerken van de factuur.. FOR rec IN cfactuur LOOP BEGIN -- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten.... IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL THEN BEGIN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES('IMPORT:' || TO_CHAR (p_import_key), 'flexcode', 'FIN:' || TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan! || ':' || c_kenmerk_key_bijlage || ':' -- De kenmerk key || c_kenmerk_key_soort -- 'F of M' ); -- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk) -- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet IF c_kenmerk_key_soort = 'F' THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1); END IF; EXCEPTION WHEN OTHERS THEN fac.imp_writelog (p_import_key, 'W', 'Van factuur met key ' || rec.fin_factuur_key || ' is de bestandsnaam niet bewaard (regel ' || rec.fac_imp_file_index || ')', 'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1 ); END; COMMIT; END IF; -- Als er een ref-key gekoppeld is, dan gaan we o.a. de waarde van deze verplichting ophalen en verschillende controles doen IF (rec.mld_opdr_key IS NOT NULL OR rec.cnt_contract_key IS NOT NULL OR rec.bes_bestelopdr_key IS NOT NULL) THEN v_bedrag_totaal := 0; v_count_gefactureerd := 0; v_bedrag_gefactureerd := 0; v_ordersoort := ''; -- Voor Opdracht.. IF rec.mld_opdr_key IS NOT NULL THEN SELECT COALESCE(o.mld_opdr_kosten, 0), ot.mld_typeopdr_omschrijving, o.mld_uitvoerende_keys, mld_statusopdr_key, o.prs_kostenplaats_key, COALESCE(bt.fin_btwtabel_omschrijving, v_fin_btwtabel_default) INTO v_bedrag_totaal, v_ordersoort, v_prs_bedrijf_key, v_mld_statusopdr_key, v_prs_kostenplaats_key, v_fin_btwtabel FROM mld_opdr o, mld_typeopdr ot, prs_bedrijf b, fin_btwtabel bt WHERE o.mld_opdr_key = rec.mld_opdr_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND b.fin_btwtabel_key = bt.fin_btwtabel_key (+); SELECT count(*) INTO v_count_gefactureerd FROM fin_factuur WHERE mld_opdr_key = rec.mld_opdr_key AND fin_factuur_verwijder IS NULL; IF v_count_gefactureerd > 1 THEN SELECT sum(fin_factuur_totaal) INTO v_bedrag_gefactureerd FROM fin_factuur f WHERE f.mld_opdr_key = rec.mld_opdr_key AND f.fin_factuur_key NOT IN (rec.fin_factuur_key) AND f.fin_factuur_verwijder IS NULL; END IF; -- Als de Opdracht waar deze factuur op is gekomen al verwerkt is, dan moet deze factuur ter controle IF v_mld_statusopdr_key IN (1,7) -- verwerkt of afgewezen THEN v_aanduiding_controle := 'CONTROLE - Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle SELECT count(*) INTO v_count_gefactureerd_nr FROM fin_factuur WHERE mld_opdr_key = rec.mld_opdr_key AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_nr = rec.factuurnr AND fin_factuur_verwijder IS NULL ; IF v_count_gefactureerd_nr > 0 THEN v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Voor een opdracht waar een 0-reden is ingevuld, moet de factuur ter controle IF v_bedrag_totaal IS NOT NULL THEN -- Eerst dus kijken of er bij opdracht een reden is vermeld BEGIN SELECT MIN(ko.mld_kenmerkopdr_waarde) INTO v_opdracht_0_reden FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'REDEN 0 ORDER' AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL AND ko.mld_opdr_key = rec.mld_opdr_key AND ko.mld_kenmerkopdr_waarde IS NOT NULL AND ko.mld_kenmerkopdr_verwijder IS NULL ; EXCEPTION WHEN NO_DATA_FOUND THEN v_opdracht_0_reden := NULL; END; -- Zo ja, dan zetten we de controle IF v_opdracht_0_reden IS NOT NULL THEN v_aanduiding_controle := 'CONTROLE - Factuur op opdracht met 0-reden' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; -- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan IF aaxx_get_user = 'SABIC' THEN BEGIN SELECT d.alg_district_omschrijving INTO v_sabic_genk FROM mld_opdr o, mld_melding m, alg_locatie l, alg_district d WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND d.alg_district_key = 61 -- SABIC-GENK AND o.mld_opdr_key = rec.mld_opdr_key ; EXCEPTION WHEN NO_DATA_FOUND THEN v_sabic_genk := NULL; END; IF v_sabic_genk IS NOT NULL THEN v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; END IF; -- Voor Bestelopdracht.. IF rec.bes_bestelopdr_key IS NOT NULL THEN SELECT COALESCE(SUM (br.bes_bestelopdr_item_aantal * br.bes_bestelopdr_item_prijs), 0) bedrag_totaal, b.prs_bedrijf_key, bs.prs_kostenplaats_key, COALESCE(bt.fin_btwtabel_omschrijving, v_fin_btwtabel_default) -- LETOP! Bedragen en BTW - check inclusief of Exclusief bij AAIT (via bes_bestelling_item)!!! INTO v_bedrag_totaal, v_prs_bedrijf_key, v_prs_kostenplaats_key, v_fin_btwtabel FROM bes_bestelopdr b, bes_bestelopdr_item br, bes_bestelling_item bi, bes_bestelling bs, prs_bedrijf bd, fin_btwtabel bt WHERE b.bes_bestelopdr_key = br.bes_bestelopdr_key AND b.bes_bestelopdr_key = rec.bes_bestelopdr_key AND br.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bi.bes_bestelling_key = bs.bes_bestelling_key AND b.prs_bedrijf_key = bd.prs_bedrijf_key AND bd.fin_btwtabel_key = bt.fin_btwtabel_key (+) GROUP BY b.prs_bedrijf_key, bs.prs_kostenplaats_key, bt.fin_btwtabel_omschrijving ; SELECT count(*) INTO v_count_gefactureerd FROM fin_factuur WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key AND fin_factuur_verwijder IS NULL; IF v_count_gefactureerd > 1 THEN SELECT sum(fin_factuur_totaal) INTO v_bedrag_gefactureerd FROM fin_factuur f WHERE f.bes_bestelopdr_key = rec.bes_bestelopdr_key AND f.fin_factuur_key NOT IN (rec.fin_factuur_key) AND f.fin_factuur_verwijder IS NULL ; END IF; -- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle SELECT count(*) INTO v_count_gefactureerd_nr FROM fin_factuur WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_nr = rec.factuurnr AND fin_factuur_verwijder IS NULL ; IF v_count_gefactureerd_nr > 0 THEN v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Voor Bestelopdrachten met 0-waarde zetten we Controle IF v_bedrag_totaal = 0 THEN v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan IF aaxx_get_user = 'SABIC' THEN BEGIN SELECT d.alg_district_omschrijving INTO v_sabic_genk FROM bes_bestelopdr bo, mld_adres a, alg_locatie l, alg_district d WHERE bo.mld_adres_key_lev = a.mld_adres_key AND a.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND d.alg_district_key = 61 -- SABIC-GENK AND bo.bes_bestelopdr_key = rec.bes_bestelopdr_key ; EXCEPTION WHEN NO_DATA_FOUND THEN v_sabic_genk := NULL; END; IF v_sabic_genk IS NOT NULL THEN v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; END IF; -- Voor Contract.. IF rec.cnt_contract_key IS NOT NULL THEN SELECT COALESCE(c.cnt_contract_kosten, 0), c.cnt_contract_termijnkosten, cs.ins_discipline_omschrijving, c.cnt_prs_bedrijf_key, c.prs_kostenplaats_key, COALESCE(bt.fin_btwtabel_omschrijving, v_fin_btwtabel_default) INTO v_bedrag_totaal, v_bedrag_termijn, v_contractsoort, v_prs_bedrijf_key, v_prs_kostenplaats_key, v_fin_btwtabel FROM cnt_contract c, ins_tab_discipline cs, prs_bedrijf b, fin_btwtabel bt WHERE c.cnt_contract_key = rec.cnt_contract_key AND c.ins_discipline_key = cs.ins_discipline_key AND cs.ins_discipline_module = 'CNT' AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.fin_btwtabel_key = bt.fin_btwtabel_key (+) ; SELECT count(*) INTO v_count_gefactureerd FROM fin_factuur WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_verwijder IS NULL; IF v_count_gefactureerd > 1 THEN SELECT sum(fin_factuur_totaal) INTO v_bedrag_gefactureerd FROM fin_factuur f WHERE f.cnt_contract_key = rec.cnt_contract_key AND f.fin_factuur_key NOT IN (rec.fin_factuur_key) AND f.fin_factuur_verwijder IS NULL ; END IF; -- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle SELECT count(*) INTO v_count_gefactureerd_nr FROM fin_factuur WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_nr = rec.factuurnr AND fin_factuur_verwijder IS NULL ; IF v_count_gefactureerd_nr > 0 THEN v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Voor Contracten met 0-waarde zetten we Controle IF v_bedrag_totaal = 0 THEN v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan IF aaxx_get_user = 'SABIC' THEN BEGIN SELECT d.alg_district_omschrijving INTO v_sabic_genk FROM cnt_contract c, (SELECT cl.cnt_contract_key, MAX(cl.alg_locatie_key) alg_locatie_key FROM (SELECT cp.cnt_contract_key, cnt_alg_plaats_key alg_locatie_key FROM cnt_contract_plaats cp WHERE cnt_alg_plaats_code = 'L' UNION SELECT cp.cnt_contract_key, g.alg_locatie_key FROM cnt_contract_plaats cp, alg_gebouw g WHERE cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = g.alg_gebouw_key ) cl GROUP BY cl.cnt_contract_key ) cp, alg_locatie l, alg_district d WHERE c.cnt_contract_key = cp.cnt_contract_key AND cp.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND d.alg_district_key = 61 -- SABIC-GENK AND c.cnt_contract_key = rec.cnt_contract_key ; EXCEPTION WHEN NO_DATA_FOUND THEN v_sabic_genk := NULL; END; IF v_sabic_genk IS NOT NULL THEN v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; -- Contract moet altijd op 1 of meerdere GEBOUWEN gescoped zijn voor heyday. Indien dit niet geval is, dan op controle zetten. SELECT (SELECT COUNT (*) aantal_gebouw FROM cnt_contract_plaats cp WHERE cp.cnt_contract_key = c.cnt_contract_key AND cp.cnt_alg_plaats_code = 'G' GROUP BY cp.cnt_contract_key) scope_gebouw, (SELECT COUNT (*) aantal_gebouw FROM cnt_contract_plaats cp WHERE cp.cnt_contract_key = c.cnt_contract_key AND cp.cnt_alg_plaats_code <> 'G' GROUP BY cp.cnt_contract_key) scope_afwijkend INTO v_cnt_scope_gebouw, v_cnt_scope_afwijkend FROM cnt_contract c WHERE c.cnt_contract_key = rec.cnt_contract_key; IF v_cnt_scope_gebouw IS NULL OR v_cnt_scope_afwijkend IS NOT NULL THEN v_aanduiding_controle := 'CONTROLE - Factuur op contract met onjuiste scoping' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; -- Checken of op de verplichting gekoppelde uitvoerende/leverancier/contractant ook het leveranciersnr is gevuld SELECT MAX(prs_leverancier_nr) INTO v_prs_leverancier_nr FROM prs_bedrijf WHERE prs_bedrijf_key = v_prs_bedrijf_key; IF v_prs_leverancier_nr IS NULL THEN v_aanduiding_controle := 'CONTROLE - Leveranciersnummer ontbreekt op leverancierskaart' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Bepalen of kenmerk LaatsteFactuur op JA(1) of op NEE(2) moet. Afgesproken methodiek: -- Voor alle opdrachtsoorten Workorder/Opdrachten en Bestelopdrachten ALTIJD op laatste factuur JA (m.u.v. RABO), ook bij opdrachtwaarde 0,- -- Voor alle andere andere opdrachtsoorten (en contract-facturen) en voor account RABO, volgende mechanisme: --- Als procentuele afwijking tussen opdrachtwaarde en totaal_gefactureerd kleiner/gelijk aan 1% dan mag die op JA --- Als opdrachtwaarde van het PROJECT is 0 dan laatste factuur op NEE --- Als het een verzamelfactuur-indicatie heeft, dan ook op NEE ---- Voor RABO geldt nog dat Workorders met opdrachtwaarde 0 ook op JA moeten komen IF (UPPER(v_ordersoort) IN ('WORKORDER', 'OPDRACHT') OR rec.bes_bestelopdr_key IS NOT NULL ) AND aaxx_get_user NOT IN ('RABO') THEN -- Zet kenmerk laatste factuur op Ja INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja); ELSE -- Geen verzamelfactuur - check 1% regel IF rec.kenmerk3 IS NULL THEN IF v_bedrag_totaal <> 0 THEN IF ((v_bedrag_totaal - (rec.fin_factuur_totaal + v_bedrag_gefactureerd))/ v_bedrag_totaal) * 100 <= 1 THEN -- Zet kenmerk laatste factuur op Ja INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja); ELSE -- Zet kenmerk laatste factuur op Nee INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee); END IF; END IF; IF v_bedrag_totaal = 0 AND INSTR(UPPER(v_ordersoort),'PROJECT')>0 THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee); END IF; IF v_bedrag_totaal = 0 AND UPPER(v_ordersoort) IN ('WORKORDER', 'OPDRACHT') AND aaxx_get_user IN ('RABO') THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja); END IF; END IF; -- Wel verzamelfactuur -altijd op ja IF rec.kenmerk3 IS NOT NULL THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee); END IF; END IF; -- CREDITS - Deze moeten altijd op controle JA -- Voor Contracten is dat hieronder bij Verdeelperiode-bepaling al ingeregeld. Voor Opdrachten/Bestellingen doen we dat hier IF rec.fin_factuur_totaal < 0 AND (rec.bes_bestelopdr_key IS NOT NULL OR rec.mld_opdr_key IS NOT NULL) THEN v_aanduiding_controle := 'CONTROLE - Credit geboekt op Opdracht/Bestelling' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Makering zetten voor bepaalde accounts --- Key 2 = Interface - Wel in inkoopinterface maar geen XML-output en wel op status verwerkt IF v_prs_kostenplaats_key IS NOT NULL THEN SELECT MAX(kp.prs_kostenplaatsgrp_key) INTO v_prs_kostenplaatsgrp_key FROM prs_kostenplaats kp WHERE kp.prs_kostenplaats_key = v_prs_kostenplaats_key ; IF aaxx_get_user IN ('INLO') AND v_prs_kostenplaatsgrp_key IN (321) -- Vivada THEN -- markering zetten op factuur UPDATE fin_factuur SET fin_factuur_flag = 2 WHERE fin_factuur_key = rec.fin_factuur_key ; -- en altijd controle zetten (omdat facturen door FM-er nog apart doorgezet moeten worden naar externe partij) - ticket AAXX#80045 v_aanduiding_controle := 'CONTROLE - PDF factuur doorzetten naar klant' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; -- Verdeelperiode voor de contracten bepalen - Daarvoor eerst nog diverse parameters te vullen --- METHODE 1 - OUD : Op basis van het deel dat al op contract gefactureerd is, wordt de verdeelperiode op de factuur bepaald. --- METHODE 2 - NIEUW : Op basis contractsoort CF en in voorgaande periode mits daarin minder dan 90% gefactureerd (herziening mei-2022 in opdracht van Siert Jan Bolt) IF rec.cnt_contract_key IS NOT NULL THEN SELECT SUBSTR(d.ins_discipline_omschrijving,1,2) cnt_soort, ROUND((c.cnt_contract_looptijd_tot - c.cnt_contract_looptijd_van)/30) cnt_looptijd_mnd, fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy'))) cnt_jaar_start, fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'))) cnt_jaar_eind, fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'mm'))) cnt_maand_start, fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'mm'))) cnt_maand_eind, t.cnt_termijn_type, t.cnt_termijn_aantal, TO_NUMBER (TO_CHAR (SYSDATE, 'mm')) factuur_datum_boekmaand, TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) factuur_datum_boekmaand_jr INTO v_cnt_soort, v_cnt_looptijd_mnd, v_cnt_jaar_start, v_cnt_jaar_eind, v_cnt_maand_start, v_cnt_maand_eind, v_cnt_termijn_type, v_cnt_termijn_aantal, v_factuur_datum_boekmaand, v_factuur_datum_boekmaand_jr FROM cnt_contract c, cnt_termijn t, cnt_discipline d WHERE c.cnt_contract_key = rec.cnt_contract_key AND c.cnt_contract_termijntermijn = t.cnt_termijn_key (+) AND c.ins_discipline_key = d.ins_discipline_key; -- Bepalen of het een gebroken boekjaar is... IF v_cnt_jaar_start <> v_cnt_jaar_eind THEN v_gebroken_boekjaar := 1 ; END IF; -- METHODE 1 - niet meer actief maar onderstaande bepaling wordt nog wel tekstmarig in tekst-kenmerkveld van factuur weggeschreven want is wel een 'goede' indicatie voor degene die factuur oppakt IF v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0 THEN v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ; v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ; v_cnt_deel_betaald_tekst := TO_CHAR(ROUND((v_cnt_deel_betaald_2/v_cnt_looptijd_mnd)*100,2)) || '%' ; v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ; END IF; -- METHODE 2 -- Nieuwe setting in 2022.1 (fin_defaultboekmaand_cnt) waarmee je met instelling 2 kunt afdwingen dat invoice-datum wordt gehanteerd voor bepaling boek-periode -- Deze setting dient default op 2 te staan voor HEYDAY en daarmee worden in onderstaande uitwerking alle CF-contractn indien nodig aangepast en komen de CV's automatisch goed te staan. -- 1. Facturen die na contractperiode worden geboekt moeten altijd op de laatste periode uit contract -- 2. Eerste factuur die in de contractperiode geboekt wordt, moet op eerste periode uit contract komen, ----- evenals de facturen die ingeboekt worden op datum die binnen eerste periode contract vallen -- 3. Facturen op CF-contracten die in de contractperiode geboekt worden, moeten op voorgaande verdeelperiode komen, mits daar nog niet meer dan 90% qua facturatie op voldaan is. ----- Indien al meer dan 90% dan boeken op de periode van inboeken factuur + controle -- 4. Credit-facturen moeten altijd op de laatste geboekt verdeelperiode komen, inclusief controle -- 5. Overige varianten waarvan boekmaand nog her-bepaald moet worden? -- 6. Alle overige contract-facturen komen door de facilitor-setting fin_defaultboekmaand_cnt (=2 voor heyday) dus altijd automatisch op verdeelperiode die overeenkomt met de factuurdatum (dit is voor CV's de HEYDAY-regel) -- Gaan eerst in tekststring de relevante boekmaand-data bepalen. Dit zijn: ---- 1. Begin contract = v_cnt_start = " "2022-01" ---- 2. Einde contract = v_cnt_eind = "2022-09" ---- 3. Laatste factuur geboekt in boekmaand = v_fin_factuur_boekmaand_laatst = "2022-06" of "geen" ---- 4. NU geboekt = sysdate factuur ingelezen, vertaald naar boekmaand = v_fin_factuur_boekmaand_nu = "2022-10" ---- 5.1. Voorgaande boekmaand = v_fin_factuur_boekmaand_prev ---- 5.2. Voorgaande boekmaand bedrag al gefactureerd = v_gefactureerd_vorige_maand -- 1. v_cnt_start v_cnt_maand_start_tekst := TO_CHAR(v_cnt_maand_start) ; IF LENGTH (v_cnt_maand_start_tekst) = 1 THEN v_cnt_maand_start_tekst := '0' || v_cnt_maand_start_tekst ; END IF; v_cnt_start := TO_CHAR(v_cnt_jaar_start) || '-' || v_cnt_maand_start_tekst ; -- 2. v_cnt_eind v_cnt_maand_eind_tekst := TO_CHAR(v_cnt_maand_eind) ; IF LENGTH (v_cnt_maand_eind_tekst) = 1 THEN v_cnt_maand_eind_tekst := '0' || v_cnt_maand_eind_tekst ; END IF; v_cnt_eind := TO_CHAR(v_cnt_jaar_eind) || '-' || v_cnt_maand_eind_tekst ; -- 3. v_fin_factuur_boekmaand_laatst SELECT MAX(f.fin_factuur_boekmaand) INTO v_fin_factuur_boekmaand_laatst FROM fin_factuur f WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL ; IF v_fin_factuur_boekmaand_laatst IS NULL THEN v_fin_factuur_boekmaand_laatst := 'geen'; END IF ; -- 4. v_fin_factuur_boekmaand_nu v_factuur_datum_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand); IF LENGTH (v_factuur_datum_boekmaand_nu) = 1 THEN v_factuur_datum_boekmaand_nu := '0' || v_factuur_datum_boekmaand_nu ; END IF; v_fin_factuur_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_nu ; -- 5.1. v_fin_factuur_boekmaand_prev --- Geen previous-maand te bepalen als looptijd cnt <= 1 maand en/of geboekt in maand 1 van het contract IF v_cnt_looptijd_mnd <= 1 OR v_fin_factuur_boekmaand_nu = v_cnt_start THEN v_fin_factuur_boekmaand_prev := 'geen' ; --- Wel previous-maand te bepalen ELSE --- als datum ingeboekt in contractperiode IF v_fin_factuur_boekmaand_nu > v_cnt_start AND v_fin_factuur_boekmaand_nu <= v_cnt_eind THEN v_factuur_datum_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand -1); IF v_factuur_datum_boekmaand_prev = '0' THEN v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr-1) || '-' || '12'; ELSE IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF; v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_prev; END IF; END IF; --- als datum ingeboekt na contractperiode dan is v_fin_factuur_boekmaand_prev dus v_cnt_eind-1 IF v_fin_factuur_boekmaand_nu > v_cnt_eind THEN v_factuur_datum_boekmaand_prev := TO_CHAR(v_cnt_maand_eind -1); IF v_factuur_datum_boekmaand_prev = '0' THEN v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind-1) || '-' || '12'; ELSE IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF; v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind) || '-' || v_factuur_datum_boekmaand_prev; END IF; END IF; END IF; -- 5.2. v_gefactureerd_vorige_maand IF v_fin_factuur_boekmaand_prev = 'geen' THEN v_gefactureerd_vorige_maand := 0 ; ELSE SELECT COALESCE(sum(f.fin_factuur_totaal),0) INTO v_gefactureerd_vorige_maand FROM fin_factuur f WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL AND fin_factuur_boekmaand = v_fin_factuur_boekmaand_prev ; END IF; -- Nu gaan we de juiste boekmaand conform METHODE 2 bepalen -- default v_fin_factuur_boekmaand_2 := 'nvt' ; -- 1. Voor zowel CF en CV: boekmaand/jr na contractperiode = boekmaand altijd laatste contractperiode aanhouden IF v_fin_factuur_boekmaand_nu > v_cnt_eind THEN v_fin_factuur_boekmaand_2 := v_cnt_eind ; -- wegschrijven in fin_factuur_boekmaand UPDATE fin_factuur SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2 WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; -- 2. Eerste factuur (inleesdatum binnen contract) of factuur ingeboekt in eerste periode contract dan altijd op de eerste periode uit contract laten komen IF (v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_laatst = 'geen') OR (v_fin_factuur_boekmaand_nu = v_cnt_start) THEN v_fin_factuur_boekmaand_2 := v_cnt_start ; -- wegschrijven in fin_factuur_boekmaand UPDATE fin_factuur SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2 WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; -- 3. Voor CF die qua inlees-datum binnen contract valt, moet op voorgaande boekmaand gezet worden, mits daarop minder dan 90% al op is gefactureerd. Anders op v_fin_factuur_boekmaand_nu IF v_cnt_soort = 'CF' AND v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_prev <> 'geen' AND v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0 AND rec.fin_factuur_totaal > 0 THEN v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd) ; -- Dus als inleesactie op 2022-4 EN totaal gefactureerd voor 2022-3 is al >90% , dan de factuur niet op 2022-3 maar op 2022-4 zetten IF v_cnt_maandbedrag <>0 THEN v_cnt_deel_betaald_pvm := (ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag)*100) ; IF v_cnt_deel_betaald_pvm > 90 THEN v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_nu; -- incl controle (per omgeving indien gewenst te zetten) v_aanduiding_controle := 'CONTROLE - Contract CF en 90% al gefactureerd in voorgaande periode' ; IF aaxx_get_user IN ('XXXX', 'YYYY') THEN v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; ELSE -- anders kan de factuur 'gewoon' op de vorige boekmaand v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_prev; END IF; END IF; -- wegschrijven van de hierboven bepaalde boekmaand UPDATE fin_factuur SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2 WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; -- 4. Voor CREDITS altijd op controle JA + kijken of het op de laatste gebruikte boekmaand geboekt kan worden IF rec.fin_factuur_totaal < 0 THEN v_aanduiding_controle := 'CONTROLE - Credit geboekt op Contract in voorgaande periode' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); -- indien mogelijk de boekmaand op de laatste gehanteerde boekmaand zetten IF v_fin_factuur_boekmaand_laatst <> 'geen' THEN v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_laatst; UPDATE fin_factuur SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2 WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; END IF; -- 5. Nog andere varianten waar boekmaand van bepaald moet worden? -- 6. Alle overige contract-facturen .... --- Deze worden bij import al AUTOMATISCH gevuld met boekmaand = factuurdatum (ivm setting fin_defaultboekmaand_cnt = 2) -- wegschrijven van de uitleg tav de bepaling van de boekmaand in een kenmerkveld IF v_fin_factuur_boekmaand_2 = 'nvt' -- dwz verdeelperiode bepaald door stap 6 de factuurdatum THEN v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Start/Einddatum: ' || v_cnt_start || ' - ' || v_cnt_eind || chr(10) || chr(13) || 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13) || 'BEPALING HEYDAY: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' Verdeelperiode bepaald op basis Factuurdatum: ' || rec.factuurdatum -- || chr(10) || chr(13) || 'TEST: 1.' || v_cnt_start || ' - 2.' || v_cnt_eind || ' - 3.' || v_fin_factuur_boekmaand_laatst || ' - 4.' || v_fin_factuur_boekmaand_nu || ' - 5.1.' || v_fin_factuur_boekmaand_prev || ' - 5.2.' || v_gefactureerd_vorige_maand ; ELSE v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Start/Einddatum: ' || v_cnt_start || ' - ' || v_cnt_eind || chr(10) || chr(13) || 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13) || 'BEPALING HEYDAY: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' (' || TO_CHAR(v_cnt_deel_betaald_pvm) || '%)' || ' Verdeelperiode bepaald:' || v_fin_factuur_boekmaand_2 -- || chr(10) || chr(13) || 'TEST: 1.' || v_cnt_start || ' - 2.' || v_cnt_eind || ' - 3.' || v_fin_factuur_boekmaand_laatst || ' - 4.' || v_fin_factuur_boekmaand_nu || ' - 5.1.' || v_fin_factuur_boekmaand_prev || ' - 5.2.' || v_gefactureerd_vorige_maand ; END IF; INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, SUBSTR(v_fin_factuur_boekmaand_tekst,1,1000)); -- Tot slot voor Contracten nog de volgende controles zetten ---- Op facturen op CO's van vorig boekjaar de CONTROLE zetten voor die facturen ingeboekt na FEBR (= FINA08) ---- Alle inkoopfacturen op contracten-met-gebroken-boekjaar op ter controle verdeelperiode (= FINA17) IF (c_huidig_jaar - v_cnt_jaar_eind > 1) OR (c_huidig_jaar - v_cnt_jaar_eind = 1 AND fac.safe_to_number((TO_CHAR (SYSDATE, 'mm'))) NOT IN (1,2)) THEN v_aanduiding_controle := 'CONTROLE - Betreft factuur op Contract uit vorig boekjaar' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; IF v_cnt_jaar_start < v_cnt_jaar_eind THEN -- Voor INLO: Voor IKEA (281 en 461) de controle aanzetten en voor alle andere (is igg VEH (21) kan die uit -- Voor alle andere klanten aan.. IF ( aaxx_get_user IN ('INLO') AND v_prs_kostenplaatsgrp_key IN (281, 461) ) OR ( aaxx_get_user NOT IN ('INLO') ) THEN v_aanduiding_controle := 'CONTROLE - Contract met gebroken boekjaar (check verdeelperiode)' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; END IF; -- Einde methode 2 END IF; -- Veld debiteurnummer nog vullen indien gevuld bij relatie IF v_klantnummer_key IS NOT NULL THEN -- Waarde ophalen met v_prs_bedrijf_key en vullen in v_klantnummer SELECT MAX(prs_kenmerklink_waarde) INTO v_klantnummer FROM prs_kenmerklink WHERE prs_kenmerk_key = v_klantnummer_key AND prs_link_key = v_prs_bedrijf_key AND prs_kenmerklink_verwijder IS NULL; -- Indien waarde dan vullen in inkoopfactuur veld debiteurnummer IF v_klantnummer IS NOT NULL THEN UPDATE fin_factuur SET fin_factuur_debiteur_nr = v_klantnummer WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; END IF; -- Voor Contracten geldt dat ze nog ter controle moeten als er automatisch een hoogste contractversie-nummer gekoppeld wordt IF rec.kenmerk2 = 'ter controle' THEN v_aanduiding_controle := 'CONTROLE - Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Als het de verzamelfactuurinidcatie "(*)" heeft dan het daarvoor bestemd kenmerk vullen + controle zetten IF rec.kenmerk3 = 'verzamelfactuur' THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_verzamel, 1); v_aanduiding_controle := 'CONTROLE - Dit betreft een verzamelfactuur' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); END IF; -- Tot slot controle-vinkje zetten indien nodig -- 9-2-2022 - aanpassing/verzoek HEYDAY om de facturen die op controle moeten komen ook de factuurstatus incomplete. --- Reden is om op die manier er voor te zorgen dat de goedkeuringsflow (fiatteur) niet parallel loopt met de Administratieve controle. --- In kenmerk6 wordt met status 3 aangegeven dat het een D-categorie-factuur betreft. Deze is per definitie niet 'Correct verwerkt' en sluiten we uit. IF v_controle = 1 AND rec.kenmerk6 NOT IN ('3') THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1); UPDATE fin_factuur SET fin_factuur_statuses_key = 3, fin_factuur_opmerking = 'Correct verwerkt, maar op Administratieve controle - zie logging voor detailinfo' WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; END IF; -- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten --- D-categorie: Voorheen via fallback-emailadres, maar sinds 2022.3 vanuit Mareon wel doorgestuurd naar Facilitor. IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL) AND rec.kenmerk6 NOT IN ('3') THEN v_aanduiding_controle := 'CONTROLE - Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ; v_controle := 1 ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1); INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee); END IF; -- D-categorie - -- Kan zowel voor facturen met als zonder order-referentie doorkomen IF rec.kenmerk6 = '3' THEN v_aanduiding_controle := 'CONTROLE - Betreft D-categorie factuur!' ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle); -- als controlevinkje nog niet in de voorgaande factuurverwerkingsacties is gezet, dan gaan we dat nu dus nog doen IF v_controle = 0 THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (v_fin_factuur_key, c_kenmerk_key_controle, 1); END IF; -- nog reden vullen: UPDATE fin_factuur SET fin_factuur_statuses_key = 3, fin_factuur_opmerking = rec.kenmerk7 WHERE fin_factuur_key = rec.fin_factuur_key ; END IF; -- Mareon_bron tonen in Facilitor bij Factuur IF rec.kenmerk9 IS NOT NULL AND c_kenmerk_key_mareon_bron IS NOT NULL THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_mareon_bron, rec.kenmerk9); END IF; -- Mareon_bedrijf_intern tonen in Facilitor bij Factuur IF rec.kenmerk10 IS NOT NULL AND c_kenmerk_key_bedrijf_intern IS NOT NULL THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (rec.fin_factuur_key, c_kenmerk_key_bedrijf_intern, rec.kenmerk10); END IF; -- tot slot nog nette logging v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ; fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding); -- Setting FOUTAFHANDELING op API marx_fin_factuur staat op 200 (ipv default 400) -- Als de factuur wel via FAC_UPDATE_FACTUUR is ingelezen, maar het vervolgens in bovenstaande cust_post_processing fout gaat, dan laten we deze wel via exception in facilitor doorlopen met dus status 200 naar MARX -- Omdat: --- Via MARX wordt de factuur-import voor deze factuur dan niet steeds opnieuw aangeroepen zodat HEYDAY ook niet steeds opnieuw de nieuwe, dubbele facturen in Facilitor moet verwijderen om dubbele betaling te voorkomen.. --- HEYDAY kan zo dus factuurproces verder opppakken voor deze factuur en MOET Facilitor inlichten zodat in alle rust import-probleem indien nodig structureel opgelost kan worden 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 || ')'; SELECT i.fin_factuur_key, 'Factuur wel in Facilitor verwerkt, maar met foutmelding! - bron ' || i.kenmerk9 || CHR(10) || 'Betreft factuur_key: ' || TO_CHAR(i.fin_factuur_key) || CHR(10) || 'Factuurnr lev.: ' || i.factuurnr errorhint INTO v_fin_factuur_key, v_errorhint FROM (SELECT fin_factuur_key, factuurnr, ordernr, kenmerk1, kenmerk9 FROM fac_imp_factuur WHERE fac_import_key = p_import_key AND fin_factuurregel_key IS NOT NULL AND fin_factuur_key IS NOT NULL GROUP BY fin_factuur_key, factuurnr, ordernr, kenmerk1, kenmerk9) i, fin_factuur f WHERE i.fin_factuur_key = f.fin_factuur_key ; UPDATE fin_factuur SET fin_factuur_statuses_key = 3, fin_factuur_opmerking = SUBSTR('LET OP! Bij factuurimport is Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) || 'Actie 1: Informeren Facilitor!' || CHR (13) || CHR (10) || 'Actie 2: Deze factuur gewoon oppakken: Aanvullen, doorzetten, etc', 1, 250) WHERE fin_factuur_key = v_fin_factuur_key ; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint || ' - ' || v_aanduiding); COMMIT; END; END LOOP; -- TOT SLOT -- Er is WEL een factuur_key in Facilitor aangemaakt, maar GEEN/NIET ALLE factuurregels zijn aangemaakt --- Oorzaak waarschijnlijk btw-inrichting van HEYDAY --- Dit gaan we in volgende loop per regel checken en in de factuur_opmerking vermelden + indien btw-issue dan op controle Ja zetten v_aanduiding := 'Factuurregel(s) niet aangemaakt:' ; v_factuurregels_aantal_fout := 0 ; FOR rec IN cfactuurregel LOOP BEGIN IF rec.fin_factuur_key IS NOT NULL THEN v_fin_factuur_key := rec.fin_factuur_key ; END IF; -- factuurregels die niet zijn aangemaakt via fac_update_factuur gaan we oppakken en een controle op zetten. IF rec.fin_factuurregel_key IS NULL THEN v_factuurregels_aantal_fout := v_factuurregels_aantal_fout + 1 ; -- check of het aan btw-code ligt SELECT count(*) INTO v_fin_btwtabelwaarde_found FROM fin_btwtabel b, fin_btwtabelwaarde bw WHERE b.fin_btwtabel_key = bw.fin_btwtabel_key AND b.fin_btwtabel_verwijder IS NULL AND bw.fin_btwtabelwaarde_verwijder IS NULL AND b.fin_btwtabel_omschrijving = v_fin_btwtabel AND bw.fin_btwtabelwaarde_perc = rec.btw AND COALESCE(bw.fin_btwtabelwaarde_verlegd, 0) = DECODE(rec.btw_verlegd, 'ja', 1, 0) ; IF v_fin_btwtabelwaarde_found = 0 THEN v_controle_btw := 1 ; v_aanduiding := v_aanduiding || CHR(10) || '- Regel ' || TO_CHAR(rec.fac_imp_file_index) || ' NIET aangemaakt. Btw: ' || rec.btw || ' verlegd: ' || rec.btw_verlegd || ' bedrag: ' || rec.kostprijs || CHR(10) || '-- Oorzaak: btw-code niet gevonden in ' || v_fin_btwtabel ; END IF; IF v_fin_btwtabelwaarde_found > 1 THEN v_controle_btw := 1 ; v_aanduiding := v_aanduiding || CHR(10) || '- Regel ' || TO_CHAR(rec.fac_imp_file_index) || ' NIET aangemaakt. Btw: ' || rec.btw || ' verlegd: ' || rec.btw_verlegd || ' bedrag: ' || rec.kostprijs || CHR(10) || '-- Oorzaak: btw-code niet eenduidig gevonden in ' || v_fin_btwtabel ; END IF; IF v_fin_btwtabelwaarde_found = 1 THEN v_aanduiding := v_aanduiding || CHR(10) || '- Regel ' || TO_CHAR(rec.fac_imp_file_index) || ' NIET aangemaakt. Btw: ' || rec.btw || ' verlegd: ' || rec.btw_verlegd || ' bedrag: ' || rec.kostprijs || CHR(10) || '-- Oorzaak: Onbekend..' ; END IF; END IF; 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.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint || ' - ' || v_aanduiding); COMMIT; END; END LOOP; -- Indien van toepassing administrateur hierover informeren en controle zetten.. IF v_factuurregels_aantal_fout > 0 THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (v_fin_factuur_key, c_kenmerk_key_mareon_info, v_aanduiding); v_aanduiding_controle := 'CONTROLE - Factuurregels niet (allemaal) aangemaakt' ; fac.trackaction ('FINUPD', v_fin_factuur_key, 4, NULL, v_aanduiding_controle); -- als controlevinkje nog niet in de voorgaande factuurverwerkingsacties is gezet, dan gaan we dat nu dus nog doen IF v_controle = 0 THEN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (v_fin_factuur_key, c_kenmerk_key_controle, 1); END IF; -- status incomplete (als die al niet gezet is...) UPDATE fin_factuur SET fin_factuur_statuses_key = 3, fin_factuur_opmerking = 'LET OP! Factuur niet correct verwerkt. Zijn ontbrekende factuurregels. Zie veld Mareon - Aanvullende informatie voor detailinfo' WHERE fin_factuur_key = v_fin_factuur_key ; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS LAATSTE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; v_aanduiding := 'Factuur NIET geimporteerd vanuit Mareon - !!!!' ; -- Er is GEEN factuur in facilitor aangemaakt. -- Setting FOUTAFHANDELING op API marx_fin_factuur staat op 200 (ipv default 400) ---- Omdat we dus geen 400-code teruggeven aan Mareon en deze factuur/mail in mareon-factuurverwerkingproces voor heyday verdwijnt, gaan we dit maar in FACILITOR-LOGGING vermelden ---- HEWYDAY kan dit dan met rapportage in beeld krijgen (zie aaxx_v_rap_factuur_marx_error), zodat zij tijdig actie kunnen ondernemen SELECT 'Factuur niet in Facilitor verwerkt! - bron ' || i.kenmerk9 || CHR(10) || 'Bestand-pdf: ' || i.kenmerk1 || CHR(10) || 'Factuurnr lev.: ' || i.factuurnr || CHR(10) || 'Ordernr: ' || i.ordernr errorhint INTO v_errorhint FROM fac_imp_factuur i WHERE i.fac_import_key = p_import_key AND i.fac_imp_file_index = 1 GROUP BY fin_factuur_key, factuurnr, ordernr, kenmerk1, kenmerk9, fac_import_key ; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint || ' - ' || v_aanduiding); END; / -- Error-rapport uir FIN_FACTUUR_MARX ---- als in de fac_update_factuur de aangeboden factuur uit mareon toch niet aangemaakt kan worden, geven we aan mareon wel 200-ok-code terug door deze daar in de exception af te vangen met error-logging. ---- met dit rapport krijgen we deze wel in beeld voor heyday waarna zij kunnen herleiden welke mail niet is doorgekomen en juiste actie kunnen ondernemen. ------ VERVOLGACTIE = Beter/mooier hier uiteindelijk een noti-job op in te richten.. CREATE OR REPLACE VIEW aaxx_v_rap_factuur_marx_error ( fac_import_app_code, imp_log_datum, imp_log_error, imp_log_hint ) AS SELECT a.fac_import_app_code, l.imp_log_datum, 'ERROR - Factuur NIET in FACILITOR verwerkt' error, l.imp_log_hint FROM imp_log l, fac_import i, fac_import_app a WHERE l.fac_import_key = i.fac_import_key AND i.fac_import_app_key = a.fac_import_app_key AND a.fac_import_app_code = 'FIN_FACTUUR_MARX' AND INSTR (l.imp_log_hint, 'Factuur niet in Facilitor verwerkt') > 0 AND l.imp_log_status = 'E' ; -- view om aantal ingevoerde facturen terug te herleiden naar scanning en excel import. CREATE OR REPLACE VIEW aaxx_v_rap_invoice_scan ( hide_f_ts, fclt_d_datum, totaal, scanning, excel ) AS SELECT TO_CHAR (fac_tracking_datum, 'yyyymmdd'), TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'), SUM (aantal), SUM (scanning), SUM (excel) FROM (SELECT f.fin_factuur_key, fac_tracking_datum, fac_tracking_key, fac_tracking_oms, 1 aantal, DECODE (t.prs_perslid_key, 8, 1, 0) excel, DECODE (t.prs_perslid_key, 9, 1, 0) scanning FROM fin_factuur f, (SELECT t.* FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINNEW') t WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_key = t.fac_tracking_refkey(+)) GROUP BY TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'), TO_CHAR (fac_tracking_datum, 'yyyymmdd'); -------------------------------- -- import contractorders ---- basisrapport CNT: Export-import jaarorders (aaxx_v_rap_imp_jaarcontract) ---- functie om quotes te herstellen (aaxx_correct_imp_file) ---- de onderstaande CUST-importfuntie CONTRACT -------------------------------- CREATE OR REPLACE PROCEDURE aaxx_correct_imp_file(p_import_key IN NUMBER, p_delimitor IN VARCHAR2) AS CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_index NUMBER; v_newline VARCHAR2 (4000); v_newline_tmp VARCHAR2 (4000); v_result_line VARCHAR2 (4000); v_read VARCHAR2 (4000); v_field VARCHAR2 (4000); v_inquotes NUMBER; rec c%ROWTYPE; BEGIN DELETE fac_imp_csv WHERE fac_import_key = p_import_key; v_index := 0; OPEN c; IF (c%ISOPEN) THEN LOOP BEGIN --v_errormsg := 'Fout FETCH te importeren rij'; FETCH c INTO rec; EXIT WHEN c%NOTFOUND; v_read := rec.fac_imp_file_line; v_newline := v_read; v_result_line := v_newline; WHILE v_newline IS NOT NULL LOOP DBMS_OUTPUT.put_line (v_newline); v_newline_tmp := v_newline; IF SUBSTR (v_newline, 1, 1) = '"' THEN DBMS_OUTPUT.put_line ('BEGIN DoubleQuote Found'); v_inquotes := 1; END IF; fac.imp_getfield (v_newline, p_delimitor, v_field); IF v_newline IS NOT NULL OR SUBSTR(v_newline_tmp, length(v_newline_tmp), 1) = '"' THEN v_inquotes := 0; -- Er zijn nog meer velden aanwezig dus dit is geen cr/lf in een veld. Of het was het laatste veld in de regel END IF; IF SUBSTR (v_newline_tmp, LENGTH (v_field), 1) = '"' THEN DBMS_OUTPUT.put_line ('END DoubleQuote Found'); v_inquotes := 0; END IF; IF v_inquotes = 1 THEN FETCH c INTO rec; EXIT WHEN c%NOTFOUND; v_read := rec.fac_imp_file_line; v_result_line := v_result_line || CHR(10) || v_read; v_newline := v_newline || v_read; END IF; END LOOP; v_index := v_index + 1; DBMS_OUTPUT.put_line ('New line: ' || v_result_line); INSERT INTO fac_imp_csv (fac_imp_csv_index, fac_import_key, fac_imp_csv_datum, fac_imp_file_line) VALUES (v_index, p_import_key, SYSDATE, v_result_line); END; END LOOP; CLOSE c; COMMIT; DELETE fac_imp_file WHERE fac_import_key = p_import_key; INSERT INTO fac_imp_file (fac_imp_file_index, fac_imp_file_line, fac_import_key) SELECT fac_imp_csv_index, fac_imp_file_line, fac_import_key FROM fac_imp_csv WHERE fac_import_key = p_import_key; DELETE fac_imp_csv WHERE fac_import_key = p_import_key; END IF; END; / CREATE OR REPLACE PROCEDURE aaxx_import_contract ( p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (4000); -- Input line v_read VARCHAR2 (4000); v_lastchar VARCHAR2 (1); v_firstchar VARCHAR2 (1); v_errormsg VARCHAR (1000); v_hint VARCHAR (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; v_ongeldig NUMBER (1); v_mode NUMBER (1); v_aanduiding VARCHAR (200); v_header_is_valid NUMBER (1); -- De importvelden: v_gebouw_code VARCHAR2 (100); v_leverancier VARCHAR2 (100); v_beschrijving VARCHAR2 (100); v_van VARCHAR2 (100); v_dienst VARCHAR2 (100); v_tot VARCHAR2 (100); v_versie VARCHAR2 (100); v_omschrijving VARCHAR2 (4000); v_bedrag VARCHAR2 (100); v_termijnbedrag VARCHAR2 (100); v_contractsoort VARCHAR2 (100); v_contractnummer VARCHAR2 (100); v_volgnummer VARCHAR2 (100); v_leveranciernummer VARCHAR2 (100); v_contractafdeling VARCHAR2 (100); v_gewijzigddoor VARCHAR2 (100); v_contractmanager VARCHAR2 (100); v_discipline_key NUMBER; v_dummy VARCHAR2 (100); CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; rec c%ROWTYPE; BEGIN -- Eerst opruiming DELETE FROM aaxx_imp_contract; -- En eerst correctie op quotes en cr/lf aaxx_correct_imp_file(p_import_key, c_fielddelimitor); COMMIT; v_header_is_valid := 0; OPEN c; IF (c%ISOPEN) THEN LOOP BEGIN v_errormsg := 'Fout FETCH te importeren rij'; FETCH c INTO rec; EXIT WHEN c%NOTFOUND; v_read := rec.fac_imp_file_line; v_newline := v_read; v_errormsg := 'Fout opvragen te importeren rij:' || substr(v_newline,1,200); v_aanduiding := ''; v_ongeldig := 0; IF (UPPER(v_newline) like 'GEBOUW;BEDRIJF;LEVNR;BESCHRIJVING;INGANGSDATUM;EINDDATUM;ORDEROMSCHRIJVING;BEDRAG;TERMIJNBEDRAG;DIENST;CONTRACTSOORT;CONTRACTNR;VERSIE;REGELNR;CONTRACTAFDELING;CONTRACTMANAGER;GEWIJZIGDDOOR%') THEN v_header_is_valid := 1; ELSE -- Lees alle veldwaarden fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code); -- v_errormsg := 'Fout opvragen te importeren rij (leverancier)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_leverancier); -- v_errormsg := 'Fout opvragen te importeren rij (leveranciernummer)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_leveranciernummer); -- v_errormsg := 'Fout opvragen te importeren rij (beschrijving)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_beschrijving); -- v_errormsg := 'Fout opvragen te importeren rij (van)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_van); -- v_errormsg := 'Fout opvragen te importeren rij (tot)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_tot); -- v_errormsg := 'Fout opvragen te importeren rij (omschrijving)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_omschrijving); -- v_errormsg := 'Fout opvragen te importeren rij (bedrag)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_bedrag); -- v_errormsg := 'Fout opvragen te importeren rij (termijnbedrag)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_termijnbedrag); -- tekens uit bedragvelden halen v_bedrag := TRIM(replace(v_bedrag, CHR(128),'')); v_termijnbedrag := TRIM(replace(v_termijnbedrag, CHR(128),'')); -- v_errormsg := 'Fout opvragen te importeren rij (dienst)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienst); -- v_errormsg := 'Fout opvragen te importeren rij (dienst)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_contractsoort); -- controleeer of het contractsoort bestaat v_errormsg := 'Controleer of de contractsoort al bestaat: ' || v_contractsoort; BEGIN SELECT ins_discipline_key INTO v_discipline_key FROM cnt_discipline WHERE ins_discipline_verwijder IS NULL AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (TRIM (SUBSTR(v_contractsoort,1,60))); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Onbekende contractsoort: ' || v_contractsoort, 'Toelichting: ... '); END; -- v_errormsg := 'Fout opvragen te importeren rij (contractcode):' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_contractnummer); -- v_errormsg := 'Fout opvragen te importeren rij (versie)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_versie); -- v_errormsg := 'Fout opvragen te importeren rij (volgnummer)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_volgnummer); -- v_errormsg := 'Fout opvragen te importeren rij (contractafdeling)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_contractafdeling); -- v_errormsg := 'Fout opvragen te importeren rij (contractmanager)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_contractmanager); -- v_errormsg := 'Fout opvragen te importeren rij (gewijzigddoor)' || v_gebouw_code; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gewijzigddoor); -- Insert geformatteerde import record v_errormsg := 'Fout bij toevoegen te importeren gebouw [' || v_gebouw_code || ']'; INSERT INTO AAXX_IMP_CONTRACT (gebouw, leverancier, leveranciernummer, beschrijving, van, tot, omschrijving, bedrag, termijnbedrag, dienst, contractsoort, contractnummer, versie, volgnummer, contractafdeling, contractmanager, gewijzigddoor, volgorde) VALUES (v_gebouw_code, v_leverancier, v_leveranciernummer, v_beschrijving, fac.safe_to_date (v_van, 'dd-mm-yy'), fac.safe_to_date (v_tot, 'dd-mm-yy'), v_omschrijving, aaxx_get_imp_float (v_bedrag), aaxx_get_imp_float (v_termijnbedrag), v_dienst, SUBSTR(v_contractsoort,1,60), TRIM(v_contractnummer), v_versie, fac.safe_to_number ( REPLACE (v_volgnummer, ',', '.')), v_contractafdeling, v_contractmanager, v_gewijzigddoor, rec.fac_imp_file_index); END IF; END; END LOOP; END IF; IF v_header_is_valid = 0 THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... '); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; v_hint := v_errormsg; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint); END aaxx_import_contract; / CREATE OR REPLACE PROCEDURE aaxx_update_contract (p_import_key IN NUMBER) AS CURSOR cdisc IS SELECT contractsoort, MIN(volgorde) volgorde FROM aaxx_imp_contract WHERE NOT EXISTS (SELECT ins_discipline_key FROM cnt_discipline WHERE UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (TRIM (contractsoort))) GROUP BY contractsoort; CURSOR c IS SELECT * FROM aaxx_imp_contract ORDER BY volgorde; v_aanduiding VARCHAR2 (200); v_oldcountcnt NUMBER; v_newcountcnt NUMBER; v_countcnt NUMBER; v_errormsg VARCHAR (1000); v_error NUMBER (1); v_error_hint VARCHAR (1000); oracle_err_mes VARCHAR2 (150); oracle_err_num VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; v_gebouw_key NUMBER; v_dienst_key NUMBER; v_afdeling_key NUMBER; v_perslid_key NUMBER; v_perslid_man_key NUMBER; v_discipline_key NUMBER; v_contract_key NUMBER; v_bedrijf_key NUMBER; v_kostenplaats_key NUMBER; v_count NUMBER; v_versie NUMBER; v_contract_nummer_intern NUMBER; BEGIN v_error := 0; SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog ( p_import_key, 'I', 'AAFM Contract import version ' || currentversion, '$Revision$'); SELECT COUNT ( * ) INTO v_countcnt FROM aaxx_imp_contract; IF v_countcnt = 0 THEN fac.imp_writelog (p_import_key, 'E', 'AAFM Contract import bevat geen records', '$Revision$'); RETURN; END IF; SELECT COUNT ( * ) INTO v_oldcountcnt FROM cnt_contract; UPDATE cnt_contract SET cnt_contract_versie = '0' WHERE cnt_contract_versie IS NULL; FOR rec IN cdisc LOOP BEGIN v_aanduiding := ' regel[' || rec.volgorde || '] contractsoort: ' || rec.contractsoort; v_error_hint := 'Toevoegen contractsoort:' || rec.contractsoort; INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving) VALUES ('CNT', rec.contractsoort) RETURNING ins_discipline_key INTO v_discipline_key; INSERT INTO cnt_disc_params (cnt_ins_discipline_key, cnt_srtcontract_type) VALUES (v_discipline_key, 5); END; END LOOP; FOR rec IN c LOOP BEGIN v_aanduiding := 'regel[' || rec.volgorde || '] nummer: ' || rec.contractnummer || ' versie: ' || rec.versie || ' volgnummer: ' || rec.volgnummer; v_error_hint := 'Controle op bedrijf (check contract vinkje)'; v_perslid_man_key := NULL; SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_contract = 1 AND ( UPPER (TRIM (prs_leverancier_nr)) = UPPER (TRIM (rec.leveranciernummer)) OR (rec.leveranciernummer IS NULL AND rec.leverancier = prs_bedrijf_naam)); v_error_hint := 'Controle op dienst'; IF rec.dienst IS NOT NULL THEN SELECT prs_dienst_key INTO v_dienst_key FROM prs_dienst WHERE UPPER (TRIM (prs_dienst_omschrijving)) = UPPER (TRIM (rec.dienst)); END IF; v_error_hint := 'Controle op contractsoort'; SELECT ins_discipline_key INTO v_discipline_key FROM cnt_discipline WHERE ins_discipline_verwijder IS NULL AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (TRIM (rec.contractsoort)); v_error_hint := 'Controle op contractafdeling'; SELECT prs_afdeling_key INTO v_afdeling_key FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL AND UPPER (TRIM (prs_afdeling_naam)) = UPPER (TRIM (rec.contractafdeling)); v_error_hint := 'Controle op contractmanager'; IF rec.contractmanager IS NOT NULL THEN SELECT prs_perslid_key INTO v_perslid_man_key FROM prs_v_aanwezigperslid WHERE prs_perslid_oslogin = UPPER (TRIM (rec.contractmanager)) OR prs_perslid_oslogin2 = UPPER (TRIM (rec.contractmanager)); END IF; v_error_hint := 'Controle op gewijzigddoor'; SELECT prs_perslid_key INTO v_perslid_key FROM prs_v_aanwezigperslid WHERE prs_perslid_oslogin = UPPER (TRIM (rec.gewijzigddoor)) OR prs_perslid_oslogin2 = UPPER (TRIM (rec.gewijzigddoor)); IF rec.volgnummer IS NULL THEN -- kopregel v_contract_key := NULL; v_versie := NULL; v_error_hint := 'Controle op kostenplaats'; SELECT prs_kostenplaats_key INTO v_kostenplaats_key FROM prs_v_aanwezigkostenplaats WHERE UPPER (TRIM (prs_kostenplaats_nr)) = UPPER (TRIM (rec.gebouw)); v_error_hint := 'Controle op contractnummer'; -- Als rec.contractnummer gevuld is, dan gaan we kijken of er een aanwezig contract is ---- Zo ja, dan hoogste versie-nummer bepalen en insert doen ---- Zo niet, dan geen contract aanmaken maar via exception afhandelen IF rec.contractnummer IS NOT NULL THEN SELECT COUNT (*) INTO v_count FROM cnt_v_aanwezigcontract WHERE TRIM (cnt_contract_nummer_intern) = TRIM (rec.contractnummer) ; IF v_count > 0 THEN SELECT max(fac.safe_to_number(cnt_contract_versie)) + 1 INTO v_versie FROM cnt_v_aanwezigcontract WHERE TRIM (cnt_contract_nummer_intern) = TRIM (rec.contractnummer) ; END IF; IF v_count = 0 THEN -- Dan gaan we hem niet aanmaken. Onderstaande select levert geen resultaat op en zal dus netjes via de exception lopen SELECT cnt_contract_nummer_intern INTO v_contract_nummer_intern FROM cnt_v_aanwezigcontract WHERE TRIM (cnt_contract_nummer_intern) = TRIM (rec.contractnummer) ; END IF; END IF; v_error_hint := 'Toevoegen contract'; INSERT INTO cnt_contract (cnt_contract_nummer, cnt_contract_nummer_intern, cnt_contract_omschrijving, cnt_contract_document, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_contract_status, cnt_contract_kosten, cnt_contract_termijnkosten, cnt_prs_bedrijf_key, prs_afdeling_key_eig, ins_discipline_key, prs_perslid_key_eig, prs_perslid_key_beh, prs_kostenplaats_key, cnt_contract_versie, cnt_contract_opzegtermijn, cnt_contract_rappeltermijn) VALUES (rec.contractnummer, rec.contractnummer, SUBSTR (rec.beschrijving, 1, 50), REPLACE (REPLACE (rec.omschrijving, '<(>', ''), '<)>', ''), rec.van, rec.tot, 2, -- Nieuw rec.bedrag, rec.termijnbedrag, v_bedrijf_key, v_afdeling_key, v_discipline_key, v_perslid_man_key, v_perslid_key, v_kostenplaats_key, DECODE(v_versie, NULL, '0', v_versie), 1, 1) RETURNING cnt_contract_key INTO v_contract_key; -- Indien het een import van nieuw contract betreft, dan moeten we contractnummer en contract_nummer_intern nog vullen met de net aangemaakte contract_key IF rec.contractnummer IS NULL THEN UPDATE cnt_contract SET cnt_contract_nummer = cnt_contract_key, cnt_contract_nummer_intern = cnt_contract_key WHERE cnt_contract_key = v_contract_key; END IF; -- rec.volgnummer gevuld met 1 dus vanaf hier de gebouw-regels ELSE v_error_hint := 'Controle op gebouwcode'; SELECT alg_gebouw_key INTO v_gebouw_key FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_code) = UPPER (rec.gebouw); -- als het bovenliggende contract niet aangemaakt kon worden gaan we ook geen scope invullen. IF v_contract_key IS NOT NULL THEN -- Scope van het contract zetten. INSERT INTO cnt_contract_plaats (cnt_contract_key, cnt_alg_plaats_key, cnt_alg_plaats_code, cnt_contract_plaats_gewicht) VALUES (v_contract_key, v_gebouw_key, 'G', rec.bedrag); END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); IF oracle_err_num = 1 THEN oracle_err_mes := 'Combinatie contractnummer/versie bestaat al.'; END IF; IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan één resultaat op.'; END IF; IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF; v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; aaxx_imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint || ' - ' || v_aanduiding); v_error := 1; END; END LOOP; IF v_error = 0 THEN COMMIT; ELSE ROLLBACK; END IF; -- How many active records are now present? SELECT COUNT ( * ) INTO v_newcountcnt FROM cnt_contract; fac.imp_writelog ( p_import_key, 'S', 'Aantal contracten vooraf: ' || TO_CHAR (v_oldcountcnt) || ' nu: ' || TO_CHAR (v_newcountcnt), ''); EXCEPTION WHEN OTHERS THEN ROLLBACK; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint || ' - ' || v_aanduiding); COMMIT; END; / ------------------------------------------- -- Import inspecties / MJOB ------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_insp_mjob (p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (4000); -- Input line v_errormsg VARCHAR (1000); v_hint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_ongeldig NUMBER (1); v_aanduiding VARCHAR2 (200); v_header_is_valid NUMBER (1); v_dummy VARCHAR2 (1000); v_count NUMBER; v_count_rec NUMBER := 0 ; -- totaal aantal record in csv v_count_verwerk NUMBER ; -- aantal te verwerken regels v_count_n_taak NUMBER ; -- aantal nieuw aan te maken basistaken v_count_n_taakobject NUMBER ; -- aantal nieuw aan te maken objecttaken v_count_w_taak NUMBER ; -- aantal bestaande taken te wijzigen -- De importvelden: v_locatiecode VARCHAR2(1000); v_objectomschrijving VARCHAR2(1000); v_taakcategorie VARCHAR2(1000); v_taakomschrijving VARCHAR2(1000); v_taakomschrijving_nieuw VARCHAR2(1000); -- Vullen we in kolom extra_veld5 v_taakopmerking VARCHAR2(1000); v_taakgroep VARCHAR2(1000); v_taakprioriteit VARCHAR2(1000); v_taakobjectpercentage VARCHAR2(1000); v_taakobjectopmerking VARCHAR2(1000); v_taakobjectperiode VARCHAR2(1000); v_taakobjectstartjaar VARCHAR2(1000); -- Startjaar uit CSV v_taakobjectstartjaar_d DATE; v_object_aanmaak DATE; -- Datum aanmaak van Object v_taakobjecteindjaar VARCHAR2(1000); v_taakobjecteindjaar_d DATE; v_taakobjectmateriaal VARCHAR2(1000); v_taakobjectkosten VARCHAR2(1000); v_taakobjecteenheid VARCHAR2(1000); v_taakdienst VARCHAR2(1000); v_deel_key NUMBER(10); v_discipline_key NUMBER(10); v_ismjob NUMBER; v_taak_geschiedenis NUMBER (10); -- Vullen we in kolom extra_veld4 v_srtcontrole_key NUMBER(10); v_srtcontrole_teller NUMBER(10); v_ins_srtdeel_key NUMBER(10); v_ins_srtdeel_code VARCHAR2(10); v_ins_srtcontroledl_xcp_key NUMBER(10); v_taakobject_startjaar_d DATE; -- Startjaar van de reeds in Facilitor gekoppelde objecttaak CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM aaxx_imp_insp_mjob; COMMIT; v_header_is_valid := 0; v_ongeldig := 0; FOR rec IN c LOOP BEGIN v_ongeldig := 0; v_taak_geschiedenis := NULL ; v_deel_key := NULL ; v_ins_srtdeel_key := NULL ; v_ins_srtdeel_code := NULL ; v_srtcontrole_key := NULL ; v_ins_srtcontroledl_xcp_key := NULL; v_errormsg := 'Fout FETCH te importeren rij'; v_newline := rec.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200); v_aanduiding := ''; -- OUD: 'OBJECTOMSCHRIJVING;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN% -- NIEUW (vanaf 2020-6): OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW; IF (REPLACE(UPPER (v_newline), ' ') LIKE 'OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW%') THEN v_header_is_valid := 1; ELSE -- Lees alle veldwaarden v_count_rec := v_count_rec + 1 ; v_errormsg := 'Fout opvragen te importeren rij (object)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_objectomschrijving); v_errormsg := 'Fout opvragen te importeren rij (discipline)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakcategorie); v_errormsg := 'Fout opvragen te importeren rij (taakomschrijving)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving); v_errormsg := 'Fout opvragen te importeren rij (taakopmerking)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakopmerking); v_errormsg := 'Fout opvragen te importeren rij (taakgroep)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakgroep); v_errormsg := 'Fout opvragen te importeren rij (prioriteit)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakprioriteit); v_errormsg := 'Fout opvragen te importeren rij (percentage)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectpercentage); v_errormsg := 'Fout opvragen te importeren rij (opmerking)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectopmerking); v_errormsg := 'Fout opvragen te importeren rij (eenheid)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteenheid); v_errormsg := 'Fout opvragen te importeren rij (periode)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectperiode); v_errormsg := 'Fout opvragen te importeren rij (startjaar)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectstartjaar); v_errormsg := 'Fout opvragen te importeren rij (eindjaar)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteindjaar); v_errormsg := 'Fout opvragen te importeren rij (materiaal)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectmateriaal); v_errormsg := 'Fout opvragen te importeren rij (dienst)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakdienst); v_errormsg := 'Fout opvragen te importeren rij (taakomschrijvingnieuw)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving_nieuw); IF v_header_is_valid = 1 THEN -- Als geldige header gepasseerd en csv-recordvelden gevuld dan gaan we eerst checken of data klopt -- Controleer of het object bestaat -- Controleer of object er meerdere keren in staat (valt terug naar OTHERS, regel 300) BEGIN v_errormsg := 'Fout bij opzoeken object: ' || v_objectomschrijving ||' komt vaker dan 1 keer voor'; SELECT ins_deel_key INTO v_deel_key FROM ins_deel WHERE ins_deel_omschrijving = v_objectomschrijving AND ins_deel_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN aaxx_imp_writelog ( p_import_key, 'E', 'Object bestaat niet - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving); v_ongeldig := 1; END; -- Controleer de taakcategorie v_errormsg := 'Fout bij controleren taakcategorie ' ; BEGIN SELECT ins_discipline_key, ctr_disc_params_ismjob INTO v_discipline_key, v_ismjob FROM ins_tab_discipline d, ctr_disc_params dp WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_verwijder IS NULL AND d.ins_discipline_module = 'CTR' AND UPPER (d.ins_discipline_omschrijving) = TRIM(UPPER(v_taakcategorie)); EXCEPTION WHEN NO_DATA_FOUND THEN aaxx_imp_writelog ( p_import_key, 'E', 'Inspectie discipline niet gevonden - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_taakcategorie); v_ongeldig := 1; END; -- Controleer de eenheid IF v_ismjob = 1 THEN v_taakobjecteenheid := '4'; -- jaar END IF; IF v_taakobjecteenheid IS NOT NULL AND v_taakobjecteenheid NOT IN ('1', '2', '3', '4') THEN aaxx_imp_writelog ( p_import_key, 'E', 'Eenheid is niet correct gevuld (of leeg of 1,2,3,4) - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid); v_ongeldig := 1; END IF; -- Controleer dienst v_errormsg := 'Fout controleren dienst '; IF v_taakdienst IS NOT NULL THEN SELECT count(*) INTO v_count FROM prs_dienst WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_taakdienst); IF v_count = 0 THEN aaxx_imp_writelog ( p_import_key, 'W', 'Dienst onbekend - zal bij verwerken aangemaakt worden.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakdienst); END IF; END IF; -- Controleer de kosten - leeg of numeriek v_errormsg := 'Fout controleren kosten '; IF v_taakobjectmateriaal IS NOT NULL AND fac.safe_to_number (REPLACE (v_taakobjectmateriaal, ',', '.')) IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Kosten taakobject niet goed ingevuld - Regel wordt niet verwerkt.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakobjectmateriaal); v_ongeldig := 1; END IF; -- Controleer de taakperiode - Leeg of numeriek v_errormsg := 'Fout controleren taakperiode '; IF v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Ongeldige taakobjectperiode - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode); v_ongeldig := 1; END IF; -- Controleer de taakprioriteit - Leeg of numeriek v_errormsg := 'Fout controleren taakprioriteit '; IF v_taakprioriteit IS NOT NULL AND fac.safe_to_number (v_taakprioriteit) IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Prioriteit taak niet goed ingevuld - Regel wordt niet verwerkt.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakprioriteit); v_ongeldig := 1; END IF; -- Controleer de startdatum v_errormsg := 'Fout bij controle startdatum '; -- In geval jaar-invoer op datum zetten.. IF LENGTH (v_taakobjectstartjaar) = 4 THEN v_taakobjectstartjaar := '01-01-' || v_taakobjectstartjaar; END IF; IF v_taakobjectstartjaar IS NOT NULL AND fac.safe_to_date (v_taakobjectstartjaar, 'dd-mm-yyyy') IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Startdatum ongeldige invoer - Regel wordt niet verwerkt.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar); v_ongeldig := 1; ELSE v_taakobjectstartjaar_d := fac.safe_to_date(v_taakobjectstartjaar, 'dd-mm-yyyy') ; END IF; -- Hier controleren of de startdatum voor de Objectregisratiedatum ligt v_errormsg := 'Fout bij controle start- en objectregistratiedatum '; IF v_deel_key IS NOT NULL AND v_ongeldig = 0 THEN SELECT ins_deel_aanmaak INTO v_object_aanmaak FROM ins_deel WHERE ins_deel_key = v_deel_key ; IF v_taakobjectstartjaar_d < v_object_aanmaak THEN v_taakobjectstartjaar_d := v_object_aanmaak; aaxx_imp_writelog ( p_import_key, 'W', 'Startdatum objecttaak ligt voor Objectregistratiedatum - Startdatum zal bij verwerken gelijkgezet worden aan de Objectregistratiedatum.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar || ' wordt ' || v_object_aanmaak); END IF; END IF; -- Controleer de einddatum v_errormsg := 'Fout bij controle einddatum '; -- In geval jaar-invoer op datum zetten.. IF LENGTH (v_taakobjecteindjaar) = 4 THEN v_taakobjecteindjaar := '31-12-' || v_taakobjecteindjaar; END IF; IF v_taakobjecteindjaar IS NOT NULL AND fac.safe_to_date (v_taakobjecteindjaar, 'dd-mm-yyyy') IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Einddatum ongeldige invoer - Regel wordt niet verwerkt.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjecteindjaar); v_ongeldig := 1; ELSE v_taakobjecteindjaar_d := fac.safe_to_date(v_taakobjecteindjaar, 'dd-mm-yyyy') ; END IF; -- Hier controleren of de taak al bestaat... v_errormsg := 'Fout controleren nieuwe of bestaande taak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ; IF v_deel_key IS NOT NULL AND v_ongeldig = 0 THEN -- Eerst ins_srtdeel_code bepalen SELECT d.ins_srtdeel_key, sd.ins_srtdeel_code INTO v_ins_srtdeel_key, v_ins_srtdeel_code FROM ins_deel d, ins_srtdeel sd WHERE d.ins_deel_key = v_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND ins_deel_verwijder IS NULL; -- Vervolgens kijken of er al een taak op aangemaakt is SELECT count(*) INTO v_srtcontrole_teller FROM ins_srtcontrole WHERE LOWER(ins_srtcontrole_omschrijving) = SUBSTR ( TRIM ( v_ins_srtdeel_code || ' - ' || LOWER(v_taakomschrijving)), 1, 60); -- Zo ja, dan gaan we de srt_controle_key vullen --- Ps. Komt soms bij heyday voor dat eenzelfde basistaak er meer dan 1 keer in staat (per ongeluk) en daarom pakken we hier dan de max(key). IF v_srtcontrole_teller >0 THEN SELECT max(ins_srtcontrole_key) INTO v_srtcontrole_key FROM ins_srtcontrole WHERE LOWER(ins_srtcontrole_omschrijving) = SUBSTR ( TRIM ( v_ins_srtdeel_code || ' - ' || LOWER(v_taakomschrijving)), 1, 60) ; ELSE -- Zo niet, dan is het dus geen bestaande standaard taak en gaan we straks in de update NIEUWE taak aanmaken -- En passen dan ook maar gelijk taakomschrijving goed aan v_errormsg := 'Fout bij aanpassen taakomschrijving '; IF (LENGTH (TRIM(v_ins_srtdeel_code)) + 3 + LENGTH(TRIM(v_taakomschrijving))) > 60 THEN aaxx_imp_writelog ( p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' wordt: ' || SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) ); END IF; v_taakomschrijving := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) ; END IF; END IF; -- Hier controleren of voor de bestaande taak ook de objecttaak al bestaat... v_errormsg := 'Fout controleren nieuwe of bestaande objecttaak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ; IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL THEN SELECT max(t.ins_srtcontroledl_xcp_key), max(t.ins_srtcontroledl_xcp_startdat) INTO v_ins_srtcontroledl_xcp_key, v_taakobject_startjaar_d FROM ins_srtcontroledl_xcp t WHERE t.ins_srtcontrole_key = v_srtcontrole_key AND t.ins_deel_key = v_deel_key ; END IF; -- Hier controleren of alle verplichte velden voor de nieuwe objecttaak correct zijn gevuld ---- Dit zijn: Startdatum + Eenheid + Periode + Taakgroep(?) + Percentage (?) + Kosten (?) v_errormsg := 'Fout controleren verplichte velden bij nieuwe objecttaak '; IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_ins_srtcontroledl_xcp_key IS NULL THEN IF v_taakobjectstartjaar IS NULL THEN aaxx_imp_writelog ( p_import_key, 'E', 'Startdatum niet ingevuld - Regel wordt niet verwerkt.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving); v_ongeldig := 1; END IF; IF v_taakobjecteenheid IS NULL or v_taakobjecteenheid NOT IN ('1', '2', '3', '4') THEN aaxx_imp_writelog ( p_import_key, 'E', 'Geen of ongeldige eenheid gevonden - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid); v_ongeldig := 1; END IF; IF (v_taakobjectperiode IS NULL) OR (v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL) THEN aaxx_imp_writelog ( p_import_key, 'E', 'Geen of ongeldige taakobjectperiode - Regel wordt niet verwerkt ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode); v_ongeldig := 1; END IF; END IF; -- Hier controleren of er al geschiedenis op de objecttaak zit en de startdatum afwijkt van degene meegegeven in csv v_errormsg := 'Fout controleren geschiedenis op objecttaak '; IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL AND v_ins_srtcontroledl_xcp_key IS NOT NULL THEN v_taak_geschiedenis := 0; SELECT count(*) INTO v_taak_geschiedenis FROM ins_deelsrtcontrole WHERE ins_deel_key = v_deel_key and ins_srtcontrole_key = v_srtcontrole_key ; IF v_taak_geschiedenis > 0 AND v_taakobjectstartjaar IS NOT NULL AND v_taakobjectstartjaar_d <> v_taakobject_startjaar_d THEN aaxx_imp_writelog ( p_import_key, 'W', 'Op deze objecttaak zit al geschiedenis - afwijkende startdatum zal niet aangepast worden.. ', rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' - ' || v_taakobjectstartjaar_d || ' vs. ' || v_taakobject_startjaar_d) ; END IF; END IF; -- Nu kunnen we de tussentabel vullen v_errormsg := 'Fout bij toevoegen regel aan tabel ' || v_objectomschrijving; IF v_ongeldig = 0 THEN INSERT INTO aaxx_imp_insp_mjob (locatiecode, objectomschrijving , taakcategorie, taakomschrijving, taakopmerking, taakgroep, taakprioriteit, taakobjectpercentage, taakobjectopmerking, taakobjectperiode, taakobjectstartjaar, taakobjecteindjaar, taakobjectmateriaal, taakobjecteenheid, taakdienst, extra_veld4, -- Gebruiken voor taakgeschiedenis extra_veld5, -- Gebruiken voor taakomschrijving_nieuw deel_key, discipline_key, ismjob, ins_srtcontrole_key, ins_srtcontroledl_xcp_key, ins_srtdeel_key) VALUES (v_locatiecode, v_objectomschrijving, v_taakcategorie, v_taakomschrijving, v_taakopmerking, v_taakgroep, v_taakprioriteit, v_taakobjectpercentage, v_taakobjectopmerking, v_taakobjectperiode, v_taakobjectstartjaar_d, v_taakobjecteindjaar_d, v_taakobjectmateriaal, v_taakobjecteenheid, v_taakdienst, v_taak_geschiedenis, v_taakomschrijving_nieuw, v_deel_key, v_discipline_key, v_ismjob, v_srtcontrole_key, v_ins_srtcontroledl_xcp_key, v_ins_srtdeel_key); END IF; END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; v_hint := v_errormsg; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint); END; END LOOP; -- Aantallen tellen voor logging v_errormsg := 'Fout bij tellen aantallen voor logging ' ; v_count_verwerk := 0 ; -- aantal te verwerken regels v_count_n_taak := 0 ; -- aantal nieuw aan te maken basistaken v_count_n_taakobject := 0 ; -- aantal nieuw aan te maken objecttaken v_count_w_taak := 0 ; -- aantal bestaande (object)taken te wijzigen SELECT count(*) INTO v_count_verwerk FROM aaxx_imp_insp_mjob ; SELECT count(*) INTO v_count_n_taak FROM (SELECT DISTINCT(taakomschrijving) FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NULL) v ; SELECT count(*) INTO v_count_n_taakobject FROM aaxx_imp_insp_mjob WHERE ins_srtcontroledl_xcp_key IS NULL ; SELECT count(*) INTO v_count_w_taak FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NOT NULL AND ins_srtcontroledl_xcp_key IS NOT NULL ; IF v_header_is_valid = 0 THEN ROLLBACK; aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: Verkeerde header. Niet conform specs. '); ELSE fac.imp_writelog ( p_import_key, 'S', 'IMPORT TAKEN: aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)' || CHR(13) || CHR(10) || 'Aantal nieuwe taken: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10) || 'Aantal nieuwe objecttaken: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10) || 'Aantal bestaande, te wijzigen (object)taken: ' || TO_CHAR (v_count_w_taak), ''); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; oracle_err_num := SQLCODE; v_hint := v_errormsg; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint); END aaxx_import_insp_mjob; / CREATE OR REPLACE PROCEDURE aaxx_update_insp_mjob (p_import_key IN NUMBER) AS CURSOR c_n -- nieuwe taken en objecttaken aanmaken.. IS SELECT i.* FROM aaxx_imp_insp_mjob i WHERE i.ins_srtcontrole_key IS NULL; CURSOR c_no -- nieuwe objecttaken aanmaken.. IS SELECT i.* FROM aaxx_imp_insp_mjob i WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NULL; CURSOR c_m -- bestaande taak en/of objecttaak wijzigen IS SELECT i.* FROM aaxx_imp_insp_mjob i WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NOT NULL; v_errormsg VARCHAR2 (4000); v_error_hint VARCHAR2 (4000); oracle_err_mes VARCHAR2 (4000); oracle_err_num VARCHAR2 (4000); v_aanduiding VARCHAR2 (1000); v_aanduiding_objecttaak VARCHAR2 (1000); v_ongeldig NUMBER (1); v_ins_srtcontrole_key NUMBER (10); v_dienst_key NUMBER (10); v_taak_al_aangemaakt NUMBER(10); v_count_verwerk NUMBER := 0 ; -- aantal verwerkte records v_count_n_taak NUMBER := 0 ; -- aantal nieuw aangemaakte basistaken v_count_n_taakobject NUMBER := 0 ; -- aantal nieuw aangemaakte objecttaken v_count_w_taak NUMBER := 0 ; -- aantal bestaande basistaken gewijzigd v_count_w_taakobject NUMBER := 0 ; -- aantal bestaande object-taken gewijzigd v_count_taak NUMBER := 0 ; v_count_taakobject NUMBER := 0 ; -- Velden v_taakomschrijving VARCHAR2(1000); v_ins_srtdeel_code VARCHAR2(10); v_taakomschrijving_nieuw VARCHAR2(1000); v_taakopmerking VARCHAR2(1000); v_taakgroep VARCHAR2(1000); v_taakdienst_key NUMBER(10); v_taakdienst VARCHAR2(1000); v_taakprioriteit NUMBER(3); v_percentage NUMBER(3); v_objecttaakopmerking VARCHAR2(1000); v_eenheid NUMBER(3); v_periode NUMBER(3); v_startjaar DATE; v_eindjaar DATE; v_materiaalkosten NUMBER(10); BEGIN v_ongeldig := 0; FOR rec IN c_n LOOP BEGIN v_aanduiding := rec.objectomschrijving || ' / ' || rec.taakcategorie || ' - ' || rec.taakomschrijving; -- Eenzelfde basistaak kan meerdere keren in CSV zitten. -- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is. -- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis v_errormsg := 'Opzoeken basistaak ' || v_aanduiding; v_taak_al_aangemaakt:=0; SELECT count(*) INTO v_taak_al_aangemaakt FROM ins_srtcontrole WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving; -- Als basistaak al in loop was aangemaakt nog even de key erbij zoeken IF v_taak_al_aangemaakt >0 THEN SELECT max(ins_srtcontrole_key) INTO v_ins_srtcontrole_key FROM ins_srtcontrole WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving; END IF; -- Basistaak aanmaken IF v_taak_al_aangemaakt = 0 THEN -- We gaan we eerst op zoek naar de dienst. v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding; v_dienst_key := NULL; IF rec.taakdienst IS NOT NULL THEN BEGIN SELECT prs_dienst_key INTO v_dienst_key FROM prs_dienst WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60)); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prs_dienst (prs_dienst_omschrijving) VALUES (SUBSTR(rec.taakdienst,1,60)) RETURNING prs_dienst_key INTO v_dienst_key; END; END IF; v_count_verwerk := v_count_verwerk + 1 ; v_count_n_taak := v_count_n_taak +1 ; v_errormsg := 'Aanmaken taak ' || v_aanduiding; INSERT INTO ins_srtcontrole ( ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ctr_discipline_key, ins_srtcontrole_info, ins_srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_mode, ins_srtcontrole_level, ins_srtcontrole_opmerking, prs_dienst_key) VALUES ( rec.ins_srtdeel_key, 'S', rec.taakomschrijving, rec.discipline_key, NULL, 0, rec.taakobjecteenheid, 1, COALESCE (rec.taakprioriteit, '0'), rec.taakopmerking, v_dienst_key) RETURNING ins_srtcontrole_key INTO v_ins_srtcontrole_key; fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport '); END IF; -- Nu kunnen we de objectaak aanmaken v_count_n_taakobject := v_count_n_taakobject +1 ; v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' [' || rec.deel_key || '|' || v_ins_srtcontrole_key || '|' || rec.taakobjectperiode || '|' || rec.taakobjecteenheid || '|' || fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|' || ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|' || rec.taakgroep || '|' || rec.taakobjectopmerking || '|' || rec.taakobjectstartjaar || ']'; INSERT INTO ins_srtcontroledl_xcp ( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_groep, ins_srtcontroledl_xcp_opmerk, ins_srtcontroledl_xcp_startdat) VALUES ( rec.deel_key, v_ins_srtcontrole_key, rec.taakobjectperiode, rec.taakobjecteenheid, fac.safe_to_number ( REPLACE (rec.taakobjectmateriaal, ',', '.')), ROUND(fac.safe_to_number ( REPLACE (rec.taakobjectpercentage, ',', '.'))), rec.taakgroep, rec.taakobjectopmerking, rec.taakobjectstartjaar ); EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; aaxx_imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); v_ongeldig := 1; END; v_aanduiding := 'Einde loop ' || v_aanduiding; END LOOP; FOR rec IN c_no LOOP BEGIN v_aanduiding := rec.objectomschrijving || ' / ' || rec.taakcategorie || ' - ' || rec.taakomschrijving; -- We kunnen direct objectaak aanmaken v_count_verwerk := v_count_verwerk + 1 ; v_count_n_taakobject := v_count_n_taakobject +1 ; v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' [' || rec.deel_key || '|' || rec.ins_srtcontrole_key || '|' || rec.taakobjectperiode || '|' || rec.taakobjecteenheid || '|' || fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|' || ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|' || rec.taakgroep || '|' || rec.taakobjectopmerking || '|' || rec.taakobjectstartjaar || ']'; INSERT INTO ins_srtcontroledl_xcp ( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_eenheid, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_groep, ins_srtcontroledl_xcp_opmerk, ins_srtcontroledl_xcp_startdat) VALUES ( rec.deel_key, rec.ins_srtcontrole_key, rec.taakobjectperiode, rec.taakobjecteenheid, fac.safe_to_number ( REPLACE (rec.taakobjectmateriaal, ',', '.')), ROUND(fac.safe_to_number ( REPLACE (rec.taakobjectpercentage, ',', '.'))), rec.taakgroep, rec.taakobjectopmerking, rec.taakobjectstartjaar); EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; aaxx_imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); v_ongeldig := 1; END; v_aanduiding := 'Einde loop ' || v_aanduiding; END LOOP; FOR rec IN c_m LOOP BEGIN v_count_verwerk := v_count_verwerk + 1 ; v_aanduiding := rec.objectomschrijving || ' / ' || rec.taakcategorie || ' - ' || rec.taakomschrijving; -- Basis-taak - Taakomschrijving v_errormsg := 'Fout taakomschrijving wijzigen '; v_taakomschrijving := '' ; -- huidige taakomschrijving v_taakomschrijving_nieuw := '' ; IF rec.extra_veld5 IS NOT NULL THEN -- Eerst de objectsrt-code ophalen en nieuwe taakomschrijving bepalen SELECT ins_srtdeel_code_upper INTO v_ins_srtdeel_code FROM ins_srtdeel WHERE ins_srtdeel_key = rec.ins_srtdeel_key ; v_taakomschrijving_nieuw := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || rec.extra_veld5), 1, 60) ; -- Huidige omschrijving ophalen SELECT ins_srtcontrole_omschrijving INTO v_taakomschrijving FROM ins_srtcontrole WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; IF v_taakomschrijving <> v_taakomschrijving_nieuw THEN UPDATE ins_srtcontrole SET ins_srtcontrole_omschrijving = v_taakomschrijving_nieuw WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; v_count_taak:= 1 ; fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakomschrijving: ' || v_taakomschrijving || '-->' || v_taakomschrijving_nieuw); END IF; END IF; -- Basis-taak - Taakopmerking v_errormsg := 'Fout taakopmerking wijzigen '; SELECT ins_srtcontrole_opmerking INTO v_taakopmerking FROM ins_srtcontrole WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; IF v_taakopmerking IS NULL THEN v_taakopmerking := '' ; END IF; IF v_taakopmerking <> rec.taakopmerking AND rec.taakopmerking IS NOT NULL THEN UPDATE ins_srtcontrole SET ins_srtcontrole_opmerking = rec.taakopmerking WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; v_count_taak:= 1 ; fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakopmerking: ' || v_taakopmerking || '-->' || rec.taakopmerking); END IF; -- Basis-taak - Taakprioriteit v_errormsg := 'Fout prioriteit wijzigen '; SELECT ins_srtcontrole_level INTO v_taakprioriteit FROM ins_srtcontrole WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; IF rec.taakprioriteit IS NOT NULL AND v_taakprioriteit <> fac.safe_to_number(rec.taakprioriteit) THEN UPDATE ins_srtcontrole SET ins_srtcontrole_level = fac.safe_to_number(rec.taakprioriteit) WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; v_count_taak:= 1 ; fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Prioriteit: ' || v_taakprioriteit || '-->' || rec.taakprioriteit); END IF; -- Basis-taak - Dienst v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding; v_taakdienst_key := NULL ; v_taakdienst := '' ; -- Eerst huidige dienstkey en omschrijving ophalen BEGIN SELECT max(t.prs_dienst_key), max(d.prs_dienst_omschrijving) INTO v_taakdienst_key, v_taakdienst FROM ins_srtcontrole t, prs_dienst d WHERE t.ins_srtcontrole_key = rec.ins_srtcontrole_key AND t.prs_dienst_key = d.prs_dienst_key AND t.prs_dienst_key IS NOT NULL ; IF v_taakdienst IS NULL THEN v_taakdienst := '' ; END IF; IF v_taakdienst_key IS NULL THEN v_taakdienst_key := -1 ; END IF; END; -- Dan gaan we kijken of de dienst meegegeven in csv al bestaat v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding; v_dienst_key := NULL; IF rec.taakdienst IS NOT NULL THEN BEGIN SELECT prs_dienst_key INTO v_dienst_key FROM prs_dienst WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60)); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prs_dienst (prs_dienst_omschrijving) VALUES (SUBSTR(rec.taakdienst,1,60)) RETURNING prs_dienst_key INTO v_dienst_key; END; END IF; IF v_taakdienst_key <> v_dienst_key AND rec.taakdienst IS NOT NULL THEN UPDATE ins_srtcontrole SET prs_dienst_key = v_dienst_key WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key; v_count_taak:= 1 ; fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd taakdienst: ' || v_taakdienst || '-->' || rec.taakdienst); END IF; IF v_count_taak = 1 THEN v_count_w_taak := v_count_w_taak +1 ; END IF; -- Gaan nu de object-taken aanpassen v_aanduiding_objecttaak := rec.taakcategorie || ' - ' || v_ins_srtdeel_code || rec.taakomschrijving || CHR(13) || CHR(10) ; -- Object-taak - Percentage v_errormsg := 'Fout percentage wijzigen '; SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0) INTO v_percentage FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF rec.taakobjectpercentage IS NOT NULL AND v_percentage <> rec.taakobjectpercentage THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_perc = ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Percentage: (' || v_percentage || ') --> ' || rec.taakobjectpercentage ); END IF; -- Object-taak - Opmerking v_errormsg := 'Fout opmerking objecttaak wijzigen '; SELECT ins_srtcontroledl_xcp_opmerk INTO v_objecttaakopmerking FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF v_objecttaakopmerking IS NULL THEN v_objecttaakopmerking := '' ; END IF; IF rec.taakobjectopmerking IS NOT NULL AND v_objecttaakopmerking <> rec.taakobjectopmerking THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_opmerk = rec.taakobjectopmerking WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakopmerking: (' || v_objecttaakopmerking || ') --> ' || rec.taakobjectopmerking ); END IF; -- Object-taak - Eenheid v_errormsg := 'Fout eenheid wijzigen '; SELECT COALESCE(ins_srtcontroledl_xcp_eenheid,0) INTO v_eenheid FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF rec.taakobjecteenheid IS NOT NULL AND fac.safe_to_number(rec.taakobjecteenheid) <> v_eenheid AND rec.ismjob = 0 THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_eenheid = fac.safe_to_number(rec.taakobjecteenheid) WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eenheid: (' || v_eenheid || ') --> ' || rec.taakobjecteenheid ); END IF; -- Object-taak - Periode v_errormsg := 'Fout periode wijzigen '; SELECT COALESCE(ins_srtcontroledl_xcp_periode,0) INTO v_periode FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF rec.taakobjectperiode IS NOT NULL AND fac.safe_to_number(rec.taakobjectperiode) <> v_periode THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_periode = fac.safe_to_number(rec.taakobjectperiode) WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Periode: (' || v_periode || ') --> ' || rec.taakobjectperiode ); END IF; -- Object-taak - Taakgroep v_errormsg := 'Fout taakgroep wijzigen '; SELECT ins_srtcontroledl_xcp_groep INTO v_taakgroep FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF v_taakgroep IS NULL THEN v_taakgroep := '' ; END IF; IF v_taakgroep <> rec.taakgroep AND rec.taakgroep IS NOT NULL THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_groep = rec.taakgroep WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakgroep: (' || v_taakgroep || ') --> ' || rec.taakgroep ); END IF; -- Object-taak - Startjaar v_errormsg := 'Fout startjaar wijzigen '; SELECT ins_srtcontroledl_xcp_startdat INTO v_startjaar FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF rec.taakobjectstartjaar IS NOT NULL AND COALESCE(v_startjaar, TO_DATE('01-01-1900','dd-MM-yyyy')) <> rec.taakobjectstartjaar AND (rec.extra_veld4 = 0 OR (rec.extra_veld4 > 0 AND v_startjaar IS NULL)) -- extra_veld4 is wel/geen geschiedenis op taak. Als er geschiedenis op zit taak startdatum niet aan te passen. -- Uitzondering als in xcp startdaum op NULL is gekomen (zie bug/ticket 64450) THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_startdat = rec.taakobjectstartjaar WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Startjaar: (' || v_startjaar || ') --> ' || rec.taakobjectstartjaar ); END IF; -- Object-taak - Eindjaar v_errormsg := 'Fout eindjaar wijzigen '; SELECT ins_srtcontroledl_xcp_eind INTO v_eindjaar FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; -- IF v_eindjaar IS NULL THEN v_eindjaar := TO_DATE(01-01-1900, 'DD-MM-YYYY'); END IF; IF (v_eindjaar IS NULL and rec.taakobjecteindjaar IS NOT NULL) OR (v_eindjaar IS NOT NULL AND rec.taakobjecteindjaar IS NOT NULL AND v_eindjaar <> rec.taakobjecteindjaar) THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_eind = rec.taakobjecteindjaar WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eindjaar: (' || v_eindjaar || ') --> ' || rec.taakobjecteindjaar ); END IF; -- Object-taak - Kosten v_errormsg := 'Fout kosten wijzigen '; SELECT COALESCE(max(ins_srtcontroledl_xcp_materia),0) INTO v_materiaalkosten FROM ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; IF v_materiaalkosten <> fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) AND rec.taakobjectmateriaal IS NOT NULL THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_materia = fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ; v_count_taakobject:= 1 ; fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Kosten: (' || v_materiaalkosten || ') --> ' || rec.taakobjectmateriaal ); END IF; IF v_count_taakobject = 1 THEN v_count_w_taakobject := v_count_w_taakobject + 1 ; END IF; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; aaxx_imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); v_ongeldig := 1; END; v_aanduiding := 'Einde loop ' || v_aanduiding; END LOOP; IF v_ongeldig = 0 THEN COMMIT; fac.imp_writelog ( p_import_key, 'S', 'IMPORT TAKEN: aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk) || CHR(13) || CHR(10) || 'Aantal nieuwe taken ingelezen: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10) || 'Aantal nieuwe objecttaken ingelezen: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10) || 'Aantal bestaande basistaken gewijzigd: ' || TO_CHAR (v_count_w_taak) || CHR(13) || CHR(10) || 'Aantal bestaande objecttaken gewijzigd: ' || TO_CHAR (v_count_w_taakobject), ''); ELSE ROLLBACK; END IF; END; / ------------------------------------------- -- Import contracttermijnen / Factuurschema ------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_factuurschema (p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (4000); -- Input line v_errormsg VARCHAR (1000); v_hint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_ongeldig NUMBER (1); v_aanduiding VARCHAR2 (200); v_header_is_valid NUMBER (1); v_dummy VARCHAR2 (1000); -- De importvelden: v_bedrijf_naam prs_bedrijf.prs_bedrijf_naam%TYPE; v_contract_nr VARCHAR2 (100); v_contract_key cnt_contract.cnt_contract_key%TYPE; v_contract_nummer cnt_contract.cnt_contract_nummer%TYPE; v_contract_versie cnt_contract.cnt_contract_versie%TYPE; v_boekmaand cnt_factuurschema.cnt_factuurschema_boekmaand%TYPE; v_bedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE; v_opmerking cnt_factuurschema.cnt_factuurschema_opmerking%TYPE; CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM aaxx_imp_factuurschema; COMMIT; v_header_is_valid := 0; v_ongeldig := 0; FOR rec IN c LOOP BEGIN v_bedrijf_naam := NULL; v_contract_nr := NULL; v_contract_key := NULL; v_contract_nummer := NULL; v_contract_versie := NULL; v_boekmaand := NULL; v_bedrag := NULL; v_opmerking := NULL; v_errormsg := 'Fout FETCH te importeren rij'; v_newline := rec.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200); v_aanduiding := ''; IF (UPPER (v_newline) LIKE 'BEDRIJF;CONTRACTNR;VERSIE;BOEKMAAND;BEDRAG;OPMERKING%') THEN v_header_is_valid := 1; ELSE -- Lees alle veldwaarden v_errormsg := 'Fout opvragen te importeren rij (bedrijf)'; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); v_bedrijf_naam := SUBSTR (v_dummy, 1, 60); v_errormsg := 'Fout opvragen te importeren rij (contract_nr) ' || v_bedrijf_naam; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); v_contract_nummer := fac.safe_to_number (v_dummy); v_errormsg := 'Fout opvragen te importeren rij (contract_versie) ' || v_bedrijf_naam; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); v_contract_versie := fac.safe_to_number (v_dummy); -- BEGIN SELECT cnt_contract_key INTO v_contract_key FROM cnt_v_aanwezigcontract WHERE TRIM (cnt_contract_nummer_intern) = TRIM (v_contract_nummer) AND COALESCE(cnt_contract_versie,'0') = v_contract_versie; v_contract_nr := v_contract_nummer || '.' || v_contract_versie; EXCEPTION WHEN NO_DATA_FOUND THEN aaxx_imp_writelog ( p_import_key, 'E', 'Contract kan niet gevonden worden', v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie); v_ongeldig := 1; END; v_errormsg := 'Fout opvragen te importeren rij (boekmaand) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); IF fac.safe_to_number (SUBSTR (v_dummy, 1, 4)) IS NOT NULL AND SUBSTR (v_dummy, 5, 1) = '-' AND fac.safe_to_number (SUBSTR (v_dummy, 6, 2)) IS NOT NULL THEN v_boekmaand := SUBSTR (v_dummy, 1, 7); ELSE aaxx_imp_writelog ( p_import_key, 'E', 'Ongeldige boekmaand', v_bedrijf_naam|| ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_dummy); v_ongeldig := 1; END IF; v_errormsg := 'Fout opvragen te importeren rij (bedrag)' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); v_dummy := REPLACE(v_dummy, ',', '.'); IF fac.safe_to_number (v_dummy) IS NOT NULL THEN v_bedrag := fac.safe_to_number (v_dummy); ELSE aaxx_imp_writelog ( p_import_key, 'E', 'Ongeldige bedrag', v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_boekmaand); v_ongeldig := 1; END IF; -- v_errormsg := 'Fout opvragen te importeren rij (opmerking) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie; fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); v_opmerking := SUBSTR (v_dummy, 1, 320); v_errormsg := 'Fout bij toevoegen regel aan tabel ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_boekmaand; INSERT INTO aaxx_imp_factuurschema (cnt_contract_key, cnt_factuurschema_bedrag, cnt_factuurschema_boekmaand, cnt_factuurschema_opmerking, cnt_contract_nr, prs_bedrijf_naam) VALUES (v_contract_key, v_bedrag, v_boekmaand, v_opmerking, v_contract_nr, v_bedrijf_naam); END IF; END; END LOOP; IF v_header_is_valid = 0 THEN aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... '); v_ongeldig := 1; END IF; IF v_ongeldig = 0 THEN COMMIT; ELSE ROLLBACK; END IF; EXCEPTION WHEN OTHERS THEN ROLLBACK; oracle_err_num := SQLCODE; v_hint := v_errormsg; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint); END aaxx_import_factuurschema; / CREATE OR REPLACE PROCEDURE aaxx_update_factuurschema ( p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM aaxx_imp_factuurschema; v_errormsg VARCHAR2(1000); v_error_hint VARCHAR2(1000); oracle_err_mes VARCHAR2(150); oracle_err_num VARCHAR2(150); v_aanduiding VARCHAR2(200); v_ongeldig NUMBER(1); v_van DATE; v_tot DATE; v_bm_start DATE; v_bm_eind DATE; v_som NUMBER(11,2); v_contract_bedrag NUMBER(11,2); v_factuurschema_key NUMBER(10); v_disc_params_factuurschema NUMBER(1); BEGIN v_ongeldig := 0; FOR rec IN c LOOP BEGIN v_aanduiding := rec.prs_bedrijf_naam || ' / ' || rec.cnt_contract_nr || ' - ' || rec.cnt_factuurschema_boekmaand; v_errormsg := 'Bepaling contract termijn ' || v_aanduiding; SELECT cnt_disc_params_factuurschema dp, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_contract_kosten INTO v_disc_params_factuurschema, v_van, v_tot, v_contract_bedrag FROM cnt_disc_params dp, cnt_contract c WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key AND c.cnt_contract_key = rec.cnt_contract_key; v_errormsg := 'Controleer of de boekmaand in de contracttermijn valt ' || v_aanduiding; v_bm_start := TO_DATE(rec.cnt_factuurschema_boekmaand || '-01', 'yyyy-mm-dd'); v_bm_eind := ADD_MONTHS(v_bm_start, 1)-1; IF NOT(v_van BETWEEN v_bm_start AND v_bm_eind OR v_tot BETWEEN v_bm_start AND v_bm_eind OR v_bm_start BETWEEN v_van AND v_tot) THEN -- ongeldige boekmaand aaxx_imp_writelog (p_import_key, 'E', 'Boekmaand ligt niet binnen de contracttermijn ', v_aanduiding); v_ongeldig := 1; END IF; v_errormsg := 'Controleer of het contract wel geconfigueerd is voor factuurschemas ' || v_aanduiding; IF COALESCE(v_disc_params_factuurschema,0) <> 1 THEN -- contracttype ondersteund geen factuurschema aaxx_imp_writelog (p_import_key, 'E', 'Contracttype ondersteund geen factuurschema ', v_aanduiding); v_ongeldig := 1; END IF; v_errormsg := 'Controleer of het totaal van het schema past bij het contract ' || v_aanduiding; SELECT SUM(cnt_factuurschema_bedrag) INTO v_som FROM aaxx_imp_factuurschema WHERE cnt_contract_key = rec.cnt_contract_key; IF ROUND(v_som) <> ROUND(v_contract_bedrag) THEN -- Totaalbedrag schema wijkt af van contract bedrag aaxx_imp_writelog (p_import_key, 'E', 'Totaalbedrag schema wijkt af van contract bedrag ', v_aanduiding || ' [' || v_contract_bedrag || ' vs ' || v_som || ']'); v_ongeldig := 1; END IF; v_errormsg := 'Controleer of de boekmaand al bestaat bij dit contract ' || v_aanduiding; BEGIN SELECT cnt_factuurschema_key INTO v_factuurschema_key FROM cnt_factuurschema WHERE cnt_factuurschema_boekmaand = rec.cnt_factuurschema_boekmaand AND cnt_contract_key = rec.cnt_contract_key; UPDATE cnt_factuurschema SET cnt_factuurschema_bedrag = rec.cnt_factuurschema_bedrag, cnt_factuurschema_opmerking = cnt_factuurschema_opmerking WHERE cnt_factuurschema_key = v_factuurschema_key; EXCEPTION WHEN NO_DATA_FOUND THEN -- Boekmaand bestaat nog niet in het schema v_errormsg := 'Aanmaken van nieuw factuurschemaregel ' || v_aanduiding; INSERT INTO cnt_factuurschema (cnt_contract_key, cnt_factuurschema_bedrag, cnt_factuurschema_boekmaand, cnt_factuurschema_opmerking) VALUES (rec.cnt_contract_key, rec.cnt_factuurschema_bedrag, rec.cnt_factuurschema_boekmaand, rec.cnt_factuurschema_opmerking); END; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); v_ongeldig := 1; END; END LOOP; IF v_ongeldig = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END; / -------------------------------- -- import ruimtegegevens -------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_ruimte ( p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (4000); -- Input line v_read VARCHAR2 (4000); v_lastchar VARCHAR2 (1); v_firstchar VARCHAR2 (1); v_errormsg VARCHAR (1000); v_hint VARCHAR (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; v_ongeldig NUMBER (1); v_mode NUMBER (1); v_aanduiding VARCHAR (200); v_header_is_valid NUMBER (1); -- De importvelden: v_locatie_code VARCHAR2(100); v_gebouw_code VARCHAR2(100); v_verdieping_code VARCHAR2(100); v_ruimte_key VARCHAR2(100); v_ruimte_nr VARCHAR2(100); v_ruimte_omschrijving VARCHAR2(100); v_srtruimte_omschrijving VARCHAR2(100); v_dienstniveau_omschr VARCHAR2(100); v_ruimte_bruto_vloeropp VARCHAR2(100); v_dummy VARCHAR2(100); CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; rec c%ROWTYPE; BEGIN -- Eerst opruiming DELETE FROM aaxx_imp_ruimte; COMMIT; v_header_is_valid := 0; OPEN c; IF (c%ISOPEN) THEN LOOP BEGIN v_errormsg := 'Fout FETCH te importeren rij'; FETCH c INTO rec; EXIT WHEN c%NOTFOUND; v_read := rec.fac_imp_file_line; v_newline := v_read; v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1); v_firstchar := SUBSTR (v_read, 1, 1); -- voeg regels samen die een cr/lf bevatten. IF v_firstchar = '"' THEN WHILE v_lastchar <> '"' LOOP BEGIN FETCH c INTO rec; EXIT WHEN c%NOTFOUND; v_read := rec.fac_imp_file_line; v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1); v_newline := v_newline || CHR (13) || CHR (10) || v_read; END; END LOOP; END IF; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; v_ongeldig := 0; IF (v_newline like 'LOCATIE;GEBOUW;VERDIEPING;ALG_RUIMTE_KEY;ALG_RUIMTE_NR;ALG_RUIMTE_OMSCHRIJVING;ALG_SRTRUIMTE_OMSCHRIJVING;MLD_DIENSTNIVEAU_OMSCHR;ALG_RUIMTE_BRUTO_VLOEROPP%') THEN v_header_is_valid := 1; ELSE -- Lees alle veldwaarden v_errormsg := 'Fout opvragen te importeren rij (alg_locatie_code) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_locatie_code); -- v_errormsg := 'Fout opvragen te importeren rij (alg_gebouw_code) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code); -- v_errormsg := 'Fout opvragen te importeren rij (alg_verdieping_code) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_verdieping_code); -- v_errormsg := 'Fout opvragen te importeren rij (alg_ruimte_key) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_key); -- v_errormsg := 'Fout opvragen te importeren rij (alg_ruimte_nr) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_nr); -- v_errormsg := 'Fout opvragen te importeren rij (alg_ruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_omschrijving); -- v_errormsg := 'Fout opvragen te importeren rij (alg_srtruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_srtruimte_omschrijving); -- v_errormsg := 'Fout opvragen te importeren rij (mld_dienstniveau_omschr) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienstniveau_omschr); -- v_errormsg := 'Fout opvragen te importeren rij (alg_ruimte_bruto_vloeropp) Regel [' || rec.fac_imp_file_index || ']'; fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_bruto_vloeropp); -- -- Insert geformatteerde import record IF v_ruimte_key IS NOT NULL THEN v_errormsg := 'Fout bij toevoegen te importeren gebouw [' || v_gebouw_code || ']'; INSERT INTO aaxx_imp_ruimte(volgorde, alg_locatie_code, alg_gebouw_code, alg_verdieping_code, alg_ruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving, alg_srtruimte_omschrijving, mld_dienstniveau_omschr, alg_ruimte_bruto_vloeropp) VALUES (rec.fac_imp_file_index, SUBSTR(v_locatie_code, 1, 10), SUBSTR(v_gebouw_code, 1, 12), SUBSTR(v_verdieping_code, 1, 10), v_ruimte_key, SUBSTR(v_ruimte_nr, 1,10), SUBSTR(v_ruimte_omschrijving, 1, 30), SUBSTR(v_srtruimte_omschrijving, 1, 30), SUBSTR(v_dienstniveau_omschr, 1, 60), replace(v_ruimte_bruto_vloeropp, ',','.')); END IF; END IF; END; END LOOP; END IF; IF v_header_is_valid = 0 THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... '); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; v_hint := v_errormsg; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint); END aaxx_import_ruimte; / CREATE OR REPLACE PROCEDURE aaxx_update_ruimte (p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM aaxx_imp_ruimte ORDER BY volgorde; v_aanduiding VARCHAR2 (200); v_errormsg VARCHAR (1000); v_error NUMBER (1); v_error_hint VARCHAR (1000); oracle_err_mes VARCHAR2 (150); oracle_err_num VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; v_srtruimte_key NUMBER; v_dienstniveau_key NUMBER; BEGIN v_error := 0; SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog ( p_import_key, 'I', 'AAFM Ruimte update version ' || currentversion, '$Revision$'); FOR rec IN c LOOP BEGIN v_aanduiding := 'regel[' || rec.volgorde || '] plaats: ' || rec.alg_locatie_code || '-' || rec.alg_gebouw_code || '-' || rec.alg_verdieping_code || '-' || rec.alg_ruimte_nr; v_error_hint := 'Controle op ruimtesoort'; v_srtruimte_key := NULL; IF rec.alg_srtruimte_omschrijving IS NOT NULL THEN SELECT alg_srtruimte_key INTO v_srtruimte_key FROM alg_srtruimte WHERE alg_srtruimte_verwijder IS NULL AND alg_srtruimte_upper = UPPER (rec.alg_srtruimte_omschrijving); END IF; v_error_hint := 'Controle op dienstniveau'; v_dienstniveau_key := NULL; IF rec.mld_dienstniveau_omschr IS NOT NULL THEN SELECT mld_dienstniveau_key INTO v_dienstniveau_key FROM mld_dienstniveau WHERE UPPER (TRIM (mld_dienstniveau_omschr)) = UPPER (TRIM (rec.mld_dienstniveau_omschr)); END IF; v_error_hint := 'Aanpassen ruimtegegevens.'; UPDATE alg_ruimte SET alg_ruimte_nr = rec.alg_ruimte_nr, alg_ruimte_omschrijving = rec.alg_ruimte_omschrijving, alg_srtruimte_key = v_srtruimte_key, mld_dienstniveau_key = v_dienstniveau_key, alg_ruimte_bruto_vloeropp = rec.alg_ruimte_bruto_vloeropp WHERE alg_ruimte_key = rec.alg_ruimte_key; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan één resultaat op.'; END IF; IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF; v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; aaxx_imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint || ' - ' || v_aanduiding); v_error := 1; END; END LOOP; IF v_error = 0 THEN COMMIT; ELSE ROLLBACK; END IF; EXCEPTION WHEN OTHERS THEN ROLLBACK; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint || ' - ' || v_aanduiding); COMMIT; END; / ------------------------------------------------------------------------------- -- IMPORTFUNCTIE - Import uplift ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_rap_uplift ( jaar, maand, kostensoort, soort_order, leverancier, nummer, uplift ) AS SELECT jaar, maand, prs_kostensoort_oms, soort_order, prs_bedrijf_naam, prs_leverancier_nr, uplift FROM aaxx_imp_uplift; CREATE OR REPLACE PROCEDURE aaxx_import_uplift ( 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); v_aanduiding 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_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_skipfield VARCHAR2 (100); -- De importvelden v_jaar VARCHAR2 (100); v_maand VARCHAR2 (100); v_prs_kostensoort_oms VARCHAR2 (100); v_soort_order VARCHAR2 (100); v_prs_bedrijf_naam VARCHAR2 (100); v_prs_leverancier_nr VARCHAR2 (100); v_uplift VARCHAR2 (100); header_found BOOLEAN; BEGIN -- Eerst opruiming -- Init header_found := FALSE; v_fielddelimitor := ';'; FOR rec1 IN c_cursor LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_aanduiding := v_newline; 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; fac.imp_getfield (v_newline, v_fielddelimitor, v_jaar); fac.imp_getfield (v_newline, v_fielddelimitor, v_maand); fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_kostensoort_oms); fac.imp_getfield (v_newline, v_fielddelimitor, v_soort_order); fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_bedrijf_naam); fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_leverancier_nr); fac.imp_getfield (v_newline, v_fielddelimitor, v_uplift); -- Skip until a valid header is found IF UPPER(v_jaar) = 'JAAR' AND UPPER(v_maand) = 'MAAND' AND UPPER(v_prs_kostensoort_oms) = 'KOSTENSOORT' AND UPPER(v_prs_leverancier_nr) = 'NUMMER' AND UPPER(v_uplift) = 'UPLIFT' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found AND v_jaar IS NOT NULL) THEN -- voeg nieuwe records toe -- en wijzig bestaande records -- ken ik de combinatie van jaar,maand, kostensoort, en leveranciernummer al? SELECT count(*) INTO v_count FROM aaxx_imp_uplift WHERE jaar = v_jaar AND maand = v_maand AND prs_kostensoort_oms = v_prs_kostensoort_oms AND soort_order = v_soort_order AND prs_leverancier_nr = v_prs_leverancier_nr; IF v_count > 0 THEN -- update de bestaande record(s) UPDATE aaxx_imp_uplift SET uplift = fac.safe_to_number (REPLACE(v_uplift,',','.')) WHERE jaar = v_jaar AND maand = v_maand AND soort_order = v_soort_order AND prs_kostensoort_oms = v_prs_kostensoort_oms AND prs_leverancier_nr = v_prs_leverancier_nr; ELSE -- voeg nieuwe records toe INSERT INTO aaxx_imp_uplift (jaar, maand, prs_kostensoort_oms, soort_order, prs_bedrijf_naam, prs_leverancier_nr, uplift) VALUES (fac.safe_to_number (v_jaar), fac.safe_to_number (v_maand), v_prs_kostensoort_oms, v_soort_order, v_prs_bedrijf_naam, v_prs_leverancier_nr, fac.safe_to_number (REPLACE(v_uplift,',','.'))); END IF; SELECT count(*) INTO v_count FROM prs_bedrijf WHERE prs_leverancier_nr = v_prs_leverancier_nr; IF v_count = 0 THEN fac.imp_writelog (p_import_key, 'W', 'Geen leverancier met nummer ['||v_prs_leverancier_nr||'] gevonden', '' ); END IF; SELECT count(*) INTO v_count FROM prs_kostensoort WHERE prs_kostensoort_upper = upper(v_prs_kostensoort_oms); IF v_count = 0 THEN fac.imp_writelog (p_import_key, 'W', 'Geen kostensoort met code ['||v_prs_kostensoort_oms ||'] gevonden', '' ); END IF; END IF; COMMIT; END; END LOOP; IF NOT header_found THEN fac.imp_writelog (p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig ruimtesoort importbestand.' ); END IF; 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.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding); -- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden. END; / CREATE OR REPLACE PROCEDURE aaxx_update_uplift (p_import_key IN NUMBER) AS BEGIN NULL; END; / ------------------------------------------------------------------------------- -- Importfunctie om elementen op te voeren voor assetmanagement -- -- ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_asset (p_import_key IN NUMBER) AS CURSOR c_disc IS SELECT DISTINCT i.ins_discipline_omschrijving FROM fac_imp_ins i WHERE NOT EXISTS ( SELECT ins_discipline_key FROM ins_discipline d WHERE UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving)); CURSOR c_srtgroep IS SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving FROM fac_imp_ins i WHERE NOT EXISTS ( SELECT d.ins_discipline_key FROM ins_discipline d, ins_srtgroep sg WHERE sg.ins_discipline_key = d.ins_discipline_key AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving) AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving)); CURSOR c_srtdeel IS SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving, i.ins_srtdeel_omschrijving, i.ins_srtdeel_code FROM fac_imp_ins i WHERE NOT EXISTS ( SELECT d.ins_discipline_key FROM ins_discipline d, ins_srtgroep sg, ins_srtdeel sd WHERE sg.ins_discipline_key = d.ins_discipline_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND UPPER(sd.ins_srtdeel_omschrijving||'-'||sd.ins_srtdeel_code) = UPPER(i.ins_srtdeel_omschrijving || '-' || i.ins_srtdeel_code) AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving) AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving)); BEGIN fac_import_ins(p_import_key); -- controleer of de discipline, groep en objectsoort wel bestaan. FOR rec IN c_disc LOOP fac.imp_writelog (p_import_key, 'E', 'Discipline bestaat nog niet', rec.ins_discipline_omschrijving); END LOOP; FOR rec IN c_srtgroep LOOP fac.imp_writelog (p_import_key, 'E', 'Groep bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving); END LOOP; FOR rec IN c_srtdeel LOOP fac.imp_writelog (p_import_key, 'E', 'Objectsoort bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving || ' / ' || rec.ins_srtdeel_code || ' ' || rec.ins_srtdeel_omschrijving); END LOOP; END; / CREATE OR REPLACE PROCEDURE aaxx_update_asset (p_import_key IN NUMBER) AS v_count NUMBER; BEGIN SELECT count(*) INTO v_count FROM imp_log WHERE fac_import_key = p_import_key AND imp_log_status = 'E'; IF v_count = 0 THEN fac_update_ins(p_import_key); ELSE fac.imp_writelog (p_import_key, 'E', 'Verwerk actie niet uitgevoerd ivm fouten in bestand', ''); END IF; END; / -- Overzicht met geplande en uitgevoerde inspecties. CREATE OR REPLACE VIEW aaxx_v_rap_asset_insp ( ins_deel_key, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_deel_omschrijving, alg_locatie_plaats, alg_locatie_omschrijving, alg_gebouw_omschrijving, alg_plaatsaanduiding, ins_srtcontrole_omschrijving, volgende_controle, laatste_controle, gepland_controle ) AS SELECT idg.ins_deel_key, idg.ins_discipline_omschrijving, idg.ins_srtgroep_omschrijving, idg.ins_srtdeel_upper, idg.ins_deel_omschrijving, l.alg_locatie_plaats, l.alg_locatie_omschrijving, idg.alg_gebouw_omschrijving, idg.alg_plaatsaanduiding, idg.ins_srtcontrole_omschrijving, idg.nextdate, DECODE (TRUNC (idg.ins_deel_aanmaak), TRUNC (dc.ins_deelsrtcontrole_datum), TO_DATE (NULL), dc.ins_deelsrtcontrole_datum) uitgevoerd_op, dc.ins_deelsrtcontrole_plandatum gepland_op FROM (SELECT i.*, sc.*, fac.nextcyclusdatedeel (i.ins_deel_key, sc.ins_srtcontrole_key, 1) nextdate, (SELECT dsc.ins_deelsrtcontrole_key FROM ins_deelsrtcontrole dsc WHERE dsc.ins_deel_key = i.ins_deel_key AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND NOT EXISTS (SELECT dsc1.ins_deelsrtcontrole_key FROM ins_deelsrtcontrole dsc1 WHERE dsc.ins_deel_key = dsc1.ins_deel_key AND dsc.ins_srtcontrole_key = dsc1.ins_srtcontrole_key AND dsc1.ins_deelsrtcontrole_key > dsc.ins_deelsrtcontrole_key)) ins_deelsrtcontrole_key1 FROM ins_v_deel_gegevens i, ins_srtcontrole sc, ins_srtcontroledl_xcp xcp WHERE i.ins_discipline_key = sc.ins_srtinstallatie_key AND i.ins_deel_key = xcp.ins_deel_key AND sc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) idg, ins_deelsrtcontrole dc, alg_locatie l WHERE idg.ins_deelsrtcontrole_key1 = dc.ins_deelsrtcontrole_key(+) AND idg.alg_locatie_key = l.alg_locatie_key ORDER BY fac.safe_to_number (ins_deel_omschrijving); ------------------------------------------------------------------------------- -- Importfunctie om contactpersonen bij bedrijven toe te voegen aan FACILITOR -- -- ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_contactpersoon (p_import_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); v_count NUMBER; BEGIN v_errorhint := 'Generieke update'; -- de sequence array staat beschreven in FAC_PACF.SRC bij de fac_import_perslid_upd_body proc prs.import_perslid (p_import_key, '0;0;0;0;0;0;1;2;3;5;' || '4;0;0;0;0;7;8;9;0;11;' || '10;12;13;6;0;0;14;15;0;0;'|| '0;0;0;0;0;0;0;0;0;0;'|| '0;0;0;0;0;0', 'Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Bedrijf;Autorisatieprofiel%' ); -- Klantspecifieke aanpassingen v_errorhint := 'Controle op Bedrijf'; FOR rec IN (SELECT distinct prs_kenmerk1 FROM fac_imp_perslid) LOOP IF rec.prs_kenmerk1 IS NOT NULL THEN SELECT count(*) INTO v_count FROM prs_bedrijf WHERE prs_bedrijf_verwijder IS NULL AND UPPER(prs_bedrijf_naam) = upper(rec.prs_kenmerk1); IF v_count <> 1 THEN fac.imp_writelog (p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' komt ' || v_count || ' keer voor in de lijst met bedrijven.', v_errorhint); END IF; END IF; END LOOP; v_errorhint := 'Controle op Autorisatieprofiel'; FOR rec IN (SELECT prs_kenmerk2 FROM fac_imp_perslid) LOOP IF rec.prs_kenmerk2 IS NOT NULL THEN SELECT count(*) INTO v_count FROM fac_groep WHERE upper(fac_groep_omschrijving) = upper(rec.prs_kenmerk2); IF v_count <> 1 THEN fac.imp_writelog (p_import_key, 'E', 'Autorisatieprofiel: ' || rec.prs_kenmerk2 || ' komt ' || v_count || ' keer voor in de lijst met autorisatieprofielen.', v_errorhint); END IF; END IF; END LOOP; 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 aaxx_import_contactpersoon; / CREATE OR REPLACE PROCEDURE aaxx_update_contactpersoon ( p_import_key IN NUMBER) IS CURSOR c IS SELECT * FROM fac_imp_perslid; v_count NUMBER; v_perslid_key NUMBER; v_bedrijf_key NUMBER; v_groep_key NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (400); v_errorhint VARCHAR2 (400); BEGIN -- generic update prs.update_perslid (p_import_key, 'NR', 'A'); FOR rec IN c LOOP BEGIN v_errorhint := 'Zoek aangemaakt persoon.'; SELECT MAX (prs_perslid_key) INTO v_perslid_key FROM prs_perslid p WHERE rec.prs_perslid_naam = p.prs_perslid_naam AND COALESCE (rec.prs_perslid_voornaam, 'Voornaam') = COALESCE (p.prs_perslid_voornaam, 'Voornaam') AND COALESCE (rec.prs_perslid_tussenvoegsel, 'Tussenvoegsel') = COALESCE (p.prs_perslid_tussenvoegsel, 'Tussenvoegsel') AND COALESCE (rec.prs_perslid_voorletters, 'Voorletters') = COALESCE (p.prs_perslid_voorletters, 'Voorletters') AND p.prs_perslid_aanmaak > SYSDATE - 1 AND p.prs_perslid_verwijder IS NULL; IF v_perslid_key IS NULL THEN fac.imp_writelog ( p_import_key, 'E', 'Persoon: ' || rec.prs_perslid_naam || '-' || rec.prs_perslid_voornaam || '-' || rec.prs_perslid_voorletters || ' kan niet gevonden worden.', v_errorhint); ELSE v_errorhint := 'Zoek bedrijf.'; SELECT MAX (prs_bedrijf_key) INTO v_bedrijf_key FROM prs_bedrijf WHERE prs_bedrijf_verwijder IS NULL AND UPPER (prs_bedrijf_naam) = UPPER (rec.prs_kenmerk1); IF v_bedrijf_key IS NULL THEN fac.imp_writelog ( p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' kan niet gevonden worden.', v_errorhint); ELSE INSERT INTO prs_contactpersoon (prs_contactpersoon_naam, prs_contactpersoon_tussenv, prs_contactpersoon_voorletters, prs_contactpersoon_voornaam, prs_contactpersoon_titel, prs_contactpersoon_telefoon_1, prs_contactpersoon_telefoon_2, prs_contactpersoon_email, prs_perslid_key, prs_bedrijf_key) VALUES (rec.prs_perslid_naam, rec.prs_perslid_tussenvoegsel, rec.prs_perslid_voorletters, rec.prs_perslid_voornaam, rec.prs_perslid_titel, rec.prs_perslid_telefoonnr, rec.prs_perslid_mobiel, rec.prs_perslid_email, v_perslid_key, v_bedrijf_key); v_errorhint := 'Zoek autorisatiegroep.'; SELECT MAX (fac_groep_key) INTO v_groep_key FROM fac_groep WHERE UPPER (rec.prs_kenmerk2) = UPPER (fac_groep_omschrijving); IF v_groep_key IS NULL THEN fac.imp_writelog ( p_import_key, 'E', 'Autorisatiegroep: ' || rec.prs_kenmerk2 || ' kan niet gevonden worden.', v_errorhint); ELSE INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) VALUES (v_perslid_key, v_groep_key); END IF; END IF; END IF; END; END LOOP; 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 aaxx_update_contactpersoon; / ------------------------------------------------------------------------------- -- Importfunctie om personen die gedefinieerd zijn in de AAIT database ook in -- de klantdatabase toe te voegen. -- kenmerk_key 4 = prs_perslid_key in AAIT database -- kenmerk_key 3 = personeelsnummer in AAIT -- kenmerk_key 2 = kostenplaats in AD ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_aafm_medewerkers ( p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE aaxx_update_aafm_medewerkers ( p_import_key IN NUMBER) AS CURSOR c IS SELECT afdelingscode, persoonachternaam, tussenvoegsel, voorletters, voornaam, titel, telefoonnummer, mobiel, email, functie, loginnaam, personeelsnummer, dienstverband, uurloon, uurloon_intern, kostenplaats, prs_perslid_apikey, i.prs_perslid_key prs_perslid_key_aait, p.prs_perslid_key, p.prs_perslid_nr, (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND g.fac_groep_externid = 'BO_SERVICEDESK' AND gg.prs_perslid_key = i.prs_perslid_key GROUP BY gg.prs_perslid_key) prs_perslid_key_sd -- deze medewerker is lid van heyday servicedesk en zal bij distributie automatisch ook in de klant-autorisatiegroep 'BO_SERVICEDESK' gezet worden (zie ticket AAIT#89829) FROM aait.aait_imp_perslid i, (SELECT prs_perslid_key, prs_perslid_nr, prs_kenmerklink_waarde aait_prs_perslid_key FROM prs_perslid p, prs_kenmerklink kl WHERE p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerk_key = 4 AND p.prs_perslid_verwijder IS NULL AND kl.prs_kenmerklink_verwijder IS NULL) p WHERE i.prs_perslid_key = p.aait_prs_perslid_key(+) AND i.prs_perslid_key IS NOT NULL AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen AND i.personeelsnummer <> 'N/A'; CURSOR c_del IS SELECT prs_perslid_key, prs_perslid_naam, prs_perslid_voornaam, prs_perslid_login, prs_afdeling_omschrijving, klo.prs_kenmerklink_waarde nr FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a WHERE p.prs_perslid_key = klo.prs_link_key AND p.prs_afdeling_key = a.prs_afdeling_key AND prs_kenmerk_key = 3 -- personeelsnummer AAFM AND prs_perslid_verwijder IS NULL AND NOT EXISTS (SELECT prs_kenmerklink_key FROM prs_kenmerklink kl, aait.aait_imp_perslid i WHERE kl.prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4 -- prs_perslid_key in AAIT AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen AND fac.safe_to_number(kl.prs_kenmerklink_waarde) = i.prs_perslid_key); v_count NUMBER; v_prs_bedrijf_key NUMBER; v_prs_bedrijf_naam VARCHAR2 (100); v_prs_afdeling_key NUMBER; v_prs_srtperslid_key NUMBER; v_prs_perslid_key NUMBER; v_fac_groep_key NUMBER; v_fac_default_key NUMBER; v_errormsg VARCHAR2 (1000); v_error_hint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (2000); BEGIN v_errormsg := 'Controle of importbestand goed gevuld is.'; SELECT COUNT(*) INTO v_count FROM aait.aait_imp_perslid WHERE prs_perslid_key IS NOT NULL; IF v_count < 200 THEN fac.imp_writelog (p_import_key, 'E', 'Import bestand bevat te weinig (' || v_count || ') records.', ''); RETURN; END IF; v_prs_bedrijf_naam := 'HEYDAY Facility Management'; v_errormsg := 'Check of autorisatiegroep al bestaat'; BEGIN SELECT fac_groep_key INTO v_fac_groep_key FROM fac_groep WHERE UPPER (fac_groep_omschrijving) = 'HEYDAY MEDEWERKER'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO fac_groep (fac_groep_omschrijving) VALUES ('HEYDAY Medewerker') RETURNING fac_groep_key INTO v_fac_groep_key; END; v_errormsg := 'Zoek de default groep'; BEGIN SELECT fac_groep_key INTO v_fac_default_key FROM fac_groep WHERE UPPER (fac_groep_omschrijving) = '_DEFAULT'; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'E', 'Defaultgroep kan niet gevonden worden.' , ''); END; -- Check of bedrijf HEYDAY Facility Management al bestaat v_errormsg := 'Check of bedrijf bestaat'; BEGIN SELECT prs_bedrijf_key INTO v_prs_bedrijf_key FROM prs_bedrijf WHERE prs_bedrijf_naam_upper = UPPER(v_prs_bedrijf_naam) AND prs_bedrijf_intern = 1 AND prs_bedrijf_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern) VALUES (v_prs_bedrijf_naam, 1) RETURNING prs_bedrijf_key INTO v_prs_bedrijf_key; END; -- Check of afdeling HEYDAY al bestaat v_errormsg := 'Check of afdeling bestaat'; BEGIN SELECT prs_afdeling_key INTO v_prs_afdeling_key FROM prs_afdeling WHERE prs_afdeling_upper = 'HEYDAY' AND prs_bedrijf_key = v_prs_bedrijf_key AND prs_afdeling_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO prs_afdeling (prs_afdeling_naam, prs_afdeling_omschrijving, prs_bedrijf_key) VALUES ('HEYDAY', 'HEYDAY Facility Management', v_prs_bedrijf_key) RETURNING prs_afdeling_key INTO v_prs_afdeling_key; END; v_errormsg := 'Bepaal srtperslid'; SELECT prs_srtperslid_key INTO v_prs_srtperslid_key FROM prs_srtperslid WHERE prs_srtperslid_omschrijving = 'Onbekend'; FOR rec IN c LOOP BEGIN -- set alvast de variable om straks de kenmerken goed te kunnen opslaan. v_prs_perslid_key := rec.prs_perslid_key; -- als de persoon een personeelsnummer van de klant heeft gaan we niets aan zijn -- gegevens aanpassen maar wordt de persoon alleen aan de autorisatiegroep toegevoegd. IF rec.prs_perslid_nr IS NULL THEN IF rec.prs_perslid_key IS NULL THEN -- misschien kunnen we de persoon nog vinden op basis van personeelsnummer v_errormsg := 'Zoek persoon met zelfde personeelsnummer ' || rec.personeelsnummer; SELECT MAX(prs_perslid_key) INTO v_prs_perslid_key FROM prs_kenmerklink, prs_perslid WHERE prs_kenmerk_key = 3 AND prs_kenmerklink_verwijder IS NULL AND prs_link_key = prs_perslid_key AND prs_perslid_verwijder IS NULL AND rec.personeelsnummer = prs_kenmerklink_waarde; -- persoon bestaat nog niet v_errormsg := 'Controle login ' || rec.personeelsnummer; SELECT count(prs_perslid_key) INTO v_count FROM prs_perslid WHERE prs_perslid_oslogin = UPPER(rec.loginnaam); IF v_count = 0 AND v_prs_perslid_key IS NULL THEN v_errormsg := 'Toevoegen persoon ' || rec.personeelsnummer; INSERT INTO prs_perslid (prs_afdeling_key, prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_voorletters, prs_perslid_voornaam, prs_perslid_titel, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_srtperslid_key, prs_perslid_oslogin, prs_perslid_apikey, prs_perslid_ingids, prs_perslid_dienstverband, prs_perslid_uurloon) VALUES (v_prs_afdeling_key, rec.persoonachternaam, rec.tussenvoegsel, rec.voorletters, rec.voornaam, rec.titel, SUBSTR(rec.telefoonnummer,1,15), rec.mobiel, rec.email, v_prs_srtperslid_key, rec.loginnaam, rec.prs_perslid_apikey, NULL, fac.safe_to_number ( REPLACE (rec.dienstverband, ',', '.')), fac.safe_to_number (REPLACE (rec.uurloon, ',', '.'))) RETURNING prs_perslid_key INTO v_prs_perslid_key; ELSE fac.imp_writelog (p_import_key, 'E', 'Login bestaat al bij andere persoon. (' || rec.persoonachternaam || ' - ' || rec.loginnaam || ' - ' || rec.personeelsnummer || ')' , ''); END IF; ELSE -- persoon bestaat al v_errormsg := 'Aanpassen persoon ' || rec.personeelsnummer; UPDATE prs_perslid SET prs_afdeling_key = v_prs_afdeling_key, prs_perslid_naam = rec.persoonachternaam, prs_perslid_tussenvoegsel = rec.tussenvoegsel, prs_perslid_voorletters = rec.voorletters, prs_perslid_voornaam = rec.voornaam, prs_perslid_titel = rec.titel, prs_perslid_telefoonnr = COALESCE(prs_perslid_telefoonnr, SUBSTR(rec.telefoonnummer,1,15)), prs_perslid_mobiel = COALESCE(prs_perslid_mobiel, rec.mobiel), prs_perslid_email = COALESCE(prs_perslid_email, rec.email), prs_srtperslid_key = v_prs_srtperslid_key, prs_perslid_oslogin = rec.loginnaam, prs_perslid_apikey = rec.prs_perslid_apikey, prs_perslid_ingids = NULL, prs_perslid_dienstverband = fac.safe_to_number ( REPLACE (rec.dienstverband, ',', '.')), prs_perslid_uurloon = fac.safe_to_number (REPLACE (rec.uurloon, ',', '.')) WHERE prs_perslid_key = rec.prs_perslid_key; END IF; -- verwijder de zojuist toegevoegde persoon uit de default groep. DELETE fac_gebruikersgroep WHERE fac_groep_key = v_fac_default_key AND prs_perslid_key = v_prs_perslid_key; END IF; IF v_prs_perslid_key IS NOT NULL THEN v_errormsg := 'Toevoegen key naar AAIT prs_perslid_key kenmerk ' || v_prs_perslid_key; aaxx.set_prs_kenmerk (p_import_key, 'P', 4, v_prs_perslid_key, rec.prs_perslid_key_aait); v_errormsg := 'Toevoegen personeelsnummer kenmerk ' || v_prs_perslid_key; aaxx.set_prs_kenmerk (p_import_key, 'P', 3, v_prs_perslid_key, rec.personeelsnummer); v_errormsg := 'Toevoegen kostenplaats kenmerk ' || v_prs_perslid_key; aaxx.set_prs_kenmerk (p_import_key, 'P', 2, v_prs_perslid_key, rec.kostenplaats); v_errormsg := 'Toevoegen uurloon intern kenmerk ' || v_prs_perslid_key; aaxx.set_prs_kenmerk (p_import_key, 'P', 6, v_prs_perslid_key, rec.uurloon_intern); IF rec.prs_perslid_key_sd IS NOT NULL THEN -- Servicedesk autorisatie toevoegen. v_errormsg := 'Toevoegen aan autorisatiegroep BO_SERVICEDESK de servicedesk-medewerker ' || rec.personeelsnummer; INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key) (SELECT v_prs_perslid_key, fac_groep_key FROM fac_groep g WHERE fac_groep_externid = 'BO_SERVICEDESK' AND NOT EXISTS (SELECT fac_gebruikersgroep_key FROM fac_gebruikersgroep gg WHERE gg.prs_perslid_key = v_prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key)); -- Servicedesk medewerkers mandateren voor alle kostenplaatsen. v_errormsg := 'Toevoegen SD mandaat ' || rec.personeelsnummer; DELETE prs_perslidkostenplaats WHERE prs_perslid_key = v_prs_perslid_key AND prs_kostenplaats_key IS NOT NULL; INSERT INTO prs_perslidkostenplaats (prs_perslid_key) (SELECT v_prs_perslid_key FROM DUAL WHERE NOT EXISTS (SELECT prs_perslid_key FROM prs_perslidkostenplaats pkp WHERE pkp.prs_perslid_key = v_prs_perslid_key)); END IF; -- voeg iedereen toe aan de gebruikersgroep HEYDAY Medewerker INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) SELECT fac_groep_key, prs_perslid_key FROM fac_groep g, prs_perslid p WHERE g.fac_groep_key = v_fac_groep_key AND p.prs_perslid_key = v_prs_perslid_key AND NOT EXISTS (SELECT fac_gebruikersgroep_key FROM fac_gebruikersgroep gg WHERE gg.prs_perslid_key = p.prs_perslid_key AND gg.fac_groep_key = g.fac_groep_key); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); COMMIT; -- tbv logging END; END LOOP; DELETE fac_gebruikersgroep WHERE fac_groep_key = v_fac_groep_key AND prs_perslid_key NOT IN (SELECT p.prs_perslid_key FROM aait.aait_imp_perslid i, prs_perslid p, prs_kenmerklink kl WHERE p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerk_key = 3 AND i.personeelsnummer = kl.prs_kenmerklink_waarde); -- probeer personen te verwijderen die niet meer voorkomen in het importbestand FOR rec_del IN c_del LOOP BEGIN IF COALESCE(rec_del.prs_perslid_login, SYSDATE -11) > SYSDATE -10 THEN fac.imp_writelog (p_import_key, 'I', 'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden', ''); UPDATE prs_perslid SET prs_perslid_oslogin = NULL, prs_perslid_oslogin2 = NULL WHERE prs_perslid_key = rec_del.prs_perslid_key; ELSE fac.imp_writelog (p_import_key, 'I', 'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden', ''); aaxx.prs_del_perslid (p_import_key, rec_del.prs_perslid_key, 0, 0); END IF; END; END LOOP; END; / -- view om ongeldige records te vinden. CREATE OR REPLACE VIEW aaxx_rap_perslid_mismatch (hide_f_index, naam, voornaam, lastlogin, afdeling, AAFMpersoneelsnummer) AS SELECT sysdate - prs_perslid_login, prs_perslid_naam, prs_perslid_voornaam, prs_perslid_login, prs_afdeling_omschrijving, klo.prs_kenmerklink_waarde nr FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a WHERE p.prs_perslid_key = klo.prs_link_key AND p.prs_afdeling_key = a.prs_afdeling_key AND prs_kenmerk_key = 3 AND prs_perslid_verwijder IS NULL AND prs_perslid_login IS NOT NULL AND NOT EXISTS (SELECT prs_kenmerklink_key FROM prs_kenmerklink WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4); ------------------------------------------------------------------------------- -- KOPPELINGEN MET LEVERANCIERS ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_opdrstat_strukton ( p_import_key IN NUMBER) AS c_delim VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (4000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (1200); v_dummy VARCHAR2 (200); header_is_valid NUMBER := 0; v_count NUMBER; v_count_tot NUMBER (10) := 0; v_count_import NUMBER (10) := 0; v_ongeldig NUMBER (1) := 0; -- De importvelden v_mld_opdr_opmerking VARCHAR2 (4000); v_mld_opdr_key NUMBER (10); v_mld_opdr_key_tekst VARCHAR2 (100); v_extern_nummer VARCHAR2 (100); v_status NUMBER (10); v_status_tekst VARCHAR2 (100); v_status_code VARCHAR2 (100); v_datumtijd DATE; v_datumtijd_tekst VARCHAR2 (100); v_opmerking VARCHAR2 (3000); -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM aaxx_imp_opdrstat_strukton; COMMIT; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; v_ongeldig := 0; fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst); fac.imp_getfield (v_newline, c_delim, v_extern_nummer); fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst); fac.imp_getfield (v_newline, c_delim, v_status_tekst); fac.imp_getfield (v_newline, c_delim, v_opmerking); v_opmerking := substr(v_opmerking, 1, 1000); -- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben. v_opmerking := replace(v_opmerking, '@@',CHR (13)); v_aanduiding := '[' || v_extern_nummer || '|' || v_mld_opdr_key_tekst || '|' || v_status_tekst || '|' || v_opmerking || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID' AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID' AND UPPER (TRIM (v_status_code)) = 'TYPEID' AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME' AND UPPER (TRIM (v_opmerking)) = 'REMARKS' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']'; v_mld_opdr_key := TRIM (v_mld_opdr_key); BEGIN SELECT o.mld_opdr_key, o.mld_opdr_opmerking INTO v_mld_opdr_key, v_mld_opdr_opmerking FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std WHERE o.mld_melding_key = m.mld_melding_key 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 AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', ''); -- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer SELECT o.mld_opdr_key, o.mld_opdr_opmerking INTO v_mld_opdr_key, v_mld_opdr_opmerking FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k WHERE o.mld_opdr_key = ko.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 35 AND ko.mld_kenmerkopdr_waarde = v_extern_nummer; EXCEPTION WHEN OTHERS THEN v_ongeldig := 1; v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']'; v_mld_opdr_key := NULL; END; END; IF v_ongeldig = 0 THEN v_errormsg := 'Fout bij bepalen status [' || v_aanduiding || ']'; CASE WHEN v_status_code = '5' THEN v_status := 5; -- uitgegeven WHEN v_status_code = '10' THEN v_status := 8; -- geaccepteerd WHEN v_status_code = '20' -- monteur gereed THEN v_status := 6; -- afgemeld WHEN v_status_code = '25' -- specialist gereed THEN v_status := 6; -- afgemeld WHEN v_status_code = '30' -- technisch gereed THEN v_status := 6; -- afgemeld -- For future use -- WHEN v_status_code = '40' -- uitgeprijst -- THEN -- v_status := 6; -- afgemeld WHEN v_status_code = '70' THEN v_status := 1; -- geannuleerd WHEN v_status_code = '80' THEN v_status := 1; -- afgewezen ELSE v_status := NULL; v_ongeldig := 1; -- nog te bezien. END CASE; END IF; -- Lees alle veldwaarden IF v_ongeldig = 0 THEN v_errormsg := 'Fout bij converteren datumtijd [' || v_aanduiding || ']'; IF INSTR (v_datumtijd_tekst, '.') > 0 THEN v_datumtijd := fac.safe_to_date ( REPLACE ( SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss'); ELSE v_datumtijd := fac.safe_to_date(v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss'); END IF; IF v_datumtijd = NULL THEN v_ongeldig := 0; END IF; END IF; IF v_ongeldig = 0 THEN v_errormsg := 'Fout bij aanvullen opmerking [' || v_aanduiding || ']'; -- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang -- gemeld is. IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0 THEN v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst || CHR (13) || CHR (10) || v_opmerking; ELSE v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst; END IF; END IF; -- Insert geformatteerde import record IF (v_ongeldig = 0) THEN BEGIN v_errormsg := 'Fout toevoegen opdracht status [' || v_aanduiding || ']'; INSERT INTO aaxx_imp_opdrstat_strukton (mld_opdr_key, extern_nummer, status, datumtijd, opmerking) VALUES (v_mld_opdr_key, v_extern_nummer, v_status, v_datumtijd, v_opmerking); v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Fout bij toevoegen regel aan importtabel aaxx_imp_opdr_status_strukton.'); END; ELSE IF v_status_code <> '40' AND v_status_code <> '45' THEN fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); END IF; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!'); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := SUBSTR( v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', 1, 490); fac.imp_writelog (p_import_key, 'E', SUBSTR(v_aanduiding, 1, 500) || ' - ' || v_errormsg, 'Inleesproces opdrachtstatusberichten afgebroken!'); END; / CREATE OR REPLACE PROCEDURE aaxx_update_opdrstat_strukton (p_import_key IN NUMBER) AS -- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten. CURSOR c1 IS SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking FROM aaxx_imp_opdrstat_strukton ORDER BY 1, 3; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10); v_count NUMBER (10); v_mld_key NUMBER (10) := 0; v_opdr_key NUMBER (10) := 0; v_opdr_status NUMBER (10) := 0; v_user_key NUMBER (10) := 0; v_mld_typeopdr_key NUMBER (10); v_mld_kenmerk_key NUMBER (10); v_mld_kenmerkopdr_key NUMBER (10); v_mld_srtkenmerk_key NUMBER (10); BEGIN -- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze. v_count_tot := 0; -- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt -- het nummer dat Strukton aan de call gegeven heeft geregistreerd. IF aaxx_get_user = 'SABIC' THEN v_mld_srtkenmerk_key := 35; END IF; IF aaxx_get_user = 'ESSENT' THEN v_mld_srtkenmerk_key := 741; END IF; v_user_key := 10; -- Strukton user FOR rec IN c1 LOOP BEGIN v_aanduiding := '[' || rec.mld_opdr_key || '|' || SUBSTR (rec.opmerking, 1, 100) || '] '; v_count_tot := v_count_tot + 1; v_count := 0; -- Key van melding/opdracht bepalen en externnr bij opdracht opslaan. IF (rec.mld_opdr_key IS NOT NULL) THEN v_errormsg := 'Fout bij bepalen opdracht.'; SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key FROM mld_opdr WHERE mld_opdr_key = rec.mld_opdr_key; v_errormsg := 'Fout bij bepalen kenmerk extern nummer.'; SELECT k.mld_kenmerk_key INTO v_mld_kenmerk_key FROM mld_kenmerk k WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key AND k.mld_typeopdr_key = v_mld_typeopdr_key; v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.'; SELECT max(ko.mld_kenmerkopdr_key) INTO v_mld_kenmerkopdr_key FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = v_opdr_key AND v_mld_kenmerk_key = ko.mld_kenmerk_key; v_errormsg := 'Fout bij aanpassen extern nummer.'; IF v_mld_kenmerkopdr_key IS NULL THEN -- kenmerk toevoegen INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde) VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer); ELSE -- kenmerk aanpassen UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = rec.extern_nummer WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key; END IF; v_errormsg := 'Fout bij bijwerken opdracht-opmerking.'; v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte! UPDATE mld_opdr SET mld_opdr_opmerking = DECODE ( mld_opdr_opmerking, NULL, rec.opmerking, rec.opmerking || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count))) WHERE mld_opdr_key = v_opdr_key; IF v_opdr_status <> rec.status THEN IF rec.status = 8 AND v_opdr_status = 5 THEN -- Accepteer opdracht als de opdracht uitgegeven was MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor ELSIF rec.status = 6 AND v_opdr_status = 5 THEN -- Meld de opdracht af als deze uitgegeven was MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor ELSIF rec.status = 6 AND v_opdr_status = 8 THEN -- Meld de opdracht af als deze geaccepteerd was MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor ELSIF rec.status = 1 AND v_opdr_status = 5 THEN -- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is. MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0); ELSIF rec.status = 1 AND v_opdr_status = 8 THEN -- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is. MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0); END IF; IF rec.status = 6 AND v_opdr_status <> 6 THEN v_errormsg := 'Fout bij statusaanpassing melding.'; -- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld. MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0); END IF; END IF; END IF; COMMIT; 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.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Fout bij verwerken opdrachtstatusbericht.'); END; END LOOP; COMMIT; END; / ------------------------------------------------------------------------------- -- IMPORTFUNCTIE - DIENST_LOC_BLD ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_dienst_loc_bld ( 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); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_skipfield VARCHAR2 (100); -- De importvelden v_bedrijf_naam VARCHAR2 (100); v_bedrijf_nr VARCHAR2 (100); v_dienst_oms VARCHAR2 (100); v_locatie_code VARCHAR2 (100); v_gebouw_code VARCHAR2 (100); header_found BOOLEAN; BEGIN -- Init header_found := FALSE; v_fielddelimitor := ';'; -- Clear my previous imported rows DELETE FROM aaxx_imp_dienst_loc_bld; FOR rec1 IN c_cursor LOOP BEGIN v_newline := rec1.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; fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_naam); fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_nr); fac.imp_getfield (v_newline, v_fielddelimitor, v_dienst_oms); fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code); fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw_code); -- Skip until a valid header is found IF UPPER (v_bedrijf_naam) = 'BEDRIJFNAAM' AND UPPER (v_bedrijf_nr) = 'BEDRIJF_NR' AND UPPER (v_dienst_oms) = 'DIENST' AND UPPER (v_locatie_code) = 'LOCATIE_CODE' AND UPPER (v_gebouw_code) = 'GEBOUW_CODE' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found) THEN INSERT INTO aaxx_imp_dienst_loc_bld (prs_bedrijf_naam, prs_bedrijf_nr, prs_dienst_omschrijving, alg_locatie_code, alg_gebouw_code) VALUES (SUBSTR (v_bedrijf_naam, 1, 60), SUBSTR (v_bedrijf_nr, 1, 50), SUBSTR (v_dienst_oms, 1, 60), SUBSTR (v_locatie_code, 1, 10), SUBSTR (v_gebouw_code, 1, 12)); END IF; COMMIT; END; END LOOP; IF NOT header_found THEN fac.imp_writelog ( p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig BedrijfDienstLocatieGebouw importbestand.'); END IF; 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.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), ''); -- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden. DELETE FROM aaxx_imp_dienst_loc_bld; END; / CREATE OR REPLACE PROCEDURE aaxx_update_dienst_loc_bld ( p_import_key IN NUMBER) AS CURSOR cbdlg IS SELECT prs_bedrijf_naam, prs_bedrijf_nr, prs_dienst_omschrijving, alg_locatie_code, alg_gebouw_code FROM aaxx_imp_dienst_loc_bld WHERE prs_dienst_omschrijving IS NOT NULL; v_oldcountbdlg NUMBER; v_newcountbdlg NUMBER; v_prs_bedrijf_key NUMBER; v_prs_dienst_key NUMBER; v_alg_locatie_key NUMBER; v_alg_gebouw_key NUMBER; v_errormsg VARCHAR (1000); v_error_hint VARCHAR (1000); oracle_err_mes VARCHAR2 (150); oracle_err_num VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; BEGIN SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog ( p_import_key, 'I', 'Arcadis Aqumen BedrijfDienstLocatieGebouw import version ' || currentversion, '$Revision$'); SELECT COUNT ( * ) INTO v_oldcountbdlg FROM aaxx_imp_dienst_loc_bld; IF v_oldcountbdlg = 0 THEN fac.imp_writelog ( p_import_key, 'E', 'Arcadis Aqumen BedrijfDienstLocatieGebouw import bevat geen records', '$Revision$'); RETURN; END IF; -- How many active records are now present? SELECT COUNT ( * ) INTO v_oldcountbdlg FROM prs_bedrijfdienstlocatie; -- remove the existing records DELETE prs_bedrijfdienstlocatie; FOR rec IN cbdlg LOOP BEGIN v_errormsg := 'Kan dienst niet bepalen [' || rec.prs_dienst_omschrijving || '] '; SELECT prs_dienst_key INTO v_prs_dienst_key FROM prs_dienst WHERE UPPER (prs_dienst_omschrijving) = UPPER (rec.prs_dienst_omschrijving); v_errormsg := 'Kan locatie niet bepalen [' || rec.alg_locatie_code || '] '; IF rec.alg_locatie_code IS NOT NULL THEN SELECT alg_locatie_key INTO v_alg_locatie_key FROM alg_v_aanweziglocatie WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code); ELSE v_alg_locatie_key := NULL; END IF; v_errormsg := 'Kan gebouw niet bepalen [' || rec.alg_gebouw_code || '] '; IF rec.alg_gebouw_code IS NOT NULL THEN SELECT alg_gebouw_key INTO v_alg_gebouw_key FROM alg_v_aanweziggebouw WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code); v_alg_locatie_key := NULL; ELSE v_alg_gebouw_key := NULL; END IF; v_errormsg := 'Kan bedrijf niet bepalen [' || rec.prs_bedrijf_naam || '(' || rec.prs_bedrijf_nr || ')' || '] '; SELECT prs_bedrijf_key INTO v_prs_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam); v_errormsg := 'Kan bedrijf/dienst/loc/bld niet wegschrijven [' || rec.prs_bedrijf_naam || '(' || rec.prs_bedrijf_nr || ')' || '/' || rec.prs_dienst_omschrijving || '/' || rec.alg_locatie_code || '/' || rec.alg_gebouw_code || '] '; INSERT INTO prs_bedrijfdienstlocatie (prs_dienst_key, prs_bedrijf_key, alg_locatie_key, alg_gebouw_key) VALUES (v_prs_dienst_key, v_prs_bedrijf_key, v_alg_locatie_key, v_alg_gebouw_key); COMMIT; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); COMMIT; END; END LOOP; SELECT COUNT ( * ) INTO v_newcountbdlg FROM aaxx_imp_dienst_loc_bld; fac.imp_writelog ( p_import_key, 'S', 'Aantal BedrijfDienstLocBld vooraf: ' || TO_CHAR (v_oldcountbdlg) || ' => nu: ' || TO_CHAR (v_newcountbdlg), ''); END; / ------------------------------------------------------------------------------- -- RAPPORTAGES aaxx_v_rap_gebruikers_auth ------------------------------------------------------------------------------- CREATE OR REPLACE VIEW aaxx_v_rap_gebruikers_auth ( naam, afdeling, functie, email, login, alt_login, auth_groep, last_login ) AS SELECT prs_perslid_naam_full, prs_afdeling_omschrijving, prs_srtperslid_omschrijving, prs_perslid_email, prs_perslid_oslogin, prs_perslid_oslogin2, fac_groep_omschrijving, prs_perslid_login FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf, fac_gebruikersgroep gg, prs_afdeling a, fac_groep g, prs_srtperslid sp WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_key = gg.prs_perslid_key(+) AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND gg.fac_groep_key = g.fac_groep_key(+) AND (p.prs_perslid_oslogin IS NOT NULL OR p.prs_perslid_oslogin2 IS NOT NULL) AND SUBSTR(COALESCE (p.prs_perslid_oslogin, 'QueQueLeQue'),1,1) <> '_'; -- Geatoriseerd voor ORDBO2 maar niet gekoppeld aan een bedrijf of AAFMer CREATE OR REPLACE VIEW aaxx_v_rap_ordbo2_no_bdr ( prs_perslid_key, naam, login_naam, email, autorisatiegroep ) AS SELECT DISTINCT pf.prs_perslid_key, prs_perslid_naam_full, prs_perslid_oslogin, prs_perslid_email, fac_groep_omschrijving FROM fac_groeprechten fgr, fac_functie ff, fac_gebruikersgroep fgg, fac_groep fg, prs_v_perslid_fullnames pf, prs_perslid p WHERE ff.fac_functie_key = fgr.fac_functie_key AND UPPER (fac_functie_code) = 'WEB_ORDBO2' AND (fac_gebruiker_prs_level_read < 9 OR fac_gebruiker_alg_level_read < 9) AND fgr.fac_groep_key = fgg.fac_groep_key AND p.prs_perslid_key = fgg.prs_perslid_key AND fg.fac_groep_key = fgg.fac_groep_key AND p.prs_perslid_key = pf.prs_perslid_key AND UPPER (prs_perslid_oslogin) != '_FACILITOR' AND fgg.prs_perslid_key NOT IN (SELECT prs_perslid_key FROM prs_contactpersoon pc, prs_bedrijf b WHERE prs_contactpersoon_verwijder IS NULL AND pc.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_verwijder IS NULL AND pc.prs_perslid_key IS NOT NULL) AND NOT EXISTS (SELECT prs_afdeling_key FROM prs_afdeling a WHERE a.prs_afdeling_key = p.prs_afdeling_key AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_upper = 'HEYDAY')); CREATE OR REPLACE VIEW aaxx_v_rap_dienst_loc_bld (fclt_f_bedrijfnaam , fclt_f_bedrijf_nr , fclt_f_dienst , fclt_f_locatie_code , fclt_f_gebouw_code ) AS SELECT prs_bedrijf_naam bedrijfnaam, prs_leverancier_nr bedrijfnummer, prs_dienst_omschrijving dienst, alg_locatie_code locatie_code, alg_gebouw_upper gebouw_code FROM prs_v_aanwezigbedrijf b, prs_dienst d, alg_locatie l, alg_gebouw g, prs_bedrijfdienstlocatie bdl WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+) AND bdl.prs_dienst_key = d.prs_dienst_key(+) AND bdl.alg_locatie_key = l.alg_locatie_key(+) AND bdl.alg_gebouw_key = g.alg_gebouw_key(+) AND COALESCE (b.prs_bedrijf_intern, 0) = 0; CREATE OR REPLACE VIEW aaxx_v_rap_bdl_contract ( fclt_f_profiel, fclt_f_bedrijfnaam, fclt_f_bedrijf_nr, fclt_f_dienst, fclt_f_locatie_code, fclt_f_gebouw_code, fclt_f_contract ) AS SELECT 'Contract', prs_bedrijf_naam, prs_leverancier_nr, prs_dienst_omschrijving, (SELECT alg_locatie_code FROM alg_locatie l WHERE l.alg_locatie_key = COALESCE (cpl.alg_locatie_key, cpg.alg_locatie_key)), (SELECT alg_gebouw_upper FROM alg_gebouw g1 WHERE g1.alg_gebouw_key = cpg.alg_gebouw_key), c.cnt_contract_nummer_intern FROM cnt_contract c, (SELECT cnt_contract_key, cnt_alg_plaats_key alg_locatie_key FROM cnt_contract_plaats cp WHERE cp.cnt_contract_plaats_verwijder IS NULL AND cp.cnt_alg_plaats_code = 'L') cpl, (SELECT cnt_contract_key, g.alg_locatie_key, g.alg_gebouw_key FROM cnt_contract_plaats cp, alg_gebouw g WHERE cp.cnt_alg_plaats_code = 'G' AND cnt_alg_plaats_key = g.alg_gebouw_key) cpg, prs_bedrijf b, prs_dienst d WHERE c.cnt_contract_key = cpl.cnt_contract_key(+) AND c.cnt_contract_key = cpg.cnt_contract_key(+) AND c.prs_dienst_key = d.prs_dienst_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+) AND c.cnt_contract_looptijd_tot > SYSDATE UNION ALL SELECT 'Uitvoerder', prs_bedrijf_naam bedrijfnaam, prs_leverancier_nr bedrijfnummer, prs_dienst_omschrijving dienst, alg_locatie_code locatie_code, alg_gebouw_upper gebouw_code, NULL FROM prs_v_aanwezigbedrijf b, prs_dienst d, alg_locatie l, alg_gebouw g, prs_bedrijfdienstlocatie bdl WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+) AND bdl.prs_dienst_key = d.prs_dienst_key(+) AND bdl.alg_locatie_key = l.alg_locatie_key(+) AND bdl.alg_gebouw_key = g.alg_gebouw_key(+) AND COALESCE (b.prs_bedrijf_intern, 0) = 0; CREATE OR REPLACE VIEW aaxx_v_rap_contractorders ( contractorder, versie, fclt_f_gebouwcode, fclt_f_leverancier, fclt_f_beschrijving, fclt_f_pakket, ingangsdatum, einddatum, fclt_f_status, kosten, totaalkosten, gefactureerd, dienst, leveranciernr ) AS SELECT cnt_contract_nummer_intern contractorder, cnt_contract_versie, alg_gebouw_code gebouwcode, prs_bedrijf_naam leverancier, k.prs_kostensoort_opmerking beschrijving, (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key) pakket, TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY') ingangsdatum, TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum, DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE), 1, 'Toekomst', -1, DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE), 1, 'Actueel', -1, 'Verlopen' ) ) status, COALESCE (ROUND ( DECODE (cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten), 2 ), 0 ) kosten, c.cnt_contract_kosten orderbedrag, (SELECT SUM (fr.fin_factuurregel_totaal) FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key AND f.cnt_contract_key = c.cnt_contract_key) gefactureerd, k.prs_kostensoort_refcode dienst, b.prs_leverancier_nr leveranciernr FROM cnt_contract c, cnt_discipline d, cnt_contract_plaats cp, prs_bedrijf b, prs_kostensoort k, prs_kostenplaats kp, prs_afdeling a, prs_perslid p, alg_locatie l, alg_gebouw g, prs_contactpersoon cop, (SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.ins_discipline_key = d.ins_discipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.prs_perslid_key_beh = p.prs_perslid_key AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+) AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND cnt_contract_verwijder IS NULL; -- eerst volgen de kopregels en de tweede union bevat de detailregels. CREATE OR REPLACE VIEW aaxx_v_rap_imp_jaarcontract ( HIDE_F_VOLGORDE, GEBOUW, BEDRIJF, LEVNR, BESCHRIJVING, INGANGSDATUM, EINDDATUM, ORDEROMSCHRIJVING, BEDRAG, TERMIJNBEDRAG, DIENST, CONTRACTSOORT, CONTRACTNR, VERSIE, REGELNR, CONTRACTAFDELING, CONTRACTMANAGER, GEWIJZIGDDOOR, STATUS, PRS_KOSTENPLAATSGRP_OMS ) AS SELECT COALESCE (fac.safe_to_number (cnt_contract_nummer_intern), cs.ins_discipline_key * 1000 + b.prs_bedrijf_key) * 100, k.prs_kostenplaats_nr, prs_bedrijf_naam, prs_leverancier_nr, cnt_contract_omschrijving, TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'), TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'), REPLACE (cnt_contract_document, '"', ' - '), cnt_contract_kosten, cnt_contract_termijnkosten, prs_dienst_omschrijving, cs.ins_discipline_omschrijving, cnt_contract_nummer_intern, COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1, NULL, a.prs_afdeling_naam, p2.prs_perslid_oslogin, p.prs_perslid_oslogin, DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status, DECODE(k.prs_kostenplaatsgrp_key, NULL, '', kg.prs_kostenplaatsgrp_nr || ' - ' || kg.prs_kostenplaatsgrp_oms) prs_kostenplaatsgrp_oms FROM cnt_v_aanwezigcontract c, prs_kostenplaats k, prs_kostenplaatsgrp kg, prs_perslid p, prs_perslid p2, prs_afdeling a, prs_dienst d, prs_bedrijf b, ins_tab_discipline cs WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR') AND c.cnt_contract_looptijd_tot OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR') OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 ) AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+) AND c.prs_perslid_key_beh = p.prs_perslid_key AND c.prs_perslid_key_eig = p2.prs_perslid_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.prs_dienst_key = d.prs_dienst_key(+) AND c.ins_discipline_key = cs.ins_discipline_key UNION ALL SELECT (COALESCE (fac.safe_to_number (cnt_contract_nummer_intern), cs.ins_discipline_key * 1000 + b.prs_bedrijf_key) * 100) + aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key), alg_gebouw_code, prs_bedrijf_naam, prs_leverancier_nr, cnt_contract_omschrijving, TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'), TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'), NULL, DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, c.cnt_contract_kosten, ROUND ( (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten, 2)), NULL, prs_dienst_omschrijving, cs.ins_discipline_omschrijving, cnt_contract_nummer_intern, COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1, aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key), a.prs_afdeling_naam, p2.prs_perslid_oslogin, p.prs_perslid_oslogin, DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status, DECODE(k.prs_kostenplaatsgrp_key, NULL, '', kg.prs_kostenplaatsgrp_nr || ' - ' || kg.prs_kostenplaatsgrp_oms) prs_kostenplaatsgrp_oms FROM cnt_v_aanwezigcontract c, prs_kostenplaats k, prs_kostenplaatsgrp kg, prs_perslid p, prs_perslid p2, prs_afdeling a, prs_dienst d, prs_bedrijf b, ins_tab_discipline cs, cnt_contract_plaats cp, alg_gebouw g, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL GROUP BY cnt_contract_key) cnt_gew WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR') AND c.cnt_contract_looptijd_tot OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR') OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 ) AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+) AND c.prs_perslid_key_beh = p.prs_perslid_key AND c.prs_perslid_key_eig = p2.prs_perslid_key(+) AND c.prs_afdeling_key_eig = a.prs_afdeling_key AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.prs_dienst_key = d.prs_dienst_key(+) AND c.ins_discipline_key = cs.ins_discipline_key AND c.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_key = g.alg_gebouw_key AND cp.cnt_alg_plaats_code = 'G' AND c.cnt_contract_key = cnt_gew.cnt_contract_key; -- rapportage om ruimteinformatie te exporteren / bewerken en importeren in Facilitor CREATE OR REPLACE VIEW aaxx_v_rap_imp_ruimte ( fclt_f_locatie, fclt_f_gebouw, fclt_f_verdieping, alg_ruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving, alg_srtruimte_omschrijving, mld_dienstniveau_omschr, alg_ruimte_bruto_vloeropp ) AS SELECT alg_locatie_code, alg_gebouw_code, alg_verdieping_code, alg_ruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving, sr.alg_srtruimte_omschrijving, d.mld_dienstniveau_omschr, r.alg_ruimte_bruto_vloeropp FROM alg_ruimte r, mld_dienstniveau d, alg_srtruimte sr, alg_verdieping v, alg_gebouw g, alg_locatie l WHERE r.mld_dienstniveau_key = d.mld_dienstniveau_key(+) AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND r.alg_ruimte_verwijder IS NULL; CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegbasis ( fclt_f_vakgroeptype, fclt_f_vakgroep, fclt_f_melding, groep, niet_zichtbaar_fe, acceptatietijd, uitvoertijd, kostensoort, kostensoort_code, fin_waarde, aanwijzing_nederlands, aanwijzing_english, aanwijzing_deutsch, aanwijzing_francais, dienst, vereist_dienst, opdrachttype, autoorder, alg_niveau, vervallen ) AS SELECT sd.ins_srtdiscipline_omschrijving, d.ins_discipline_omschrijving, m.mld_stdmelding_omschrijving, g.mld_stdmeldinggroep_naam mld_stdmelding_groep, DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'), TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur) || m.mld_stdmelding_t_accepttijd.eenheid, TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur) || m.mld_stdmelding_t_uitvoertijd.eenheid, COALESCE (k2.prs_kostensoort_opmerking, k.prs_kostensoort_opmerking), COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms), COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode), mld_stdmelding_hint, len.fac_locale_tekst, lde.fac_locale_tekst, lfr.fac_locale_tekst, d.prs_dienst_omschrijving, m.mld_stdmelding_vereisdienst, ot.mld_typeopdr_omschrijving, m.mld_stdmelding_autoorder, alg_onrgoed_niveau, mld_stdmelding_vervaldatum FROM mld_stdmelding m, mld_stdmeldinggroep g, mld_discipline d, ins_srtdiscipline sd, prs_kostensoort k, prs_kostensoort k2, prs_dienst d, mld_typeopdr ot, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'EN') len, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'DE') lde, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'FR') lfr WHERE m.mld_stdmelding_verwijder IS NULL AND m.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+) AND m.prs_dienst_key = d.prs_dienst_key(+) AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+) AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+) AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key; CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegevens ( fclt_f_vakgroeptype, fclt_f_vakgroep, fclt_f_melding, groep, niet_zichtbaar_fe, acceptatietijd, uitvoertijd, kostensoort, kostensoort_code, fin_waarde, aanwijzing_nederlands, aanwijzing_english, aanwijzing_deutsch, aanwijzing_francais, alg_niveau, vervallen, vereist_dienst, opdrachttype, autoorder, fclt_f_dienst, fclt_f_bedrijf, fclt_f_locatie_code, fclt_f_gebouw_code ) AS SELECT sd.ins_srtdiscipline_omschrijving, d.ins_discipline_omschrijving, m.mld_stdmelding_omschrijving, g.mld_stdmeldinggroep_naam mld_stdmelding_groep, DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'), TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur) || m.mld_stdmelding_t_accepttijd.eenheid, TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur) || m.mld_stdmelding_t_uitvoertijd.eenheid, COALESCE (k2.prs_kostensoort_opmerking, k.prs_kostensoort_opmerking), COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms), COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode), mld_stdmelding_hint, len.fac_locale_tekst, lde.fac_locale_tekst, lfr.fac_locale_tekst, alg_onrgoed_niveau, mld_stdmelding_vervaldatum, m.mld_stdmelding_vereisdienst, ot.mld_typeopdr_omschrijving, m.mld_stdmelding_autoorder, dl.dienst, dl.bedrijfnaam, dl.locatie_code, dl.gebouw_code FROM mld_stdmelding m, mld_stdmeldinggroep g, mld_discipline d, ins_srtdiscipline sd, prs_kostensoort k, prs_kostensoort k2, (SELECT d.prs_dienst_key, prs_bedrijf_naam bedrijfnaam, prs_dienst_omschrijving dienst, alg_locatie_code locatie_code, alg_gebouw_upper gebouw_code FROM prs_v_aanwezigbedrijf b, prs_dienst d, alg_locatie l, alg_gebouw g, prs_bedrijfdienstlocatie bdl WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+) AND bdl.prs_dienst_key = d.prs_dienst_key(+) AND bdl.alg_locatie_key = l.alg_locatie_key(+) AND bdl.alg_gebouw_key = g.alg_gebouw_key(+) AND COALESCE (b.prs_bedrijf_intern, 0) = 0) dl, mld_typeopdr ot, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'EN') len, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'DE') lde, (SELECT fac_locale_kolomkeyval, fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT' AND fac_locale_lang = 'FR') lfr WHERE m.mld_stdmelding_verwijder IS NULL AND m.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND d.prs_kostensoort_key = k.prs_kostensoort_key(+) AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+) AND m.prs_dienst_key = dl.prs_dienst_key(+) AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+) AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+) AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key; -- Ticket RABO#66623 - Bewaking afmelding bij vervolgmeldingen (toepassing o.a. bij N-meldingen binnen Assetmanagement) CREATE OR REPLACE VIEW aaxx_v_rap_bewaking_vervolgmld ( VAKGROEPTYPE, VAKGROEP, HOOFD_MELDING_NR, AANVRAGER, GEKOPPELD, HOOFD_MELDING_DATUM, HOOFD_MELDING_STATUS, VERVOLGMELDINGEN_AANTAL, VERVOLGMELDINGEN, VERVOLGMELDING_AFGEHANDELD, OP_CONTROLELIJST ) AS SELECT sd.ins_srtdiscipline_omschrijving, md.ins_discipline_omschrijving, m.mld_melding_key, p.prs_perslid_naam, CASE WHEN m.mld_melding_parentkey IS NULL THEN 'nee' ELSE 'ja, via ' || TO_CHAR(m.mld_melding_key) END gekoppeld, m.mld_melding_datum, s.mld_statuses_omschrijving, v1.aantal, v1.vervolgmeldingen, COALESCE(v2.aantal_afgehandeld,0) vervolgmeldingen_afgehandeld, CASE WHEN mld_melding_status NOT IN (1,5,6) AND COALESCE(v2.aantal_afgehandeld,0) = v1.aantal THEN 'ja' ELSE 'nee' END op_controlelijst FROM mld_melding m, mld_statuses s, prs_perslid p, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, (SELECT m.mld_melding_start_key, count(*) aantal, LISTAGG ( TO_CHAR (m.mld_melding_key) || ' (' || s.mld_statuses_omschrijving || ')', chr(13) || chr(10)) WITHIN GROUP (ORDER BY m.mld_melding_key) AS vervolgmeldingen FROM mld_melding m, mld_statuses s WHERE m.mld_melding_start_key IS NOT NULL AND mld_workflowstep_key IS NULL AND m.mld_melding_status = s.mld_statuses_key GROUP BY m.mld_melding_start_key ) v1, (SELECT m.mld_melding_start_key, count(*) aantal_afgehandeld FROM mld_melding m WHERE m.mld_melding_start_key IS NOT NULL AND mld_workflowstep_key IS NULL AND mld_melding_status IN (1,5,6) GROUP BY m.mld_melding_start_key ) v2 WHERE m.mld_melding_status = s.mld_statuses_key AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND m.mld_melding_key = v1.mld_melding_start_key AND m.mld_melding_key = v2.mld_melding_start_key (+) ; -- Grafische thema's en labels voor de plattegrond met reserveringsinfo CREATE OR REPLACE VIEW aaxx_v_cad_label_res_info ( alg_ruimte_key, waarde ) AS SELECT rar.alg_ruimte_key, max( TO_CHAR (res_rsv_ruimte_van, 'HH24:MI') || '-' || TO_CHAR (res_rsv_ruimte_tot, 'HH24:MI') || '~[s60]host: ' || prs_perslid_naam || '~[s40][b]' || DECODE (COALESCE (INSTR (res_rsv_ruimte_omschrijving, ' ', 15),0), 0, res_rsv_ruimte_omschrijving, SUBSTR (res_rsv_ruimte_omschrijving, 1, INSTR (res_rsv_ruimte_omschrijving, ' ', 15)-1) || chr(10) || '~[s40][b]' || SUBSTR(res_rsv_ruimte_omschrijving, INSTR(res_rsv_ruimte_omschrijving, ' ', 15)+1, 50)) ) waarde FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar, res_opstelling ro, prs_perslid pp WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rar.res_ruimte_key = rr.res_ruimte_key AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 96) -- kwartier AND res_rsv_ruimte_tot AND pp.prs_perslid_key = res_rsv_ruimte_host_key AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0) GROUP BY rar.alg_ruimte_key; CREATE OR REPLACE VIEW aaxx_v_cad_thema_resinfo ( alg_ruimte_key, waarde ) AS SELECT rar.alg_ruimte_key alg_ruimte_key, ROUND ( (res_rsv_ruimte_tot - SYSDATE) * 24, 2) waarde FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar, res_opstelling ro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rar.res_ruimte_key = rr.res_ruimte_key AND SYSDATE BETWEEN res_rsv_ruimte_van AND res_rsv_ruimte_tot AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0) UNION -- binnenkort aanvangende reserveringen SELECT rar.alg_ruimte_key alg_ruimte_key, ROUND ( (SYSDATE - res_rsv_ruimte_van) * 24, 2) waarde FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar, res_opstelling ro WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rar.res_ruimte_key = rr.res_ruimte_key AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24) AND res_rsv_ruimte_tot AND SYSDATE < res_rsv_ruimte_van AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0) UNION -- voorlopig vrije ruimte SELECT rar.alg_ruimte_key alg_ruimte_key, 0 waarde FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar, res_opstelling ro WHERE rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rar.res_ruimte_key = rr.res_ruimte_key AND NOT EXISTS (SELECT '' FROM res_v_aanwezigrsv_ruimte rrr WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24) AND res_rsv_ruimte_tot AND (res_rsv_ruimte_bezoekers_shown IS NULL OR res_rsv_ruimte_bezoekers_shown > 0)); -- view voor het exporteren van een catalogus. Deze kan later via de import ingelezen worden. CREATE OR REPLACE VIEW aaxx_v_imp_bes_artikel_sync ( FCLT_F_CatalogusNaam, Leverancier, CatDatum, Artikelnr, Groep, Omschrijving, Prijs, Eenheid, Picture, Orderaantal, Tax, DueDate, Inkoopprijs, Minimum, Staffeltabel, Wijzigdagen, Annuleerdagen ) AS SELECT td.ins_discipline_omschrijving, b.prs_bedrijf_naam, TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'), sd.bes_srtdeel_nr, sg.bes_srtgroep_omschrijving, sd.bes_srtdeel_omschrijving, TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)), sd.bes_srtdeel_eenheid, sd.bes_srtdeel_image, TO_CHAR (sd.bes_srtdeel_veelvoud), TO_CHAR (sd.bes_srtdeel_btw), TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'), TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)), NULL, bs.bes_staffeltabel_naam, sd.bes_srtdeel_wijzigdagen, sd.bes_srtdeel_annuleerdagen FROM ins_tab_discipline td, bes_srtgroep sg, bes_srtdeel sd, prs_bedrijf b, bes_staffeltabel bs WHERE td.ins_discipline_module = 'BES' AND td.ins_discipline_verwijder IS NULL AND td.ins_discipline_key = sg.ins_discipline_key AND sg.bes_srtgroep_verwijder IS NULL AND sg.bes_srtgroep_key = sd.bes_srtgroep_key AND sd.bes_srtdeel_verwijder IS NULL AND sd.prs_bedrijf_key = b.prs_bedrijf_key AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key; CREATE OR REPLACE VIEW aaxx_v_rap_kostenmutatie ( opdracht, vakgroeptype, vakgroep, mutatie, fclt_d_datum, fclt_f_leverancier, persoon ) AS SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht, (SELECT ins_srtdiscipline_omschrijving FROM ins_srtdiscipline sd WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key) Vakgroeptype, ins_discipline_omschrijving vakgroep, SUBSTR ( fac_tracking_oms, INSTR (fac_tracking_oms, 'Totaal ex. BTW:'), DECODE ( INSTR (fac_tracking_oms, CHR (10), INSTR (fac_tracking_oms, 'Totaal ex. BTW:')), 0, 10000, INSTR (fac_tracking_oms, CHR (10), INSTR (fac_tracking_oms, 'Totaal ex. BTW:'))) - INSTR (fac_tracking_oms, 'Totaal ex. BTW:')) oud_nieuw, TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy') datum, prs_bedrijf_naam leverancier, prs_perslid_naam_full persoon FROM fac_tracking t, mld_opdr o, mld_melding m, mld_stdmelding std, ins_tab_discipline d, prs_v_perslid_fullnames_all pf, prs_bedrijf b WHERE fac_tracking_oms LIKE '%Totaal ex. BTW:%' AND t.fac_tracking_refkey = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND t.prs_perslid_key = pf.prs_perslid_key(+) AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND t.fac_tracking_datum BETWEEN mld.getopdrachtstatusdate ( o.mld_opdr_key, 6) -- afgemeld AND COALESCE ( mld.getopdrachtstatusdate ( o.mld_opdr_key, 9), -- afgerond SYSDATE); CREATE OR REPLACE VIEW aaxx_v_rap_bedrijf_orderadres ( fclt_f_bedrijf, fclt_f_plaats, fclt_f_nummer, fclt_f_email, fclt_f_kanaal, fclt_f_type, fclt_f_orderadres, stylesheet, afzender_adres, reply_adres, gedeelde_gebruiker, gedeelde_geheim, gedeelde_geheim_dagen, bijlagen_meesturen, bijlage_vast, district, locatie, relatietype ) AS SELECT b.prs_bedrijf_naam, b.prs_bedrijf_bezoek_plaats, b.prs_leverancier_nr, b.prs_bedrijf_email, a.prs_bedrijfadres_type, DECODE (a.prs_bedrijfadres_type, 'C', 'Contract', 'B', 'Bestelling', 'Opdracht') || ' ' || ot.mld_typeopdr_omschrijving TYPE, a.prs_bedrijfadres_url, a.prs_bedrijfadres_xsl, a.prs_bedrijfadres_sender, a.prs_bedrijfadres_replyaddress, (SELECT p.prs_perslid_naam || ' (' || TO_CHAR(p.prs_perslid_key) || ')' FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = a.prs_bedrijfadres_lockuser_key) gedeelde_gebruiker, a.prs_bedrijfadres_locksecret, a.prs_bedrijfadres_lockexpire, DECODE( CASE WHEN a.prs_bedrijfadres_flexfiles = 0 THEN fac.getsetting ('puo_order_flexfiles') ELSE TO_CHAR(a.prs_bedrijfadres_flexfiles) END, '1', 'ja', 'nee') -- 2 = nee, 1 = ja, 0 = standaard bijlage_vast, a.prs_bedrijfadres_attachfile, d.alg_district_omschrijving, CASE WHEN l.alg_locatie_code IS NULL THEN '' ELSE l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')' END locatie, (SELECT r.prs_relatietype_omschrijving FROM prs_relatietype r WHERE r.prs_relatietype_key = b.prs_relatietype_key) relatietype FROM prs_bedrijf b, prs_bedrijfadres a, mld_typeopdr ot, alg_locatie l, alg_district d WHERE b.prs_bedrijf_key = a.prs_bedrijf_key AND b.prs_bedrijf_verwijder IS NULL AND NVL (b.prs_bedrijf_intern, 0) <> 1 AND a.mld_typeopdr_key = ot.mld_typeopdr_key(+) AND a.alg_locatie_key = l.alg_locatie_key(+) AND a.alg_district_key = d.alg_district_key(+) ; -- view om offertestatus in dashbord te tonen -- functionaliteit overgenomen uit mld.inc CREATE OR REPLACE VIEW aaxx_v_rap_offerte_status AS SELECT m.melder_key, m.melder, u.*, g.prs_perslid_key_verantw opdracht_gebouw_verantw_key, m.kostensoort kostensoort, subproductgroepgroep, DECODE ( COALESCE (na.aantal, 0), 1, 'Offerte geaccepteerd', DECODE (COALESCE (nta.aantal, 0), 0, 'Niet opgelost', 'Offerte acceptatie')) offerte_status, (CASE WHEN mo.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || mo.mld_opdr_flag) ELSE '' END) vlag, (SELECT ok.waarde_n FROM mld_v_udr_opdrachtkenmerk_cnd ok WHERE ok.opdracht_key = u.opdracht_key AND ok.kenmerk = 'Offerte bedrag' ) Offertebedrag,-- Op naam 'Offerte bedrag' ipv Key ivm gebruik afwijkende keys in de diverse HeyDayomgevingen (SELECT fac.safe_to_number(kw.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER' AND sk.mld_srtkenmerk_kenmerktype = 'S') projectleider_key, (SELECT p.prs_perslid_naam FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk, prs_perslid p WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER' AND sk.mld_srtkenmerk_kenmerktype = 'S' AND fac.safe_to_number (kw.mld_kenmerkmelding_waarde) = p.prs_perslid_key) projectleider FROM mld_v_udr_opdracht u, mld_opdr mo, alg_gebouw g, mld_v_udr_melding m, ins_tab_discipline d, ( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal FROM mld_opdr o WHERE o.mld_statusopdr_key = 6 AND o.mld_opdr_key > COALESCE ( (SELECT MAX (o1.mld_opdr_key) FROM mld_opdr o1, mld_typeopdr mo1 WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key AND mo1.mld_typeopdr_isofferte = 0 AND o1.mld_melding_key = o.mld_melding_key), 0) GROUP BY o.mld_melding_key) nta, ( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal FROM mld_opdr o WHERE o.mld_statusopdr_key = 9 AND o.mld_opdr_key > COALESCE ( (SELECT MAX (o1.mld_opdr_key) FROM mld_opdr o1, mld_typeopdr mo1 WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key AND mo1.mld_typeopdr_isofferte = 0 AND o1.mld_melding_key = o.mld_melding_key), 0) GROUP BY o.mld_melding_key) na WHERE u.opdracht_gebouwcode = g.alg_gebouw_code AND u.melding_key = m.melding_key AND u.opdracht_key = mo.mld_opdr_key AND m.fclt_3d_discipline_key = d.ins_discipline_key AND d.ins_discipline_verwijder IS NULL AND u.melding_key = na.mld_melding_key(+) AND u.melding_key = nta.mld_melding_key(+) AND (u.opdracht_type = 'RFQ' OR u.opdracht_type = 'Project RFQ') ; CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitvoerder ( fclt_x_fm, fclt_x_tfm, html_opdracht, fclt_f_district, fclt_f_locatie, fclt_f_gebouw, fclt_f_bedrijf, opdracht_omschrijving, einddatum, t, m, e, notitie_datum, notitie_omschrijving ) AS SELECT COALESCE (p.prs_perslid_naam_full, 'Onbekend') fmer, -- verantwoordelijke FMer COALESCE ( (SELECT fac.getdomeinwaarde (fac_kenmerkdomein_key, alg_onrgoedkenmerk_waarde) FROM alg_kenmerk k, alg_onrgoedkenmerk ogk WHERE k.alg_kenmerk_key = ogk.alg_kenmerk_key AND ogk.alg_onrgoed_key = g.alg_gebouw_key AND k.alg_kenmerk_key = DECODE (aaxx_get_user, 'SABIC', 1180, -1)), 'Onbekend' ) tfmer, -- verantwoordelijke Technisch FMer '' || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr || '' opdracht, d.alg_district_omschrijving, l.alg_locatie_omschrijving, g.alg_gebouw_code||'-'||g.alg_gebouw_naam, prs_bedrijf_naam, mld_opdr_omschrijving, mld_opdr_einddatum, (SELECT COUNT ( * ) FROM mld_opdr_note n3 WHERE n3.mld_opdr_key = o.mld_opdr_key AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#T%') nt, (SELECT COUNT ( * ) FROM mld_opdr_note n3 WHERE n3.mld_opdr_key = o.mld_opdr_key AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#M%') nm, (SELECT COUNT ( * ) FROM mld_opdr_note n3 WHERE n3.mld_opdr_key = o.mld_opdr_key AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#E%') ne, lastnote.mld_opdr_note_aanmaak, lastnote.mld_opdr_note_omschrijving omschrijving FROM mld_opdr o, mld_melding m, mld_stdmelding std, prs_bedrijf b, alg_v_onroerendgoed alg, alg_gebouw g, alg_locatie l, alg_district d, prs_v_perslid_fullnames_all p, (SELECT n.mld_opdr_key, mld_opdr_note_aanmaak, mld_opdr_note_omschrijving FROM mld_opdr_note n WHERE ( UPPER (n.mld_opdr_note_omschrijving) LIKE '%#T%' OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#M%' OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#E%') AND NOT EXISTS (SELECT mld_opdr_note_key FROM mld_opdr_note n2 WHERE n2.mld_opdr_note_aanmaak > n.mld_opdr_note_aanmaak AND n2.mld_opdr_key = n.mld_opdr_key)) note, (SELECT n.mld_opdr_key, mld_opdr_note_aanmaak, mld_opdr_note_omschrijving FROM mld_opdr_note n WHERE NOT EXISTS (SELECT mld_opdr_note_key FROM mld_opdr_note n2 WHERE n2.mld_opdr_note_aanmaak > n.mld_opdr_note_aanmaak AND n2.mld_opdr_key = n.mld_opdr_key)) lastnote WHERE o.mld_opdr_einddatum < SYSDATE AND o.mld_opdr_key = note.mld_opdr_key(+) AND o.fac_activiteit_key IS NULL AND o.mld_opdr_key = lastnote.mld_opdr_key(+) AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_stdmelding_slabewaken = 1 AND o.mld_statusopdr_key IN (5, 8) -- Toegekend + Geaccepteerd AND b.prs_bedrijf_key = o.mld_uitvoerende_keys AND m.mld_melding_key = o.mld_melding_key AND g.prs_perslid_key_verantw = p.prs_perslid_key(+) AND m.mld_alg_onroerendgoed_keys = alg.alg_onroerendgoed_keys AND alg.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key AND (note.mld_opdr_note_aanmaak IS NULL OR note.mld_opdr_note_aanmaak < SYSDATE - 7); CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitv_z_tfm ( fclt_x_fm, html_opdracht, fclt_f_district, fclt_f_locatie, fclt_f_gebouw, fclt_f_bedrijf, opdracht_omschrijving, einddatum, t, m, e, notitie_datum, notitie_omschrijving ) AS SELECT fclt_x_fm, html_opdracht, fclt_f_district, fclt_f_locatie, fclt_f_gebouw, fclt_f_bedrijf, opdracht_omschrijving, einddatum, t, m, e, notitie_datum, notitie_omschrijving FROM aaxx_v_rap_trace_uitvoerder; /* Formatted on 19-7-2016 18:06:24 (QP5 v5.136.908.31019) */ CREATE OR REPLACE VIEW aaxx_v_rap_catering_export ( reservering, fclt_f_afdelingscode, afdelings_omschrijving, boekingsdatum, afmelddatum, fclt_f_periode, aanvrager, gebouw, aantal, artikel, btw, totaal ) AS SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr reservering, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, rra.res_rsv_artikel_levering, rra.res_rsv_artikel_afgemeld, TO_CHAR (ADD_MONTHS (rra.res_rsv_artikel_verwerkt, -1), 'yyyy-mm') periode, pf.prs_perslid_naam_full, g.alg_gebouw_code, rra.res_rsv_artikel_aantal, ra.res_artikel_omschrijving, ra.res_artikel_btw, rra.res_rsv_artikel_prijs FROM res_rsv_artikel rra, res_rsv_ruimte rrr, prs_kostenplaats k, prs_perslid p, alg_gebouw g, prs_afdeling a, prs_v_perslid_fullnames_all pf, res_artikel ra, ( SELECT res_rsv_ruimte_key, MAX (alg_gebouw_key) alg_gebouw_key FROM (SELECT rrr.res_rsv_ruimte_key, (SELECT alg_gebouw_key FROM alg_verdieping v, alg_ruimte r WHERE v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = COALESCE (r2ar.alg_ruimte_key, rrr.alg_ruimte_key)) alg_gebouw_key FROM res_v_rsv_ruimte_2_alg_ruimte r2ar, res_v_aanwezigrsv_ruimte rrr WHERE rrr.res_rsv_ruimte_key = r2ar.res_rsv_ruimte_key(+)) GROUP BY res_rsv_ruimte_key) rg WHERE rra.res_status_bo_key = 6 AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_perslid_key = pf.prs_perslid_key AND rra.res_artikel_key = ra.res_artikel_key AND rrr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key AND rg.alg_gebouw_key = g.alg_gebouw_key(+); CREATE OR REPLACE VIEW aaxx_v_rap_login_user (hide_f_datum, fclt_d_datum, aantal) AS SELECT trunc(sysdate)-trunc(pl.login_datum), TO_CHAR (pl.login_datum, 'dd-mm-yyyy'), COUNT (prs_perslid_key) FROM aaxx_perslid_login pl GROUP BY trunc(sysdate)-trunc(pl.login_datum), TO_CHAR (pl.login_datum, 'dd-mm-yyyy'); CREATE OR REPLACE VIEW aaxx_v_rap_errorlog ( HIDE_F_IMP_LOG_DATUM, FCLT_F_APPLICATIE, FCLT_F_DATUM, TIJDSTIP, FCLT_F_NIVEAU, FCLT_F_OMSCHRIJVING, FCLT_F_HINT ) AS SELECT imp_log_datum hide_f_imp_log_datum, imp_log_applicatie, TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum, TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip, DECODE (imp_log_status, 'F', 'Fataal', 'E', 'Error', 'W', 'Waarschuwing', 'I', 'Informatief', '-') fclt_f_niveau, imp_log_omschrijving fclt_f_omschrijving, imp_log_hint fclt_f_hint FROM imp_log; CREATE OR REPLACE VIEW aaxx_v_rap_lang_stdmelding_oms ( key, vakgroeptype, vakgroep, melding_omschrijving, en, de ) AS SELECT mld_stdmelding_key, ins_srtdiscipline_prefix, ins_discipline_omschrijving, mld_stdmelding_omschrijving, (SELECT fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING' AND fac_locale_lang = 'EN' AND fac_locale_kolomkeyval = std.mld_stdmelding_key) EN, (SELECT fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING' AND fac_locale_lang = 'DE' AND fac_locale_kolomkeyval = std.mld_stdmelding_key) DE FROM ins_tab_discipline d, mld_stdmelding std, ins_srtdiscipline sd WHERE d.ins_discipline_key = std.mld_ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) AND ins_discipline_verwijder IS NULL AND mld_stdmelding_verwijder IS NULL; CREATE OR REPLACE VIEW aaxx_v_rap_lang_discipline_oms ( key, fclt_f_module, vakgroeptype, vakgroep, en, de ) AS SELECT ins_discipline_key, ins_discipline_module, ins_srtdiscipline_prefix, ins_discipline_omschrijving, (SELECT fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING' AND fac_locale_lang = 'EN' AND fac_locale_kolomkeyval = d.ins_discipline_key) EN, (SELECT fac_locale_tekst FROM fac_locale WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING' AND fac_locale_lang = 'DE' AND fac_locale_kolomkeyval = d.ins_discipline_key) DE FROM ins_tab_discipline d, ins_srtdiscipline sd WHERE d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) AND ins_discipline_verwijder IS NULL; ------------------------------------------------------------------------------- -- IMPORTFUNCTIE - MLD_LANG ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaxx_import_mld_lang ( 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); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_skipfield VARCHAR2 (100); v_dummy VARCHAR2 (1000); -- De importvelden v_vakgroeptype_nl VARCHAR2 (200); v_vakgroeptype_prefix VARCHAR2 (200); v_vakgroep_nl VARCHAR2 (200); v_stdmelding_nl VARCHAR2 (200); v_stdmelding_hint_nl VARCHAR2 (4000); v_vakgroeptype_en VARCHAR2 (200); v_vakgroep_en VARCHAR2 (200); v_stdmelding_en VARCHAR2 (200); v_stdmelding_hint_en VARCHAR2 (4000); header_found BOOLEAN; BEGIN -- Init header_found := FALSE; v_fielddelimitor := ';'; -- Clear my previous imported rows DELETE FROM aaxx_imp_mld_lang; FOR rec1 IN c_cursor LOOP BEGIN v_newline := rec1.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; --vakgroeptype NL;prefix;plaatsgegevens;objectgegevens;bestelgegevens;vakgroep NL;melding NL;aanwijzingen (NL) fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_nl); fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_prefix); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_nl); fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_nl); fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_nl); -- ;groep;kostensoort;acceptatietijd;uitvoertijd;uitvoertijd kritiek;uitvoertijd hoog;uitvoertijd laag;streeftijd;directklaar;dienst;Vakgroeptype EN;vakgroep EN;melding EN;aanwijzingen EN; fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_en); fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_en); fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_en); fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_en); -- Skip until a valid header is found IF UPPER (v_vakgroeptype_nl) = 'VAKGROEPTYPE NL' AND UPPER (v_vakgroeptype_prefix) = 'PREFIX' AND UPPER (v_vakgroep_nl) = 'VAKGROEP NL' AND UPPER (v_stdmelding_nl) = 'MELDING NL' AND UPPER (v_stdmelding_hint_nl) = 'AANWIJZINGEN (NL)' AND UPPER (v_vakgroeptype_en) = 'VAKGROEPTYPE EN' AND UPPER (v_vakgroep_en) = 'VAKGROEP EN' AND UPPER (v_stdmelding_en) = 'MELDING EN' AND UPPER (v_stdmelding_hint_en) = 'AANWIJZINGEN EN' THEN -- Sla de kopregel over. header_found := TRUE; ELSIF (header_found) THEN INSERT INTO aaxx_imp_mld_lang ( ins_srtdiscipline_omschrijving, ins_srtdiscipline_prefix, ins_discipline_omschrijving, mld_stdmelding_omschrijving, mld_stdmelding_hint, ins_srtdiscipline_omschr_en, ins_discipline_omschrijving_en, mld_stdmelding_omschrijving_en, mld_stdmelding_hint_en) VALUES (SUBSTR (v_vakgroeptype_nl, 1, 30), SUBSTR (v_vakgroeptype_prefix, 1, 3), SUBSTR (v_vakgroep_nl, 1, 30), SUBSTR (v_stdmelding_nl, 1, 60), SUBSTR (v_stdmelding_hint_nl, 1, 1000), SUBSTR (v_vakgroeptype_en, 1, 30), SUBSTR (v_vakgroep_en, 1, 30), SUBSTR (v_stdmelding_en, 1, 60), SUBSTR (v_stdmelding_hint_en, 1, 1000)); ELSE -- geen geldige header aangetroffen IF rec1.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'I', 'Aangetroffen header', SUBSTR( v_vakgroeptype_nl || '-1-' || v_vakgroeptype_prefix || '-2-' || v_vakgroep_nl || '-3-' || v_stdmelding_nl || '-4-' || v_stdmelding_hint_nl || '-5-' || v_vakgroeptype_en || '-6-' || v_vakgroep_en || '-7-' || v_stdmelding_en || '-8-' || v_stdmelding_hint_en,1,1000)); END IF; END IF; COMMIT; END; END LOOP; IF NOT header_found THEN fac.imp_writelog ( p_import_key, 'E', 'Geen geldige header aangetroffen', 'Bestand is geen geldig MLD vertaling importbestand.'); END IF; 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.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), ''); -- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden. DELETE FROM aaxx_imp_mld_lang; END; / CREATE OR REPLACE PROCEDURE aaxx_update_mld_lang ( p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM aaxx_imp_mld_lang WHERE ins_srtdiscipline_omschrijving IS NOT NULL; v_srtdiscipline_key NUMBER; v_discipline_key NUMBER; v_stdmelding_key NUMBER; v_errormsg VARCHAR (1000); v_error_hint VARCHAR (1000); v_tekst VARCHAR (300); oracle_err_mes VARCHAR2 (150); oracle_err_num VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; PROCEDURE update_locale(p_kolom IN VARCHAR2, p_key IN NUMBER, p_lang IN VARCHAR, p_value IN VARCHAR) AS BEGIN BEGIN SELECT fac_locale_tekst INTO v_tekst FROM fac_locale WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom) AND fac_locale_kolomkeyval = p_key AND UPPER(fac_locale_lang) = UPPER(p_lang); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO fac_locale (fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_lang, fac_locale_tekst) VALUES (p_key, UPPER(p_kolom), UPPER(p_lang), SUBSTR(p_value,1,300)); RETURN; END; UPDATE fac_locale SET fac_locale_tekst = SUBSTR(p_value,1,300) WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom) AND fac_locale_kolomkeyval = p_key AND UPPER(fac_locale_lang) = UPPER(p_lang); RETURN; END; BEGIN SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog ( p_import_key, 'I', 'AA-FM Melding vertaling import version ' || currentversion, '$Revision$'); FOR rec IN c LOOP BEGIN v_errormsg := 'Kan srtdiscipline [' || rec.ins_srtdiscipline_omschrijving || '] niet vinden.'; SELECT ins_srtdiscipline_key INTO v_srtdiscipline_key FROM ins_srtdiscipline WHERE ins_srtdiscipline_verwijder IS NULL AND TRIM(UPPER (ins_srtdiscipline_omschrijving)) = TRIM(UPPER (rec.ins_srtdiscipline_omschrijving)); v_errormsg := 'Kan discipline [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '] niet vinden.'; SELECT ins_discipline_key INTO v_discipline_key FROM ins_tab_discipline WHERE ins_discipline_verwijder IS NULL AND ins_srtdiscipline_key = v_srtdiscipline_key AND TRIM(UPPER (ins_discipline_omschrijving)) = TRIM(UPPER (rec.ins_discipline_omschrijving)); v_errormsg := 'Kan stdmelding [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '-' || rec.mld_stdmelding_omschrijving || '] niet vinden.'; SELECT mld_stdmelding_key INTO v_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_verwijder IS NULL AND mld_ins_discipline_key = v_discipline_key AND TRIM(UPPER (mld_stdmelding_omschrijving)) = TRIM(UPPER (rec.mld_stdmelding_omschrijving)); UPDATE mld_stdmelding SET mld_stdmelding_hint = rec.mld_stdmelding_hint WHERE mld_stdmelding_key = v_stdmelding_key; update_locale('INS_SRTDISCIPLINE_OMSCHRIJVING', v_srtdiscipline_key, 'EN', rec.ins_srtdiscipline_omschr_en); update_locale('INS_DISCIPLINE_OMSCHRIJVING', v_discipline_key, 'EN', rec.ins_discipline_omschrijving_en); update_locale('MLD_STDMELDING_OMSCHRIJVING', v_stdmelding_key, 'EN', rec.mld_stdmelding_omschrijving_en); update_locale('MLD_STDMELDING_HINT', v_stdmelding_key, 'EN', rec.mld_stdmelding_hint_en); COMMIT; EXCEPTION WHEN OTHERS THEN v_error_hint := v_errormsg; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_error_hint); COMMIT; END; END LOOP; END; / ------------------------------------------------------------------------------- -- RAPPORTAGES Projecturen -- AAIT#22843 en AADS#22701 ------------------------------------------------------------------------------- -- Alle project-meldingen (srtdisc_key = 1) CREATE OR REPLACE VIEW aaxx_v_project_boom_nodes AS SELECT vt.ins_srtdiscipline_prefix, m.mld_melding_key, m.mld_melding_start_key, vg.ins_discipline_omschrijving, sm.mld_stdmelding_omschrijving, m.mld_melding_status FROM mld_melding m, mld_stdmelding sm, mld_discipline vg, ins_srtdiscipline vt WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key AND vg.ins_discipline_key = sm.mld_ins_discipline_key AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key AND vt.ins_srtdiscipline_omschrijving = 'Project'; -- Boomstructuur van projectmeldingen (vgl prs_v_afdelingsboom) CREATE OR REPLACE VIEW aaxx_v_project_boom ( niveau, mld_melding_key, mld_melding_key1, mld_melding_key2, mld_melding_key3, mld_melding_key4 ) AS SELECT '1' Niveau, m1.mld_melding_key, m1.mld_melding_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM aaxx_v_project_boom_nodes m1 WHERE m1.mld_melding_start_key IS NULL AND m1.mld_melding_status IN (2, 3, 4, 7) UNION SELECT '2' Niveau, m2.mld_melding_key, m1.mld_melding_key, m2.mld_melding_key, TO_NUMBER (NULL), TO_NUMBER (NULL) FROM aaxx_v_project_boom_nodes m1, aaxx_v_project_boom_nodes m2 WHERE m2.mld_melding_start_key = m1.mld_melding_key AND m1.mld_melding_start_key IS NULL AND m2.mld_melding_status IN (2, 3, 4, 7) UNION SELECT '3' Niveau, m3.mld_melding_key, m1.mld_melding_key, m2.mld_melding_key, m3.mld_melding_key, TO_NUMBER (NULL) FROM aaxx_v_project_boom_nodes m1, aaxx_v_project_boom_nodes m2, aaxx_v_project_boom_nodes m3 WHERE m3.mld_melding_start_key = m2.mld_melding_key AND m2.mld_melding_start_key = m1.mld_melding_key AND m1.mld_melding_start_key IS NULL AND m3.mld_melding_status IN (2, 3, 4, 7) UNION SELECT '4' Niveau, m4.mld_melding_key, m1.mld_melding_key, m2.mld_melding_key, m3.mld_melding_key, m4.mld_melding_key FROM aaxx_v_project_boom_nodes m1, aaxx_v_project_boom_nodes m2, aaxx_v_project_boom_nodes m3, aaxx_v_project_boom_nodes m4 WHERE m4.mld_melding_start_key = m3.mld_melding_key AND m3.mld_melding_start_key = m2.mld_melding_key AND m2.mld_melding_start_key = m1.mld_melding_key AND m1.mld_melding_start_key IS NULL AND m4.mld_melding_status IN (2, 3, 4, 7); -- Rapportageview CREATE OR REPLACE VIEW aaxx_v_rap_projectboom AS SELECT pb.mld_melding_key1||pb.mld_melding_key2||pb.mld_melding_key3||pb.mld_melding_key4||'/'||o.mld_opdr_bedrijfopdr_volgnr hide_f_srt, pbn.ins_srtdiscipline_prefix || pb.mld_melding_key1 fclt_f_hoofdproject, CASE WHEN pb.mld_melding_key2 IS NULL THEN NULL ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key2 END deelproject1, CASE WHEN pb.mld_melding_key3 IS NULL THEN NULL ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key3 END deelproject2, CASE WHEN pb.mld_melding_key4 IS NULL THEN NULL ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key4 END deelproject3, m.mld_melding_key hide_f_melding_key, km.mld_kenmerkmelding_waarde fclt_f_projectnaam, '' || pbn.ins_srtdiscipline_prefix || m.mld_melding_key || '' html_meldingnr, pf.prs_perslid_naam_full fclt_x_projectmedewerker, CASE WHEN o.mld_opdr_bedrijfopdr_volgnr IS NULL THEN NULL ELSE '' || htf.escape_sc(pf.prs_perslid_naam_full) || '' END html_projectmedewerker, so.mld_statusopdr_omschrijving statusopdr, o.mld_opdr_uren weekplanning, (SELECT SUM (mld_opdr_uren_besteed) FROM mld_opdr_uren WHERE mld_opdr_key = o.mld_opdr_key) uren_besteed FROM aaxx_v_project_boom pb, aaxx_v_project_boom_nodes pbn, mld_melding m, (SELECT * FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 55) km, (SELECT * FROM mld_opdr WHERE mld_typeopdr_key = 7) o, mld_statusopdr so, prs_v_perslid_fullnames_all pf WHERE m.mld_melding_key = pb.mld_melding_key AND pbn.mld_melding_key = pb.mld_melding_key AND km.mld_melding_key(+) = m.mld_melding_key AND o.mld_melding_key(+) = m.mld_melding_key AND pf.prs_perslid_key(+) = o.mld_uitvoerende_keys AND so.mld_statusopdr_key(+) = o.mld_statusopdr_key AND o.mld_statusopdr_key(+) != 1; -- rapportage tbv SAS70. Verificatie van kosten in FACILITOR tov de BudgetTracker. CREATE OR REPLACE PACKAGE AAXX_RAP AS TYPE t_cursor IS REF CURSOR; PROCEDURE kostenoverzicht (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); END; / CREATE OR REPLACE PACKAGE BODY AAXX_RAP AS -- --Rapportages -- PROCEDURE kostenoverzicht (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; v_alg_level_read NUMBER; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT soort, (SELECT prs_kostensoort_oms FROM prs_kostensoort ks WHERE v.prs_kostensoort_key = ks.prs_kostensoort_key) kostensoort, (SELECT prs_kostenplaats_omschrijving FROM prs_kostenplaats kp WHERE v.prs_kostenplaats_key = kp.prs_kostenplaats_key) kostenplaats, (SELECT g.alg_gebouw_code||'-'||g.alg_gebouw_naam FROM alg_gebouw g WHERE v.alg_gebouw_key = g.alg_gebouw_key) gebouw, SUM (opdr_kosten) opdr_kosten, SUM (fin_factuur_totaal) fin_kosten FROM (SELECT 'Opdracht' soort, prs_kostensoort_key, prs_kostenplaats_key, alg_gebouw_key, opdr_kosten, fin_factuur_totaal FROM ( SELECT COALESCE ( f.prs_kostensoort_key, COALESCE (std.prs_kostensoort_key, d.prs_kostensoort_key)) prs_kostensoort_key, o.prs_kostenplaats_key, alg_gebouw_key, o.mld_opdr_kosten opdr_kosten, SUM (f.fin_factuur_totaal) fin_factuur_totaal FROM mld_opdr o, mld_typeopdr t, mld_melding m, mld_stdmelding std, ins_tab_discipline d, aaxx_v_aanwezigfactuur f, alg_v_onroerendgoed_gegevens og WHERE o.mld_typeopdr_key = t.mld_typeopdr_key AND t.mld_typeopdr_omschrijving = 'Workorder' AND o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND o.mld_opdr_key = f.mld_opdr_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND o.mld_opdr_datumbegin BETWEEN v_datum_van AND v_datum_tot GROUP BY f.prs_kostensoort_key, std.prs_kostensoort_key, d.prs_kostensoort_key, o.prs_kostenplaats_key, alg_gebouw_key, o.mld_opdr_kosten UNION ALL SELECT COALESCE (f.prs_kostensoort_key, d.prs_kostensoort_key) prs_kostensoort_key, k.prs_kostenplaats_key, g.alg_gebouw_key, (SELECT SUM(bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs) FROM bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key) opdr_prijs, SUM (f.fin_factuur_totaal) FROM bes_bestelling b, prs_kostenplaats k, aaxx_v_aanwezigfactuur f, mld_adres ma, bes_bestelopdr bo, ins_tab_discipline d, alg_gebouw g, alg_locatie l, (SELECT DISTINCT bes_bestelling_key, bes_bestelopdr_key FROM bes_bestelling_item bi, bes_bestelopdr_item boi WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key) bes_opdr, (SELECT DISTINCT bes_bestelling_key, ins_discipline_key FROM bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key) cat, ( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key FROM (SELECT ma.mld_adres_key, DECODE ( aaxx_get_user, 'AH', DECODE (ma.mld_adres_key, 101, 280, alg_gebouw_key), alg_gebouw_key) alg_gebouw_key FROM alg_gebouw g FULL OUTER JOIN mld_adres ma ON g.mld_adres_key = ma.mld_adres_key) WHERE alg_gebouw_key IS NOT NULL GROUP BY mld_adres_key) adr_geb WHERE b.prs_kostenplaats_key = k.prs_kostenplaats_key AND b.mld_adres_key_lev = ma.mld_adres_key AND b.bes_bestelling_key = bes_opdr.bes_bestelling_key(+) AND bes_opdr.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+) AND b.bes_bestelling_key = cat.bes_bestelling_key AND cat.ins_discipline_key = d.ins_discipline_key AND ma.mld_adres_key = adr_geb.mld_adres_key(+) AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+) AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+) AND bo.bes_bestelopdr_datum BETWEEN v_datum_van AND v_datum_tot GROUP BY f.prs_kostensoort_key, d.prs_kostensoort_key, k.prs_kostenplaats_key, g.alg_gebouw_key, bo.bes_bestelopdr_key) UNION ALL SELECT 'Contract', d.prs_kostensoort_key, c.prs_kostenplaats_key, g.alg_gebouw_key, DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, TO_NUMBER (NULL), COALESCE ( (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht) * c.cnt_contract_kosten, TO_NUMBER (NULL))) opdr_kosten, COALESCE ( DECODE ( cnt_gew.cnt_contract_plaats_gewicht, 0, 1, (cp.cnt_contract_plaats_gewicht / cnt_gew.cnt_contract_plaats_gewicht)) * fin.fin_factuur_totaal, NULL) fin_factuur_totaal FROM cnt_contract c, cnt_contract_plaats cp, ins_tab_discipline d, alg_locatie l, alg_gebouw g, ( SELECT cnt_contract_key, SUM (fin_factuur_totaal) fin_factuur_totaal FROM aaxx_v_aanwezigfactuur f WHERE f.fin_factuur_datum BETWEEN v_datum_van AND v_datum_tot GROUP BY cnt_contract_key) fin, ( SELECT cnt_contract_key, SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht FROM cnt_contract_plaats WHERE cnt_contract_plaats_verwijder IS NULL GROUP BY cnt_contract_key) cnt_gew, (SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp WHERE aog.alg_type = cp.cnt_alg_plaats_code AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog WHERE c.ins_discipline_key = d.ins_discipline_key AND c.cnt_contract_key = cp.cnt_contract_key(+) AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+) AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+) AND c.cnt_contract_verwijder IS NULL AND cp.cnt_contract_plaats_verwijder IS NULL AND cog.alg_locatie_key = l.alg_locatie_key(+) AND cog.alg_gebouw_key = g.alg_gebouw_key(+) AND c.cnt_contract_key = fin.cnt_contract_key(+) AND (v_datum_van BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot OR v_datum_tot BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot)) v GROUP BY soort, prs_kostensoort_key, prs_kostenplaats_key, alg_gebouw_key; END; END; / -- VIEWS tbv RealTimeMonitor CREATE OR REPLACE VIEW aaxx_v_graph_meldingpm ( FCLT_XAS_, FCLT_YAS_, VOLGORDE ) AS SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5), '01', 'Januari', '02', 'Februari', '03', 'Maart', '04', 'April', '05', 'Mei', '06', 'Juni', '07', 'Juli', '08', 'Augustus', '09', 'September', '10', 'Oktober', '11', 'November', 'December'), COUNT (d.ins_discipline_omschrijving), TO_CHAR (mld_melding_datum, 'yyyymm') FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d WHERE mld_melding_datum BETWEEN ADD_MONTHS ( TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd'), -11) AND SYSDATE AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm'); CREATE OR REPLACE VIEW aaxx_v_graph_openst_behand ( FCLT_XAS_, FCLT_YAS_, FCLT_YAS2_OP_TIJD ) AS SELECT COALESCE (behandelaar, 'Onbekend') behandelaar, COUNT (mld_key) - SUM (uitvoeringoptijd) totaal, SUM (uitvoeringoptijd) op_tijd FROM (SELECT DISTINCT m.mld_melding_key mld_key, CASE WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL THEN CASE SIGN(fac.datumtijdplusuitvoertijd ( m.mld_melding_datum, m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid) - COALESCE ( fac.gettrackingdate ('MLDREJ', m.mld_melding_key), fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE)) WHEN -1 THEN 0 ELSE 1 END ELSE 1 END uitvoeringoptijd, DECODE ( mld_melding_status, 7, (SELECT MAX (prs_bedrijf_naam) FROM mld_opdr o, prs_bedrijf b WHERE o.mld_melding_key = m.mld_melding_key AND O.MLD_UITVOERENDE_KEYS = b.prs_bedrijf_key AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd 4, COALESCE ( (SELECT MAX (prs_bedrijf_naam) FROM mld_opdr o, prs_bedrijf b WHERE o.mld_melding_key = m.mld_melding_key AND O.MLD_UITVOERENDE_KEYS = b.prs_bedrijf_key AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = M.MLD_MELDING_BEHANDELAAR_KEY)), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = M.MLD_MELDING_BEHANDELAAR_KEY)) behandelaar FROM mld_melding m, mld_discipline md, prs_perslid p, mld_stdmelding std WHERE m.prs_perslid_key = p.prs_perslid_key AND md.ins_discipline_key = std.mld_ins_discipline_key AND std.mld_stdmelding_key = m.mld_stdmelding_key AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22)) -- IT GROUP BY behandelaar; CREATE OR REPLACE VIEW aaxx_v_graph_ppi_acc (FCLT_XAS_, FCLT_YAS_) AS SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal FROM (SELECT DISTINCT m.mld_melding_key mld_key, CASE SIGN(fac.datumtijdplusuitvoertijd ( fac.gettrackingdate ('MLDNEW', m.mld_melding_key), std.mld_stdmelding_t_accepttijd.tijdsduur, std.mld_stdmelding_t_accepttijd.eenheid) - COALESCE ( fac.gettrackingdate ('MLDREJ', m.mld_melding_key), fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE)) WHEN -1 THEN 0 ELSE 1 END acceptoptijd FROM mld_melding m, mld_discipline md, mld_stdmelding std WHERE md.ins_discipline_key = std.mld_ins_discipline_key AND std.mld_stdmelding_key = m.mld_stdmelding_key AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk AND mld_melding_status IN (2, 3) -- 2-ingevoerd, 3-ingezien ); CREATE OR REPLACE VIEW aaxx_v_graph_ppi_uitv ( FCLT_XAS_, FCLT_YAS_ ) AS SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal FROM (SELECT DISTINCT m.mld_melding_key mld_key, CASE WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL THEN CASE SIGN(fac.datumtijdplusuitvoertijd ( m.mld_melding_datum, m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid) - COALESCE ( fac.gettrackingdate ('MLDREJ', m.mld_melding_key), fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE)) WHEN -1 THEN 0 ELSE 1 END ELSE 1 END uitvoeringoptijd FROM mld_melding m, mld_discipline md, mld_stdmelding std WHERE md.ins_discipline_key = std.mld_ins_discipline_key AND std.mld_stdmelding_key = m.mld_stdmelding_key AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending ); CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_afg ( fclt_xas_, fclt_yas_, fclt_url, fclt_3d_discipline_key ) AS SELECT d.ins_discipline_omschrijving, COUNT (d.ins_discipline_omschrijving), 'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str=', d.ins_discipline_key FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, fac_srtnotificatie sn, fac_tracking t WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk AND t.fac_tracking_refkey = mld_melding_key AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFM' AND t.fac_tracking_datum > SYSDATE - 30 GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving; CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_open ( FCLT_XAS_, FCLT_YAS_, FCLT_URL, FCLT_3D_DISCIPLINE_KEY ) AS SELECT d.ins_discipline_omschrijving, COUNT (d.ins_discipline_omschrijving), 'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str=' || d.ins_discipline_key, d.ins_discipline_key FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending AND ( (aaxx_get_user = 'GN' AND d.ins_srtdiscipline_key = 5) -- Storingen OR (aaxx_get_user = 'IT' AND d.ins_srtdiscipline_key = 22) -- IT helpdesk OR (aaxx_get_user <> 'GN' AND aaxx_get_user <> 'IT') ) GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving ORDER BY COUNT (d.ins_discipline_omschrijving) DESC; -- -- Notificatie jobs -- -- AAES#25128: BEZMUT-notificatie ook naar bezoeker sturen. -- Wat te doen om dit aan te zetten: -- Notificatiejob AAXX_V_NOTI_BEZOEKERS -- Stylesheet aanpassen -- Key van het kenmerk email hieronder invullen CREATE OR REPLACE VIEW aaxx_v_noti_bezoekers ( sender, receiver, text, code, fac_srtnotificatie_key, KEY, xkey, xemail, xmobile ) AS SELECT NULL sender, NULL receiver, DECODE (aaxx_get_user, 'ESSENT', 'Essent', 'ARCADIS', 'Arcadis', 'SABIC', 'Sabic', 'VGZ', 'VGZ', 'HEYDAY') || ' bevestigingmail afspraak ' || TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy') text, 'CUST03' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST03') fac_srtnotificatie_key, b.bez_afspraak_key key, b.bez_bezoekers_key xkey, COALESCE(v.email,v.email_kenmerk) xemail, NULL xmobile FROM fac_tracking t, bez_afspraak a, bez_bezoekers b, (SELECT b1.bez_afspraak_key, b1.bez_bezoekers_key, b1.bez_bezoekers_email AS email, (SELECT kw.bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE kw.bez_bezoekers_key = b1.bez_bezoekers_key AND kw.bez_kenmerk_key = DECODE (aaxx_get_user, 'ESSENT', 1001, 'IT', 1022, 'ARCADIS', 1003, 'SABIC', 1000)) -- Zie ticket 60226 - 'SABIC' kan in principe weg.. AS email_kenmerk FROM bez_bezoekers b1, bez_afspraak a1 WHERE b1.bez_afspraak_key = a1.bez_afspraak_key AND a1.bez_afspraak_datum > SYSDATE) v WHERE t.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'BEZMUT') AND t.fac_tracking_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS') AND t.fac_tracking_datum < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS') AND a.bez_afspraak_key = t.fac_tracking_refkey AND a.bez_afspraak_datum > SYSDATE AND b.bez_afspraak_key = t.fac_tracking_refkey AND b.bez_bezoekers_key = v.bez_bezoekers_key ; -- Rapportage t.b.v. Share & Meet -- Share and Meet reserveringen zijn te herkennen aan een host die een login heeft met de volgende struktuur __ -- bijvoorbeeld _AANS_4533 CREATE OR REPLACE VIEW aaxx_v_rap_share_meet_kosten ( reservering, afdelingscode, fclt_f_afdelings_omschrijving, verbruiksartikelen, boekingsdatum, afmelddatum, fclt_f_periode, aanvrager, locatie, gebouw, ruimtenaam, btw, stuksprijs, aantal, totaal ) AS SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnr, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, rrp.omschrijving, TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'), TO_CHAR (rrp.afgemeld, 'dd-mm-yyyy'), TO_CHAR (rrp.afgemeld, 'yyyy-mm'), pf_h.prs_perslid_naam_full pfh, rg.alg_locatie_omschrijving, rg.alg_gebouw_omschrijving, rr.res_ruimte_nr, btw, rrp.artikel_prijs, rrp.aantal, rrp.prijs FROM res_rsv_ruimte rrr, (SELECT rrr.res_rsv_ruimte_key, ra.res_artikel_omschrijving omschrijving, rra.res_rsv_artikel_aantal aantal, ROUND ( res.getartikelprijs (rra.res_rsv_artikel_key) / rra.res_rsv_artikel_aantal, 2) artikel_prijs, rra.res_rsv_artikel_prijs prijs, rra.res_rsv_artikel_afgemeld afgemeld, ra.res_artikel_btw btw FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_rsv_artikel_verwijder IS NULL UNION SELECT fac_tracking_refkey res_rsv_ruimte_key, 'Zaalhuur', 1 aantal, res_rsv_ruimte_prijs artikel_prijs, res_rsv_ruimte_prijs prijs, t.fac_tracking_datum afgemeld, 21 btw FROM res_rsv_ruimte rrr, fac_tracking t, fac_srtnotificatie sn WHERE res_rsv_ruimte_prijs <> 0 AND rrr.res_rsv_ruimte_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'RESAFM' AND t.fac_tracking_oms IS NULL AND res_rsv_ruimte_verwijder IS NULL) rrp, prs_v_perslid_fullnames_all pf_h, res_ruimte rr, prs_afdeling a, prs_perslid p, ( SELECT MAX (alg_ruimte_key) alg_ruimte_key, res_rsv_ruimte_key, res_ruimte_key FROM res_v_rsv_ruimte_2_alg_ruimte GROUP BY res_rsv_ruimte_key, res_ruimte_key) r, alg_v_ruimte_gegevens rg WHERE rrp.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_rsv_ruimte_host_key = pf_h.prs_perslid_key AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND r.res_ruimte_key = rr.res_ruimte_key AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key AND r.alg_ruimte_key = rg.alg_ruimte_key AND rrp.afgemeld IS NOT NULL AND p.prs_perslid_oslogin like '/_AA__/_%' escape '/'; -- AAAR#52939 notificatiejobs voor AAAR werken niet meer -- MOET DEZE VIEW NIET VERWIJDERD WORDEN ?? -- AAIT#28929 notificaties t.b.v Share & Meet voor beoordeling dag later CREATE OR REPLACE VIEW aaxx_v_noti_sm_resafm_reminder ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY ) AS SELECT 'RESAFM', NULL, res_rsv_ruimte_contact_key, 'Herinnering beoordeling reservering: ' || res_reservering_key || '/' || res_rsv_ruimte_volgnr, rsv.res_reservering_key, rsv.res_rsv_ruimte_key FROM res_rsv_ruimte rsv, res_activiteit ra, res_srtactiviteit rsr, fac_tracking tr, fac_srtnotificatie str WHERE res_rsv_ruimte_verwijder IS NULL AND rsv.res_activiteit_key = ra.res_activiteit_key AND ra.res_srtactiviteit_key = rsr.res_srtactiviteit_key AND UPPER(rsr.res_srtactiviteit_omschrijving) = 'SHARE & MEET' AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND tr.fac_tracking_refkey = res_rsv_ruimte_key AND str.fac_srtnotificatie_xmlnode IN ('reservering', 'xreservering') AND fac_srtnotificatie_code = 'RESAFM' AND fac_tracking_oms IS NULL AND TO_DATE (fac_tracking_datum, 'DD-MM-YYYY') = TO_DATE (SYSDATE-1, 'DD-MM-YYYY'); -- kenmerk key 1000: afspraak is prive (dus niet op infobord) -- geld voor IT en Arcadis CREATE OR REPLACE VIEW aaxx_v_rap_infobord ( item_type, item_key, aktief, bezoek_status, offset, dag, tijd_van, tijd_tot, ruimte, catalogus, aanvrager, gastheer, omschrijving, status, bezoeker, bedrijf, locatie_code, gebouw_code, verdieping_code, locatie_omschrijving, gebouw_omschrijving, verdieping_omschrijving, alg_locatie_key, alg_gebouw_key, alg_verdieping_key ) AS SELECT 'RES', rrr.res_rsv_ruimte_key, (CASE WHEN res_rsv_ruimte_van > SYSDATE THEN 'expected' WHEN res_rsv_ruimte_tot < SYSDATE THEN 'passed' ELSE 'active' END) aktief, (CASE WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out' WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in' ELSE 'expected' END) bezoek_status, TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset, TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag, TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van, TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot, res_ruimte_nr ruimte, ins_discipline_omschrijving catalogus, aanvrager.prs_perslid_naam_full aanvrager, COALESCE (gastheer.prs_perslid_naam_full, a.bez_afspraak_gastheer) gastheer, res_rsv_ruimte_omschrijving omschrijving, sf.res_status_fo_omschrijving status, b.bez_afspraak_naam, b.bez_afspraak_bedrijf, alg_locatie_code locatie_code, alg_gebouw_code gebouw_code, alg_verdieping_code verdieping_code, alg_locatie_omschrijving locatie_omschrijving, g.alg_gebouw_code||'-'||g.alg_gebouw_naam gebouw_omschrijving, alg_verdieping_omschrijving verdieping_omschrijving, l.alg_locatie_key, g.alg_gebouw_key, v.alg_verdieping_key FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, prs_v_perslid_fullnames aanvrager, prs_v_perslid_fullnames gastheer, res_v_res_ruimte_gegevens rrg, alg_locatie l, alg_gebouw g, alg_verdieping v, res_status_fo sf, res_discipline rd, bez_afspraak a, bez_bezoekers b, (SELECT * FROM bez_kenmerkwaarde WHERE bez_kenmerk_key = 1000 AND bez_kenmerkwaarde_verwijder IS NULL) prive WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rrg.res_ruimte_key AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key(+) AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE) AND rrg.alg_locatie_key = l.alg_locatie_key AND rrg.alg_gebouw_key = g.alg_gebouw_key AND rrg.alg_verdieping_key = v.alg_verdieping_key AND rrr.res_status_fo_key = sf.res_status_fo_key AND rrg.res_discipline_key = rd.ins_discipline_key AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key(+) AND a.bez_afspraak_key = b.bez_afspraak_key(+) AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0' UNION ALL SELECT 'BEZ', b.bez_afspraak_key, (CASE WHEN a.bez_afspraak_datum > SYSDATE THEN 'expected' WHEN a.bez_afspraak_eind < SYSDATE THEN 'passed' ELSE 'active' END) aktief, (CASE WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out' WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in' ELSE 'expected' END) bezoek_status, TRUNC ( (SYSDATE - bez_afspraak_datum) * 24 * 60) offset, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') dag, TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd_van, TO_CHAR (bez_afspraak_eind, 'hh24:mi') tijd_tot, NULL ruimte, NULL catalogus, aanvrager.prs_perslid_naam_full aanvrager, COALESCE (gastheer.prs_perslid_naam_full, a.bez_afspraak_gastheer) gastheer, NULL omschrijving, NULL status, b.bez_afspraak_naam, b.bez_afspraak_bedrijf, alg_locatie_code locatie_code, alg_gebouw_code gebouw_code, NULL verdieping_code, alg_locatie_omschrijving locatie_omschrijving, alg_gebouw_naam gebouw_omschrijving, alg_verdieping_omschrijving verdieping_omschrijving, l.alg_locatie_key, ogg.alg_gebouw_key, ogg.alg_verdieping_key FROM bez_afspraak a, bez_bezoekers b, prs_v_perslid_fullnames aanvrager, alg_locatie l, alg_v_allonrgoed_gegevens ogg, prs_v_perslid_fullnames gastheer, (SELECT * FROM bez_kenmerkwaarde WHERE bez_kenmerk_key = 1000 AND bez_kenmerkwaarde_verwijder IS NULL) prive WHERE a.bez_afspraak_key = b.bez_afspraak_key AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE) AND a.bez_afspraak_host_key = gastheer.prs_perslid_key(+) AND a.bez_afspraak_contact_key = aanvrager.prs_perslid_key AND a.alg_locatie_key = l.alg_locatie_key AND a.alg_onrgoed_keys = ogg.alg_onroerendgoed_keys(+) AND a.res_rsv_ruimte_key IS NULL AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0'; -- AAES#24665/AANS#27628: In eerste instantie vormgegeven tbv. meldingen op -- objecten. Later uitgebreid tbv. reserveringen. /* Formatted on 10-10-2013 14:32:24 (QP5 v5.115.810.9015) */ CREATE OR REPLACE VIEW aaxx_v_rap_mld_qrc ( fclt_3d_locatie_key, fclt_3d_discipline_key, fclt_f_discipline, fclt_f_soortmelding, fclt_f_locatie, fclt_f_gebouw, fclt_f_verdieping, plaats, ruimte_key, ruimtefunctie, fclt_f_objectdiscipline, fclt_f_objectgroep, objectsoort_key, fclt_f_objectsoort, objectsoort_code, ins_deel_key, ins_deel_omschrijving, ins_deel_upper, hide_f_bookmark_id, variabele ) AS SELECT l.alg_locatie_key, disc.ins_discipline_key, disc.ins_discipline_omschrijving, msd.mld_stdmelding_omschrijving, l.alg_locatie_omschrijving, o.alg_gebouw_omschrijving, o.alg_verdieping_omschrijving, o.alg_plaatsaanduiding plaats, d.ins_alg_ruimte_key ruimte_key, sr.alg_srtruimte_omschrijving, disc.ins_discipline_omschrijving, sg.ins_srtgroep_omschrijving, sd.ins_srtdeel_key, sd.ins_srtdeel_omschrijving, sd.ins_srtdeel_code, d.ins_deel_key, d.ins_deel_omschrijving, d.ins_deel_upper, b.fac_bookmark_id, 'INS_KEY' FROM (SELECT DECODE ( INSTR ( SUBSTR ( UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=') ), '&' ), 0, SUBSTR ( SUBSTR ( UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=') ), 10 ), SUBSTR ( SUBSTR ( UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=') ), 10, INSTR ( SUBSTR ( UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDM_KEY=') ), '&' ) - 10 ) ) stdm_key, fac_bookmark_id FROM fac_bookmark WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP' AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0) b, -- stdm_key-bookmarks (SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, si.ins_srtinstallatie_key ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'S' UNION ALL SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, sd.ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si, ins_srtdeel sd WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'G' AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key UNION ALL SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_omschrijving, sd.ins_srtdeel_key FROM mld_stdmelding sm, mld_stdmelding_srtinst si, ins_srtgroep sg, ins_srtdeel sd WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key AND sm.mld_stdmelding_verwijder IS NULL AND si.ins_srtinstallatie_niveau = 'D' AND si.ins_srtinstallatie_key = sg.ins_discipline_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen ins_v_aanwezigdeel d, ins_srtdeel sd, ins_srtgroep sg, ins_discipline disc, ins_v_alg_overzicht o, alg_locatie l, alg_ruimte r, alg_srtruimte sr WHERE fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key AND msd.ins_srtdeel_key = d.ins_srtdeel_key AND d.ins_alg_ruimte_type IN ('T', 'R', 'W') AND d.ins_deel_parent_key IS NULL AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant? AND o.alg_locatie_key = l.alg_locatie_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+) UNION ALL SELECT l.alg_locatie_key, disc.ins_discipline_key, disc.ins_discipline_omschrijving, 'Reserveer ruimte', l.alg_locatie_omschrijving, o.alg_gebouw_omschrijving, o.alg_verdieping_omschrijving, rr.res_ruimte_nr plaats, rar.res_ruimte_key ruimte_key, sr.alg_srtruimte_omschrijving, NULL ins_discipline_omschrijving, NULL ins_srtgroep_omschrijving, NULL ins_srtdeel_key, NULL ins_srtdeel_omschrijving, NULL ins_srtdeel_code, NULL ins_deel_key, NULL ins_deel_omschrijving, NULL ins_deel_upper, b.fac_bookmark_id, 'RES_RUIMTE_KEY' FROM fac_bookmark b, res_ruimte rr, res_discipline disc, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar, alg_ruimte r, alg_srtruimte sr, ins_v_alg_overzicht o, alg_locatie l WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10102013', 'ddmmyyyy') AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP' AND rr.res_discipline_key = disc.ins_discipline_key AND rr.res_ruimte_key = rar.res_ruimte_key AND rar.alg_ruimte_key = r.alg_ruimte_key AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND r.alg_ruimte_key = o.alg_onroerendgoed_keys AND o.alg_onroerendgoed_type = 'R' AND o.alg_locatie_key = l.alg_locatie_key; -- AASA#37919 -- Rapport met opdrachtgegevens van hergoedkeuringsverzoeken incl gebouwverantwoordelijke -- Status 10 = ter goedkeuring CREATE OR REPLACE VIEW aaxx_v_udr_hergoedkeuren AS SELECT mld_opdr_key, srt.ins_srtdiscipline_prefix || o.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr opdrachtnr, mu.naam uitvoerende, ot.mld_typeopdr_omschrijving opdrachttype, mld_opdr_omschrijving omschrijving, k.prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving kostenplaats, mld_opdr_kosten kosten, pf1.prs_perslid_naam_full behandelaar, mld_opdr_opmerking afhandeling, mld_opdr_datumbegin opdrachtdatum, mld_opdr_einddatum einddatum, mld_opdr_plandatum plandatum, l.alg_locatie_code || aog.alg_plaatsaanduiding plaats, aog.alg_gebouw_key, aog.alg_gebouw_code gebouw_code, g.prs_perslid_key_verantw gebouw_verwantwoordelijke_key, pf2.prs_perslid_naam_full gebouw_verwantwoordelijke, aog.alg_verdieping_omschrijving verdieping_omschrijving, aog.alg_verdieping_code verdieping, aog.alg_ruimte_nr ruimte_nr, aog.alg_ruimte_omschrijving ruimte_omschrijving, std.mld_stdmelding_omschrijving melding, d.ins_discipline_omschrijving vakgroep, srt.ins_srtdiscipline_omschrijving vakgroeptype FROM mld_opdr o, mld_melding m, alg_v_allonrgoed_gegevens aog, alg_locatie l, alg_gebouw g, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt, mld_typeopdr ot, prs_v_perslid_fullnames_all pf1, prs_v_perslid_fullnames_all pf2, mld_v_uitvoerende mu, prs_kostenplaats k WHERE mld_statusopdr_key = 10 AND mld_opdr_approved_refiat IS NOT NULL AND o.mld_melding_key = m.mld_melding_key AND o.fac_activiteit_key IS NULL AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND aog.alg_locatie_key = l.alg_locatie_key AND g.alg_gebouw_key = aog.alg_gebouw_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key AND ot.mld_typeopdr_key = o.mld_typeopdr_key AND pf1.prs_perslid_key(+) = o.prs_perslid_key AND pf2.prs_perslid_key(+) = g.prs_perslid_key_verantw AND mu.mld_uitvoerende_key = o.mld_uitvoerende_keys AND o.prs_kostenplaats_key = k.prs_kostenplaats_key(+); -- specifieke versie van mld_v_udr_meldingopdracht vanwege performance problemen met de core versie. CREATE OR REPLACE VIEW aaxx_v_udr_meldingopdracht AS SELECT m.mld_melding_key meldingnummer, l.alg_locatie_omschrijving melding_locatie, aog.alg_gebouw_naam melding_gebouw, d.ins_discipline_omschrijving productgroep, mld_statuses_omschrijving melding_status, mld_melding_datum melding_datum, mld_melding_einddatum melding_einddatum, mld_melding_omschrijving vomschrijving, mld_statusopdr_omschrijving opdracht_status, o.mld_opdr_key opdracht_key, d.ins_discipline_key fclt_3d_discipline_key FROM mld_melding m, mld_statuses ms, mld_opdr o, mld_statusopdr so, alg_v_onroerendgoed_gegevens aog, alg_locatie l, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_melding_key = o.mld_melding_key AND m.mld_melding_status = ms.mld_statuses_key AND o.mld_statusopdr_key = so.mld_statusopdr_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key; -- AAFM#26513 Notificatie goedgekeurde offerte naar autorisatiegroep "HEYDAY Servicedesk"' -- Opdracht in status 9 (na ORDOOK) -- 'opdracht bij melding wanneer automatische offerteafhandeling uitgeschakeld is' --> mld_disc_params_offerteauto = 0 -- Opdracht (RFQ) sinds de vorige check goedgekeurd (eenmalig sturen) - 2 views voor beschikbaar. Notificatie naar Gebouwbeheerder + naar ORDOAP-rechthebbenden -- Bestemming zijn de personen(0..n) in autorisatiegroep HEYDAY Servicedesk. -> 14-7-2025 - #89829 - autorisatiegroep_ExternID = ‘BO_SERVICEDESK’ CREATE OR REPLACE VIEW aaxx_v_noti_offerte_accepted ( sender, receiver, text, code, key, xkey ) AS SELECT DISTINCT NULL sender, gg.prs_perslid_key receiver, (SELECT fac_version_cust FROM fac_version) || ': Offerte ' || m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr || ' is geaccepteerd' text, 'CUST04' code, o.mld_opdr_key key, NULL xkey FROM mld_opdr o, mld_melding m, mld_stdmelding s, mld_discipline d, mld_disc_params dp, fac_srtnotificatie sn, fac_tracking t, (SELECT g.fac_groep_key FROM fac_groep g WHERE (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT') ) g, fac_gebruikersgroep gg WHERE o.mld_statusopdr_key = 9 AND m.mld_melding_key = o.mld_melding_key AND s.mld_stdmelding_key = m.mld_stdmelding_key AND d.ins_discipline_key = s.mld_ins_discipline_key AND dp.mld_ins_discipline_key = d.ins_discipline_key AND dp.mld_disc_params_offerteauto = 0 AND sn.fac_srtnotificatie_code = 'ORDOOK' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = o.mld_opdr_key AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED') AND gg.fac_groep_key = g.fac_groep_key; -- Bij HEYDAY drie smaken voor notificatie van mensen als er Offertes goedgekeurd moeten worden --- 1. Aan Gebouwverantwoordelijke (muv de PR- en MJOP-meldingen, want die gaan via 3.) --- 2. Aan ALLE mensen met ORDOAP-rechten --- 3. Aan de Projectleider van de PR- of MJOP-meldingen --- 1. Notificatie Offerte goed te keuren voor alle GEBOUW-verantwoordelijke CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedkeuren ( sender, receiver, text, code, key, xkey ) AS SELECT NULL, gv.prs_perslid_key, 'Offerte ' || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' is afgemeld en dient beoordeeld te worden', 'CUST18', o.mld_opdr_key, NULL FROM mld_opdr o, mld_typeopdr ot, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, alg_v_allonroerendgoed aor, (SELECT alg_gebouw_key, g.prs_perslid_key_verantw prs_perslid_key FROM alg_gebouw g WHERE prs_perslid_key_verantw IS NOT NULL UNION ALL SELECT alg_gebouw_key, g.prs_perslid_key_verantw2 prs_perslid_key FROM alg_gebouw g WHERE g.prs_perslid_key_verantw2 IS NOT NULL) gv, prs_perslid p, ( SELECT fac_tracking_refkey, MAX (fac_tracking_datum) fac_tracking_datum FROM fac_tracking ft, fac_srtnotificatie fsn WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key AND fac_srtnotificatie_code = 'ORDAFM' GROUP BY fac_tracking_refkey) ft WHERE mld_statusopdr_key = 6 AND ot.mld_typeopdr_key = o.mld_typeopdr_key AND mld_typeopdr_isofferte = 1 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 UPPER(sd.ins_srtdiscipline_omschrijving) NOT IN ('MJOP', 'PROJECT') -- voor MJOP en PROJECT loopt de notificatie via de Projectleiders (zie optie 3.) AND m.mld_melding_key = o.mld_melding_key AND m.mld_alg_onroerendgoed_keys = aor.alg_onroerendgoed_keys AND gv.alg_gebouw_key = aor.alg_gebouw_key AND gv.prs_perslid_key = p.prs_perslid_key AND ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDKEUREN') ; --- 2. Notificatie Offerte goed te keuren voor alle ORDOAP-mensen CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedk_2 ( sender, receiver, text, code, key, xkey ) AS SELECT NULL, oap.prs_perslid_key, 'Offerte ' || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' is afgemeld en dient beoordeeld te worden', 'CUST12', o.mld_opdr_key, NULL FROM mld_opdr o, mld_typeopdr ot, mld_melding m, (SELECT gg.prs_perslid_key FROM fac_functie f, fac_groeprechten gr, fac_groep g, fac_gebruikersgroep gg WHERE f.fac_functie_code = 'WEB_ORDOAP' AND f.fac_functie_key = gr.fac_functie_key AND gr.fac_groep_key = g.fac_groep_key AND g.fac_groep_key = gg.fac_groep_key GROUP BY gg.prs_perslid_key ) oap, ( SELECT fac_tracking_refkey, MAX (fac_tracking_datum) fac_tracking_datum FROM fac_tracking ft, fac_srtnotificatie fsn WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key AND fac_srtnotificatie_code = 'ORDAFM' GROUP BY fac_tracking_refkey) ft WHERE mld_statusopdr_key = 6 AND ot.mld_typeopdr_key = o.mld_typeopdr_key AND mld_typeopdr_isofferte = 1 AND m.mld_melding_key = o.mld_melding_key AND ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDK_2') ; --- 3. Notificatie Offerte goed te keuren voor alle PROJECTLEIDERS (op PROJECT en MJOP-hoofdstroom) CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedk_3 ( sender, receiver, text, code, key, xkey ) AS SELECT NULL, prl.prs_perslid_key, sd.ins_srtdiscipline_omschrijving ||'-offerte ' || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' is afgemeld en dient beoordeeld te worden', 'CUST17', o.mld_opdr_key, NULL FROM mld_opdr o, mld_typeopdr ot, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, (SELECT kw.mld_melding_key, fac.safe_to_number(kw.mld_kenmerkmelding_waarde) prs_perslid_key FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk WHERE kw.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER' AND sk.mld_srtkenmerk_kenmerktype = 'S') prl, -- projectleider op melding ( SELECT fac_tracking_refkey, MAX (fac_tracking_datum) fac_tracking_datum FROM fac_tracking ft, fac_srtnotificatie fsn WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key AND fac_srtnotificatie_code = 'ORDAFM' GROUP BY fac_tracking_refkey) ft WHERE mld_statusopdr_key = 6 AND ot.mld_typeopdr_key = o.mld_typeopdr_key AND mld_typeopdr_isofferte = 1 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 UPPER(sd.ins_srtdiscipline_omschrijving) IN ('MJOP', 'PROJECT') -- alleen voor deze hoofdstromen moeten projectleiders genotificeerd worden AND m.mld_melding_key = o.mld_melding_key AND m.mld_melding_key = prl.mld_melding_key AND ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDK_3') ; -- AAIT#78372 notificatie naar aanvrager bij verzetten opdracht-datum CREATE OR REPLACE VIEW aaxx_v_noti_melder_datumverzet ( sender, receiver, text, code, key, xkey, xemail, xmobile ) AS SELECT NULL sender, p.prs_perslid_key receiver, 'TER INFO - Einddatum van uw melding ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' is verzet' text, 'CUST20' code, m.mld_melding_key key, NULL xkey, NULL xemail, NULL xmobile FROM mld_opdr o, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, prs_perslid p, fac_tracking fto, fac_srtnotificatie sno, fac_tracking ftm, fac_srtnotificatie snm, (SELECT ko.mld_opdr_key, flx.getdomeinwaarde ( sk.fac_kenmerkdomein_key, flx.getflex ('OPD', km.mld_kenmerk_key, ko.mld_opdr_key)) reden FROM mld_kenmerkopdr ko, mld_kenmerk km, mld_srtkenmerk sk WHERE ko.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'DATUMVERZET_REDEN') mut WHERE o.mld_melding_key = m.mld_melding_key AND m.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_email IS NOT NULL 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 -- Welke meldingen moeten in de job komen? ---- 1. In MLD fac_tracking met MLDUPD en in omschrijving 'Gereed:' en fac_trackingsdatum >= dan laatste notificatiejob AND m.mld_melding_key = ftm.fac_tracking_refkey AND ftm.fac_srtnotificatie_key = snm.fac_srtnotificatie_key AND snm.fac_srtnotificatie_code = 'MLDUPD' AND INSTR (ftm.fac_tracking_oms, 'Gereed:') > 0 AND ftm.fac_tracking_datum >= (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_MELDER_DATUMVERZET') ---- 2. En in OPDR een fac_tracking op ORDDAT fac_trackingsdatum >= dan laatste notificatiejob AND o.mld_opdr_key = fto.fac_tracking_refkey AND fto.fac_srtnotificatie_key = sno.fac_srtnotificatie_key AND sno.fac_srtnotificatie_code = 'ORDDAT' AND fto.fac_tracking_datum >= (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_MELDER_DATUMVERZET') ---- 3. En op die opdracht is een kenmerk-reden gevuld die ongelijk 'Aangepast - Geen notificatie' is AND o.mld_opdr_key = mut.mld_opdr_key AND mut.reden NOT IN ('Aangepast - Geen notificatie') GROUP BY p.prs_perslid_key, m.mld_melding_key, sd.ins_srtdiscipline_prefix ; -- AAHU#29410 Notificatie geregistreerde klacht naar groep "HEYDAY-FMer" -- prefix KL is klacht CREATE OR REPLACE VIEW aaxx_v_noti_klacht_reminder ( sender, receiver, text, code, key, xkey ) AS SELECT NULL, fm.prs_perslid_key, 'Er is een klacht geregistreerd met referentienummer: ' || m.mld_melding_key, 'MLDNEW', m.mld_melding_key, NULL FROM mld_melding m, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt, fac_tracking tr, fac_srtnotificatie str, (SELECT p.prs_perslid_key FROM fac_gebruikersgroep fg, fac_groep g, prs_perslid p WHERE g.fac_groep_key = fg.fac_groep_key AND p.prs_perslid_key = fg.prs_perslid_key AND UPPER (g.fac_groep_omschrijving) = 'HEYDAY FM-ER' AND prs_perslid_verwijder IS NULL AND prs_perslid_email IS NOT NULL) fm WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key AND srt.ins_srtdiscipline_module = 'MLD' AND srt.ins_srtdiscipline_prefix = 'KL' AND m.fac_activiteit_key IS NULL AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND tr.fac_tracking_refkey = m.mld_melding_key AND str.fac_srtnotificatie_code = 'MLDNEW' AND tr.fac_tracking_datum > SYSDATE - 1 / 24; -- AAFM#33840 notificatie tbv gepland bezoek CREATE OR REPLACE VIEW aaxx_v_noti_plan_opdr ( sender, receiver, text, code, key, xkey, xemail, xmobile ) AS SELECT NULL sender, NULL receiver, 'Aankondiging werkzaamheden door ' || b.prs_bedrijf_naam || ' op ' || mld_opdr_plandatum || ' op uw locatie' text, 'CUST08' code, mld_opdr_key key, NULL xkey, g.alg_gebouw_email xemail, NULL xmobile FROM mld_opdr o, mld_melding m, alg_v_allonrgoed_gegevens aog, alg_gebouw g, prs_bedrijf b WHERE ( (TRUNC (mld_opdr_plandatum) = TRUNC (SYSDATE + 1) AND fac.getweekdaynum (SYSDATE) != 6) OR (TRUNC (mld_opdr_plandatum) BETWEEN TRUNC (SYSDATE + 1) AND TRUNC (SYSDATE + 3) AND fac.getweekdaynum (SYSDATE) = 6)) AND mld_statusopdr_key NOT IN (1, 6, 7, 9) AND o.mld_melding_key = m.mld_melding_key AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND g.alg_gebouw_key = aog.alg_gebouw_key; -- AAIT#31201 automatische notificatie naar melder van PR meldingen sturen -- 2 weken voorafgaand aan de einddatum van een project (PR melding). CREATE OR REPLACE VIEW aaxx_v_noti_mld_projecten ( sender, receiver, text, code, key, xkey ) AS SELECT NULL sender, prs_perslid_key_voor, 'Herinnering: Over 2 weken sluit projectnummer ' || ins_srtdiscipline_prefix || mld_melding_key text, 'MLDNEW' code, mld_melding_key key, NULL xkey FROM mld_melding m, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key AND UPPER (ins_srtdiscipline_prefix) = 'PR' AND m.mld_melding_status NOT IN (1, 5, 6) AND m.mld_melding_einddatum BETWEEN SYSDATE + 13 AND SYSDATE + 14; CREATE OR REPLACE VIEW aaxx_v_kostensoort ( prs_kostensoort_key, prs_kostensoort_omschrijving ) AS SELECT prs_kostensoort_key, prs_kostensoort_oms || '-' || prs_kostensoort_opmerking FROM prs_kostensoort; -- AAIT#32784 inzage in zoekgedrag. View te gebruiken icm 20151 rapport mogelijkheden. CREATE OR REPLACE VIEW aaxx_v_gui_searchresults ( Zoekterm, Datum, Persoon, Keuze, Resultaat ) AS SELECT fgc.fac_gui_counter_info zoekterm, fac_gui_counter_date datum, prs_perslid_naam_full persoon, choice.fac_gui_counter_info keuze, result.fac_gui_counter_info resultaat FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, (SELECT fac_gui_counter_refkey, fac_gui_counter_info FROM fac_gui_counter fgc WHERE fac_gui_counter_info IS NOT NULL AND fac_gui_counter_group = 'searchchoice') choice, (SELECT fac_gui_counter_refkey, fac_gui_counter_info FROM fac_gui_counter fgc WHERE fac_gui_counter_info IS NOT NULL AND fac_gui_counter_group = 'searchresult') result WHERE fac_gui_counter_group = 'search' AND fgc.fac_gui_counter_info IS NOT NULL AND fgc.prs_perslid_key = pf.prs_perslid_key AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key; -- procedure om ontvangen emails te processen. De klant specifieke eigenschappen, keys e.d. moeten -- in de aanroep meegegeven worden. CREATE OR REPLACE PROCEDURE aaxx_processemail ( pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS sender_key prs_perslid.prs_perslid_key%TYPE; melder_key prs_perslid.prs_perslid_key%TYPE; kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE; mldkey mld_melding.mld_melding_key%TYPE; opdrkey mld_opdr.mld_opdr_key%TYPE; stdmelding mld_stdmelding.mld_stdmelding_key%TYPE; subject_regexp fac_setting.fac_setting_default%TYPE; kkey mld_kenmerk.mld_kenmerk_key%TYPE; errormsg fac_result.fac_result_waarde%TYPE; behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE; typeopdrkey mld_typeopdr.mld_typeopdr_key%TYPE; mldnum VARCHAR2 (4000); opdrnum VARCHAR2 (4000); opdrvolgnr NUMBER (10); srtdisc VARCHAR2 (4000); cnt NUMBER (10); v_flag_on_fenote NUMBER (10); v_flag_on_bonote NUMBER (10); v_from VARCHAR2 (4000); v_body VARCHAR2 (4000); v_subject VARCHAR2 (1000); v_pos NUMBER; v_result NUMBER; v_factuur_key fin_factuur.fin_factuur_key%TYPE; v_kenmerk_key fin_kenmerk.fin_kenmerk_key%TYPE; v_fac_usrdata_key_ja NUMBER(10); v_fac_usrdata_key_nee NUMBER(10); BEGIN errormsg := '(0x143)'; -- de mailberichten worden doorgestuurd vanuit de AAFM exchange omgeving. Hierbij -- is het niet mogelijk de afzender te laten staan. Daarom wordt de afzender in het subject -- van de mail geplaatst. Scheidingsteken in de ';'. v_from := SUBSTR (psubject, 1, INSTR (psubject, ';') - 1); v_subject := SUBSTR (psubject, INSTR (psubject, ';') + 1); -- Verwijder de Bounce Address Tag Validation IF v_from LIKE 'prvs=%' THEN v_from := SUBSTR (v_from, INSTR (v_from, '=', -1) + 1); END IF; v_body := v_from || ': ' || CHR (13) || CHR (10) || SUBSTR ( v_subject || CHR (13) || CHR (10) || REPLACE (SUBSTR (pbody, 1, 3900 - (LENGTH (v_subject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 3900); -- verwijder onnodige witregels -- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from); errormsg := '(0x143a)'; -- Valideer de sender in pfrom: kennen we deze? SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key) INTO sender_key, kostenplaats_key FROM prs_perslid p, prs_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key AND prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_email) = UPPER (v_from); errormsg := '(0x143b)'; IF sender_key IS NULL THEN sender_key := 11; -- prs_perslid_key onbekend mail adres. SELECT d.prs_kostenplaats_key INTO kostenplaats_key FROM prs_perslid p, prs_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key AND prs_perslid_verwijder IS NULL AND p.prs_perslid_key = sender_key; END IF; CASE WHEN UPPER (pto) LIKE 'INVOICES@%' THEN errormsg := '(0x143c)'; INSERT INTO fin_factuur (fin_factuur_statuses_key, fin_factuur_datum, fin_factuur_totaal_btw, fin_factuur_nr, fin_factuur_bron) VALUES (3, SYSDATE, 0, '#', 2) RETURNING fin_factuur_key INTO v_factuur_key; -- Zet kenmerk laatste factuur op Ja -- Ophalen key-waarde Ja van kenmerkveld Laatste Factuur SELECT ud.fac_usrdata_key INTO v_fac_usrdata_key_ja FROM fin_kenmerk k, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE fin_kenmerk_key = 2 AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND kd.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja errormsg := '(0x143d)'; INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (v_factuur_key, 2, v_fac_usrdata_key_ja); -- Bepaal de key van de bijlages errormsg := '(0x143e)'; SELECT fin_kenmerk_key INTO v_kenmerk_key FROM fin_kenmerk WHERE fin_kenmerk_verwijder IS NULL AND UPPER(fin_kenmerk_omschrijving) = 'BIJLAGES'; errormsg := '(0x143f)'; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'FIN\F' || TO_CHAR (TRUNC (v_factuur_key / 1000), 'FM0000') || '___\F' || v_factuur_key || '\' || v_kenmerk_key || '\'); WHEN UPPER (pto) LIKE 'SERVICEDESK@%' THEN errormsg := '(0x145)'; -- append (as a note?) to an existing melding if #key is found in the subject -- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker -- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,} -- hebben we een referentie naar een opdracht of naar een melding? subject_regexp := '[[:digit:]]{3,}/[[:digit:]]*'; opdrnum := REGEXP_SUBSTR (v_subject, subject_regexp, 1, 1, 'i'); -- MA12345 DBMS_OUTPUT.put_line ('opdrnum: ' || opdrnum); -- Ja, nu komt het voor dat de opdracht/melding verward wordt met een -- bestelling/opdracht. Daarom gaan we kijken of er een bestelling of -- bestelopdracht is. Als deze er is dan kijken we naar de aanmaakdatum -- is deze nieuwe dan de aanmaakdatum van de melding/opdracht, dan doen -- we niets met de mail en hoort deze waarschijnlijk bij een bestelling. -- Voor opdrachten (eerste gedeelte) en meldingen (tweede gedeelte) wordt -- deze controle uitgevoerd zodra het melding/opdracht nummer bekend is. IF opdrnum IS NOT NULL THEN opdrvolgnr := fac.safe_to_number ( SUBSTR (opdrnum, INSTR (opdrnum, '/') + 1)); DBMS_OUTPUT.put_line ('opdrvolgnr: ' || opdrvolgnr); mldkey := fac.safe_to_number ( SUBSTR (opdrnum, 1, INSTR (opdrnum, '/') - 1)); DBMS_OUTPUT.put_line ('mldkey: ' || mldkey); SELECT MAX (SIGN (b_o.datum - m_o.datum)) -- 1 als b_o datum > m_o datum INTO v_result FROM (SELECT bes_bestelopdr_datum datum FROM bes_bestelopdr WHERE bes_bestelopdr_id = mldkey || '/' || opdrvolgnr) b_o, (SELECT mld_opdr_datumbegin datum FROM mld_opdr WHERE mld_melding_key = mldkey AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr) m_o; ELSE subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}'; mldnum := REGEXP_SUBSTR (v_subject, subject_regexp, 1, 1, 'i'); -- MA12345 srtdisc := REGEXP_SUBSTR (mldnum, '[[:alpha:]]*', 1, 1, 'i'); -- MA mldkey := fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1)); SELECT MAX (SIGN (b.datum - m.datum)) -- 1 als bes datum > mld datum INTO v_result FROM (SELECT bes_bestelling_datum datum FROM bes_bestelling WHERE bes_bestelling_key = mldkey) b, (SELECT mld_melding_datum datum FROM mld_melding WHERE mld_melding_key = mldkey) m; END IF; IF v_result = 1 AND v_result IS NOT NULL THEN -- resultaat is 1 als de datum van de bestelling/opdracht groter is dan de datum van -- de melding/opdracht. DBMS_OUTPUT.put_line ('v_result: ' || v_result); RETURN; END IF; DBMS_OUTPUT.put_line ('mldnum: ' || mldnum); DBMS_OUTPUT.put_line ('srtdisc: ' || srtdisc); DBMS_OUTPUT.put_line ('mldkey: ' || mldkey); -- We eisen -- - Goed meldingnummer -- - Goede srtdiscipline -- - Afzender is degene voor wie de melding was -- suggested extensions: ook collega's toestaan? SELECT MIN (mm.mld_stdmelding_key), MIN (prs_perslid_key_voor) INTO stdmelding, melder_key FROM mld_melding mm, mld_stdmelding msm, ins_tab_discipline insd, ins_srtdiscipline isd WHERE mm.mld_melding_key = mldkey AND mm.mld_stdmelding_key = msm.mld_stdmelding_key AND msm.mld_ins_discipline_key = insd.ins_discipline_key AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key; -- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet -- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de -- prefix letter --AND isd.ins_srtdiscipline_prefix = srtdisc --AND mm.prs_perslid_key_voor = sender; -- Mogen anderen ook reageren? DBMS_OUTPUT.put_line ( 'mld_stdmelding_key: ' || TO_CHAR (stdmelding)); -- kijk of de referentie naar de opdracht wel correct is: IF opdrvolgnr IS NOT NULL THEN BEGIN SELECT mld_opdr_key, mld_typeopdr_key INTO opdrkey, typeopdrkey FROM mld_opdr WHERE mld_melding_key = mldkey AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr; EXCEPTION WHEN OTHERS THEN opdrkey := NULL; END; END IF; BEGIN IF opdrkey IS NOT NULL THEN SELECT o.prs_perslid_key INTO behandelaar_key FROM mld_opdr o, prs_perslid p WHERE o.mld_opdr_key = opdrkey AND o.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_email IS NOT NULL AND p.prs_perslid_verwijder IS NULL; ELSE SELECT mld_melding_behandelaar_key INTO behandelaar_key FROM mld_melding m, prs_perslid p WHERE mld_melding_key = mldkey AND mld_melding_behandelaar_key = p.prs_perslid_key AND p.prs_perslid_email IS NOT NULL AND p.prs_perslid_verwijder IS NULL; END IF; EXCEPTION WHEN OTHERS THEN behandelaar_key := NULL; END; IF (stdmelding IS NOT NULL) THEN -- Bestaande opdracht. IF opdrkey IS NOT NULL THEN INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key) VALUES (opdrkey, v_body, sender_key); fac.trackaction ('ORDUPD', opdrkey, sender_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie DBMS_OUTPUT.put_line ('Notitie toegevoegd.'); ELSE INSERT INTO mld_melding_note (mld_melding_key, mld_melding_note_omschrijving, prs_perslid_key, mld_melding_note_flag) VALUES (mldkey, v_body, sender_key, DECODE (sender_key, melder_key, 1, 0)); -- 1 is zichtbaar FE want zelf ingevoerd. fac.trackaction ('MLDNOT', mldkey, sender_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie DBMS_OUTPUT.put_line ('Notitie toegevoegd.'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || mldkey); IF behandelaar_key IS NOT NULL THEN -- Notificatie naar behandelaar fac.putnotificationsrtprio ( NULL, behandelaar_key, 'MLDNOB', mldkey, 'Melding ' || mldkey || ' is door de klant aangepast.', 2, NULL, NULL, NULL, 2, NULL); END IF; END IF; -- Vlaggetjes zetten zoals mld_edit_note.asp dat doet BEGIN UPDATE mld_melding SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie WHERE mld_melding_key = mldkey; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line( 'Niet gelukt om flag ' || v_flag_on_fenote || ' te zetten.'); END; ELSE -- suggested extensions: -- check for MLDUSE-write autorisations -- parse the subject to find an appropriate stdmelding, if uniquely possible errormsg := '(0x148)'; BEGIN stdmelding := fac.safe_to_number (fac.getsetting ('defaultstdmelding')); INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_omschrijving, mld_melding_status, mld_melding_t_uitvoertijd, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', 4, -- email SYSDATE, v_body, NULL, mld_t_uitvoertijd (2, 'D'), stdmelding, sender_key, sender_key, kostenplaats_key, 3) RETURNING mld_melding_key INTO mldkey; -- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey); errormsg := '(0x165)'; mld.setmeldingstatus (mldkey, 2, sender_key); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || mldkey); END; END IF; IF opdrkey IS NULL THEN -- Zoek het laagste bijlagen kenmerk key (AAEN#34590) om de bijlagen onder te stoppen errormsg := '(0x151)'; SELECT MIN (mld_kenmerk_key) INTO kkey FROM mld_kenmerk k, mld_srtkenmerk sk, mld_stdmelding std, ins_tab_discipline d WHERE mld_srtkenmerk_kenmerktype = 'M' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND std.mld_stdmelding_key = stdmelding AND std.mld_ins_discipline_key = d.ins_discipline_key AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S') OR (k.mld_stdmelding_key = d.ins_discipline_key AND k.mld_kenmerk_niveau = 'D') OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T')) AND k.mld_kenmerk_verwijder IS NULL AND NOT EXISTS (SELECT mld_kenmerk_volgnummer FROM mld_kenmerk k1, mld_srtkenmerk sk1, mld_stdmelding std1, ins_tab_discipline d1 WHERE sk1.mld_srtkenmerk_kenmerktype = 'M' AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key AND std1.mld_stdmelding_key = stdmelding AND std1.mld_ins_discipline_key = d1.ins_discipline_key AND ( (k1.mld_stdmelding_key = std1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S') OR (k1.mld_stdmelding_key = d1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D') OR (k1.mld_stdmelding_key = d1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T')) AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_kenmerk_key < k.mld_kenmerk_key); errormsg := '(0x153)'; IF kkey IS NOT NULL THEN -- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey); errormsg := '(0x157)'; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (mldkey / 1000), 'FM0000') || '___\M' || mldkey || '\' || kkey || '\'); END IF; ELSE -- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen errormsg := '(0x152)'; SELECT MIN (mld_kenmerk_key) INTO kkey FROM mld_kenmerk k, mld_srtkenmerk sk WHERE sk.mld_srtkenmerk_kenmerktype = 'M' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_typeopdr_key = typeopdrkey AND k.mld_kenmerk_niveau = 'O' AND k.mld_kenmerk_verwijder IS NULL AND NOT EXISTS (SELECT mld_kenmerk_volgnummer FROM mld_kenmerk k1, mld_srtkenmerk sk1 WHERE sk1.mld_srtkenmerk_kenmerktype = 'M' AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key AND k1.mld_typeopdr_key = typeopdrkey AND k1.mld_kenmerk_niveau = 'O' AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_kenmerk_volgnummer < k.mld_kenmerk_volgnummer); errormsg := '(0x154)'; IF kkey IS NOT NULL THEN -- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey); errormsg := '(0x157)'; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (opdrkey / 1000), 'FM0000') || '___\O' || opdrkey || '\' || kkey || '\'); END IF; END IF; ELSE errormsg := '(0x188)'; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ' || errormsg); END CASE; EXCEPTION WHEN OTHERS THEN -- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ' || errormsg); fac.writelog ( 'PROCESSEMAIL', 'E', 'Mail kon niet ingelezen worden afzender:' || v_from || '[' || errormsg || ']' || psubject, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; / -- View tbv notificatiejob - Notities meldingen naar backoffice ipv behandelaar (ipv MLDNOB) -- Notificatie gaat naar emailadres Servicedesk Heyday (= vakgroep email-adres) (ticket 60002 en 60269) CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_NOB ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, 'Er is/zijn ' || TO_CHAR (v.aantalopmerkingen) || ' nieuwe opmerking(en) geplaatst bij melding ' || v.mld_melding_key || ' (' || v.mld_stdmelding_omschrijving || ' / ' || v.ins_discipline_omschrijving || ')' text, 'CUST10' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST10') fac_srtnotificatie_key, v.mld_melding_key key, NULL xkey, v.vakgroep_email xemail, NULL xmobile FROM (SELECT m.mld_melding_key, sm.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, dp.mld_disc_params_emailnw3 AS vakgroep_email, COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST10') > 0), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' ) ) datum_vanaf, (SELECT COUNT (*) FROM mld_melding_note mn2 WHERE mn2.mld_melding_key = m.mld_melding_key AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT') GROUP BY gg.prs_perslid_key) AND mn2.mld_melding_note_aanmaak >= COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST10') > 0), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' ) ) ) AS aantalopmerkingen FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, mld_melding_note mn, prs_perslid p WHERE m.mld_melding_key = mn.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_discipline_key = dp.mld_ins_discipline_key AND (m.mld_melding_behandelaar_key <> mn.prs_perslid_key or m.mld_melding_behandelaar_key is null) AND mn.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null AND mn.mld_melding_note_aanmaak >= COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST10') > 0), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' ) ) AND mn.mld_melding_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende AND dp.mld_disc_params_emailnw3 IS NOT NULL AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT') GROUP BY gg.prs_perslid_key) ) v ; -- View tbv notificatiejob - Notities op opdrachten naar backoffice ---- indien de notities door iemand anders dan de servicedesk gedaan zijn, dan een groepsnotificatie naar emailadres Servicedesk Heyday (= vakgroep email-adres) ---- Zie ticket 62800 => In principe oude methodiek - vervangen door ordertrackinglijst waarbij men als backoffice een verzameling van notities/statusupdate krijgt over ALLE aangepaste opdrachten ---- Zie ticket 86546 => Voor AAIT eigen soortgelijke CUST-job ingepast omdat voor Functioneel Beheer men toch liever een overzicht heeft PER OPDRACHT CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_ORD ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, 'Er is/zijn ' || TO_CHAR (v.aantalopmerkingen) || ' notities geplaatst bij opdrachtnr ' || v.mld_melding_key || '/' || v.mld_opdr_bedrijfopdr_volgnr || ' (' || v.mld_stdmelding_omschrijving || ' / ' || v.ins_discipline_omschrijving || ')' text, 'CUST11' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST11') fac_srtnotificatie_key, v.mld_opdr_key key, NULL xkey, v.vakgroep_email xemail, NULL xmobile FROM (SELECT o.mld_opdr_key, o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr, o.prs_perslid_key, sm.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, dp.mld_disc_params_emailnw3 AS vakgroep_email, COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST11') > 0), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' ) ) datum_vanaf, -- Laatste keer job gerund of Ne... on1.mld_opdr_note_aanmaak, (SELECT COUNT (*) FROM mld_opdr_note on2 WHERE on2.mld_opdr_key = o.mld_opdr_key AND on2.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT') GROUP BY gg.prs_perslid_key) AND on2.mld_opdr_note_aanmaak >= COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST11') > 0), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' ) )) AS aantalopmerkingen FROM mld_melding m, mld_opdr o, mld_opdr_note on1, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, prs_perslid p WHERE o.mld_opdr_key = on1.mld_opdr_key AND m.mld_melding_key = o.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_discipline_key = dp.mld_ins_discipline_key AND on1.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT') GROUP BY gg.prs_perslid_key ) AND on1.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null AND on1.mld_opdr_note_aanmaak >= COALESCE ( ( SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE INSTR (fac_tracking_oms, 'CUST11') > 0 AND fac_tracking_datum >= SYSDATE - 30), SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' ) ) AND on1.mld_opdr_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende AND dp.mld_disc_params_emailnw3 IS NOT NULL ) v ; -- Ordertracking: Per omgeving ontvang de verantwoordelijke Servicedesk alle notities en mutaties/status-updates op de Opdrachtenstroom die zijn geweest per gestylde mail ---- Opzet: Job kijkt of er vanaf de laatste job_run nog mutaties zijn geweest en indien geval dan wordt gestyled rapport gemaild naar desbtreffende backoffice-email-adres -- Bronview behorende bij job AAXX_V_NOTIFY_BACKOFFICE_OT CREATE OR REPLACE VIEW aaxx_v_rap_ordertracking_bron ( account, subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...! regio, -- in geval dsm en rabo en allr vakgroep_email, -- voor ALLR locatie_email extra_key, -- vanuit job extra filter_key - deze gaan we gelijk trekken aan vakgroep_email opdrachtnr, mld_opdr_key, uitvoerder, behandelaar, opdracht_type, soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging datum, actie_door, actie_omschrijving, actie_details, datum_mutatie_filter, uur_filter ) AS SELECT -- Voor notities fac_version_cust account, CASE WHEN acc.fac_version_cust IN ('INLO') THEN v.klant ELSE NULL END subaccount, -- in geval INLO CASE WHEN acc.fac_version_cust IN ('RABO') THEN og.alg_regio_omschrijving WHEN acc.fac_version_cust IN ('AADS', 'AASA') THEN og.alg_district_omschrijving WHEN acc.fac_version_cust IN ('ALLR') THEN l.alg_locatie_upper ELSE NULL END regio, -- in geval dsm, rabo en sabic CASE WHEN acc.fac_version_cust IN ('ALLR') THEN flx.getflex('ALG',1320, l.alg_locatie_key, 'L') ELSE dp.mld_disc_params_emailnw3 END vakgroep_email, CASE WHEN acc.fac_version_cust IN ('ALLR') THEN (SELECT MAX (ud.fac_usrdata_key) FROM fac_usrtab ut, fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND UPPER (ut.fac_usrtab_naam) = 'ORDTRACK_CUST16' AND ud.fac_usrdata_verwijder IS NULL AND ( ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > TRUNC (SYSDATE)) AND LOWER (ud.fac_usrdata_omschr) = LOWER(flx.getflex('ALG',1320, l.alg_locatie_key, 'L')) ) ELSE (SELECT MAX (ud.fac_usrdata_key) FROM fac_usrtab ut, fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND UPPER (ut.fac_usrtab_naam) = 'ORDTRACK_CUST16' AND ud.fac_usrdata_verwijder IS NULL AND ( ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > TRUNC (SYSDATE)) AND LOWER (ud.fac_usrdata_omschr) = LOWER(dp.mld_disc_params_emailnw3) ) END extra_key, -- Voor gesplitste rapporten geven we een extra_key mee. Deze wordt via eigen tabel ORDTRACK_CUST16 beheerd m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, o.mld_opdr_key, u.naam uitvoerder, po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, ot.mld_typeopdr_omschrijving opdracht_type, 'Notitie' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign TO_CHAR (mld_opdr_note_aanmaak, 'dd-mm-yyyy hh24:mi:ss') datum, pn.prs_perslid_naam || ' (' || pn.prs_perslid_voornaam || ')' actie_door, 'Notitie' actie_omschrijving, -- Subsoort voor status mld_opdr_note_omschrijving actie_details, note.mld_opdr_note_aanmaak datum_mutatie_filter, TO_NUMBER(TO_CHAR(note.mld_opdr_note_aanmaak, 'hh24')) uur_filter FROM mld_melding m, mld_opdr o, mld_typeopdr ot, mld_v_uitvoerende u, mld_opdr_note note, prs_perslid pn, prs_perslid po, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, aaxx_v_dwh_alg_onrgoed og, alg_locatie l, (SELECT m.mld_melding_key, og.alg_gebouw_key, CASE WHEN aaxx_get_user = 'INLO' AND fud.fac_usrdata_omschr = 'Covestro' THEN fud.fac_usrdata_omschr || ' - ' || og.alg_locatie_omschrijving WHEN aaxx_get_user = 'INLO' AND fud.fac_usrdata_omschr = 'Upfield Europe B.V.' THEN fud.fac_usrdata_omschr || ' - ' || og.alg_locatie_omschrijving ELSE fud.fac_usrdata_omschr END klant FROM mld_melding m, aaxx_v_dwh_alg_onrgoed og, alg_onrgoedkenmerk k, fac_usrdata fud WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_gebouw_key = k.alg_onrgoed_key AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100) AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key) v, (SELECT fac_version_cust FROM fac_version) acc WHERE o.mld_opdr_key = note.mld_opdr_key AND m.mld_melding_key = o.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_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_discipline_key = dp.mld_ins_discipline_key AND note.prs_perslid_key = pn.prs_perslid_key AND pn.prs_perslid_verwijder IS NULL AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key AND o.prs_perslid_key = po.prs_perslid_key(+) AND m.mld_alg_locatie_key = og.alg_locatie_key AND og.alg_locatie_key = l.alg_locatie_key AND og.alg_type = 'L' AND o.mld_melding_key = v.mld_melding_key(+) AND note.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT' OR g.fac_groep_key = 263) -- ALLR - groep FSP GROUP BY gg.prs_perslid_key ) UNION SELECT -- Voor status acc.fac_version_cust account, CASE WHEN acc.fac_version_cust IN ('INLO') THEN v.klant ELSE NULL END subaccount, -- in geval INLO CASE WHEN acc.fac_version_cust IN ('RABO') THEN og.alg_regio_omschrijving WHEN acc.fac_version_cust IN ('AADS', 'AASA') THEN og.alg_district_omschrijving WHEN acc.fac_version_cust IN ('ALLR') THEN l.alg_locatie_upper ELSE NULL END regio, -- in geval dsm, rabo en sabic CASE WHEN acc.fac_version_cust IN ('ALLR') THEN flx.getflex('ALG',1320, l.alg_locatie_key, 'L') ELSE dp.mld_disc_params_emailnw3 END vakgroep_email, CASE WHEN acc.fac_version_cust IN ('ALLR') THEN (SELECT MAX (ud.fac_usrdata_key) FROM fac_usrtab ut, fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND UPPER (ut.fac_usrtab_naam) = 'ORDTRACK_CUST16' AND ud.fac_usrdata_verwijder IS NULL AND ( ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > TRUNC (SYSDATE)) AND LOWER (ud.fac_usrdata_omschr) = LOWER(flx.getflex('ALG',1320, l.alg_locatie_key, 'L')) ) ELSE (SELECT MAX (ud.fac_usrdata_key) FROM fac_usrtab ut, fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND UPPER (ut.fac_usrtab_naam) = 'ORDTRACK_CUST16' AND ud.fac_usrdata_verwijder IS NULL AND ( ud.fac_usrdata_vervaldatum IS NULL OR ud.fac_usrdata_vervaldatum > TRUNC (SYSDATE)) AND LOWER (ud.fac_usrdata_omschr) = LOWER(dp.mld_disc_params_emailnw3) ) END extra_key, -- Voor gesplitste rapporten geven we een extra_key mee. Deze wordt via eigen tabel ORDTRACK_CUST16 beheerd m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, o.mld_opdr_key, u.naam uitvoerder, po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, ot.mld_typeopdr_omschrijving opdracht_type, 'Status' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign TO_CHAR (t.datum, 'dd-mm-yyyy hh24:mi:ss') datum, pt.prs_perslid_naam || ' (' || pt.prs_perslid_voornaam || ')' actie_door, COALESCE (vert.actiecode_tekst, t.actiecode) actie_omschrijving, t.omschrijving actie_details, t.datum datum_mutatie_filter, TO_NUMBER(TO_CHAR(t.datum, 'hh24')) uur_filter FROM mld_melding m, mld_opdr o, mld_typeopdr ot, aaxx_v_dwh_tracking t, (SELECT UPPER (SUBSTR (fac_locale_xsl_label, 12)) AS actiecode, fac_locale_xsl_tekst AS actiecode_tekst FROM fac_locale_xsl WHERE INSTR (fac_locale_xsl_label, 'lcl_ord_is_') > 0 AND fac_locale_xsl_lang = 'NL') vert, mld_v_uitvoerende u, prs_perslid pt, prs_perslid po, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, aaxx_v_dwh_alg_onrgoed og, alg_locatie l, (SELECT m.mld_melding_key, og.alg_gebouw_key, CASE WHEN aaxx_get_user = 'INLO' AND fud.fac_usrdata_omschr = 'Covestro' THEN fud.fac_usrdata_omschr || ' - ' || og.alg_locatie_omschrijving WHEN aaxx_get_user = 'INLO' AND fud.fac_usrdata_omschr = 'Upfield Europe B.V.' THEN fud.fac_usrdata_omschr || ' - ' || og.alg_locatie_omschrijving ELSE fud.fac_usrdata_omschr END klant FROM mld_melding m, aaxx_v_dwh_alg_onrgoed og, alg_onrgoedkenmerk k, fac_usrdata fud WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys AND og.alg_gebouw_key = k.alg_onrgoed_key AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100) AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key) v, (SELECT fac_version_cust FROM fac_version) acc WHERE o.mld_opdr_key = t.ref_key AND t.soort = 'opdracht' AND t.actiecode = vert.actiecode(+) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND m.mld_melding_key = o.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_discipline_key = dp.mld_ins_discipline_key AND t.prs_perslid_key = pt.prs_perslid_key AND pt.prs_perslid_verwijder IS NULL AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key AND o.prs_perslid_key = po.prs_perslid_key(+) AND m.mld_alg_locatie_key = og.alg_locatie_key AND og.alg_locatie_key = l.alg_locatie_key AND og.alg_type = 'L' AND o.mld_melding_key = v.mld_melding_key(+) AND t.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_externid = 'BO_SERVICEDESK' OR g.fac_groep_externid = 'BO_SERVICEDESK_KLANT' OR g.fac_groep_key = 263) -- ALLR - groep FSP GROUP BY gg.prs_perslid_key ) ; -- Job voor de ordertrackinglijst te versturen --- Ps. Omdat de last_job_run wat later wordt gezet dan de fac_tracking op cust16 halen we er in de where een minuutje van af.. (- 1/(24*60)) CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_OT -- OT = Ordertrackinglijst ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, 'Ordertrackinglijst klant ' || acc.fac_version_cust text, 'CUST16' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST16') fac_srtnotificatie_key, DECODE (acc.fac_version_cust, 'RABO', 1321, 'INLO', 1041, 'CVGZ', 681, 'NMMS', 1001, 'AAAH', 1261, 'AAAR', 1101, 'AADS', 2001, 'AAES', 901, 'AAGN', 1441, 'AASA', 1422, 'AQQA', 861, 'EXPO', 521, 'SMKA', 941, 'REME', 661, 'AAIT', 1863, 'ALLR', 1381, 'THHD', 761, 'MENZ', 881, 'BFNL', 741, 9999) key, v.extra_key xkey, -- op alle gesplitste ordertrackinglijsten gaan we de gevulde xkey meegeven. dit wordt via bronlijst netjes bepaald/gevuld v.vakgroep_email xemail, NULL xmobile FROM (SELECT UPPER(fac_version_cust) fac_version_cust from fac_version) acc, (SELECT vakgroep_email, extra_key FROM aaxx_v_rap_ordertracking_bron WHERE datum_mutatie_filter >= (SELECT COALESCE(fac_notificatie_job_lastrun - 1/(24*60), TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT') AND vakgroep_email IS NOT NULL AND LOWER(vakgroep_email) NOT IN ('functioneelbeheer@heydayfm.nl') -- Zie ticket AAIT#89211 Deze Ordertrackinglijst voor FB stop zetten GROUP BY vakgroep_email, extra_key) v ; -- Rapportview behorende bij job AAXX_V_NOTIFY_BACKOFFICE_OT --- De lijst die gemaild wordt - inclusief filtering op notificatie-interval CREATE OR REPLACE VIEW aaxx_v_rap_ordertrackinglijst ( account, subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...! regio, -- in geval dsm en rabo vakgroep_email, extra_key, -- vanuit job extra filter_key opdrachtnr, mld_opdr_key, uitvoerder, behandelaar, opdracht_type, soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging datum, actie_door, actie_omschrijving, actie_details, run_deze, run_vorige ) AS SELECT v.account, v.subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...! v.regio, -- in geval dsm en rabo vakgroep_email, v.extra_key, -- vanuit job extra filter_key v.opdrachtnr, v.mld_opdr_key, v.uitvoerder, v.behandelaar, v.opdracht_type, v.soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging v.datum, v.actie_door, v.actie_omschrijving, v.actie_details, TO_CHAR (d.last_jobrun, 'dd-mm-yyyy hh24:mi:ss') run_deze, TO_CHAR (d.last_cust16, 'dd-mm-yyyy hh24:mi:ss') run_vorige FROM aaxx_v_rap_ordertracking_bron v, (SELECT MAX (COALESCE(ft.fac_tracking_datum, SYSDATE)) last_cust16, -- subview waarin notificatie-interval bepaald wordt (=datums waartussen het resultaat in rapport getoond moet worden) MAX ((SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT')) last_jobrun FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST16' AND ft.fac_tracking_datum < (SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT') ) d WHERE v.datum_mutatie_filter BETWEEN d.last_cust16 AND d.last_jobrun ; -- Notificatiejob voor notificeren uitvoerder bij goedkeuring en/of afkeuring van de kosten (ticket 62830) ---- CUST13 voor goedkeuring ---- CUST14 voor afkeuring CREATE OR REPLACE VIEW AAXX_V_NOTI_UITVOERDER_KOSTEN ( SENDER, RECEIVER, TEXT, CODE, FAC_SRTNOTIFICATIE_KEY, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, CASE WHEN w.akkoord = 'ja' THEN 'Notificatie ivm goedkeuring opdracht ' || w.opdrachtnr ELSE 'Notificatie ivm afkeuring opdracht ' || w.opdrachtnr END text, CASE WHEN w.akkoord = 'ja' THEN 'CUST13' ELSE 'CUST14' END code, CASE WHEN w.akkoord = 'ja' THEN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST13') ELSE (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST14') END fac_srtnotificatie_key, w.mld_opdr_key key, NULL xkey, w.email AS x_email, NULL xmobile FROM mld_opdr o, (SELECT v.mld_typeopdr_omschrijving, v.mld_melding_key, v.opdrachtnr, v.mld_opdr_key, v.mld_statusopdr_key, v.status_nu, v.status, CASE WHEN COALESCE (v.datum_goedgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) > COALESCE (v.datum_afgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) THEN 'ja' WHEN COALESCE (v.datum_goedgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) < COALESCE (v.datum_afgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) THEN 'nee' ELSE 'nvt' END AS akkoord, CASE WHEN COALESCE (v.datum_goedgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) > COALESCE (v.datum_cust13, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) AND COALESCE(v.datum_ORDSNT, sysdate) < v.datum_goedgekeurd AND TRUNC(v.datum_goedgekeurd) >= TRUNC(sysdate-3) -- Peildatum, 3 dagen na goedkeuring zodat bij aanzetten job de mailing niet te gedateerd is en alleen actuele goedkeuringen gemaild worden THEN 'ja' -- ja, opnieuw te notificeren ELSE 'nee' END AS te_notificeren_cust13, CASE WHEN COALESCE (v.datum_afgekeurd, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) > COALESCE (v.datum_cust14, TO_DATE ('01-01-1900', 'dd-mm-yyyy')) AND TRUNC(v.datum_afgekeurd) = TRUNC(sysdate) -- Binnen zelfde dag vanuit SD actie om na te bellen THEN 'ja' -- ja, opnieuw te notificeren ELSE 'nee' END AS te_notificeren_cust14, v.mld_statusopdr_key_refiat, v.mld_opdr_kosten, v.mld_opdr_kosten_refiat, v.mld_opdr_approved, v.mld_opdr_teverzenden, v.mld_opdr_verzonden, v.datum_ORDSNT, v.mld_opdr_teverzenden_datum, v.datum_goedgekeurd, v.datum_cust13, v.datum_afgekeurd, v.datum_cust14, COALESCE (v.email_contactpers, v.email_relatie, v.email_servicedesk) AS email FROM (SELECT ot.mld_typeopdr_omschrijving, o.mld_melding_key, o.mld_melding_key || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) AS opdrachtnr, o.mld_opdr_key, o.mld_statusopdr_key, os.mld_statusopdr_omschrijving AS status_nu, (CASE WHEN o.mld_statusopdr_key IN (5, 8) THEN 'lopend' -- alle lopende statussen die voor deze job relevant zijn (toegekend, geaccepteerd) WHEN o.mld_statusopdr_key IN (6) THEN 'uitgevoerd' -- alle uitgevoerde statussen die voor deze job relenvant zijn (afgemeld) ELSE 'intern' -- opdracht ligt INTERN ter controle, ter fiattering, afgekeurd, afgewezen, financieel voltooid, verwerkt END) status, o.mld_statusopdr_key_refiat, o.mld_opdr_kosten, o.mld_opdr_kosten_refiat, o.mld_opdr_approved, o.mld_opdr_teverzenden, o.mld_opdr_verzonden, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND sn.fac_srtnotificatie_code = 'ORDSNT') AS datum_ORDSNT, o.mld_opdr_teverzenden_datum, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND ( (sn.fac_srtnotificatie_code = 'ORDUPD' AND INSTR (LOWER (ft.fac_tracking_oms), 'opdracht is goedgekeurd') > 0) OR (sn.fac_srtnotificatie_code='ORDFOK') ) ) AS datum_goedgekeurd, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND sn.fac_srtnotificatie_code = 'CUST13') AS datum_cust13, -- Datum genotificeerd door noti-job (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND ( sn.fac_srtnotificatie_code = 'ORDGNO' OR sn.fac_srtnotificatie_code = 'ORDFNO')) AS datum_afgekeurd, (SELECT MAX (ft.fac_tracking_datum) FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_tracking_refkey = o.mld_opdr_key AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND sn.fac_srtnotificatie_code = 'CUST14') AS datum_cust14, -- Datum genotificeerd door noti-job (SELECT prs_contactpersoon_email FROM prs_contactpersoon WHERE prs_contactpersoon_key = o.prs_contactpersoon_key) AS email_contactpers, (SELECT prs_bedrijf_email FROM prs_bedrijf WHERE prs_bedrijf_key = o.mld_uitvoerende_keys) AS email_relatie, (SELECT dp.mld_disc_params_emailnw3 FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp WHERE 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_discipline_key = dp.mld_ins_discipline_key AND m.mld_melding_key = o.mld_melding_key) AS email_servicedesk -- uit vakgroep FROM mld_opdr o, mld_statusopdr os, mld_typeopdr ot WHERE o.mld_statusopdr_key = os.mld_statusopdr_key AND o.mld_statusopdr_key NOT IN (7) -- Sowieso uitgesloten: Verwerkte opdrachten AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_isofferte = 0 ) v ) w WHERE o.mld_opdr_key = w.mld_opdr_key AND (w.status = 'lopend' OR w.status = 'uitgevoerd') AND ( (w.akkoord = 'ja' and w.te_notificeren_cust13 = 'ja') OR (w.akkoord = 'nee' and w.te_notificeren_cust14 = 'ja') ) ; -- Domeinview voor Assetmanagement - Zie ticket 70981 - verzoek registratie nieuw asset CREATE OR REPLACE VIEW aaxx_v_nen2767_meldingen ( KEY, OMSCHRIJVING ) AS SELECT sm.mld_stdmelding_key, disc.ins_discipline_omschrijving || ' - ' || sm.mld_stdmelding_omschrijving FROM mld_stdmelding sm, mld_discipline disc WHERE disc.ins_srtdiscipline_key = FAC.getSetting ('cnd_gebreken_srtdisc_key') AND sm.mld_stdmelding_code <> 'GEEN' AND sm.mld_stdmelding_omschrijving <> 'Nieuwe asset' AND disc.ins_discipline_verwijder IS NULL AND sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_vervaldatum IS NULL ORDER BY disc.ins_discipline_omschrijving, sm.mld_stdmelding_omschrijving ; -- Basisview NEN2767 - Tbv totaalrapportage voor heyday (informatie gebouw / assets inclusief lopende gebreken ---- loopt gestyled rapport op: MJOB - Rapportage MJOB/NEN2767 CREATE OR REPLACE VIEW aaxx_v_rap_mjob_nen2767 ( INS_DEEL_KEY, ALG_GEBOUW_KEY, MLD_MELDING_KEY, -- GEGEVENS GEBOUW/LOCATIE LOCATIE_CODE, LOCATIE_NAAM, LOCATIE_PLAATS, GEBOUW_CODE, GEBOUW_NAAM, GEBOUW_ADRES, GEBOUW_POSTCODE, GEBOUW_CONDITIE, GEBOUW_ORGANISATIE, GEBOUW_BEBOUWDOPPERVLAK_M2, GEBOUW_BOUWJAAR, GEBOUW_ENERGIELABEL, GEBOUW_ENERGIELABEL_DATUM, NAAM_INSPECTECTIEBUREAU, NAAM_INSPECTEURS, INSPECTIEDATUM, PRIJSPEILJAAR, BTW, BTW_PERCENTAGE, GEBOUW_FOTO_0, GEBOUW_FOTO_1, GEBOUW_FOTO_2, RISICO_PRIO_MATRIX, GEBOUWFUNCTIE, OPDRACHTGEVER, OPDRACHTGEVER_ADRES, OPDRACHTGEVER_TELEFOON, MJOB_10JR, -- GEGEVENS OBJECT HOOFDGROEP, GROEP, OBJECTSOORT, IDENTIFICATIE, CONDITIE, PRIORITEIT, INS_DEEL_OPMERKING, INS_DEEL_AANTAL, INS_KENMERK_EENHEID, INS_KENMERK_PLAATS, INS_KENMERK_LEVERANCIERNR, INS_KENMERK_CAPACITEIT, INS_KENMERK_TYPE, INS_KENMERK_FABRICAAT, INS_KENMERK_BOUWJAAR, INS_KENMERK_CONDITIE_INIT, INS_KENMERK_CONDITIE_GEWENST, INS_KENMERK_CONDITIE_DUURZAAMHEID, -- GEGEVENS GEBREKSMELDING GEBREKNR, DATUM_TIJD, DATUM, INSPECTEUR, STATUS, GEBREK, ERNST, OMVANG, INTENSITEIT, ASPECT1, ASPECT2, ASPECT3, ASPECT4, ASPECT5, ASPECT6, ASPECT7, FOTO, GEADVISEERD_STARTJAAR, DATUM_GEREED_INSPECTEUR, KOSTEN, WERKZAAMHEDEN -- omschrijving ) AS SELECT d.ins_deel_key, aog.alg_gebouw_key, gm.mld_melding_key, -- GEGEVENS GEBOUW/LOCATIE l.alg_locatie_code locatie_code, l.alg_locatie_omschrijving locatie_naam, l.alg_locatie_plaats locatie_plaats, g.alg_gebouw_code gebouw_code, g.alg_gebouw_naam gebouw_naam, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'ADRES'), -1), aog.alg_gebouw_key, 'G') alg_gebouw_adres, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'POSTCODE'), -1), aog.alg_gebouw_key, 'G') alg_gebouw_postcode, g.alg_gebouw_mjb_score1, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'ORGANISATIE'), -1), aog.alg_gebouw_key, 'G') gebouw_organisatie, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'BEBOUWD OPP.(M2)'), -1), aog.alg_gebouw_key, 'G') gebouw_bebouwdoppervlak_m2, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'BOUWJAAR'), -1), aog.alg_gebouw_key, 'G') gebouw_bouwjaar, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'ENERGIELABEL'), -1), aog.alg_gebouw_key, 'G') gebouw_energielabel, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'ENERGIELABEL DATUM'), -1), aog.alg_gebouw_key, 'G') gebouw_energielabel_datum, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'NAAM INSPECTIEBUREAU'), -1), aog.alg_gebouw_key, 'G') naam_inspectiebureau, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'NAAM INSPECTEUR(S)'), -1), aog.alg_gebouw_key, 'G') naam_inspecteurs, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'INSPECTIEDATUM'), -1), aog.alg_gebouw_key, 'G') inspectiedatum, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'PRIJSPEILJAAR'), -1), aog.alg_gebouw_key, 'G') prijspeiljaar, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'BTW'), -1), aog.alg_gebouw_key, 'G') btw, flx.getflex ( 'ALG', COALESCE ( (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_verwijder IS NULL AND alg_kenmerk_upper = 'BTW PERCENTAGE'), -1), aog.alg_gebouw_key, 'G') btw_percentage, (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_upper = 'FOTO GEBOUW - AANZICHT (0)') gebouw_foto_0, (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_upper = 'FOTO GEBOUW - AANZICHT (1)') gebouw_foto_1, (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_upper = 'FOTO GEBOUW - AANZICHT (2)') gebouw_foto_2, (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_upper = 'RISICO/PRIORITEIT-MATRIX') risico_prio_matrix, sg.alg_srtgebouw_omschrijving, 'HEYDAY Facility Management' opdrachtgever, 'Het Zuiderkruis 51' || CHR (10) || '5215 MV' || CHR (10) || CHR (39) || 's-Hertogenbosch' opdrachtgever_adres, '+31 402332800' opdrachtgever_telefoon, (SELECT alg_kenmerk_key FROM alg_kenmerk WHERE alg_kenmerk_niveau = 'G' AND alg_kenmerk_upper = 'MJOP - 10 JAAR (HOOFDGROEPEN)') mjob_10jr, -- GEGEVENS OBJECT id.ins_discipline_omschrijving hoofdgroep, isg.ins_srtgroep_omschrijving groep, isd.ins_srtdeel_omschrijving || ' (' || isd.ins_srtdeel_code || ')' objectsoort, d.ins_deel_omschrijving identificatie, d.ins_deel_mjb_score1, d.ins_deel_mjb_score2, d.ins_deel_opmerking, d.ins_deel_aantal, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'EENHEID'), -1), d.ins_deel_key) ins_kenmerk_eenheid, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'PLAATS'), -1), d.ins_deel_key) ins_kenmerk_plaats, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'REFERENTIENUMMER LEVERANCIER'), -1), d.ins_deel_key) ins_kenmerk_leveranciernr, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'CAPACITEIT'), -1), d.ins_deel_key) ins_kenmerk_capaciteit, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'TYPE'), -1), d.ins_deel_key) ins_kenmerk_type, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'FABRICAAT'), -1), d.ins_deel_key) ins_kenmerk_fabricaat, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'BOUWJAAR'), -1), d.ins_deel_key) ins_kenmerk_bouwjaar, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'CONDITIE NULMETING'), -1), d.ins_deel_key) ins_kenmerk_conditie_init, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'GEWENSTE CONDITIE'), -1), d.ins_deel_key) ins_kenmerk_conditie_gewenst, flx.getflex ( 'INS', COALESCE ( (SELECT MAX (k.ins_kenmerk_key) FROM ins_kenmerk k, ins_srtkenmerk sk, ins_tab_discipline d WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key AND k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = d.ins_discipline_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND sk.ins_srtkenmerk_upper = 'DUURZAAMHEID'), -1), d.ins_deel_key) ins_kenmerk_duurzaamheid, -- GEGEVENS LOPENDE GEBREKSMELDINGEN gm.gebreknummer, gm.datum_tijd, gm.datum, gm.inspecteur, gm.status, gm.gebrek, gm.ernst, gm.omvang, gm.intensiteit, gm.aspect1, gm.aspect2, gm.aspect3, gm.aspect4, gm.aspect5, gm.aspect6, gm.aspect7, gm.foto, gm.geadviseerd_startjaar, gm.datum_gereed_inspecteur, gm.kosten, gm.werkzaamheden FROM ins_deel d, alg_v_allonrgoed_gegevens aog, alg_gebouw g, alg_srtgebouw sg, alg_locatie l, ins_srtdeel isd, ins_srtgroep isg, ins_discipline id, (SELECT mo.ins_deel_key, m.mld_melding_key, m.mld_melding_key gebreknummer, m.mld_melding_datum datum_tijd, TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') datum, pf.prs_perslid_naam_full inspecteur, s.mld_statuses_omschrijving status, std.mld_stdmelding_omschrijving gebrek, m.mld_melding_omschrijving werkzaamheden, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ERNST' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) ernst, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'OMVANG' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) omvang, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'INTENSITEIT' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) intensiteit, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT1' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect1, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT2' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect2, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT3' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect3, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT4' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect4, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT5' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect5, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT6' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect6, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding mk, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud WHERE sk.mld_srtkenmerk_code = 'ASPECT7' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = mk.mld_kenmerk_key AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = ut.fac_usrtab_key AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde AND mk.mld_melding_key = m.mld_melding_key) aspect7, (SELECT k.mld_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE sk.mld_srtkenmerk_code = 'FOTO' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key) foto, (SELECT mkm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mkm, mld_kenmerk k, mld_srtkenmerk sk WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'GEADVISEERD STARTJAAR') geadviseerd_startjaar, (SELECT mkm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mkm, mld_kenmerk k, mld_srtkenmerk sk WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'DATUM GEREED (INSPECTEUR)') datum_gereed_inspecteur, (SELECT mkm.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mkm, mld_kenmerk k, mld_srtkenmerk sk WHERE mkm.mld_melding_key = m.mld_melding_key AND mkm.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_code = 'KOSTEN') kosten FROM mld_melding m, mld_melding_object mo, mld_statuses s, prs_v_perslid_fullnames_all pf, mld_stdmelding std, mld_discipline d, ins_srtdiscipline sd WHERE m.mld_melding_key = mo.mld_melding_key AND s.mld_statuses_key = m.mld_melding_status AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key = (SELECT COALESCE (fac_setting_pvalue, fac_setting_default) FROM fac_setting WHERE fac_setting_name = 'cnd_gebreken_srtdisc_key') -- alleen lopende gebreken tonen AND m.mld_melding_status IN (2,3,4,7,99) ) gm -- lopende gebreksmeldingen op dit asset WHERE d.ins_alg_ruimte_type = 'R' AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys AND aog.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key AND d.ins_srtdeel_key = isd.ins_srtdeel_key AND isd.ins_srtgroep_key = isg.ins_srtgroep_key AND isg.ins_discipline_key = id.ins_discipline_key -- lopende gebreksmelding AND d.ins_deel_key = gm.ins_deel_key(+) ; -- Compliance verklaring (ticket AAXX#86360) CREATE OR REPLACE VIEW AAXX_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, OP_COMPLIANCE, -- In basistaak_info-veld opgenomen of de taak wel/niet in de compliance meegenomen moet worden DEELSOORTCONTROLE_KEY, -- Laatste uitvoer_key STATUS, INS_DEEL_KEY, INLO_SUBACCOUNT, LOCATIE_PLAATS, REGIO, DISTRICT, LOCATIE, LOCATIE_CODE, GEBOUW_NAAM, GEBOUWFUNCTIE, VERVALDATUM_GEBOUW, HEYDAY_GEBOUWVERANTW, HEYDAY_GEBOUWVERANTW_MAIL, HEYDAY_GEBOUWVERANTW_TEL, 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, DIENST, DIENST_LEV_BDL, DIENST_LEV_BDL_AANTAL ) 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 = ut.key_vj THEN TO_CHAR(sysdate,'YYYY')-1 ELSE TO_CHAR(sysdate,'YYYY')-0 END -- key van 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, CASE WHEN INSTR(UPPER(sc.ins_srtcontrole_info), 'NIET OP COMPLIANCE')>0 THEN 'nee' ELSE 'ja' END op_compliance, t.laatste_uitvoer_key, DECODE (dc.ins_deelsrtcontrole_status, 0, 'Ingepland', 2, 'In behandeling', 5, 'Afgemeld', 6, 'Voltooid') status, d.ins_deel_key, v.inlo_subaccount, l.alg_locatie_plaats || ' ' || l.alg_locatie_adres, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, g.alg_gebouw_naam || ' (' || g.alg_gebouw_code || ')' alg_gebouw_naam, sg.alg_srtgebouw_omschrijving gebouwfunctie, TO_CHAR(g.alg_gebouw_vervaldatum,'dd-mm-yyyy'), CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam END heyday_gebouwverantw, p.prs_perslid_email heyday_gebouwverantw_mail, CASE WHEN p.prs_perslid_telefoonnr IS NOT NULL THEN p.prs_perslid_telefoonnr WHEN p.prs_perslid_telefoonnr IS NULL AND p.prs_perslid_mobiel IS NOT NULL THEN p.prs_perslid_mobiel WHEN p.prs_perslid_telefoonnr IS NULL AND p.prs_perslid_mobiel IS NULL THEN 'n.b.' ELSE NULL END heyday_gebouwverantw_tel, 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,ut.key_vj,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 = ut.key_vj -- 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 = ut.key_lj -- 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,ut.key_vj,1,0)) -- 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,ut.key_vj,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, die.prs_dienst_omschrijving, bdl.lev_max dienst_lev_bdl, bdl.aantal_leveranciers dienst_lev_bdl_aantal FROM ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst die, 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, prs_perslid p, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, alg_locatie l, alg_district di, alg_regio r, alg_srtgebouw sg, (SELECT ut.fac_usrtab_key, ut.fac_usrtab_naam , ud.fac_usrdata_key, ud.fac_usrdata_upper FROM fac_usrdata ud, fac_usrtab ut WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_naam = 'ASSET_COMPLIANCE' AND ut.fac_usrtab_verwijder IS NULL AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrdata_vervaldatum IS NULL ) ud, (SELECT ut.fac_usrtab_key, (SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ud.fac_usrdata_upper = 'COMPLIANCE VOORGAAND JAAR') key_vj, (SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ud.fac_usrdata_upper = 'COMPLIANCE LOPEND JAAR') key_lj FROM fac_usrtab ut WHERE ut.fac_usrtab_naam = 'ASSET_COMPLIANCE' AND ut.fac_usrtab_verwijder IS NULL ) ut, ( SELECT d.prs_dienst_key, d.prs_dienst_omschrijving, g.alg_gebouw_key, MAX (b.prs_bedrijf_naam) lev_max, MIN (b.prs_bedrijf_naam) lev_min, count(*) aantal_leveranciers FROM prs_bedrijfdienstlocatie bdl, prs_dienst d, prs_bedrijf b, alg_gebouw g, alg_locatie l WHERE d.prs_dienst_key = bdl.prs_dienst_key AND b.prs_bedrijf_key = bdl.prs_bedrijf_key AND bdl.alg_gebouw_key IS NOT NULL AND bdl.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key GROUP BY d.prs_dienst_omschrijving, d.prs_dienst_key, g.alg_gebouw_key ) bdl WHERE d.ins_deel_key = t.ins_deel_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND t.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.prs_dienst_key = die.prs_dienst_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 (321) -- Groep 01 Algemeen uitsluiten AND d.alg_gebouw_key = g.alg_gebouw_key AND g.prs_perslid_key_verantw = p.prs_perslid_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 g.alg_gebouw_key = bdl.alg_gebouw_key (+) AND g.alg_gebouw_key = v.alg_gebouw_key (+) AND sc.prs_dienst_key = bdl.prs_dienst_key (+) 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 = ut.key_vj THEN TO_CHAR(sysdate,'YYYY')-1 ELSE TO_CHAR(sysdate,'YYYY')-0 END 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, CASE WHEN INSTR(UPPER(sc.ins_srtcontrole_info), 'NIET OP COMPLIANCE')>0 THEN 'nee' ELSE 'ja' END op_compliance, NULL deelsrtcontrole_key, NULL status, d.ins_deel_key, v.inlo_subaccount, l.alg_locatie_plaats || ' ' || l.alg_locatie_adres, r.alg_regio_omschrijving, di.alg_district_omschrijving, l.alg_locatie_omschrijving, l.alg_locatie_code, g.alg_gebouw_naam || ' (' || g.alg_gebouw_code || ')' alg_gebouw_naam, sg.alg_srtgebouw_omschrijving gebouwfunctie, TO_CHAR(g.alg_gebouw_vervaldatum,'dd-mm-yyyy'), CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam END heyday_gebouwverantw, p.prs_perslid_email heyday_gebouwverantw_mail, CASE WHEN p.prs_perslid_telefoonnr IS NOT NULL THEN p.prs_perslid_telefoonnr WHEN p.prs_perslid_telefoonnr IS NULL AND p.prs_perslid_mobiel IS NOT NULL THEN p.prs_perslid_mobiel WHEN p.prs_perslid_telefoonnr IS NULL AND p.prs_perslid_mobiel IS NULL THEN 'n.b.' ELSE NULL END heyday_gebouwverantw_tel, 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, die.prs_dienst_omschrijving, bdl.lev_max dienst_lev_bdl, bdl.aantal_leveranciers dienst_lev_bdl_aantal FROM ins_v_deel_gegevens d, ins_srtcontrole sc, prs_dienst die, 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, prs_perslid p, (SELECT g.alg_gebouw_key, fud.fac_usrdata_upper, fud.fac_usrdata_omschr inlo_subaccount FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud WHERE g.alg_gebouw_key = k.alg_onrgoed_key AND k.alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, NULL) AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key ) v, alg_locatie l, alg_district di, alg_regio r, alg_srtgebouw sg, (SELECT ut.fac_usrtab_key, ut.fac_usrtab_naam , ud.fac_usrdata_key, ud.fac_usrdata_upper FROM fac_usrdata ud, fac_usrtab ut WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ut.fac_usrtab_naam = 'ASSET_COMPLIANCE' AND ut.fac_usrtab_verwijder IS NULL AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrdata_vervaldatum IS NULL ) ud, (SELECT ut.fac_usrtab_key, (SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ud.fac_usrdata_upper = 'COMPLIANCE VOORGAAND JAAR') key_vj, (SELECT ud.fac_usrdata_key FROM fac_usrdata ud WHERE ud.fac_usrtab_key = ut.fac_usrtab_key AND ud.fac_usrdata_upper = 'COMPLIANCE LOPEND JAAR') key_lj FROM fac_usrtab ut WHERE ut.fac_usrtab_naam = 'ASSET_COMPLIANCE' AND ut.fac_usrtab_verwijder IS NULL ) ut, ( SELECT d.prs_dienst_key, d.prs_dienst_omschrijving, g.alg_gebouw_key, MAX (b.prs_bedrijf_naam) lev_max, MIN (b.prs_bedrijf_naam) lev_min, count(*) aantal_leveranciers FROM prs_bedrijfdienstlocatie bdl, prs_dienst d, prs_bedrijf b, alg_gebouw g, alg_locatie l WHERE d.prs_dienst_key = bdl.prs_dienst_key AND b.prs_bedrijf_key = bdl.prs_bedrijf_key AND bdl.alg_gebouw_key IS NOT NULL AND bdl.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key GROUP BY d.prs_dienst_omschrijving, d.prs_dienst_key, g.alg_gebouw_key ) bdl WHERE d.ins_deel_key = t.deel_key AND d.ins_discipline_omschrijving = 'Gebouwobjecten' AND t.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.prs_dienst_key = die.prs_dienst_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 (321) -- Groep 01 Algemeen uitsluiten AND d.alg_gebouw_key = g.alg_gebouw_key AND g.prs_perslid_key_verantw = p.prs_perslid_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 g.alg_gebouw_key = bdl.alg_gebouw_key (+) AND g.alg_gebouw_key = v.alg_gebouw_key (+) AND sc.prs_dienst_key = bdl.prs_dienst_key (+) ; CREATE OR REPLACE PROCEDURE aaxx_import_ins_assetman (p_import_key IN NUMBER) IS c_delim VARCHAR2 (1) := ';'; v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (400); v_ins_kenmerk_key1 VARCHAR2 (255); v_ins_kenmerk_key2 VARCHAR2 (255); v_ins_kenmerk_key3 VARCHAR2 (255); v_ins_kenmerk_key4 VARCHAR2 (255); v_ins_kenmerk_key5 VARCHAR2 (255); v_ins_kenmerk_key6 VARCHAR2 (255); v_ins_kenmerk_key7 VARCHAR2 (255); v_ins_kenmerk_key8 VARCHAR2 (255); v_ins_kenmerk_key9 VARCHAR2 (255); v_ins_kenmerk_key10 VARCHAR2 (255); v_ins_kenmerk_key11 VARCHAR2 (255); v_ins_kenmerk_key12 VARCHAR2 (255); v_ins_kenmerk_key13 VARCHAR2 (255); v_ins_kenmerk_key14 VARCHAR2 (255); v_ins_kenmerk_key15 VARCHAR2 (255); v_ins_kenmerk_key16 VARCHAR2 (255); v_ins_kenmerk_key17 VARCHAR2 (255); v_ins_kenmerk_key18 VARCHAR2 (255); v_ins_kenmerk_key19 VARCHAR2 (255); v_ins_kenmerk_key20 VARCHAR2 (255); -- De importvelden v_ins_discipline_omschrijving VARCHAR2 (255); -- C60 v_ins_discipline_kostensoort VARCHAR2 (255); --C60 v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 v_ins_srtdeel_code VARCHAR2 (255); -- C10 v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 v_ins_deel_omschrijving VARCHAR2 (255); -- C60 v_ins_deel_opmerking VARCHAR2 (1000); -- C320 v_alg_locatie_code VARCHAR2 (255); -- C10 v_alg_gebouw_code VARCHAR2 (255); -- C12 v_alg_verdieping_volgnr VARCHAR2 (255); -- N3 v_alg_verdieping_volgnr_n NUMBER (3); -- N3 v_alg_ruimte_nr VARCHAR2 (255); -- C10 v_ins_kenmerkwaarde1 VARCHAR2 (4000); v_ins_kenmerkwaarde2 VARCHAR2 (4000); v_ins_kenmerkwaarde3 VARCHAR2 (4000); v_ins_kenmerkwaarde4 VARCHAR2 (4000); v_ins_kenmerkwaarde5 VARCHAR2 (4000); v_ins_kenmerkwaarde6 VARCHAR2 (4000); v_ins_kenmerkwaarde7 VARCHAR2 (4000); v_ins_kenmerkwaarde8 VARCHAR2 (4000); v_ins_kenmerkwaarde9 VARCHAR2 (4000); v_ins_kenmerkwaarde10 VARCHAR2 (4000); v_ins_kenmerkwaarde11 VARCHAR2 (4000); v_ins_kenmerkwaarde12 VARCHAR2 (4000); v_ins_kenmerkwaarde13 VARCHAR2 (4000); v_ins_kenmerkwaarde14 VARCHAR2 (4000); v_ins_kenmerkwaarde15 VARCHAR2 (4000); v_ins_kenmerkwaarde16 VARCHAR2 (4000); v_ins_kenmerkwaarde17 VARCHAR2 (4000); v_ins_kenmerkwaarde18 VARCHAR2 (4000); v_ins_kenmerkwaarde19 VARCHAR2 (4000); v_ins_kenmerkwaarde20 VARCHAR2 (4000); v_ins_deel_aanmaak VARCHAR2 (255); -- DATE v_ins_deel_aanmaak_d DATE; v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE v_ins_deel_vervaldatum_d DATE; v_ins_deel_aantal VARCHAR2 (255); -- N8,2 v_ins_deel_aantal_n NUMBER(8, 2); v_file_index NUMBER; v_bestaande_objectketen NUMBER (10); v_bestaande_objectcode NUMBER (10); -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; -- LET OP!!! Dit is/was in DB39 op srtkenmerk_key. Is voor DB40 omgezet naar kenmerk_key. Zie ook in FAC_PACF.SRC (fac_import_ins) ---- DE AAXX met de hieronder aangepast procedure kan/moet dus pas vanaf 2021.1 meegeleverd worden!!! -- -- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key. -- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk. -- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk. -- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen. -- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende -- object-discipline/groep/soort, volgt pas tijdens de update-fase)! -- -- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten -- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3 -- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep) FUNCTION bepaal_kenmerk (p_kw IN VARCHAR) RETURN VARCHAR IS v_kenmerk_key NUMBER; v_kenmerk_groep NUMBER; v_kw VARCHAR(250); BEGIN v_kenmerk_groep := 0; v_kw := p_kw; IF INSTR (v_kw, '|') > 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT MIN(k.ins_kenmerk_key) INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND k.ins_kenmerk_key = fac.safe_to_number (v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; IF v_kenmerk_key IS NULL THEN RETURN NULL; ELSE -- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw) RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; BEGIN -- Eerst opruiming DELETE FROM fac_imp_ins; COMMIT; v_count_tot := 0; v_count_import := 0; header_is_valid := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_file_index := rec1.fac_imp_file_index; v_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code); fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking); fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code); fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code); fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr); fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr); fac.imp_getfield (v_newline, c_delim, v_ins_deel_aanmaak); fac.imp_getfield (v_newline, c_delim, v_ins_deel_vervaldatum); fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20); v_aanduiding := '[' || v_ins_discipline_omschrijving || '|' || v_ins_srtgroep_omschrijving || '|' || v_ins_srtdeel_code || '|' || v_ins_srtdeel_omschrijving || '|' || v_ins_deel_omschrijving || '] '; -- HEADER NIEUW HEYDAY ---- disciplineomschrijving;groepsoortomschrijving;objectsoortcode;objectsoortomschrijving;objectidentificatie;objectopmerking;locatiecode;gebouwcode;bouwlaagvolgnummer;ruimtenummer; ----- ingangsdatum;Vervaldatum;Aantal;Plaats;Aantal v2;Bouwjaar;Capaciteit;Datum laatste asset survey;Fabricaat;Gewenste Conditie;Conditie nulmeting;Kritische asset;Referentienummer leverancier;Type;Eenheid;Garantie tot datum;Garantiepartij;kenmerk15;kenmerk16;kenmerk17;kenmerk18;kenmerk19;kenmerk20 -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING' AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING' AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE' AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING' AND UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE' AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING' AND UPPER (v_alg_locatie_code) = 'LOCATIECODE' AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE' AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER' AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER' AND UPPER (v_ins_deel_aanmaak) = 'INGANGSDATUM' AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM' AND UPPER (v_ins_deel_aantal) = 'AANTAL' THEN v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1); v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2); v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3); v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4); v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5); v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6); v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7); v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8); v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9); v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10); v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11); v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12); v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13); v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14); v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15); v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16); v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17); v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18); v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19); v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20); header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Disciplineomschrijving ongeldig'; v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving); IF v_ins_discipline_omschrijving IS NULL OR LENGTH (v_ins_discipline_omschrijving) > 60 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Groepsoortomschrijving ongeldig'; v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving); IF v_ins_srtgroep_omschrijving IS NULL OR LENGTH (v_ins_srtgroep_omschrijving) > 60 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Objectsoortcode ongeldig'; v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code); IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Objectsoortomschrijving ongeldig'; v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving); IF v_ins_srtdeel_omschrijving IS NULL OR LENGTH (v_ins_srtdeel_omschrijving) > 100 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Objectomschrijving ongeldig'; v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); IF v_ins_deel_omschrijving IS NULL OR LENGTH (v_ins_deel_omschrijving) > 60 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errormsg := 'Objectopmerking ongeldig'; v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking); IF LENGTH (v_ins_deel_opmerking) > 320 THEN v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Objectopmerking wordt afgebroken tot [' || v_ins_deel_opmerking || ']' ); END IF; -- v_errormsg := 'Locatiecode ongeldig'; v_alg_locatie_code := TRIM (v_alg_locatie_code); IF LENGTH (v_alg_locatie_code) > 10 THEN v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Locatiecode wordt afgebroken tot [' || v_alg_locatie_code || ']' ); END IF; -- v_errormsg := 'Gebouwcode ongeldig'; v_alg_gebouw_code := TRIM (v_alg_gebouw_code); IF LENGTH (v_alg_gebouw_code) > 12 THEN v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Gebouwcode wordt afgebroken tot [' || v_alg_gebouw_code || ']' ); END IF; -- v_errormsg := 'Bouwlaagvolgnummer ongeldig'; v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr); v_alg_verdieping_volgnr_n := NULL; IF (v_alg_verdieping_volgnr IS NOT NULL) THEN v_alg_verdieping_volgnr_n := ROUND (fac.safe_to_number (v_alg_verdieping_volgnr)); IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999 THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_alg_verdieping_volgnr_n := fac.safe_to_number (v_alg_verdieping_volgnr); END IF; END IF; -- v_errormsg := 'Ruimtenummer ongeldig'; v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr); IF LENGTH (v_alg_ruimte_nr) > 10 THEN v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Ruimtenummer wordt afgebroken tot [' || v_alg_ruimte_nr || ']' ); END IF; -- v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99'; v_ins_deel_aantal := TRIM (v_ins_deel_aantal); v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.'); v_ins_deel_aantal_n := NULL; IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0) THEN IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal); END IF; ELSE v_ins_deel_aantal_n := 0 ; -- Als de aantal-waarde in kolom leeg wordt gelaten dan vullen we deze met 0. Bij update gaan we dit conform afspraak vullen met juiste aantal-waarde. END IF; -- v_errormsg := 'Aanmaakdatum ongeldig'; IF v_ins_deel_aanmaak IS NOT NULL THEN v_ins_deel_aanmaak_d := TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy'); IF fac.safe_to_number(to_char(v_ins_deel_aanmaak_d, 'yyyy'))<1900 THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Let op, verkeerde datumnotatie!'); END IF; ELSE v_ins_deel_aanmaak_d := NULL; END IF; -- v_errormsg := 'Vervaldatum ongeldig'; IF v_ins_deel_vervaldatum IS NOT NULL THEN v_ins_deel_vervaldatum_d := TO_DATE (v_ins_deel_vervaldatum, 'dd-mm-yyyy'); IF fac.safe_to_number(to_char(v_ins_deel_vervaldatum_d, 'yyyy'))<1900 THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Let op, verkeerde datumnotatie!'); END IF; ELSE v_ins_deel_vervaldatum_d := NULL; END IF; -- De rest alleen ff trimmen. v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1); v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2); v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3); v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4); v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5); v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6); v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7); v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8); v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9); v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10); v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11); v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12); v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13); v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14); v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15); v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16); v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17); v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18); v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19); v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20); -- Controle nieuwe objectcode en keten v_errormsg := 'Controle Objectidentificatie en keten'; IF v_ongeldig = 0 THEN v_bestaande_objectketen := 0; v_bestaande_objectcode := 0 ; SELECT count(*) INTO v_bestaande_objectketen FROM aaxx_v_dwh_ins_object v, ins_deel d WHERE UPPER (v_ins_discipline_omschrijving) = UPPER (v.discipline_omschrijving) AND UPPER (v_ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving) AND UPPER (v_ins_srtdeel_omschrijving) = UPPER (v.objectsoort_omschrijving) AND UPPER (v_ins_srtdeel_code) = UPPER (v.objectsoort_code) AND UPPER (v_ins_deel_omschrijving) = UPPER (v.identificatie) AND v.koppel_type = 'Ruimte' AND v.ins_deel_key = d.ins_deel_key AND v.ruimte_key = d.ins_alg_ruimte_key AND d.ins_deel_verwijder IS NULL ; SELECT count(*) INTO v_bestaande_objectcode FROM aaxx_v_dwh_ins_object v WHERE UPPER (v_ins_deel_omschrijving) = UPPER (v.identificatie) ; IF v_bestaande_objectketen=0 AND v_bestaande_objectcode > 0 THEN -- Nieuwe objectketen ECHTER de objectcode bestaat al. Klopt niet, dus we gaan waarschuwen en NIET inlezen.. v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Nieuwe objectketen in CSV aangeboden, ECHTER de objectidentificatie bestaat al in Facilitor onder andere keten!. Record wordt niet ingelezen'); END IF; END IF; -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; -- Als uit kenmerkheader een geldige kenmerksoort-key volgt, -- dan is kenmerkwaarde gevuld met =; zoniet, -- dan is kenmerkwaarde gevuld met ! -- NB. Een NULL-waarde resulteert NIET in het wissen van een -- kenmerkveld (bijwerken kan wel, maar wissen dus niet)! INSERT INTO fac_imp_ins ( ins_discipline_omschrijving, -- ins_discipline_kostensoort, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, reserveerbaar, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, res_deel_alg_level, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20, ins_deel_aanmaak, ins_deel_vervaldatum, ins_deel_aantal ) VALUES ( v_ins_discipline_omschrijving, v_ins_srtgroep_omschrijving, v_ins_srtdeel_code, v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_ins_deel_opmerking, 0, -- v_reserveerbaar_n, -- v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr_n, v_alg_ruimte_nr, -1, -- v_res_deel_alg_level_n, DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)), DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)), DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)), DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)), DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)), DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)), DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)), DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)), DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)), DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)), DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)), DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)), DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)), DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)), DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)), DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)), DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)), DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)), DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)), DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)), v_ins_deel_aanmaak_d, v_ins_deel_vervaldatum_d, v_ins_deel_aantal_n ); COMMIT; v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END IF; END IF; EXCEPTION WHEN OTHERS THEN v_ongeldig := 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!' ); COMMIT; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!'); ELSE fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces objecten afgebroken! regel:' || v_file_index); END aaxx_import_ins_assetman; / CREATE OR REPLACE PROCEDURE aaxx_update_ins_assetman (p_import_key IN NUMBER) AS CURSOR c_bestaand -- Aantal op huidige aantal ins_deel_key zetten IS SELECT DISTINCT d.ins_deel_key, d.ins_deel_omschrijving, i.ins_deel_aantal aantal_imp, d.ins_deel_aantal aantal_ins FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d WHERE UPPER (i.ins_discipline_omschrijving) = UPPER (v.discipline_omschrijving) AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving) AND UPPER (i.ins_srtdeel_omschrijving) = UPPER (v.objectsoort_omschrijving) AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code) AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie) AND v.koppel_type = 'Ruimte' AND v.ins_deel_key = d.ins_deel_key AND v.ruimte_key = d.ins_alg_ruimte_key AND d.ins_deel_verwijder IS NULL AND i.ins_deel_aantal = 0; CURSOR c_nieuw -- aantal op 1 IS SELECT i.ins_deel_omschrijving, i.ins_deel_aantal aantal_imp FROM fac_imp_ins i WHERE i.ins_deel_aantal = 0 AND i.ins_deel_omschrijving NOT IN (SELECT DISTINCT d.ins_deel_omschrijving FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d WHERE UPPER (i.ins_discipline_omschrijving) = UPPER (v.discipline_omschrijving) AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving) AND UPPER (i.ins_srtdeel_omschrijving) = UPPER (v.objectsoort_omschrijving) AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code) AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie) AND v.koppel_type = 'Ruimte' AND v.ins_deel_key = d.ins_deel_key AND v.ruimte_key = d.ins_alg_ruimte_key AND d.ins_deel_verwijder IS NULL AND i.ins_deel_aantal = 0); -- Alle niet gevulde kenmerken echt leegmaken, want anders worden ze met standaard update namelijk verwijderd. -- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR' is gevuld..... -- p_srtkenmerkgroepwaarde = '234|1=' is LEEG maar moet ook echt op NULL -- Voor HeyDay-upload geldt namelijk dat als het niet gevuld is, dan wordt er ook niets gewijzigd. CURSOR c_del IS SELECT ins_deel_omschrijving, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20 FROM fac_imp_ins i ; BEGIN -- Starten met correctie op het aantal-veld. --- Alle 0-waarden terugzetten naar ins_deel_aantal indien het bestaande objecten zijn.. FOR rec IN c_bestaand LOOP BEGIN UPDATE fac_imp_ins i SET i.ins_deel_aantal = rec.aantal_ins WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END; END LOOP; FOR rec IN c_nieuw LOOP BEGIN UPDATE fac_imp_ins i SET i.ins_deel_aantal = 1 WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END; END LOOP; FOR rec IN c_del LOOP BEGIN IF SUBSTR (rec.ins_kenmerkwaarde1, INSTR (rec.ins_kenmerkwaarde1, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde1 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde2, INSTR (rec.ins_kenmerkwaarde2, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde2 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde3, INSTR (rec.ins_kenmerkwaarde3, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde3 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde4, INSTR (rec.ins_kenmerkwaarde4, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde4 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde5, INSTR (rec.ins_kenmerkwaarde5, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde5 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde6, INSTR (rec.ins_kenmerkwaarde6, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde6 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde7, INSTR (rec.ins_kenmerkwaarde7, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde7 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde8, INSTR (rec.ins_kenmerkwaarde8, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde8 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde9, INSTR (rec.ins_kenmerkwaarde9, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde9 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde10, INSTR (rec.ins_kenmerkwaarde10, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde10 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde11, INSTR (rec.ins_kenmerkwaarde11, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde11 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde12, INSTR (rec.ins_kenmerkwaarde12, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde12 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde13, INSTR (rec.ins_kenmerkwaarde13, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde13 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde14, INSTR (rec.ins_kenmerkwaarde14, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde14 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde15, INSTR (rec.ins_kenmerkwaarde15, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde15 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde16, INSTR (rec.ins_kenmerkwaarde16, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde16 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde17, INSTR (rec.ins_kenmerkwaarde17, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde17 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde18, INSTR (rec.ins_kenmerkwaarde18, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde18 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde19, INSTR (rec.ins_kenmerkwaarde19, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde19 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; IF SUBSTR (rec.ins_kenmerkwaarde20, INSTR (rec.ins_kenmerkwaarde20, '=') + 1) IS NULL THEN UPDATE fac_imp_ins i SET i.ins_kenmerkwaarde20 = '' WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ; END IF; END; END LOOP; -- Nu staat alles in fac_imp_ins goed en kunnen we gaan updaten via de standaard procedure fac_update_ins (p_import_key); -- De gewijzigde standaard objectvelden die niet in standaard update worden meegenomen, gaan we via post_update regelen. aaxx_post_update_ins_assetman (p_import_key); END aaxx_update_ins_assetman; / CREATE OR REPLACE PROCEDURE aaxx_post_update_ins_assetman (p_import_key IN NUMBER) AS v_aanduiding VARCHAR (400); -- Bestaande Objecten aanpassen: Datum aanmaak, Datum vervallen, Opmerking en Aantal ---- Werkwijze: Als gevuld en afwijkend huidige ins_waarde dan aanpassen. Als niet gevuld in importsheet, dan asset intact laten. CURSOR c_update IS SELECT DISTINCT d.ins_deel_key, i.ins_deel_omschrijving, i.ins_deel_aanmaak aanmaak_imp, d.ins_deel_aanmaak aanmaak_ins, i.ins_deel_vervaldatum vervaldatum_imp, d.ins_deel_vervaldatum vervaldatum_ins, i.ins_deel_opmerking opmerking_imp, d.ins_deel_opmerking opmerking_ins, i.ins_deel_aantal aantal_imp, d.ins_deel_aantal aantal_ins FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d WHERE UPPER (i.ins_discipline_omschrijving) = UPPER (v.discipline_omschrijving) AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving) AND UPPER (i.ins_srtdeel_omschrijving) = UPPER (v.objectsoort_omschrijving) AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code) AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie) AND v.koppel_type = 'Ruimte' AND v.ins_deel_key = d.ins_deel_key AND v.ruimte_key = d.ins_alg_ruimte_key AND d.ins_deel_verwijder IS NULL ; BEGIN FOR rec IN c_update LOOP BEGIN v_aanduiding := 'Gewijzigd aanmaakdatum van ' || TO_CHAR(rec.aanmaak_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.aanmaak_imp, 'dd-mm-yyyy') ; IF rec.aanmaak_imp is not null and rec.aanmaak_imp <> rec.aanmaak_ins THEN UPDATE ins_deel d SET d.ins_deel_aanmaak = rec.aanmaak_imp WHERE d.ins_deel_key = rec.ins_deel_key ; fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; v_aanduiding := 'Gewijzigd vervaldatum ' || TO_CHAR(rec.vervaldatum_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.vervaldatum_imp, 'dd-mm-yyyy') ; IF rec.vervaldatum_imp is not null and (rec.vervaldatum_imp <> rec.vervaldatum_ins or rec.vervaldatum_ins is null) THEN UPDATE ins_deel d SET d.ins_deel_vervaldatum = rec.vervaldatum_imp WHERE d.ins_deel_key = rec.ins_deel_key ; fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; v_aanduiding := 'Gewijzigd omschrijving ' || rec.opmerking_ins || ' naar ' || rec.opmerking_imp ; IF rec.opmerking_imp is not null and (rec.opmerking_imp <> rec.opmerking_ins or rec.opmerking_ins is null) THEN UPDATE ins_deel d SET d.ins_deel_opmerking = rec.opmerking_imp WHERE d.ins_deel_key = rec.ins_deel_key ; fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; v_aanduiding := 'Gewijzigd aantal ' || rec.aantal_ins || ' naar ' || rec.aantal_imp ; IF rec.aantal_imp is not null and rec.aantal_imp <> rec.aantal_ins THEN UPDATE ins_deel d SET d.ins_deel_aantal = rec.aantal_imp WHERE d.ins_deel_key = rec.ins_deel_key ; fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; END; END LOOP; END; / -- Nieuwe upload GEBREKEN CREATE OR REPLACE PROCEDURE aaxx_import_nen2767_assetman ( p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER := 0; v_ongeldig NUMBER (1); v_count_tot NUMBER (10); v_count_import NUMBER (10); v_count_import_n NUMBER (10); v_count NUMBER; v_mld_stdmelding_key NUMBER (10); v_regel NUMBER; v_mld_srtkenmerk_key1 VARCHAR2 (255); v_mld_srtkenmerk_key2 VARCHAR2 (255); v_mld_srtkenmerk_key3 VARCHAR2 (255); v_mld_srtkenmerk_key4 VARCHAR2 (255); v_mld_srtkenmerk_key5 VARCHAR2 (255); v_mld_srtkenmerk_key6 VARCHAR2 (255); v_mld_srtkenmerk_key7 VARCHAR2 (255); v_mld_srtkenmerk_key8 VARCHAR2 (255); v_mld_srtkenmerk_key9 VARCHAR2 (255); v_mld_srtkenmerk_key10 VARCHAR2 (255); v_alg_gebouw_code VARCHAR2 (1000) :=NULL; -- Zie 02 - !! v_ins_deel_omschrijving VARCHAR2 (1000); v_ins_deel NUMBER (10); v_mld_melding_datum VARCHAR2 (1000); v_mld_melding_omschrijving VARCHAR2 (1000); v_prs_perslid_email VARCHAR2 (1000); -- inspecteur v_behandelaar_email VARCHAR2 (1000); -- behandelaar v_gebrekcode VARCHAR2 (1000); -- v_ernst VARCHAR2 (1000); v_omvang VARCHAR2 (1000); v_intensiteit VARCHAR2 (1000); v_aspect1 VARCHAR2 (1000); v_aspect2 VARCHAR2 (1000); v_aspect3 VARCHAR2 (1000); v_aspect4 VARCHAR2 (1000); v_aspect5 VARCHAR2 (1000); v_aspect6 VARCHAR2 (1000); v_aspect7 VARCHAR2 (1000); v_foto VARCHAR2 (1000); v_kosten VARCHAR2 (1000); v_plandatum VARCHAR2 (1000); v_meldingnr VARCHAR2 (1000); v_ongeldig_object NUMBER (1) :=0; v_ongeldig_gebrek NUMBER (1) :=0; v_melding_GV_aantal NUMBER (10); v_melding_GV VARCHAR2 (1000); v_mld_kenmerkwaarde1 VARCHAR2 (4000); v_mld_kenmerkwaarde2 VARCHAR2 (4000); v_mld_kenmerkwaarde3 VARCHAR2 (4000); v_mld_kenmerkwaarde4 VARCHAR2 (4000); v_mld_kenmerkwaarde5 VARCHAR2 (4000); v_mld_kenmerkwaarde6 VARCHAR2 (4000); v_mld_kenmerkwaarde7 VARCHAR2 (4000); v_mld_kenmerkwaarde8 VARCHAR2 (4000); v_mld_kenmerkwaarde9 VARCHAR2 (4000); -- Voor vullen van de behandelaar v_mld_kenmerkwaarde10 VARCHAR2 (4000); -- Voor vullen van de lopende gebreksmelding CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; -- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of -- deze - via een kenmerk - wel is gedefinieerd voor de betreffende melding - -- discipline/vakgroep/st-melding, volgt pas tijdens de update-fase)! -- -- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit -- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3 -- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep) FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR) RETURN VARCHAR IS v_srtkenmerk_key NUMBER; v_kenmerk_groep NUMBER; v_kw VARCHAR(250); BEGIN v_kenmerk_groep := 0; v_kw := p_kw; IF INSTR (v_kw, '|') > 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT mld_srtkenmerk_key INTO v_srtkenmerk_key FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk WHERE mld_srtkenmerk_upper = UPPER (v_kw) AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT mld_srtkenmerk_key INTO v_srtkenmerk_key FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk WHERE mld_srtkenmerk_key = fac.safe_to_number (v_kw) AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep); EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerksoort [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; FUNCTION get_aspect_value (p_aspect IN VARCHAR2) RETURN VARCHAR2 IS v_result VARCHAR2 (100); BEGIN v_result := p_aspect; IF p_aspect IS NULL THEN v_result := 'NVT'; END IF; IF p_aspect = '0' -- Nodig om bij aanvullen lopende gebreksmeldingen de aspectwaarde weer op NVT te krijgen THEN v_result := '0 - NVT'; END IF; IF p_aspect = '1' THEN v_result := 'Gering'; END IF; IF p_aspect = '2' THEN v_result := 'Matig'; END IF; IF p_aspect = '3' THEN v_result := 'Sterk'; END IF; RETURN v_result; END; BEGIN v_errorhint := 'cnd_import_nen2767_results'; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_regel := rec1.fac_imp_file_index; v_aanduiding := ''; v_errorhint := 'Fout bij opvragen te importeren rij'; v_ongeldig := 0; -- Lees alle veldwaarden -- 01 v_aanduiding := 'Probleem bij v_ins_deel_omschrijving: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_ins_deel_omschrijving); v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); -- 02 v_aanduiding := 'Probleem bij v_mld_melding_datum: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_mld_melding_datum); v_mld_melding_datum := TRIM (v_mld_melding_datum); -- 03 v_aanduiding := 'Probleem bij v_gebrekcode: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_gebrekcode); v_gebrekcode := TRIM (v_gebrekcode); -- 05 v_aanduiding := 'Probleem bij v_omvang: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_omvang); v_omvang := TRIM (v_omvang); -- 06 v_aanduiding := 'Probleem bij v_intensiteit: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_intensiteit); v_intensiteit := TRIM (v_intensiteit); -- 07 v_aanduiding := 'Probleem bij v_aspect1: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_aspect1); v_aspect1 := TRIM (v_aspect1); -- 08 v_aanduiding := 'Probleem bij v_aspect2: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_aspect2); v_aspect2 := TRIM (v_aspect2); -- 09 v_aanduiding := 'Probleem bij v_aspect3: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_aspect3); v_aspect3 := TRIM (v_aspect3); -- 10 v_aanduiding := 'Probleem bij v_aspect4: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_aspect4); v_aspect4 := TRIM (v_aspect4); -- 11 v_aanduiding := 'Probleem bij v_aspect5: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_aspect5); v_aspect5 := TRIM (v_aspect5); -- 12 v_aanduiding := 'Probleem bij v_aspect6: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 12, v_aspect6); v_aspect6 := TRIM (v_aspect6); -- 13 v_aanduiding := 'Probleem bij v_aspect7: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_aspect7); v_aspect7 := TRIM (v_aspect7); -- 14 v_aanduiding := 'Probleem bij v_mld_melding_omschrijving: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_mld_melding_omschrijving); v_mld_melding_omschrijving := TRIM (v_mld_melding_omschrijving); -- 15 v_aanduiding := 'Probleem bij v_prs_perslid_email: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_prs_perslid_email); v_prs_perslid_email := TRIM (v_prs_perslid_email); -- 16 v_aanduiding := 'Probleem bij v_behandelaar_email: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_behandelaar_email); v_behandelaar_email := TRIM (v_behandelaar_email); -- 17 v_aanduiding := 'Probleem bij v_foto: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 17, v_foto); v_foto := TRIM (v_foto); -- 18 v_aanduiding := 'Probleem bij v_kosten: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 18, v_kosten); v_kosten := TRIM (v_kosten); -- 19 v_aanduiding := 'Probleem bij v_plandatum: '; fac.imp_getfield_nr (v_newline, c_fielddelimitor, 19, v_plandatum); v_plandatum := TRIM (v_plandatum); -- 19 t/m 28 v_aanduiding := 'Probleem bij vullen v_mld_kenmerkwaarde 1 t/m 10: '; fac.imp_getfield_nr (v_newline,c_fielddelimitor,20, v_mld_kenmerkwaarde1); v_mld_kenmerkwaarde1 := TRIM (v_mld_kenmerkwaarde1); fac.imp_getfield_nr (v_newline,c_fielddelimitor,21, v_mld_kenmerkwaarde2); v_mld_kenmerkwaarde2 := TRIM (v_mld_kenmerkwaarde2); fac.imp_getfield_nr (v_newline,c_fielddelimitor,22, v_mld_kenmerkwaarde3); v_mld_kenmerkwaarde3 := TRIM (v_mld_kenmerkwaarde3); fac.imp_getfield_nr (v_newline,c_fielddelimitor,23, v_mld_kenmerkwaarde4); v_mld_kenmerkwaarde4 := TRIM (v_mld_kenmerkwaarde4); fac.imp_getfield_nr (v_newline,c_fielddelimitor,24, v_mld_kenmerkwaarde5); v_mld_kenmerkwaarde5 := TRIM (v_mld_kenmerkwaarde5); fac.imp_getfield_nr (v_newline,c_fielddelimitor,25, v_mld_kenmerkwaarde6); v_mld_kenmerkwaarde6 := TRIM (v_mld_kenmerkwaarde6); fac.imp_getfield_nr (v_newline,c_fielddelimitor,26, v_mld_kenmerkwaarde7); v_mld_kenmerkwaarde7 := TRIM (v_mld_kenmerkwaarde7); fac.imp_getfield_nr (v_newline,c_fielddelimitor,27, v_mld_kenmerkwaarde8); v_mld_kenmerkwaarde8 := TRIM (v_mld_kenmerkwaarde8); /* fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde9); v_mld_kenmerkwaarde9 := TRIM (v_mld_kenmerkwaarde9); fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde10); v_mld_kenmerkwaarde10 := TRIM (v_mld_kenmerkwaarde10); */ v_aanduiding := '[' || v_alg_gebouw_code || '-' || v_ins_deel_omschrijving || '-' || v_gebrekcode || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij de volgende kolommen: -- 1. Objectidentificatie -- 2. Datum -- 3. stdmelding -- 5. omvang -- 9. intensiteit -- 10. Aspectwaarde1 -- 11. Aspectwaarde2 -- 12. Aspectwaarde3 -- 13. Aspectwaarde4 -- 14. Aspectwaarde5 -- 15. Aspectwaarde6 -- 16. Aspectwaarde7 -- 17. Opmerking -- 18. Inspecteur -- 19. Behandelaar -- 20. Foto -- 21. Kosten -- 22. Datum gepland -- 23. Dienst -- 24. Taakgroep -- 25. Datum Gereed (inspecteur) -- 26. geadviseerd startjaar -- Ik negeer alles totdat ik een geldige header ben gepasseerd. -- De tweede waarde is de waarde uit de plato import. Als er geen tweede waarde is dan zijn ze gelijk. IF (header_is_valid = 0) THEN IF UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE' AND UPPER (v_mld_melding_datum) = 'DATUM' AND (UPPER (v_gebrekcode) = 'STDMELDING' OR UPPER (v_gebrekcode) = 'GEBREKCODE') AND UPPER (v_omvang) = 'OMVANG' AND UPPER (v_intensiteit) = 'INTENSITEIT' AND UPPER (v_aspect1) = 'ASPECTWAARDE1' AND UPPER (v_aspect2) = 'ASPECTWAARDE2' AND UPPER (v_aspect3) = 'ASPECTWAARDE3' AND UPPER (v_aspect4) = 'ASPECTWAARDE4' AND UPPER (v_aspect5) = 'ASPECTWAARDE5' AND UPPER (v_aspect6) = 'ASPECTWAARDE6' AND UPPER (v_aspect7) = 'ASPECTWAARDE7' AND UPPER (v_mld_melding_omschrijving) = 'OPMERKING' AND UPPER (v_prs_perslid_email) = 'INSPECTEUR' AND UPPER (v_behandelaar_email) = 'BEHANDELAAR' AND UPPER (v_foto) = 'FOTO' AND UPPER (v_kosten) = 'KOSTEN' AND UPPER (v_plandatum) = 'DATUM GEPLAND' AND UPPER (v_mld_kenmerkwaarde1) = 'DIENST' AND UPPER (v_mld_kenmerkwaarde2) = 'TAAKGROEP' AND UPPER (v_mld_kenmerkwaarde3) = 'DATUM GEREED (INSPECTEUR)' AND UPPER (v_mld_kenmerkwaarde4) = 'GEADVISEERD STARTJAAR' THEN v_mld_srtkenmerk_key1 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde1); v_mld_srtkenmerk_key2 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde2); v_mld_srtkenmerk_key3 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde3); v_mld_srtkenmerk_key4 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde4); v_mld_srtkenmerk_key5 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde5); v_mld_srtkenmerk_key6 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde6); v_mld_srtkenmerk_key7 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde7); v_mld_srtkenmerk_key8 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde8); -- v_mld_srtkenmerk_key9 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde9); -- v_mld_srtkenmerk_key10 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde10); header_is_valid := 1; ELSE IF rec1.fac_imp_file_index = 1 THEN fac.imp_writelog ( p_import_key, 'I', 'Header ongeldig: ' || UPPER (v_ins_deel_omschrijving) || '-' || UPPER (v_mld_melding_datum) || '-' || UPPER (v_gebrekcode) || '-' || UPPER (v_omvang) || '-' || UPPER (v_intensiteit) || '-' || UPPER (v_aspect1) || '-' || UPPER (v_aspect2) || '-' || UPPER (v_aspect3) || '-' || UPPER (v_aspect4) || '-' || UPPER (v_aspect5) || '-' || UPPER (v_aspect6) || '-' || UPPER (v_aspect7) || '-' || UPPER (v_mld_melding_omschrijving) || '-' || UPPER (v_prs_perslid_email) || '-' || UPPER (v_behandelaar_email) || '-' || UPPER (v_foto) || '-' || UPPER (v_kosten) || '-' || UPPER (v_plandatum) || '-' || UPPER (v_mld_kenmerkwaarde1) || '-' || UPPER (v_mld_kenmerkwaarde2) || '-' || UPPER (v_mld_kenmerkwaarde3) || '-' || UPPER (v_mld_kenmerkwaarde4), ''); END IF; END IF; ELSE v_count_tot := v_count_tot + 1; -- v_errorhint := 'Ongeldige kolom OBJECTIDENTIFICATIE (moet gevuld en maximaal 60 tekens zijn) [' || v_ins_deel_omschrijving || ']'; v_ongeldig_object := 0; IF (v_ins_deel_omschrijving IS NULL) OR (LENGTH (v_ins_deel_omschrijving) > 60) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; v_ongeldig_object := 1; END IF; -- v_errorhint := 'Ongeldige kolom OBJECTIDENTIFICATIE (object is onbekend) [' || v_ins_deel_omschrijving || ']'; IF v_ongeldig_object=0 THEN SELECT count(*) INTO v_ins_deel FROM ins_v_aanwezigdeel WHERE ins_deel_upper = UPPER (v_ins_deel_omschrijving) ; IF v_ins_deel = 0 THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; v_ongeldig_object := 1; END IF; END IF; -- v_errorhint := 'Ongeldige kolom DATUM (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_mld_melding_datum || ']'; IF v_mld_melding_datum IS NOT NULL AND fac.safe_to_date (v_mld_melding_datum, 'dd-mm-yyyy') IS NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom STDMELDING (moet gevuld en maximaal 20 tekens zijn) [' || v_gebrekcode || ']'; v_ongeldig_gebrek := 0; IF (v_gebrekcode IS NULL) OR (LENGTH (v_gebrekcode) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; v_ongeldig_gebrek := 1; END IF; -- Bepaal of gebrek uberhaupt wel in gebrekenlijst voorkomt v_errorhint := 'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT max(sm.mld_stdmelding_key) INTO v_mld_stdmelding_key FROM mld_stdmelding sm WHERE UPPER(mld_stdmelding_code) = UPPER (v_gebrekcode); IF v_mld_stdmelding_key IS NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; v_ongeldig_gebrek := 1; END IF; -- v_errorhint := 'Ongeldig kolom OMVANG - indien gevuld moet 1,2,3,4 of 5 zijn [' || v_omvang || ']'; -- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving. IF v_omvang IS NOT NULL THEN IF fac.safe_to_number(v_omvang) IN (1, 2, 3, 4, 5) THEN CASE v_omvang WHEN 1 THEN v_omvang := '< 2% Incidenteel'; WHEN 2 THEN v_omvang := '2% tot 10% Plaatselijk'; WHEN 3 THEN v_omvang := '10% tot 30% Regelmatig'; WHEN 4 THEN v_omvang := '30% tot 70% Aanzienlijk'; WHEN 5 THEN v_omvang := '> 70% Algemeen'; END CASE; ELSE fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; END IF; -- v_errorhint := 'Ongeldig kolom INTENSITEIT - indien gevuld moet 1,2 of 3 zijn: [' || v_intensiteit || ']' || v_intensiteit; -- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving. IF v_intensiteit IS NOT NULL THEN IF fac.safe_to_number(v_intensiteit) IN (1, 2, 3) THEN CASE v_intensiteit WHEN 1 THEN v_intensiteit := '1 - Beginstadium'; WHEN 2 THEN v_intensiteit := '2 - Gevorderd stadium'; WHEN 3 THEN v_intensiteit := '3 - Eindstadium'; END CASE; ELSE fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT1 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect1 := get_aspect_value (v_aspect1); IF (v_aspect1 IS NULL) OR (LENGTH (v_aspect1) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT2 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect2 := get_aspect_value (v_aspect2); IF (v_aspect2 IS NULL) OR (LENGTH (v_aspect2) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT3 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect3 := get_aspect_value (v_aspect3); IF (v_aspect3 IS NULL) OR (LENGTH (v_aspect3) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT4 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect4 := get_aspect_value (v_aspect4); IF (v_aspect4 IS NULL) OR (LENGTH (v_aspect4) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT5 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect5 := get_aspect_value (v_aspect5); IF (v_aspect5 IS NULL) OR (LENGTH (v_aspect5) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT6 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect6 := get_aspect_value (v_aspect6); IF (v_aspect6 IS NULL) OR (LENGTH (v_aspect6) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom ASPECT7 (moet gevuld en maximaal 20 tekens zijn)'; v_aspect7 := get_aspect_value (v_aspect7); IF (v_aspect7 IS NULL) OR (LENGTH (v_aspect7) > 20) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom OPMERKING (mag maximaal 2000 tekens zijn)'; IF (LENGTH (v_mld_melding_omschrijving) > 2000) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Opmerking wordt afgekapt op 2000 tekens'); v_mld_melding_omschrijving := SUBSTR (v_mld_melding_omschrijving, 1, 2000); END IF; -- v_errorhint := 'Ongeldig kolom INSPECTEUR (moet ingevuld en mag maximaal 200 tekens zijn) [' || v_prs_perslid_email || ']'; IF v_prs_perslid_email IS NOT NULL AND LENGTH (v_prs_perslid_email) > 200 THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom BEHANDELAAR (indien ingevuld mag het maximaal 200 tekens zijn) [' || v_behandelaar_email || ']'; IF LENGTH (v_behandelaar_email) > 200 THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errorhint := 'Ongeldig kolom FOTO (mag maximaal 1000 tekens zijn) [' || v_foto || ']'; IF (LENGTH (v_foto) > 1000) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Foto wordt overgeslagen'); v_foto := NULL; END IF; -- v_kosten := REPLACE (v_kosten, ',', '.'); v_errorhint := 'Ongeldig kolom KOSTEN (indien gevuld dan een cijfer met max 2 decimalen)'; IF (v_kosten IS NOT NULL) AND (fac.safe_to_number (v_kosten) IS NULL) THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errorhint := 'Ongeldig kolom DATUM GEPLAND (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_plandatum || ']'; IF v_plandatum IS NOT NULL AND fac.safe_to_date (v_plandatum, 'dd-mm-yyyy') IS NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- Onderstaande doen we in UPDATE... v_errorhint := 'Bepaal of er al een lopende gebreks-melding is'; v_meldingnr := NULL ; IF v_ongeldig_object = 0 AND v_ongeldig_gebrek = 0 AND v_ongeldig = 0 THEN SELECT MAX (m.mld_melding_key) INTO v_meldingnr FROM mld_melding m, mld_stdmelding sm, mld_melding_object mo, ins_deel d WHERE m.mld_melding_key = mo.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND UPPER (sm.mld_stdmelding_code) = UPPER (v_gebrekcode) AND mo.ins_deel_key = d.ins_deel_key AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving) AND m.mld_melding_status IN (0,2,3,4,7,99) ; -- Lopend END IF; -- Als het GEEN bestaande melding is, dan zijn intensiteit en omvang verplicht en plandatum en meldingsdatum IF v_meldingnr IS NULL AND v_ongeldig = 0 THEN v_errorhint := 'Betreft nieuwe melding - Kolom OMVANG is leeg en moet gevuld zijn (met 1,2,3,4 of 5 zijn)'; IF v_omvang IS NULL AND UPPER(v_gebrekcode) <> 'GEEN' THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errorhint := 'Betreft nieuwe melding - Kolom INTENSITEIT is leeg en moet gevuld zijn (met 1,2,3 zijn)'; IF v_intensiteit IS NULL AND UPPER(v_gebrekcode) <> 'GEEN' THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errorhint := 'Betreft nieuwe melding - Kolom DATUM is leeg en moet gevuld zijn met datum'; IF v_mld_melding_datum IS NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errorhint := 'Betreft nieuwe melding - Kolom DATUM GEPLAND is leeg en moet gevuld zijn met datum'; IF v_plandatum IS NULL AND UPPER(v_gebrekcode) <> 'GEEN' THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; v_errorhint := 'Betreft nieuwe melding - Kolom INSPECTEUR is leeg en moet gevuld zijn met email-adres inspecteur (is aanvrager)'; IF v_prs_perslid_email IS NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding, v_errorhint || ' - Regel wordt overgeslagen'); v_ongeldig := 1; END IF; END IF; -- Geen fouten, we gaan tussentabel vullen IF (v_ongeldig = 0) THEN BEGIN v_errorhint := 'Fout bij toevoegen regel aan importtabel cnd_imp_nen2767_results'; INSERT INTO cnd_imp_nen2767_results ( fac_import_key, -- alg_gebouw_code, ins_deel_omschrijving, mld_melding_datum, mld_melding_omschrijving, prs_perslid_email, gebrekcode, -- ernst, omvang, intensiteit, aspect1, aspect2, aspect3, aspect4, aspect5, aspect6, aspect7, kosten, plandatum, foto, -- condscore, -- prioscore, flex1, flex2, flex3, flex4, flex5, flex6, flex7, flex8, flex9, flex10) VALUES (p_import_key, v_ins_deel_omschrijving, v_mld_melding_datum, v_mld_melding_omschrijving, v_prs_perslid_email, v_gebrekcode, v_omvang, v_intensiteit, DECODE(v_meldingnr, NULL, DECODE(v_aspect1,'0 - NVT','NVT',v_aspect1),v_aspect1), -- Correctie aspectwaarde: Voor de nieuwe meldingen die gevuld zijn met waarde 0 moeten ook netjes op NVT komen DECODE(v_meldingnr, NULL, DECODE(v_aspect2,'0 - NVT','NVT',v_aspect2),v_aspect2), DECODE(v_meldingnr, NULL, DECODE(v_aspect3,'0 - NVT','NVT',v_aspect3),v_aspect3), DECODE(v_meldingnr, NULL, DECODE(v_aspect4,'0 - NVT','NVT',v_aspect4),v_aspect4), DECODE(v_meldingnr, NULL, DECODE(v_aspect5,'0 - NVT','NVT',v_aspect5),v_aspect5), DECODE(v_meldingnr, NULL, DECODE(v_aspect6,'0 - NVT','NVT',v_aspect6),v_aspect6), DECODE(v_meldingnr, NULL, DECODE(v_aspect7,'0 - NVT','NVT',v_aspect7),v_aspect7), v_kosten, fac.safe_to_date (v_plandatum, 'dd-mm-yyyy'), v_foto, DECODE (v_mld_srtkenmerk_key1, NULL, v_mld_kenmerkwaarde1, TO_CHAR (v_mld_srtkenmerk_key1) || '=' || SUBSTR (v_mld_kenmerkwaarde1, 1, 3900) ), DECODE (v_mld_srtkenmerk_key2, NULL, v_mld_kenmerkwaarde2, TO_CHAR (v_mld_srtkenmerk_key2) || '=' || SUBSTR (v_mld_kenmerkwaarde2, 1, 3900) ), DECODE (v_mld_srtkenmerk_key3, NULL, v_mld_kenmerkwaarde3, TO_CHAR (v_mld_srtkenmerk_key3) || '=' || SUBSTR (v_mld_kenmerkwaarde3, 1, 3900) ), DECODE (v_mld_srtkenmerk_key4, NULL, v_mld_kenmerkwaarde4, TO_CHAR (v_mld_srtkenmerk_key4) || '=' || SUBSTR (v_mld_kenmerkwaarde4, 1, 3900) ), DECODE (v_mld_srtkenmerk_key5, NULL, v_mld_kenmerkwaarde5, TO_CHAR (v_mld_srtkenmerk_key5) || '=' || SUBSTR (v_mld_kenmerkwaarde5, 1, 3900) ), DECODE (v_mld_srtkenmerk_key6, NULL, v_mld_kenmerkwaarde6, TO_CHAR (v_mld_srtkenmerk_key6) || '=' || SUBSTR (v_mld_kenmerkwaarde6, 1, 3900) ), DECODE (v_mld_srtkenmerk_key7, NULL, v_mld_kenmerkwaarde7, TO_CHAR (v_mld_srtkenmerk_key7) || '=' || SUBSTR (v_mld_kenmerkwaarde7, 1, 3900) ), DECODE (v_mld_srtkenmerk_key8, NULL, v_mld_kenmerkwaarde8, TO_CHAR (v_mld_srtkenmerk_key8) || '=' || SUBSTR (v_mld_kenmerkwaarde8, 1, 3900) ), v_behandelaar_email, v_meldingnr ); v_count_import := v_count_import + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Ingelezen regel kan niet worden weggeschreven!'); COMMIT; END; END IF; END IF; END; END LOOP; -- Aantal nieuwe meldingen SELECT count(*) INTO v_count_import_n FROM cnd_imp_nen2767_results WHERE fac_import_key = p_import_key AND flex10 IS NULL ; IF (header_is_valid = 0) THEN fac.imp_writelog ( p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie: '); ELSE fac.imp_writelog ( p_import_key, 'S', 'IMPORT NEN2767 RESULTS: aantal ingelezen regels: ' || TO_CHAR (v_count_tot) || ' / aantal geldige regels: ' || TO_CHAR (v_count_import) || ' / waarvan nieuwe melding(en): ' || TO_CHAR (v_count_import_n), ''); END IF; 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 || ' regel[' || v_regel || ']'); END aaxx_import_nen2767_assetman; / CREATE OR REPLACE PROCEDURE aaxx_update_nen2767_assetman ( p_import_key IN NUMBER) IS CURSOR c_nieuw IS SELECT * FROM cnd_imp_nen2767_results WHERE fac_import_key = p_import_key AND flex10 IS NULL ; CURSOR c_bestaand IS SELECT * FROM cnd_imp_nen2767_results WHERE fac_import_key = p_import_key AND flex10 IS NOT NULL ; v_aanduiding VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_tot_n NUMBER (10); v_count_import NUMBER (10); v_mld_melding_key NUMBER (10); v_alg_gebouw_key NUMBER (10); v_ins_deel_key NUMBER (10); v_alg_ruimte_key NUMBER (10); v_prs_perslid_key NUMBER (10); v_prs_behandelaar_key NUMBER (10); v_mld_stdmelding_key NUMBER (10); v_ernst_kenmerk_key NUMBER (10); v_ernst_key NUMBER (10); v_omvang_kenmerk_key NUMBER (10); v_omvang_key NUMBER (10); v_intensiteit_kenmerk_key NUMBER (10); v_intensiteit_key NUMBER (10); v_foto_kenmerk_key NUMBER (10); v_kosten_kenmerk_key NUMBER (10) := NULL; v_kosten_srtkenmerk_key NUMBER (10); v_ernst_srtkenmerk_key NUMBER (10); v_omvang_srtkenmerk_key NUMBER (10); v_intensiteit_srtkenmerk_key NUMBER (10); v_mld_melding_omschrijving mld_melding.mld_melding_omschrijving%TYPE; v_omvang VARCHAR2 (1000); v_intensiteit VARCHAR2 (1000); v_aspect1 VARCHAR2 (1000); v_aspect2 VARCHAR2 (1000); v_aspect3 VARCHAR2 (1000); v_aspect4 VARCHAR2 (1000); v_aspect5 VARCHAR2 (1000); v_aspect6 VARCHAR2 (1000); v_aspect7 VARCHAR2 (1000); v_inspecteur VARCHAR2 (1000); v_behandelaar VARCHAR2 (1000); v_foto VARCHAR2 (1000); v_kosten VARCHAR2 (1000); v_plandatum_date DATE; v_dienst VARCHAR2 (1000); v_taakgroep VARCHAR2 (1000); v_datumgereedinspecteur VARCHAR2 (1000); v_geadviseerdstartjaar VARCHAR2 (1000); v_flex1_kenmerk_key NUMBER (10); v_flex2_kenmerk_key NUMBER (10); v_flex3_kenmerk_key NUMBER (10); v_flex4_kenmerk_key NUMBER (10); v_flex5_kenmerk_key NUMBER (10); v_flex6_kenmerk_key NUMBER (10); v_flex7_kenmerk_key NUMBER (10); v_flex8_kenmerk_key NUMBER (10); v_flex1_waarde VARCHAR2 (1000); v_flex1_waarde_key NUMBER (10); v_flex2_waarde VARCHAR2 (1000); v_flex2_waarde_key NUMBER (10); v_flex3_waarde VARCHAR2 (1000); v_flex4_waarde VARCHAR2 (1000); v_conditiescore NUMBER (10) ; v_prioscore NUMBER (10) ; v_herberekenen NUMBER (1) :=0; v_melding_GV_aantal NUMBER(10); v_melding_GV VARCHAR2 (1000); v_mld_melding_status NUMBER(10); PROCEDURE set_aspect (p_aspect IN VARCHAR2, p_aspect_waarde IN VARCHAR2, p_mld_melding_key IN NUMBER) IS v_key NUMBER (10); v_kenmerk_key NUMBER (10); v_srtkenmerk_key NUMBER (10); BEGIN SELECT MAX (mld_srtkenmerk_key) INTO v_srtkenmerk_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = p_aspect; IF v_srtkenmerk_key IS NOT NULL THEN v_errorhint := p_aspect || ' (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT ud.fac_usrdata_key, k.mld_kenmerk_key INTO v_key, v_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_upper = UPPER (p_aspect_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key; mld.upsertmeldingkenmerk (v_kenmerk_key, p_mld_melding_key, v_key); END IF; END; -- SUBPROC -- Voor vullen van de optionele kenmerkvelden 1 t/m 10 -- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR'. Ofwel: srtkenmerk_key|groep=waarde PROCEDURE insert_mldkenmerk (p_mld_melding_key IN NUMBER, p_srtkenmerkgroepwaarde IN VARCHAR2) AS v_kenmerk_key NUMBER; v_srtkenmerk_key NUMBER; v_groep NUMBER; v_waarde VARCHAR(4000); v_srtkenmerk_type VARCHAR2 (1); ccount NUMBER; v_objectnaam VARCHAR2 (30); v_kolomnaam VARCHAR2 (30); v_kolomtxt VARCHAR2 (30); sql_stmt VARCHAR2 (1000); v_kenmerkdeel_key NUMBER; l_cursor_1 INTEGER; l_rowsprocessed NUMBER DEFAULT 0; BEGIN IF p_srtkenmerkgroepwaarde IS NOT NULL THEN v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']'; v_srtkenmerk_key := fac.safe_to_number ( SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1)); v_groep := fac.safe_to_number ( SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '|') + 1, INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|'))); v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1); -- Niveau en mld_kenmerk_key bepalen vanuit de ingelezen gebreksmelding SELECT mk.mld_kenmerk_key, msk.mld_srtkenmerk_kenmerktype INTO v_kenmerk_key, v_srtkenmerk_type FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline t WHERE mk.mld_srtkenmerk_key = v_srtkenmerk_key AND mk.mld_kenmerk_groep = v_groep AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND m.mld_melding_key = p_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_srtdiscipline_key = t.ins_srtdiscipline_key AND t.ins_srtdiscipline_module = 'MLD' AND ( (mk.mld_stdmelding_key = sm.mld_stdmelding_key and mk.mld_kenmerk_niveau = 'S') OR (mk.mld_stdmelding_key = d.ins_discipline_key and mk.mld_kenmerk_niveau = 'D') OR (mk.mld_stdmelding_key = t.ins_srtdiscipline_key and mk.mld_kenmerk_niveau = 'T') ) ; IF v_waarde IS NOT NULL THEN IF v_srtkenmerk_type IN ('R', 'S') THEN v_errormsg := 'Fout bij bepalen eigen tabel'; SELECT COUNT ( * ) INTO ccount FROM mld_srtkenmerk sk, fac_kenmerkdomein d WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key IS NOT NULL; v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']'; IF ccount = 1 THEN -- Eigen tabel SELECT TO_CHAR (ud.fac_usrdata_key) INTO v_waarde FROM mld_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key = ud.fac_usrtab_key AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde); ELSE -- FACILITOR view/tabel SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt INTO v_objectnaam, v_kolomnaam, v_kolomtxt FROM mld_srtkenmerk sk, fac_kenmerkdomein d WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key AND d.fac_usrtab_key IS NULL; sql_stmt := 'SELECT MAX (' || v_kolomnaam || ') FROM ' || v_objectnaam || ' WHERE UPPER (TRIM (' || v_kolomtxt || ')) = UPPER (:pwaarde)'; l_cursor_1 := DBMS_SQL.open_cursor; DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native); DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde); DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255); l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1); DBMS_SQL.column_value (l_cursor_1, 1, v_waarde); DBMS_SQL.close_cursor(l_cursor_1); END IF; ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam) NULL; -- v_waarde := p_waarde; END IF; IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt. THEN v_waarde := REPLACE (v_waarde, ',', '.'); END IF; v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']'; INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (p_mld_melding_key, v_kenmerk_key, v_waarde); ELSE NULL; END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'insert_mldkenmerk'); END; BEGIN v_count_tot := 0; v_count_tot_n := 0; v_count_import := 0; v_errorhint := 'Ernst kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd'; SELECT mld_srtkenmerk_key INTO v_ernst_srtkenmerk_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'ERNST'; v_errorhint := 'Omvang kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd'; SELECT mld_srtkenmerk_key INTO v_omvang_srtkenmerk_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'OMVANG'; v_errorhint := 'Intensiteit kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd'; SELECT mld_srtkenmerk_key INTO v_intensiteit_srtkenmerk_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'INTENSITEIT'; v_errorhint := 'Fout bij bepalen kenmerk foto-bestand'; SELECT max(k.mld_kenmerk_key) INTO v_foto_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key') AND sk.mld_srtkenmerk_upper = 'FOTONAAM' ; v_errorhint := 'Kosten kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd'; SELECT MAX (mld_srtkenmerk_key) INTO v_kosten_srtkenmerk_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'KOSTEN'; IF v_kosten_srtkenmerk_key IS NOT NULL THEN SELECT mld_kenmerk_key INTO v_kosten_kenmerk_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = v_kosten_srtkenmerk_key AND mld_kenmerk_niveau = 'T' AND mld_stdmelding_key = fac.getSetting ('cnd_gebreken_srtdisc_key') ; END IF; FOR rec IN c_nieuw LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := '[' || rec.alg_gebouw_code || '-' || rec.ins_deel_omschrijving || '-' || rec.gebrekcode || '] '; v_errorhint := 'Gebouwcode niet gevonden (bestaat niet), regel wordt overgeslagen'; v_alg_gebouw_key := -1; IF rec.alg_gebouw_code IS NOT NULL THEN SELECT alg_gebouw_key INTO v_alg_gebouw_key FROM alg_v_aanweziggebouw WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code); END IF; v_errorhint := 'Element (object) niet gevonden (bestaat niet bij gebouw), regel wordt overgeslagen'; -- Uitgangspunt hierbij is dat objectnaam uniek is per gebouw, op zich mag in Facilitor de objectnaam per objectsoort per locatie uniek zijn. SELECT ins_deel_key, r.alg_ruimte_key INTO v_ins_deel_key, v_alg_ruimte_key FROM ins_v_aanwezigdeel, alg_ruimte r, alg_verdieping v WHERE ins_deel_upper = UPPER (rec.ins_deel_omschrijving) AND ins_alg_ruimte_key = r.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key AND ( v_alg_gebouw_key = -1 OR v.alg_gebouw_key = v_alg_gebouw_key) AND ins_alg_ruimte_type = 'R'; v_errorhint := 'Mailadres van inspecteur (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT prs_perslid_key INTO v_prs_perslid_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email); v_errorhint := 'Mailadres van behandelaar (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen'; IF rec.flex9 IS NOT NULL THEN SELECT prs_perslid_key INTO v_prs_behandelaar_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9); ELSE v_prs_behandelaar_key := NULL ; END IF; v_errorhint := 'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT sm.mld_stdmelding_key INTO v_mld_stdmelding_key FROM mld_stdmelding sm WHERE UPPER(mld_stdmelding_code) = UPPER (rec.gebrekcode); IF UPPER(rec.gebrekcode) = 'GEEN' THEN v_errorhint := 'Geen Gebrek melding. Ernst, Omvang en Intensiteit worden overgeslagen'; ELSE v_errorhint := 'Ernst (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; -- We vullen de ERNST altijd met de default-waarde bij kenmerk_key SELECT ud.fac_usrdata_key, k.mld_kenmerk_key INTO v_ernst_key, v_ernst_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k WHERE sk.mld_srtkenmerk_key = v_ernst_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = k.mld_kenmerk_default AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_stdmelding_key = v_mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S'; v_errorhint := 'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT ud.fac_usrdata_key, k.mld_kenmerk_key INTO v_omvang_key, v_omvang_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_upper = UPPER (rec.omvang) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_stdmelding_key = v_mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S'; v_errorhint := 'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT ud.fac_usrdata_key, k.mld_kenmerk_key INTO v_intensiteit_key, v_intensiteit_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_upper = UPPER (rec.intensiteit) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_stdmelding_key = v_mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S'; END IF; v_errorhint := 'Check of er voor GV-gebrek al een soortgelijk gebrek loopt'; v_melding_GV_aantal:=0; IF INSTR (rec.gebrekcode, 'GV') > 0 THEN SELECT COUNT (*) INTO v_melding_GV_aantal FROM mld_melding m, mld_stdmelding sm, mld_melding_object mo, ins_deel d WHERE m.mld_melding_key = mo.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND mo.ins_deel_key = d.ins_deel_key -- AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving) -- '0247.43-0016' AND d.ins_deel_key = v_ins_deel_key AND m.mld_melding_status IN (0,2,3,4,7,99) AND INSTR (rec.gebrekcode, 'GV') > 0 AND UPPER (SUBSTR (sm.mld_stdmelding_code,1,INSTR (sm.mld_stdmelding_code, 'GV') + 1)) = UPPER (SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1)) AND sm.mld_stdmelding_code <> rec.gebrekcode; IF v_melding_GV_aantal > 0 THEN v_melding_GV := 'Bij invoer is/zijn er nog ' || TO_CHAR(v_melding_GV_aantal) || ' melding(en) op code ' || SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1) ; END IF; END IF; v_errorhint := 'Toevoegen melding'; INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_omschrijving, mld_stdmelding_key, mld_alg_onroerendgoed_keys, mld_melding_einddatum, prs_perslid_key, prs_perslid_key_voor, -- mld_melding_behandelaar_key, mld_melding_status, mld_melding_spoed) VALUES ( 'MLD', 6, fac.safe_to_date (rec.mld_melding_datum, 'dd-mm-yyyy'), CASE WHEN v_melding_GV_aantal >0 THEN rec.mld_melding_omschrijving || CHR (13) || CHR (10) || 'LET OP!: ' || v_melding_GV ELSE rec.mld_melding_omschrijving END, v_mld_stdmelding_key, v_alg_ruimte_key, rec.plandatum, v_prs_perslid_key, v_prs_perslid_key, -- v_prs_behandelaar_key, NULL, 3) RETURNING mld_melding_key INTO v_mld_melding_key; mld.setmeldingstatus(v_mld_melding_key, 2, v_prs_perslid_key, 0); v_errorhint := 'Koppelen object'; INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key) VALUES (v_mld_melding_key, v_ins_deel_key); IF UPPER(rec.gebrekcode) <> 'GEEN' THEN v_errorhint := 'Toevoegen Ernst kenmerk'; mld.upsertmeldingkenmerk (v_ernst_kenmerk_key, v_mld_melding_key, v_ernst_key); v_errorhint := 'Toevoegen Omvang kenmerk'; mld.upsertmeldingkenmerk (v_omvang_kenmerk_key, v_mld_melding_key, v_omvang_key); v_errorhint := 'Toevoegen Intensiteit kenmerk'; mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key, v_mld_melding_key, v_intensiteit_key); END IF; set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key); set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key); set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key); set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key); set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key); set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key); set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key); v_errorhint := 'Toevoegen Foto kenmerk'; IF rec.foto IS NOT NULL THEN mld.upsertmeldingkenmerk (v_foto_kenmerk_key, v_mld_melding_key, rec.foto); END IF; v_errorhint := 'Toevoegen Kosten kenmerk'; IF rec.kosten IS NOT NULL AND v_kosten_kenmerk_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_kosten_kenmerk_key, v_mld_melding_key, TO_CHAR(rec.kosten)); END IF; -- Hier toevoegen insert_meldingskenmerken 1 t/m 10.. v_errorhint := 'Toevoegen kenmerk-velden '; insert_mldkenmerk (v_mld_melding_key, rec.flex1); insert_mldkenmerk (v_mld_melding_key, rec.flex2); insert_mldkenmerk (v_mld_melding_key, rec.flex3); insert_mldkenmerk (v_mld_melding_key, rec.flex4); insert_mldkenmerk (v_mld_melding_key, rec.flex5); insert_mldkenmerk (v_mld_melding_key, rec.flex6); insert_mldkenmerk (v_mld_melding_key, rec.flex7); insert_mldkenmerk (v_mld_melding_key, rec.flex8); -- insert_mldkenmerk (v_mld_melding_key, rec.flex9); -- insert_mldkenmerk (v_mld_melding_key, rec.flex10); -- Bij direct accepteren moet ook de CND-berekening uitgevoerd worden ---- En indien meegegeven wordt ook de behandelaar op melding gezet. v_errorhint := 'Meldingen direct accepteren '; IF fac.getsetting('cnd_autoaccept') = 1 THEN mld.setmeldingstatus(v_mld_melding_key, 4, v_prs_perslid_key, 0); BEGIN cnd.process_mjb_score_effects (v_mld_melding_key); END; COMMIT; IF v_prs_behandelaar_key IS NOT NULL THEN UPDATE mld_melding SET mld_melding_behandelaar_key = v_prs_behandelaar_key WHERE mld_melding_key = v_mld_melding_key ; /* -- Notificatie naar behandelaar fac.putnotificationsrtprio ( NULL, v_behandelaar_key, 'MLDBE2', v_mld_melding_key, 'Melding ' || N || v_mld_melding_key || ' is door de klant aangepast.', 2, NULL, NULL, NULL, 2, NULL); */ END IF; END IF; v_count_import := v_count_import + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; FOR rec IN c_bestaand LOOP BEGIN v_count_tot := v_count_tot + 1; v_count_tot_n := v_count_tot_n + 1; v_aanduiding := '[' || rec.alg_gebouw_code || '-' || rec.ins_deel_omschrijving || '-' || rec.gebrekcode || '- lopende melding ' || rec.flex10 || '] '; v_mld_melding_key := fac.safe_to_number(rec.flex10) ; -- Gaan eerst alle waarden vullen uit de lopende melding -- v_errorhint := 'Vullen huidige waarde OPMERKING van lopende melding'; v_mld_melding_omschrijving := ''; SELECT max(TO_CHAR(SUBSTR(mld_melding_omschrijving,1,4000))) INTO v_mld_melding_omschrijving FROM mld_melding WHERE mld_melding_key = v_mld_melding_key ; -- v_errorhint := 'Vullen huidige waarde OMVANG van lopende melding'; v_omvang := ''; SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key INTO v_omvang, v_omvang_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'S'; -- De v_omvang_key bepalen die hoort bij de te importeren gebreksmelding v_errorhint := 'De Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT ud.fac_usrdata_key INTO v_omvang_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_upper = UPPER (rec.omvang) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'S'; -- v_errorhint := 'Vullen huidige waarde INTENSITEIT van lopende melding'; v_intensiteit := ''; SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key INTO v_intensiteit, v_intensiteit_kenmerk_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'S'; -- De v_intensiteit_key bepalen die hoort bij de te importeren gebreksmelding v_errorhint := 'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen'; SELECT ud.fac_usrdata_key INTO v_intensiteit_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_upper = UPPER (rec.intensiteit) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'S'; -- v_errorhint := 'Vullen huidige waarde ASPECT1 van lopende melding'; v_aspect1 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect1 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT1' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT2 van lopende melding'; v_aspect2 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect2 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT2' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT3 van lopende melding'; v_aspect3 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect3 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT3' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT4 van lopende melding'; v_aspect4 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect4 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT4' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT5 van lopende melding'; v_aspect5 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect5 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT5' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT6 van lopende melding'; v_aspect6 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect6 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT6' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde ASPECT7 van lopende melding'; v_aspect7 := ''; SELECT ud.fac_usrdata_omschr INTO v_aspect7 FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'ASPECT7' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; -- v_errorhint := 'Vullen huidige waarde FOTO van lopende melding'; v_foto := ''; -- v_foto_kenmerk_key; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_foto FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'FOTONAAM'); -- v_errorhint := 'Vullen huidige waarde KOSTEN van lopende melding'; v_kosten := ''; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_kosten FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'KOSTEN'); -- v_errorhint := 'Vullen huidige waarde PLANDATUM van lopende melding'; SELECT max(mld_melding_einddatum) INTO v_plandatum_date FROM mld_melding WHERE mld_melding_key = v_mld_melding_key ; -- flex1 v_errorhint := 'Vullen huidige waarde DIENST van lopende melding'; v_dienst := ''; SELECT max(d.prs_dienst_omschrijving) INTO v_dienst FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, prs_dienst d WHERE km.mld_melding_key = v_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_code = 'DIENST' AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key AND kd.fac_kenmerkdomein_objectnaam = 'PRS_DIENST' AND d.prs_dienst_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_kenmerk_niveau = 'T' ; SELECT max(k.mld_kenmerk_key) INTO v_flex1_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key') AND sk.mld_srtkenmerk_code = 'DIENST' ; -- flex2 v_errorhint := 'Vullen huidige waarde TAAKGROEP van lopende melding'; v_taakgroep := ''; SELECT max(ud.fac_usrdata_omschr) INTO v_taakgroep FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k, mld_kenmerkmelding km WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP' -- sk.mld_srtkenmerk_key = (DISTINCT(select fac.safe_to_number(substr(flex2, 1, INSTR(flex2,'|')-1))) -- DIT EVT NOG INPASSEN voor de FLEX5 t/m 9 -- from cnd_imp_nen2767_results where fac_import_key = p_import_key) AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde) AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND km.mld_melding_key = v_mld_melding_key AND k.mld_kenmerk_niveau = 'T'; SELECT max(k.mld_kenmerk_key) INTO v_flex2_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key') AND sk.mld_srtkenmerk_code = 'TAAKGROEP' ; -- flex3 v_errorhint := 'Vullen huidige waarde DATUMGEREEDINSPECTEUR van lopende melding'; v_datumgereedinspecteur := ''; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_datumgereedinspecteur FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR'); SELECT max(k.mld_kenmerk_key) INTO v_flex3_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key') AND sk.mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR' ; -- flex4 v_errorhint := 'Vullen huidige waarde GEADVISEERDSTARTJAAR van lopende melding'; v_geadviseerdstartjaar := ''; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_geadviseerdstartjaar FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR'); SELECT max(k.mld_kenmerk_key) INTO v_flex4_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key') AND sk.mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR' ; -- Conditiescore v_errorhint := 'Vullen huidige waarde CONDITIESCORE van lopende melding'; v_conditiescore := ''; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_conditiescore FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'CONDITIESCORE'); -- Prioriteitsscore v_errorhint := 'Vullen huidige waarde PRIORITEITS-SCORE van lopende melding'; v_prioscore := ''; SELECT max(km.mld_kenmerkmelding_waarde) INTO v_prioscore FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = v_mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'PRIORITEITSCORE'); -- v_errorhint := 'Bepalen STATUS van lopende melding'; v_mld_melding_status := ''; SELECT max(mld_melding_status) INTO v_mld_melding_status FROM mld_melding WHERE mld_melding_key = v_mld_melding_key ; -- v_errorhint := 'Bepalen INSPECTEUR / AANVRAGER van lopende melding'; v_inspecteur := ''; SELECT p.prs_perslid_email INTO v_inspecteur FROM mld_melding m, prs_perslid p WHERE m.prs_perslid_key = p.prs_perslid_key AND mld_melding_key = v_mld_melding_key ; -- v_errorhint := 'Bepalen BEHANDELAAR van lopende melding'; v_behandelaar := ''; SELECT max(p.prs_perslid_email) INTO v_behandelaar FROM mld_melding m, prs_perslid p WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key AND mld_melding_key = v_mld_melding_key ; -- Alles gevuld. Nu alle meldingsvelden updaten als REC-waarde gevuld is en als deze afwijkt van de huidige waarde v_herberekenen:=0; -- Omschrijving melding - Opmerking melding v_errorhint := 'Aanpassen opmerking bij melding'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omschrijving aangevuld met: ' || rec.mld_melding_omschrijving ; IF v_mld_melding_omschrijving <> rec.mld_melding_omschrijving AND rec.mld_melding_omschrijving IS NOT NULL THEN UPDATE mld_melding SET mld_melding_omschrijving = v_mld_melding_omschrijving || CHR (13) || CHR(13) || CHR (10) || to_char(sysdate,'DD-MM-YYYY') || ':' || CHR(13) || CHR (10) || rec.mld_melding_omschrijving WHERE mld_melding_key = v_mld_melding_key; END IF; -- Omvang v_errorhint := 'Aanpassen Omvang kenmerk'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omvang: (' || v_omvang || ') --> ' || rec.omvang ; IF rec.omvang IS NOT NULL AND v_omvang <> rec.omvang THEN mld.upsertmeldingkenmerk (v_omvang_kenmerk_key, v_mld_melding_key, v_omvang_key); v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; v_errorhint := 'Aanpassen Intensiteit kenmerk'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Intensiteit: (' || v_intensiteit || ') --> ' || rec.intensiteit ; IF rec.intensiteit IS NOT NULL AND v_intensiteit <> rec.intensiteit THEN mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key, v_mld_melding_key, v_intensiteit_key); v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 1 v_errorhint := 'Aanpassen aspectwaarde 1'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect1: (' || v_aspect1 || ') --> ' || rec.aspect1 ; IF NOT(rec.aspect1 = 'NVT') AND v_aspect1 <> rec.aspect1 AND NOT(INSTR(v_aspect1,'NVT')>0 AND INSTR(rec.aspect1,'NVT')>0) THEN IF rec.aspect1 = '0 - NVT' THEN set_aspect ('ASPECT1', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 2 v_errorhint := 'Aanpassen aspectwaarde 2'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect2: (' || v_aspect2 || ') --> ' || rec.aspect2 ; IF NOT(rec.aspect2 = 'NVT') AND v_aspect2 <> rec.aspect2 AND NOT(INSTR(v_aspect2,'NVT')>0 AND INSTR(rec.aspect2,'NVT')>0) THEN IF rec.aspect2 = '0 - NVT' THEN set_aspect ('ASPECT2', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 3 v_errorhint := 'Aanpassen aspectwaarde 3'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect3: (' || v_aspect3 || ') --> ' || rec.aspect3 ; IF NOT(rec.aspect3 = 'NVT') AND v_aspect3 <> rec.aspect3 AND NOT(INSTR(v_aspect3,'NVT')>0 AND INSTR(rec.aspect3,'NVT')>0) THEN IF rec.aspect3 = '0 - NVT' THEN set_aspect ('ASPECT3', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 4 v_errorhint := 'Aanpassen aspectwaarde 4'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect4: (' || v_aspect4 || ') --> ' || rec.aspect4 ; IF NOT(rec.aspect4 = 'NVT') AND v_aspect4 <> rec.aspect4 AND NOT(INSTR(v_aspect4,'NVT')>0 AND INSTR(rec.aspect4,'NVT')>0) THEN IF rec.aspect4 = '0 - NVT' THEN set_aspect ('ASPECT4', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 5 v_errorhint := 'Aanpassen aspectwaarde 5'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect5: (' || v_aspect5 || ') --> ' || rec.aspect5 ; IF NOT(rec.aspect5 = 'NVT') AND v_aspect5 <> rec.aspect5 AND NOT(INSTR(v_aspect5,'NVT')>0 AND INSTR(rec.aspect5,'NVT')>0) THEN IF rec.aspect5 = '0 - NVT' THEN set_aspect ('ASPECT5', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 6 v_errorhint := 'Aanpassen aspectwaarde 6'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect6: (' || v_aspect6 || ') --> ' || rec.aspect6 ; IF NOT(rec.aspect6 = 'NVT') AND v_aspect6 <> rec.aspect6 AND NOT(INSTR(v_aspect6,'NVT')>0 AND INSTR(rec.aspect6,'NVT')>0) THEN IF rec.aspect6 = '0 - NVT' THEN set_aspect ('ASPECT6', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Aspect 7 v_errorhint := 'Aanpassen aspectwaarde 7'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect7: (' || v_aspect7 || ') --> ' || rec.aspect7 ; IF NOT(rec.aspect7 = 'NVT') AND v_aspect7 <> rec.aspect7 AND NOT(INSTR(v_aspect7,'NVT')>0 AND INSTR(rec.aspect7,'NVT')>0) THEN IF rec.aspect7 = '0 - NVT' THEN set_aspect ('ASPECT7', 'NVT', v_mld_melding_key); ELSE set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key); END IF; v_herberekenen:=1; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- v_errorhint := 'Aanpassen Foto kenmerk'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Fotonaam: (' || v_foto || ') --> ' || rec.foto ; IF rec.foto IS NOT NULL AND COALESCE(v_foto, '') <> rec.foto AND v_foto_kenmerk_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_foto_kenmerk_key, v_mld_melding_key, rec.foto); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- v_errorhint := 'Aanpassen Kosten kenmerk'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Kosten: (' || v_kosten || ') --> ' || rec.kosten ; IF rec.kosten IS NOT NULL AND COALESCE(fac.safe_to_number(v_kosten), -1) <> rec.kosten AND v_kosten_kenmerk_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_kosten_kenmerk_key, v_mld_melding_key, TO_CHAR(rec.kosten)); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Plandatum v_errorhint := 'Aanpassen Plandatum'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Plandatum: (' || TO_CHAR(v_plandatum_date) || ') --> ' || TO_CHAR(rec.plandatum) ; IF rec.plandatum IS NOT NULL AND v_plandatum_date <> rec.plandatum THEN UPDATE mld_melding SET mld_melding_einddatum = rec.plandatum WHERE mld_melding_key = v_mld_melding_key ; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- flex1 v_errorhint := 'Aanpassen Dienst (Flex1)'; v_flex1_waarde := substr(rec.flex1,instr(rec.flex1,'=')+1,length(rec.flex1)-instr(rec.flex1,'=')); v_flex1_waarde_key := NULL; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Dienst: (' || v_dienst || ') --> ' || v_flex1_waarde ; IF v_flex1_waarde IS NOT NULL AND COALESCE(v_dienst,'') <> v_flex1_waarde AND v_flex1_kenmerk_key IS NOT NULL THEN SELECT max(prs_dienst_key) INTO v_flex1_waarde_key FROM prs_dienst WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_flex1_waarde); IF v_flex1_waarde_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_flex1_kenmerk_key, v_mld_melding_key, v_flex1_waarde_key); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; END IF; -- flex2 v_errorhint := 'Aanpassen Taakgroep (Flex2)'; v_flex2_waarde := substr(rec.flex2,instr(rec.flex2,'=')+1,length(rec.flex2)-instr(rec.flex2,'=')); v_flex2_waarde_key := NULL; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Taakgroep: (' || v_taakgroep || ') --> ' || v_flex2_waarde ; IF v_flex2_waarde IS NOT NULL AND COALESCE(v_taakgroep,'') <> v_flex2_waarde AND v_flex2_kenmerk_key IS NOT NULL THEN SELECT ud.fac_usrdata_key INTO v_flex2_waarde_key FROM mld_srtkenmerk sk, fac_kenmerkdomein kd, fac_usrtab ut, fac_usrdata ud, mld_kenmerk k WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND ut.fac_usrtab_key = kd.fac_usrtab_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_niveau = 'T' AND ud.fac_usrdata_upper = UPPER(v_flex2_waarde); IF v_flex2_waarde_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_flex2_kenmerk_key, v_mld_melding_key, v_flex2_waarde_key); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; END IF; -- flex3 v_errorhint := 'Aanpassen DatumGereedInspecteur (Flex3)'; v_flex3_waarde := substr(rec.flex3,instr(rec.flex3,'=')+1,length(rec.flex3)-instr(rec.flex3,'=')); v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Datum gereed (inspecteur): (' || v_datumgereedinspecteur || ') --> ' || v_flex3_waarde ; IF v_flex3_waarde IS NOT NULL AND (fac.safe_to_date (v_flex3_waarde, 'dd-mm-yyyy') IS NOT NULL) AND (COALESCE(v_datumgereedinspecteur,'') <> v_flex3_waarde) AND v_flex3_kenmerk_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_flex3_kenmerk_key, v_mld_melding_key, v_flex3_waarde); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- flex4 v_errorhint := 'Aanpassen Geadviseerd Startjaar (Flex4)'; v_flex4_waarde := substr(rec.flex4,instr(rec.flex4,'=')+1,length(rec.flex4)-instr(rec.flex4,'=')); v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Startjaar: (' || v_geadviseerdstartjaar || ') --> ' || v_flex4_waarde ; IF v_flex4_waarde IS NOT NULL AND COALESCE(v_geadviseerdstartjaar,'') <> v_flex4_waarde AND v_flex4_kenmerk_key IS NOT NULL THEN mld.upsertmeldingkenmerk (v_flex4_kenmerk_key, v_mld_melding_key, v_flex4_waarde); fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; -- Inspecteur v_errorhint := 'Aanpassen Inspecteur / Aanvrager'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Inspecteur: (' || v_inspecteur || ') --> ' || rec.prs_perslid_email ; IF (rec.prs_perslid_email IS NOT NULL OR LENGTH (rec.prs_perslid_email) > 200) AND COALESCE(v_inspecteur, '') <> rec.prs_perslid_email THEN SELECT prs_perslid_key INTO v_prs_perslid_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email); IF v_prs_perslid_key IS NOT NULL THEN UPDATE mld_melding SET prs_perslid_key = v_prs_perslid_key, prs_perslid_key_voor = v_prs_perslid_key WHERE mld_melding_key = v_mld_melding_key ; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; END IF; -- Behandelaar als nodig in behandeling zetten v_errorhint := 'Aanpassen Behandelaar'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Behandelaar: (' || v_behandelaar || ') --> ' || rec.flex9 ; IF rec.flex9 IS NOT NULL AND COALESCE(v_behandelaar, '') <> rec.flex9 THEN SELECT max(prs_perslid_key) INTO v_prs_behandelaar_key FROM prs_v_aanwezigperslid WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9); IF v_prs_behandelaar_key IS NOT NULL THEN UPDATE mld_melding SET mld_melding_behandelaar_key = v_prs_behandelaar_key WHERE mld_melding_key = v_mld_melding_key ; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; IF v_mld_melding_status IN (2) THEN -- PROCEDURE setmeldingstatus (pmeldingkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER, pnotificeren IN NUMBER DEFAULT 1) BEGIN mld.setmeldingstatus(v_mld_melding_key, 4, sys_context('USERENV', 'CLIENT_IDENTIFIER'), 1); END; -- Status 4 is in behandeling v_mld_melding_status:=4; v_herberekenen:=1; END IF; END IF; -- Her-berekenen van de Conditie- en Prioriteitscore ---- Alleen als de melding status lopend heeft.. ---- Alleen als de omvang, intensiteit of 1 vd aspectwaarden is veranderd.. v_errorhint := 'Herberekenen conditie- en prio-score'; v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is herberekend via upload gebreken:' || CHR(13) || CHR(10) || 'Oorspronkelijke conditiescore: ' || TO_CHAR(v_conditiescore) || CHR(13) || CHR(10) || 'Oorspronkelijke prioriteitscore: ' || TO_CHAR(v_prioscore) ; IF v_mld_melding_status IN (0,4,7,99) AND v_herberekenen=1 THEN BEGIN cnd.process_mjb_score_effects (v_mld_melding_key); END; COMMIT; fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding); END IF; v_count_import := v_count_import + 1; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'UPDATE NEN2767_RESULTS: aantal regels te verwerken: ' || TO_CHAR (v_count_tot) || ' / aantal geldige regels: ' || TO_CHAR (v_count_import) || ' / aantal BIJGEWERKTE, BESTAANDE gebreken: ' || TO_CHAR (v_count_tot_n) , ''); 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.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END aaxx_update_nen2767_assetman; / ------------------------------------------------------------------------------- -- GRANTS naar AAFM database. ------------------------------------------------------------------------------- GRANT SELECT ON aaxx_v_dwh_prs_bedrijf TO aafm; GRANT SELECT ON aaxx_v_dwh_prs_bedrijfadres TO aafm; GRANT SELECT ON aaxx_v_dwh_cnt_contract TO aafm; GRANT SELECT ON aaxx_v_dwh_cnt_contract_scope TO aafm; GRANT SELECT ON aaxx_v_dwh_cnt_contract_mantel TO aafm; GRANT SELECT ON aaxx_v_dwh_cnt_factuurschema TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_contract TO aafm; GRANT SELECT ON aaxx_v_dwh_mld_stdmelding TO aafm; GRANT SELECT ON aaxx_v_dwh_mld_melding TO aafm; GRANT SELECT ON aaxx_v_dwh_res_reservering TO aafm; GRANT SELECT ON aaxx_v_dwh_bes_bestelling TO aafm; GRANT SELECT ON aaxx_v_dwh_bez_bezoekers TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_melding TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_opdracht TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_reservering TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_bestelling TO aafm; GRANT SELECT ON aaxx_v_dwh_fin_factuur TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_factuur TO aafm; GRANT SELECT ON aaxx_v_dwh_fin_factuur_vk TO aafm; GRANT SELECT ON aaxx_v_dwh_prs_kostenplaats TO aafm; GRANT SELECT ON aaxx_v_dwh_prs_kostensoort TO aafm; GRANT SELECT ON aaxx_v_dwh_prs_perslid TO aafm; GRANT SELECT ON aaxx_v_dwh_fac_groeprechten TO aafm; GRANT SELECT ON aaxx_v_dwh_prs_afdeling TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_prs TO aafm; GRANT SELECT ON aaxx_v_dwh_alg_onrgoed TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_onrgoed TO aafm; GRANT SELECT ON aaxx_v_dwh_ins_sensor_status TO aafm; GRANT SELECT ON aaxx_v_dwh_inspectie TO aafm; GRANT SELECT ON aaxx_v_dwh_inspectie_2 TO aafm; GRANT SELECT ON aaxx_v_dwh_ins_object TO aafm; GRANT SELECT ON aaxx_v_dwh_kenmerk_object TO AAFM; GRANT SELECT ON aaxx_v_dwh_kenmerk_inspectie TO aafm; GRANT SELECT ON aaxx_v_dwh_uren TO aafm; GRANT SELECT ON aaxx_v_dwh_uren_improd TO aafm; GRANT SELECT ON aaxx_v_dwh_tracking TO aafm; GRANT SELECT ON aaxx_v_dwh_faq TO aafm; GRANT SELECT ON aaxx_v_dwh_budget_tracker TO aafm; GRANT SELECT ON AAXX_V_DWH_GUI_COUNTER TO aafm; GRANT SELECT ON AAXX_V_DWH_FAQ2 TO aafm; GRANT SELECT ON AAXX_V_DWH_USRDATA TO aafm; -- views tbv user telling GRANT SELECT ON aaxx_v_lcrap_key_stats TO aafm; GRANT SELECT ON fac_v_lcrap_fe_vs_key TO aafm; GRANT SELECT ON aaxx_exp_uren_dekking TO aait; ------ 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