Files
Customer/WZKW/WZKW.sql
Norbert Wassink 1048f4de11 WZKW#80227 -- aanpassing berekening ruimte bedragen.
svn path=/Customer/trunk/; revision=68015
2025-02-17 16:45:38 +00:00

2631 lines
122 KiB
SQL

--
-- $Id$
--
DEFINE thisfile = 'WZKW.SQL'
DEFINE dbuser = 'WZKW'
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 WZKW
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE add_csv_row (p_bestand IN VARCHAR2,
p_regel IN VARCHAR2);
PROCEDURE add_xml_row (p_bestand IN VARCHAR2,
p_regel IN VARCHAR2);
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
PROCEDURE resetCashExport(p_reservering_key IN NUMBER,
p_datumExport IN VARCHAR2);
PROCEDURE setReserveringKenmerk(p_reservering_key IN NUMBER,
p_periode_van IN DATE,
p_periode_tot IN DATE,
p_kenmerk_key IN NUMBER);
PROCEDURE WZKW_GENERATE_FIN_VERKOOP(p_rrr_key IN NUMBER);
PROCEDURE BEZETTINGSGRAAD(user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor);
END;
/
CREATE OR REPLACE PACKAGE BODY WZKW
AS
PROCEDURE add_csv_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_regel);
END;
PROCEDURE add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_regel);
END;
PROCEDURE add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
wzkw.add_xml_row(p_bestand,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
-- Procedure om niet verwerkte res naar cash opmieuw aan te bieden
PROCEDURE resetCashExport(
p_reservering_key IN NUMBER,
p_datumExport IN VARCHAR2)
AS
CURSOR sel
IS
SELECT rrr.res_rsv_ruimte_key rrr_key,
rkw.res_kenmerk_key kenmerk_key
FROM res_rsv_ruimte rrr,
res_kenmerk rk,
res_kenmerkwaarde rkw,
res_srtkenmerk rsk
WHERE rrr.res_reservering_key=p_reservering_key
AND rkw.res_rsv_ruimte_key= rrr.res_rsv_ruimte_key
AND rkw.res_kenmerk_key=rk.res_kenmerk_key
AND rsk.res_srtkenmerk_key = rk.res_srtkenmerk_key
AND UPPER(rsk.res_srtkenmerk_omschrijving)='CASHSYNCDATE'
AND rkw.res_kenmerkreservering_waarde= p_datumexport;
BEGIN
FOR rec in sel
LOOP
flx.deleteflex('RES',rec.kenmerk_key,rec.rrr_key, NULL, NULL);
END LOOP;
Commit;
END;
PROCEDURE setReserveringKenmerk(p_reservering_key IN NUMBER, p_periode_van IN DATE, p_periode_tot IN DATE, p_kenmerk_key IN NUMBER)
AS
CURSOR res (v_reservering_key IN NUMBER, v_periode_van IN DATE, v_periode_tot IN DATE)
IS
SELECT rrr.res_rsv_ruimte_key rrr_key
FROM res_rsv_ruimte rrr,
res_kenmerkwaarde rkw,
res_kenmerk rk
where res_reservering_key=v_reservering_key
AND rrr.res_rsv_ruimte_van BETWEEN v_periode_van AND v_periode_tot
AND rrr.res_status_bo_key = 2
AND rrr.res_status_fo_key = 2;
BEGIN
FOR rec in res(p_reservering_key, p_periode_van, p_periode_tot)
LOOP
flx.setflex('RES',p_kenmerk_key, rec.rrr_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
END LOOP;
END;
PROCEDURE WZKW_GENERATE_FIN_VERKOOP(p_rrr_key IN NUMBER)
AS
CURSOR sel (v_rrr_key IN NUMBER)
IS
SELECT rrr_key,
reservering_key,
res_volgnr,
ruimte_oms,
bedrijf_key,
lev_nr,
kostenplaats_nr,
prijs,
contract_key,
contract_ref ref,
'Ruimte' soort,
'Contract' fact_type
FROM wzkw_v_fact_res_cnt
where rrr_key=v_rrr_key
AND soort_reservering='Contract'
UNION ALL
SELECT rrr_key,
reservering_key,
res_volgnr,
ruimte_oms,
bedrijf_key,
lev_nr,
kostenplaats_nr,
prijs,
NULL contract_key,
reservering_ref ref,
'Ruimte' soort,
'Incidenteel' fact_type
FROM wzkw_v_fact_res_incdtl
where rrr_key=v_rrr_key
AND soort_reservering='Incidenteel';
CURSOR sel_artdeel(v_rrr_key IN NUMBER)
IS
SELECT res_reservering_key reservering_key,
'Catering' oms,
SUM(ra.res_artikel_prijs*rra.res_rsv_artikel_aantal) prijs
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = v_rrr_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
GROUP BY res_reservering_key, 'Catering'
UNION ALL
SELECT rrr.res_reservering_key reservering_key,
'Object' oms,
SUM(rd.res_deel_prijs*rrd.res_rsv_deel_aantal) prijs
FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd
WHERE rrr.res_rsv_ruimte_key = v_rrr_key
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key
AND rrd.res_rsv_deel_verwijder IS NULL
GROUP BY res_reservering_key, 'Object';
v_verkoopfactuurkop_key NUMBER;
v_factuurdatum VARCHAR2(10);
v_lev_nr VARCHAR2(20);
v_count NUMBER;
v_count_artdeel NUMBER;
v_rrr_key NUMBER;
BEGIN
v_lev_nr:='';
v_rrr_key:=0;
v_count:=0;
v_count_artdeel:=0;
FOR rec In sel(p_rrr_key)
LOOP
BEGIN
SELECT fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key
FROM fin_verkoopfactuurkop
WHERE fin_verkoopfactuurkop_id=(rec.lev_nr || '-' || rec.reservering_key || '/'|| rec.res_volgnr);
EXCEPTION WHEN NO_DATA_FOUND THEN
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (rec.lev_nr || '-' || rec.reservering_key || '/'|| rec.res_volgnr)
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
END;
-- Gaan we eerst kijken of de rrr_key al in de verkoopfactuur table staat
SELECT COUNT(*)
INTO v_count
FROM fin_verkoopfactuur f
WHERE f.fin_verkoopfactuur_refkey=rec.rrr_key;
IF v_count >0 THEN
DELETE FROM fin_verkoopfactuur f
WHERE f.fin_verkoopfactuur_refkey=rec.rrr_key;
END IF;
-- Gaan we eerst de ruimte reservereing toevoegen
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,
prs_kostenplaats_nr,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_c1, -- Hierin leggen we het soort factuurregel vast ruimte, catering of object
fin_verkoopfactuur_n1, -- Hierin leggen we de status van de factuur vast 1=Nieuw, 2=Export
fin_verkoopfactuur_n2, -- Hier in slaan we het reservering_key op omdat alles gegropeerd nmoet worden op reservering_key
fin_verkoopfactuur_n3, -- 1=Ruimte 2=Catering/Object
fin_verkoopfactuur_n4, -- contract _key
fin_verkoopfactuur_c2, -- Referentie van de reservering via contract of de reservering zelf
fin_verkoopfactuur_c3 -- factuur_soort Contract of Incidenteel
)
VALUES (
v_verkoopfactuurkop_key,
rec.reservering_key || '/'|| rec.res_volgnr,
TRUNC(SYSDATE),
rec.ruimte_oms,
'reservering',
rec.rrr_key,
rec.bedrijf_key,
rec.lev_nr,
rec.kostenplaats_nr,
rec.prijs,
rec.soort,
1,
rec.reservering_key,
1,
rec.contract_key,
rec.ref,
rec.fact_type
);
-- Gaan we nu nog de catering en reserveerbare oibjecten toevoegen als deze er zijn.
FOR rec_art IN sel_artdeel(p_rrr_key)
LOOP
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,
prs_kostenplaats_nr,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_c1, -- Hierin leggen we het soort factuurregel vast ruimte, catering of object
fin_verkoopfactuur_n1, -- Hierin leggen we de status van de factuur vast 1=Nieuw, 2=Export
fin_verkoopfactuur_n2,
fin_verkoopfactuur_n3,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3
)
VALUES (
v_verkoopfactuurkop_key,
rec.reservering_key || '/'|| rec.res_volgnr,
TRUNC(SYSDATE),
rec.ruimte_oms,
'reservering',
rec.rrr_key,
rec.bedrijf_key,
rec.lev_nr,
rec.kostenplaats_nr,
rec_art.prijs,
rec_art.oms,
1,
rec.reservering_key,
2,
rec.contract_key,
rec.ref,
rec.fact_type
);
END LOOP;
END LOOP;
END;
PROCEDURE BEZETTINGSGRAAD(user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor)
AS
v_datum_van DATE;
v_datum_tot DATE;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'DD-MM-YYYY');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'DD-MM-YYYY');
OPEN p_cursor FOR
SELECT COALESCE(afd.alg_gebouw_code,res.alg_gebouw_code) gebouw_code,
(SELECT alg_gebouw_naam
from alg_gebouw
where alg_gebouw_code=COALESCE(afd.alg_gebouw_code,res.alg_gebouw_code)) gebouw_naam,
ROUND(res.bezetting) res_bezetting_proc,
res.aantal_ruimten res_ruimtes_aantal,
res.opp opp_res_ruimtes,
afd.bezetting afdeling_bezetting_proc,
afd.ruimtes afd_ruimtes_aantal,
afd.opp afd_opp
FROM
(SELECT
gebouw,
alg_gebouw_code,
COUNT (alg_ruimte_key) aantal_ruimten,
SUM (gebruik_uren) gebruik_uren,
SUM (beschikbaar_uren) beschikbaar_uren,
SUM (opp) opp,
(CASE
WHEN SUM (beschikbaar_uren) = 0
THEN
100
ELSE
ROUND ((SUM (gebruik_uren) / SUM (beschikbaar_uren)) * 100,
2)
END) bezetting
FROM ( SELECT g.alg_gebouw_key res_keycolumn,
g.alg_gebouw_naam gebouw,
g.alg_gebouw_code alg_gebouw_code,
x.alg_ruimte_key,
SUM (bezetting) gebruik_uren,
MAX (beschikbaar) beschikbaar_uren,
SUM(alg_ruimte_bruto_vloeropp) opp
FROM (SELECT beschik.alg_ruimte_key,
beschik.res_discipline_key,
beschik.res_ruimte_upper,
ROUND (NVL (bezetting, 0), 2) bezetting,
ROUND (NVL (beschikbaar, 0), 2) beschikbaar,
di.alg_regio_key,
l.alg_district_key,
l.alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key,
alg_ruimte_bruto_vloeropp
FROM ( SELECT alg_ruimte_key,
rarg.res_discipline_key,
SUM (
GREATEST (
0,
GREATEST (
LEAST (
TO_NUMBER (
TO_CHAR (
res_rsv_ruimte_tot_tz,
'SSSSS'))
/ 3600,
COALESCE (
res_ruimte_eindtijd,
24,
23.75),
8)
- LEAST (
GREATEST (
TO_NUMBER (
TO_CHAR (
res_rsv_ruimte_van_tz,
'SSSSS'))
/ 3600,
COALESCE (
res_ruimte_begintijd,
8),
8),
23.75)))) bezetting
FROM (SELECT r.res_rsv_ruimte_key,
ra.alg_ruimte_key,
ra.res_alg_ruimte_key,
rr.res_discipline_key,
r.res_rsv_ruimte_van,
r.res_rsv_ruimte_van
res_rsv_ruimte_van_tz,
r.res_rsv_ruimte_tot,
r.res_rsv_ruimte_tot
res_rsv_ruimte_tot_tz,
ra.res_alg_ruimte_aanmaak,
ra.res_alg_ruimte_verwijder,
rr.res_ruimte_begintijd,
rr.res_ruimte_eindtijd
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_rsv_ruimte_verwijder IS NULL
AND r.res_rsv_ruimte_dirtlevel = 0
AND ( rr.res_ruimte_startdatum
IS NULL
OR rr.res_ruimte_startdatum <=
v_datum_van)
AND ( rr.res_ruimte_vervaldatum
IS NULL
OR rr.res_ruimte_vervaldatum >
v_datum_van)
AND r.res_status_fo_key IN (1, 2)
AND r.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_ruimte_key =
ra.res_ruimte_key) rarg
WHERE res_rsv_ruimte_van BETWEEN v_datum_van
AND v_datum_tot
AND TO_CHAR (res_rsv_ruimte_van_tz, 'd') >= 0
AND TO_CHAR (res_rsv_ruimte_van_tz, 'd') <= 7
AND TRUNC (res_rsv_ruimte_van_tz) NOT IN
(SELECT mld_vrije_dagen_datum
FROM mld_vrije_dagen)
AND rarg.res_alg_ruimte_aanmaak <=
v_datum_tot
AND ( rarg.res_alg_ruimte_verwijder IS NULL
OR rarg.res_alg_ruimte_verwijder >=
v_datum_van)
GROUP BY alg_ruimte_key, rarg.res_discipline_key) bez,
(SELECT DISTINCT
rr1.res_discipline_key,
rr1.res_ruimte_upper,
ra.alg_ruimte_key,
( TO_NUMBER(v_datum_tot -
v_datum_van
- 1)
* (GREATEST (
0,
LEAST (
COALESCE (
rr1.res_ruimte_eindtijd,
24),
23.75)
- GREATEST (
COALESCE (
rr1.res_ruimte_begintijd,
8),
8)
- ( COALESCE (
rr1.res_ruimte_eindtijdblok,
12)
- COALESCE (
rr1.res_ruimte_begintijdblok,
12))))) beschikbaar
FROM res_ruimte rr1, res_alg_ruimte ra
WHERE rr1.res_ruimte_key = ra.res_ruimte_key
AND ra.res_alg_ruimte_aanmaak <=
v_datum_tot
AND ( rr1.res_ruimte_startdatum IS NULL
OR rr1.res_ruimte_startdatum <=
v_datum_van)
AND ( rr1.res_ruimte_vervaldatum IS NULL
OR rr1.res_ruimte_vervaldatum >
v_datum_van)
AND ( ra.res_alg_ruimte_verwijder IS NULL
OR ra.res_alg_ruimte_verwijder >=
v_datum_van))
beschik,
alg_v_ruimte_gegevens_all ruimte_geg,
alg_locatie l,
alg_district di
WHERE beschik.alg_ruimte_key = bez.alg_ruimte_key(+)
AND beschik.res_discipline_key =
bez.res_discipline_key(+)
AND beschik.alg_ruimte_key = ruimte_geg.alg_ruimte_key
AND ruimte_geg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
) x,
alg_gebouw g
WHERE x.alg_gebouw_key = g.alg_gebouw_key
GROUP BY g.alg_gebouw_key, g.alg_gebouw_naam, g.alg_gebouw_code,x.alg_ruimte_key) data
GROUP BY res_keycolumn, gebouw, alg_gebouw_code
ORDER BY gebouw
) res,
(
SELECT b.alg_gebouw_code,
ROUND(AVG(b.bezetting)) bezetting,
COUNT(*) ruimtes,
SUM(alg_ruimte_bruto_vloeropp) opp
FROM
(SELECT r.alg_ruimte_nr ruimte_nr,
a.ALG_GEBOUW_CODE alg_gebouw_code,
r.alg_ruimte_bruto_vloeropp alg_ruimte_bruto_vloeropp,
fac.safe_to_number (COALESCE (p.prs_ruimteafdeling_bezetting, 0)) bezetting
FROM alg_ruimte r,
prs_ruimteafdeling p,
alg_v_allonrgoed_gegevens a
WHERE r.alg_ruimte_key NOT IN
(SELECT alg_ruimte_key FROM res_alg_ruimte)
AND a.alg_ruimte_key = r.alg_ruimte_key
AND p.alg_ruimte_key(+) = r.alg_ruimte_key
AND r.alg_ruimte_key NOT IN (SELECT aok.alg_onrgoed_key
FROM alg_kenmerk ak, alg_onrgoedkenmerk aok
WHERE ak.alg_kenmerk_code='UITSLUITBEZETTINGSGRAAD'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND aok.alg_onrgoed_niveau='R')
ORDER BY 3, 2
) b
GROUP BY b.alg_gebouw_code
) afd
WHERE res.alg_gebouw_code(+)=afd.alg_gebouw_code;
END;
END;
/
-- EXPORTS
-- Export View
-- View tbv van de interne doorbealsting van de ruimtes met afdeling gekoppeld.
-- uitgaande van de 2024.1 release aanpassing mbt de afdeling bezetting tussen twee datums.
--CREATE OR REPLACE VIEW WZKW_V_INT_DOORBELAST_RUIMTES
--AS
-- SELECT ar.alg_ruimte_nr,
-- ar.alg_ruimte_omschrijving,
-- ok.alg_onrgoedkenmerk_waarde,
-- (SELECT prs_afdeling_naam
-- FROM prs_afdeling
-- WHERE prs_afdeling_key = pra.prs_afdeling_key) afdeling_code,
-- (SELECT prs_afdeling_omschrijving
-- FROM prs_afdeling
-- WHERE prs_afdeling_key = pra.prs_afdeling_key) afdeling_naam,
-- pra.prs_ruimteafdeling_bezetting,
-- fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) * (pra.prs_ruimteafdeling_bezetting/100) bedrag,
-- pra.prs_ruimteafdeling_ingangsdatum,
-- pra.prs_ruimteafdeling_einddatum
-- FROM prs_ruimteafdeling pra, alg_v_ruimte_gegevens ar, alg_kenmerk ak, alg_onrgoedkenmerk ok
-- WHERE pra.alg_ruimte_key = ar.ALG_RUIMTE_KEY
-- AND TRUNC (ADD_MONTHS (SYSDATE, 0)) BETWEEN TRUNC (
-- pra.prs_ruimteafdeling_ingangsdatum)
-- AND COALESCE (
-- TRUNC (
-- pra.prs_ruimteafdeling_einddatum),
-- TRUNC (SYSDATE))
-- AND ak.alg_kenmerk_code='DOORBELAST'
-- AND ok.alg_kenmerk_key = ak.alg_kenmerk_key
-- AND ok.alg_onrgoed_niveau='R'
-- AND ok.alg_onrgoed_key=ar.alg_ruimte_key;
-- View tbv van de interne doorbealsting van de interen reservereingn en ruimtes met afdeling gekoppeld.
CREATE OR REPLACE VIEW WZKW_V_INTERNE_DOORBELAST
(
soort,
datum_van,
datum_tot,
tijd_van,
tijd_tot,
omschrijving,
gebouw_naam,
gebouw_code,
ruimt,
aanvrager,
kostenplaats,
bedrag
)
AS
SELECT *
FROM (
SELECT 'RESERVERING'
soort,
TRUNC (rrr.res_rsv_ruimte_van)
datum_van,
TRUNC (rrr.res_rsv_ruimte_tot)
datum_tot,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI')
van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI')
tot,
rrr.res_rsv_ruimte_omschrijving
reservering_omschrijving,
aag.alg_gebouw_code
gebouw_code,
aag.alg_gebouw_naam,
rr.res_ruimte_nr,
(SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, fac_tracking ft
WHERE ft.FAC_TRACKING_REFKEY=rrr.res_rsv_ruimte_key
AND ft.FAC_SRTNOTIFICATIE_KEY=116
AND p.PRS_PERSLID_KEY=ft.PRS_PERSLID_KEY) aanvrager,
pka.prs_kostenplaats_nr
res_kostenplaats,
LTRIM(TO_CHAR(ROUND(COALESCE (rrr.res_rsv_ruimte_totaal,
res.getresruimteprijs (rr.res_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
0)),2),'999999999.99'))
prijs
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte rr,
res_ruimte_opstelling rro,
res_alg_ruimte rar,
alg_ruimte ar,
prs_kostenplaats pka,
alg_v_allonrgoed_gegevens aag
WHERE UPPER (ra.res_activiteit_omschrijving) = 'INTERNE RESERVERING'
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND rrr.res_status_fo_key = 2
AND rrr.res_status_bo_key = 2
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND ar.alg_ruimte_key = rar.alg_ruimte_key
AND rrr.prs_kostenplaats_key = pka.prs_kostenplaats_key(+)
-- AND p.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND aag.alg_ruimte_key = ar.alg_ruimte_key
UNION ALL
SELECT 'RESERVERING-CATERING'
soort,
TRUNC (rrr.res_rsv_ruimte_van)
datum_van,
TRUNC (rrr.res_rsv_ruimte_tot)
datum_tot,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI')
van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI')
tot,
rrr.res_rsv_ruimte_omschrijving
reservering_omschrijving,
aag.alg_gebouw_code
gebouw_code,
aag.alg_gebouw_naam,
rr.res_ruimte_nr,
(SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, fac_tracking ft
WHERE ft.FAC_TRACKING_REFKEY=rrr.res_rsv_ruimte_key
AND ft.FAC_SRTNOTIFICATIE_KEY=116
AND p.PRS_PERSLID_KEY=ft.PRS_PERSLID_KEY) aanvrager,
pka.prs_kostenplaats_nr
res_kostenplaats,
(SELECT LTRIM(TO_CHAR(ROUND(SUM(ra.res_artikel_prijs*rra.res_rsv_artikel_aantal),2),'999999999.99'))
FROM res_rsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key
AND ra.res_artikel_key=rra.res_artikel_key) prijs
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte rr,
res_ruimte_opstelling rro,
res_alg_ruimte rar,
alg_ruimte ar,
prs_kostenplaats pka,
alg_v_allonrgoed_gegevens aag
WHERE UPPER (ra.res_activiteit_omschrijving) = 'INTERNE RESERVERING'
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND rrr.res_status_fo_key = 2
AND rrr.res_status_bo_key = 2
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND ar.alg_ruimte_key = rar.alg_ruimte_key
AND rrr.prs_kostenplaats_key = pka.prs_kostenplaats_key(+)
-- AND p.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND aag.alg_ruimte_key = ar.alg_ruimte_key
UNION ALL
SELECT 'RESERVERING-DEEL'
soort,
TRUNC (rrr.res_rsv_ruimte_van)
datum_van,
TRUNC (rrr.res_rsv_ruimte_tot)
datum_tot,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI')
van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI')
tot,
rrr.res_rsv_ruimte_omschrijving
reservering_omschrijving,
aag.alg_gebouw_code
gebouw_code,
aag.alg_gebouw_naam,
rr.res_ruimte_nr,
(SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, fac_tracking ft
WHERE ft.FAC_TRACKING_REFKEY=rrr.res_rsv_ruimte_key
AND ft.FAC_SRTNOTIFICATIE_KEY=116
AND p.PRS_PERSLID_KEY=ft.PRS_PERSLID_KEY) aanvrager,
pka.prs_kostenplaats_nr
res_kostenplaats,
(SELECT LTRIM(TO_CHAR(ROUND(SUM(rd.res_deel_prijs),2),'999999999.99'))
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key
AND rd.res_deel_key=rrd.res_deel_key)
prijs
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte rr,
res_ruimte_opstelling rro,
res_alg_ruimte rar,
alg_ruimte ar,
prs_kostenplaats pka,
alg_v_allonrgoed_gegevens aag
WHERE UPPER (ra.res_activiteit_omschrijving) = 'INTERNE RESERVERING'
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND rrr.res_status_fo_key = 2
AND rrr.res_status_bo_key = 2
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND ar.alg_ruimte_key = rar.alg_ruimte_key
AND rrr.prs_kostenplaats_key = pka.prs_kostenplaats_key(+)
-- AND p.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND aag.alg_ruimte_key = ar.alg_ruimte_key
UNION ALL
SELECT 'RUIMTE-AFD'
soort,
TRUNC (pra.prs_ruimteafdeling_ingangsdatum) datum_van,
TRUNC (pra.prs_ruimteafdeling_einddatum) datum_tot,
NULL
van,
NULL
tot,
r.alg_ruimte_omschrijving
ruimte_omschrijving,
aag.alg_gebouw_code
gebouw_code,
aag.alg_gebouw_naam
gebouw_naam,
r.alg_ruimte_nr
ruimte_nr,
pa.prs_afdeling_naam
Afdeling,
(SELECT kpn.prs_kostenplaats_nr
FROM prs_kostenplaats kpn
WHERE kpn.prs_kostenplaats_key = pa.prs_kostenplaats_key)
kostenplaats,
LTRIM(TO_CHAR(ROUND(pra.prs_ruimteafdeling_bezetting/100* fac.safe_to_number(aok.alg_onrgoedkenmerk_waarde),'999999999.99'))) bedrag
FROM alg_ruimte r,
alg_v_allonrgoed_gegevens aag,
prs_ruimteafdeling pra,
prs_afdeling pa,
alg_kenmerk ak,
alg_onrgoedkenmerk aok
WHERE r.alg_ruimte_key = pra.alg_ruimte_key(+)
AND r.alg_ruimte_verwijder IS NULL
AND aag.alg_ruimte_key = r.alg_ruimte_key
AND pa.prs_afdeling_key = pra.prs_afdeling_key
AND ak.alg_kenmerk_code = 'DOORBELAST'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND aok.alg_onrgoed_key(+) = r.alg_ruimte_key
AND aok.alg_onrgoed_niveau = 'R'
UNION ALL
SELECT 'RUIMTE-KPN'
soort,
NULL datum_van,
NULL datum_tot,
NULL
van,
NULL
tot,
r.alg_ruimte_omschrijving
ruimte_omschrijving,
aag.alg_gebouw_code
gebouw_code,
aag.alg_gebouw_naam
gebouw_naam,
r.alg_ruimte_nr
ruimte_nr,
(SELECT kpn.PRS_KOSTENPLAATS_Omschrijving
FROM prs_kostenplaats kpn, alg_onrgoedkenmerk aok2, alg_kenmerk ak2
WHERE kpn.prs_kostenplaats_key = fac.safe_to_number(aok2.alg_onrgoedkenmerk_waarde)
AND aok2.ALG_KENMERK_KEY=ak2.ALG_KENMERK_KEY
AND ak2.ALG_KENMERK_CODE LIKE SUBSTR(ak.alg_kenmerk_code,0,5)
AND aok2.ALG_ONRGOED_KEY=r.alg_ruimte_key
AND aok2.ALG_ONRGOED_NIVEAU='R'
AND ak2.ALG_KENMERK_VERWIJDER IS NULL)
Afdeling,
(SELECT kpn.PRS_KOSTENPLAATS_NR
FROM prs_kostenplaats kpn, alg_onrgoedkenmerk aok2, alg_kenmerk ak2
WHERE kpn.prs_kostenplaats_key = fac.safe_to_number(aok2.alg_onrgoedkenmerk_waarde)
AND aok2.ALG_KENMERK_KEY=ak2.ALG_KENMERK_KEY
AND ak2.ALG_KENMERK_CODE LIKE SUBSTR(ak.alg_kenmerk_code,0,5)
AND aok2.ALG_ONRGOED_KEY=r.alg_ruimte_key
AND aok2.ALG_ONRGOED_NIVEAU='R'
AND ak2.ALG_KENMERK_VERWIJDER IS NULL) kostenplaats,
LTRIM(TO_CHAR(ROUND(fac.safe_to_number(aok.alg_onrgoedkenmerk_waarde)/100*
fac.safe_to_number(db.alg_onrgoedkenmerk_waarde),'999999999.99'))) bedrag
FROM alg_ruimte r,
alg_v_allonrgoed_gegevens aag,
alg_kenmerk ak,
alg_onrgoedkenmerk aok,
(SELECT *
FROM alg_onrgoedkenmerk o, alg_kenmerk a
WHERE a.alg_kenmerk_code = 'DOORBELAST'
AND o.alg_kenmerk_key = a.alg_kenmerk_key
AND o.alg_onrgoed_niveau = 'R') db
WHERE r.alg_ruimte_verwijder IS NULL
AND aag.alg_ruimte_key = r.alg_ruimte_key
AND ak.alg_kenmerk_code LIKE '%_KPN_PERC'
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND aok.alg_onrgoed_key = r.alg_ruimte_key
AND aok.alg_onrgoed_niveau = 'R'
AND aok.ALG_ONRGOEDKENMERK_VERWIJDER IS NULL
AND aok.ALG_ONRGOEDKENMERK_WAARDE IS NOT NULL
AND db.ALG_ONRGOED_KEY = r.ALG_ruimte_KEY
)
WHERE (soort LIKE 'RESERVERING%' AND datum_van IS NOT NULL AND datum_van BETWEEN TRUNC(ADD_MONTHS(SYSDATE, 0), 'Q')
AND LAST_DAY(ADD_MONTHS(SYSDATE, 0)))
OR (soort LIKE 'RUIMTE-%' AND datum_van IS NULL);
-- View van alle externe reserveringen
CREATE OR REPLACE VIEW WZKW_V_RESERVERINGEN
AS
SELECT *
FROM (SELECT rrr.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr volgnr,
rrr.res_rsv_ruimte_aanmaak aanmk_datum,
(SELECT rkw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde rkw,
res_kenmerk rk,
res_srtkenmerk rsk
WHERE rkw.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key
AND rkw.res_kenmerk_key=rk.res_kenmerk_key
AND rsk.res_srtkenmerk_key=rk.res_srtkenmerk_key
AND rsk.res_srtkenmerk_omschrijving='CashSyncDate') last_export,
rrr.res_rsv_ruimte_verwijder verw_datum,
COALESCE(rer.res_ruimte_friendlyname,alg.alg_ruimte_nr) ruimte_nr,
(SELECT PRS_PERSLID_NAAM_FRIENDLY
FROM PRS_V_PERSLID_FULLNAMES
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
rrr.RES_RSV_RUIMTE_VAN datum_van,
rrr.RES_RSV_RUIMTE_TOT datum_tot,
rrr.res_rsv_ruimte_omschrijving oms,
COALESCE(rrr.res_rsv_ruimte_totaal,res.getresruimteprijs(rer.res_ruimte_key,rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot)) prijs,
rrr.res_status_fo_key fo_status,
rrr.res_rsv_ruimte_dirtlevel dirtlevel,
(SELECT b.prs_leverancier_nr
FROM res_kenmerkwaarde rkw,
prs_bedrijf b
WHERE rkw.res_rsv_ruimte_key=rrr.res_rsv_ruimte_key
AND b.prs_bedrijf_key = fac.safe_to_number(rkw.res_kenmerkreservering_waarde)) huurder,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key=rrr.prs_kostenplaats_key) kostenplaats
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte_opstelling rop,
res_ruimte rer,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg
WHERE rrr.res_status_bo_key = 2
AND rrr.res_status_fo_key= 2
AND rrr.res_activiteit_key=ra.res_activiteit_key
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND ra.res_activiteit_verwijder IS NULL
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
-- AND rrr.res_rsv_ruimte_van < SYSDATE
ORDER BY 16,2,3);
CREATE OR REPLACE VIEW wzkw_v_fact_res_cnt
AS
SELECT rrr.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr res_volgnr,
rrr.res_rsv_ruimte_van ruimte_van,
b.prs_bedrijf_key bedrijf_key,
b.prs_leverancier_nr lev_nr,
b.prs_bedrijf_naam huurder,
rrr.res_rsv_ruimte_omschrijving rrr_oms,
'Huur ' || rer.res_ruimte_nr ruimte_oms,
alg.ALG_RUIMTE_NR ruimte_NR,
COALESCE (fac.safe_to_number(contract_prijs.res_kenmerkreservering_waarde),
rrr.res_rsv_ruimte_totaal,
res.getresruimteprijs (
rer.res_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
0)) prijs,
(SELECT SUM(COALESCE(rra.res_rsv_artikel_prijs,
rra.RES_RSV_ARTIKEL_AANTAL*ra.res_artikel_prijs))
FROM res_rsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key) catering,
(SELECT SUM(COALESCE(rrd.res_rsv_deel_prijs,
rrd.RES_RSV_deel_AANTAL*rd.res_deel_prijs))
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key) object,
'Contract' soort_reservering,
c.cnt_contract_key contract_key,
ct.cnt_termijn_aantal fact_periode_aantal,
ct.cnt_termijn_type fact_interval,
TO_CHAR (rrr.res_rsv_ruimte_van, 'YYYY') fact_jaar,
DECODE (ct.cnt_termijn_aantal,
3, 'Q','MM') fact_periode,
DECODE (ct.CNT_TERMIJN_AANTAL,
1, TO_CHAR (rrr.res_rsv_ruimte_van, 'MM'),
'') fact_maand,
(SELECT ck.cnt_kenmerk_key
FROM cnt_kenmerk ck
WHERE ck.cnt_kenmerk_code='LASTINVOICEDATE'
AND ck.cnt_kenmerk_verwijder IS NULL) lastinvoicedate_key,
(SELECT TO_DATE (ckc.cnt_kenmerkcontract_waarde, 'DD-MM-YYYY')
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ck.cnt_kenmerk_code = 'LASTINVOICEDATE'
AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ckc.cnt_kenmerkcontract_verwijder IS NULL
AND ckc.cnt_contract_key = c.cnt_contract_key) lastinvoicedate,
(SELECT p.prs_kostenplaats_nr
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_key=c.prs_kostenplaats_key) kostenplaats_nr,
(SELECT ckc.cnt_kenmerkcontract_waarde
FROM cnt_kenmerkcontract ckc, cnt_kenmerk ck
WHERE ck.cnt_kenmerk_code = 'CONTRACTREF'
AND ckc.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ckc.cnt_kenmerkcontract_verwijder IS NULL
AND ckc.cnt_contract_key = c.cnt_contract_key) contract_ref
FROM res_rsv_ruimte rrr,
RES_ACTIVITEIT ra,
res_kenmerkwaarde rkw,
res_kenmerk rk,
res_ruimte_opstelling rop,
res_alg_ruimte rarm,
res_ruimte rer,
alg_v_ruimte_gegevens_all alg,
prs_bedrijf b,
cnt_contract c,
CNT_TERMIJN ct,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.RES_KENMERK_CODE = 'CNT_BEDRAG'
AND rkw.res_kenmerk_key = rk.RES_KENMERK_KEY) contract_prijs
WHERE rrr.res_status_bo_key = 2
AND rrr.res_status_fo_key = 2
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_kenmerk_code = 'HUURDERS'
AND rrr.res_rsv_ruimte_key NOT IN
(SELECT rkw2.RES_RSV_RUIMTE_KEY
FROM res_kenmerkwaarde rkw2, res_kenmerk rk2
WHERE rkw2.res_kenmerk_key = rk2.res_kenmerk_key
AND rk2.res_kenmerk_code = 'FACTUURSYNC')
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
AND contract_prijs.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND b.prs_bedrijf_key =
fac.safe_to_number (rkw.res_kenmerkreservering_waarde)
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND c.cnt_contract_status = 0
AND ct.cnt_termijn_key(+) = c.cnt_contract_termijntermijn
AND alg.alg_ruimte_key IN
(SELECT ccp.cnt_alg_plaats_key
FROM cnt_contract_plaats ccp
WHERE ccp.cnt_contract_key = c.cnt_contract_key)
AND rrr.res_rsv_ruimte_key NOT IN (SELECT rkw2.res_rsv_ruimte_key
FROM res_kenmerkwaarde rkw2, res_kenmerk rk2
WHERE rkw2.res_kenmerk_key = rk2.res_kenmerk_key
AND rk2.res_kenmerk_code = 'INCIDENTEEL'
AND rk2.res_kenmerk_verwijder IS NULL)
AND TRUNC(rrr.res_rsv_ruimte_van)
BETWEEN TRUNC(c.cnt_contract_looptijd_van)
AND TRUNC(c.cnt_contract_looptijd_tot)
ORDER BY 5, 2, 3;
CREATE OR REPLACE VIEW wzkw_v_fact_res_incdtl
AS
SELECT rrr.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr res_volgnr,
rrr.res_rsv_ruimte_van ruimte_van,
b.prs_bedrijf_key bedrijf_key,
b.prs_leverancier_nr lev_nr,
b.prs_bedrijf_naam huurder,
COALESCE(rer.RES_RUIMTE_FRIENDLYNAME,
rrr.res_rsv_ruimte_omschrijving) rrr_oms,
'Huur ' || rer.res_ruimte_nr ruimte_oms,
alg.ALG_RUIMTE_NR ruimte_NR,
COALESCE (fac.safe_to_number(comm_prijs.res_kenmerkreservering_waarde),
res.getresruimteprijs (
rer.res_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
1)) prijs,
(SELECT SUM(COALESCE(rra.res_rsv_artikel_prijs,rra.RES_RSV_ARTIKEL_AANTAL*ra.res_artikel_prijs))
FROM res_rsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key) catering,
(SELECT SUM(COALESCE(rrd.res_rsv_deel_prijs,rrd.RES_RSV_deel_AANTAL*rd.res_deel_prijs))
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key) object,
'Incidenteel' soort_reservering,
TO_CHAR (rrr.res_rsv_ruimte_van, 'YYYY') fact_jaar,
(SELECT p.prs_kostenplaats_nr
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_key=rrr.prs_kostenplaats_key) kostenplaats_nr,
(SELECT rkr.res_kenmerkreservering_waarde
FROM RES_KENMERKWAARDE rkr, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'RESERVERINGREF'
AND rkr.res_kenmerk_key = rk.res_kenmerk_key
AND rkr.res_kenmerkwaarde_verwijder IS NULL
AND rkr.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) reservering_ref
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_kenmerkwaarde rkw,
res_kenmerk rk,
res_ruimte_opstelling rop,
res_alg_ruimte rarm,
res_ruimte rer,
alg_v_ruimte_gegevens_all alg,
res_kenmerkwaarde rkw2,
res_kenmerk rk2,
prs_bedrijf b,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.RES_KENMERK_CODE = 'COMM_BEDRAG'
AND rkw.res_kenmerk_key = rk.RES_KENMERK_KEY) comm_prijs
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rkw.RES_KENMERKRESERVERING_WAARDE='1'
AND rk.res_kenmerk_code = 'INCIDENTEEL'
AND rk.res_kenmerk_verwijder IS NULL
AND rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_status_bo_key = 2
AND rrr.res_status_fo_key = 2
AND comm_prijs.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
AND rkw2.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rkw2.res_kenmerk_key = rk2.res_kenmerk_key
AND rk2.res_kenmerk_code = 'HUURDERS'
AND b.prs_bedrijf_key =
fac.safe_to_number (rkw2.res_kenmerkreservering_waarde)
AND rrr.res_rsv_ruimte_key NOT IN
(SELECT rkw2.res_rsv_ruimte_key
FROM res_kenmerkwaarde rkw2, res_kenmerk rk2
WHERE rkw2.res_kenmerk_key = rk2.res_kenmerk_key
AND rk2.res_kenmerk_code = 'FACTUURSYNC')
ORDER BY 5, 2, 3;
CREATE OR REPLACE VIEW wzkw_v_fact_res_intern
AS
/* Formatted on 11-11-2024 14:59:10 (QP5 v5.336) */
SELECT rrr.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr res_volgnr,
to_char(rrr.res_rsv_ruimte_van,'Q') kwartaal,
to_char(rrr.res_rsv_ruimte_van,'YYYY') jaar,
rrr.res_rsv_ruimte_van ruimte_van,
COALESCE(rer.RES_RUIMTE_FRIENDLYNAME,
rrr.res_rsv_ruimte_omschrijving) rrr_oms,
'Res Intern ' || rer.res_ruimte_nr ruimte_oms,
alg.ALG_GEBOUW_UPPER gebouw_code,
alg.ALG_RUIMTE_NR ruimte_NR,
res.getresruimteprijs (
rer.res_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
0) prijs,
rrr.RES_RSV_RUIMTE_PRIJS rrr_prijs,
(SELECT SUM(COALESCE(rra.res_rsv_artikel_prijs,rra.RES_RSV_ARTIKEL_AANTAL*ra.res_artikel_prijs))
FROM res_rsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key) catering,
(SELECT SUM(COALESCE(rrd.res_rsv_deel_prijs,rrd.RES_RSV_deel_AANTAL*rd.res_deel_prijs))
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key) object,
'Intern' soort_reservering,
TO_CHAR (rrr.res_rsv_ruimte_van, 'YYYY') fact_jaar,
(SELECT p.prs_kostenplaats_nr
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_key=rrr.prs_kostenplaats_key) kostenplaats_nr,
(SELECT rkr.res_kenmerkreservering_waarde
FROM RES_KENMERKWAARDE rkr, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'RESERVERINGREF'
AND rkr.res_kenmerk_key = rk.res_kenmerk_key
AND rkr.res_kenmerkwaarde_verwijder IS NULL
AND rkr.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) reservering_ref
FROM res_rsv_ruimte rrr,
res_activiteit ra,
res_ruimte_opstelling rop,
res_alg_ruimte rarm,
res_ruimte rer,
alg_v_ruimte_gegevens_all alg
WHERE
rrr.res_status_bo_key = 2
AND rrr.res_status_fo_key = 2
AND ra.res_activiteit_omschrijving = 'Interne reservering'
AND rrr.RES_ACTIVITEIT_KEY = ra.RES_ACTIVITEIT_KEY
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
-- AND rrr.res_reservering_key=2036
AND rrr.res_rsv_ruimte_key NOT IN
(SELECT rkw2.res_rsv_ruimte_key
FROM res_kenmerkwaarde rkw2, res_kenmerk rk2
WHERE rkw2.res_kenmerk_key = rk2.res_kenmerk_key
AND rk2.res_kenmerk_code = 'FACTUURSYNC_INT')
ORDER BY 4, 2, 3;
CREATE OR REPLACE VIEW wzkw_v_fact_all
(
rrr_key,
reservering_key,
volgnr,
huurder,
leverancier_nr,
Ruimte_nr,
reservering_datum,
kostenplaats,
contract_key,
prijs,
catering,
object,
totaal,
soort
)
AS
SELECT c.rrr_key,
c.reservering_key reservering_key,
c.res_volgnr volgnr,
c.huurder huurder,
c.lev_nr leverancier_nr,
c.ruimte_nr Ruimte_nr,
c.ruimte_van reservering_datum,
c.kostenplaats_nr kostenplaats,
c.lastinvoicedate contract_key,
c.prijs prijs,
c.catering catering,
c.object object,
c.prijs+c.catering+c.object totaal,
'Contract' soort
FROM wzkw_v_fact_res_cnt c
UNION ALL
SELECT i.rrr_key,
i.reservering_key reservering_key,
i.res_volgnr volgnr,
i.huurder huurder,
i.lev_nr leverancier_nr,
i.ruimte_nr Ruimte_nr,
i.ruimte_van reservering_datum,
i.kostenplaats_nr kostenplaats,
NULL contract_key,
i.prijs prijs,
i.catering catering,
i.object object,
i.prijs+i.catering+i.object totaal,
'Incidenteel' soort
FROM wzkw_v_fact_res_incdtl i;
-- EXPORT RES2CASH 1 of reserveringen
CREATE OR REPLACE PROCEDURE WZKW_SELECT_RES2CASHXML (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel_res
IS
SELECT *
FROM wzkw_v_reserveringen
WHERE last_export IS NULL
AND TO_CHAR(datum_van,'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,1),'MM-YYYY'); -- aanpassen naar juiste periode
CURSOR sel_art(v_rrr_key IN NUMBER)
IS
SELECT rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr volgnr,
ra.res_artikel_omschrijving||' ('||ra.res_artikel_eenheid||')' oms,
ra.res_artikel_nr artikelnr,
ra.res_artikel_prijs prijs,
rra.res_rsv_artikel_aantal aantal,
'L' btwCode
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = v_rrr_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION ALL
SELECT rrr.res_reservering_key reservering_key,
rrr.res_rsv_ruimte_volgnr volgnr,
rd.res_deel_omschrijving omschrijving,
NULL artikelnr,
rd.res_deel_prijs prijs,
rrd.res_rsv_deel_aantal aantal,
'H' btwCode
FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd
WHERE rrr.res_rsv_ruimte_key = v_rrr_key
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key
AND rrd.res_rsv_deel_verwijder IS NULL;
v_bestand VARCHAR2(20);
v_count NUMBER;
v_regel NUMBER;
v_huurder VARCHAR2(50);
v_reservering_key NUMBER;
v_prijs_tot NUMBER;
v_maand NUMBER;
v_SyncDate_Key NUMBER;
v_error NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
BEGIN
v_bestand:= 'CSH_RESX';
v_count:=0;
v_regel:=0;
v_reservering_key:=0;
v_error:=0;
DELETE FROM fac_rapport WHERE fac_rapport_node LIKE 'CSH_RESX';
BEGIN
SELECT rk.res_kenmerk_key
INTO v_SyncDate_Key
FROM res_activiteit ra,
res_kenmerk rk,
RES_SRTKENMERK rsk
WHERE UPPER(rsk.RES_srtkenmerk_omschrijving) = 'CASHSYNCDATE'
AND rk.res_srtkenmerk_key = rsk.res_srtkenmerk_key
AND rk.RES_ACTIVITEIT_KEY = ra.RES_ACTIVITEIT_KEY
AND ra.RES_ACTIVITEIT_OMSCHRIJVING = 'Externe reservering'
AND ra.RES_ACTIVITEIT_VERWIJDER IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
v_errormsg:='Kenmerk key voor ExtrenSyncDate op ACtiviteot Externe reservering niet gevonden';
fac.writelog ('RES2CASH', 'E', v_errormsg, v_errorhint);
END;
IF v_error=0 THEN
FOR rec IN sel_res
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
wzkw.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
wzkw.add_xml_row (v_bestand, '<Reserveringen>');
END IF;
v_regel:=v_regel+1;
wzkw.add_xml_row (v_bestand, '<Reservering>');
wzkw.add_xml_element (v_bestand, 'reservering_key', rec.reservering_key);
wzkw.add_xml_element (v_bestand, 'reservering_volgnr', rec.volgnr);
wzkw.add_xml_element (v_bestand, 'omschrijving', SUBSTR(rec.oms,1,40));
wzkw.add_xml_element (v_bestand, 'aantal', '1.00');
wzkw.add_xml_element (v_bestand, 'bedrag', LTRIM(TO_CHAR(ROUND(rec.prijs,2),'999999999.99')));
wzkw.add_xml_element (v_bestand, 'btwcode', 'H');
wzkw.add_xml_element (v_bestand, 'factuuregel', v_regel);
wzkw.add_xml_element (v_bestand, 'relatie', rec.huurder);
wzkw.add_xml_element (v_bestand, 'kostenplaats', rec.kostenplaats);
wzkw.add_xml_row (v_bestand, '</Reservering>');
-- Gaan we nu kijken of deze resrevereing ook losse artikelen heeft
FOR rec_art in sel_art(rec.rrr_key)
LOOP
v_regel:=v_regel+1;
wzkw.add_xml_row (v_bestand, '<Reservering>');
wzkw.add_xml_element (v_bestand, 'reservering_key', rec_art.reservering_key);
wzkw.add_xml_element (v_bestand, 'reservering_volgnr', rec_art.volgnr);
wzkw.add_xml_element (v_bestand, 'omschrijving', SUBSTR(rec_art.oms,1,40));
wzkw.add_xml_element (v_bestand, 'aantal', LTRIM(TO_CHAR(ROUND(rec_art.aantal,2),'999999999.99')));
wzkw.add_xml_element (v_bestand, 'bedrag', LTRIM(TO_CHAR(ROUND(rec_art.prijs,2),'999999999.99')));
wzkw.add_xml_element (v_bestand, 'btwcode', rec_art.btwCode);
wzkw.add_xml_element (v_bestand, 'factuuregel', v_regel);
wzkw.add_xml_element (v_bestand, 'relatie', rec.huurder);
wzkw.add_xml_element (v_bestand, 'kostenplaats', rec.kostenplaats);
wzkw.add_xml_row (v_bestand, '</Reservering>');
END LOOP;
flx.setflex('RES',v_SyncDate_Key, rec.rrr_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
END LOOP;
IF v_count>0 THEN
wzkw.add_xml_row (v_bestand, '</Reserveringen>');
END IF;
IF v_count=0 THEN
-- We hebben niets om te exporteren dan gooien we ook XML tags weg.
DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand;
END IF;
END IF;
fac.writelog ('RES2CASHXML', 'M', 'Er zijn '||v_count||' reservereinge verstuurd naar Cash', 'Export2Cash');
END;
/
CREATE OR REPLACE VIEW WZKW_V_EXPORT_RES2CASHXML (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESX%'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
-- EINDE EXPORT RES2CASH
-- EXPORT RES2CASHCSV 1 of reserveringen
CREATE OR REPLACE PROCEDURE WZKW_SELECT_RES2CASHCSV (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel_res
IS
SELECT rrr_key,
reservering_key,
ruimte_van,
huurder,
lev_nr,
bedrijf_key,
contract_key,
ruimte_oms,
lastinvoicedate_key,
TRUNC(lastinvoicedate) lastinvoicedate,
fact_periode ,
fact_interval,
prijs,
TRUNC(SYSDATE,fact_periode) no_invoicedatstart,
TRUNC(SYSDATE,fact_periode) firstStartDatumPeriode,
last_day(ADD_MONTHS(trunc(SYSDATE+2, fact_periode),fact_periode_aantal-1)) firstEindDatumPeriode,
ADD_MONTHS(trunc(lastinvoicedate,fact_periode), fact_periode_aantal) startDatumPeriode,
last_day(ADD_MONTHS(trunc(SYSDATE, fact_periode),fact_periode_aantal-1)) eindDatumPeriode
FROM wzkw_v_fact_res_cnt
WHERE ( lastinvoicedate IS NOT NULL
AND TRUNC(SYSDATE) >= ADD_MONTHS(trunc(lastinvoicedate,fact_periode),fact_periode_aantal)
AND ruimte_van BETWEEN ADD_MONTHS(trunc(lastinvoicedate,fact_periode), fact_periode_aantal)
AND last_day(ADD_MONTHS(trunc(SYSDATE, fact_periode),fact_periode_aantal-1))
)
OR
(lastinvoicedate IS NULL
AND ruimte_van BETWEEN TRUNC(SYSDATE,fact_periode)
AND last_day(ADD_MONTHS(trunc(SYSDATE+2, fact_periode),fact_periode_aantal-1))
)
AND soort_reservering='Contract';
--GROUP BY RESERVERING_KEY,HUURDER,lev_nr,BEDRIJF_KEY,CONTRACT_KEY, RUIMTE_OMS,lastinvoicedate_key,LASTINVOICEDATE,FACT_PERIODE,fact_interval;
CURSOR sel_finv
IS
SELECT fin_verkoopfactuur_n2 reservering_key,
prs_debiteur_naam huurder,
fin_verkoopfactuur_c1 soort,
fin_verkoopfactuur_omschr oms,
fin_verkoopfactuur_n4 contract_key,
fin_verkoopfactuur_n3 volgnr,
prs_kostenplaats_nr kostenplaats_nr,
fin_verkoopfactuur_c2 res_ref,
SUM (fin_verkoopfactuur_bedrag) prijs,
COUNT (*) aantal
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_c3 ='Contract'
AND fin_verkoopfactuur_n1=1
GROUP BY fin_verkoopfactuur_n2,
prs_debiteur_naam,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n3,
prs_kostenplaats_nr,
fin_verkoopfactuur_c2
ORDER BY fin_verkoopfactuur_n2, fin_verkoopfactuur_n3;
CURSOR sel_upd
IS
SELECT fin_verkoopfactuur_refkey rrr_key,
fin_verkoopfactuur_n4 contract_key
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_c3 ='Contract'
AND fin_verkoopfactuur_n1=2;
v_bestand VARCHAR2(20);
v_count NUMBER;
v_regel NUMBER;
v_huurder VARCHAR2(50);
v_csv_regel VARCHAR2(2000);
v_reservering_key NUMBER;
v_prijs_tot NUMBER;
v_maand NUMBER;
v_SyncDate_Key NUMBER;
v_lastinvoicedate_key NUMBER;
v_error NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_omschrijving VARCHAR2(200);
v_servicecost NUMBER;
v_energiecost NUMBER;
v_grootboek VARCHAR2(10);
v_contractverwijs VARCHAR2(40);
BEGIN
v_bestand:= 'CSH_RESC';
v_count:=0;
v_regel:=0;
v_reservering_key:=0;
v_error:=0;
v_grootboek:='';
v_contractverwijs:='';
DELETE FROM fac_rapport WHERE fac_rapport_node LIKE 'CSH_RESC';
BEGIN
SELECT rk.res_kenmerk_key
INTO v_SyncDate_Key
FROM res_activiteit ra,
res_kenmerk rk
WHERE rk.RES_KENMERK_CODE = 'FACTUURSYNC'
AND rk.res_activiteit_key = ra.res_activiteit_key
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND ra.res_activiteit_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
v_errormsg:='Kenmerk key met code FACTUURSYNC op Activiteit Externe reservering niet gevonden';
fac.writelog ('RES2CASH', 'E', v_errormsg, v_errorhint);
END;
IF v_error=0 THEN
-- Gaan we eerst de fin_verkoopfactuur vullen met alle te exporteren reserveringen
FOR rec IN sel_res
LOOP
wzkW.WZKW_GENERATE_FIN_VERKOOP(rec.rrr_key);
END LOOP;
-- Gaan we ni over de fin_verkoopfactuur loopen om de unieke reservering_key er uit te krijgen.
v_huurder:='';
FOR rex_exp IN sel_finv
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
v_contractverwijs:=rex_exp.res_ref;
v_huurder:=rex_exp.huurder;
v_reservering_key:=rex_exp.reservering_key;
END IF;
IF (v_count>1 AND v_reservering_key <> rex_exp.reservering_key) THEN
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('',1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=8210|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_contractverwijs,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=8210|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_huurder:=rex_exp.huurder;
v_reservering_key:=rex_exp.reservering_key;
v_contractverwijs:=rex_exp.res_ref;
END IF;
IF rex_exp.soort='Ruimte' THEN
v_grootboek:='8200';
ELSIF rex_exp.soort='Catering' THEN
v_grootboek:='7110';
ELSIF rex_exp.soort='Object' THEN
v_grootboek:='8115';
ELSE
v_grootboek:='';
END IF ;
v_omschrijving:= rex_exp.soort||' '||rex_exp.oms||' ('||rex_exp.aantal||'x)';
v_csv_regel:='0440|0101='||rex_exp.huurder||'|0425='||rex_exp.reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_omschrijving,1,40)||'|0421=1.00|0455='||LTRIM(TO_CHAR(ROUND(rex_exp.prijs,2),'999999999.99'))||'|0442=|0118=|0201='||v_grootboek||'|0911='||rex_exp.kostenplaats_nr||'|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
-- IF LENGTH(v_omschrijving)>40
-- THEN
-- v_count:=v_count+1;
-- v_csv_regel:='0440|0101='||rex_exp.huurder||'|0425='||rex_exp.reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_omschrijving,41,80)||'|0421=1.00|0455='||LTRIM(TO_CHAR(ROUND(rex_exp.prijs,2),'999999999.99'))||'|0442=|0118=|0201='||v_grootboek||'|0911='||rex_exp.kostenplaats_nr||'|1919=|';
-- wzkw.add_csv_row (v_bestand, v_csv_regel);
-- END IF;
IF rex_exp.volgnr='1' THEN -- volgnr=1 betekend ruimte dus gaan we gelijk de service en energie kosten inboeken
SELECT COALESCE((
SELECT fac.safe_to_number(ckw1.CNT_KENMERKCONTRACT_WAARDE)
FROM cnt_kenmerkcontract ckw1, cnt_kenmerk ck1
WHERE ckw1.CNT_CONTRACT_KEY = c.CNT_CONTRACT_KEY
AND ckw1.CNT_KENMERK_KEY = ck1.CNT_KENMERK_KEY
AND ck1.CNT_KENMERK_CODE = 'SERVICECOST'),
0) serviceCost,
COALESCE(( SELECT fac.safe_to_number(ckw1.CNT_KENMERKCONTRACT_WAARDE)
FROM cnt_kenmerkcontract ckw1, cnt_kenmerk ck1
WHERE ckw1.CNT_CONTRACT_KEY = c.CNT_CONTRACT_KEY
AND ckw1.CNT_KENMERK_KEY = ck1.CNT_KENMERK_KEY
AND ck1.CNT_KENMERK_CODE = 'ENERGIECOST'),0) energieCost
INTO v_servicecost,
v_energiecost
FROM cnt_contract c
WHERE c.cnt_contract_key = rex_exp.contract_key;
IF v_servicecost>0 THEN -- alleen als we ook een bedrag hebben
v_count:=v_count+1;
v_csv_regel:='0440|0101='||rex_exp.huurder||'|0425='||rex_exp.reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('Service kosten',1,40)||'|0421=1.00|0455='||LTRIM(TO_CHAR(ROUND(v_servicecost,2),'999999999.99'))||'|0442=|0118=|0201=8299|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
END IF;
IF v_energiecost>0 THEN -- alleen als we ook een bedrag hebben
v_count:=v_count+1;
v_csv_regel:='0440|0101='||rex_exp.huurder||'|0425='||rex_exp.reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('Energie kosten',1,40)||'|0421=1.00|0455='||LTRIM(TO_CHAR(ROUND(v_energiecost,2),'999999999.99'))||'|0442=|0118=|0201=8210|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
END IF;
END IF;
END LOOP;
IF v_count>0 THEN
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('',1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=8210|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_contractverwijs,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=8210|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
END IF;
UPDATE fin_verkoopfactuur
SET fin_verkoopfactuur_n1=2
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_n1=1;
-- Gaan we nu de flex kenmerken voor de res-rsv_ruimte en contract zetten:
SELECT ck.cnt_kenmerk_key
INTO v_lastinvoicedate_key
FROM cnt_kenmerk ck
WHERE ck.cnt_kenmerk_code='LASTINVOICEDATE'
AND ck.cnt_kenmerk_verwijder IS NULL;
FOR rec_upd IN sel_upd
LOOP
flx.setflex('RES',v_SyncDate_Key, rec_upd.rrr_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
flx.setflex('CNT',v_lastinvoicedate_key, rec_upd.contract_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
END LOOP;
IF v_count=0 THEN
-- We hebben niets om te exporteren dan gooien we ook XML tags weg.
DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand;
END IF;
END IF;
fac.writelog ('RES2CASHCSV', 'M', 'Er zijn '||v_count||' reserveringen geexporteerd', 'Export2Cash');
END;
/
CREATE OR REPLACE VIEW WZKW_V_EXPORT_RES2CASHCSV (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESC'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
-- EINDE EXPORT RES2CASHCSV
-- EXPORT RES2CASHINC
CREATE OR REPLACE PROCEDURE WZKW_SELECT_RES2CASHINCD (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel
IS
SELECT *
FROM wzkw_v_fact_res_incdtl
WHERE TRUNC (ruimte_van) BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'MM'),-2) -- 1ste van de vorige maand
AND LAST_DAY (ADD_MONTHS (TRUNC (SYSDATE,'MM'),-1)); -- laatse dag van de vorige maand;
CURSOR sel_finv
IS
SELECT fin_verkoopfactuur_n2 reservering_key,
prs_debiteur_naam huurder,
fin_verkoopfactuur_c1 soort,
fin_verkoopfactuur_omschr oms,
fin_verkoopfactuur_n4 contract_key,
fin_verkoopfactuur_n3 volgnr,
prs_kostenplaats_nr kostenplaats_nr,
fin_verkoopfactuur_c2 res_ref,
SUM (fin_verkoopfactuur_bedrag) prijs,
COUNT (*) aantal
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_c3 ='Incidenteel'
AND fin_verkoopfactuur_n1=1
GROUP BY fin_verkoopfactuur_n2,
prs_debiteur_naam,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_n4,
fin_verkoopfactuur_n3,
prs_kostenplaats_nr,
fin_verkoopfactuur_c2
ORDER BY fin_verkoopfactuur_n2, fin_verkoopfactuur_n3;
CURSOR sel_upd
IS
SELECT fin_verkoopfactuur_refkey rrr_key,
fin_verkoopfactuur_n4 contract_key
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_c3 ='Incidenteel'
AND fin_verkoopfactuur_n1=2;
v_bestand VARCHAR2(20);
v_count NUMBER;
v_huurder VARCHAR2(50);
v_reservering_key NUMBER;
v_SyncDate_Key NUMBER;
v_csv_regel VARCHAR2(2000);
v_error NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_grootboek VARCHAR2(10);
v_resverwijs VARCHAR2(40);
v_maand VARCHAR2(40);
BEGIN
v_bestand:= 'CSH_RESINC';
v_count:=0;
v_reservering_key:=0;
v_error:=0;
v_grootboek:='';
DELETE FROM fac_rapport WHERE fac_rapport_node LIKE 'CSH_RESINC';
BEGIN
SELECT rk.res_kenmerk_key
INTO v_SyncDate_Key
FROM res_activiteit ra,
res_kenmerk rk
WHERE rk.RES_KENMERK_CODE = 'FACTUURSYNC'
AND rk.res_activiteit_key = ra.res_activiteit_key
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND ra.res_activiteit_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
v_errormsg:='Kenmerk key voor ExtrenSyncDate op ACtiviteot Vergaderirng-Extren niet gevonden';
fac.writelog ('RES2CASHINCD', 'E', v_errormsg, v_errorhint);
END;
FOR rec IN sel
LOOP
wzkW.WZKW_GENERATE_FIN_VERKOOP(rec.rrr_key);
END LOOP;
SELECT 'Betreft maand '||
RTRIM(TO_CHAR(ADD_MONTHS (TRUNC (SYSDATE,'MM'),-1),'Month','NLS_DATE_LANGUAGE = dutch'))||' '||
TO_CHAR(ADD_MONTHS (TRUNC (SYSDATE,'MM'),-1),'YYYY')
INTO v_maand
FROM DUAL;
FOR rex_exp IN sel_finv
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
v_resverwijs:=rex_exp.res_ref;
v_huurder:=rex_exp.huurder;
v_reservering_key:=rex_exp.reservering_key;
END IF;
IF (v_count>1 AND v_reservering_key <> rex_exp.reservering_key) THEN
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('',1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_resverwijs,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_maand,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_huurder:=rex_exp.huurder;
v_reservering_key:=rex_exp.reservering_key;
v_resverwijs:=rex_exp.res_ref;
END IF;
IF rex_exp.soort='Ruimte' THEN
v_grootboek:='8290';
ELSIF rex_exp.soort='Catering' THEN
v_grootboek:='7110';
ELSIF rex_exp.soort='Object' THEN
v_grootboek:='8115';
ELSE
v_grootboek:='';
END IF ;
v_csv_regel:='0440|0101='||rex_exp.huurder||'|0425='||rex_exp.reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(rex_exp.soort||' '||rex_exp.oms||' ('||rex_exp.aantal||'x)',1,40)||'|0421=1.00|0455='||LTRIM(TO_CHAR(ROUND(rex_exp.prijs,2),'999999999.99'))||'|0442=|0118=|0201='||v_grootboek||'|0911='||rex_exp.kostenplaats_nr||'|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
END LOOP;
IF v_count>0 THEN
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR('',1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_resverwijs,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_csv_regel:='0440|0101='||v_huurder||'|0425='||v_reservering_key||'|1490='||v_count||'|0451=|0452='||SUBSTR(v_maand,1,40)||'|0421=1.00|0455='||'|0442=|0118=|0201=|0911=|1919=|';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
END IF;
UPDATE fin_verkoopfactuur
SET fin_verkoopfactuur_n1=2
WHERE fin_verkoopfactuur_datum = TRUNC (SYSDATE)
AND fin_verkoopfactuur_n1=1;
FOR rec_upd IN sel_upd
LOOP
flx.setflex('RES',v_SyncDate_Key, rec_upd.rrr_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
END LOOP;
IF v_count=0 THEN
-- We hebben niets om te exporteren dan gooien we ook XML tags weg.
DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand;
END IF;
END;
/
CREATE OR REPLACE VIEW WZKW_V_EXPORT_RES2CASHINCD (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESINC'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
CREATE OR REPLACE PROCEDURE WZKW_SELECT_RES2CASHDOORB (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel(p_kwartaal IN VARCHAR2, p_jaar IN VARCHAR2)
IS
SELECT gebouw_code,
kostenplaats_nr,
jaar,
kwartaal,
DECODE(kwartaal,1,'01',2,'04',3,'07',4,'12') maand,
count(*) aantal,
sum(prijs) totaal
from wzkw_v_fact_res_intern
WHERE jaar=p_jaar
AND TO_CHAR(kwartaal)= p_kwartaal
GROUP BY gebouw_code, kostenplaats_nr, jaar,kwartaal, 4
ORDER by kwartaal, gebouw_code, kostenplaats_nr;
v_count NUMBER;
v_bestand VARCHAR2(20);
v_kwartaal NUMBER;
v_jaar NUMBER;
v_SyncDate_Key NUMBER;
v_error NUMBER;
v_errormsg VARCHAR2(200);
v_errorhint VARCHAR2 (200);
v_gebouw_code_org VARCHAR2(10);
v_gebouw_kpn VARCHAR2(10);
v_sum_gebouw NUMBER;
v_grootboek VARCHAR2(10);
v_grootboekTB VARCHAR2(10);
v_welzijnskwartier VARCHAR2(10);
v_csv_regel VARCHAR2(2000);
BEGIN
v_bestand:= 'CSH_RESDOORB';
v_count:=0;
v_error:=0;
-- Eerst opruimen
DELETE FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESDOORB%';
-- Welke periode hebben we.. we gaan altijd per kwartaal
SELECT fac.safe_to_number(TO_CHAR(SYSDATE,'Q')) , fac.safe_to_number(TO_CHAR(SYSDATE,'YYYY'))
INTO v_kwartaal, v_jaar
FROM DUAL;
IF v_kwartaal=1
THEN
v_jaar:=v_jaar-1;
v_kwartaal:=4;
ELSE
v_kwartaal:=v_kwartaal-1;
END IF;
BEGIN
SELECT rk.res_kenmerk_key
INTO v_SyncDate_Key
FROM res_activiteit ra,
res_kenmerk rk
WHERE rk.res_kenmerk_code = 'FACTUURSYNC_INT'
AND rk.res_activiteit_key = ra.res_activiteit_key
AND ra.res_activiteit_omschrijving = 'Interne reservering'
AND ra.res_activiteit_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
v_errormsg:='Kenmerk key voor FactuurSync_INT op Activiteit Interne reservering niet gevonden';
fac.writelog ('RES2CASHDOORB', 'E', v_errormsg, v_errorhint);
END;
v_grootboek:='2020';
v_grootboekTB:='2998';
v_gebouw_code_org:='';
v_sum_gebouw:=0;
IF v_error=0
THEN
-- Gaan we eerste de export file maken
FOR rec IN sel(''||v_kwartaal, ''||v_jaar)
LOOP
v_count:=v_count+1;
IF (v_count>1 AND rec.gebouw_code <> v_gebouw_code_org)
THEN
BEGIN
SELECT prs_kostenplaats_nr
INTO v_gebouw_kpn
from prs_kostenplaats k, alg_gebouw g
WHERE g.ALG_GEBOUW_CODE=v_gebouw_code_org
AND k.prs_kostenplaats_key=g.prs_kostenplaats_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_gebouw_kpn:='NB';
END;
v_csv_regel:='0301|0901=DBL|0911='||v_gebouw_kpn||'|0201='||v_grootboekTB||'|0306='||SUBSTR('DBL Huisv. '||v_gebouw_code_org||' Q'||rec.kwartaal ,1,40)||'|0307=-'||LTRIM(TO_CHAR(ROUND(v_sum_gebouw,2),'999999999.99'))||'|0302='||TO_CHAR(SYSDATE,'YYMMDD')||'|0301='||SUBSTR(rec.jaar,3,2)||rec.maand||'|0303=STUKNR';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_sum_gebouw:=0;
END IF;
v_sum_gebouw:=v_sum_gebouw+ROUND(rec.totaal,2);
v_csv_regel:='0301|0901=DBL|0911='||rec.kostenplaats_nr||'|0201='||v_grootboek||'|0306='||SUBSTR('DBL Huisv. '||rec.gebouw_code||' Q'||rec.kwartaal ,1,40)||'|0307='||LTRIM(TO_CHAR(ROUND(rec.totaal,2),'999999999.99'))||'|0302='||TO_CHAR(SYSDATE,'YYMMDD')||'|0301='||SUBSTR(rec.jaar,3,2)||rec.maand||'|0303=STUKNR';
wzkw.add_csv_row (v_bestand, v_csv_regel);
v_count:=v_count+1;
v_gebouw_code_org:=rec.gebouw_code;
v_kwartaal:=rec.kwartaal;
END LOOP;
-- Dan moeten we nu voor de laatse regel nog een tegenboekingt doen.
BEGIN
SELECT prs_kostenplaats_nr
INTO v_gebouw_kpn
FROM prs_kostenplaats k, alg_gebouw g
WHERE g.alg_gebouw_code=v_gebouw_code_org
AND k.prs_kostenplaats_key=g.prs_kostenplaats_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_gebouw_kpn:='NB';
END;
v_csv_regel:='0301|0901=DBL|0911='||v_gebouw_kpn||'|0201='||v_grootboekTB||'|0306='||SUBSTR('DBL Huisv. '||v_gebouw_code_org||' Q'||v_kwartaal ,1,40)||'|0307=-'||LTRIM(TO_CHAR(ROUND(v_sum_gebouw,2),'999999999.99'))||'|0302='||TO_CHAR(SYSDATE,'YYMMDD')||'|0301='||SUBSTR(v_jaar,3,2)||LPAD(v_kwartaal,2,'0')||'|0303=STUKNR';
wzkw.add_csv_row (v_bestand, v_csv_regel);
IF v_count=0
THEN
-- We hebben geen recorda maar er is toch een tegenboeking record ten onrechte gemaakt dus gaan we die maar verwijderen
DELETE
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESDOORB%';
END IF;
/*
FOR rec_upd IN sel_sync(v_kartaal, v_jaar)
LOOP
flx.setflex('RES',v_SyncDate_Key, rec_upd.rrr_key, TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
END LOOP;
*/
END IF;
END;
/
CREATE OR REPLACE VIEW WZKW_V_EXPORT_RES2CASHDOORB (
result,
result_order,
exact_exp
)
AS
SELECT fac_rapport_regel ,fac_rapport_volgnr, fac_rapport_node
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CSH_RESDOORB'
ORDER BY fac_rapport_node,fac_rapport_volgnr;
-- EINDE EXPORT RES2CASHMND
-- EINDE EXPORTS
-- VIEW
-- rapport View
CREATE OR REPLACE VIEW WZKW_V_GEBOUWBEZETTING
(
alg_gebouw_code,
aantal_ruimtes,
bezet_opp,
bruto_opp
)
AS
SELECT alg_gebouw_code,
(SELECT COUNT(*)
FROM alg_v_ruimte_gegevens a
WHERE alg_gebouw_upper = alg_gebouw_code
AND a.alg_ruimte_key NOT IN
(SELECT rar.alg_ruimte_key
FROM res_ruimte rr, res_alg_ruimte rar
WHERE rr.res_ruimte_verwijder IS NULL
AND rar.res_ruimte_key = rr.res_ruimte_key)) aantal_ruimtes,
bezet_opp,
(SELECT SUM (a.alg_ruimte_bruto_vloeropp)
FROM alg_v_ruimte_gegevens a
WHERE alg_gebouw_upper = alg_gebouw_code
AND a.alg_ruimte_key NOT IN
(SELECT rar.alg_ruimte_key
FROM res_ruimte rr, res_alg_ruimte rar
WHERE rr.res_ruimte_verwijder IS NULL
AND rar.res_ruimte_key = rr.res_ruimte_key)) bruto_opp
FROM (
SELECT alg_gebouw_upper alg_gebouw_code, SUM (bezet_opp) bezet_opp
FROM (
SELECT alg.alg_ruimte_key,
alg.alg_ruimte_nr,
alg.alg_gebouw_upper,
alg.alg_gebouw_key,
COALESCE (
(SELECT SUM (ra.prs_ruimteafdeling_bezetting)/100
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key = alg.ALG_RUIMTE_KEY),
0)*alg.alg_ruimte_bruto_vloeropp bezet_opp
FROM alg_v_ruimte_gegevens alg
WHERE alg.alg_ruimte_key NOT IN
(SELECT rar.alg_ruimte_key
FROM res_ruimte rr, res_alg_ruimte rar
WHERE rr.res_ruimte_verwijder IS NULL
AND rar.res_ruimte_key = rr.res_ruimte_key))
GROUP BY alg_gebouw_upper
);
CREATE OR REPLACE VIEW WXKW_V_RUIMTEBEZETTING
AS
SELECT x.*,
( COALESCE (q1, 0)
+ COALESCE (q2, 0)
+ COALESCE (q3, 0)
+ COALESCE (q4, 0))
/ 4 AS avg_ytd
FROM (SELECT z.*,
CASE
WHEN ( van <=
TO_DATE ('01-01-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
(tot IS NULL
OR
tot >
TO_DATE ('31-03-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
) OR
(
van >
TO_DATE ('01-01-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
van <=
TO_DATE ('31-03-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
) OR
(
van <
TO_DATE ('01-01-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
tot <=
TO_DATE ('31-03-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
THEN
COALESCE (z.bezetting, 0)
END q1,
CASE
WHEN ( van <=
TO_DATE ('01-04-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
(tot IS NULL
OR
tot >
TO_DATE ('30-06-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
) OR
(
van >
TO_DATE ('01-04-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
van <=
TO_DATE ('30-06-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
) OR
(
van <
TO_DATE ('01-04-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
tot <=
TO_DATE ('30-06-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
THEN
COALESCE (z.bezetting, 0)
END q2,
CASE
WHEN ( van <=
TO_DATE ('01-07-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
(tot IS NULL
OR
tot >
TO_DATE ('30-09-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
) OR
(
van >
TO_DATE ('01-07-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
van <=
TO_DATE ('30-09-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
) OR
(
van <
TO_DATE ('01-07-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
tot <=
TO_DATE ('30-09-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
THEN
COALESCE (z.bezetting, 0)
END q3,
CASE
WHEN ( van <=
TO_DATE ('01-10-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
(tot IS NULL
OR
tot >
TO_DATE ('31-12-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
) OR
(
van >
TO_DATE ('01-10-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
AND
van <=
TO_DATE ('31-12-' || TO_CHAR (SYSDATE, 'YYYY'),
'DD-MM-YYYY')
)
THEN
COALESCE (z.bezetting, 0)
END q4
FROM ( SELECT r.alg_ruimte_key,
r.alg_ruimte_nr
ruimte_nr,
a.ALG_GEBOUW_CODE
gebouw_code,
a.ALG_GEBOUW_NAAM
gebouw_naam,
(SELECT a.PRS_AFDELING_omschrijving
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key)
afdeling,
TRUNC (p.PRS_RUIMTEAFDELING_INGANGSDATUM)
van,
DECODE (
p.PRS_RUIMTEAFDELING_INGANGSDATUM,
NULL, NULL,
TRUNC (p.PRS_RUIMTEAFDELING_EINDDATUM))
tot,
fac.safe_to_number (
COALESCE (p.PRS_RUIMTEAFDELING_BEZETTING, 0))
bezetting
FROM alg_ruimte r,
prs_ruimteafdeling p,
ALG_V_ALLONRGOED_GEGEVENS a
WHERE r.alg_ruimte_key NOT IN
(SELECT alg_ruimte_key FROM res_alg_ruimte)
AND a.ALG_RUIMTE_KEY = r.ALG_RUIMTE_KEY
AND p.ALG_RUIMTE_KEY(+) = r.ALG_RUIMTE_KEY
ORDER BY 3, 2) z) x;
CREATE OR REPLACE VIEW WZKW_V_RUIMTEDOORBELST
(
loctie_code,
gebouw_code,
verdieping_oms,
ruimtesrt_oms,
ruimte_nr,
ruimte_oms,
ruimte_opp,
ruimtesrt_prijs,
doorbelast_bedrag,
afdeling_oms,
afd_bezetting,
kpn_1,
Percentage_1,
bedrag_1,
bedrag_km_1,
kpn_2,
Percentage_2,
bedrag_2,
bedrag_km_2,
kpn_3,
Percentage_3,
bedrag_3,
bedrag_km_3,
kpn_4,
Percentage_4,
bedrag_4,
bedrag_km_4,
kpn_5,
Percentage_5,
bedrag_5,
bedrag_km_5,
tot_percentage
)
AS
SELECT locatie_code,
gebouw_code,
verdieping,
srt_ruimte,
ruimte_nr,
ruimte_oms,
opp,
prijs,
doorbelast_bedrag,
afdeling,
afd_bezetting,
kpn_1,
kpn_bezet_1,
ROUND(opp*prijs*(kpn_bezet_1/100),2) bedrag_1,
ROUND(doorbelast_bedrag*(afd_bezetting/100)*(kpn_bezet_1/100),2) bedrag_km_1,
kpn_2,
kpn_bezet_2,
ROUND(opp*prijs*(kpn_bezet_2/100),2) bedrag_2,
ROUND(doorbelast_bedrag*(afd_bezetting/100)*(kpn_bezet_2/100),2) bedrag_km_2,
kpn_3,
kpn_bezet_3,
ROUND(opp*prijs*(kpn_bezet_3/100),2) bedrag_3,
ROUND(doorbelast_bedrag*(afd_bezetting/100)*(kpn_bezet_3/100),2) bedrag_km_3,
kpn_4,
kpn_bezet_4,
ROUND(opp*prijs*(kpn_bezet_4/100),2) bedrag_4,
ROUND(doorbelast_bedrag*(afd_bezetting/100)*(kpn_bezet_4/100),2) bedrag_km_4,
kpn_5,
kpn_bezet_5,
ROUND(opp*prijs*(kpn_bezet_5/100),2) bedrag_5,
ROUND(doorbelast_bedrag*(afd_bezetting/100)*(kpn_bezet_5/100),2) bedrag_km_5,
(COALESCE(kpn_bezet_1,0)+COALESCE(kpn_bezet_2,0)+COALESCE(kpn_bezet_3,0)+COALESCE(kpn_bezet_4,0)+COALESCE(kpn_bezet_5,0)) tot_bezetting
FROM (
SELECT l.alg_locatie_code locatie_code,
g.alg_gebouw_code gebouw_code,
v.alg_verdieping_omschrijving verdieping,
sr.alg_srtruimte_omschrijving srt_ruimte,
r.alg_ruimte_nr ruimte_nr,
r.alg_ruimte_omschrijving ruimte_oms,
r.alg_ruimte_bruto_vloeropp opp,
sr.alg_srtruimte_prijs prijs,
a.prs_afdeling_omschrijving afdeling,
ra.prs_ruimteafdeling_bezetting afd_bezetting,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, ALG_KENMERK ak
WHERE ak.alg_kenmerk_code='DOORBELAST'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.ALG_KENMERK_KEY
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) doorbelast_bedrag,
(SELECT k.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak, prs_kostenplaats k
WHERE ak.alg_kenmerk_code='1_KPN'
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND k.prs_kostenplaats_key = ao.alg_onrgoedkenmerk_waarde) KPN_1,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, ALG_KENMERK ak
WHERE ak.alg_kenmerk_code='1_KPN_PERC'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) KPN_BEZET_1,
(SELECT k.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak, prs_kostenplaats k
WHERE ak.alg_kenmerk_code='2_KPN'
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND k.prs_kostenplaats_key = ao.alg_onrgoedkenmerk_waarde) KPN_2,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, ALG_KENMERK ak
WHERE ak.alg_kenmerk_code='2_KPN_PERC'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) KPN_BEZET_2,
(SELECT k.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak, prs_kostenplaats k
WHERE ak.alg_kenmerk_code='3_KPN'
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND k.prs_kostenplaats_key = ao.alg_onrgoedkenmerk_waarde) KPN_3,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, ALG_KENMERK ak
WHERE ak.alg_kenmerk_code='3_KPN_PERC'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) KPN_BEZET_3,
(SELECT k.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak, prs_kostenplaats k
WHERE ak.alg_kenmerk_code='4_KPN'
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND k.prs_kostenplaats_key = ao.alg_onrgoedkenmerk_waarde) KPN_4,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, ALG_KENMERK ak
WHERE ak.alg_kenmerk_code='4_KPN_PERC'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) KPN_BEZET_4,
(SELECT k.prs_kostenplaats_nr
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak, prs_kostenplaats k
WHERE ak.alg_kenmerk_code='5_KPN'
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND k.prs_kostenplaats_key = ao.alg_onrgoedkenmerk_waarde) KPN_5,
(SELECT fac.safe_to_number(ao.alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk ao, alg_kenmerk ak
WHERE ak.alg_kenmerk_code='5_KPN_PERC'
AND ak.alg_kenmerk_verwijder IS NULL
AND ao.alg_onrgoed_key = r.alg_ruimte_key
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key
AND ao.alg_onrgoedkenmerk_verwijder IS NULL) KPN_BEZET_5
FROM alg_ruimte r,
prs_ruimteafdeling ra,
prs_afdeling a,
alg_v_allonroerendgoed av,
alg_gebouw g,
alg_locatie l,
alg_verdieping v,
ALG_SRTRUIMTE sr
WHERE r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND r.alg_ruimte_verwijder IS NULL
AND a.prs_afdeling_key(+) = ra.prs_afdeling_key
AND av.alg_ruimte_key = r.alg_ruimte_key
AND l.alg_locatie_key = av.alg_locatie_key
AND g.alg_gebouw_key = av.alg_gebouw_key
AND g.alg_gebouw_verwijder IS NULL
AND v.alg_verdieping_key = r.alg_verdieping_key
AND sr.alg_srtruimte_key = r.alg_srtruimte_key
AND r.alg_ruimte_key NOT IN (SELECT rar.alg_ruimte_key
FROM res_ruimte rr, res_alg_ruimte rar
WHERE rr.res_ruimte_verwijder IS NULL
AND (rr.res_ruimte_vervaldatum IS NULL OR TRUNC(rr.res_ruimte_vervaldatum) > TRUNC(SYSDATE))
AND rar.res_ruimte_key = rr.res_ruimte_key)
);
CREATE OR REPLACE VIEW WZKW_V_RES_OVEREENKOMST
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
TO_CHAR(rrr.res_rsv_ruimte_van,'DD-MM-YYYY') datum,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI') begintijd,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') eindtijd,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI')
|| '-'
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') van_tot,
(SELECT TO_CHAR(MIN(rrr2.res_rsv_ruimte_van),'DD-MM-YYYY') FROM res_rsv_ruimte rrr2 where rrr2.res_reservering_key=rrr.res_reservering_key GROUP BY rrr2.res_reservering_key) start_datum,
(SELECT TO_CHAR(MAX(rrr2.res_rsv_ruimte_van),'DD-MM-YYYY') FROM res_rsv_ruimte rrr2 where rrr2.res_reservering_key=rrr.res_reservering_key GROUP BY rrr2.res_reservering_key) eind_datum,
CASE WHEN struct.res_kenmerkreservering_waarde='1' THEN
fac.safe_to_number (cnt_prijs.res_kenmerkreservering_waarde)
WHEN incid.res_kenmerkreservering_waarde='1' THEN
fac.safe_to_number (comm_prijs.res_kenmerkreservering_waarde)
ELSE
res.getresruimteprijs (
rer.res_ruimte_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
COALESCE (incid.res_kenmerkreservering_waarde, '0'))
END as prijs_ruimte,
(SELECT SUM (COALESCE(rra.RES_RSV_ARTIKEL_PRIJS ,rra.res_rsv_artikel_aantal * ra.res_artikel_prijs))
FROM res_rsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key) prijs_cat,
(SELECT SUM (rrd.res_rsv_deel_aantal * rd.res_deel_prijs)
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key) prijs_deel,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE g.prs_perslid_key_verantw = p.prs_perslid_key) gebouw_beheerder,
(SELECT COALESCE (p.prs_perslid_telefoonnr, p.prs_perslid_mobiel)
FROM prs_perslid p
WHERE g.prs_perslid_key_verantw = p.prs_perslid_key) gebouw_beheerder_telefoon,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE g.prs_perslid_key_verantw2 = p.prs_perslid_key) gebouw_beheerder2,
(SELECT COALESCE (p.prs_perslid_telefoonnr, p.prs_perslid_mobiel)
FROM prs_perslid p
WHERE g.prs_perslid_key_verantw2 = p.prs_perslid_key) gebouw_beheerder2_telefoon,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
fac.safe_to_number (huurder.res_kenmerkreservering_waarde)) huurder,
(SELECT b.prs_bedrijf_bezoek_adres
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
fac.safe_to_number (huurder.res_kenmerkreservering_waarde)) huurder_adres,
(SELECT b.PRS_BEDRIJF_BEZOEK_postcode
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
fac.safe_to_number (huurder.res_kenmerkreservering_waarde)) huurder_postcode,
(SELECT b.prs_bedrijf_bezoek_plaats
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key =
fac.safe_to_number (huurder.res_kenmerkreservering_waarde)) huurder_plaats,
rer.res_ruimte_nr ruimte,
l.alg_locatie_adres adres,
l.alg_locatie_postcode postcode,
l.alg_locatie_plaats plaats
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rop,
res_ruimte rer,
-- res_alg_ruimte rar,
alg_v_onroerendgoed_gegevens alg,
alg_gebouw g,
alg_locatie l,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'HUURDERS'
AND rkw.res_kenmerk_key = rk.res_kenmerk_key) huurder,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'INCIDENTEEL'
AND rkw.res_kenmerk_key = rk.res_kenmerk_key) incid,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'STRUCT_CONTRACT'
AND rkw.res_kenmerk_key = rk.res_kenmerk_key) struct,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'COMM_BEDRAG'
AND rkw.res_kenmerk_key = rk.res_kenmerk_key) comm_prijs,
(SELECT rkw.*
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rk.res_kenmerk_code = 'CNT_BEDRAG'
AND rkw.res_kenmerk_key = rk.res_kenmerk_key) cnt_prijs
WHERE rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
-- AND rar.RES_RUIMTE_KEY = rer.res_ruimte_key
AND alg.ALG_RUIMTE_KEY = (SELECT MAX(ra.alg_ruimte_key) -- WE WILLEN MAAR 1 ALG_RUIMTE BIJ EEN KOPPELZAAL
FROM res_alg_ruimte ra
WHERE ra.res_ruimte_key = rer.res_ruimte_key)
AND g.alg_gebouw_code = alg.alg_gebouw_code
AND l.alg_locatie_key = alg.alg_locatie_key
AND incid.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND comm_prijs.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND cnt_prijs.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND struct.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND huurder.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
ORDER BY rrr.res_rsv_ruimte_van,rer.res_ruimte_nr ASC;
CREATE OR REPLACE VIEW WZWK_V_HUURDERBEDRIJF
(
prs_bedrijf_key,
prs_bedrijf_naam
)
as
SELECT prs_bedrijf_key, prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_bedrijf.prs_bedrijf_verwijder IS NULL
AND prs_leverancier_nr IS NOT NULL
AND prs_bedrijf_huurder = 1;
CREATE OR REPLACE VIEW WZKW_V_KOSTENPLAATS
(
prs_kostenplaats_key,
prs_kostenplaats_omsch
)
AS
SELECT kpn.prs_kostenplaats_key,
kpn.prs_kostenplaats_nr||' - '||kpn.prs_kostenplaats_omschrijving
FROM prs_kostenplaats kpn
WHERE kpn.prs_kostenplaats_verwijder IS NULL;
-- Notificatie Views
CREATE OR REPLACE VIEW wzkw_v_noti_externeres
(
key,
code,
sender,
receiver,
text,
xkey,
xsender,
xemail,
xmobile,
attachments,
prio
)
AS
SELECT DISTINCT rrr.res_reservering_key,
'CUST01',
NULL,
NULL,
'Uw reservering bij Welzijnskwartier',
NULL,
NULL,
(SELECT prs_bedrijf_email
FROM prs_bedrijf
WHERE prs_bedrijf_key = fac.safe_to_number(r.res_kenmerkreservering_waarde)) email,
NULL,
-- '/../../Branch20233/CUST/WZKW/bdradrfiles/TEST.pdf' attachment,
'/../../FPlace_a/CUST/WZKW/bdradrfiles/voorwaarden_2024.pdf' attachment,
NULL
FROM res_rsv_ruimte rrr,
res_kenmerkwaarde r,
res_kenmerk rk,
prs_bedrijf b,
fac_notificatie_job nj,
res_activiteit ra
WHERE rrr.res_rsv_ruimte_aanmaak BETWEEN nj.fac_notificatie_job_lastrun AND nj.fac_notificatie_job_nextrun
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND nj.fac_notificatie_job_view = 'WZKW_V_NOTI_EXTERNERES'
AND r.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rk.res_kenmerk_key = r.res_kenmerk_key
AND rk.res_kenmerk_code = 'HUURDERS'
AND ra.res_activiteit_omschrijving = 'Externe reservering'
AND rrr.res_rsv_ruimte_verwijder IS NULL;
CREATE OR REPLACE VIEW WZKW_V_NOTI_CNTACTIEF
(
key,
code,
sender,
receiver,
text,
xkey,
xsender,
xemail,
xmobile,
attachments,
prio
)
AS
SELECT DISTINCT
cnt.CNT_CONTRACT_KEY,
'CUST02',
NULL,
NULL,
'Uw contract met Stichting Welzijnskwartier is geregistreerd.',
NULL,
NULL,
(SELECT prs_bedrijf_email
FROM prs_bedrijf prs
WHERE prs.prs_bedrijf_key = cnt.cnt_prs_bedrijf_key)
email,
NULL,
NULL,
NULL
FROM cnt_contract cnt,
cnt_kenmerkcontract kmc,
cnt_kenmerk km,
fac_notificatie_job nj
WHERE kmc.cnt_kenmerkcontract_aanmaak BETWEEN nj.fac_notificatie_job_lastrun
AND nj.fac_notificatie_job_nextrun
AND nj.fac_notificatie_job_view = 'WZKW_V_NOTI_CNTACTIEF'
AND cnt.cnt_contract_key = kmc.cnt_contract_key
AND kmc.cnt_kenmerk_key = km.cnt_kenmerk_key
AND km.cnt_kenmerk_code = 'ACTIEF'
AND cnt.cnt_contract_status=0;
-- Rapportage Views
------ 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