-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'bcgv.sql' DEFINE dbuser = 'bcgv' 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 PACKAGE BCGV AS PROCEDURE add_xml_row_p (p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_regel IN VARCHAR2); PROCEDURE add_xml_element_p (p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2); END; / CREATE OR REPLACE PACKAGE BODY BCGV AS PROCEDURE add_xml_row_p (p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_regel IN VARCHAR2) AS v_index NUMBER; BEGIN SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1 INTO v_index FROM fac_rapport WHERE fac_rapport_node = p_bestand; INSERT INTO fac_rapport ( fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (p_bestand, v_index, p_prefix || p_regel); END; PROCEDURE add_xml_element_p (p_bestand IN VARCHAR2, p_prefix IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2) AS BEGIN bcgv.add_xml_row_p(p_bestand, p_prefix, '<' || p_tag || '>' || xml.char_to_html(p_value) || ''); END; END; / -- Vastgoed contract views voor huuradministratie CREATE OR REPLACE VIEW bcgv_v_sync_alg_ruimte ( alg_ruimte_key, alg_verdieping_key, cadlabel ) AS SELECT rg.alg_ruimte_key, rg.alg_verdieping_key, DECODE (rg.alg_verdieping_volgnr, 0, REPLACE(alg_ruimte_nr, 'S'), 1, REPLACE(alg_ruimte_nr, 'BG'), 2, REPLACE(alg_ruimte_nr, 'ST'), 3, REPLACE(alg_ruimte_nr, 'ST'), alg_ruimte_nr) cadlabel FROM alg_v_ruimte_gegevens rg WHERE alg_gebouw_upper = 'GV-RVA' UNION ALL SELECT rg.alg_ruimte_key, rg.alg_verdieping_key, rg.alg_ruimte_nr cadlabel FROM alg_v_ruimte_gegevens rg WHERE alg_gebouw_upper <> 'GV-RVA'; -- view om offertestatus in dashbord te tonen -- functionaliteit overgenomen uit mld.inc CREATE OR REPLACE VIEW bcgv_v_rap_offerte_status AS SELECT m.melder_key, m.melder, u.*, g.prs_perslid_key_verantw opdracht_gebouw_verantw_key, m.kostensoort kostensoort, subproductgroepgroep, DECODE ( COALESCE (na.aantal, 0), 1, 'Offerte geaccepteerd', DECODE (COALESCE (nta.aantal, 0), 0, 'Niet opgelost', 'Offerte acceptatie')) offerte_status, (CASE WHEN mo.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || mo.mld_opdr_flag) ELSE '' END) vlag, (SELECT ok.waarde_n FROM mld_v_udr_opdrachtkenmerk_cnd ok WHERE ok.opdracht_key = u.opdracht_key AND ok.kenmerk = 'Offerte bedrag' ) Offertebedrag,-- Op naam 'Offerte bedrag' ipv Key ivm gebruik afwijkende keys in de diverse HeyDayomgevingen (SELECT fac.safe_to_number(kw.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER' AND sk.mld_srtkenmerk_kenmerktype = 'S') projectleider_key, (SELECT p.prs_perslid_naam FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk, prs_perslid p WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER' AND sk.mld_srtkenmerk_kenmerktype = 'S' AND fac.safe_to_number (kw.mld_kenmerkmelding_waarde) = p.prs_perslid_key) projectleider FROM mld_v_udr_opdracht u, mld_opdr mo, alg_gebouw g, mld_v_udr_melding m, ins_tab_discipline d, ( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal FROM mld_opdr o WHERE o.mld_statusopdr_key = 6 AND o.mld_opdr_bedrijfopdr_volgnr > COALESCE ( (SELECT MAX (o1.mld_opdr_bedrijfopdr_volgnr) 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_bedrijfopdr_volgnr > COALESCE ( (SELECT MAX (o1.mld_opdr_bedrijfopdr_volgnr) FROM mld_opdr o1, mld_typeopdr mo1 WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key AND mo1.mld_typeopdr_isofferte = 0 AND o1.mld_melding_key = o.mld_melding_key), 0) GROUP BY o.mld_melding_key) na WHERE u.opdracht_gebouwcode = g.alg_gebouw_code AND u.melding_key = m.melding_key AND u.opdracht_key = mo.mld_opdr_key AND m.fclt_3d_discipline_key = d.ins_discipline_key AND d.ins_discipline_verwijder IS NULL AND u.melding_key = na.mld_melding_key(+) AND u.melding_key = nta.mld_melding_key(+) AND (u.opdracht_type = 'RFQ' OR u.opdracht_type = 'Project RFQ') ; --------------------------------------------------------------------------------- -- -- Huuradministratie -- --------------------------------------------------------------------------------- CREATE OR REPLACE VIEW bcgv_v_huurruimte_geg_bron AS SELECT alg_ruimte_bruto_vloeropp, alg_gebouw_upper, alg_verdieping_code, alg_ruimte_nr, alg_ruimte_key, alg_verdieping_key, COALESCE(cp.cnt_contract_plaats_gewicht, 1) * fac.safe_to_number(FLX.getflex('ALG', 1000, r.alg_ruimte_key, 'R')) fno_m2, COALESCE(cp.cnt_contract_plaats_gewicht, 1) * fac.safe_to_number(FLX.getflex('ALG', 1000, r.alg_ruimte_key, 'R')) * (1 + COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1040, r.alg_verdieping_key, 'V')),0)/100) * (1 + COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1080, r.alg_gebouw_key, 'G')),0)/100) vvo_m2, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1080, r.alg_gebouw_key, 'G')),0) v_sk_g, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1040, r.alg_verdieping_key, 'V')),0) v_sk_v, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1083, r.alg_gebouw_key, 'G')),0) t_sk, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1085, r.alg_gebouw_key, 'G')),0) t_parkmgt, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1086, r.alg_gebouw_key, 'G')),0) t_parkeer, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1087, r.alg_gebouw_key, 'G')),0) t_ict, COALESCE(fac.safe_to_number(FLX.getflex('ALG', 1001, r.alg_ruimte_key, 'R')),sr.alg_srtruimte_prijs) t_fno, sr.alg_srtruimte_code, sr.alg_srtruimte_omschrijving, c.cnt_contract_looptijd_van, c.cnt_contract_looptijd_tot, cp.cnt_contract_key, c.cnt_prs_bedrijf_key, COALESCE(FAC.safe_to_number(o.optie), 0) optie FROM cnt_contract c, cnt_contract_plaats cp, alg_v_ruimte_gegevens r, alg_srtruimte sr, (SELECT cnt_contract_key, cnt_kenmerkcontract_waarde optie FROM cnt_kenmerkcontract kc WHERE cnt_kenmerk_key = 37 AND cnt_kenmerkcontract_verwijder IS NULL) o WHERE cp.cnt_contract_key = c.cnt_contract_key AND cp.CNT_ALG_PLAATS_CODE = 'R' AND cp.cnt_contract_plaats_verwijder IS NULL AND cp.cnt_alg_plaats_key = r.alg_ruimte_key AND r.alg_srtruimte_key = sr.alg_srtruimte_key AND c.cnt_contract_key = o.cnt_contract_key(+); CREATE OR REPLACE VIEW bcgv_v_rap_verhuur_geg AS SELECT b.cnt_contract_key, COALESCE (h.prs_bedrijf_naam, CASE WHEN cnt_contract_looptijd_van > SYSDATE THEN 'Toekomst' WHEN b.optie = 1 THEN 'Optie' ELSE 'Leegstand' END) prs_bedrijf_naam, b.alg_srtruimte_code code, rg.alg_srtruimte_omschrijving omschrijving, rg.alg_gebouw_upper, rg.alg_verdieping_code, rg.alg_ruimte_nr, rg.alg_ruimte_bruto_vloeropp, COALESCE(fno_m2, fac.safe_to_number(FLX.getflex('ALG', 1000, rg.alg_ruimte_key, 'R'))) fno_m2, t_fno, fno_m2 * t_fno b_fno, vvo_m2 - fno_m2 vvo_m2, t_sk, vvo_m2 * t_sk b_sk, t_parkeer, vvo_m2 * t_parkeer b_parkeer, t_parkmgt, vvo_m2 * t_parkmgt b_parkmgt, t_ict, vvo_m2 * t_ict b_ict, (fno_m2 * t_fno) + (vvo_m2 * t_sk) + (fno_m2 * t_parkeer) + (fno_m2 * t_ict) + (vvo_m2 * t_parkmgt) tot, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, 'Verhuurd' status FROM alg_v_ruimte_gegevens rg, (SELECT * FROM bcgv_v_huurruimte_geg_bron WHERE cnt_contract_looptijd_tot > SYSDATE) b, prs_bedrijf h WHERE rg.alg_ruimte_key = b.alg_ruimte_key(+) AND h.prs_bedrijf_key(+) = b.cnt_prs_bedrijf_key AND rg.alg_locatie_key = 1 -- Venlo AND rg.alg_verdieping_volgnr < 20; -- rapportage voor het contracten tabblad in Graphics CREATE OR REPLACE VIEW bcgv_v_rap_cnt_graphics AS SELECT b.alg_ruimte_nr, vvo_m2, cnt_contract_key, h.prs_bedrijf_naam huurder, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, b.alg_ruimte_key highlight, b.alg_verdieping_key vkey FROM bcgv_v_huurruimte_geg_bron b, prs_bedrijf h WHERE h.prs_bedrijf_key = b.cnt_prs_bedrijf_key AND SYSDATE BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot; CREATE OR REPLACE VIEW bcgv_v_cad_thema_leegstand ( alg_ruimte_key, waarde ) AS SELECT rg.alg_ruimte_key, DECODE ( COALESCE (prs_verhuurbaar, 0), 0, 'Niet verhuurbaar', CASE WHEN -- Heb ik op dit moment een geldig huurcontract (SELECT COUNT (*) FROM bcgv_v_huurruimte_geg_bron b WHERE optie = 0 AND b.alg_ruimte_key = rg.alg_ruimte_key AND SYSDATE BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot) > 0 THEN 'Verhuurd' -- Heb ik op in de toekomst een geldig huurcontract WHEN (SELECT COUNT (*) FROM bcgv_v_huurruimte_geg_bron b WHERE optie = 0 AND b.alg_ruimte_key = rg.alg_ruimte_key AND cnt_contract_looptijd_van > SYSDATE) > 0 THEN 'Toekomst' -- Heb ik nu of in de toekomst een optie WHEN (SELECT COUNT (*) FROM bcgv_v_huurruimte_geg_bron b WHERE optie = 1 AND b.alg_ruimte_key = rg.alg_ruimte_key AND cnt_contract_looptijd_tot > SYSDATE) > 0 THEN 'Optie' ELSE 'Leegstand' END) status FROM alg_v_ruimte_gegevens rg, alg_srtruimte sr WHERE rg.alg_srtruimte_key = sr.alg_srtruimte_key AND alg_locatie_key = 1; -- Exact koppeling -- eerste opzet voor de view om Exact data voor verhuurcontracten in de verkoopfactuur tabel te laden -- factuurnummers, komen deze uit Facilitor? -- Alle huidige en toekomstige contracten worden getoond. Bij het vullen van de verkoopfactuur tabel worden -- de toekomstige contracten niet meegenomen. CREATE OR REPLACE VIEW bcgv_v_export_exact_gv_bron AS SELECT c.cnt_contract_key, b.prs_bedrijf_key, b.prs_bedrijf_naam, c.cnt_contract_omschrijving, b.prs_leverancier_nr, fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, item, bedrag, code_exact, oms_exact, FLX.getflex('CNT', 36, c.cnt_contract_key) opmerking, -- voor studentenhuisvesting kennen we andere kostenplaatsen voor huur en servicekosten DECODE (cg.kostenplaats, 'huur', DECODE (FLX.getflex('CNT', 40, c.cnt_contract_key), 1, 414, hs.huur), 'srvk', DECODE (FLX.getflex('CNT', 40, c.cnt_contract_key), 1, 511, hs.srvk), cg.kostenplaats) kostenplaats, volgorde, c.cnt_contract_looptijd_van, c.cnt_contract_looptijd_tot, CNT.cnt_getOpzegdatum(c.cnt_contract_key) opzegdatum, (SELECT cnt_termijn_omschrijving FROM cnt_termijn t WHERE t.cnt_termijn_key = cnt_contract_opzegtermijn) opzegtermijn, v.fno_m2, (v.fno_m2 + v.vvo_m2) vvo_m2 FROM (SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, FLX.getflex('CNT', 33, cnt_contract_key) item, FAC.safe_to_number ( FLX.getflex('CNT', 17, cnt_contract_key)) bedrag, '10' code_exact, 'Bijdrage Dienstverlening' oms_exact, COALESCE(FLX.getflex('CNT', 26, cnt_contract_key), '425') kostenplaats, 50 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, FLX.getflex('CNT', 34, cnt_contract_key), FAC.safe_to_number ( FLX.getflex('CNT', 18, cnt_contract_key)), '10', 'Bijdrage Dienstverlening', COALESCE(FLX.getflex('CNT', 27, cnt_contract_key), '425') kostenplaats, 50 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, FLX.getflex('CNT', 35, cnt_contract_key), FAC.safe_to_number ( FLX.getflex('CNT', 19, cnt_contract_key)), '10', 'Bijdrage Dienstverlening', COALESCE(FLX.getflex('CNT', 28, cnt_contract_key), '425') kostenplaats, 50 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Huur terrein bedrag', FAC.safe_to_number ( FLX.getflex('CNT', 16, cnt_contract_key)), '60', 'Huur terrein', '411' kostenplaats, 10 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Huur korting', FAC.safe_to_number ( FLX.getflex('CNT', 21, cnt_contract_key)), -- Huurkorting (incl BTW) '110', 'Huurkorting', 'huur' kostenplaats, 51 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'Huur korting', FAC.safe_to_number ( FLX.getflex('CNT', 61, cnt_contract_key)), -- Huurkorting (geen BTW) '110', 'Huurkorting', 'huur' kostenplaats, 51 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'VVO Huurbedrag', FAC.safe_to_number ( FLX.getflex('CNT', 7, cnt_contract_key)), -- VVO Huurbedrag '30', 'Huur ruimte', 'huur' kostenplaats, 10 volgorde FROM cnt_contract k UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'VVO Huurbedrag geen BTW', FAC.safe_to_number ( FLX.getflex('CNT', 8, cnt_contract_key)), -- VVO Huurbedrag geen BTW '30', 'Huur ruimte', 'huur' kostenplaats, 10 volgorde FROM cnt_contract k UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Campusparkeren bedrag', FAC.safe_to_number ( FLX.getflex('CNT', 14, cnt_contract_key)), -- Campusparkeren bedrag '35', 'Bijdrage Campusparkeren', 'huur' kostenplaats, 60 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'Borg', FAC.safe_to_number ( FLX.getflex('CNT', 41, cnt_contract_key)), -- Waarborgsom '70', 'Opbrengst waarborgsommen', '' kostenplaats, 70 volgorde FROM cnt_contract WHERE FLX.getflex('CNT', 42, cnt_contract_key) IS NULL -- Waarborg is nog niet eerder geïnd. UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Service kosten', FAC.safe_to_number ( FLX.getflex('CNT', 9, cnt_contract_key)), -- Servkost bedrag '40', 'Bijdrage Servicekosten', 'srvk' kostenplaats, 20 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'ServKost extra bedrag BTW hoog', FAC.safe_to_number ( FLX.getflex('CNT', 11, cnt_contract_key)), -- ServKost extra bedrag BTW hoog '40', 'Bijdrage Servicekosten', 'srvk' kostenplaats, 21 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'ServKost bedrag geen BTW', FAC.safe_to_number ( FLX.getflex('CNT', 10, cnt_contract_key)), -- ServKost bedrag geen BTW '40', 'Bijdrage Servicekosten', 'srvk' kostenplaats, 21 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '4' fin_btwtabelwaarde_code, 9 fin_btwtabelwaarde_perc, 'ServKost extra bedrag BTW laag', FAC.safe_to_number ( FLX.getflex('CNT', 12, cnt_contract_key)), -- ServKost extra bedrag BTW laag '40', 'Bijdrage Servicekosten', 'srvk' kostenplaats, 21 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '4' fin_btwtabelwaarde_code, 9 fin_btwtabelwaarde_perc, 'Dienstverlening Water', FAC.safe_to_number ( FLX.getflex('CNT', 20, cnt_contract_key)), -- Dienstverlening Water '10', 'Bijdrage Dienstverlening', '425' kostenplaats, 50 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Parkmgt', FAC.safe_to_number ( FLX.getflex('CNT', 13, cnt_contract_key)), -- Parkmgt bedrag '100', 'Bijdrage Parkmanagement', 'huur' kostenplaats, 30 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'ICT', FAC.safe_to_number ( FLX.getflex('CNT', 15, cnt_contract_key)), -- ICT bedrag '120', 'Bijdrage ICT', 'huur' kostenplaats, 40 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Flexplek vaste plek bedrag', FAC.safe_to_number ( FLX.getflex('CNT', 2, cnt_contract_key)), -- Flexplek vaste plek bedrag '10', 'Huur ruimte', '402' kostenplaats, 10 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Flex ongelimiteerd', FAC.safe_to_number ( FLX.getflex('CNT', 3, cnt_contract_key)), -- Flexplek ongelimiteerd bedrag '10', 'Huur ruimte', '402' kostenplaats, 10 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Flex 12 dagen', FAC.safe_to_number ( FLX.getflex('CNT', 4, cnt_contract_key)), -- Flexplek 12 dagen per maand bedrag '10', 'Huur ruimte', '402' kostenplaats, 10 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Flex 5 dagen', FAC.safe_to_number ( FLX.getflex('CNT', 5, cnt_contract_key)), -- Flexplek 5 dagen per maand bedrag '10', 'Huur ruimte', '402' kostenplaats, 10 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '3' fin_btwtabelwaarde_code, 21 fin_btwtabelwaarde_perc, 'Flex locker', FAC.safe_to_number ( FLX.getflex('CNT', 6, cnt_contract_key)), -- Flexplek locker '10', 'Huur ruimte', '402' kostenplaats, 11 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'Opslag BTW herziening', FAC.safe_to_number ( FLX.getflex('CNT', 22, cnt_contract_key)), -- Opslag BTW herziening '30', 'Huur ruimte', 'huur' kostenplaats, 90 volgorde FROM cnt_contract UNION ALL SELECT cnt_contract_key, '0' fin_btwtabelwaarde_code, 0 fin_btwtabelwaarde_perc, 'Opslag BTW pro rata', FAC.safe_to_number ( FLX.getflex('CNT', 23, cnt_contract_key)), -- Opslag BTW pro rata '30', 'Huur ruimte', 'huur' kostenplaats, 90 volgorde FROM cnt_contract GROUP BY cnt_contract_key) cg, cnt_contract c, prs_bedrijf b, (SELECT cnt_contract_key, FLX.getflex ('ALG', 1060, alg_gebouw_key, 'G') huur, FLX.getflex ('ALG', 1061, alg_gebouw_key, 'G') srvk FROM (SELECT DISTINCT cnt_contract_key, alg_gebouw_key FROM cnt_contract_plaats cp, alg_v_allonroerendgoed aog WHERE ( ( cp.cnt_alg_plaats_code = 'R' AND cp.cnt_alg_plaats_key = aog.alg_ruimte_key) OR ( cp.cnt_alg_plaats_code = 'V' AND cp.cnt_alg_plaats_key = aog.alg_verdieping_key) OR ( cp.cnt_alg_plaats_code = 'G' AND cp.cnt_alg_plaats_key = aog.alg_gebouw_key) OR ( cp.cnt_alg_plaats_code = 'L' AND cp.cnt_alg_plaats_key = aog.alg_locatie_key)))) hs, (SELECT cnt_contract_key, sum(fno_m2) fno_m2, sum(vvo_m2) vvo_m2 FROM bcgv_v_rap_verhuur_geg WHERE cnt_contract_key IS NOT NULL GROUP BY cnt_contract_key) v WHERE c.cnt_contract_key = cg.cnt_contract_key AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_key = hs.cnt_contract_key(+) AND c.cnt_contract_key = v.cnt_contract_key(+) AND c.ins_discipline_key = 241 -- verhuurcontract AND cg.bedrag IS NOT NULL AND c.cnt_contract_verwijder IS NULL AND c.cnt_contract_looptijd_tot > ADD_MONTHS (TRUNC (SYSDATE, 'MM'), 1) AND c.cnt_contract_key NOT IN (SELECT cnt_contract_key FROM cnt_kenmerkcontract kc WHERE cnt_kenmerk_key = 37 -- optie AND cnt_kenmerkcontract_verwijder IS NULL AND cnt_kenmerkcontract_waarde = '1'); -- View om van actuele verhuurcontracten de ruimte te bepalen CREATE OR REPLACE VIEW bcgv_v_act_contract_ruimte AS SELECT c.cnt_contract_key, cp.cnt_alg_plaats_key alg_ruimte_key, cp.cnt_contract_plaats_gewicht FROM cnt_contract c, cnt_contract_plaats cp WHERE c.ins_discipline_key = 241 -- verhuurcontract AND c.cnt_contract_key = cp.cnt_contract_key AND cp.cnt_alg_plaats_code = 'R' AND cp.cnt_contract_plaats_verwijder IS NULL AND c.cnt_contract_verwijder IS NULL AND c.cnt_contract_looptijd_tot > ADD_MONTHS (TRUNC (SYSDATE, 'MM'), 1) -- de looptijd valt binnen de volgende maand AND c.cnt_contract_looptijd_van < ADD_MONTHS (TRUNC (SYSDATE, 'MM'), 2) AND c.cnt_contract_key NOT IN (SELECT cnt_contract_key FROM cnt_kenmerkcontract kc WHERE cnt_kenmerk_key = 37 -- optie AND cnt_kenmerkcontract_verwijder IS NULL AND cnt_kenmerkcontract_waarde = '1'); -- Rapportage om de historische data over de ruimtebezetting in Facilitor op te vragen. CREATE OR REPLACE VIEW bcgv_rap_hist_contract_ruimte AS SELECT h.fin_verkoopfactuur_maand, c.cnt_contract_key, c.cnt_contract_nummer, c.cnt_contract_omschrijving, prs_bedrijf_naam, g.alg_gebouw_code, v.alg_verdieping_code, h.alg_ruimte_nr, h.alg_ruimte_omschrijving, h.alg_srtruimte_omschrijving, h.alg_ruimte_bruto_vloeropp, DECODE (prs_verhuurbaar, 1, 'Ja', 'Nee') prs_verhuurbaar, DECODE (h.cnt_contract_key, NULL, 'Ja', 'Nee') leegstand FROM bcgv_hist_ruimte_bezetting h, cnt_contract c, alg_ruimte r, alg_verdieping v, alg_gebouw g, prs_bedrijf b WHERE h.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 h.cnt_contract_key = c.cnt_contract_key(+) AND c.CNT_PRS_BEDRIJF_KEY = b.prs_bedrijf_key(+); CREATE OR REPLACE VIEW bcgv_v_export_exact_gv ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node = 'bcgv_EXACT'; CREATE OR REPLACE PROCEDURE bcgv_select_exact_gv (p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR c IS SELECT fin_verkoopfactuur_refkey, prs_debiteur_naam, fin_verkoopfactuur_omschr, fin_verkoopfactuur_datum, fin_verkoopfactuur_c8 FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 IS NULL GROUP BY fin_verkoopfactuur_refkey, prs_debiteur_naam, fin_verkoopfactuur_omschr, fin_verkoopfactuur_datum, fin_verkoopfactuur_c8; CURSOR c_cnt (c_contract_key NUMBER) IS SELECT * FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 IS NULL AND fin_verkoopfactuur_refkey = c_contract_key ORDER BY fin_verkoopfactuur_n1; v_order_count NUMBER; v_amount_sum NUMBER(10,2); v_amount_sum_incl NUMBER(10,2); v_count NUMBER; v_sub_count NUMBER; v_bestand VARCHAR2(12); v_boekstuknummer NUMBER; v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE; v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE; v_prefix VARCHAR2(10); BEGIN v_order_count := 0; v_amount_sum := 0; v_amount_sum_incl := 0; v_bestand := 'bcgv_EXACT'; v_crdnr := 'Q'; v_factuur_nr := 'Q'; -- Eerst opruiming DELETE FROM imp_log WHERE imp_log_applicatie = p_applname; DELETE fac_rapport WHERE fac_rapport_node = v_bestand; -- verwijder niet verwerkte regels uit de verkoopfactuur tabel DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 IS NULL; -- Vul de verkoopfactuurtabel met de nieuwe records INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_id, fin_verkoopfactuur_datum, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, prs_kostenplaats_nr, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_bedrijf_key, prs_debiteur_naam, fin_verkoopfactuur_bedrag, fin_verkoopfactuur_btw, fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, fin_verkoopfactuur_maand, fin_verkoopfactuur_n1, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c4, fin_verkoopfactuur_c6, -- vullen met FNO_M2 fin_verkoopfactuur_c7, -- vullen met VVO_M2 fin_verkoopfactuur_c8) -- vullen met Opmerking SELECT TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' C' || cnt_contract_key, SYSDATE, 'Facturatie Huur en Servicekosten ' || TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'Mon yyyy'), 'contract', cnt_contract_key, kostenplaats, oms_exact, code_exact, prs_bedrijf_key, prs_leverancier_nr, bedrag, ROUND (bedrag * (fin_btwtabelwaarde_perc / 100), 2), fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyymm'), volgorde, cnt_contract_omschrijving, item, 'HuurGreenportVenlo', fno_m2, vvo_m2, opmerking FROM bcgv_v_export_exact_gv_bron WHERE cnt_contract_looptijd_van <= ADD_MONTHS (TRUNC (SYSDATE, 'MM'), 1); -- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar -- ## AAIT#36589 SELECT MAX(fin_kenmerkfactuur_waarde) INTO v_boekstuknummer FROM fin_kenmerkfactuur WHERE fin_kenmerk_key = 3 AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY'); v_order_count := 0; v_amount_sum := 0; v_amount_sum_incl := 0; v_prefix := NULL; -- header bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); FOR rec IN c LOOP BEGIN -- Als we een nieuw contract tegenkomen gaan we het factuurnummer ophogen. bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_element_p (v_bestand, v_prefix, 'OrderDate', rec.fin_verkoopfactuur_datum); bcgv.add_xml_element_p (v_bestand, v_prefix, 'InvoiceDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') ); bcgv.add_xml_element_p (v_bestand, v_prefix, 'Description', xml.char_to_html(rec.fin_verkoopfactuur_omschr)); bcgv.add_xml_element_p (v_bestand, v_prefix, 'Notes', xml.char_to_html(rec.fin_verkoopfactuur_c8)); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); v_sub_count := 1; FOR rec1 IN c_cnt (rec.fin_verkoopfactuur_refkey) LOOP BEGIN bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_element_p (v_bestand, v_prefix, 'Description', xml.char_to_html(rec1.prs_kostensoort_oms)); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); IF rec1.fin_verkoopfactuur_bedrag < 0 THEN bcgv.add_xml_row_p (v_bestand, v_prefix, '-1'); ELSE bcgv.add_xml_row_p (v_bestand, v_prefix, '1'); END IF; -- bcgv#70153 bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_element_p (v_bestand, v_prefix, 'Value', REPLACE (TO_CHAR (ABS(rec1.fin_verkoopfactuur_bedrag)), ',', '.')); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); v_sub_count := v_sub_count + 1; v_amount_sum := v_amount_sum + rec1.fin_verkoopfactuur_bedrag; END; END LOOP; bcgv.add_xml_row_p (v_bestand, v_prefix, ''); v_order_count := v_order_count + 1; END; END LOOP; bcgv.add_xml_row_p (v_bestand, v_prefix, ''); bcgv.add_xml_row_p (v_bestand, v_prefix, ''); fac.writelog (p_applname, 'S', 'Exact export Greenport huurfacturen uitgevoerd. Aantal facturen: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, ''); END; / CREATE OR REPLACE VIEW bcgv_v_export_exact_gv_frozen AS SELECT fin_verkoopfactuur_refkey cnt_contract_key, b.prs_bedrijf_key , b.prs_bedrijf_naam, fin_verkoopfactuur_c1 cnt_contract_omschrijving, prs_debiteur_naam prs_leverancier_nr, fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, fin_verkoopfactuur_c2 item, fin_verkoopfactuur_bedrag bedrag, prs_kostensoort_opmerking, prs_kostensoort_oms code_exact, prs_kostenplaats_nr oms_exact, fin_verkoopfactuur_maand boekmaand, fin_verkoopfactuur_datum factuurdatum, fin_verkoopfactuur_c6 fno_m2, fin_verkoopfactuur_c7 vvo_m2 FROM fin_verkoopfactuur vf, prs_bedrijf b WHERE vf.prs_bedrijf_key = b.prs_bedrijf_key AND fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 IS NOT NULL; CREATE OR REPLACE VIEW bcgv_v_export_verwerk_exact_gv ( result, result_order ) AS SELECT 'cnt_contract_key;' || 'prs_bedrijf_key;' || 'prs_bedrijf_naam;' || 'cnt_contract_omschrijving;' || 'prs_leverancier_nr;' || 'fin_btwtabelwaarde_code;' || 'fin_btwtabelwaarde_perc;' || 'item;' || 'bedrag;' || 'prs_kostensoort_opmerking;' || 'code_exact;' || 'oms_exact;' || 'boekmaand', -1 FROM DUAL UNION ALL SELECT fin_verkoopfactuur_refkey || ';' || b.prs_bedrijf_key || ';' || b.prs_bedrijf_naam || ';' || fin_verkoopfactuur_c1 || ';' || prs_debiteur_naam || ';' || fin_btwtabelwaarde_code || ';' || fin_btwtabelwaarde_perc || ';' || fin_verkoopfactuur_c2 || ';' || fin_verkoopfactuur_bedrag || ';' || prs_kostensoort_opmerking || ';' || prs_kostensoort_oms || ';' || prs_kostenplaats_nr || ';' || fin_verkoopfactuur_maand, fin_verkoopfactuur_key FROM fin_verkoopfactuur vf, prs_bedrijf b WHERE vf.prs_bedrijf_key = b.prs_bedrijf_key AND fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 > SYSDATE - 0.1; CREATE OR REPLACE PROCEDURE bcgv_select_verwerk_exact_gv (p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR c IS SELECT c.cnt_contract_key, 445 cnt_kenmerk_key -- Waarborgsom geint op datum FROM cnt_contract c WHERE EXISTS (SELECT cnt_kenmerkcontract_key FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = c.cnt_contract_key AND kc.cnt_kenmerk_key = 444) -- Waarborgsom AND NOT EXISTS (SELECT cnt_kenmerkcontract_key FROM cnt_kenmerkcontract kc WHERE kc.cnt_contract_key = c.cnt_contract_key AND kc.cnt_kenmerk_key = 445); BEGIN FOR rec IN c LOOP INSERT INTO cnt_kenmerkcontract (cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_waarde) VALUES (rec.cnt_contract_key, rec.cnt_kenmerk_key, TO_CHAR(SYSDATE, 'DD-MM-YYYY')); END LOOP; UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_d1 = SYSDATE WHERE fin_verkoopfactuur_c4 = 'HuurGreenportVenlo' AND fin_verkoopfactuur_d1 IS NULL; -- Nu de export verwerkt is gaan we ook de detail ruimteinformatie opslaan zodat er historische gegevens gerapporteerd kunnen worden. INSERT INTO bcgv_hist_ruimte_bezetting ( alg_ruimte_key , alg_ruimte_omschrijving, alg_ruimte_nr , cnt_contract_key , fin_verkoopfactuur_maand , alg_srtruimte_key , alg_srtruimte_omschrijving , alg_ruimte_bruto_vloeropp , cnt_contract_plaats_gewicht, prs_verhuurbaar ) SELECT r.alg_ruimte_key, alg_ruimte_omschrijving, alg_ruimte_nr, c.cnt_contract_key, TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyymm') fin_verkoopfactuur_maand, sr.alg_srtruimte_key, sr.alg_srtruimte_omschrijving, alg_ruimte_bruto_vloeropp alg_ruimte_oppervlakte, c.cnt_contract_plaats_gewicht, sr.prs_verhuurbaar FROM alg_v_ruimte_gegevens r, alg_srtruimte sr, bcgv_v_act_contract_ruimte c WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key AND r.alg_ruimte_key = c.alg_ruimte_key(+); END; / /* Formatted on 30-9-2024 14:05:23 (QP5 v5.336) */ CREATE OR REPLACE PROCEDURE bcgv_import_budgettering (p_import_key IN NUMBER) AS CURSOR imp_csv IS SELECT fac_imp_csv_key fac_imp_csv_key, fac_imp_csv_col01 kostenplaats_nr, fac_imp_csv_col02 kostenplaats_oms, fac_imp_csv_col03 kostensoort_code, fac_imp_csv_col04 kostensoort_oms, fac_imp_csv_col05 periode, fac_imp_csv_col06 budget FROM fac_imp_csv WHERE fac_import_key = p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_header_valid NUMBER := 0; v_prs_kostenplaats_key NUMBER; v_prs_kostensoortgrp_key NUMBER; v_prs_kostensoort_key NUMBER; v_alg_gebouw_code VARCHAR2 (20); BEGIN FOR rec IN imp_csv LOOP IF v_header_valid = 0 THEN IF ( UPPER (rec.kostenplaats_nr) = 'KOSTENPLAATSCODE' AND UPPER (rec.kostenplaats_oms) = 'KOSTENPLAATSOMS' AND UPPER (rec.kostensoort_code) = 'KOSTENSOORTCODE' AND UPPER (rec.kostensoort_oms) = 'KOSTENSOORTOMS' AND UPPER (rec.periode) = 'PERIODE' AND UPPER (rec.budget) = 'BUDGET (EURO)') THEN v_header_valid := 1; END IF; ELSE v_aanduiding := 'Ophalen kostenplaats ' || rec.kostenplaats_nr || ' mislukt'; SELECT p.prs_kostenplaats_key INTO v_prs_kostenplaats_key FROM prs_kostenplaats p WHERE p.prs_kostenplaats_nr = rec.kostenplaats_nr AND p.prs_kostenplaats_verwijder IS NULL; IF v_prs_kostenplaats_key IS NULL THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan kostenplaats niet 1-duidig bepalen'); END IF; v_aanduiding := 'Ophalen kostensoort ' || rec.kostensoort_code || ' mislukt'; SELECT k.prs_kostensoort_key INTO v_prs_kostensoort_key FROM prs_kostensoort k WHERE k.prs_kostensoort_upper = UPPER (rec.kostensoort_code) AND k.prs_kostensoort_verwijder IS NULL; IF v_prs_kostensoort_key IS NULL THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan kostensoort niet 1-duidig bepalen'); END IF; END IF; END LOOP; IF v_header_valid = 0 THEN fac.imp_writelog (p_import_key, 'E', 'Geen valide header gevonden', 'Header fout'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE PROCEDURE bcgv_update_budgettering (p_import_key IN NUMBER) AS CURSOR bdgt IS SELECT fac_imp_csv_key fac_imp_csv_key, fac_imp_csv_col01 kostenplaats_nr, fac_imp_csv_col02 kostenplaats_oms, fac_imp_csv_col03 kostensoort_code, fac_imp_csv_col04 kostensoort_oms, fac_imp_csv_col05 periode, fac_imp_csv_col06 budget FROM fac_imp_csv WHERE fac_import_key = p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER := 0; v_ongeldig NUMBER := 0; v_ins_discipline_key NUMBER; v_bgt_project_key NUMBER; v_bgt_kostenrubriek_key NUMBER; v_kostensoortgrp_key NUMBER; v_kostensoort_key NUMBER; v_kostenplaatsgrp_key NUMBER; v_kostenplaats_key NUMBER; v_kostenplaats_omschrijving PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_OMSCHRIJVING%TYPE; v_budget NUMBER; v_budget_nu NUMBER; v_budget_key NUMBER; v_periode_start DATE; v_periode_eind DATE; BEGIN BEGIN v_aanduiding := 'Ophalen budget project disciplne Investering budgettering mislukt'; SELECT ins_discipline_key INTO v_ins_discipline_key FROM ins_tab_discipline i WHERE i.ins_discipline_module = 'BGT' AND i.ins_discipline_omschrijving = 'Investering' AND i.ins_discipline_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_tab_discipline (ins_discipline_omschrijving, ins_discipline_module, ins_discipline_aanmaak, ins_discipline_kpnverplicht) VALUES ('Investering', 'BGT', SYSDATE, 0) RETURNING ins_discipline_key INTO v_ins_discipline_key; INSERT INTO bgt_disc_params (bgt_ins_discipline_key) VALUES (v_ins_discipline_key); END; IF v_ins_discipline_key = NULL THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan budget project disciplne niet 1-duidig bepalen of aanmaken'); v_ongeldig := 1; ELSE BEGIN v_aanduiding := 'Ophalen budget project Budgettering mislukt'; SELECT p.bgt_project_key INTO v_bgt_project_key FROM bgt_project p WHERE p.bgt_project_code = 'Budgettering' AND p.ins_discipline_key = v_ins_discipline_key AND bgt_project_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO bgt_project (ins_discipline_key, bgt_project_code, bgt_project_omschrijving, bgt_project_aanmaak) VALUES (v_ins_discipline_key, 'Budgettering', 'Budgettering', SYSDATE) RETURNING bgt_project_key INTO v_bgt_project_key; END; END IF; IF v_bgt_project_key = NULL OR v_ongeldig = 1 THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan project niet 1-duidig bepalen of aanmaken'); v_ongeldig := 1; ELSE FOR rec IN bdgt LOOP IF v_count > 0 THEN BEGIN v_aanduiding := 'Ophalen budget project Budgettering mislukt'; SELECT p.bgt_project_key INTO v_bgt_project_key FROM bgt_project p WHERE p.bgt_project_code = rec.periode AND p.ins_discipline_key = v_ins_discipline_key AND bgt_project_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO bgt_project (ins_discipline_key, bgt_project_code, bgt_project_omschrijving, bgt_project_aanmaak) VALUES (v_ins_discipline_key, rec.periode, rec.periode, SYSDATE) RETURNING bgt_project_key INTO v_bgt_project_key; END; v_aanduiding := 'OPhalen kostenplaatsnr ' || rec.kostenplaats_nr || ' mislukt'; SELECT k.prs_kostenplaats_key, k.prs_kostenplaatsgrp_key, k.prs_kostenplaats_omschrijving INTO v_kostenplaats_key, v_kostenplaatsgrp_key, v_kostenplaats_omschrijving FROM prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.kostenplaats_nr AND k.prs_kostenplaats_verwijder IS NULL; BEGIN v_aanduiding := 'Ophalen budget project kostenrubriek ' || v_kostenplaats_omschrijving || ' mislukt'; SELECT k.bgt_kostenrubriek_key INTO v_bgt_kostenrubriek_key FROM bgt_kostenrubriek k WHERE k.bgt_project_key = v_bgt_project_key AND k.bgt_kostenrubriek_code = rec.kostenplaats_nr AND k.bgt_kostenrubriek_oms = v_kostenplaats_omschrijving; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO bgt_kostenrubriek (bgt_project_key, bgt_kostenrubriek_code, bgt_kostenrubriek_oms) VALUES (v_bgt_project_key, rec.kostenplaats_nr, v_kostenplaats_omschrijving) RETURNING bgt_kostenrubriek_key INTO v_bgt_kostenrubriek_key; END; v_aanduiding := 'Ophalen kostensoort en kostengroep ' || rec.kostensoort_code || '-' || rec.kostensoort_oms || ' mislukt'; SELECT s.prs_kostensoort_key, s.prs_kostensoortgrp_key INTO v_kostensoort_key, v_kostensoortgrp_key FROM prs_kostensoort s, prs_kostensoortgrp g WHERE s.prs_kostensoort_upper = rec.kostensoort_code AND s.prs_kostensoortgrp_key = g.prs_kostensoortgrp_key AND s.prs_kostensoort_verwijder IS NULL; v_budget := fac.safe_to_number (REPLACE (rec.budget, '.', '')); v_periode_start := fac.safe_to_date ('01-01-' || rec.periode, 'DD-MM-YYYY'); v_periode_eind := fac.safe_to_date ('31-12-' || rec.periode, 'DD-MM-YYYY'); IF v_kostenplaats_key > 0 AND v_kostenplaatsgrp_key > 0 AND v_kostensoort_key > 0 AND v_kostensoortgrp_key > 0 AND v_budget > 0 THEN -- Eerst kijken of hij er al is BEGIN SELECT b.bgt_budget_key, b.bgt_budget_bedrag INTO v_budget_key, v_budget_nu FROM bgt_budget b WHERE b.ins_discipline_key = v_ins_discipline_key AND b.bgt_project_key = v_bgt_project_key AND b.bgt_kostenrubriek_key = v_bgt_kostenrubriek_key AND b.prs_kostensoortgrp_key = v_kostensoortgrp_key AND b.prs_kostensoort_key = v_kostensoort_key AND b.prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key AND b.prs_kostenplaats_key = v_kostenplaats_key AND b.bgt_budget_begin = v_periode_start AND b.bgt_budget_eind = v_periode_eind; v_aanduiding := 'Aanpassen budget van ' || rec.kostenplaats_nr || '-' || rec.kostensoort_code || ' van ' || v_budget_nu || '-> ' || v_budget; UPDATE bgt_budget b SET b.bgt_budget_bedrag = v_budget WHERE bgt_budget_key = v_budget_key; fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Aanpassen budget bedrag'); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO bgt_budget (ins_discipline_key, bgt_project_key, bgt_kostenrubriek_key, prs_kostensoortgrp_key, prs_kostensoort_key, prs_kostenplaatsgrp_key, prs_kostenplaats_key, bgt_budget_bedrag, bgt_budget_begin, bgt_budget_eind) VALUES (v_ins_discipline_key, v_bgt_project_key, v_bgt_kostenrubriek_key, v_kostensoortgrp_key, v_kostensoort_key, v_kostenplaatsgrp_key, v_kostenplaats_key, v_budget, v_periode_start, v_periode_eind); END; END IF; END IF; v_count := v_count + 1; END LOOP; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE VIEW bcgv_v_budgetuitnutting AS SELECT x.*, budget - COALESCE (opdracht_gefact, opdracht_uitv, offerte) budget_res FROM (SELECT kp.prs_kostenplaats_nr || ' - ' || kp.prs_kostenplaats_omschrijving prs_kostenplaats, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, kp.prs_kostenplaats_key, kp.prs_perslid_key, (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_key = kp.prs_perslid_key) budgethouder, ksg.prs_kostensoortgrp_key, ksg.prs_kostensoortgrp_oms, ks.prs_kostensoort_key, ks.prs_kostensoort_opmerking prs_kostensoort, ks.prs_kostensoort_upper, b.bgt_budget_bedrag budget, TRUNC (b.bgt_budget_begin, 'YYYY') budget_jaar, b.bgt_budget_begin, b.bgt_budget_eind, (SELECT SUM (opdr_kost) FROM ( SELECT AVG (mld_opdr_kosten) opdr_kost FROM mld_opdr o, mld_typeopdr ot WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key AND o.prs_kostensoort_key = ks.prs_kostensoort_key AND o.mld_typeopdr_key = ot.MLD_TYPEOPDR_KEY AND ot.mld_typeopdr_isofferte = 1 AND NOT EXISTS (SELECT 1 FROM mld_opdr o2, mld_typeopdr to2 WHERE o2.mld_melding_key = o.mld_melding_key AND o2.mld_typeopdr_key = to2.mld_typeopdr_key and to2.mld_typeopdr_kosten = 1) AND o.mld_statusopdr_key IN (5, 6, 7, 8, 9) AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind GROUP BY o.mld_melding_key)) offerte, (SELECT SUM (mld_opdr_kosten) FROM mld_opdr o, mld_typeopdr ot WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key AND o.prs_kostensoort_key = ks.prs_kostensoort_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 AND o.mld_statusopdr_key IN (3,4,5,6,7,8,9,10) -- Ter fiattering, Gefiatteerd, Toegekend, Afgemeld, Verwerkt, Geaccepteerd, Afgerond, Ter goedkeuring AND NOT EXISTS (SELECT 1 FROM fin_factuur f WHERE f.mld_opdr_key = o.mld_opdr_key) AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_uitv, (SELECT SUM (mld_opdr_kosten) FROM mld_opdr o, mld_typeopdr ot WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key AND o.prs_kostensoort_key = ks.prs_kostensoort_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 AND o.mld_statusopdr_key = 9 AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_gefact FROM bgt_budget b, bgt_project p, bgt_kostenrubriek kr, prs_kostenplaats kp, prs_kostensoort ks, prs_kostensoortgrp ksg WHERE p.bgt_project_key = b.bgt_project_key AND kr.bgt_kostenrubriek_key = b.bgt_kostenrubriek_key AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key AND ks.prs_kostensoort_key = b.prs_kostensoort_key AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key) x; CREATE OR REPLACE VIEW bcgv_v_budgetuitn_detail AS SELECT k.prs_kostenplaats_key, k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving prs_kostenplaats, k.prs_kostenplaats_nr, ksg.prs_kostensoortgrp_key, ksg.prs_kostensoortgrp_oms, ks.prs_kostensoort_key, ks.prs_kostensoort_oms, ks.prs_kostensoort_opmerking prs_kostensoort, o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr mld_opdr_nr, o.mld_opdr_key, so.mld_statusopdr_omschrijving, CASE WHEN ot.mld_typeopdr_isofferte = 1 THEN 'Offerte' ELSE 'Opdracht' END opdracht_soort, TO_CHAR (m.mld_melding_omschrijving) omschrijving, CASE WHEN ot.mld_typeopdr_isofferte = 1 THEN mld_opdr_kosten ELSE 0 END offerte_bedrag, CASE WHEN ot.mld_typeopdr_isofferte = 0 THEN mld_opdr_kosten ELSE 0 END opdracht_bedrag FROM mld_opdr o, prs_kostenplaats k, prs_kostensoort ks, prs_kostensoortgrp ksg, mld_melding m, mld_typeopdr ot, mld_statusopdr so WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key AND ks.prs_kostensoort_key = o.prs_kostensoort_key AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND m.mld_melding_key = o.mld_melding_key AND ot.mld_typeopdr_key = o.mld_typeopdr_key AND so.mld_statusopdr_key = o.mld_statusopdr_key; -- Ordertracking: Per omgeving ontvang de verantwoordelijke Servicedesk alle notities en mutaties/status-updates op de Opdrachtenstroom die zijn geweest per gestylde mail -- Opzet: Job kijkt of er vanaf de laatste job_run nog mutaties zijn geweest en indien geval dan wordt gestyled rapport gemaild naar desbtreffende backoffice-email-adres -- Bronview behorende bij job BCGV_V_NOTIFY_BACKOFFICE_OT CREATE OR REPLACE VIEW bcgv_v_rap_ordertracking_bron AS SELECT -- notitie dp.mld_disc_params_emailnw3 vakgroep_email, m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, o.mld_opdr_key, u.naam uitvoerder, po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, ot.mld_typeopdr_omschrijving opdracht_type, 'Notitie' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign mld_opdr_note_aanmaak datum, pn.prs_perslid_naam || ' (' || pn.prs_perslid_voornaam || ')' actie_door, 'Notitie' actie_omschrijving, -- Subsoort voor status mld_opdr_note_omschrijving actie_details, note.mld_opdr_note_aanmaak datum_mutatie_filter, TO_NUMBER (TO_CHAR (note.mld_opdr_note_aanmaak, 'hh24')) uur_filter FROM mld_melding m, mld_opdr o, mld_typeopdr ot, mld_v_uitvoerende u, mld_opdr_note note, prs_perslid pn, prs_perslid po, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, alg_locatie l WHERE o.mld_opdr_key = note.mld_opdr_key AND m.mld_melding_key = o.mld_melding_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'MLD' AND d.ins_discipline_key = dp.mld_ins_discipline_key AND note.prs_perslid_key = pn.prs_perslid_key AND pn.prs_perslid_verwijder IS NULL AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key AND o.prs_perslid_key = po.prs_perslid_key(+) AND note.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_upper = 'HEYDAY' OR g.fac_groep_upper = 'CVGV')) UNION SELECT -- Voor status -- in geval dsm, rabo en sabic dp.mld_disc_params_emailnw3 vakgroep_email, m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnr, o.mld_opdr_key, u.naam uitvoerder, po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')' behandelaar, ot.mld_typeopdr_omschrijving opdracht_type, 'Status' soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign t.fac_tracking_datum datum, pt.prs_perslid_naam || ' (' || pt.prs_perslid_voornaam || ')' actie_door, COALESCE (vert.actiecode_tekst, sn.fac_srtnotificatie_code) actie_omschrijving, t.fac_tracking_oms actie_details, t.fac_tracking_datum datum_mutatie_filter, TO_NUMBER (TO_CHAR (t.fac_tracking_datum, 'hh24')) uur_filter FROM mld_melding m, mld_opdr o, mld_typeopdr ot, fac_tracking t, fac_srtnotificatie sn, (SELECT UPPER (SUBSTR (fac_locale_xsl_label, 12)) AS actiecode, fac_locale_xsl_tekst AS actiecode_tekst FROM fac_locale_xsl WHERE INSTR (fac_locale_xsl_label, 'lcl_ord_is_') > 0 AND fac_locale_xsl_lang = 'NL') vert, mld_v_uitvoerende u, prs_perslid pt, prs_perslid po, mld_stdmelding sm, ins_tab_discipline d, mld_disc_params dp, alg_locatie l WHERE o.mld_opdr_key = t.fac_tracking_refkey AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = vert.actiecode(+) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND m.mld_melding_key = o.mld_melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_module = 'MLD' AND d.ins_discipline_key = dp.mld_ins_discipline_key AND t.prs_perslid_key = pt.prs_perslid_key AND pt.prs_perslid_verwijder IS NULL AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key AND o.prs_perslid_key = po.prs_perslid_key(+) AND t.prs_perslid_key NOT IN (SELECT gg.prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND (g.fac_groep_upper = 'HEYDAY' OR g.fac_groep_upper = 'CVGV')); -- Rapportview behorende bij job BCGV_V_NOTIFY_BACKOFFICE_OT -- De lijst die gemaild wordt - inclusief filtering op notificatie-interval CREATE OR REPLACE VIEW bcgv_v_rap_ordertrackinglijst AS SELECT vakgroep_email, v.opdrachtnr, v.mld_opdr_key, v.uitvoerder, v.behandelaar, v.opdracht_type, v.soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging v.datum, v.actie_door, v.actie_omschrijving, v.actie_details, TO_CHAR (d.last_jobrun, 'dd-mm-yyyy hh24:mi:ss') run_deze, TO_CHAR (d.last_cust01, 'dd-mm-yyyy hh24:mi:ss') run_vorige FROM bcgv_v_rap_ordertracking_bron v, (SELECT MAX (COALESCE (ft.fac_tracking_datum, SYSDATE)) last_cust01, -- subview waarin notificatie-interval bepaald wordt (=datums waartussen het resultaat in rapport getoond moet worden) MAX ((SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT')) last_jobrun FROM fac_tracking ft, fac_srtnotificatie sn WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'CUST01' AND ft.fac_tracking_datum < (SELECT COALESCE (fac_notificatie_job_lastrun - 1/(24*60), SYSDATE) -- de lastrun kan een latere datum hebben dan de laatste notificatie. FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT')) d WHERE v.datum_mutatie_filter BETWEEN d.last_cust01 AND d.last_jobrun; -- Job voor de ordertrackinglijst te versturen CREATE OR REPLACE VIEW bcgv_v_notify_backoffice_ot -- OT = Ordertrackinglijst AS SELECT (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_upper = 'FACILITOR') sender, NULL receiver, 'Ordertrackinglijst' text, 'CUST01' code, (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'CUST01') fac_srtnotificatie_key, 163 key, -- Ordertrackinglijst NULL xkey, v.vakgroep_email xemail, NULL xmobile FROM ( SELECT vakgroep_email FROM bcgv_v_rap_ordertracking_bron WHERE datum_mutatie_filter >= (SELECT COALESCE (fac_notificatie_job_lastrun, TRUNC (SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'BCGV_V_NOTIFY_BACKOFFICE_OT') AND vakgroep_email IS NOT NULL AND LOWER (vakgroep_email) NOT IN ('heyq@heydayfm.nl') -- ticket AAIT#84516 GROUP BY vakgroep_email) v; ------ 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