-- -- $Id$ -- -- Script containing customer specific db-configuration for KFSG. DEFINE thisfile = 'KFSG.SQL' DEFINE dbuser = '^KFSG' 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 KFSG AS PROCEDURE set_werkplek; PROCEDURE annuleer_werkplek; PROCEDURE schonen_bezoekers; PROCEDURE schonen_bestelkenmerken; FUNCTION get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2; FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2; FUNCTION res_presave (p_user_key IN NUMBER, p_rsv_ruimte_key IN NUMBER, p_activiteit_key IN NUMBER, p_res_deel_key IN NUMBER, p_datum_van IN DATE, p_datum_tot IN DATE, p_volgnr IN NUMBER) RETURN VARCHAR2; END; / CREATE OR REPLACE PACKAGE BODY KFSG AS -- Geef alle mensen een werkplek in het Schiphol gebouw (key PROCEDURE set_werkplek AS CURSOR c IS SELECT * FROM prs_perslid p WHERE NOT EXISTS (SELECT prs_perslidwerkplek_key FROM prs_perslidwerkplek pwp WHERE pwp.prs_perslid_key = p.prs_perslid_key) AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_'; BEGIN FOR rec IN c LOOP PRS.movetoruimte (rec.prs_perslid_key, 4963, 'R', 0); END LOOP; COMMIT; END; PROCEDURE annuleer_werkplek AS CURSOR c IS SELECT 'CUST03' code, NULL sender, rrr.res_rsv_ruimte_host_key receiver, 'Werkplekreservering ' || MAX (rd.res_deel_omschrijving) || ' op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' van ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI') || ' tot ' || TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') || ' is geannuleerd.' text, rrr.res_reservering_key refkey, rrr.res_rsv_ruimte_key refxkey, rrd.res_rsv_deel_key dkey FROM res_rsv_ruimte rrr, fac_usrdata ud, res_rsv_deel rrd, res_deel rd WHERE rrr.res_activiteit_key = ud.fac_usrdata_code AND ud.fac_usrtab_key = 261 AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrd.res_rsv_deel_verwijder IS NULL AND res_rsv_ruimte_van > TRUNC (SYSDATE) + ud.fac_usrdata_volgnr + 1 GROUP BY rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rrr.res_reservering_key, rrr.res_rsv_ruimte_key, res_rsv_ruimte_host_key, rrd.res_rsv_deel_key; BEGIN FOR rec IN c LOOP FAC.putnotificationsrtprio (rec.sender, rec.receiver, rec.code, rec.refkey, rec.text, 2, NULL, NULL, rec.refxkey, 2, NULL, NULL); UPDATE res_rsv_deel SET res_rsv_deel_verwijder = SYSDATE WHERE res_rsv_deel_key = rec.dkey; UPDATE res_rsv_ruimte SET res_rsv_ruimte_verwijder = SYSDATE WHERE res_rsv_ruimte_key = rec.refxkey; END LOOP; COMMIT; END; -- KFSG#69746: Schonen bezoekersgegevens ouder dan 90 dagen (tenminste als -- anonymize_period op 90 staat)! PROCEDURE schonen_bezoekers AS BEGIN ANO.anonymizebez (SYSDATE - (10 * 365), SYSDATE - fac.getsetting ('anonymize_period')); END; -- KFSG#72218: Schonen bestelkenmerken bij 361=Bloemen en 362=Fruitmanden! PROCEDURE schonen_bestelkenmerken AS CURSOR c IS SELECT b.bes_bestelling_key FROM bes_bestelling b WHERE COALESCE (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), fac.gettrackingdate ('BESREJ', b.bes_bestelling_key)) < TRUNC (SYSDATE - 7, 'iw') --AND EXISTS -- Zou zo moeten zijn! -- (SELECT 1 -- FROM bes_bestelling_item bbi, bes_srtdeel sd, bes_srtgroep sg -- WHERE bbi.bes_srtdeel_key = sd.bes_srtdeel_key -- AND sd.bes_srtgroep_key = sg.bes_srtgroep_key -- AND sg.ins_discipline_key IN (361, 362) -- Bloemen/Fruitmanden -- AND bbi.bes_bestelling_key = b.bes_bestelling_key) AND EXISTS (SELECT 1 FROM bes_kenmerkbestell WHERE (bes_kenmerk_key IN (8, 9, 10, 11, 13, 281, 282, 283) -- Bloemen OR bes_kenmerk_key IN (3, 4, 5, 6, 17)) -- Fruitmanden AND bes_bestelling_key = b.bes_bestelling_key) ORDER BY 1; BEGIN FOR rec IN c LOOP DELETE FROM bes_kenmerkbestell -- Inclusief eventueel verwijderde waarden! WHERE (bes_kenmerk_key IN (8, 9, 10, 11, 13, 281, 282, 283) -- Bloemen OR bes_kenmerk_key IN (3, 4, 5, 6, 17)) -- Fruitmanden AND bes_bestelling_key = rec.bes_bestelling_key; fac.trackaction ('#BESUPD', rec.bes_bestelling_key, NULL, SYSDATE, 'Geanonimiseerd'); END LOOP; COMMIT; END; FUNCTION get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2 AS v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE; v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE; v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE; v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE; BEGIN CASE p_module WHEN 'MLD' THEN SELECT mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = p_link_key AND km.mld_kenmerk_key = p_kenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key; WHEN 'CNT' THEN SELECT cnt_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kc.cnt_kenmerkcontract_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k, cnt_srtkenmerk sk WHERE kc.cnt_contract_key = p_link_key AND kc.cnt_kenmerk_key = p_kenmerk_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key; WHEN 'ALG' THEN SELECT alg_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, aogk.alg_onrgoedkenmerk_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM alg_onrgoedkenmerk aogk, alg_kenmerk k WHERE aogk.alg_onrgoed_key = p_link_key AND aogk.alg_kenmerk_key = p_kenmerk_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key; WHEN 'INS' THEN SELECT k.ins_kenmerk_niveau INTO v_kenmerk_niveau FROM ins_kenmerk k WHERE ins_kenmerk_key = p_kenmerk_key; IF v_kenmerk_niveau = 'C' THEN SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikds.ins_kmdeelsrtcontr_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kmdeelsrtcontr ikds, ins_kenmerk k, ins_srtkenmerk sk WHERE ikds.ins_kmdeelsrtcontr_key = p_link_key AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL AND ikds.ins_kenmerk_key = p_kenmerk_key AND ikds.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; ELSE SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikd.ins_kenmerkdeel_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk WHERE ikd.ins_deel_key = p_link_key AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ikd.ins_kenmerk_key = p_kenmerk_key AND ikd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; END IF; END CASE; RETURN kfsg.get_kenmerkwaarde (v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde); END; FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2 (4000); BEGIN IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN v_result := fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde); ELSIF p_kenmerk_type = 'D' THEN v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd'); ELSE v_result := p_kenmerk_waarde; END IF; RETURN v_result; END; FUNCTION res_presave (p_user_key IN NUMBER, p_rsv_ruimte_key IN NUMBER, p_activiteit_key IN NUMBER, p_res_deel_key IN NUMBER, p_datum_van IN DATE, p_datum_tot IN DATE, p_volgnr IN NUMBER) RETURN VARCHAR2 AS v_result VARCHAR2 (300); v_date DATE; v_count NUMBER; v_discipline_key NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_errorhint VARCHAR2 (200); BEGIN v_result := 'OK'; v_errorhint := 'Controleer activiteit: ' || p_activiteit_key; IF p_activiteit_key = 210 -- Lunchperiodes THEN v_errorhint := 'Kijk of ik al een reservering heb'; SELECT count(*) INTO v_count FROM res_rsv_ruimte rrr WHERE rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_activiteit_key = 210 -- Lunchperiodes AND rrr.res_rsv_ruimte_host_key = p_user_key AND rrr.res_rsv_ruimte_key <> p_rsv_ruimte_key AND TRUNC(res_rsv_ruimte_van) = TRUNC(p_datum_tot); IF v_count > 2 THEN v_result := 'Beste collega,' || CHR(10) || 'Er mogen maar 3 lunches per dag geboekt worden'; END IF; END IF; RETURN v_result; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; RETURN v_result; END; END; / CREATE OR REPLACE PROCEDURE kfsg_export_daily_task ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS BEGIN KFSG.set_werkplek(); KFSG.annuleer_werkplek(); -- KFSG#69746: Schonen bezoekersgegevens ouder dan 90 dagen! KFSG.schonen_bezoekers(); -- KFSG#72218: Schonen bestelkenmerken ! KFSG.schonen_bestelkenmerken(); END; / -- Notificatie om catering wijzigingen te notificeren. CREATE OR REPLACE VIEW KFSG_V_NOTI_CATERING ( sender, receiver, text, code, fac_srtnotificatie_key, key, xkey, xemail, xmobile ) AS SELECT NULL sender, NULL receiver, -- Catering1@schiphol.nl 'Catering bij reservering ' || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || ' is aangemaakt/gewijzigd ' text, 'RESINF' code, NULL fac_srtnotificatie_key, rrr.res_reservering_key key, rrr.res_rsv_ruimte_key xkey, 'Catering1@schiphol.nl' xemail, NULL xmobile FROM res_rsv_artikel rra, res_rsv_ruimte rrr, res_artikel ra, (SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 341) ud -- KFSG#75351:Cateringnotificatie WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key --AND ra.res_discipline_key IN (821, 822, 823, 862, 1242, 1281, 1241, 1981) -- KFSG#56898/58379/60004/75351 AND ra.res_discipline_key = fac.safe_to_number (ud.fac_usrdata_code) AND rra.res_rsv_artikel_levering > SYSDATE AND GREATEST (COALESCE (res_rsv_artikel_mutatie, SYSDATE - 100), COALESCE (res_rsv_artikel_verwijder, SYSDATE - 100), COALESCE (res_rsv_artikel_aanmaak, SYSDATE - 100)) > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING') AND GREATEST (COALESCE (res_rsv_artikel_mutatie, SYSDATE - 100), COALESCE (res_rsv_artikel_verwijder, SYSDATE - 100), COALESCE (res_rsv_artikel_aanmaak, SYSDATE - 100)) < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING') GROUP BY rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr; -- rapport met mensen die via de interface inactief gemaakt zijn en nog lopende verplichtingen hebben te tonen. CREATE OR REPLACE VIEW kfsg_v_rap_prs_inactief AS SELECT prs_perslid_inactief - SYSDATE hide_f_volgorde, pf.prs_perslid_naam_full, p.prs_perslid_key, COUNT (item) aantal, prs_perslid_inactief + 90 einddatum FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_v_verplichting v WHERE prs_perslid_inactief IS NOT NULL AND prs_perslid_verwijder IS NULL AND p.prs_perslid_key = v.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key(+) GROUP BY p.prs_perslid_key, prs_perslid_inactief, prs_perslid_naam_full; CREATE OR REPLACE VIEW kfsg_v_noti_resreminder ( code, sender, receiver, text, key, xkey ) AS SELECT 'RESINF', NULL, rrr.res_rsv_ruimte_host_key, 'Reservering ' || TO_CHAR (res_reservering_key) || ': U heeft op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' van ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI') || ' tot ' || TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') || ' ruimte ' || rr.res_ruimte_nr || ' gereserveerd.', rrr.res_reservering_key, rrr.res_rsv_ruimte_key FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_disc_params dp WHERE rrr.res_rsv_ruimte_van > TRUNC (SYSDATE) --AND rrr.res_status_fo_key <= 5 AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = dp.res_ins_discipline_key --AND dp.res_disc_params_noti_dagen IS NOT NULL AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Notificatie alleen op werkdagen! AND fac.count_work_days (SYSDATE, rrr.res_rsv_ruimte_van) = dp.res_disc_params_noti_dagen UNION ALL SELECT 'RESINF', NULL, res_rsv_ruimte_host_key, 'Reservering ' || TO_CHAR (res_reservering_key) || ': U heeft op ' || TO_CHAR (MIN (van), 'dd-mm') || DECODE ( MIN (van), MAX (tot), ' om ' || TO_CHAR (MIN (van), 'hh24:mi'), ' van ' || TO_CHAR (MIN (van), 'hh24:mi') || ' tot ' || TO_CHAR (MAX (tot), 'hh24:mi')) || ' (in ruimte ' || MIN (aanduiding) || ') ' || COUNT ( * ) || ' voorziening(en) gereserveerd.', res_reservering_key, res_rsv_ruimte_key FROM (SELECT rrr.res_reservering_key, rrr.res_rsv_ruimte_key, rrr.res_rsv_ruimte_host_key, rrd.res_rsv_deel_van van, rrd.res_rsv_deel_tot tot, alg_gebouw_code || '-' || alg_verdieping_code || '-' || alg_ruimte_nr aanduiding FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_deel rrd, res_deel rd, res_disc_params dp, alg_v_onroerendgoed_gegevens aog WHERE 1 = 1 --AND rrr.res_ruimte_opstel_key IS NULL --AND rrr.res_status_fo_key <= 5 AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_rsv_deel_van > TRUNC (SYSDATE) AND rrd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = dp.res_ins_discipline_key --AND dp.res_disc_params_noti_dagen IS NOT NULL AND rrr.alg_ruimte_key = aog.alg_ruimte_key AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Notificatie alleen op werkdagen! AND fac.count_work_days (SYSDATE, rrd.res_rsv_deel_van) = dp.res_disc_params_noti_dagen UNION ALL SELECT rrr.res_reservering_key, rrr.res_rsv_ruimte_key, rrr.res_rsv_ruimte_host_key, rra.res_rsv_artikel_levering van, rra.res_rsv_artikel_levering tot, alg_gebouw_code || '-' || alg_verdieping_code || '-' || alg_ruimte_nr aanduiding FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_artikel rra, res_artikel ra, res_disc_params dp, alg_v_onroerendgoed_gegevens aog WHERE 1 = 1 --AND rrr.res_ruimte_opstel_key IS NULL --AND rrr.res_status_fo_key <= 5 AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_levering > TRUNC (SYSDATE) AND rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = dp.res_ins_discipline_key --AND dp.res_disc_params_noti_dagen IS NOT NULL AND rrr.alg_ruimte_key = aog.alg_ruimte_key AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Notificatie alleen op werkdagen! AND fac.count_work_days (SYSDATE, rra.res_rsv_artikel_levering) = dp.res_disc_params_noti_dagen) GROUP BY res_rsv_ruimte_host_key, res_reservering_key, res_rsv_ruimte_key; -- KFSG#85713: Reminder voor cateringreserveringen 4 (werk)dagen van tevoren. CREATE OR REPLACE VIEW KFSG_V_NOTI_CAT_REMINDER ( code, sender, receiver, text, key, --par1, --par2, xkey, xemail, xmobile --fac_srtnotificatie_key, --attachments, --xsender, --prs_bedrijfadres_key ) AS SELECT 'CUST11', -- sn.fac_srtnotificatie_code TO_NUMBER (NULL), rrr.res_rsv_ruimte_contact_key, REPLACE ( REPLACE ( lcl.x ('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms), '##KEY##', TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr)), '##DESC##', rrr.res_rsv_ruimte_omschrijving), rrr.res_reservering_key, --NULL, --NULL, rrr.res_rsv_ruimte_key, NULL, NULL --TO_NUMBER (NULL), --NULL --NULL, --TO_NUMBER (NULL) FROM res_v_aanwezigrsv_ruimte rrr, fac_srtnotificatie sn WHERE rrr.res_rsv_ruimte_van > TRUNC (SYSDATE + 4) -- Tbv. performance! AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief AND rrr.res_rsv_ruimte_dirtlevel = 0 AND EXISTS (SELECT 1 FROM res_v_aanwezigrsv_artikel WHERE res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) AND sn.fac_srtnotificatie_code = 'CUST11' AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6' -- Notificatie alleen op werkdagen! AND fac.count_work_days (SYSDATE, rrr.res_rsv_ruimte_van) = 4; CREATE OR REPLACE VIEW kfsg_v_resruimte_qrc ( district, locatie, gebouw, catalogus, ruimte_nr, ruimte_omschrijving, res_ruimte_key, fac_bookmark_naam, fac_bookmark_id ) AS SELECT DISTINCT alg_district_omschrijving, alg_locatie_omschrijving, alg_gebouw_omschrijving, ins_discipline_omschrijving, res_ruimte_nr, res_ruimte_omschrijving, rr.res_ruimte_key, fac_bookmark_naam, fac_bookmark_id FROM res_ruimte rr, res_discipline rd, fac_bookmark bk, (SELECT rag.res_ruimte_key, alg_district_omschrijving, alg_locatie_omschrijving, alg_gebouw_omschrijving FROM res_alg_ruimte rag, alg_v_onroerendgoed aor, alg_gebouw g, alg_locatie l, alg_district d WHERE rag.alg_ruimte_key = aor.alg_onroerendgoed_keys AND aor.alg_gebouw_key = g.alg_gebouw_key AND g.alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = d.alg_district_key) res_alg WHERE res_ruimte_verwijder IS NULL AND rd.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = res_alg.res_ruimte_key(+) AND bk.fac_bookmark_naam LIKE '%QRC_RES_RUIMTE%'; -- View om een catalogus te exporteren die daarna weer ingelezen kan worden. -- Hopelijk komt hier met YAXX#78417 een generieke oplossing voor. CREATE OR REPLACE VIEW kfsg_v_rap_sync_catalogus AS SELECT d.ins_discipline_omschrijving catalogus_naam, b.prs_bedrijf_naam leverancier, NULL cat_datum, sd.bes_srtdeel_nr artikelnr, sg.bes_srtgroep_omschrijving groep, sd.bes_srtdeel_omschrijving omschrijving, REPLACE (TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)), ',', '.') prijs, sd.bes_srtdeel_eenheid eenheid, sd.bes_srtdeel_image picture, sd.bes_srtdeel_veelvoud orderaantal, sd.bes_srtdeel_btw tax, TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd') duedate, REPLACE (TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)), ',', '.') inkoopprijs, bes_srtdeel_minimum minimum, bes_staffeltabel_naam staffeltabel, bes_srtdeel_wijzigdagen wijzigdagen, bes_srtdeel_annuleerdagen annuleerdagen, bes_srtdeel_opmerking opmerking FROM bes_srtdeel sd, bes_srtgroep sg, bes_discipline d, prs_bedrijf b, bes_staffeltabel st WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND sd.prs_bedrijf_key = b.prs_bedrijf_key AND sd.bes_staffeltabel_key = st.bes_staffeltabel_key(+) AND sd.bes_srtdeel_verwijder IS NULL AND sg.bes_srtgroep_verwijder IS NULL; -- Kostenrapportage met de kosten van alle onderdelen KFSG#52740 /* Formatted on 16/7/2018 9:23:43 (QP5 v5.313) */ CREATE OR REPLACE VIEW kfsg_v_kostenrapportage AS SELECT nummer, kostentype, datum, COALESCE (k.prs_kostenplaats_omschrijving, ka.prs_kostenplaats_omschrijving) kostenplaats, aantal, omschrijving, prijs, ins_discipline_omschrijving catalogus FROM (SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer, 'artikel' kostentype, res_rsv_ruimte_van datum, prs_kostenplaats_key, res_rsv_ruimte_host_key prs_perslid_key, res_rsv_artikel_aantal aantal, ra.res_artikel_omschrijving omschrijving, RES.getartikelprijs (res_rsv_artikel_key) prijs, ra.res_discipline_key ins_discipline_key FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rra.res_rsv_artikel_verwijder IS NULL UNION ALL SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer, 'deel', res_rsv_ruimte_van, rrr.prs_kostenplaats_key, res_rsv_ruimte_host_key prs_perslid_key, 1, res_deel_omschrijving, RES.getdeelprijs (res_rsv_deel_key), rd.res_discipline_key FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rrd.res_rsv_deel_verwijder IS NULL AND res_rsv_ruimte_van < SYSDATE UNION ALL SELECT TO_CHAR (b.bes_bestelling_key), 'bestelling', b.bes_bestelling_datum, b.prs_kostenplaats_key, prs_perslid_key_voor, bi.bes_bestelling_item_aantal, sd.bes_srtdeel_omschrijving, bi.bes_bestelling_item_aantal * bes_bestelling_item_prijs, sg.ins_discipline_key FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key UNION ALL SELECT TO_CHAR (m.mld_melding_key), 'melding', m.mld_melding_datum, m.prs_kostenplaats_key, m.prs_perslid_key_voor, 1, std.mld_stdmelding_omschrijving, SUM (o.mld_opdr_kosten), std.mld_ins_discipline_key FROM mld_melding m, mld_opdr o, mld_stdmelding std WHERE m.mld_melding_key = o.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key GROUP BY m.mld_melding_datum, m.prs_kostenplaats_key, m.prs_perslid_key_voor, 1, std.mld_stdmelding_omschrijving, std.mld_ins_discipline_key, m.mld_melding_key) geg, prs_kostenplaats k, prs_kostenplaats ka, prs_perslid p, prs_afdeling a, ins_tab_discipline d WHERE geg.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND geg.ins_discipline_key = d.ins_discipline_key AND geg.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = ka.prs_kostenplaats_key AND geg.datum < SYSDATE; -- KFSG#57062: Klachtenrapportage CREATE OR REPLACE VIEW kfsg_v_rap_klachten AS SELECT d.ins_discipline_omschrijving, m.mld_melding_onderwerp, aogk.alg_gebouw_naam, pf.prs_perslid_naam_full, m.mld_melding_datum, fac.gettrackingdate ('MLDAFM', m.mld_melding_key) melding_afgemeld, s.mld_statuses_omschrijving, m.mld_melding_opmerking, kfsg.get_kenmerk('MLD', 1401, m.mld_melding_key) verbeteractie, kfsg.get_kenmerk('MLD', 1423, m.mld_melding_key) verwijtbaar, kfsg.get_kenmerk('MLD', 1421, m.mld_melding_key) leverancier FROM mld_melding m, prs_v_perslid_fullnames_all pf, alg_v_allonrgoed_gegevens aogk, mld_statuses s, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_melding_status = mld_statuses_key AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_alg_onroerendgoed_keys = aogk.alg_onroerendgoed_keys AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key -- klacht AND d.ins_srtdiscipline_key = 23; -- KFSG#51990: Facturatieproces (reverse billing zoals bij NS)! CREATE OR REPLACE VIEW kfsg_v_rap_actual_cost_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, broc_flag, fclt_f_leverancier, contractnr, beschrijving, inkoopordernr, aantal, kosten ) AS -- Vaste contractkosten over de ACTUAL termijn SELECT c.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand volgende maand factureren (achteraf) 'C' broc_flag, c.prs_bedrijf_naam bedrijf, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen vaste kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, 0 aantal, ROUND ( DECODE (COALESCE (c.cnt_contract_termijnkosten, 0), 0, c.cnt_contract_kosten / 12, c.cnt_contract_termijnkosten), 2) + fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0')) + fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0')) kosten -- Wat als looptijd < jaar? FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_afdeling_key, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, c.cnt_contract_kosten, c.cnt_contract_termijnkosten FROM cnt_v_aanwezigcontract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp WHERE c.ins_discipline_key = 522 -- Vaste contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+)) c LEFT JOIN cnt_kenmerkcontract ce ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten AND c.cnt_contract_key = ce.cnt_contract_key LEFT JOIN cnt_kenmerkcontract bm ON bm.cnt_kenmerk_key = -1 -- Bonus/malus AND c.cnt_contract_key = bm.cnt_contract_key UNION ALL -- Bestelopdrachtkosten SELECT pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand volgende maand factureren (achteraf) 'B' broc_flag, b.prs_bedrijf_naam bedrijf, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, COUNT (DISTINCT bo.bes_bestelopdr_key) aantal, SUM ((boi.bes_bestelopdr_item_aantal * COALESCE (boi.bes_bestelopdr_item_inkprijs, boi.bes_bestelopdr_item_prijs)) + COALESCE (bo.bes_bestelopdr_korting, 0) + COALESCE (bo.bes_bestelopdr_levkosten, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM bes_bestelopdr bo, bes_bestelopdr_item boi, prs_bedrijf b, cnt_v_aanwezigcontract c, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp WHERE bo.bes_bestelopdr_status = 6 -- Bestelopdracht Geleverd (en nog niet Verwerkt) AND fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Geleverd (en nog niet Verwerkt) --fac.gettrackingdate ('BESOTV', bbi.bes_bestelling_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Ontvangen (en nog niet Verwerkt?) AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bo.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND NOT EXISTS (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern) GROUP BY pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), 'B', b.prs_bedrijf_naam, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer UNION ALL -- Reserveringskosten SELECT x.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand volgende maand factureren (achteraf) 'R' broc_flag, x.prs_bedrijf_naam bedrijf, x.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten x.cnt_contract_omschrijving, x.cnt_contract_nummer, COUNT (DISTINCT x.res_rsv_ruimte_key) aantal, SUM (COALESCE (verw_prijs, prijs, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM (SELECT rrr.res_rsv_ruimte_key, b.prs_bedrijf_naam, pcp.prs_afdeling_key, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * rra.res_artikel_prijs prijs, rra.btw FROM res_rsv_ruimte rrr, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_allonroerendgoed aog, (SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_levering, rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal, ra.res_artikel_prijs, DECODE (COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw), NULL, 'VH', 21, 'VH', 'VL') btw, ra.res_discipline_key, ra.res_artikel_omschrijving, ra.res_artikel_eenheid FROM res_v_aanwezigrsv_artikel rra, res_artikel ra WHERE rra.res_rsv_artikel_verwerkt IS NULL AND rra.res_rsv_artikel_dirtlevel = 0 AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE, 'mm') AND TRUNC (SYSDATE + 1) -- Actual = Deze maand Geleverd (en nog niet Verwerkt) AND rra.res_artikel_key = ra.res_artikel_key) rra, res_v_aanwezigdiscipline rd, res_disc_params dp, prs_bedrijf b, cnt_v_aanwezigcontract c, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_discipline_key = rd.ins_discipline_key AND rd.ins_discipline_key = dp.res_ins_discipline_key AND dp.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND c.cnt_contract_omschrijving NOT LIKE '%BPS%' -- BPS contracten worden gebruikt om mld_opdrachten te koppelen AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND NOT EXISTS (SELECT 1 FROM cnt_v_aanwezigcontract c2 WHERE c2.ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c2.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c2.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c2.cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c2.cnt_contract_omschrijving NOT LIKE '%BPS%' -- BPS contracten worden gebruikt om mld_opdrachten te koppelen AND c2.cnt_contract_nummer_intern > c.cnt_contract_nummer_intern)) x GROUP BY x.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), 'R', x.prs_bedrijf_naam, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.cnt_contract_nummer UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten SELECT pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand ORDAFR, volgende maand factureren (achteraf) 'O' broc_flag, b.prs_bedrijf_naam, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) cnt_contract_nummer, COUNT ( * ) aantal, SUM (o.mld_opdr_kosten) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, --fac_tracking t, cnt_contract c, cnt_contract mc, prs_bedrijf b, prs_contactpersoon cp, prs_perslid pcp, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 --AND o.mld_opdr_key = t.fac_tracking_refkey --AND t.fac_srtnotificatie_key = 76 -- ORDAFR --AND t.fac_tracking_datum > TRUNC (SYSDATE, 'mm') -- Actual = deze maand Afgerond (en nog niet Verwerkt) AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.cnt_contract_key = c.cnt_contract_key AND c.ins_discipline_key = 523 -- Variabele contracten AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND o.mld_opdr_key = nr.mld_opdr_key(+) GROUP BY pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), 'O', b.prs_bedrijf_naam, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) UNION ALL -- Variabele kosten uit ACTUAL opdrachten voor Wiltec (niet gekoppeld aan variabel contract)! SELECT pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand ORDAFR, volgende maand factureren (achteraf) 'O' broc_flag, b.prs_bedrijf_naam, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, COUNT ( * ) aantal, SUM (o.mld_opdr_kosten) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, cnt_contract c, cnt_contract mc, prs_bedrijf b, prs_contactpersoon cp, prs_perslid pcp --(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde -- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k -- WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key -- AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 --AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND o.cnt_contract_key IS NULL -- Niet gekoppeld aan een contract! AND EXISTS (SELECT 1 FROM mld_melding WHERE mld_melding_key = o.mld_melding_key AND mld_stdmelding_key = 1781) -- Bedrijfskleding bestellen AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_uitvoerende_keys = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 31041 -- Wiltec AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) --AND o.mld_opdr_key = nr.mld_opdr_key(+) AND NOT EXISTS -- Geen variabel contract met een hoger nummer! (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern) GROUP BY pcp.prs_afdeling_key, TO_CHAR (SYSDATE, 'yyyy-mm'), 'O', b.prs_bedrijf_naam, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer; -- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van -- de maand; voor de output geldt: -- Dat deze de actual vaste contractkosten toont (over afgelopen maand). -- Dat deze de actual variabele bestelopdrachtkosten toont (voor 1e ORDAFR). -- Dat deze de actual variabele reserveringskosten toont (over afgelopen maand), behalve verbruiksartikelen met een volgnummer > 900! -- Dat deze de actual variabele opdrachtkosten toont (voor 1e ORDAFR). -- Dat deze tot de 10e van de huidige maand alleen nog door Yask wijzigbaar is. CREATE OR REPLACE VIEW kfsg_v_actual_fact -- Tbv. FACT_EXPORT! ( prs_afdeling_key, maand, prs_bedrijf_key, prs_bedrijf_naam, cp_perslid_key, cp_aanhef, cp_naam, cp_email, cnt_contract_key, contractnr, beschrijving, inkoopordernr, cm_aanhef, cm_naam, bes_bestelopdr_key, res_rsv_ruimte_key, mld_opdr_key, bro_id, aantal, kosten ) AS SELECT c.prs_afdeling_key, -- Vaste contractkosten over de ACTUAL termijn TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Afgelopen maand deze maand factureren (achteraf) c.prs_bedrijf_key, c.prs_bedrijf_naam, c.prs_perslid_key, c.cp_aanhef, c.cp_naam, c.cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, -- Uit afgelopen maand lopend contract, anders geen vaste kosten c.cm_aanhef, c.cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, NULL mld_opdr_key, NULL bro_id, 0 aantal, ROUND ( DECODE (COALESCE (c.cnt_contract_termijnkosten, 0), 0, c.cnt_contract_kosten / 12, c.cnt_contract_termijnkosten), 2) + fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0')) + fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0')) kosten -- Wat als looptijd < jaar? FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_afdeling_key, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, c.cnt_contract_kosten, c.cnt_contract_termijnkosten, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam FROM cnt_v_aanwezigcontract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm WHERE c.ins_discipline_key = 522 -- Vaste contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND NOT EXISTS -- Nog geen entry in eigen tabel (SELECT 1 FROM fac_usrdata WHERE fac_usrtab_key = 161 -- VasteKostenMnd AND fac_usrdata_code = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') || '/' || c.cnt_contract_key) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key) c LEFT JOIN cnt_kenmerkcontract ce ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten AND c.cnt_contract_key = ce.cnt_contract_key LEFT JOIN cnt_kenmerkcontract bm ON bm.cnt_kenmerk_key = -1 -- Bonus/malus AND c.cnt_contract_key = bm.cnt_contract_key UNION ALL -- Bestelopdrachtkosten SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Afgelopen maand deze maand factureren (achteraf) b.prs_bedrijf_key, b.prs_bedrijf_naam bedrijf, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, bo.bes_bestelopdr_key, NULL res_rsv_ruimte_key, NULL mld_opdr_key, bo.bes_bestelopdr_id bro_id, 1 aantal, SUM ((boi.bes_bestelopdr_item_aantal * COALESCE (boi.bes_bestelopdr_item_inkprijs, boi.bes_bestelopdr_item_prijs)) + COALESCE (bo.bes_bestelopdr_korting, 0) + COALESCE (bo.bes_bestelopdr_levkosten, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bbi, prs_bedrijf b, cnt_v_aanwezigcontract c, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm WHERE bo.bes_bestelopdr_status = 6 -- Bestelopdracht Geleverd (en nog niet Verwerkt) AND fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Afgelopen maand Geleverd (en nog niet Verwerkt) --fac.gettrackingdate ('BESOTV', bbi.bes_bestelling_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Afgelopen maand Ontvangen (en nog niet Verwerkt?) AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bo.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE)) AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern) GROUP BY pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', ''), DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam, pcp.prs_perslid_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', ''), DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam, bo.bes_bestelopdr_key, NULL, NULL, bo.bes_bestelopdr_id, 1 UNION ALL -- Reserveringskosten SELECT x.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Afgelopen maand deze maand factureren (achteraf) x.prs_bedrijf_key, x.prs_bedrijf_naam bedrijf, x.prs_perslid_key, x.cp_aanhef, x.cp_naam, x.cp_email, x.cnt_contract_key, x.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten x.cnt_contract_omschrijving, x.cnt_contract_nummer, x.cm_aanhef, x.cm_naam, NULL bes_bestelopdr_key, x.res_rsv_ruimte_key, NULL mld_opdr_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) bro_id, 1 aantal, SUM (COALESCE (verw_prijs, prijs, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_afdeling_key, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, --rra.res_rsv_artikel_aantal res_aantal, --LTRIM (rra.res_artikel_omschrijving) || ' [' || TO_CHAR (res_rsv_artikel_levering, 'dd-mm-yyyy') || ']' res_voorziening, --rra.res_rsv_artikel_levering reslev, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * rra.res_artikel_prijs prijs, rra.btw FROM res_rsv_ruimte rrr, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_allonroerendgoed aog, (SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_levering, rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal, ra.res_artikel_prijs, DECODE (COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw), NULL, 'VH', 21, 'VH', 'VL') btw, ra.res_discipline_key, ra.res_artikel_omschrijving, ra.res_artikel_eenheid FROM res_v_aanwezigrsv_artikel rra, res_artikel ra WHERE rra.res_rsv_artikel_verwerkt IS NULL AND rra.res_rsv_artikel_dirtlevel = 0 --AND rra.res_rsv_artikel_levering BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Afgelopen maand Geleverd (en nog niet Verwerkt) AND rra.res_rsv_artikel_levering BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm') AND TRUNC (SYSDATE, 'mm') -- Actual = Afgelopen maand Geleverd (en nog niet Verwerkt) AND rra.res_artikel_key = ra.res_artikel_key AND COALESCE (ra.res_artikel_volgnummer, 0) <= 900) rra, -- KFSG#74625: Voor facturatie uitsluiten artikelen met een volgnummer >900! res_v_aanwezigdiscipline rd, res_disc_params dp, prs_bedrijf b, cnt_v_aanwezigcontract c, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_discipline_key = rd.ins_discipline_key AND rd.ins_discipline_key = dp.res_ins_discipline_key AND dp.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten --AND c.cnt_contract_status = 0 -- NIET Gesloten AND c.cnt_contract_omschrijving NOT LIKE '%BPS%' -- BPS contracten worden gebruikt om mld_opdrachten te koppelen AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM cnt_v_aanwezigcontract c2 WHERE c2.ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (c2.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c2.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c2.cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND c2.cnt_contract_omschrijving NOT LIKE '%BPS%' -- BPS contracten worden gebruikt om mld_opdrachten te koppelen AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern)) x GROUP BY x.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), x.prs_bedrijf_key, x.prs_bedrijf_naam, x.prs_perslid_key, x.cp_aanhef, x.cp_naam, x.cp_email, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.cnt_contract_nummer, x.cm_aanhef, x.cm_naam, x.res_rsv_ruimte_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr), 1 UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf) b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, 1 aantal, o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, --fac_tracking t, cnt_contract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 --AND o.mld_opdr_key = t.fac_tracking_refkey --AND t.fac_srtnotificatie_key = 76 -- ORDAFR --AND t.fac_tracking_datum > TO_DATE ('20190101', 'yyyymmdd') --AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm') AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.cnt_contract_key = c.cnt_contract_key AND c.ins_discipline_key = 523 -- Variabele contracten AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND o.mld_opdr_key = nr.mld_opdr_key(+) UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten-DISPUUT SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf) b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, COALESCE (c.cnt_contract_nummer_intern, '') || '/DISPUUT' cnt_contract_nummer_intern, c.cnt_contract_omschrijving, COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, 1 aantal, o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, cnt_contract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND EXISTS -- Gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.cnt_contract_key = c.cnt_contract_key AND c.ins_discipline_key = 523 -- Variabele contracten AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND o.mld_opdr_key = nr.mld_opdr_key(+) UNION ALL -- Variabele kosten uit ACTUAL opdrachten voor Wiltec (niet gekoppeld aan variabel contract)! SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf) b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, 1 aantal, o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, cnt_contract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm --(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde -- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k -- WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key -- AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20210501', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND o.cnt_contract_key IS NULL -- Niet gekoppeld aan een contract! AND EXISTS (SELECT 1 FROM mld_melding WHERE mld_melding_key = o.mld_melding_key AND mld_stdmelding_key = 1781) -- Bedrijfskleding bestellen AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_uitvoerende_keys = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 31041 -- Wiltec AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key --AND o.mld_opdr_key = nr.mld_opdr_key(+) AND NOT EXISTS -- Geen variabel contract met een hoger nummer! (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern) UNION ALL -- Variabele kosten uit ACTUAL opdrachten voor Wiltec-DISPUUT (niet gekoppeld aan variabel contract)! SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf) b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, COALESCE (c.cnt_contract_nummer_intern, '') || '/DISPUUT' cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, 1 aantal, o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, cnt_contract c, prs_bedrijf b, cnt_contract mc, prs_contactpersoon cp, prs_perslid pcp, prs_perslid pcm --(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde -- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k -- WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key -- AND k.mld_srtkenmerk_key = 961) nr -- Inkoopnummer WHERE o.mld_statusopdr_key = 9 AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20210501', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt) AND o.cnt_contract_key IS NULL -- Niet gekoppeld aan een contract! AND EXISTS (SELECT 1 FROM mld_melding WHERE mld_melding_key = o.mld_melding_key AND mld_stdmelding_key = 1781) -- Bedrijfskleding bestellen AND EXISTS -- Gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND o.mld_uitvoerende_keys = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 31041 -- Wiltec AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key --AND o.mld_opdr_key = nr.mld_opdr_key(+) AND NOT EXISTS -- Geen variabel contract met een hoger nummer! (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TRUNC (cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1 AND cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1 AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern); -- Te exporteren/bevriezen totalen over voorgaande maand (vast en variabel). CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, broc_flag, --hide_f_bedrijf_key, fclt_f_leverancier, --hide_f_contract_key, contractnr, beschrijving, inkoopordernr, aantal, kosten ) AS SELECT prs_afdeling_key, maand, DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag, --prs_bedrijf_key, prs_bedrijf_naam, --cnt_contract_key, contractnr, beschrijving, inkoopordernr, SUM (aantal), SUM (kosten) FROM kfsg_v_actual_fact GROUP BY prs_afdeling_key, maand, DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'), --prs_bedrijf_key, prs_bedrijf_naam, --cnt_contract_key, contractnr, beschrijving, inkoopordernr; -- Te exporteren/bevriezen variabele bestelopdrachtkosten over voorgaande maand (details). CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_bes ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, bes_bestelling_key, bes_bestelopdr_key, bes_id, plaats, ruimte, catalogus, besteldatum, leverdatum, bestellingstatus, -- Not used bestelopdrachtstatus, afhandeling, -- Not used fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district ) AS SELECT v.prs_afdeling_key, v.maand, x.bes_bestelling_key, v.bes_bestelopdr_key, v.bro_id bes_id, COALESCE (l.alg_locatie_code, ma.mld_adres_naam) plaatsaanduiding, x.bes_bestelling_plaats ruimte, x.ins_discipline_omschrijving, bo.bes_bestelopdr_datum, bo.bes_bestelopdr_leverdatum, -- Of uit FAC_TRACKING-tabel? bs.bes_bestellingstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? bos.bes_bestelopdrstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? COALESCE (bo.bes_bestelopdr_opmerking, bo.bes_bestelopdr_delivery_opmerk) afhandeling, v.prs_bedrijf_naam, v.kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving FROM kfsg_v_actual_fact v, bes_bestelopdr bo, (SELECT DISTINCT boi.bes_bestelopdr_key, b.bes_bestelling_key, b.mld_adres_key_lev, b.bes_bestelling_plaats, b.bes_bestelling_datum, b.bes_bestelling_status, td.ins_discipline_omschrijving FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline td WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bbi.bes_bestelling_key = b.bes_bestelling_key AND bbi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key) x, bes_bestellingstatuses bs, bes_bestelopdrstatuses bos, mld_adres ma, alg_locatie l, alg_district d WHERE v.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key AND x.bes_bestelling_status = bs.bes_bestellingstatuses_key(+) AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+) AND x.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+); -- Te exporteren/bevriezen variabele reserveringskosten over voorgaande maand (details). CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_res ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, res_reservering_key, res_rsv_ruimte_key, res_id, plaats, -- Gebouw ruimte, activiteit, omschrijving, van_datum, -- Not used van_tijd, tot_tijd, status, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district ) AS SELECT v.prs_afdeling_key, v.maand, rrr.res_reservering_key, v.res_rsv_ruimte_key, v.bro_id res_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, COALESCE ((SELECT res_ruimte_nr FROM res_ruimte WHERE res_ruimte_key = rro.res_ruimte_key), og.alg_plaatsaanduiding) ruimte, ra.res_activiteit_omschrijving, rrr.res_rsv_ruimte_omschrijving, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rs.res_status_bo_omschrijving, v.prs_bedrijf_naam, v.kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving FROM kfsg_v_actual_fact v, res_rsv_ruimte rrr, res_activiteit ra, res_status_bo rs, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_onroerendgoed_gegevens og, alg_locatie l, alg_district d WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_activiteit_key = ra.res_activiteit_key AND rrr.res_status_bo_key = rs.res_status_bo_key(+) -- Status van onderliggende artikelen/delen betrekken? AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = og.alg_ruimte_key AND og.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+); -- Te exporteren/bevriezen variabele opdrachtkosten over voorgaande maand (details). CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_mld ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, prio, mld_melding_key, mld_opdr_key, opdr_id, plaats, -- Gebouw ruimte, mld_stdmelding_oms, opdrachttype, omschrijving, begindatum, einddatum, meldingstatus, opdrachtstatus, afhandeling, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district ) AS SELECT v.prs_afdeling_key, v.maand, TO_CHAR (m.mld_melding_spoed), m.mld_melding_key, o.mld_opdr_key, COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte, sm.mld_stdmelding_omschrijving, ot.mld_typeopdr_omschrijving, o.mld_opdr_omschrijving, o.mld_opdr_datumbegin begindatum, --TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum, fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum, ms.mld_statuses_omschrijving, os.mld_statusopdr_omschrijving, o.mld_opdr_opmerking, v.prs_bedrijf_naam, v.kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving FROM kfsg_v_actual_fact v, mld_opdr o, mld_statusopdr os, mld_typeopdr ot, mld_melding m, mld_statuses ms, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, alg_locatie l, alg_district d, alg_v_onroerendgoed_gegevens og WHERE v.mld_opdr_key = o.mld_opdr_key AND o.mld_statusopdr_key = os.mld_statusopdr_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+); -- Frozen regels en basis voor oa. de notificatie op de 11e van de maand; voor -- de output geldt: -- Dat deze de frozen vaste contractkosten toont. -- Dat deze de frozen variabele opdrachtkosten toont. -- Dat deze de frozen variabele reserveringskosten toont. -- Dat de laatst bevroren maand per bedrijf op de 11e wordt genotificeerd (via -- extra_key-principe) met daarin de bedragen gegroepeerd per inkoopordernr. CREATE OR REPLACE VIEW kfsg_v_frozen_fact ( prs_afdeling_key, maand, --prs_bedrijf_key, extra_key, -- Moet zo heten! prs_bedrijf_naam, cp_perslid_key, cp_aanhef, cp_naam, cp_email, cnt_contract_key, contractnr, beschrijving, inkoopordernr, cm_aanhef, cm_naam, bes_bestelopdr_key, res_rsv_ruimte_key, mld_opdr_key, bro_id, factuur_naar_sg, aantal, kosten, bps ) AS SELECT pcp.prs_afdeling_key, -- Vaste contractkosten over de FROZEN termijnen SUBSTR (ud.fac_usrdata_code, 1, 7) maand, -- yyyy-mm b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, NULL mld_opdr_key, NULL bro_id, DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg, 0 aantal, ud.fac_usrdata_prijs kosten, 'X' bps -- X=Don't care! FROM fac_usrdata ud, cnt_contract c, prs_bedrijf b, cnt_contract mc, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp, prs_perslid pcp, prs_perslid pcm, (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG! WHERE ud.fac_usrtab_key = 161 -- VasteKostenMnd AND SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1) = TO_CHAR (c.cnt_contract_key) --AND SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) = TO_CHAR (b.prs_bedrijf_key) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND b.prs_bedrijf_key = kl.prs_link_key(+) UNION ALL -- Variabele kosten uit FROZEN bestelopdrachten op variabele contracten (via bes_bestelling_ordernr!) SELECT pcp.prs_afdeling_key, TO_CHAR (TRUNC (fac.gettrackingdate ('BES2VE', bo.bes_bestelopdr_key), 'mm') - 1, 'yyyy-mm') maand, b.prs_bedrijf_key, b.prs_bedrijf_naam bedrijf, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen variabele kosten c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, bo.bes_bestelopdr_key, NULL res_rsv_ruimte_key, NULL mld_opdr_key, bo.bes_bestelopdr_id bro_id, DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg, 1 aantal, SUM ((boi.bes_bestelopdr_item_aantal * COALESCE (boi.bes_bestelopdr_item_inkprijs, boi.bes_bestelopdr_item_prijs)) + COALESCE (bo.bes_bestelopdr_korting, 0) + COALESCE (bo.bes_bestelopdr_levkosten, 0)) kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch? DECODE (c.cnt_contract_nummer_intern, 30, 'O', 'X') bps -- 30=Maatwerk-contract met Eurest Catering FROM bes_bestelling b, bes_bestelling_item bbi, bes_bestelopdr_item boi, bes_bestelopdr bo, cnt_v_aanwezigcontract c, prs_bedrijf b, cnt_contract mc, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp, prs_perslid pcp, prs_perslid pcm, (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG! WHERE b.bes_bestelling_ordernr IS NOT NULL -- Gefactureerd! AND b.bes_bestelling_key = bbi.bes_bestelling_key AND bbi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bo.bes_bestelopdr_status = 7 -- Verwerkt (TODO: Soms >1 bestelopdrachten en niet allemaal Verwerkt???) --AND bo.prs_bedrijf_key = b.prs_bedrijf_key AND SUBSTR (b.bes_bestelling_ordernr, INSTR (b.bes_bestelling_ordernr, '/') + 1) = TO_CHAR (c.cnt_contract_key) --AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND b.prs_bedrijf_key = kl.prs_link_key(+) GROUP BY pcp.prs_afdeling_key, TO_CHAR (TRUNC (fac.gettrackingdate ('BES2VE', bo.bes_bestelopdr_key), 'mm') - 1, 'yyyy-mm'), b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', ''), DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam, pcp.prs_perslid_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', ''), DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam, bo.bes_bestelopdr_key, NULL, NULL, bo.bes_bestelopdr_id, DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'), 1, DECODE (c.cnt_contract_nummer_intern, 30, 'O', 'X') UNION ALL -- Variabele kosten uit FROZEN reserveringen op variabele contracten (via fin_verkoopfactuur_id!) SELECT x.prs_afdeling_key, SUBSTR (x.fin_verkoopfactuur_maand, 1, 4) || '-' || SUBSTR (x.fin_verkoopfactuur_maand, 5, 2) maand, x.prs_bedrijf_key, x.prs_bedrijf_naam bedrijf, x.prs_perslid_key, x.cp_aanhef, x.cp_naam, x.cp_email, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.cnt_contract_nummer, x.cm_aanhef, x.cm_naam, NULL bes_bestelopdr_key, x.res_rsv_ruimte_key, NULL mld_opdr_key, x.fin_verkoopfactuur_omschr bro_id, DECODE (x.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg, 1 aantal, SUM (COALESCE (x.verw_prijs, x.prijs, 0)) kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch? DECODE (x.cnt_contract_nummer_intern, 30, 'O', 'X') bps -- 30=Maatwerk-contract met Eurest Catering FROM (SELECT pcp.prs_afdeling_key, vf.fin_verkoopfactuur_maand, b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email cp_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE ( pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, rra.res_rsv_ruimte_key, vf.fin_verkoopfactuur_omschr, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs, --DECODE (COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw), NULL, 'VH', 21, 'VH', 'VL') -- btw, kl.prs_kenmerklink_waarde FROM fin_verkoopfactuur vf, res_v_aanwezigrsv_artikel rra, res_artikel ra, cnt_v_aanwezigcontract c, prs_bedrijf b, cnt_contract mc, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp, prs_perslid pcp, prs_perslid pcm, (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1040) kl -- Factuur rechtstreeks naar SG! WHERE vf.fin_verkoopfactuur_refkey = rra.res_rsv_artikel_key --AND rra.res_status_bo_key = 6 -- Verwerkt (kan niet anders) --AND rra.res_rsv_artikel_verwerkt IS NOT NULL -- Verwerkt (kan niet anders) --AND rra.res_rsv_artikel_levering > TO_DATE ('20190101', 'yyyymmdd') -- Kan niet anders AND rra.res_artikel_key = ra.res_artikel_key AND fac.safe_to_number (vf.fin_verkoopfactuur_id) = c.cnt_contract_key --AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND b.prs_bedrijf_key = kl.prs_link_key(+)) x GROUP BY x.prs_afdeling_key, SUBSTR (x.fin_verkoopfactuur_maand, 1, 4) || '-' || SUBSTR (x.fin_verkoopfactuur_maand, 5, 2), x.prs_bedrijf_key, x.prs_bedrijf_naam, x.prs_perslid_key, x.cp_aanhef, x.cp_naam, x.cp_email, x.cnt_contract_key, x.cnt_contract_nummer_intern, x.cnt_contract_omschrijving, x.cnt_contract_nummer, x.cm_aanhef, x.cm_naam, NULL, x.res_rsv_ruimte_key, NULL, x.fin_verkoopfactuur_omschr, DECODE (x.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'), 1, DECODE (x.cnt_contract_nummer_intern, 30, 'O', 'X') UNION ALL -- Variabele kosten uit FROZEN opdrachten op variabele contracten SELECT pcp.prs_afdeling_key, o.mld_opdr_ordernr maand, b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, COALESCE (nr.mld_kenmerkopdr_waarde, c.cnt_contract_nummer) cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'), 1 aantal, o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch? DECODE (c.cnt_contract_nummer_intern, 30, DECODE (m.mld_alg_onroerendgoed_keys, 8023, 'B', 'O'), 'X') bps -- 30=Maatwerk-contract met Eurest Catering/8023=Restaurant BPS (TERM-T1-3-R3236) FROM mld_opdr o, cnt_contract c, prs_bedrijf b, cnt_contract mc, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp, prs_perslid pcp, prs_perslid pcm, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 961) nr, -- Inkoopnummer (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1040) kl, -- Factuur rechtstreeks naar SG! mld_melding m WHERE o.mld_opdr_ordernr IS NOT NULL -- Gefactureerd! --AND o.mld_statusopdr_key = 7 -- Verwerkt (kan niet anders) AND o.cnt_contract_key = c.cnt_contract_key --AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders) AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key AND o.mld_opdr_key = nr.mld_opdr_key(+) AND b.prs_bedrijf_key = kl.prs_link_key(+) AND o.mld_melding_key = m.mld_melding_key UNION ALL -- Variabele kosten uit FROZEN opdrachten voor Wiltec (niet gekoppeld aan variabel contract)! SELECT pcp.prs_afdeling_key, o.mld_opdr_ordernr maand, b.prs_bedrijf_key, b.prs_bedrijf_naam, pcp.prs_perslid_key, DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cp_aanhef, DECODE ( COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcp.prs_perslid_voorletters, SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcp.prs_perslid_tussenvoegsel, NULL, NULL, pcp.prs_perslid_tussenvoegsel || ' ') || pcp.prs_perslid_naam cp_naam, pcp.prs_perslid_email, c.cnt_contract_key, c.cnt_contract_nummer_intern, c.cnt_contract_omschrijving, c.cnt_contract_nummer, DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '') cm_aanhef, DECODE ( COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1)), NULL, NULL, COALESCE (pcm.prs_perslid_voorletters, SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.') || ' ') || DECODE (pcm.prs_perslid_tussenvoegsel, NULL, NULL, pcm.prs_perslid_tussenvoegsel || ' ') || pcm.prs_perslid_naam cm_naam, NULL bes_bestelopdr_key, NULL res_rsv_ruimte_key, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id, DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'), 1 aantal, o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch? DECODE (c.cnt_contract_nummer_intern, 30, DECODE (m.mld_alg_onroerendgoed_keys, 8023, 'B', 'O'), 'X') bps -- 30=Maatwerk-contract met Eurest Catering/8023=Restaurant BPS (TERM-T1-3-R3236) FROM mld_opdr o, cnt_contract c, prs_bedrijf b, cnt_contract mc, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp, prs_perslid pcp, prs_perslid pcm, --(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde -- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k -- WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key -- AND k.mld_srtkenmerk_key = 961) nr, -- Inkoopnummer (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1040) kl, -- Factuur rechtstreeks naar SG! mld_melding m WHERE o.mld_opdr_ordernr IS NOT NULL -- Gefactureerd! --AND o.mld_statusopdr_key = 7 -- Verwerkt (kan niet anders) AND o.cnt_contract_key IS NULL -- Niet gekoppeld aan een contract! AND o.mld_uitvoerende_keys = c.cnt_prs_bedrijf_key AND c.ins_discipline_key = 523 -- Variabele contracten AND TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy-mm') <= o.mld_opdr_ordernr AND TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy-mm') >= o.mld_opdr_ordernr AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 31041 -- Wiltec AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+) AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+) AND cp.prs_perslid_key = pcp.prs_perslid_key(+) AND c.prs_perslid_key_beh = pcm.prs_perslid_key --AND o.mld_opdr_key = nr.mld_opdr_key(+) AND b.prs_bedrijf_key = kl.prs_link_key(+) AND o.mld_melding_key = m.mld_melding_key AND NOT EXISTS -- Betreffende maand lopend contract! (SELECT 1 FROM cnt_v_aanwezigcontract WHERE ins_discipline_key = 523 -- Variabele contracten --AND cnt_contract_status = 0 -- NIET Gesloten AND TO_CHAR (cnt_contract_looptijd_van, 'yyyy-mm') <= o.mld_opdr_ordernr AND TO_CHAR (cnt_contract_looptijd_tot, 'yyyy-mm') >= o.mld_opdr_ordernr AND cnt_prs_bedrijf_key = c.cnt_prs_bedrijf_key AND cnt_contract_nummer_intern > c.cnt_contract_nummer_intern); -- Geexporteerde/bevroren totalen over voorgaande maanden (vast en variabel). CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_tot ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, broc_flag, --hide_f_bedrijf_key, fclt_f_leverancier, --hide_f_contract_key, contractnr, beschrijving, inkoopordernr, aantal, kosten, bps ) AS -- Vaste contractkosten over de FROZEN termijnen SELECT prs_afdeling_key, maand, DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag, --prs_bedrijf_key, prs_bedrijf_naam, --cnt_contract_key, contractnr, beschrijving, inkoopordernr, SUM (aantal), SUM (kosten), bps FROM kfsg_v_frozen_fact GROUP BY prs_afdeling_key, maand, DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'), --prs_bedrijf_key, prs_bedrijf_naam, --cnt_contract_key, contractnr, beschrijving, inkoopordernr, bps; -- KFSG#65747: Rapportage tbv. leverancier-contactpersonen! CREATE OR REPLACE VIEW kfsg_v_rap_frozen_tot_lev ( fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersoon! maand, broc_flag, fclt_f_leverancier, contractnr, beschrijving, inkoopordernr, aantal, kosten, bps ) AS -- Vaste contractkosten over de FROZEN termijnen SELECT cp.prs_perslid_key, v.maand, DECODE (v.bes_bestelopdr_key, NULL, DECODE (v.res_rsv_ruimte_key, NULL, DECODE (v.mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag, v.prs_bedrijf_naam, v.contractnr, v.beschrijving, v.inkoopordernr, SUM (v.aantal), SUM (COALESCE (v.kosten, 0)), v.bps FROM kfsg_v_frozen_fact v, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp WHERE v.extra_key = cp.prs_bedrijf_key AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor! GROUP BY cp.prs_perslid_key, v.maand, DECODE (v.bes_bestelopdr_key, NULL, DECODE (v.res_rsv_ruimte_key, NULL, DECODE (v.mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'), v.prs_bedrijf_naam, v.contractnr, v.beschrijving, v.inkoopordernr, v.bps; -- Geexporteerde/bevroren variabele bestelopdrachtkosten over voorgaande maanden (details). CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_bes ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, bes_bestelling_key, bes_bestelopdr_key, bes_id, plaats, ruimte, catalogus, besteldatum, leverdatum, bestellingstatus, -- Not used bestelopdrachtstatus, afhandeling, -- Not used fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT v.prs_afdeling_key, v.maand, x.bes_bestelling_key, v.bes_bestelopdr_key, v.bro_id bes_id, COALESCE (l.alg_locatie_code, ma.mld_adres_naam) plaatsaanduiding, x.bes_bestelling_plaats ruimte, x.ins_discipline_omschrijving, bo.bes_bestelopdr_datum, bo.bes_bestelopdr_leverdatum, -- Of uit FAC_TRACKING-tabel? bs.bes_bestellingstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? bos.bes_bestelopdrstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? COALESCE (bo.bes_bestelopdr_opmerking, bo.bes_bestelopdr_delivery_opmerk) afhandeling, v.prs_bedrijf_naam, v.kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, bes_bestelopdr bo, (SELECT DISTINCT boi.bes_bestelopdr_key, b.bes_bestelling_key, b.mld_adres_key_lev, b.bes_bestelling_plaats, b.bes_bestelling_datum, b.bes_bestelling_status, td.ins_discipline_omschrijving FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline td WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bbi.bes_bestelling_key = b.bes_bestelling_key AND bbi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key) x, bes_bestellingstatuses bs, bes_bestelopdrstatuses bos, mld_adres ma, alg_locatie l, alg_district d WHERE v.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key AND x.bes_bestelling_status = bs.bes_bestellingstatuses_key(+) AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+) AND x.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+); -- KFSG#65747: Rapportage tbv. leverancier-contactpersonen! CREATE OR REPLACE VIEW kfsg_v_rap_frozen_bes_lev ( fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen! maand, bes_bestelling_key, bes_bestelopdr_key, bes_id, plaats, ruimte, catalogus, besteldatum, leverdatum, bestellingstatus, -- Not used bestelopdrachtstatus, afhandeling, -- Not used fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT cp.prs_perslid_key, v.maand, x.bes_bestelling_key, v.bes_bestelopdr_key, v.bro_id bes_id, COALESCE (l.alg_locatie_code, ma.mld_adres_naam) plaatsaanduiding, x.bes_bestelling_plaats ruimte, x.ins_discipline_omschrijving, bo.bes_bestelopdr_datum, bo.bes_bestelopdr_leverdatum, -- Of uit FAC_TRACKING-tabel? bs.bes_bestellingstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? bos.bes_bestelopdrstatuses_omschr, -- Status van onderliggende artikelen/delen betrekken? COALESCE (bo.bes_bestelopdr_opmerking, bo.bes_bestelopdr_delivery_opmerk) afhandeling, v.prs_bedrijf_naam, COALESCE (v.kosten, 0), v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, bes_bestelopdr bo, (SELECT DISTINCT boi.bes_bestelopdr_key, b.bes_bestelling_key, b.mld_adres_key_lev, b.bes_bestelling_plaats, b.bes_bestelling_datum, b.bes_bestelling_status, td.ins_discipline_omschrijving FROM bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling b, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline td WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key AND bbi.bes_bestelling_key = b.bes_bestelling_key AND bbi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = td.ins_discipline_key) x, bes_bestellingstatuses bs, bes_bestelopdrstatuses bos, mld_adres ma, alg_locatie l, alg_district d, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp WHERE v.bes_bestelopdr_key = bo.bes_bestelopdr_key AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key AND x.bes_bestelling_status = bs.bes_bestellingstatuses_key(+) AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+) AND x.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+) AND v.extra_key = cp.prs_bedrijf_key AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor! ; -- Geexporteerde/bevroren variabele reserveringskosten over voorgaande maanden (details). CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_res ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, res_reservering_key, res_rsv_ruimte_key, res_id, plaats, -- Gebouw ruimte, activiteit, omschrijving, van_datum, -- Not used van_tijd, tot_tijd, status, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT v.prs_afdeling_key, v.maand, rrr.res_reservering_key, v.res_rsv_ruimte_key, v.bro_id res_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, COALESCE ((SELECT res_ruimte_nr FROM res_ruimte WHERE res_ruimte_key = rro.res_ruimte_key), og.alg_plaatsaanduiding) ruimte, ra.res_activiteit_omschrijving, rrr.res_rsv_ruimte_omschrijving, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rs.res_status_bo_omschrijving, v.prs_bedrijf_naam, v.kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, res_rsv_ruimte rrr, res_activiteit ra, res_status_bo rs, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_onroerendgoed_gegevens og, alg_locatie l, alg_district d WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_activiteit_key = ra.res_activiteit_key AND rrr.res_status_bo_key = rs.res_status_bo_key(+) -- Status van onderliggende artikelen/delen betrekken? AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = og.alg_ruimte_key AND og.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+); -- KFSG#65747: Rapportage tbv. leverancier-contactpersonen! CREATE OR REPLACE VIEW kfsg_v_rap_frozen_res_lev ( fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen! maand, res_reservering_key, res_rsv_ruimte_key, res_id, plaats, -- Gebouw ruimte, activiteit, omschrijving, van_datum, -- Not used van_tijd, tot_tijd, status, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT cp.prs_perslid_key, v.maand, rrr.res_reservering_key, v.res_rsv_ruimte_key, v.bro_id res_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, COALESCE ((SELECT res_ruimte_nr FROM res_ruimte WHERE res_ruimte_key = rro.res_ruimte_key), og.alg_plaatsaanduiding) ruimte, ra.res_activiteit_omschrijving, rrr.res_rsv_ruimte_omschrijving, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rs.res_status_bo_omschrijving, v.prs_bedrijf_naam, COALESCE (v.kosten, 0), v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, res_rsv_ruimte rrr, res_activiteit ra, res_status_bo rs, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_onroerendgoed_gegevens og, alg_locatie l, alg_district d, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_activiteit_key = ra.res_activiteit_key AND rrr.res_status_bo_key = rs.res_status_bo_key(+) -- Status van onderliggende artikelen/delen betrekken? AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = og.alg_ruimte_key AND og.alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+) AND v.extra_key = cp.prs_bedrijf_key AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor! ; -- Geexporteerde/bevroren variabele opdrachtkosten over voorgaande maanden (details). CREATE OR REPLACE VIEW kfsg_v_rap_frozen_fact_mld ( fclt_3d_afdeling_key, -- Kunnen beperken per leverancier! maand, prio, mld_melding_key, mld_opdr_key, opdr_id, plaats, -- Gebouw ruimte, mld_stdmelding_oms, opdrachttype, omschrijving, begindatum, einddatum, meldingstatus, opdrachtstatus, afhandeling, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT v.prs_afdeling_key, v.maand, TO_CHAR (m.mld_melding_spoed), m.mld_melding_key, o.mld_opdr_key, COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte, sm.mld_stdmelding_omschrijving, ot.mld_typeopdr_omschrijving, o.mld_opdr_omschrijving, o.mld_opdr_datumbegin begindatum, --TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum, fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum, ms.mld_statuses_omschrijving, os.mld_statusopdr_omschrijving, o.mld_opdr_opmerking, v.prs_bedrijf_naam, o.mld_opdr_kosten, v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, mld_opdr o, mld_statusopdr os, mld_typeopdr ot, mld_melding m, mld_statuses ms, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, alg_locatie l, alg_district d, alg_v_onroerendgoed_gegevens og WHERE v.mld_opdr_key = o.mld_opdr_key AND o.mld_statusopdr_key = os.mld_statusopdr_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+); -- KFSG#65747: Rapportage tbv. leverancier-contactpersonen! CREATE OR REPLACE VIEW kfsg_v_rap_frozen_mld_lev ( fclt_3d_user_key, -- Kunnen beperken per leverancier-contactpersonen! maand, prio, mld_melding_key, mld_opdr_key, opdr_id, plaats, -- Gebouw ruimte, mld_stdmelding_oms, opdrachttype, omschrijving, begindatum, einddatum, meldingstatus, opdrachtstatus, afhandeling, fclt_f_leverancier, kosten, fclt_f_contractnr, fclt_f_inkoopordernr, fclt_x_district, bps ) AS SELECT cp.prs_perslid_key, v.maand, TO_CHAR (m.mld_melding_spoed), m.mld_melding_key, o.mld_opdr_key, COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id, DECODE ( og.alg_type, 'R', og.alg_gebouw_code, 'V', og.alg_gebouw_code, 'G', og.alg_gebouw_code, 'T', og.alg_terreinsector_code, l.alg_locatie_code) plaatsaanduiding, DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte, sm.mld_stdmelding_omschrijving, ot.mld_typeopdr_omschrijving, o.mld_opdr_omschrijving, o.mld_opdr_datumbegin begindatum, --TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum, fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum, ms.mld_statuses_omschrijving, os.mld_statusopdr_omschrijving, o.mld_opdr_opmerking, v.prs_bedrijf_naam, COALESCE (o.mld_opdr_kosten, 0), v.contractnr, v.inkoopordernr, d.alg_district_omschrijving, v.bps FROM kfsg_v_frozen_fact v, mld_opdr o, mld_statusopdr os, mld_typeopdr ot, mld_melding m, mld_statuses ms, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, alg_locatie l, alg_district d, alg_v_onroerendgoed_gegevens og, (SELECT * FROM prs_contactpersoon WHERE prs_contactpersoon_verwijder IS NULL) cp WHERE v.mld_opdr_key = o.mld_opdr_key AND o.mld_statusopdr_key = os.mld_statusopdr_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_melding_key = m.mld_melding_key AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_alg_locatie_key = l.alg_locatie_key(+) AND l.alg_district_key = d.alg_district_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND v.extra_key = cp.prs_bedrijf_key AND cp.prs_perslid_key IS NOT NULL -- Account in Facilitor! ; CREATE OR REPLACE PROCEDURE kfsg_select_fact (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS -- Bevries vaste contractkosten in eigen tabel. CURSOR c1 IS SELECT DISTINCT '[' || TO_CHAR (v.cnt_contract_key) || '] ' aanduiding, v.maand, v.cnt_contract_key, v.prs_bedrijf_key, v.inkoopordernr, v.kosten FROM kfsg_v_actual_fact v WHERE v.bes_bestelopdr_key IS NULL AND v.res_rsv_ruimte_key IS NULL AND v.mld_opdr_key IS NULL ORDER BY 3; -- Zet "variabele" BES-bestelopdrachten die voor de 1e zijn geleverd op AV. -- Alleen op variabele contracten. CURSOR c2 IS SELECT DISTINCT '[' || TO_CHAR (v.bes_bestelopdr_key) || '|' || v.bro_id || '] ' aanduiding, v.maand, v.bes_bestelopdr_key, bbi.bes_bestelling_key, v.cnt_contract_key FROM kfsg_v_actual_fact v, bes_bestelopdr_item boi, bes_bestelling_item bbi WHERE v.bes_bestelopdr_key = boi.bes_bestelopdr_key AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key ORDER BY 3; -- Zet "variabele" RES-cateringregels die voor de 1e hebben plaatsgevonden op AV -- en meld - zover niet al gebeurd - de deelreservering af (in juiste volgorde). -- Alleen op variabele contracten. CURSOR c3 IS SELECT DISTINCT '[' || TO_CHAR (v.res_rsv_ruimte_key) || '|' || v.bro_id || '] ' aanduiding, v.maand, v.res_rsv_ruimte_key, rra.res_status_bo_key, rra.res_rsv_artikel_key, rra.res_artikel_key, v.cnt_contract_key, v.bro_id, v.prs_bedrijf_key, v.prs_bedrijf_naam FROM kfsg_v_actual_fact v, res_v_aanwezigrsv_artikel rra, res_artikel ra WHERE v.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_verwerkt IS NULL AND rra.res_rsv_artikel_dirtlevel = 0 -- TODO:Niet dirty? AND rra.res_artikel_key = ra.res_artikel_key AND COALESCE (ra.res_artikel_volgnummer, 0) <= 900 -- KFSG#74625: Voor facturatie uitsluiten artikelen met een volgnummer >900! UNION ALL SELECT DISTINCT '[' || TO_CHAR (v.res_rsv_ruimte_key) || '|' || v.bro_id || '] ' aanduiding, v.maand, v.res_rsv_ruimte_key, rrr.res_status_bo_key, NULL res_rsv_artikel_key, NULL res_artikel_key, v.cnt_contract_key, v.bro_id, v.prs_bedrijf_key, v.prs_bedrijf_naam FROM kfsg_v_actual_fact v, res_v_aanwezigrsv_ruimte rrr WHERE v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key ORDER BY 1, 5, 3; -- Zet "variabele" MLD-opdrachten die voor de 1e zijn afgerond op AV. -- Alleen op variabele contracten én geen dispuut. CURSOR c4 IS SELECT DISTINCT '[' || TO_CHAR (v.mld_opdr_key) || '|' || v.bro_id || '] ' aanduiding, v.maand, v.mld_opdr_key FROM kfsg_v_actual_fact v WHERE v.mld_opdr_key IS NOT NULL AND v.contractnr NOT LIKE '%/DISPUUT' ORDER BY 3; -- Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV. -- Afgerond/kosten meerekenen op vaste contracten en geen dispuut -- Afgemeld/kosten niet meerekenen, geen offerteaanvraag en geen dispuut -- Afgerond/kosten niet meerekenen en geen dispuut (= geaccepteerde offerteaanvragen) CURSOR c5 IS SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding, o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot, cnt_contract c WHERE o.mld_statusopdr_key = 9 -- KV AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja AND o.cnt_contract_key = c.cnt_contract_key AND c.ins_discipline_key = 522 -- Vaste contracten AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') UNION ALL SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding, o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_statusopdr_key = 6 -- TV AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND ot.mld_typeopdr_key != 220 -- Offerteaanvraag AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') UNION ALL SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding, o.mld_opdr_key FROM mld_opdr o, mld_typeopdr ot WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen) AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee AND NOT EXISTS -- Niet gemarkeerd als dispuut! (SELECT 1 FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 141 -- Dispuut AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')) ORDER BY 2; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER (10); v_verkoopfactuurkop_key NUMBER (10); v_prijs NUMBER (9, 2); BEGIN -- Op 10e dag van de maand (via scheduled task): -- 1. Bevries vaste contractkosten in eigen tabel (incl. malus?). -- 2. Zet "variabele" bestelopdrachten die voor de 1e zijn geleverd op AV. -- 3. Zet "variabele" catering-reserveringen die voor de 1e hebben plaatsgevonden op AV. -- 4. Zet "variabele" opdrachten die voor de 1e zijn afgerond op AV. -- 5. Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV. -- x. Doe niets met afgewezen/geannuleerde opdrachten? v_count := 0; FOR rec IN c1 LOOP BEGIN v_errormsg := 'Fout toevoegen vaste contractkosten'; INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr, fac_usrdata_aanmaak, fac_usrdata_vervaldatum, fac_usrdata_prijs) VALUES (161, -- VasteKostenMnd rec.maand || '/' || TO_CHAR (rec.cnt_contract_key), TO_CHAR (rec.prs_bedrijf_key) || '/' || rec.inkoopordernr, -- TODO: Of weg? SYSDATE, NULL, rec.kosten); v_count := v_count + 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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-CAV'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Vaste contractkosten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c2 LOOP BEGIN v_errormsg := 'Fout bijwerken ordernummer (BES).'; UPDATE bes_bestelling SET bes_bestelling_ordernr = rec.maand || '/' || TO_CHAR (rec.cnt_contract_key) WHERE bes_bestelling_key = rec.bes_bestelling_key; v_errormsg := 'Fout bijwerken status (BES).'; BES.setbestelopdrstatus (rec.bes_bestelopdr_key, 7, 3); BES.setbestellingstatus (rec.bes_bestelling_key, 7, 3); -- TODO: Soms >1 bestelopdrachten??? v_count := v_count + 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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-BAV'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Variabele bestelopdrachten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; -- Maak elke factuurrun voor elke reverse te billen res_rsv_xxx-regel een -- fin_verkoopfactuur-regel aan onder dezelfde fin_verkoopfactuurkop (één -- kop per maand)! INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) VALUES ('RES-billing' || TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')) RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key; COMMIT; v_count := 0; FOR rec IN c3 LOOP BEGIN IF rec.res_rsv_artikel_key IS NOT NULL THEN -- Catering-regel v_errormsg := 'Fout bepalen res_rsv_artikel_prijs'; SELECT res.getartikelprijs (rec.res_rsv_artikel_key) INTO v_prijs FROM DUAL; IF rec.res_status_bo_key = 2 THEN v_errormsg := 'Fout afmelden res_rsv_artikel'; UPDATE res_rsv_artikel SET res_status_bo_key = 5, res_rsv_artikel_prijs = v_prijs, res_rsv_artikel_inkoopprijs = (SELECT res_artikel_inkoopprijs FROM res_artikel WHERE res_artikel_key = rec.res_artikel_key), res_rsv_artikel_btw = (SELECT res_artikel_btw FROM res_artikel WHERE res_artikel_key = rec.res_artikel_key) WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key; v_errormsg := 'Fout tracken afmelding catering'; fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering afgemeld'); END IF; IF rec.res_status_bo_key != 6 THEN v_errormsg := 'Fout verwerken res_rsv_artikel'; UPDATE res_rsv_artikel SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date) WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key; v_errormsg := 'Fout tracken verwerking catering'; fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering verwerkt'); END IF; v_errormsg := 'Fout toevoegen verkoopfactuur'; INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, fin_verkoopfactuur_id, fin_verkoopfactuur_datum, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, prs_bedrijf_key, prs_debiteur_naam, fin_verkoopfactuur_bedrag, fin_verkoopfactuur_maand) VALUES (v_verkoopfactuurkop_key, TO_CHAR (rec.cnt_contract_key), -- Contract SYSDATE, rec.bro_id, '', -- Er bestaat geen xml-node voor res_rsv_artikel! rec.res_rsv_artikel_key, rec.prs_bedrijf_key, -- Leverancier-key (crediteur) rec.prs_bedrijf_naam, -- Leverancier-naam (crediteur) v_prijs, -- Netto bedrag, want alle bedragen excl. BTW, toch? SUBSTR (rec.maand, 1, 4) || SUBSTR (rec.maand, 6, 2)); v_count := v_count + 1; COMMIT; ELSE -- Ruimte-regel IF rec.res_status_bo_key = 2 THEN v_errormsg := 'Fout bepalen res_rsv_ruimte_prijs'; SELECT res.getruimteprijs (rec.res_rsv_ruimte_key) INTO v_prijs FROM DUAL; v_errormsg := 'Fout afmelden res_rsv_ruimte'; UPDATE res_rsv_ruimte SET res_status_bo_key = 5, res_rsv_ruimte_prijs = v_prijs WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; v_errormsg := 'Fout tracken afmelding ruimte'; fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL); END IF; -- Contract kan niet via RES-ordernr historisch worden opgeslagen, -- want onder één res_rsv_ruimte kunnen de artikelen per catalogus -- worden gefactureerd aan een verschillende leverancier! --v_errormsg := 'Fout bijwerken ordernummer (RES).'; --UPDATE res_rsv_ruimte -- SET res_rsv_ruimte_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') || '/' || TO_CHAR (rec.cnt_contract_key) -- WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key; END IF; 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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-RAV'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Variabele cateringregels bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c4 LOOP BEGIN v_errormsg := 'Fout bijwerken ordernummer (MLD).'; UPDATE mld_opdr SET mld_opdr_ordernr = rec.maand WHERE mld_opdr_key = rec.mld_opdr_key; v_errormsg := 'Fout bijwerken status (MLD).'; MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 3); v_count := v_count + 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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV1'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Variabele opdrachten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; v_count := 0; FOR rec IN c5 LOOP BEGIN v_errormsg := 'Fout bijwerken status (inclusief opdrachten).'; MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 3); v_count := v_count + 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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV2'); COMMIT; END; END LOOP; fac.writelog (p_applname, 'S', '#Inclusief opdrachten bevroren: ' || TO_CHAR (v_count), ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_errormsg, 'Proces FACT_EXPORT afgebroken!'); COMMIT; END; / CREATE OR REPLACE VIEW kfsg_v_noti_te_factureren ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS WITH cp AS (SELECT cp1.prs_bedrijf_key, cp1.prs_contactpersoon_email, p1.prs_perslid_email FROM prs_v_aanwezigkenmerklink kl1, prs_contactpersoon cp1, prs_v_aanwezigperslid p1 WHERE kl1.prs_kenmerk_key = 1020 -- Contactpersoon factuurnotificatie! AND kl1.prs_link_key = cp1.prs_contactpersoon_key AND cp1.prs_contactpersoon_verwijder IS NULL AND cp1.prs_perslid_key = p1.prs_perslid_key(+)) SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, --63681, -- Maartje Vreijling --cp.prs_perslid_key, -- Leverancier-contactpersonen (met noti-vinkje) NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##LEV##', v.prs_bedrijf_naam), '##MND##', v.maand), r.fac_usrrap_key, v.extra_key, COALESCE (cp.prs_contactpersoon_email, cp.prs_perslid_email), NULL FROM kfsg_v_frozen_fact v, cp cp, fac_usrrap r, fac_srtnotificatie sn WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand! AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') AND v.extra_key = cp.prs_bedrijf_key AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_FROZEN_FACT' AND sn.fac_srtnotificatie_code = 'CUST01' UNION ALL SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, --gg.prs_perslid_key, -- Schiphol-contactpersonen NULL, REPLACE (sn.fac_srtnotificatie_oms, '##MND##', v.maand), r.fac_usrrap_key, NULL, -- Geen extra_key, dus de hele rapportage! p.prs_perslid_email, NULL FROM kfsg_v_frozen_fact v, fac_gebruikersgroep gg, prs_v_aanwezigperslid p, fac_usrrap r, fac_srtnotificatie sn WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand! AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') AND gg.fac_groep_key = 281 -- Schiphol Finance/Control AND gg.prs_perslid_key = p.prs_perslid_key AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_FROZEN_FACT' AND sn.fac_srtnotificatie_code = 'CUST02'; -- Kostenoverzicht CREATE OR REPLACE VIEW kfsg_v_rap_costs_suppl_dep AS SELECT pf.prs_perslid_naam_full naam, m.mld_melding_onderwerp omschrijving, a.prs_afdeling_omschrijving afdeling, prs_kostenplaats_nr kostenplaats, m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr referentie, 'opdracht' typekosten, COALESCE (SUBSTR (a.prs_afdeling_omschrijving, 1, INSTR (a.prs_afdeling_omschrijving, '/', 1, 2) - 1), a.prs_afdeling_omschrijving) afdeling2, d.prs_dienst_omschrijving dienst, NULL toelichting, b.prs_bedrijf_naam bedrijf, FAC.gettrackingdate ('ORDNEW',mld_opdr_key) datum_aanmaak, mld_opdr_datumbegin datum_levering, FAC.gettrackingdate ('ORDAFR',mld_opdr_key) datum_afmeld, mld_opdr_kosten kosten FROM mld_opdr o, mld_melding m, prs_perslid p, prs_afdeling a, prs_kostenplaats k, prs_bedrijf b, prs_dienst d, mld_stdmelding std, prs_v_perslid_fullnames pf WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.prs_dienst_key = d.prs_dienst_key(+) AND m.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND o.mld_typeopdr_key IN (521, 218, 219, 961) -- opdr type = 521 adm opdr, 218 mandaatopdr, 219 offerteopdr, 961 offertopdr AND o.mld_statusopdr_key IN (6, 7, 9) -- afgemeld, verwerkt en afgerond. AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL SELECT pf.prs_perslid_naam_full, bes_srtdeel_omschrijving , a.prs_afdeling_omschrijving, k.prs_kostenplaats_nr, TO_CHAR (b.bes_bestelling_key), 'bestelling', COALESCE (SUBSTR (a.prs_afdeling_omschrijving, 1, INSTR (a.prs_afdeling_omschrijving, '/', 1, 2) - 1), a.prs_afdeling_omschrijving) afd2, bd.ins_discipline_omschrijving, NULL toelichting, l.prs_bedrijf_naam, FAC.gettrackingdate ('BES2NE',bo.bes_bestelopdr_key) datum_aanmaak, bes_bestelling_leverdatum datum_levering, FAC.gettrackingdate ('BES2AF',bo.bes_bestelopdr_key) datum_geleverd, bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal kosten FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bi, bes_bestelling b, prs_perslid p, prs_afdeling a, prs_kostenplaats k, bes_srtdeel bsd, bes_srtgroep bsg, bes_discipline bd, prs_bedrijf l, prs_v_perslid_fullnames pf WHERE bo.prs_bedrijf_key = l.prs_bedrijf_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bi.bes_bestelling_key = b.bes_bestelling_key AND b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key AND bsg.ins_discipline_key = bd.ins_discipline_key AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL SELECT pf.prs_perslid_naam_full, res_artikel_omschrijving, a.prs_afdeling_omschrijving, k.prs_kostenplaats_nr, res_reservering_key || '/' || res_rsv_ruimte_volgnr, 'reservering', COALESCE (SUBSTR (a.prs_afdeling_omschrijving, 1, INSTR (a.prs_afdeling_omschrijving, '/', 1, 2) - 1), a.prs_afdeling_omschrijving) afd2, rd.ins_discipline_omschrijving, rrr.res_rsv_ruimte_omschrijving toelichting, b.prs_bedrijf_naam, res_rsv_artikel_aanmaak, res_rsv_artikel_levering, res_rsv_artikel_afgemeld, res_rsv_artikel_prijs bedrag FROM res_rsv_artikel rsv, res_rsv_ruimte rrr, res_artikel ra, res_discipline rd, res_disc_params dp, prs_bedrijf b, prs_perslid p, prs_afdeling a, prs_kostenplaats k, prs_v_perslid_fullnames pf WHERE rsv.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rsv.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = rd.ins_discipline_key AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+) AND rd.ins_discipline_key = dp.res_ins_discipline_key AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND p.prs_perslid_key = pf.prs_perslid_key; ----UDR VIEW INCL KENKMERKEN KFSG#58766 ----- CREATE OR REPLACE VIEW KFSG_BEZ_V_UDR_BEZOEKERS ( KEY, AFSPRAAK_KEY, RESERVERING_KEY, HOST, CONTACT, INVOERDER, PLAATS_CODE, PLAATS_OMSCHRIJVING, REGIO, DISTRICT, LOCATIE_CODE, LOCATIE_NAAM, LOCATIE_PLAATS, GEBOUW_CODE, GEBOUW_NAAM, VERDIEPING_CODE, VERDIEPING_NAAM, RUIMTE_CODE, RUIMTE_NAAM, AFSPRAAK_RUIMTE, AFSPRAAK_OPMERKING, BEZOEKER_NAAM, BEZOEKER_BEDRIJF, BEZOEK_VAN, BEZOEK_TOT, ACTIE, BEZOEKER_OPMERKING, BEZOEKER_BINNEN, BEZOEKER_BUITEN, PASNR, PARKEERPLAATS, FCLT_3D_LOCATIE_KEY, FCLT_3D_AFDELING_KEY, SELFSERVICE, BEZOEKERSPAS, DAGPAS, PARKEERKAART_Afgestempeld, Pas_vergeten, wachten_schipholpas ) AS SELECT b.bez_bezoekers_key, a.bez_afspraak_key, a.res_rsv_ruimte_key, COALESCE (p1.prs_perslid_naam_full, a.bez_afspraak_gastheer) bez_afspraak_host, p2.prs_perslid_naam_full bez_afspraak_contact, p3.prs_perslid_naam_full bez_afspraak_invoerder, og.alg_onroerendgoed_code, og.alg_onroerendgoed_omschrijving, r.alg_regio_omschrijving, d.alg_district_omschrijving, l.alg_locatie_code, l.alg_locatie_omschrijving, l.alg_locatie_plaats, og.alg_gebouw_code, og.alg_gebouw_naam, og.alg_verdieping_code, og.alg_verdieping_omschrijving, og.alg_ruimte_nr, og.alg_ruimte_omschrijving, a.bez_afspraak_ruimte, a.bez_afspraak_opmerking, b.bez_afspraak_naam bezoeker_naam, b.bez_afspraak_bedrijf bezoeker_bedrijf, a.bez_afspraak_datum, a.bez_afspraak_eind, ba.bez_actie_omschrijving, b.bez_bezoekers_opmerking bezoeker_opmerking, b.bez_bezoekers_done, b.bez_bezoekers_out, b.bez_bezoekers_pasnr, rd.res_deel_omschrijving, a.alg_locatie_key, pp1.prs_afdeling_key, DECODE (p2.prs_perslid_naam_full, p3.prs_perslid_naam_full, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice, (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE bez_kenmerk_key = 1080 and bez_bezoekers_key = b.bez_bezoekers_key ) kwbezpas, (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE bez_kenmerk_key = 1020 and bez_bezoekers_key = b.bez_bezoekers_key ) kwdagpas, (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE bez_kenmerk_key = 1041 and bez_bezoekers_key = b.bez_bezoekers_key ) kwparstempel, (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE bez_kenmerk_key = 1101 and bez_bezoekers_key = b.bez_bezoekers_key ) kwparverg, (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw WHERE bez_kenmerk_key = 1100 and bez_bezoekers_key = b.bez_bezoekers_key ) kwschipholpas FROM bez_afspraak a, bez_bezoekers b, prs_v_perslid_fullnames_all p1, prs_v_perslid_fullnames_all p2, prs_v_perslid_fullnames_all p3, alg_v_allonrgoed_gegevens og, alg_locatie l, alg_district d, alg_regio r, bez_actie ba, prs_perslid pp1, res_rsv_deel rrd, res_deel rd WHERE a.bez_afspraak_key = b.bez_afspraak_key AND pp1.prs_perslid_key(+) = a.bez_afspraak_host_key AND p1.prs_perslid_key(+) = a.bez_afspraak_host_key AND p2.prs_perslid_key = a.bez_afspraak_contact_key AND p3.prs_perslid_key(+) = a.prs_perslid_key AND a.bez_actie_key = ba.bez_actie_key AND l.alg_district_key = d.alg_district_key AND d.alg_regio_key = r.alg_regio_key AND l.alg_locatie_key = a.alg_locatie_key AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+) AND b.bez_bezoekers_key = rrd.bez_bezoekers_key(+) AND rrd.res_deel_key = rd.res_deel_key(+) AND a.bez_afspraak_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY'); -- KFSG#58877: Sticker Eurest (standaard UDR-view plus Telefoon- en Opmerking- -- veld)! CREATE OR REPLACE VIEW KFSG_V_UDR_RESERVERINGINCL ( KEY, NUMMER, RES_OMSCHRIJVING, INVOERDATUM, DATUM, GASTHEER, CONTACT, INVOERDER, KOSTENSOORTGROEP, KOSTENSOORT, KPN, KPN_OMSCHRIJVING, KPN_EXTERN, FCLT_3D_AFDELING_KEY, AFDELING_CODE, AFDELING_OMSCHRIJVING, REGIO_OMSCHRIJVING, DISTRICT_OMSCHIJVING, FCLT_3D_LOCATIE_KEY, LOCATIE, LOCATIE_OMSCHRIJVING, LOCATIE_PLAATS, GEBOUW, VERDIEPING, RUIMTE, OPSTELLING, CAPACITEIT, NO_SHOW, MANDAAT, PERSONEELSNR, -- Gastheer/vrouw? FCLT_3D_DISCIPLINE_KEY, CATALOGUS_KEY, CATALOGUS, RESERVEERBARE_RUIMTE, BEZOEKERS, VAN, TOT, DUUR, STATUS, BOSTATUS, ACTIVITEIT, SRTACTIVITEIT_KEY, ACTIVITEITSOORT, VOORZIENING_DISCIPLINE_KEY, VOORZIENING_TYPE, VOORZIENING_CATALOGUS, LEVERANCIER, VOORZIENING_PRODUCT_KEY, VOORZIENING_PRODUCT, VOORZIENING_TOTAALPRIJS, VOORZIENING_VAN, VOORZIENING_TOT, VOORZIENING_AANTAL, VOORZIENING_PRIJS, GASTHEER_TEL, CONTACT_TEL, RES_OPMERKING ) AS SELECT rrr.res_rsv_ruimte_key, res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_omschrijving, COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van), COALESCE (rrr.res_rsv_ruimte_van, voorz.van), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = rrr.res_rsv_ruimte_host_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key), (SELECT pf.prs_perslid_naam_full FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf WHERE tr.prs_perslid_key = pf.prs_perslid_key AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND str.fac_srtnotificatie_code = 'RESNEW' AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key), (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT prs_kostensoort_key FROM res_discipline WHERE ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT d.ins_discipline_key FROM ins_tab_discipline d, res_ruimte rr, res_ruimte_opstelling ro WHERE d.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = ro.res_ruimte_key AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)))) kostensoortgroep, (SELECT prs_kostensoort_oms FROM prs_kostensoort WHERE prs_kostensoort_key = (SELECT prs_kostensoort_key FROM res_discipline WHERE ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT d.ins_discipline_key FROM ins_tab_discipline d, res_ruimte rr, res_ruimte_opstelling ro WHERE d.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = ro.res_ruimte_key AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)))) kostensoort, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, k.prs_kostenplaats_extern, a.prs_afdeling_key, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, (SELECT rg.alg_regio_omschrijving FROM alg_regio rg, alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE rg.alg_regio_key = d.alg_regio_key AND d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT d.alg_district_omschrijving FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_key FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_code FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_omschrijving FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_plaats FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT g.alg_gebouw_code FROM alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT v.alg_verdieping_code FROM alg_verdieping v, alg_ruimte r WHERE v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), r2a.ruimte_nr, r2a.opstelling, r2a.capaciteit, rrr.res_rsv_ruimte_noshow, COALESCE ((SELECT fac_profiel_limiet FROM fac_profiel WHERE fac_profiel_key = ph.fac_profiel_key), 0), ph.prs_perslid_nr, COALESCE ( voorz.ins_discipline_key, (SELECT d.ins_discipline_key FROM ins_tab_discipline d, res_ruimte rr, res_ruimte_opstelling ro WHERE d.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = ro.res_ruimte_key AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)), (SELECT d.ins_discipline_key FROM ins_tab_discipline d, res_ruimte rr, res_ruimte_opstelling ro WHERE d.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = ro.res_ruimte_key AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key), (SELECT d.ins_discipline_omschrijving FROM ins_tab_discipline d, res_ruimte rr, res_ruimte_opstelling ro WHERE d.ins_discipline_key = rr.res_discipline_key AND rr.res_ruimte_key = ro.res_ruimte_key AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key), DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'), rrr.res_rsv_ruimte_bezoekers, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, COALESCE ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0), (SELECT res_status_fo_omschrijving FROM res_status_fo WHERE res_status_fo_key = rrr.res_status_fo_key), (SELECT res_status_bo_omschrijving FROM res_status_bo WHERE res_status_bo_key = rrr.res_status_bo_key), ra.res_activiteit_omschrijving, rsa.res_srtactiviteit_key, rsa.res_srtactiviteit_omschrijving, voorz.ins_discipline_key, voorz.vtype, voorz.catalogus, (SELECT prs_bedrijf_naam FROM res_disc_params rdp, prs_bedrijf b WHERE rdp.prs_bedrijf_key = b.prs_bedrijf_key AND rdp.res_ins_discipline_key = voorz.ins_discipline_key), voorz.product_key, voorz.product, voorz.totaalprijs, TO_CHAR (voorz.van, 'hh24:mi'), TO_CHAR (voorz.tot, 'hh24:mi'), voorz.aantal, voorz.prijs, COALESCE (pc.prs_perslid_telefoonnr, pc.prs_perslid_mobiel) contact_tel, COALESCE (ph.prs_perslid_telefoonnr, ph.prs_perslid_mobiel) host_tel, rrr.res_rsv_ruimte_opmerking FROM res_v_aanwezigrsv_ruimte rrr, res_reservering res, ( SELECT rrr.res_rsv_ruimte_key, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ro.res_ruimte_opstel_bezoekers) capaciteit, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_rsv_ruimte rrr, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_opstelling_key = o.res_opstelling_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY rrr.res_rsv_ruimte_key UNION ALL SELECT rrr.res_rsv_ruimte_key, '' opstelling, TO_NUMBER (NULL) capaciteit, rrr.alg_ruimte_key, r.alg_ruimte_nr FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a, (SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key, -rd.res_deel_key product_key, rd.res_deel_omschrijving product, DECODE (rd.res_deel_prijs_vast, 1, COALESCE (rrd.res_rsv_deel_prijs, rd.res_deel_prijs), (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 * COALESCE (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)) totaalprijs, rrd.res_rsv_deel_van van, rrd.res_rsv_deel_tot tot, (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal, COALESCE (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, 'object' vtype FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d, ins_tab_discipline c WHERE rrd.res_rsv_ruimte_key IS NOT NULL AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = d.ins_deel_key AND rd.res_discipline_key = c.ins_discipline_key UNION ALL SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key, ra.res_artikel_key product_key, ra.res_artikel_omschrijving product, COALESCE (rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs) totaalprijs, rra.res_rsv_artikel_levering van, NULL tot, rra.res_rsv_artikel_aantal aantal, COALESCE (rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal, res_artikel_prijs) prijs, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, 'consumable' vtype FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, ins_tab_discipline c WHERE rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = c.ins_discipline_key) voorz, res_activiteit ra, res_srtactiviteit rsa, prs_perslid pc, prs_perslid ph, prs_afdeling a, prs_kostenplaats k WHERE rrr.res_reservering_key = res.res_reservering_key AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+) AND rrr.res_activiteit_key = ra.res_activiteit_key AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key AND rrr.res_rsv_ruimte_contact_key = pc.prs_perslid_key AND rrr.res_rsv_ruimte_host_key = ph.prs_perslid_key AND ph.prs_afdeling_key = a.prs_afdeling_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND (rrr.res_ruimte_opstel_key IS NOT NULL OR voorz.res_rsv_ruimte_key IS NOT NULL) AND rrr.res_rsv_ruimte_van >= TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm'); -- 1421 = Werkplekken -- 1501 = Werkplekken Speciaal CREATE OR REPLACE VIEW kfsg_v_thema_deel_res_datum ( fclt_f_datum, ins_deel_key, min_van, max_tot, waarde1, waarde, waarde3 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 61) -- KFSG#68919: Op 61 dagen vooruit! SELECT datum fclt_f_datum, ins_deel_key, MIN (res_rsv_deel_van) min_van, MAX (res_rsv_deel_tot) max_tot, CASE WHEN MAX (res_rsv_deel_tot) IS NULL -- Hele dag beschikbaar THEN DECODE (res_discipline_key, 1421, 0, 4) WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- Ochtend, alleen 1421 WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- Middag, alleen 1421 ELSE 3 -- Hele dag bezet END waarde1, CASE WHEN MAX (res_rsv_deel_tot) IS NULL -- Hele dag beschikbaar THEN DECODE (res_discipline_key, 1421, 0, 4) WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- Ochtend, alleen 1421 WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- Middag, alleen 1421 ELSE 3 -- Hele dag bezet END waarde, COUNT (res_rsv_deel_tot) -- Aantal reserveringen deze dag waarde3 FROM (SELECT datums.datum, r.res_ins_deel_key ins_deel_key, blokkerend.res_rsv_deel_van, blokkerend.res_rsv_deel_tot, r.res_discipline_key FROM datums, res_v_aanwezigdeel r, (SELECT datum, rrd.res_deel_key, rrd.res_rsv_deel_van, rrd.res_rsv_deel_tot FROM datums, res_v_aanwezigrsv_deel rrd WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot) blokkerend, -- Vandaag en nog niet afgelopen ins_deel d WHERE (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > datums.datum) AND r.res_deel_key = blokkerend.res_deel_key(+) AND datums.datum = blokkerend.datum(+) AND r.res_ins_deel_key = d.ins_deel_key) GROUP BY datum, ins_deel_key, res_discipline_key ORDER BY datum, ins_deel_key; -- 1421 = Werkplekken -- 1501 = Werkplekken Speciaal -- 1441 = Werkplekken (nog onzichtbaar) -- 130 = Werkplek reservering CREATE OR REPLACE VIEW kfsg_v_rap_werkplekken AS SELECT rrr.res_rsv_ruimte_key, res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer, res_rsv_ruimte_van datum_van, res_rsv_ruimte_tot datum_tot, pf.prs_perslid_naam_full gastheer, aog.alg_locatie_key fclt_3d_locatie_key, l.alg_locatie_omschrijving locatie, aog.alg_gebouw_code gebouw, aog.alg_verdieping_code verdieping, aog.alg_ruimte_nr ruimte, ra.res_activiteit_omschrijving activiteit, rdsc.ins_discipline_omschrijving catalogus, rd.res_deel_omschrijving voorziening_product, res_rsv_deel_van voorziening_van, res_rsv_deel_tot voorziening_tot, a.prs_afdeling_omschrijving afdeling, p.prs_perslid_nr personeelsnr, p.prs_perslid_email email FROM res_rsv_ruimte rrr, res_rsv_deel rrd, prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf, alg_v_allonrgoed_gegevens aog, alg_locatie l, res_activiteit ra, res_deel rd, res_discipline rdsc WHERE rrr.res_activiteit_key = 130 AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND p.prs_perslid_key = res_rsv_ruimte_host_key AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND aog.alg_ruimte_key = rrr.alg_ruimte_key AND aog.alg_locatie_key = l.alg_locatie_key AND rrr.res_activiteit_key = ra.res_activiteit_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = rdsc.ins_discipline_key AND rdsc.ins_discipline_key IN (1421, 1441, 1501) AND rrr.res_rsv_ruimte_verwijder IS NULL; CREATE OR REPLACE VIEW kfsg_v_thema_ruimte_res_datum ( fclt_f_datum, alg_ruimte_key, res_ruimte_key, min_van, max_tot, waarde1, waarde, waarde3 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 61) -- KFSG#68919: Op 61 dagen vooruit! SELECT datum fclt_f_datum, alg_ruimte_key, res_ruimte_key, MIN (res_rsv_ruimte_van) min_van, MAX (res_rsv_ruimte_tot) max_tot, CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL THEN res_ruimte_nr ELSE CASE WHEN res_status_fo_key=3 -- geblokkeerd THEN 'geblokkeerd' ELSE 'bezet' END END waarde1, CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL THEN res_ruimte_nr ELSE CASE WHEN res_status_fo_key=3 -- geblokkeerd THEN 'geblokkeerd' ELSE 'bezet' END END waarde, COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag waarde3 FROM (SELECT datums.datum, rr.res_ruimte_key, rar.alg_ruimte_key alg_ruimte_key, res_ruimte_nr, res_rsv_ruimte_van, res_rsv_ruimte_tot, blokkerend.res_status_fo_key FROM res_v_aanwezigruimte rr, res_alg_ruimte rar, datums, (SELECT datum, res_ruimte_key, res_rsv_ruimte_van, res_rsv_ruimte_tot, res_status_fo_key FROM datums, res_rsv_ruimte rrr, res_ruimte_opstelling rro WHERE res_rsv_ruimte_van > TRUNC (SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND datum+1 >= res_rsv_ruimte_van AND datum < res_rsv_ruimte_tot) blokkerend -- vandaag en nog niet afgelopen WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+) AND rr.res_ruimte_key = rar.res_ruimte_key AND rar.res_alg_ruimte_verwijder is null AND datums.datum = blokkerend.datum(+) AND ( rr.res_ruimte_vervaldatum IS NULL OR rr.res_ruimte_vervaldatum > datums.datum)) GROUP BY datum, alg_ruimte_key, res_ruimte_key, res_ruimte_nr, res_status_fo_key; -- KFSG#70107: BESOTV-notificatie, die standaard (bewust) staat uitgeschakeld, -- alsnog versturen als CUST04-notificatie voor sommige catalogi. -- Op speciaal verzoek hard-coded (ipv. bes_disc_params_noti_dagen)! -- KFSG#79872: CUST04-notificatie voortaan ook versturen naar repro@schiphol.nl. CREATE OR REPLACE VIEW KFSG_V_NOTI_BESOTV ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (b.bes_bestelling_key)), b.bes_bestelling_key, NULL xkey, NULL xsender, p.prs_perslid_email || ';repro@schiphol.nl' xemail, NULL xmobile, NULL attachments FROM fac_tracking t, bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, --bes_disc_params dp, prs_v_aanwezigperslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 9 -- BESOTV AND t.fac_tracking_refkey = b.bes_bestelling_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key --AND sg.ins_discipline_key = dp.bes_ins_discipline_key --AND dp.bes_disc_params_noti_dagen = 1 AND sg.ins_discipline_key IN (1121, 1122) -- Reproductie=Xerox/Kantoorartikelen=Staples AND b.prs_perslid_key = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST04' AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_BESOTV' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun; -- KFSG#71873: Uurlijkse CUST05-notificatie van de reguliere RES-bon naar de -- geconfigureerde ontvangers per catalogus volgens ET=421. -- KFSG#81587: Omgebutst naar dagelijkse CUST05-notificatie van rapport naar -- de geconfigureerde ontvangers per catalogus volgens ET=421. -- KFSG#81835: Teruggebutst naar uurlijkse CUST05-notificatie voor alleen de -- Veiligheidskleding-catalogus (key=1781), dus dan de reguliere -- RES-bon naar de geconfigureerde ontvangers volgens ET=421. CREATE OR REPLACE VIEW KFSG_V_RAP_RESOBJ AS SELECT SUBSTR (ud.fac_usrdata_omschr, INSTR (ud.fac_usrdata_omschr, '/') + 1) ontvanger, TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) res_id, TO_CHAR (SYSDATE, 'dd-mm-yyyy') datum, TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy hh24:mi') van, TO_CHAR (rrr.res_rsv_ruimte_tot, 'dd-mm-yyyy hh24:mi') tot, rrr.res_rsv_ruimte_omschrijving, pfc.prs_perslid_naam_full contact, pfh.prs_perslid_naam_full host, d.ins_discipline_omschrijving, rd.res_deel_omschrijving, rd.res_deel_eenheid, ud.fac_usrdata_key extra_key FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_deel rrd, res_v_aanwezigdeel rd, res_v_aanwezigdiscipline d, prs_v_perslid_fullnames pfc, prs_v_perslid_fullnames pfh, (SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 421) ud -- CUST05 ontvanger WHERE TRUNC (rrr.res_rsv_ruimte_van) <= TRUNC (SYSDATE) AND TRUNC (rrr.res_rsv_ruimte_tot) >= TRUNC (SYSDATE) AND rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_rsv_deel_dirtlevel = 0 AND rrd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = d.ins_discipline_key --AND d.ins_discipline_key != 1781 -- Veiligheidkleding uurlijks! AND rrr.res_rsv_ruimte_contact_key = pfc.prs_perslid_key AND rrr.res_rsv_ruimte_host_key = pfh.prs_perslid_key AND rd.res_discipline_key = fac.safe_to_number (SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1)) ; CREATE OR REPLACE VIEW KFSG_V_NOTI_RESOBJ ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE ( REPLACE (sn.fac_srtnotificatie_oms, '##DISC##', v.ins_discipline_omschrijving), '##AANT##', (SELECT COUNT ( * ) FROM kfsg_v_rap_resobj WHERE extra_key = v.extra_key)), r.fac_usrrap_key, v.extra_key, NULL xsender, v.ontvanger xemail, NULL xmobile, NULL attachments FROM kfsg_v_rap_resobj v, fac_usrrap r, fac_srtnotificatie sn WHERE UPPER (r.fac_usrrap_view_name) = 'KFSG_V_RAP_RESOBJ' AND sn.fac_srtnotificatie_code = 'CUST05' AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'KFSG_V_RAP_RESOBJ' AND fac_usrrap_key > r.fac_usrrap_key) AND TO_CHAR (SYSDATE, 'hh24') = '07' UNION ALL SELECT DISTINCT 'RESMAI', NULL, NULL, 'Reservering veiligheidkleding ' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || ' (' || rrr.res_rsv_ruimte_omschrijving || ') is geregistreerd', rrr.res_reservering_key, rrr.res_rsv_ruimte_key, NULL xsender, SUBSTR (ud.fac_usrdata_omschr, INSTR (ud.fac_usrdata_omschr, '/') + 1) xemail, NULL xmobile, NULL attachments FROM fac_tracking t, res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_deel rrd, res_v_aanwezigdeel rd, (SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 421) ud, -- CUST05 ontvanger (van RESMAI) fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 88 -- RESNEW AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = 1781 -- Veiligheidkleding uurlijks! AND rd.res_discipline_key = fac.safe_to_number (SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1)) AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_RESOBJ' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun; -- KFSG#73183: Uurlijkse CUST06-notificatie van de reguliere Offerteaanvraag- -- opdrachtbon naar: -- - Bastiaan.Brandenburg@schiphol.nl+Cato.Roodenburg@schiphol.nl -- bij afwijzen Offerteaanvraag uitgegeven aan GPG. -- - Alle contactpersonen met account bij afwijzen Offerteaanvraag -- uitgegeven aan andere Uitvoerende. -- NB. Voorkennis: ORDONO-notificatie staat uitgeschakeld. CREATE OR REPLACE VIEW KFSG_V_NOTI_ORDONO ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)), o.mld_opdr_key, NULL xkey, NULL xsender, 'Bastiaan.Brandenburg@schiphol.nl;Patricia.Nijholt@schiphol.nl' xemail, -- KFSG#77777: Voortaan naar Bastiaan en Patricia! NULL xmobile, NULL attachments FROM fac_tracking t, mld_opdr o, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 81 -- ORDONO AND t.fac_tracking_refkey = o.mld_opdr_key AND o.mld_typeopdr_key = 220 -- Offerteaanvraag AND o.mld_uitvoerende_keys = 34221 -- GPG AND sn.fac_srtnotificatie_code = 'CUST06' AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_ORDONO' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun UNION ALL SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)), o.mld_opdr_key, NULL xkey, NULL xsender, p.prs_perslid_email xemail, NULL xmobile, NULL attachments FROM fac_tracking t, mld_opdr o, prs_bedrijf b, prs_contactpersoon cp, prs_v_aanwezigperslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 81 -- ORDONO AND t.fac_tracking_refkey = o.mld_opdr_key AND o.mld_typeopdr_key = 220 -- Offerteaanvraag AND o.mld_uitvoerende_keys <> 34221 -- Anders dan GPG AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND b.prs_bedrijf_key = cp.prs_bedrijf_key AND cp.prs_perslid_key = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST06' AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_ORDONO' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun; -- KFSG#72652: Door te belasten opdrachten, tevens via CUST07-notificatiejob -- elk kwartaal genotificeerd naar de geconfigureerde ontvangers -- volgens ET=381. CREATE OR REPLACE VIEW KFSG_V_RAP_OPDR_DOORBEL ( KWARTAAL, MAAND, PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM, MLD_OPDR_KEY, OPDRACHTNR, OPDRACHTTYPE, OPDRACHTOMSCHR, OPDRACHTSTATUS, KOSTENPLAATSCODE, KOSTENPLAATSOMSCHR, KOSTEN ) AS SELECT DECODE (TO_CHAR (ko.mld_kenmerkopdr_aanmaak, 'yyyy-q'), TO_CHAR (SYSDATE, 'yyyy-q'), 'Lopend', TO_CHAR (ko.mld_kenmerkopdr_aanmaak, 'yyyy-q')) kwartaal, TO_CHAR (ko.mld_kenmerkopdr_aanmaak, 'yyyy-mm') maand, b.prs_bedrijf_key, b.prs_bedrijf_naam, o.mld_opdr_key, TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdrachtnr, ot.mld_typeopdr_omschrijving opdrachttype, o.mld_opdr_omschrijving opdrachtomschr, os.mld_statusopdr_omschrijving opdrachtstatus, kp.prs_kostenplaats_nr kostenplaatcode, kp.prs_kostenplaats_omschrijving kostenplaatomschr, o.mld_opdr_kosten kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM mld_opdr o, mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k, prs_bedrijf b, mld_typeopdr ot, mld_statusopdr os, prs_kostenplaats kp WHERE o.mld_opdr_key = ko.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 1821 -- Intern doorbelasten AND ko.mld_kenmerkopdr_waarde = '1' -- Aangevinkt AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_statusopdr_key = os.mld_statusopdr_key --AND os.mld_statusopdr_key IN (7, 9) -- Verwerkt/Afgerond AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key UNION ALL SELECT DECODE (TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-q'), TO_CHAR (SYSDATE, 'yyyy-q'), 'Lopend', TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-q')) kwartaal, TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') maand, NULL prs_bedrijf_key, 'Beveiliger inzet' prs_bedrijf_naam, rrr.res_rsv_ruimte_key, TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) opdrachtnr, NULL opdrachttype, rrr.res_rsv_ruimte_omschrijving opdrachtomschr, NULL opdrachtstatus, kp.prs_kostenplaats_nr kostenplaatcode, kp.prs_kostenplaats_omschrijving kostenplaatomschr, res.getartikelprijs (rra.res_rsv_artikel_key) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_artikel rra, prs_kostenplaats kp WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_dirtlevel = 0 AND rra.res_artikel_key = 2221 -- Beveiliger inzet vanaf 18:30 uur AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+); CREATE OR REPLACE VIEW KFSG_V_NOTI_OPDR_DOORBEL ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE ) AS SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KWARTAAL##', TO_CHAR (SYSDATE, 'yyyy-q')), r.fac_usrrap_key, NULL, NULL, ud.fac_usrdata_omschr, NULL FROM fac_usrrap r, fac_srtnotificatie sn, fac_v_aanwezigusrdata ud WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand! AND TO_CHAR (SYSDATE, 'mm') IN ('01', '04', '07', '10') -- Kwartaal! AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_RAP_OPDR_DOORBEL' AND r.fac_usrrap_functie = 1 -- Via stylesheet AND sn.fac_srtnotificatie_code = 'CUST07' AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'KFSG_V_RAP_OPDR_DOORBEL' AND fac_usrrap_functie = 1 -- Via stylesheet AND fac_usrrap_key > r.fac_usrrap_key) AND ud.fac_usrtab_key = 381 -- KFSG#76243:CUST07 ontvanger ; -- KFSG#76507: RES-kosten per kostenplaats/halfjaar uit de volgende catalogi -- (rap.+notificatiejob): -- - 821 - Gebak / taart -- - 822 - Borrels & Receptie naar Borrels & Hapjes -- - 826 - Geschenken -- - 828 - Lunch -- - 861 - Vergaderservice -- - 1242 - Ontbijt -- - 1261 - Overige catering -- - 1961 - Warme lunchaanvulling/borrelhapjes SHG -- - 1981 - Borrelkar -- - 2022 - Catering Brandweer Post Sloten -- - 2101 - Inzet extern -- - 2161 - Dranken -- - 2261 - Evenementen - Receptie arrangement -- - 2181 - Lunch Q Mevrouw T. Wolsak -- - 2201 - Lunch R Mevrouw F. Bullaert -- - 2202 - Lunch S Mevrouw L. Eeuwes -- - 2281 - Lunch T Mevrouw M. van Zoest -- - 2321 - Feestarrangement -- - 2341 - Feestassortiment backoffice -- - 2441 - Lunch U Mevrouw S. Nascimento -- - 2461 - Arrangement Receptie CREATE OR REPLACE VIEW KFSG_V_RAP_RES_KOSTEN_PHJ AS WITH halfjaar AS (SELECT DECODE (TO_CHAR (ADD_MONTHS (SYSDATE, 6), 'yyyy'), TO_CHAR (SYSDATE, 'yyyy'), TRUNC (SYSDATE, 'yyyy'), ADD_MONTHS (TRUNC (SYSDATE, 'yyyy'), 6)) begindatum FROM DUAL) SELECT x.halfjaar, x.prs_kostenplaats_nr, SUM (COALESCE (x.verw_prijs, x.prijs, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM (SELECT DECODE ( SIGN (rra.res_rsv_artikel_levering - halfjaar.begindatum), 1, 'Lopend', TO_CHAR (rra.res_rsv_artikel_levering, 'yyyy') || DECODE (TO_CHAR (rra.res_rsv_artikel_levering, 'q'), '1', '-1', '2', '-1', '-2')) halfjaar, kp.prs_kostenplaats_nr, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs FROM res_v_aanwezigrsv_ruimte rrr, --res_ruimte_opstelling rro, --( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key -- FROM res_alg_ruimte -- WHERE res_alg_ruimte_verwijder IS NULL -- GROUP BY res_ruimte_key) rar1, --( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key -- FROM res_alg_ruimte -- WHERE res_alg_ruimte_verwijder IS NOT NULL -- GROUP BY res_ruimte_key) rar2, --alg_v_allonroerendgoed aog, res_v_aanwezigrsv_artikel rra, res_artikel ra, --res_disc_params dp, --prs_bedrijf b, prs_kostenplaats kp, halfjaar WHERE rrr.res_rsv_ruimte_dirtlevel = 0 --AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) --AND rro.res_ruimte_key = rar1.res_ruimte_key(+) --AND rro.res_ruimte_key = rar2.res_ruimte_key(+) --AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_dirtlevel = 0 AND rra.res_rsv_artikel_verwerkt IS NOT NULL AND rra.res_rsv_artikel_levering BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (SYSDATE + 1) -- Afgelopen jaar plus dit jaar t/m vandaag! AND rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key IN (821, 822, 826, 828, 861, 1242, 1261, 1961, 1981, 2022, 2101, 2161, 2261, 2181, 2201, 2202, 2281, 2321, 2341, 2441, 2461) --AND ra.res_discipline_key = dp.res_ins_discipline_key(+) --AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+) AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x GROUP BY x.halfjaar, x.prs_kostenplaats_nr; /* -- Kopie van bovenstaande om details per reservering in te bouwen, maar vervallen? CREATE OR REPLACE VIEW KFSG_V_RAP_RES_KOSTEN_PHJ2 AS WITH halfjaar AS (SELECT DECODE (TO_CHAR (ADD_MONTHS (SYSDATE, 6), 'yyyy'), TO_CHAR (SYSDATE, 'yyyy'), TRUNC (SYSDATE, 'yyyy'), ADD_MONTHS (TRUNC (SYSDATE, 'yyyy'), 6)) begindatum FROM DUAL) SELECT x.halfjaar, x.prs_kostenplaats_nr, SUM (COALESCE (x.verw_prijs, x.prijs, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM (SELECT DECODE ( SIGN (rra.res_rsv_artikel_levering - halfjaar.begindatum), 1, 'Lopend', TO_CHAR (rra.res_rsv_artikel_levering, 'yyyy') || DECODE (TO_CHAR (rra.res_rsv_artikel_levering, 'q'), '1', '-1', '2', '-1', '-2')) halfjaar, kp.prs_kostenplaats_nr, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_allonroerendgoed aog, res_v_aanwezigrsv_artikel rra, res_artikel ra, --res_disc_params dp, --prs_bedrijf b, prs_kostenplaats kp, halfjaar WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_dirtlevel = 0 AND rra.res_rsv_artikel_verwerkt IS NOT NULL AND rra.res_rsv_artikel_levering BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (SYSDATE + 1) -- Afgelopen jaar plus dit jaar t/m vandaag! AND rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key IN (821, 822, 826, 828, 861, 1242, 1261, 1961, 1981, 2022, 2101, 2161) --AND ra.res_discipline_key = dp.res_ins_discipline_key(+) --AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+) AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x; */ /* SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') || DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'q'), '1', '-1', '2', '-1', '-2') halfjaar, x.prs_kostenplaats_nr, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) res_id, SUM (COALESCE (x.verw_prijs, x.prijs, 0)) FROM (SELECT rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.prs_kostenplaats_key, kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving, b.prs_bedrijf_key, b.prs_bedrijf_naam, rra.res_rsv_artikel_levering, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs, rra.res_rsv_artikel_btw FROM res_v_aanwezigrsv_ruimte rrr, prs_kostenplaats kp, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_allonroerendgoed aog, res_v_aanwezigrsv_artikel rra, res_artikel ra, res_disc_params dp, prs_bedrijf b WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_dirtlevel = 0 AND rra.res_rsv_artikel_verwerkt IS NOT NULL AND rra.res_rsv_artikel_levering BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -0), 'yyyy') AND TRUNC (SYSDATE + 1) -- Afgelopen jaar plus dit jaar t/m vandaag! AND rra.res_artikel_key = ra.res_artikel_key --AND ra.res_discipline_key IN (821, 822, 826, 828, 861, 1242, 1261, 1961, 1981, 2022, 2101, 2161) AND ra.res_discipline_key = dp.res_ins_discipline_key(+) AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+)) x WHERE x.prs_kostenplaats_nr = 'K0013650' GROUP BY TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') || DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'q'), '1', '-1', '2', '-1', '-2'), x.prs_kostenplaats_nr, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) ORDER BY 3; SELECT TO_CHAR (x.van_tijd, 'yyyy') || DECODE (TO_CHAR (x.van_tijd, 'q'), '1', '-1', '2', '-1', '-2') halfjaar, kp.prs_kostenplaats_nr, SUM (COALESCE (x.kosten, 0)) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch? FROM kfsg_v_rap_frozen_fact_res x, res_rsv_ruimte rrr, prs_kostenplaats kp WHERE x.van_tijd BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -0), 'yyyy') AND TRUNC (SYSDATE + 1) -- Afgelopen jaar plus dit jaar t/m vandaag! AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) GROUP BY TO_CHAR (x.van_tijd, 'yyyy') || DECODE (TO_CHAR (x.van_tijd, 'q'), '1', '-1', '2', '-1', '-2'), kp.prs_kostenplaats_nr; SELECT TO_CHAR (x.van_tijd, 'yyyy') || DECODE (TO_CHAR (x.van_tijd, 'q'), '1', '-1', '2', '-1', '-2') halfjaar, kp.prs_kostenplaats_nr, x.res_id, COALESCE (x.kosten, 0) kosten FROM kfsg_v_rap_frozen_fact_res x, res_rsv_ruimte rrr, prs_kostenplaats kp WHERE x.van_tijd BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -0), 'yyyy') AND TRUNC (SYSDATE + 1) -- Afgelopen jaar plus dit jaar t/m vandaag! AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) AND kp.prs_kostenplaats_nr = 'K0013650' ORDER BY 3; */ CREATE OR REPLACE VIEW KFSG_V_NOTI_RES_KOSTEN_PHJ ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE ) AS SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##HALFJAAR##', TO_CHAR (ADD_MONTHS (SYSDATE, -6), 'yyyy') || DECODE (TO_CHAR (ADD_MONTHS (SYSDATE, -6), 'q'), '1', '-1', '2', '-1', '-2')), r.fac_usrrap_key, NULL, NULL, 'FSP@schiphol.nl', NULL FROM fac_usrrap r, fac_srtnotificatie sn WHERE TO_CHAR (SYSDATE, 'dd-mm') IN ('01-01', '01-07') -- Op 1-1 en 1-7! AND UPPER (r.fac_usrrap_view_name) = 'KFSG_V_RAP_RES_KOSTEN_PHJ' AND r.fac_usrrap_functie = 1 -- Via stylesheet AND sn.fac_srtnotificatie_code = 'CUST08' AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE UPPER (fac_usrrap_view_name) = 'KFSG_V_RAP_RES_KOSTEN_PHJ' AND fac_usrrap_functie = 1 -- Via stylesheet AND fac_usrrap_key > r.fac_usrrap_key) ; -- KFSG#85012: CUST09/CUST10-reminder naar aanvrager of >10 bezoekers bij -- afspraak over resp. 2 weken/2 werkdagen correct? CREATE OR REPLACE VIEW KFSG_V_NOTI_BEZ_REMINDER ( code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key ) AS SELECT 'CUST09', NULL, a.bez_afspraak_contact_key, REPLACE (REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (a.bez_afspraak_key)), '##NAAM##', pf.prs_perslid_naam_friendly), '##DATUM##', TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy')), a.bez_afspraak_key, NULL, NULL, NULL, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM bez_afspraak a, ( SELECT bez_afspraak_key, COUNT (*) aantal FROM bez_bezoekers GROUP BY bez_afspraak_key) b, prs_v_perslid_fullnames_all pf, fac_srtnotificatie sn, fac_notificatie_job nj WHERE a.bez_afspraak_key = b.bez_afspraak_key AND b.aantal >= 10 AND a.bez_afspraak_host_key = pf.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST09' AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_BEZ_REMINDER' AND TRUNC (a.bez_afspraak_datum) = TRUNC (SYSDATE + 14) UNION ALL SELECT 'CUST10', NULL, a.bez_afspraak_contact_key, REPLACE (REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (a.bez_afspraak_key)), '##NAAM##', pf.prs_perslid_naam_friendly), '##DATUM##', TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy')), a.bez_afspraak_key, NULL, NULL, NULL, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM bez_afspraak a, ( SELECT bez_afspraak_key, COUNT (*) aantal FROM bez_bezoekers GROUP BY bez_afspraak_key) b, prs_v_perslid_fullnames_all pf, fac_srtnotificatie sn, fac_notificatie_job nj WHERE a.bez_afspraak_datum BETWEEN SYSDATE AND SYSDATE + 7 -- Tbv. performance! AND a.bez_afspraak_key = b.bez_afspraak_key AND b.aantal >= 10 AND a.bez_afspraak_host_key = pf.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST10' AND nj.fac_notificatie_job_view = 'KFSG_V_NOTI_BEZ_REMINDER' AND fac.count_work_days (SYSDATE, a.bez_afspraak_datum) = 2 ; -- KFSG#77433: Artikelen wel-niet gefactureerd per maand. /* Zijn er ooit verbruiksartikelen onder verwijderde reserveringen gefactureerd? SELECT fin_verkoopfactuur_omschr FROM fin_verkoopfactuur WHERE EXISTS (SELECT 1 FROM res_rsv_ruimte rrr, res_rsv_artikel rra WHERE rrr.res_rsv_ruimte_verwijder IS NOT NULL AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_rsv_artikel_key = fin_verkoopfactuur_refkey); */ CREATE OR REPLACE VIEW KFSG_V_RAP_RES_ART_PM AS SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm') maand, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) res_id, x.res_rsv_ruimte_van van, x.res_rsv_ruimte_tot tot, x.res_rsv_artikel_levering levertijd, x.plaatsaanduiding, x.ins_discipline_omschrijving catalogus, x.prs_bedrijf_naam leverancier, x.res_artikel_omschrijving, x.res_artikel_eenheid, x.res_artikel_volgnummer, x.res_rsv_artikel_aantal aantal, --res.getartikelprijs (x.res_rsv_artikel_key) kosten, --COALESCE (verw_prijs, prijs, 0) kosten, COALESCE (vf.fin_verkoopfactuur_bedrag, verw_prijs, prijs, 0) kosten, TO_CHAR (COALESCE (x.res_rsv_artikel_btw, x.res_artikel_btw)) btw, DECODE (vf.fin_verkoopfactuur_key, NULL, 'Nee', 'Ja') gefactureerd, x.res_status_bo_omschrijving status, x.res_rsv_ruimte_key, x.prs_perslid_naam_full aanvrager, x.prs_afdeling_naam || '-' || x.prs_afdeling_omschrijving afdeling, x.afd_kostenplaats_nr, x.afd_kostenplaats_omschrijving, x.res_kostenplaats_nr, x.res_kostenplaats_omschrijving FROM (SELECT rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_key, rra.res_rsv_artikel_key, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rra.res_rsv_artikel_levering, COALESCE (rr.res_ruimte_nr, pa.alg_plaatsaanduiding) plaatsaanduiding, rd.ins_discipline_omschrijving, b.prs_bedrijf_naam, rra.res_artikel_omschrijving, rra.res_artikel_eenheid, rra.res_artikel_volgnummer, rra.res_rsv_artikel_aantal, rra.res_rsv_artikel_prijs verw_prijs, rra.res_rsv_artikel_aantal * rra.res_artikel_prijs prijs, rra.res_rsv_artikel_btw, rra.res_artikel_btw, rs.res_status_bo_omschrijving, pf.prs_perslid_naam_full, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, kpa.prs_kostenplaats_nr afd_kostenplaats_nr, kpa.prs_kostenplaats_omschrijving afd_kostenplaats_omschrijving, kpr.prs_kostenplaats_nr res_kostenplaats_nr, kpr.prs_kostenplaats_omschrijving res_kostenplaats_omschrijving FROM res_rsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, --alg_v_allonroerendgoed aog, (SELECT * FROM alg_v_plaatsaanduiding_all WHERE alg_onroerendgoed_type = 'R') pa, (SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, rra.res_rsv_artikel_levering, ra.res_discipline_key, ra.res_artikel_omschrijving, ra.res_artikel_eenheid, ra.res_artikel_volgnummer, rra.res_rsv_artikel_aantal, rra.res_rsv_artikel_prijs, ra.res_artikel_prijs, rra.res_status_bo_key, rra.res_rsv_artikel_btw, ra.res_artikel_btw FROM res_v_aanwezigrsv_artikel rra, res_artikel ra WHERE rra.res_rsv_artikel_dirtlevel = 0 --AND rra.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- KFSG#86670: Alle RES! AND rra.res_rsv_artikel_levering < TRUNC (ADD_MONTHS (SYSDATE, 1), 'mm') AND rra.res_artikel_key = ra.res_artikel_key) rra, res_v_aanwezigdiscipline rd, res_disc_params dp, prs_bedrijf b, res_status_bo rs, prs_perslid p, prs_v_perslid_fullnames_all pf, prs_afdeling a, prs_kostenplaats kpa, prs_kostenplaats kpr WHERE rrr.res_rsv_ruimte_dirtlevel = 0 AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rr.res_ruimte_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) --AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = pa.alg_onroerendgoed_keys(+) AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_discipline_key = rd.ins_discipline_key AND rd.ins_discipline_key = dp.res_ins_discipline_key AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+) AND rra.res_status_bo_key = rs.res_status_bo_key(+) AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = kpa.prs_kostenplaats_key(+) AND rrr.prs_kostenplaats_key = kpr.prs_kostenplaats_key(+)) x, fin_verkoopfactuur vf -- Aanname: Alleen gevuld met gefactureerde res_rsv_artikel! WHERE x.res_rsv_artikel_key = vf.fin_verkoopfactuur_refkey(+); -- KFSG#85774 Personeelsnummer toevoegen aan BPS-pasoverzicht in Facilitor -- Generieke view met objectgegevens inclussief basis persoonsgegevens. CREATE OR REPLACE VIEW kfsg_v_ins_deel_gegevens AS SELECT dg.ins_discipline_key fclt_3d_discipline, dg.ins_discipline_key, dg.ins_discipline_omschrijving, dg.ins_srtgroep_key, dg.ins_srtgroep_omschrijving, dg.ins_srtgroep_upper, dg.ins_srtdeel_key, dg.ins_srtdeel_omschrijving, dg.ins_srtdeel_upper, dg.alg_locatie_key, dg.alg_gebouw_key, dg.alg_gebouw_code, dg.alg_gebouw_naam, dg.alg_gebouw_omschrijving, dg.alg_gebouw_upper, dg.alg_verdieping_key, dg.alg_verdieping_omschrijving, dg.alg_verdieping_upper, dg.alg_verdieping_code, dg.alg_ruimte_key, dg.alg_ruimte_nr, dg.alg_ruimte_upper_nr, dg.prs_werkplek_key, dg.prs_werkplek_module, dg.prs_werkplek_volgnr, dg.alg_terreinsector_key, dg.alg_terreinsector_omschrijving, dg.alg_terreinsector_upper, dg.alg_plaatsaanduiding, dg.prs_afdeling_key, dg.prs_afdeling_omschrijving, dg.prs_afdeling_upper, dg.prs_perslid_key, dg.prs_perslid_volnaam, dg.ins_deel_key, dg.ins_deel_omschrijving, dg.ins_deel_upper, dg.ins_deel_aantal, dg.ins_deel_oppervlak, dg.ins_deel_omtrek, dg.ins_deel_aanmaak, dg.ins_deel_opmerking, dg.ins_deel_getekend, dg.ins_deel_vervaldatum, p.prs_perslid_nr, p.prs_perslid_email FROM ins_v_deel_gegevens dg, prs_perslid p WHERE dg.prs_perslid_key = p.prs_perslid_key(+); ------ 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