-- -- $Id$ -- -- Script containing customer specific db-configuration for STCH. DEFINE thisfile = 'STCH.SQL' DEFINE dbuser = '^STCH' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE VIEW stch_v_rap_ocr ( opdracht_key, opdracht_nummer, opdracht_regio, opdracht_district, opdracht_locatie_code, opdracht_locatie, opdracht_locatieplaats, fclt_3d_locatie_key, opdracht_gebouwcode, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_ruimte, opdracht_kostenplaats, opdracht_kostenplaats_oms, melding_key, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_acceptdatum, opdracht_goedgekeurd, opdracht_afgemeld, opdracht_doorlooptijd, opdracht_accepttijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, opdracht_contract, opdracht_contract_versie, opdracht_contactpersoon, opdracht_uren, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, reason_0_order, inkoopprijs, uurtarief, aantal_uren, percentage, subtotaal_kosten_uren, totaal_kosten, berekende_marge, verkoopprijs, periode, aanvrager, organisatie, categorie, opdracht_gereeddatum, kostensoortgroep, kostensoortnr, kostensoort, melding, meldingsgroep, kostenplaatsnummer, rema_budget, veiligheid ) AS SELECT DISTINCT o.opdracht_key, o.opdracht_nummer, o.opdracht_regio, o.opdracht_district, o.opdracht_locatie_code, o.opdracht_locatie, o.opdracht_locatieplaats, o.fclt_3d_locatie_key, o.opdracht_gebouwcode, o.opdracht_gebouw, o.opdracht_verdieping, o.opdracht_ruimtenr, o.opdracht_ruimte, o.opdracht_kostenplaats, o.opdracht_kostenplaats_oms, o.melding_key, o.opdracht_type, o.opdracht_volgnummer, o.opdracht_status, o.opdracht_duur_gepland, o.opdracht_datum, o.opdracht_einddatum, o.opdracht_plandatum, o.opdracht_acceptdatum, track.datum, o.opdracht_afgemeld, o.opdracht_doorlooptijd, o.opdracht_accepttijd, o.opdracht_omschrijving, o.opdracht_opmerking, o.opdracht_uitvoerende, o.opdracht_uitvoerende_contact, o.opdracht_behandelaar, o.opdracht_contract, o.opdracht_contract_versie, o.opdracht_contactpersoon, o.opdracht_uren, o.opdracht_correctie, o.opdracht_materiaal, o.opdracht_uurtarief, o.opdracht_kosten, (SELECT f.fac_usrdata_omschr FROM fac_usrdata f WHERE f.fac_usrdata_key = (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 321)) reason_0_order, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1066) inkoopprijs, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1064) uurtarief, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1063) geraamde_uren, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1067) interne_marge_perc, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1065) subtotaal_kosten_uren, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1070) totale_kosten, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1069) berekende_marge, (SELECT mvk.mld_kenmerkopdr_waarde FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_v_aanwezigkenmerkopdr mvk WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key AND mvk.mld_opdr_key = mo.mld_opdr_key AND mk.mld_kenmerk_niveau = 'O' AND msk.mld_srtkenmerk_key = 1068) verkoopprijs, TO_CHAR (o.opdracht_datum, 'yyyy-mm') periode, p.prs_perslid_naam || NVL2 (p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '') || NVL2 (p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '') || NVL2 (p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '') aanvrager, d.prs_afdeling_naam organisatie, md.ins_discipline_omschrijving, mo.mld_opdr_einddatum, ksg.prs_kostensoortgrp_oms, ks.prs_kostensoort_refcode, ks.prs_kostensoort_oms, std.mld_stdmelding_omschrijving, stdg.mld_stdmeldinggroep_oms, k.prs_kostenplaats_nr, (SELECT f.fac_usrdata_omschr FROM fac_usrdata f WHERE f.fac_usrdata_key = (SELECT fac.safe_to_number(mvk.mld_kenmerkopdr_waarde) FROM mld_v_aanwezigkenmerkopdr mvk WHERE mvk.mld_kenmerk_key = 1601 AND mvk.mld_opdr_key = mo.mld_opdr_key)) rema_budget, (SELECT f.fac_usrdata_omschr FROM fac_usrdata f WHERE f.fac_usrdata_key = (SELECT fac.safe_to_number(mvk.mld_kenmerkopdr_waarde) FROM mld_v_aanwezigkenmerkopdr mvk WHERE mvk.mld_kenmerk_key = 1721 AND mvk.mld_opdr_key = mo.mld_opdr_key)) veiligheid FROM mld_v_udr_opdracht o, mld_opdr mo, prs_kostenplaats k, prs_kostenplaatsgrp kpg, prs_kostensoort ks, prs_kostensoortgrp ksg, prs_v_afdeling d, prs_perslid p, mld_discipline md, mld_stdmelding std, mld_stdmeldinggroep stdg, mld_melding m, ( SELECT fac_tracking_refkey key, MAX (fac_tracking_datum) datum FROM fac_tracking WHERE fac_tracking_oms LIKE '%Goedgekeurd%' AND fac_tracking_oms LIKE '%--> Ja%' GROUP BY fac_tracking_refkey) track WHERE mo.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND std.prs_kostensoort_key = ks.prs_kostensoort_key(+) AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+) AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+) AND m.mld_stdmelding_key = std.mld_stdmelding_key AND stdg.mld_stdmeldinggroep_key(+) = std.mld_stdmeldinggroep_key AND std.mld_ins_discipline_key = md.ins_discipline_key AND m.mld_melding_key = mo.mld_melding_key AND mo.mld_opdr_key = o.opdracht_key AND p.prs_afdeling_key = d.prs_afdeling_key(+) AND p.prs_perslid_key = mo.prs_perslid_key AND TRUNC (o.opdracht_einddatum) > TO_DATE ('01-01-2018', 'dd-mm-yyyy') AND track.key(+) = o.opdracht_key; CREATE OR REPLACE VIEW stch_v_rap_opdrkosten ( CONTRACT_NUMMER, EXTERN_NUMMER, UITVOERENDE, BEDRAG, KOSTENPLAATS, KOSTENPLAATS_CODE, OPDRACHTNR, OPDRACHT_AFGEROND, OPDRACHT_GOEDGEKEURD ) AS SELECT cn.cnt_contract_nummer, cn.cnt_contract_nummer_intern, pb.prs_bedrijf_naam, mo.mld_opdr_kosten, pk.prs_kostenplaats_omschrijving, pk.prs_kostenplaats_nr, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || '/' || mo.mld_opdr_bedrijfopdr_volgnr, mld.getopdrachtstatusdate (mo.mld_opdr_key, 9), track.datum FROM mld_opdr mo, cnt_contract cn, mld_melding m, ins_srtdiscipline sd, mld_stdmelding s, mld_discipline md, prs_kostenplaats pk, prs_bedrijf pb, mld_kenmerkopdr mk, ( SELECT fac_tracking_refkey key, MAX (fac_tracking_datum) datum FROM fac_tracking WHERE fac_tracking_oms LIKE '%Goedgekeurd%' AND fac_tracking_oms LIKE '%--> Ja%' GROUP BY fac_tracking_refkey) track WHERE mo.cnt_contract_key = cn.cnt_contract_key(+) AND m.mld_melding_key = mo.mld_melding_key(+) AND s.mld_stdmelding_key = m.mld_stdmelding_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND mo.prs_kostenplaats_key = pk.prs_kostenplaats_key AND mo.mld_uitvoerende_keys = pb.prs_bedrijf_key AND mo.mld_opdr_key = mk.mld_opdr_key AND mk.mld_kenmerk_key IN (1621, 1641, 1642) AND mk.mld_kenmerkopdr_waarde = '142' -- Goedgekeurd = Ja AND TRUNC (track.datum) = TRUNC (SYSDATE - 1) AND mo.mld_opdr_kosten IS NOT NULL AND mo.mld_opdr_kosten NOT LIKE '0' AND track.key = mo.mld_opdr_key; -- Rapport voor het controleren van keyusers CREATE OR REPLACE VIEW stch_v_rap_keyusers ( perslid_key, naam, keyuser, laatste_login ) AS SELECT f.prs_perslid_key, f.naam, DECODE (f.key_user, 1, 'Ja', 'Nee'), f.last_login FROM fac_v_lcrap_fe_vs_key_data f, prs_perslid p WHERE f.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder IS NULL; -- Aantal dagen geen reactie op RFQ naar strukton CREATE OR REPLACE VIEW stch_v_rap_uitvoerdagen ( opdracht_key, opdrachtnummer, verzonden, reactie_werkdagen ) AS SELECT o.mld_opdr_key, TO_CHAR (mo.mld_typeopdr_omschrijving || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr) opdrachtnummer, o.mld_opdr_verzonden, (TRUNC (SYSDATE, 'iw') - TRUNC (mld_opdr_verzonden, 'iw')) * 5 / 7 + LEAST (5, TRUNC (SYSDATE) - TRUNC (SYSDATE, 'iw')) - LEAST (5, TRUNC (mld_opdr_verzonden) - TRUNC (mld_opdr_verzonden, 'iw')) werkdagen FROM mld_opdr o, mld_typeopdr mo WHERE o.mld_typeopdr_key = 165 AND o.mld_statusopdr_key IN (5) -- Toegekend, dus nog geen reactie ontvangen AND o.mld_uitvoerende_keys = 50422 AND o.mld_typeopdr_key = mo.mld_typeopdr_key; --Strukton koppeling CREATE OR REPLACE PROCEDURE stch_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); v_totaal NUMBER (8,2); v_totaal_str VARCHAR2 (100); -- 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 stch_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); fac.imp_getfield (v_newline, c_delim, v_totaal_str); 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 || '] '; v_totaal := fac.safe_to_number(v_totaal_str); fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),''); -- 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' AND UPPER (TRIM (v_totaal_str)) = 'TOTAL' 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 WHEN v_status_code = '45' -- uitgeprijst THEN v_status := 9; -- afgerond 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 stch_imp_opdrstat_strukton (mld_opdr_key, extern_nummer, status, datumtijd, opmerking, totaal) VALUES (v_mld_opdr_key, v_extern_nummer, v_status, v_datumtijd, v_opmerking, v_totaal); 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 stch_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 stch_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, totaal FROM stch_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); v_goedgekeurd NUMBER (10); v_opdrgoed_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. v_mld_srtkenmerk_key := 123; 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 bepalen kenmerk goedgekeurd.'; SELECT k.mld_kenmerk_key INTO v_goedgekeurd FROM mld_kenmerk k WHERE k.mld_srtkenmerk_key = 1041 -- goedgekeurd AND k.mld_typeopdr_key = v_mld_typeopdr_key; v_errormsg := 'Fout bij bepalen kenmerkopdracht goedgekeurd.'; SELECT max(ko.mld_kenmerkopdr_key) INTO v_opdrgoed_key FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = v_opdr_key AND v_goedgekeurd = 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 = 9 AND v_opdr_status = 6 THEN -- De opdracht is in Focus uitgeprijst door Sitech, dus deze mag nu als goedgekeurd worden gezien. IF v_opdrgoed_key IS NULL THEN -- kenmerk toevoegen INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde) VALUES (v_goedgekeurd, v_opdr_key, '142'); fac.trackaction ('ORDUPD', v_opdr_key, NULL, SYSDATE, 'Goedgekeurd: --> Ja'); ELSE -- kenmerk aanpassen UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = '142' WHERE mld_kenmerkopdr_key = v_opdrgoed_key; fac.trackaction ('ORDUPD', v_opdr_key, NULL, SYSDATE, 'Goedgekeurd: --> Ja'); END IF; -- Het totaalbedrag mag nu ook worden weggeschreven, dit is immers al goedgekeurd. UPDATE mld_opdr SET mld_opdr_materiaal = rec.totaal, mld_opdr_kosten = rec.totaal WHERE mld_opdr_key = v_opdr_key; -- Meld de opdracht kostentechnisch gereed wanneer deze was afgemeld MLD.setopdrachtstatus (v_opdr_key, 9, 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.'; 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; / -- Rapportage voor login CREATE OR REPLACE VIEW STCH_V_RAP_NOLOGIN ( VOORNAAM, ACHTERNAAM, EMAIL, LAATSTE_LOGIN ) AS SELECT pa.prs_perslid_voornaam, pa.prs_perslid_naam, pa.prs_perslid_email, pa.prs_perslid_login FROM prs_v_aanwezigperslid pa, prs_perslid p WHERE pa.prs_perslid_login < SYSDATE - 30 AND p.prs_perslid_key = pa.prs_perslid_key AND pa.prs_perslid_naam NOT LIKE '%INACTIEF%' AND p.prs_perslid_verwijder IS NULL; -- Rapport met users die meldingen mogen inleggen (MLDUSE). CREATE OR REPLACE VIEW STCH_V_RAP_MLDUSERS ( prskey, achternaam, voornaam, email, login, functie_code ) AS SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_voornaam, p.prs_perslid_email, p.prs_perslid_oslogin, f.fac_functie_code FROM fac_groeprechten g, fac_gebruikersgroep gg, prs_v_aanwezigperslid p, fac_functie f, fac_groep gr WHERE 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 f.fac_functie_key = g.fac_functie_key AND f.fac_functie_code = 'WEB_MLDUSE' AND p.prs_perslid_verwijder IS NULL GROUP BY (p.prs_perslid_key, p.prs_perslid_voornaam, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_oslogin, f.fac_functie_code) ORDER BY p.prs_perslid_naam; -- -- GRAFISCH -- CREATE OR REPLACE VIEW stch_v_thema_srtruimte ( alg_ruimte_key, waarde, waarde_key ) AS SELECT DISTINCT r.alg_ruimte_key, COALESCE ( (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrtab_key = 221 -- omzettingstabel soortruimte naar omschrijving AND alg_srtruimte_omschrijving LIKE fac_usrdata_code || '%'), 'onbekend'), NULL alg_srtruimte_key FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; -- views ter ondersteuning aan Facilitor graphics -- sleepbaar thema om huurder aan thema te koppelen. CREATE OR REPLACE VIEW stch_v_thema_ruimte_huurder ( alg_ruimte_key, waarde, waarde_key ) AS SELECT x.alg_ruimte_key, DECODE (y.aantal, NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), 1, SUBSTR (y.sp, 1, 60), 'Meer dan 1 huurder!'), DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x LEFT JOIN (SELECT ra.alg_ruimte_key, MIN (a.prs_afdeling_naam1) sp, MIN (a.prs_afdeling_key) sp_key, COUNT (ra.prs_afdeling_key) aantal FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a WHERE ra.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_naam <> 'Onbekend' GROUP BY ra.alg_ruimte_key) y ON x.alg_ruimte_key = y.alg_ruimte_key UNION ALL SELECT NULL, substr(a.prs_afdeling_naam1,1,60), a.prs_afdeling_key FROM prs_v_aanwezigafdeling a WHERE NOT EXISTS (SELECT ra.prs_afdeling_key FROM prs_ruimteafdeling ra WHERE ra.prs_ruimteafdeling_verwijder IS NULL AND ra.prs_afdeling_key = a.prs_afdeling_key) AND a.prs_afdeling_naam <> 'Onbekend'; CREATE OR REPLACE TRIGGER stch_t_thema_ruimte_die_i_iu INSTEAD OF INSERT OR UPDATE ON STCH_V_THEMA_RUIMTE_HUURDER DECLARE verhuurbaar NUMBER; BEGIN IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)! THEN DELETE FROM prs_ruimteafdeling WHERE alg_ruimte_key = :new.alg_ruimte_key AND prs_afdeling_key <> :new.waarde_key; END IF; BEGIN SELECT prs_verhuurbaar INTO verhuurbaar FROM alg_ruimte r, alg_srtruimte sr WHERE r.alg_ruimte_key = :new.alg_ruimte_key AND r.alg_srtruimte_key = sr.alg_srtruimte_key; IF :new.waarde_key <> -1 AND verhuurbaar = 1 THEN INSERT INTO prs_ruimteafdeling ( alg_ruimte_key, prs_afdeling_key ) VALUES (:new.alg_ruimte_key, :new.waarde_key); END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX -- was al aanwezig THEN NULL; END; END; / -- views ter ondersteuning aan Facilitor graphics -- Niet sleepbaar thema om huurder op hoogste afdelingsniveau te bekijken. CREATE OR REPLACE VIEW stch_v_thema_ruimte_huurder1 ( alg_ruimte_key, waarde, waarde_key ) AS SELECT x.alg_ruimte_key, DECODE (y.aantal, NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), 1, SUBSTR (y.sp, 1, 60), 'Meer dan 1 huurder!'), DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x LEFT JOIN (SELECT ra.alg_ruimte_key, MIN (a.prs_afdeling_naam1) sp, MIN (a.prs_afdeling_key) sp_key, COUNT (ra.prs_afdeling_key) aantal FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab WHERE ra.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a.prs_afdeling_key AND a.prs_afdeling_naam <> 'Onbekend' GROUP BY ra.alg_ruimte_key) y ON x.alg_ruimte_key = y.alg_ruimte_key; -- views ter ondersteuning aan Facilitor graphics -- Niet sleepbaar thema om inzicht te krijgen in de leegstand situatie CREATE OR REPLACE VIEW stch_v_thema_leegstand ( alg_ruimte_key, waarde, waarde_key ) AS SELECT x.alg_ruimte_key, DECODE (y.aantal, NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), '[Verhuurd]'), DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x LEFT JOIN (SELECT ra.alg_ruimte_key, MIN (a.prs_afdeling_naam1) sp, MIN (a.prs_afdeling_key) sp_key, COUNT (ra.prs_afdeling_key) aantal FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab WHERE ra.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a.prs_afdeling_key AND a.prs_afdeling_naam <> 'Onbekend' GROUP BY ra.alg_ruimte_key) y ON x.alg_ruimte_key = y.alg_ruimte_key; -- HV views afkomstig uit AASI CREATE OR REPLACE VIEW STCH_V_DWH_HV_FREEZE ( KWARTAAL, EIGENAAR, LOC_CODE, GEB_CODE, VER_CODE, RUIMTE_NR, RUIMTESOORT, CODE, OPP, TEKEN_OPP, HUURDER_NUMMER, HUURDER_NAAM, FDC, BEZETTING, TARIEF_HUUR, TARIEF_SERVICE, SK_ONDERHOUD, SK_UTILITY, SK_OVERIG, SK_KORTING ) AS SELECT kwartaal, eigenaar, loc_code, geb_code, ver_code, ruimte_nr, ruimtesoort, code, opp, teken_opp, huurder_nummer, huurder_naam, fdc, bezetting, tarief_huur, tarief_service, sk_onderhoud, sk_utility, sk_overig, sk_korting FROM stch_hv_freeze WHERE loc_code = 'ON'; -- HV nu alleen nog met ONSITE gebouwen CREATE OR REPLACE VIEW STCH_V_HV_DETAIL ( EIGENAAR, LOC_CODE, GEB_CODE, VER_CODE, RUIMTE_NR, RUIMTESOORT, CODE, VERHUURBAAR, OPP, TEKEN_OPP, DSM_DERDEN, DEBITEUR, HUURDER_NUMMER, HUURDER_NAAM, FDC, BEZETTING, TARIEF_HUUR, TARIEF_SERVICE, TARIEF_SERVICE2, TARIEF_SERVICE3, TARIEF_SERVICE4, TARIEF_SERVICE5, TOTAAL_HUUR, TOTAAL_SERVICE, HIDE_F_PRS_AFDELING_KEY, REMA, FM ) AS SELECT * FROM ((SELECT a.eigenaar, a.alg_locatie_code, a.alg_gebouw_upper, a.alg_verdieping_code, a.alg_ruimte_nr, COALESCE ( (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrtab_key = 221 AND b.ruimtesoort LIKE fac_usrdata_code || '%'), 'onbekend') ruimtesrt, b.ruimtesoort, verhuurbaar, a.opp * d.afd_bez / 100, a.opp teken_opp, prs_bedrijf_naam dsm_derden, debiteur debiteur, d.afd_naam, d.afd_oms, kostenpl fdc, d.afd_bez, huur m2_huur, COALESCE (service2, 0) + COALESCE (service3, 0) + COALESCE (service4, 0) + COALESCE (service5, 0) m2_service, service2 m2_service2, service3 m2_service3, service4 m2_service4, service5 m2_service5, ROUND (a.opp * (d.afd_bez / 100) * huur, 2) tot_huur, ROUND ( a.opp * (d.afd_bez / 100) * ( COALESCE (service2, 0) + COALESCE (service3, 0) + COALESCE (service4, 0) + COALESCE (service5, 0)), 2) tot_service, d.prs_afdeling_key, (SELECT fac_usrdata_omschr rema FROM alg_onrgoedkenmerk ogk, fac_usrdata ud WHERE ogk.alg_kenmerk_key = 1060 AND fac.safe_to_number (ogk.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key AND ogk.alg_onrgoed_key = a.alg_gebouw_key) rema, (SELECT fac_usrdata_omschr fm FROM alg_onrgoedkenmerk ogk, fac_usrdata ud WHERE ogk.alg_kenmerk_key = 1061 AND fac.safe_to_number (ogk.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key AND ogk.alg_onrgoed_key = a.alg_gebouw_key) fm FROM (SELECT (SELECT COALESCE (fac_usrdata_omschr, 'Onbekend') FROM alg_onrgoedkenmerk ok, fac_usrdata ud WHERE alg_kenmerk_key = 1063 AND ok.alg_onrgoed_niveau = 'G' AND ok.alg_onrgoed_key = rg.alg_gebouw_key AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key) eigenaar, rg.alg_ruimte_key, rg.alg_ruimte_nr, rg.alg_verdieping_code, rg.alg_gebouw_key, rg.alg_gebouw_upper, rg.alg_locatie_code, rg.alg_ruimte_bruto_vloeropp opp, srlg.alg_srtruimte_lg_prijs huur, srlg.alg_srtruimte_lg_prijs2 service2, srlg.alg_srtruimte_lg_prijs3 service3, srlg.alg_srtruimte_lg_prijs4 service4, srlg.alg_srtruimte_lg_prijs5 service5, sr.prs_verhuurbaar verhuurbaar FROM (SELECT r.*, (SELECT alg_srtruimte_lg_key FROM alg_srtruimte_locatiegebouw srlg WHERE srlg.alg_gebouw_key = r.alg_gebouw_key AND srlg.alg_srtruimte_key = r.alg_srtruimte_key) alg_srtruimte_lg_key FROM alg_v_ruimte_gegevens r) rg, alg_srtruimte sr, alg_srtruimte_locatiegebouw srlg WHERE rg.alg_srtruimte_key = sr.alg_srtruimte_key(+) AND rg.alg_srtruimte_lg_key = srlg.alg_srtruimte_lg_key(+)) a LEFT JOIN (SELECT r.alg_ruimte_key, COALESCE (sr.alg_srtruimte_omschrijving, '-') ruimtesoort FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) b ON a.alg_ruimte_key = b.alg_ruimte_key LEFT JOIN -- afdeling(en) op ruimte (SELECT ra.alg_ruimte_key, afd.prs_afdeling_naam afd_naam, k.prs_kostenplaats_nr kostenpl, afd.prs_afdeling_key, afd.prs_afdeling_omschrijving afd_oms, ra.prs_ruimteafdeling_bezetting afd_bez, a1.prs_afdeling_naam debiteur, b.prs_bedrijf_naam FROM prs_v_aanwezigruimteafdeling ra, prs_afdeling afd LEFT JOIN prs_kostenplaats k ON afd.prs_kostenplaats_key = k.prs_kostenplaats_key, prs_v_afdeling_boom ab, prs_afdeling a1, prs_bedrijf b WHERE ra.prs_afdeling_key = afd.prs_afdeling_key AND afd.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a1.prs_afdeling_key AND ab.prs_bedrijf_key = b.prs_bedrijf_key UNION ALL SELECT x.alg_ruimte_key, NULL afd_naam, NULL afd_oms, NULL kostenpl, NULL prs_afdeling_key, (100 - x.rui_bez) afd_bez, NULL debiteur, NULL prs_bedrijf_naam FROM ( SELECT ra.alg_ruimte_key, SUM (ra.prs_ruimteafdeling_bezetting) rui_bez FROM prs_v_aanwezigruimteafdeling ra GROUP BY ra.alg_ruimte_key) x WHERE x.rui_bez < 100) d ON a.alg_ruimte_key = d.alg_ruimte_key)) sub WHERE sub.alg_locatie_code = 'ON' AND NOT EXISTS (SELECT 1 FROM alg_gebouw ag WHERE ag.alg_gebouw_upper = sub.alg_gebouw_upper AND ag.alg_gebouw_verwijder IS NOT NULL); CREATE OR REPLACE VIEW STCH_V_HV_ACTUAL ( EIGENAAR, LOC_CODE, GEB_CODE, VER_CODE, RUIMTE_NR, RUIMTESOORT, CODE, OPP, TEKEN_OPP, HUURDER_NUMMER, HUURDER_NAAM, FDC, BEZETTING, TARIEF_HUUR, TARIEF_SERVICE, SK_ONDERHOUD, SK_UTILITY, SK_OVERIG, SK_KORTING, TOTAAL_HUUR, TOTAAL_SERVICE, PRS_AFDELING_KEY ) AS SELECT eigenaar, loc_code, geb_code, ver_code, ruimte_nr, ruimtesoort, code, opp, teken_opp, huurder_nummer, huurder_naam, fdc, bezetting, tarief_huur, tarief_service, tarief_service2, tarief_service3, tarief_service4, tarief_service5, totaal_huur, totaal_service, hide_f_prs_afdeling_key FROM stch_v_hv_detail WHERE verhuurbaar = 1; CREATE OR REPLACE VIEW STCH_V_RAP_AUTH_BESTELLERS ( FCLT_F_NAAM, FCLT_F_KOSTENPLAATS, FCLT_F_MANDAAT, FCLT_F_PROFIEL, FCLT_F_AFDELING, TELEFOONNUMMER, EMAILADRES ) AS SELECT prs_perslid_naam_full Naam, prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving Kostenplaats, 'Afdeling', g.fac_groep_omschrijving Profiel, prs_afdeling_omschrijving Afdeling, COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel) Telefoon, prs_perslid_email Mail FROM prs_v_perslid_fullnames pf, fac_gebruikersgroep fg, fac_groep g, prs_perslid p, prs_afdeling a, prs_kostenplaats k WHERE pf.prs_perslid_key = fg.prs_perslid_key AND pf.prs_perslid_key = p.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND g.fac_groep_key = fg.fac_groep_key AND fg.fac_groep_key IN (621, 681, 2) AND p.prs_perslid_upper NOT LIKE 'ARCHIVE%' UNION ALL SELECT prs_perslid_naam_full Naam, prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving Kostenplaats, 'Gemandateerd', g.fac_groep_omschrijving Profiel, prs_afdeling_omschrijving Afdeling, COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel) Telefoon, prs_perslid_email Mail FROM prs_v_perslid_fullnames pf, fac_gebruikersgroep fg, fac_groep g, prs_perslid p, prs_afdeling a, prs_kostenplaats k, (SELECT p.prs_perslid_key, k.prs_kostenplaats_key FROM prs_perslidkostenplaats pk, prs_perslid p, prs_kostenplaats k WHERE p.prs_perslid_key = pk.prs_perslid_key AND k.prs_kostenplaats_key = pk.prs_kostenplaats_key AND k.prs_kostenplaats_verwijder IS NULL AND p.prs_perslid_verwijder IS NULL) m WHERE pf.prs_perslid_key = fg.prs_perslid_key AND pf.prs_perslid_key = p.prs_perslid_key AND m.prs_perslid_key = p.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key AND m.prs_kostenplaats_key = k.prs_kostenplaats_key AND g.fac_groep_key = fg.fac_groep_key AND fg.fac_groep_key IN (621, 681, 2) AND p.prs_perslid_upper NOT LIKE 'ARCHIVE%' ORDER BY 1, 3, 4, 2; CREATE OR REPLACE VIEW STCH_V_RAP_HV_ACTUAL ( FCLT_F_EIGENAAR, FCLT_F_LOC_CODE, FCLT_F_GEB_CODE, VER_CODE, RUIMTE_NR, FCLT_F_RUIMTESOORT, FCLT_F_CODE, OPP, TEKEN_OPP, FCLT_F_HUURDER_NUMMER, FCLT_F_HUURDER_NAAM, FCLT_F_FDC, BEZETTING, TARIEF_HUUR, TARIEF_SERVICE, SK_ONDERHOUD, SK_UTILITY, SK_OVERIG, SK_KORTING, TOTAAL_HUUR, TOTAAL_SERVICE, HIDE_F_PRS_AFDELING_KEY ) AS SELECT eigenaar, loc_code, geb_code, ver_code, ruimte_nr, ruimtesoort, code, opp, teken_opp, huurder_nummer, huurder_naam, fdc, bezetting, TO_CHAR (tarief_huur, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_onderhoud, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_utility, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_overig, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_korting, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), totaal_huur, totaal_service, prs_afdeling_key FROM stch_v_hv_actual; CREATE OR REPLACE VIEW STCH_V_RAP_HV_AFD_TOTALEN ( FCLT_F_EIGENAAR, FCLT_F_FDC, FCLT_F_HOOFDHUURDER, TOTAAL_HUUR, TOTAAL_HUUR_MND, TOTAAL_SERVICE, TOTAAL_SERVICE_MND ) AS SELECT v.eigenaar, v.fdc, a.prs_afdeling_omschrijving, ROUND (SUM (v.totaal_huur), 2), ROUND ( (SUM (v.totaal_huur) / 12), 2), ROUND (SUM (v.totaal_service), 2), ROUND ( (SUM (v.totaal_service) / 12), 2) FROM stch_v_hv_actual v, prs_v_afdeling_boom ab, prs_v_afdeling a WHERE v.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a.prs_afdeling_key GROUP BY v.eigenaar, v.fdc, a.prs_afdeling_omschrijving; CREATE OR REPLACE VIEW STCH_V_RAP_HV_CHECK ( FCLT_F_EIGENAAR, FCLT_F_LOC_CODE, FCLT_F_GEB_CODE, VER_CODE, RUIMTE_NR, FCLT_F_RUIMTESOORT, FCLT_F_CODE, OPP, TEKEN_OPP, FCLT_F_HUURDER_NUMMER, FCLT_F_HUURDER_NAAM, FCLT_F_FDC, BEZETTING, FCLT_F_VERHUURBAAR, TARIEF_HUUR, SK_ONDERHOUD, SK_UTILITY, SK_OVERIG, SK_KORTING, TARIEF_SERVICE ) AS SELECT eigenaar, loc_code, geb_code, ver_code, ruimte_nr, ruimtesoort, code, opp, teken_opp, huurder_nummer, huurder_naam, fdc, bezetting, DECODE (verhuurbaar, 1, 'Ja', 'Nee'), TO_CHAR (tarief_huur, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service2, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service3, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service4, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service5, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM stch_v_hv_detail; CREATE OR REPLACE VIEW STCH_V_RAP_HV_DOORBEL_DELTA ( FCLT_F_LOCATIE, FCLT_F_GEBOUW, FCLT_F_VERDIEPING, FCLT_F_RUIMTE, FCLT_F_HUURDER_NUMMER, FCLT_F_HUURDER_NAAM, M2_NU, M2_DELTA ) AS (SELECT DISTINCT z.loc, z.geb, z.verd, z.ruimte, z.nr, z.naam, z.m2_actueel, z.m2_verschil FROM (SELECT COALESCE (x.loc, y.loc) loc, COALESCE (x.geb, y.geb) geb, COALESCE (x.verd, y.verd) verd, COALESCE (x.ruimte, y.ruimte) ruimte, COALESCE (x.nr, y.nr) nr, DECODE (x.naam, COALESCE (y.naam, x.naam), x.naam, '***GEWIJZIGD: ' || COALESCE (x.naam, '')) naam, x.m2 m2_actueel, y.m2 m2_laatste, (COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil FROM (SELECT loc_code loc, geb_code geb, ver_code verd, ruimte_nr ruimte, huurder_nummer nr, huurder_naam naam, opp m2 FROM stch_v_hv_actual) x LEFT JOIN (SELECT loc_code loc, geb_code geb, ver_code verd, ruimte_nr ruimte, huurder_nummer nr, huurder_naam naam, opp m2 FROM stch_hv_freeze WHERE TO_CHAR (freeze_datum, 'yyyy-mm-dd') = (SELECT TO_CHAR (MAX (freeze_datum), 'yyyy-mm-dd') FROM stch_hv_freeze)) y ON x.loc = y.loc AND x.geb = y.geb AND x.verd = y.verd AND x.ruimte = y.ruimte AND x.nr = y.nr UNION SELECT COALESCE (x.loc, y.loc) loc, COALESCE (x.geb, y.geb) geb, COALESCE (x.verd, y.verd) verd, COALESCE (x.ruimte, y.ruimte) ruimte, COALESCE (x.nr, y.nr) nr, DECODE (y.naam, COALESCE (x.naam, y.naam), y.naam, '***GEWIJZIGD: ' || COALESCE (x.naam, '')) naam, x.m2 m2_actueel, y.m2 m2_laatste, (COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil FROM (SELECT loc_code loc, geb_code geb, ver_code verd, ruimte_nr ruimte, huurder_nummer nr, huurder_naam naam, opp m2 FROM stch_v_hv_actual) x RIGHT JOIN (SELECT loc_code loc, geb_code geb, ver_code verd, ruimte_nr ruimte, huurder_nummer nr, huurder_naam naam, opp m2 FROM stch_hv_freeze WHERE TO_CHAR (freeze_datum, 'yyyy-mm-dd') = (SELECT TO_CHAR (MAX (freeze_datum), 'yyyy-mm-dd') FROM stch_hv_freeze)) y ON x.loc = y.loc AND x.geb = y.geb AND x.verd = y.verd AND x.ruimte = y.ruimte AND x.nr = y.nr) z WHERE m2_verschil <> 0); CREATE OR REPLACE VIEW STCH_V_RAP_HV_FREEZE ( FCLT_F_KWARTAAL, FCLT_F_EIGENAAR, FCLT_F_LOC_CODE, FCLT_F_GEB_CODE, VER_CODE, RUIMTE_NR, FCLT_F_RUIMTESOORT, FCLT_F_CODE, OPP, TEKEN_OPP, FCLT_F_HUURDER_NUMMER, FCLT_F_HUURDER_NAAM, FCLT_F_FDC, BEZETTING, TARIEF_HUUR, SK_ONDERHOUD, SK_UTILITY, SK_OVERIG, SK_KORTING, TARIEF_SERVICE ) AS SELECT kwartaal, eigenaar, loc_code, geb_code, ver_code, ruimte_nr, ruimtesoort, code, opp, teken_opp, huurder_nummer, huurder_naam, fdc, bezetting, TO_CHAR (tarief_huur, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_onderhoud, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_utility, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_overig, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (sk_korting, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.'''), TO_CHAR (tarief_service, '999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM stch_hv_freeze WHERE loc_code = 'ON'; CREATE OR REPLACE VIEW STCH_V_RAP_OFFERTE_STATUS ( OPDRACHT_KEY, OPDRACHT_NUMMER, OPDRACHT_REGIO, OPDRACHT_DISTRICT, OPDRACHT_LOCATIE_CODE, OPDRACHT_LOCATIE, OPDRACHT_LOCATIEPLAATS, FCLT_3D_LOCATIE_KEY, OPDRACHT_GEBOUWCODE, OPDRACHT_GEBOUW, OPDRACHT_VERDIEPING, OPDRACHT_RUIMTENR, OPDRACHT_RUIMTE, OPDRACHT_KOSTENPLAATS, OPDRACHT_KOSTENPLAATS_OMS, MELDING_KEY, OPDRACHT_TYPE, OPDRACHT_VOLGNUMMER, OPDRACHT_STATUS, OPDRACHT_DUUR_GEPLAND, OPDRACHT_DATUM, OPDRACHT_EINDDATUM, OPDRACHT_PLANDATUM, OPDRACHT_ACCEPTDATUM, OPDRACHT_AFGEMELD, OPDRACHT_DOORLOOPTIJD, OPDRACHT_ACCEPTTIJD, OPDRACHT_OMSCHRIJVING, OPDRACHT_OPMERKING, OPDRACHT_UITVOERENDE, OPDRACHT_BEHANDELAAR, OPDRACHT_CONTRACT, OPDRACHT_CONTRACT_VERSIE, OPDRACHT_CONTACTPERSOON, OPDRACHT_UREN, OPDRACHT_CORRECTIE, OPDRACHT_MATERIAAL, OPDRACHT_UURTARIEF, OPDRACHT_KOSTEN, OPDRACHT_GEBOUW_VERANTW_KEY, KOSTENSOORT, SUBPRODUCTGROEPGROEP, OFFERTE_STATUS ) AS SELECT u."OPDRACHT_KEY", u."OPDRACHT_NUMMER", u."OPDRACHT_REGIO", u."OPDRACHT_DISTRICT", u."OPDRACHT_LOCATIE_CODE", u."OPDRACHT_LOCATIE", u."OPDRACHT_LOCATIEPLAATS", u."FCLT_3D_LOCATIE_KEY", u."OPDRACHT_GEBOUWCODE", u."OPDRACHT_GEBOUW", u."OPDRACHT_VERDIEPING", u."OPDRACHT_RUIMTENR", u."OPDRACHT_RUIMTE", u."OPDRACHT_KOSTENPLAATS", u."OPDRACHT_KOSTENPLAATS_OMS", u."MELDING_KEY", u."OPDRACHT_TYPE", u."OPDRACHT_VOLGNUMMER", u."OPDRACHT_STATUS", u."OPDRACHT_DUUR_GEPLAND", u."OPDRACHT_DATUM", u."OPDRACHT_EINDDATUM", u."OPDRACHT_PLANDATUM", u."OPDRACHT_ACCEPTDATUM", u."OPDRACHT_AFGEMELD", u."OPDRACHT_DOORLOOPTIJD", u."OPDRACHT_ACCEPTTIJD", u."OPDRACHT_OMSCHRIJVING", u."OPDRACHT_OPMERKING", u."OPDRACHT_UITVOERENDE", u."OPDRACHT_BEHANDELAAR", u."OPDRACHT_CONTRACT", u."OPDRACHT_CONTRACT_VERSIE", u."OPDRACHT_CONTACTPERSOON", u."OPDRACHT_UREN", u."OPDRACHT_CORRECTIE", u."OPDRACHT_MATERIAAL", u."OPDRACHT_UURTARIEF", u."OPDRACHT_KOSTEN", 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 FROM mld_v_udr_opdracht u, alg_gebouw g, mld_v_udr_melding m, ( 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.melding_key = na.mld_melding_key(+) AND u.melding_key = nta.mld_melding_key(+) AND u.opdracht_type = 'RFQ'; CREATE OR REPLACE VIEW stch_v_rap_gebouwbezetting ( alg_gebouw_key, alg_gebouw_omschrijving, prs_afdeling_key, prs_afdeling_omschrijving, m2, totaal_m2, perc_v_totaal, perc_formatted ) AS SELECT g.alg_gebouw_key, g.alg_gebouw_omschrijving, pa.prs_afdeling_key, pa.prs_afdeling_omschrijving, SUM (r.alg_ruimte_bruto_vloeropp) m2, x.bezet totaal_m2, ROUND ((SUM (r.alg_ruimte_bruto_vloeropp) / x.bezet) * 100, 2) perc_v_totaal, ROUND (SUM (r.alg_ruimte_bruto_vloeropp) / x.bezet, 3) FROM prs_ruimteafdeling pr, prs_afdeling pa, alg_ruimte r, alg_verdieping v, alg_gebouw g, ( SELECT g.alg_gebouw_key, SUM (r.alg_ruimte_bruto_vloeropp) bezet FROM prs_ruimteafdeling pr, alg_ruimte r, alg_verdieping v, alg_gebouw g WHERE pr.alg_ruimte_key = r.alg_ruimte_key AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_gebouw_verwijder IS NULL AND pr.prs_ruimteafdeling_verwijder IS NULL AND r.alg_ruimte_bruto_vloeropp > 0 AND g.alg_gebouw_vervaldatum IS NULL GROUP BY g.alg_gebouw_key) x WHERE pr.alg_ruimte_key = r.alg_ruimte_key AND pr.prs_afdeling_key = pa.prs_afdeling_key AND r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key AND g.alg_gebouw_key = x.alg_gebouw_key AND g.alg_gebouw_verwijder IS NULL AND pr.prs_ruimteafdeling_verwijder IS NULL GROUP BY g.alg_gebouw_key, g.alg_gebouw_omschrijving, pa.prs_afdeling_key, pa.prs_afdeling_omschrijving, x.bezet; CREATE OR REPLACE VIEW stch_v_rap_facturatie ( NUMMER, NUMMER_EXTERN, VERSIE, OMSCHRIJVING, GEBOUW_KEY, GEBOUW_OMSCHRIJVING, AFDELING_KEY, AFDELING_OMSHCRIJVING, KENMERK, WAARDE_C, WAARDE_N, WAARDE_D, WAARDE_X ) AS SELECT DISTINCT c.cnt_contract_nummer_intern, c.cnt_contract_nummer, c.cnt_contract_versie, c.cnt_contract_omschrijving, g.alg_gebouw_key, g.alg_gebouw_omschrijving, c.prs_afdeling_key_eig, pa.prs_afdeling_omschrijving, COALESCE ( lcl.x ('cnt_kenmerk_omschrijving', k.cnt_kenmerk_key, k.cnt_kenmerk_omschrijving), lcl.x ('cnt_srtkenmerk_omschrijving', skm.cnt_srtkenmerk_key, cnt_srtkenmerk_omschrijving)) kenmerk, CASE WHEN skm.cnt_srtkenmerk_kenmerktype = 'R' OR skm.cnt_srtkenmerk_kenmerktype = 'S' THEN flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.cnt_kenmerkcontract_waarde) WHEN skm.cnt_srtkenmerk_kenmerktype = 'C' OR skm.cnt_srtkenmerk_kenmerktype = 'F' THEN km.cnt_kenmerkcontract_waarde ELSE NULL END waarde_c, CASE WHEN skm.cnt_srtkenmerk_kenmerktype = 'N' OR skm.cnt_srtkenmerk_kenmerktype = 'B' THEN TO_NUMBER (km.cnt_kenmerkcontract_waarde) ELSE TO_NUMBER (NULL) END waarde_n, CASE WHEN skm.cnt_srtkenmerk_kenmerktype = 'D' THEN TO_DATE (km.cnt_kenmerkcontract_waarde, 'DD-MM-YYYY') ELSE TO_DATE (NULL) END waarde_d, CASE WHEN skm.cnt_srtkenmerk_kenmerktype IN ('R', 'S') THEN flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.cnt_kenmerkcontract_waarde) ELSE km.cnt_kenmerkcontract_waarde END waarde_x FROM cnt_v_aanwezigcontract c, cnt_contract_plaats cp, cnt_kenmerkcontract km, cnt_kenmerk k, cnt_srtkenmerk skm, alg_gebouw g, prs_afdeling pa WHERE c.ins_discipline_key = 3161 -- Facturatie AND c.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_code = 'G' -- Het gaat altijd om contracten op gebouwniveau AND cp.cnt_alg_plaats_key = g.alg_gebouw_key AND c.prs_afdeling_key_eig = pa.prs_afdeling_key AND km.cnt_contract_key(+) = c.cnt_contract_key AND km.cnt_kenmerkcontract_verwijder IS NULL AND k.cnt_kenmerk_verwijder IS NULL AND k.cnt_kenmerk_key BETWEEN 242 AND 263 -- Kenmerken waar de bedragen in staan AND skm.cnt_srtkenmerk_verwijder IS NULL AND km.cnt_kenmerk_key(+) = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = skm.cnt_srtkenmerk_key; CREATE OR REPLACE VIEW stch_v_rap_gebouwkenmerk ( gebouw_key, kenmerk, kenmerk_waarde ) AS SELECT g.alg_gebouw_key, ak.alg_kenmerk_omschrijving, fac.safe_to_number (oak.alg_onrgoedkenmerk_waarde) FROM alg_gebouw g, alg_kenmerk ak, alg_onrgoedkenmerk oak WHERE oak.alg_kenmerk_key = ak.alg_kenmerk_key AND oak.alg_onrgoed_key = alg_gebouw_key AND oak.alg_onrgoed_niveau = 'G' AND ak.alg_kenmerk_key BETWEEN 1281 AND 1302; CREATE OR REPLACE VIEW stch_v_rap_faturatieoverzicht ( bedrijf, bezettingspercentage, gebouw, kenmerk, kenmerk_waarde, soort_bedrag ) AS SELECT gb.prs_afdeling_omschrijving, gb.perc_v_totaal, gb.alg_gebouw_omschrijving, gk.kenmerk, COALESCE (f.waarde_n, (gk.kenmerk_waarde * gb.perc_formatted)) bedrag, CASE WHEN f.waarde_n IS NOT NULL THEN 'Contract' ELSE 'Standaard' END CASE FROM stch_v_rap_facturatie f, stch_v_rap_gebouwkenmerk gk, stch_v_rap_gebouwbezetting gb WHERE gb.alg_gebouw_key = gk.gebouw_key AND gb.alg_gebouw_key = f.gebouw_key(+) AND gb.prs_afdeling_key = f.afdeling_key(+) AND gk.kenmerk = f.kenmerk(+); -- Taken rapportage CREATE OR REPLACE VIEW stch_v_rap_deelinspect ( deel_key, discipline, soort, groep, soortcode, omschrijving, plaatseigenaar, plaatseigenaartype, plaatsaanduiding, eigenaar, eigenaar_key, opmerking, regio, district, locatie_code, locatie_omschrijving, locatie_plaats, gebouwcode, gebouw, terreinsectorcode, terreinsector, verdiepingcode, ruimtenr, werkplekvolgnr, werkplek, uitleenbaar, uitgeleend, res_opmerking, beheerder, vervaldatum, actief, aantal, state, statedate, fclt_3d_discipline_key, fclt_3d_afdeling_key, fclt_3d_locatie_key, ins_deelsrtcontrole_key, ins_srtcontrole_key, srtcontrole_omschrijving, ins_deelsrtcontrole_datum, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_datum_org, ins_deelsrtcontrole_plandatum, deelsrtcontrole_status ) AS SELECT deel_key, discipline, soort, groep, soortcode, omschrijving, plaatseigenaar, plaatseigenaartype, plaatsaanduiding, eigenaar, eigenaar_key, opmerking, regio, district, locatie_code, locatie_omschrijving, locatie_plaats, gebouwcode, gebouw, terreinsectorcode, terreinsector, verdiepingcode, ruimtenr, werkplekvolgnr, werkplek, uitleenbaar, uitgeleend, res_opmerking, beheerder, vervaldatum, actief, aantal, state, statedate, fclt_3d_discipline_key, fclt_3d_afdeling_key, fclt_3d_locatie_key, ins_deelsrtcontrole_key, ins_srtcontrole_key, srtcontrole_omschrijving, ins_deelsrtcontrole_datum, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_datum_org, ins_deelsrtcontrole_plandatum, deelsrtcontrole_status FROM ins_v_udr_deelinspect UNION ALL SELECT ud.deel_key, ud.discipline, ud.soort, ud.groep, ud.soortcode, ud.omschrijving, ud.plaatseigenaar, ud.plaatseigenaartype, ud.plaatsaanduiding, ud.eigenaar, ud.eigenaar_key, ud.opmerking, ud.regio, ud.district, ud.locatie_code, ud.locatie_omschrijving, ud.locatie_plaats, ud.gebouwcode, ud.gebouw, ud.terreinsectorcode, ud.terreinsector, ud.verdiepingcode, ud.ruimtenr, ud.werkplekvolgnr, ud.werkplek, ud.uitleenbaar, ud.uitgeleend, ud.res_opmerking, ud.beheerder, ud.vervaldatum, ud.actief, ud.aantal, ud.state, ud.statedate, ud.fclt_3d_discipline_key, ud.fclt_3d_afdeling_key, ud.fclt_3d_locatie_key, NULL, sc.ins_srtcontrole_key, sc.ins_srtcontrole_omschrijving, NULL, 'Nog niet gepland', NULL, NULL, NULL, fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key), NULL FROM ins_v_udr_deel ud, ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline disc, ins_srtcontrole sc WHERE d.ins_deel_key = ud.deel_key AND sd.ins_srtdeel_key = d.ins_srtdeel_key AND sg.ins_srtgroep_key = sd.ins_srtgroep_key AND disc.ins_discipline_key = sg.ins_discipline_key AND ( (sd.ins_srtdeel_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'S') OR (sg.ins_srtgroep_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'G') OR (disc.ins_discipline_key = sc.ins_srtinstallatie_key AND ins_srtcontrole_niveau = 'D')); -- Notificaties obv periodieke taken naar objectbeheerders CREATE OR REPLACE VIEW stch_v_rap_ctrbeh ( plaats, gebouw, verdieping, ruimte, discipline, objectgroep, objectsoort, deel_key, objectomschrijving, plandatum, extra_key, taakomschrijving, status, beheerder_key, beheerder_email ) AS SELECT di.locatie_plaats, di.gebouw, di.verdiepingcode, di.ruimtenr, di.discipline, di.groep, di.soort, di.deel_key, di.omschrijving, TRUNC (di.ins_deelsrtcontrole_plandatum), dsc.ins_deelsrtcontrole_key, di.srtcontrole_omschrijving, di.deelsrtcontrole_status, p.prs_perslid_key, p.prs_perslid_email FROM stch_v_rap_deelinspect di, ins_deel d, prs_perslid p, ins_deelsrtcontrole dsc, ins_tab_discipline disc, fac_usrtab ut, fac_usrdata ud WHERE di.ins_deelsrtcontrole_datum IS NULL AND (di.vervaldatum > SYSDATE OR di.vervaldatum IS NULL) AND d.prs_perslid_key_beh = p.prs_perslid_key(+) AND d.ins_deel_key = di.deel_key AND dsc.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key AND d.ins_discipline_key = disc.ins_discipline_key AND UPPER (ut.fac_usrtab_naam) = 'NOTI_CUST11' AND ut.fac_usrtab_verwijder IS NULL AND ut.fac_usrtab_key = ud.fac_usrtab_key AND fac.safe_to_number (ud.fac_usrdata_code) = d.ins_discipline_key ORDER BY di.ins_deelsrtcontrole_datum, TRUNC (di.ins_deelsrtcontrole_plandatum), di.controlemode_omschrijving, p.prs_perslid_email; -- STCH#87363 QR-code rapportage CREATE OR REPLACE VIEW stch_v_ins_qrc_mld AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, o.alg_plaatsaanduiding fclt_f_plaats, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding, sm.mld_stdmelding_key mld_key, i.ins_deel_key, s.ins_srtdeel_key, o.alg_gebouw_code, o.alg_verdieping_code, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, b.fac_bookmark_id hide_f_bookmark_id FROM ins_deel i, ins_v_alg_overzicht o, ins_srtdeel s, ins_srtgroep g, ins_discipline d, alg_locatie l, fac_bookmark b, mld_stdmelding sm, mld_stdmelding_srtinst si WHERE b.fac_bookmark_naam = 'QRC_MELDING' AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE) AND ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND s.ins_srtdeel_key = i.ins_srtdeel_key AND g.ins_srtgroep_key = s.ins_srtgroep_key AND d.ins_discipline_key = g.ins_discipline_key AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type AND i.ins_alg_ruimte_type IN ('T', 'R', 'W') AND o.alg_locatie_key = i.ins_alg_locatie_key AND i.ins_alg_locatie_key = l.alg_locatie_key AND sm.mld_stdmelding_key = si.mld_stdmelding_key AND si.ins_srtinstallatie_key = DECODE(si.ins_srtinstallatie_niveau, 'S', i.ins_srtdeel_key, 'G', s.ins_srtgroep_key, 'D', g.ins_discipline_key); --Notificaties obv periodieke taken naar objectbeheerders CREATE OR REPLACE VIEW stch_v_noti_ctrbeh_wk ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST11' AS code, NULL, beheerder_key, 'Herinnering: ' || discipline || ' - ' || objectgroep || ' - ' || taakomschrijving || ', dient uiterlijk ' || TO_CHAR (plandatum, 'DD-MM-YYYY') || ' te worden afgehandeld', (SELECT fac_usrrap_key FROM fac_usrrap WHERE UPPER (fac_usrrap_code) = 'STCH_V_RAP_CTRBEH') rapportnr, extra_key FROM stch_v_rap_ctrbeh WHERE TRUNC (plandatum) = TRUNC (SYSDATE) + 7; -- Opdracht ook via mail naar interne mailbox wanneer verstuurd aan een technische leverancier. CREATE OR REPLACE VIEW stch_v_noti_opdracht ( code, sender, receiver, text, key, xkey, xsender, xemail, xmobile, attachments ) AS SELECT 'ORDSNT', -- Opdracht verzonden naar leverancier NULL, NULL, 'Opdracht met nummer '|| TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr || 'is verzonden naar ' || b.prs_bedrijf_naam, o.mld_opdr_key, NULL, NULL, 'werkvergunningen.facility@sitech.nl', NULL, NULL FROM mld_opdr o, fac_tracking t, prs_bedrijf b, fac_usrdata f WHERE o.mld_opdr_key = t.fac_tracking_refkey AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND f.fac_usrtab_key = 661 AND f.fac_usrdata_code = b.prs_bedrijf_key AND t.fac_srtnotificatie_key = 131 -- ORDSNT AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE UPPER(fac_notificatie_job_view) = 'STCH_V_NOTI_OPDRACHT') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE UPPER(fac_notificatie_job_view) = 'STCH_V_NOTI_OPDRACHT'); ------ 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