-- -- $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; WHENEVER SQLERROR EXIT; SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; WHENEVER SQLERROR CONTINUE; SPOOL &fcltlogfile 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; CREATE OR REPLACE VIEW stch_v_rap_sapchecklist ( MLD_OPDR_KEY, CONTRACT_NUMMER, EXTERN_NUMMER, UITVOERENDE, BEDRAG, KOSTENPLAATS, KOSTENPLAATS_CODE, OPDRACHTNR, GOEDGEKEURD, OPDRACHT_AFGEROND ) AS SELECT mo.mld_opdr_key, 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, DECODE (sub.mld_kenmerkopdr_waarde, '143', 'Nee', 'Leeg'), mld.getopdrachtstatusdate (mo.mld_opdr_key, 9) 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, (SELECT mld_opdr_key, mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key IN (1621, 1641, 1642)) sub 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 = sub.mld_opdr_key(+) AND TRUNC (mld.getopdrachtstatusdate (mo.mld_opdr_key, 9)) > TRUNC (SYSDATE - 365) AND mo.mld_opdr_kosten IS NOT NULL AND mo.mld_opdr_kosten NOT LIKE '0' AND NOT EXISTS (SELECT 1 FROM mld_kenmerkopdr WHERE mld_opdr_key = mo.mld_opdr_key AND mld_kenmerk_key IN (1621, 1641, 1642) AND mld_kenmerkopdr_waarde LIKE '%142%'); CREATE OR REPLACE VIEW stch_v_export_sap ( result, result_order ) AS SELECT '"PO Nummer"' || ';"opdrachtnummer"' || ';"kostenplaats"' || ';"kostenplaatscode"' || ';"bedrag"' || ';"uitvoerende"', 0 FROM DUAL UNION ALL SELECT '"' || extern_nummer || '";"' || opdrachtnr || '";"' || kostenplaats || '";"' || kostenplaats_code || '";"' || bedrag || '";"' || uitvoerende || '"', 1 FROM stch_v_rap_opdrkosten; CREATE OR REPLACE VIEW stch_v_export_sap_xml ( result, result_order ) AS SELECT '', 0 FROM DUAL UNION ALL SELECT '', 1 FROM DUAL UNION ALL SELECT '' || '' || SUBSTR (extern_nummer, 1, 10) || '' || '' || SUBSTR (contract_nummer, -4, INSTR (contract_nummer, '-') - 1) || '' || '' || uitvoerende || '' || '' || kostenplaats_code || '_' || opdrachtnr || '' || '1' || 'AU' || '' || bedrag || '' || '', 2 FROM stch_v_rap_opdrkosten UNION ALL SELECT '', 3 FROM DUAL; -- 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'; -- 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