Files
Customer/WIBC/wibc.sql
Maarten van der Heide 55adaa97d3 WIBC#24932 MT940-stuff + Per periode of boeking afsluiten
svn path=/Customer/trunk/; revision=18242
2013-06-24 08:34:04 +00:00

3388 lines
159 KiB
MySQL

-- Script containing customer specific db-configuration for WIBC.
-- (c) 2012 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xwibc.lst
/* Formatted on 5-6-2013 15:30:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE WIBC
AS
-- PACKAGES voor de WIBC specifieke ondersteuning
PROCEDURE freezereserveringen (p_prskey IN NUMBER, p_periode IN NUMBER);
END;
/
/* Formatted on 5-6-2013 15:30:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE BODY WIBC
AS
PROCEDURE freezereserveringen (p_prskey IN NUMBER, p_periode IN NUMBER)
AS
-- Volgende cursors lopen over reserveringen (door personen van bedrijf
-- waartoe ook 'p_prskey' behoort) die in de voorgaande maand hebben
-- plaatsgevonden en nog niet zijn gefactuureerd; betreffende ruimte- én
-- roomservice-reserveringen worden Administratief Verwerkt (AV)!
-- Tevens wordt aan al deze reserveringen het factuurnummer gekoppeld.
CURSOR cobj
IS
SELECT x.periode,
x.res_rsv_ruimte_key,
x.res_reservering_key,
x.res_rsv_ruimte_volgnr,
x.res_rsv_deel_key,
x.res_status_bo_key
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
DECODE (
TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'),
0,
1
)
periode,
rd.res_rsv_deel_key,
rd.res_status_bo_key,
rr.res_rsv_ruimte_contact_key,
TRIM (bedr.prs_kenmerklink_waarde) bedrijf
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_deel rd,
prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) bedr
WHERE rr.res_status_fo_key IN (1, 2)
AND COALESCE (rr.res_status_bo_key, 2) != 6 -- Nog niet AV
AND rr.res_rsv_ruimte_dirtlevel = 0
AND rr.res_rsv_ruimte_key =
rd.res_rsv_ruimte_key
AND rd.res_status_bo_key != 6 -- Nog niet AV
AND rd.res_rsv_deel_dirtlevel = 0
AND rd.res_rsv_ruimte_key IS NOT NULL -- Geen parkeerplaatsen
AND rr.res_rsv_ruimte_contact_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
--AND TRUNC (rr.res_rsv_ruimte_tot) <
-- TO_DATE (
-- '01' || TO_CHAR (SYSDATE, 'mmyyyy'),
-- 'ddmmyyyy'
-- )
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)
AND rr.res_rsv_ruimte_contact_key =
bedr.prs_link_key(+)) x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (mc.prs_link_key, c.prs_link_key)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
AND p.prs_srtperslid_key = 482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf = mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf
WHERE COALESCE (y.prs_link_key, x.res_rsv_ruimte_contact_key) =
p_prskey
AND x.periode = p_periode;
CURSOR cart
IS
SELECT x.periode,
x.res_rsv_ruimte_key,
x.res_reservering_key,
x.res_rsv_ruimte_volgnr,
x.res_rsv_artikel_key,
x.res_artikel_key,
x.res_status_bo_key,
x.res_artikel_prijs_vast
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
DECODE (
TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'),
0,
1
)
periode,
ra.res_rsv_artikel_key,
ra.res_artikel_key,
ra.res_status_bo_key,
a.res_artikel_prijs_vast,
rr.res_rsv_ruimte_contact_key,
TRIM (bedr.prs_kenmerklink_waarde) bedrijf
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_artikel ra,
res_artikel a,
prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) bedr
WHERE rr.res_status_fo_key IN (1, 2)
AND COALESCE (rr.res_status_bo_key, 2) != 6 -- Nog niet AV
AND rr.res_rsv_ruimte_dirtlevel = 0
AND rr.res_rsv_ruimte_key =
ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_status_bo_key != 6 -- Nog niet AV
AND ra.res_rsv_artikel_dirtlevel = 0
AND rr.res_rsv_ruimte_contact_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
--AND TRUNC (rr.res_rsv_ruimte_tot) <
-- TO_DATE (
-- '01' || TO_CHAR (SYSDATE, 'mmyyyy'),
-- 'ddmmyyyy'
-- )
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)
AND rr.res_rsv_ruimte_contact_key =
bedr.prs_link_key(+)) x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (mc.prs_link_key, c.prs_link_key)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
AND p.prs_srtperslid_key = 482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf = mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf
WHERE COALESCE (y.prs_link_key, x.res_rsv_ruimte_contact_key) =
p_prskey
AND x.periode = p_periode;
CURSOR crui
IS
SELECT x.periode,
x.res_rsv_ruimte_key,
x.res_reservering_key,
x.res_rsv_ruimte_volgnr,
x.res_status_bo_key,
x.old_prijs,
x.new_prijs
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
DECODE (
TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'),
0,
1
)
periode,
rr.res_status_bo_key,
COALESCE (rr.res_rsv_ruimte_prijs, 0)
old_prijs,
DECODE (
SIGN( ( (rr.res_rsv_ruimte_tot
- rr.res_rsv_ruimte_van)
* 24)
- 8),
-1,
DECODE (
SIGN( ( (rr.res_rsv_ruimte_tot
- rr.res_rsv_ruimte_van)
* 24)
- 4),
-1,
(rr.res_rsv_ruimte_tot
- rr.res_rsv_ruimte_van)
* 24
* COALESCE (r.res_ruimte_prijs, 0),
COALESCE (r.res_ruimte_prijs_ochtend, 0)
+ ( ( (rr.res_rsv_ruimte_tot
- rr.res_rsv_ruimte_van)
* 24)
- 4)
* COALESCE (r.res_ruimte_prijs, 0)
),
COALESCE (r.res_ruimte_prijs_middag, 0)
)
new_prijs,
rr.res_rsv_ruimte_contact_key,
TRIM (bedr.prs_kenmerklink_waarde) bedrijf
FROM res_v_aanwezigrsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte r,
prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) bedr
WHERE rr.res_status_fo_key IN (1, 2)
AND COALESCE (rr.res_status_bo_key, 2) != 6 -- Nog niet AV
AND rr.res_rsv_ruimte_dirtlevel = 0
AND rr.res_rsv_ruimte_ordernr IS NULL -- Nog geen factuur!
AND rr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key(+)
AND ro.res_ruimte_key = r.res_ruimte_key(+)
AND rr.res_rsv_ruimte_contact_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
--AND TRUNC (rr.res_rsv_ruimte_tot) <
-- TO_DATE (
-- '01' || TO_CHAR (SYSDATE, 'mmyyyy'),
-- 'ddmmyyyy'
-- )
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)
AND rr.res_rsv_ruimte_contact_key =
bedr.prs_link_key(+)) x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (mc.prs_link_key, c.prs_link_key)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
AND p.prs_srtperslid_key = 482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf = mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf
WHERE COALESCE (y.prs_link_key, x.res_rsv_ruimte_contact_key) =
p_prskey
AND x.periode = p_periode;
c_applname VARCHAR2 (50) := 'FREEZE_RES';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '-';
v_count NUMBER (10);
v_count_upd NUMBER (10);
v_factuurnr VARCHAR2 (20);
v_prskey NUMBER (10);
v_huurderlid VARCHAR2 (1) := 'N';
v_factuurbedrag NUMBER (12, 2);
v_prijs NUMBER (9, 2);
BEGIN
-- Beginnen met toevoegen Factuur/Debiteur-entry in Eigen tabel met
-- key=82; als dat al niet kan, dan weten wij dat gelijk (nog zonder
-- gevolgschade)!
v_errormsg := 'Fout bij bepalen factuurnummer.';
SELECT fac_s_user01.NEXTVAL INTO v_count FROM DUAL;
v_factuurnr :=
TO_CHAR (TRUNC (SYSDATE, 'MM') - 1, 'YYYY')
|| SUBSTR ('0000' || TO_CHAR (v_count), -4);
v_errormsg := 'Fout bij bepalen debiteur.';
SELECT COALESCE (y.prs_link_key, x.prs_perslid_key)
INTO v_prskey
FROM (SELECT p.prs_perslid_key,
TRIM (bedr.prs_kenmerklink_waarde) bedrijf
FROM prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) bedr
WHERE p.prs_perslid_key = p_prskey
AND p.prs_perslid_key = bedr.prs_link_key(+)) x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (mc.prs_link_key, c.prs_link_key)
prs_link_key
FROM ( SELECT UPPER (
TRIM (kl.prs_kenmerklink_waarde)
)
bedrijf,
MIN (kl.prs_link_key) prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
GROUP BY UPPER(TRIM (
kl.prs_kenmerklink_waarde
))) c
LEFT JOIN
( SELECT UPPER (
TRIM (kl.prs_kenmerklink_waarde)
)
bedrijf,
MIN (kl.prs_link_key) prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
AND p.prs_srtperslid_key = 482
GROUP BY UPPER(TRIM (
kl.prs_kenmerklink_waarde
))) mc
ON c.bedrijf = mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf;
v_errormsg := 'Fout bij bepalen ruimtekorting.';
--SELECT COUNT ( * )
-- INTO v_count
-- FROM prs_v_aanwezigkenmerklink
-- WHERE prs_link_key = v_prskey
-- AND prs_kenmerk_key = 1023 -- Huurder
-- AND prs_kenmerklink_waarde = '1';
SELECT COUNT ( * )
INTO v_count
FROM wibc_v_rap_res_actual
WHERE hide_f_debnr = SUBSTR ('000000' || TO_CHAR (v_prskey), -6)
AND hide_f_restype = '1S';
IF (v_count > 0)
THEN
v_huurderlid := 'H'; -- Factuur incl. ruimtekorting!
END IF;
v_errormsg := 'Fout bij bepalen lidmaatschap.';
SELECT COUNT ( * )
INTO v_count
FROM wibc_v_rap_res_actual
WHERE hide_f_debnr = SUBSTR ('000000' || TO_CHAR (v_prskey), -6)
AND hide_f_restype = '0L';
IF (v_count > 0)
THEN
--IF (v_huurderlid = 'H')
--THEN
-- v_huurderlid := 'X';
--ELSE
-- v_huurderlid := 'L';
--END IF;
v_huurderlid := 'L'; -- Factuur incl. lidmaatschap én ruimtekorting!
END IF;
v_errormsg := 'Fout bij toevoegen meta-factuur.';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_aanmaak,
fac_usrdata_vervaldatum)
VALUES (82,
v_factuurnr,
TO_CHAR (p_prskey) || v_huurderlid,
TRUNC (SYSDATE),
TRUNC (SYSDATE + 24));
COMMIT;
v_errormsg := 'Fout bij bepalen factuurbedrag.';
SELECT SUM (kosten + btwkosten)
INTO v_factuurbedrag
FROM wibc_v_rap_res_actual
WHERE hide_f_debnr = SUBSTR ('000000' || TO_CHAR (v_prskey), -6);
-- Toevoegen pseudo-transactie in wibc_bankboek voor facturen met een
-- negatief bedrag (te betalen door WIBC aan klant).
IF (v_factuurbedrag < 0)
THEN
v_errormsg := 'Fout bij toevoegen pseudo-tranactie.';
INSERT INTO wibc_bankboek (regel_insert,
afschriftnr,
boekdat_oud,
saldo_oud,
valutadat,
creditdebet,
bedrag,
transactietype,
tegenrekening,
omschrijving,
boekdat_nieuw,
saldo_nieuw)
VALUES (SYSDATE,
'Geen',
NULL,
NULL,
NULL,
'-',
v_factuurbedrag,
NULL,
NULL,
'Pseudo-transactie tbv. factuur ' || v_factuurnr,
TO_CHAR (SYSDATE, 'yymmdd'),
NULL);
COMMIT;
END IF;
v_count_upd := 0;
-- Bevriezen RES-objecten!
FOR rec IN cobj
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.res_reservering_key
|| '|'
|| rec.res_rsv_ruimte_volgnr
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_prskey)
|| '] ';
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-object.';
UPDATE res_rsv_deel
SET res_status_bo_key = 5
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
END IF;
v_errormsg := 'Fout bij bepalen res_rsv_deel_prijs.';
SELECT res.getdeelprijs (rec.res_rsv_deel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout bij bijwerken res_rsv_deel_prijs.';
UPDATE res_rsv_deel
SET res_rsv_deel_prijs = v_prijs
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_errormsg := 'Fout bij AV-en RES-object.';
UPDATE res_rsv_deel
SET res_status_bo_key = 6
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_count_upd := v_count_upd + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-object');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-object/#bevroren: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
v_count_upd := 0;
-- Bevriezen RES-artikelen!
FOR rec IN cart
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.res_reservering_key
|| '|'
|| rec.res_rsv_ruimte_volgnr
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_prskey)
|| '] ';
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-artikel.';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
IF (rec.res_artikel_prijs_vast = 1)
THEN
v_errormsg := 'Fout bij bepalen res_rsv_artikel_prijs.';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout bij bijwerken res_rsv_artikel_prijs.';
UPDATE res_rsv_artikel
SET 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;
END IF;
END IF;
v_errormsg := 'Fout bij AV-en RES-artikel.';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_count_upd := v_count_upd + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-artikel');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-artikel/#bevroren: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
FOR rec IN crui
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.res_reservering_key
|| '|'
|| rec.res_rsv_ruimte_volgnr
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_prskey)
|| '] ';
-- Niet voor reeds afgemelde reserveringen en "roomservice"!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-ruimte.';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESAFM',
rec.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-ruimte/TV');
COMMIT;
END;
END LOOP;
v_count_upd := 0;
FOR rec IN crui
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.res_reservering_key
|| '|'
|| rec.res_rsv_ruimte_volgnr
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_prskey)
|| '] ';
v_errormsg := 'Fout bij bijwerken factuurnummer.';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_ordernr = v_factuurnr
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
-- Niet voor "roomservice"!
IF (rec.res_status_bo_key = 5)
THEN
IF (rec.old_prijs <> rec.new_prijs)
THEN
v_errormsg := 'Fout bij bijwerken res_rsv_ruimte_prijs';
UPDATE res_rsv_ruimte rr
SET rr.res_rsv_ruimte_prijs = rec.new_prijs
WHERE rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END IF;
v_errormsg := 'Fout bij AV-en RES-ruimte.';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESVER',
rec.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
END IF;
v_count_upd := v_count_upd + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-ruimte/AV');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-ruimte/#bevroren: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'E',
v_aanduiding || v_errormsg,
'');
COMMIT;
END freezereserveringen;
END;
/
/* Formatted on 24-5-2013 16:55:05 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE wibc_import_mt940 (p_import_key IN NUMBER)
AS
--c_delim VARCHAR2 (1) := ';';
c_rekeningnummer VARCHAR2 (35) := '173847757'; -- ALLEEN dit rek.nr.!
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_aanduiding VARCHAR2 (200);
-- De importvelden
v_mt940_rcode VARCHAR2 (5); -- Record-code uit v_newline (optioneel)
v_mt940_rdata VARCHAR2 (100); -- Record-data uit v_newline
-- Overige velden:
v_mt940_index NUMBER (10);
v_mt940_rcodekeep VARCHAR2 (5); -- Bewaarde code uit eerdere newline
v_mt940_rdatakeep VARCHAR2 (100); -- Bewaarde data uit eerdere newline
v_mt940_tromskeep VARCHAR2 (500); -- Bewaarde 86-data (transactieoms.)
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM wibc_imp_mt940;
COMMIT;
header_is_valid := 1; -- Altijd valid (:940: komt soms niet/vaker voor)!
v_count_tot := 0;
v_count_import := 0;
v_mt940_rcode := '';
v_mt940_rdata := '';
v_mt940_index := 0;
v_mt940_rcodekeep := '';
v_mt940_rdatakeep := '';
v_mt940_tromskeep := '';
-- LET OP: Elke bank heeft zijn eigen MT940-interpretatie. Die van de Rabo
-- is leidend voor WIBC (deze import), maar ik heb ook gekeken naar die van
-- andere banken en interpreteer - bij import - eea. nog vrij losjes.
-- Elke regel <100 wordt ingelezen, regels na een 61-regel (met een 86-code
-- of zonder code!) worden samengesteld met een :61:-rcode, het 61-stuk als
-- rdata en het 86-stuk als troms.
-- Omdat 86-regels niet alleen na een 61-regel voorkomen, bevat de INSERT
-- een DECODE om igv. losse 86-regels de rcode op :86: ipv. :61: te zetten;
-- de rdata-veld is in dat geval leeg.
FOR rec1 IN c1
LOOP
BEGIN
v_newline := TRIM (rec1.fac_imp_file_line); -- MT940-lengte max. 80?!
v_aanduiding := '[' || SUBSTR (v_newline, 1, 100) || '] ';
-- Ik controleer of ik een geldige header heb, dat is: een regel met
-- alleen een :940:-code!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF (UPPER (v_newline) = ':940:')
THEN
header_is_valid := 1;
END IF;
ELSE -- Na een geldige header gaat de v_count_tot-teller pas lopen!
v_count_tot := v_count_tot + 1;
v_errormsg := 'MT940-regel te lang';
IF (LENGTH (v_newline) > 100)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
ELSE
-- Ingelezen regel opsplitsen in rcode en rdata.
IF (SUBSTR (v_newline, 1, 1) = ':'
AND SUBSTR (v_newline, 4, 1) = ':')
THEN -- rcode 4-posities
v_mt940_rcode := SUBSTR (v_newline, 1, 4);
v_mt940_rdata := SUBSTR (v_newline, 5);
ELSIF (SUBSTR (v_newline, 1, 1) = ':' AND SUBSTR (v_newline, 5, 1) = ':')
THEN -- rcode 5-posities
v_mt940_rcode := SUBSTR (v_newline, 1, 5);
v_mt940_rdata := SUBSTR (v_newline, 6);
ELSE -- Geen rcode
v_mt940_rcode := '';
v_mt940_rdata := v_newline;
END IF;
IF (v_mt940_rcodekeep IN (':61:', ':86:'))
THEN
IF (COALESCE (v_mt940_rcode, 'x') IN (':86:', 'x'))
THEN -- Vervolgregel; doe alsof vorige rcode wordt herhaald
v_mt940_rcode :=
COALESCE (v_mt940_rcode, v_mt940_rcodekeep);
ELSE -- Insert samengestelde regel met terugwerkende kracht
v_errormsg :=
'Fout bij wegschrijven samengestelde importregel';
v_mt940_index := v_mt940_index + 1;
INSERT INTO wibc_imp_mt940 (
mt940_index,
mt940_rcode,
mt940_rdata,
mt940_troms
)
VALUES (
v_mt940_index,
DECODE (v_mt940_rdatakeep,
NULL, ':86:',
':61:'),
v_mt940_rdatakeep,
v_mt940_tromskeep
);
COMMIT;
-- Clear al het bewaarde!
v_mt940_rcodekeep := '';
v_mt940_rdatakeep := '';
v_mt940_tromskeep := '';
END IF;
END IF;
IF (v_mt940_rcode = ':61:')
THEN -- Bewaar rcode en rdata; tromskeep zal leeg zijn/blijven!
v_mt940_rcodekeep := v_mt940_rcode;
v_mt940_rdatakeep :=
COALESCE (v_mt940_rdatakeep, '') || v_mt940_rdata;
ELSIF (v_mt940_rcode = ':86:')
THEN -- Bewaar rcode en (uitgebreide) troms; rdatakeep "as is"!
--v_mt940_rcodekeep := ':61:';
v_mt940_rcodekeep := v_mt940_rcode;
v_mt940_tromskeep :=
COALESCE (v_mt940_tromskeep, '') || v_mt940_rdata;
ELSE -- Insert deze iteratie ingelezen (enkelvoudige) regel
v_errormsg :=
'Fout bij wegschrijven enkelvoudige importregel';
v_mt940_index := v_mt940_index + 1;
INSERT INTO wibc_imp_mt940 (
mt940_index,
mt940_rcode,
mt940_rdata
)
VALUES (v_mt940_index, v_mt940_rcode, v_mt940_rdata);
COMMIT;
-- Clear al het bewaarde!
v_mt940_rcodekeep := '';
v_mt940_rdatakeep := '';
v_mt940_tromskeep := '';
-- Check op :25:-regel met ander rekeningnummer dan waarvoor
-- deze importfunctie is bedoeld -> EXIT!
EXIT WHEN (v_mt940_rcode = ':25:'
AND INSTR (v_mt940_rdata, c_rekeningnummer) = 0);
END IF;
v_count_import := v_count_import + 1;
END IF;
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.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSIF (v_mt940_rcode = ':25:' AND INSTR (v_mt940_rdata, c_rekeningnummer) = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Ander rekeningnr dan waarvoor import is bedoeld!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'MT940/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'MT940/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Importproces MT940 afgebroken!');
END wibc_import_mt940;
/
/* Formatted on 6-6-2013 17:16:18 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE wibc_update_mt940 (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_insert NUMBER (10);
v_count NUMBER (10);
v_aanduiding VARCHAR2 (500);
-- Redundant opgeslagen bij 1 of meer transacties (better safe than sorry)!
v_bankboek_key NUMBER (10);
v_afschriftnr VARCHAR2 (50);
v_boekdat_oud VARCHAR2 (6);
v_saldo_oud NUMBER (12, 3);
v_valutadat VARCHAR2 (6);
v_creditdebet VARCHAR2 (2);
v_bedrag_begin NUMBER;
v_bedrag_lengte NUMBER;
v_bedrag NUMBER (12, 3);
v_transactietype VARCHAR2 (4);
v_tegenrekening VARCHAR2 (50);
v_omschrijving VARCHAR2 (500);
v_boekdat_nieuw VARCHAR2 (6);
v_saldo_nieuw NUMBER (12, 3);
CURSOR c1 -- BELANGRIJK: Op volgorde inlezen!
IS
SELECT mt940_index,
mt940_rcode,
mt940_rdata,
mt940_troms
FROM wibc_imp_mt940
--WHERE mt940_rcode IN (':28C:', ':60F:', ':61:', ':62F:') -- Rest skippen!
WHERE mt940_rcode IN (':28:', ':60F:', ':61:', ':62F:')
-- Rest skippen!
ORDER BY mt940_index;
CURSOR c2
IS
SELECT bb.bankboek_key, ud.fac_usrdata_upper factuurnummer
FROM wibc_bankboek bb, fac_usrdata ud
WHERE bankboek_key > COALESCE (v_bankboek_key, 0)
AND INSTR (UPPER (COALESCE (bb.omschrijving, 'x')),
ud.fac_usrdata_upper) > 0
AND INSTR (UPPER (COALESCE (bb.ref_waarde, 'x')),
ud.fac_usrdata_upper) = 0
AND ud.fac_usrtab_key = 82
AND ud.fac_usrdata_verwijder IS NULL
ORDER BY ud.fac_usrdata_upper; -- MAIN
BEGIN
v_count_insert := 0;
v_count := 0;
SELECT MAX (bankboek_key) INTO v_bankboek_key FROM wibc_bankboek;
FOR rec1 IN c1
LOOP
BEGIN
v_aanduiding :=
'[' || rec1.mt940_rdata || '|' || rec1.mt940_troms || '] ';
--IF (rec1.mt940_rcode = ':28C:')
IF (rec1.mt940_rcode = ':28:')
THEN
v_errormsg := 'Fout bij bepalen afschrift/volgnummer';
v_afschriftnr := SUBSTR (rec1.mt940_rdata, 1, 20);
ELSIF (rec1.mt940_rcode = ':60F:')
THEN
v_errormsg := 'Fout bij bepalen saldo oud';
v_boekdat_oud := SUBSTR (rec1.mt940_rdata, 2, 6);
IF (UPPER (SUBSTR (rec1.mt940_rdata, 1, 1)) = 'C')
THEN -- 'C(redit)'
v_saldo_oud :=
fac.safe_to_number (
REPLACE (SUBSTR (rec1.mt940_rdata, 11), ',', '.')
);
ELSE -- 'D(ebet)'
v_saldo_oud :=
-1
* fac.safe_to_number (
REPLACE (SUBSTR (rec1.mt940_rdata, 11), ',', '.')
);
END IF;
ELSIF (rec1.mt940_rcode = ':61:')
THEN
v_errormsg := 'Fout bij bepalen transactie'; -- Waar het om gaat!
v_valutadat := SUBSTR (rec1.mt940_rdata, 1, 6);
IF (INSTR (rec1.mt940_rdata, 'C') BETWEEN 1 AND 12)
THEN
IF (SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'C') - 1,
1) IN
('0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
',',
'.'))
THEN
v_creditdebet := 'C';
ELSE
v_creditdebet :=
SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'C') - 1,
2);
END IF;
-- Skip optionele 'Kapitaalcode'?
IF (SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'C') + 1,
1) IN
('0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
',',
'.'))
THEN
v_bedrag_begin := INSTR (rec1.mt940_rdata, 'C') + 1;
ELSE
v_bedrag_begin := INSTR (rec1.mt940_rdata, 'C') + 2;
END IF;
ELSE -- (INSTR (rec1.mt940_rdata, 'D') BETWEEN 1 AND 12)
IF (SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'D') - 1,
1) IN
('0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
',',
'.'))
THEN
v_creditdebet := 'D';
ELSE
v_creditdebet :=
SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'D') - 1,
2);
END IF;
-- Skip optionele 'Kapitaalcode'?
IF (SUBSTR (rec1.mt940_rdata,
INSTR (rec1.mt940_rdata, 'D') + 1,
1) IN
('0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
',',
'.'))
THEN
v_bedrag_begin := INSTR (rec1.mt940_rdata, 'D') + 1;
ELSE
v_bedrag_begin := INSTR (rec1.mt940_rdata, 'D') + 2;
END IF;
END IF;
v_bedrag_lengte := 1;
WHILE (SUBSTR (rec1.mt940_rdata,
v_bedrag_begin + v_bedrag_lengte,
1) IN
('0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
',',
'.')
AND v_bedrag_lengte < 15)
LOOP
v_bedrag_lengte := v_bedrag_lengte + 1;
END LOOP;
v_bedrag :=
fac.safe_to_number(REPLACE (
SUBSTR (rec1.mt940_rdata,
v_bedrag_begin,
v_bedrag_lengte),
',',
'.'
));
v_transactietype :=
SUBSTR (rec1.mt940_rdata, v_bedrag_begin + v_bedrag_lengte, 4);
v_tegenrekening :=
SUBSTR (rec1.mt940_rdata,
v_bedrag_begin + v_bedrag_lengte + 4);
SELECT COUNT ( * )
INTO v_count
FROM wibc_bankboek
WHERE afschriftnr = v_afschriftnr
AND valutadat = v_valutadat
AND creditdebet = v_creditdebet
AND bedrag = v_bedrag
AND transactietype = v_transactietype
AND tegenrekening = v_tegenrekening
AND omschrijving = rec1.mt940_troms;
IF (v_count = 0)
THEN
INSERT INTO wibc_bankboek (regel_insert,
afschriftnr,
boekdat_oud,
saldo_oud,
valutadat,
creditdebet,
bedrag,
transactietype,
tegenrekening,
omschrijving)
VALUES (SYSDATE,
v_afschriftnr,
v_boekdat_oud,
v_saldo_oud,
v_valutadat,
v_creditdebet,
v_bedrag,
v_transactietype,
v_tegenrekening,
rec1.mt940_troms);
COMMIT;
v_count_insert := v_count_insert + 1;
ELSE
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || 'Transactie bestaat al?',
'Transactie niet toegevoegd!');
END IF;
ELSIF (rec1.mt940_rcode = ':62F:')
THEN
v_errormsg := 'Fout bij bepalen saldo nieuw';
v_boekdat_nieuw := SUBSTR (rec1.mt940_rdata, 2, 6);
IF (UPPER (SUBSTR (rec1.mt940_rdata, 1, 1)) = 'C')
THEN -- 'C(redit)'
v_saldo_nieuw :=
fac.safe_to_number (
REPLACE (SUBSTR (rec1.mt940_rdata, 11), ',', '.')
);
ELSE -- 'D(ebet)'
v_saldo_nieuw :=
-1
* fac.safe_to_number (
REPLACE (SUBSTR (rec1.mt940_rdata, 11), ',', '.')
);
END IF;
UPDATE wibc_bankboek
SET boekdat_nieuw = v_boekdat_nieuw,
saldo_nieuw = v_saldo_nieuw
WHERE bankboek_key > COALESCE (v_bankboek_key, 0)
AND afschriftnr = v_afschriftnr
AND boekdat_oud = v_boekdat_oud
AND saldo_oud = v_saldo_oud;
COMMIT;
ELSE -- Kan niet!
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Unexpected code: ' || rec1.mt940_rcode,
''
);
END IF;
END;
END LOOP;
SELECT COUNT ( * )
INTO v_count
FROM wibc_bankboek
WHERE bankboek_key > v_bankboek_key
AND ( afschriftnr IS NULL
OR boekdat_oud IS NULL
OR saldo_oud IS NULL
OR valutadat IS NULL
OR creditdebet IS NULL
OR bedrag IS NULL
OR boekdat_nieuw IS NULL
OR saldo_nieuw IS NULL);
IF (v_count = 0)
THEN
fac.imp_writelog (
p_import_key,
'S',
'MT940-transacties/#toegevoegd: ' || TO_CHAR (v_count_insert),
''
);
ELSE
fac.imp_writelog (
p_import_key,
'E',
'MT940-transacties/#ongeldig: '
|| TO_CHAR (v_count)
|| ' van '
|| TO_CHAR (v_count_insert),
'Geen transacties toegevoegd!'
);
-- Draai eventuele toevoegingen vandaag(!) terug.
DELETE FROM wibc_bankboek
WHERE bankboek_key > v_bankboek_key;
END IF;
COMMIT;
FOR rec1 IN c2
LOOP
BEGIN
v_errormsg := 'Fout bij matchen transactie';
v_aanduiding :=
'['
|| TO_CHAR (rec1.bankboek_key)
|| '|'
|| rec1.factuurnummer
|| '] ';
UPDATE wibc_bankboek
SET ref_waarde =
DECODE (ref_waarde,
NULL, rec1.factuurnummer,
ref_waarde || '/' || rec1.factuurnummer),
ref_update = SYSDATE
WHERE bankboek_key = rec1.bankboek_key;
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.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Updateproces MT940 afgebroken!');
-- Draai eventuele toevoegingen vandaag(!) terug.
DELETE FROM wibc_bankboek
WHERE bankboek_key > v_bankboek_key;
END wibc_update_mt940;
/
/* Formatted on 5-6-2013 16:30:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_res_actual
(
periode,
hide_f_debnr,
fclt_f_bedrijf,
per_adres,
fclt_f_aanvrager,
adres,
postcode,
plaats,
btwnr,
fclt_f_factuur,
factuurperiode,
factuurdatum,
vervaldatum,
hide_f_datum,
hide_f_restype,
resnr,
datum,
van,
tot,
bezoekers,
activiteit_key,
ruimte_voorzieningen,
aantal,
stuksprijs,
kosten,
btwtarief,
btwkosten,
omschrijving,
opmerking
)
AS
SELECT DECODE (TO_CHAR (x.tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'), 0,
1)
periode,
SUBSTR (
'000000'
|| TO_CHAR (COALESCE (y.prs_link_key, x.prs_perslid_key)),
-6
)
debnr,
COALESCE (x.bedrijf,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key =
COALESCE (y.prs_link_key, x.prs_perslid_key))
)
tav,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cad.prs_kenmerklink_waarde),
TRIM (fad.prs_kenmerklink_waarde))
adres,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpc.prs_kenmerklink_waarde),
TRIM (fpc.prs_kenmerklink_waarde))
postcode,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpl.prs_kenmerklink_waarde),
TRIM (fpl.prs_kenmerklink_waarde))
plaats,
btwnr.prs_kenmerklink_waarde btwnr,
'***CONCEPT***' factuurnummer, -- Factuurnummer
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') factuurperiode,
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (SYSDATE + 24, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi')
|| rvc.res_ruimte_nr
|| x.res_reservering_key
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
rvc.res_type || SUBSTR ('000000' || TO_CHAR (rvc.vnr), -6)
sortering2, -- ..daarbinnen op type (1R2V3C) en dan volgnr
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
TO_CHAR (x.van, 'dd-mm-yyyy') datum_tijd,
TO_CHAR (x.van, 'hh24:mi') van,
TO_CHAR (x.tot, 'hh24:mi') tot,
TO_CHAR (x.res_rsv_ruimte_bezoekers) bezoekers,
x.res_activiteit_key,
DECODE (
rvc.res_type,
'2V',
rvc.res_voorziening || ' / ' || TO_CHAR (rvc.aantal) || ' uur',
'3C',
DECODE (x.res_activiteit_key,
50, x.res_rsv_ruimte_omschrijving,
70, x.res_rsv_ruimte_omschrijving,
TO_CHAR (rvc.aantal) || ' * ' || rvc.res_voorziening),
rvc.res_ruimte_nr -- '1R'
)
ruimte_voorzieningen,
TO_CHAR (rvc.aantal) aantal,
ROUND (
DECODE (
rvc.res_rsv_prijs,
NULL,
rvc.ps,
rvc.res_rsv_prijs
/ DECODE (rvc.aantal, NULL, 1, 0, 1, rvc.aantal)
),
2
)
stuksprijs,
ROUND (
DECODE (
rvc.res_type,
'1R',
DECODE (
SIGN (rvc.aantal - 8),
-1,
DECODE (SIGN (rvc.aantal - 4),
-1, rvc.aantal * rvc.ps,
rvc.po + (rvc.aantal - 4) * rvc.ps),
rvc.pm
),
DECODE ( -- '2V' of '3C'
x.res_activiteit_key,
50, -- Creditboeking
-1 * COALESCE (rvc.res_rsv_prijs, rvc.aantal * rvc.ps),
COALESCE (rvc.res_rsv_prijs, rvc.aantal * rvc.ps)
)
),
2
)
netto,
rvc.btw btwtarief,
ROUND (
DECODE (
rvc.res_type,
'1R',
DECODE (
SIGN (rvc.aantal - 8),
-1,
DECODE (SIGN (rvc.aantal - 4),
-1, rvc.aantal * rvc.ps,
rvc.po + (rvc.aantal - 4) * rvc.ps),
rvc.pm
),
DECODE ( -- '2V' of '3C'
x.res_activiteit_key,
50, -- Creditboeking
-1 * COALESCE (rvc.res_rsv_prijs, rvc.aantal * rvc.ps),
COALESCE (rvc.res_rsv_prijs, rvc.aantal * rvc.ps)
)
)
* rvc.btw
/ 100,
2
)
btw,
x.res_rsv_ruimte_omschrijving oms,
x.res_rsv_ruimte_opmerking opm
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rr.res_rsv_ruimte_van
van,
rr.res_rsv_ruimte_tot
tot,
rr.res_activiteit_key,
rr.res_rsv_ruimte_bezoekers,
rr.res_rsv_ruimte_omschrijving,
rr.res_rsv_ruimte_opmerking,
p.prs_perslid_key,
TRIM(bedr.prs_kenmerklink_waarde)
bedrijf
FROM res_v_aanwezigrsv_ruimte rr,
prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1000)
bedr
WHERE rr.res_rsv_ruimte_ordernr IS NULL
AND rr.res_status_fo_key IN
(1, 2)
AND COALESCE (
rr.res_status_bo_key,
2
) != 6 -- Nog niet AV
AND rr.res_rsv_ruimte_dirtlevel =
0
--AND rr.res_rsv_ruimte_tot <
-- TO_DATE (
-- '01'
-- || TO_CHAR (
-- SYSDATE,
-- 'mmyyyy'
-- ),
-- 'ddmmyyyy'
-- )
AND rr.res_rsv_ruimte_tot <
SYSDATE
+ (1 / 24)
AND rr.res_rsv_ruimte_contact_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
AND p.prs_perslid_key =
bedr.prs_link_key(+))
x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (
mc.prs_link_key,
c.prs_link_key
)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN(kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key =
1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21,
22) -- Leden/Niet leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN(kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key =
1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21,
22) -- Leden/Niet leden
AND p.prs_srtperslid_key =
482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf =
mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON COALESCE (y.prs_link_key,
x.prs_perslid_key) =
pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON COALESCE (y.prs_link_key,
x.prs_perslid_key) =
tav.prs_link_key
AND tav.prs_kenmerk_key = 1040
LEFT JOIN
prs_v_aanwezigkenmerklink cad
ON COALESCE (y.prs_link_key,
x.prs_perslid_key) =
cad.prs_link_key
AND cad.prs_kenmerk_key = 1001 -- C-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink cpc
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
cpc.prs_link_key
AND cpc.prs_kenmerk_key = 1002 -- C-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink cpl
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
cpl.prs_link_key
AND cpl.prs_kenmerk_key = 1003 -- C-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink fad
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fad.prs_link_key
AND fad.prs_kenmerk_key = 1006 -- F-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink fpc
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fpc.prs_link_key
AND fpc.prs_kenmerk_key = 1007 -- F-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink fpl
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fpl.prs_link_key
AND fpl.prs_kenmerk_key = 1008 -- F-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink btwnr
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
btwnr.prs_link_key
AND btwnr.prs_kenmerk_key = 1005 -- BTW-nr
LEFT JOIN
(SELECT rrr.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'1R' res_type,
TO_NUMBER (NULL) vnr,
NULL res_voorziening,
rrr.res_rsv_ruimte_prijs res_rsv_prijs,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van)
* 24
aantal, -- Duur in uren
rr.res_ruimte_prijs ps, -- Uur-tarief
rr.res_ruimte_prijs_ochtend po, -- Dagdeel-tarief
rr.res_ruimte_prijs_middag pm, -- Dag-tarief
21 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
UNION ALL
SELECT rrd.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'2V' res_type,
rd.res_ins_deel_key vnr,
LTRIM (ID.ins_deel_omschrijving)
|| DECODE (rd.res_deel_eenheid,
NULL, '',
' (' || rd.res_deel_eenheid || ')')
res_voorziening,
rrd.res_rsv_deel_prijs res_rsv_prijs,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24
aantal, -- Duur in uren
rd.res_deel_prijs ps, -- Uur-tarief
TO_NUMBER (NULL) po, -- Dagdeel-tarief
TO_NUMBER (NULL) pm, -- Dag-tarief
21 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel ID
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_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_ins_deel_key = ID.ins_deel_key
UNION ALL
SELECT rra.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'3C' res_type,
ra.res_artikel_volgnummer vnr,
LTRIM (ra.res_artikel_omschrijving)
|| DECODE (ra.res_artikel_eenheid,
NULL, '',
' (' || ra.res_artikel_eenheid || ')')
res_voorziening,
rra.res_rsv_artikel_prijs res_rsv_prijs,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs ps, -- Stuksprijs
TO_NUMBER (NULL) po, -- Dagdeel-tarief
TO_NUMBER (NULL) pm, -- Dag-tarief
COALESCE (rra.res_rsv_artikel_btw,
ra.res_artikel_btw,
21)
btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key) rvc
ON x.res_rsv_ruimte_key = rvc.res_rsv_ruimte_key
UNION ALL -- Additionele lidmaatschapregels voor leden!
SELECT 1 periode,
SUBSTR (
'000000'
|| TO_CHAR (COALESCE (y.prs_link_key, x.prs_perslid_key)),
-6
)
debnr,
COALESCE (x.bedrijf,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key =
COALESCE (y.prs_link_key, x.prs_perslid_key))
)
tav,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cad.prs_kenmerklink_waarde),
TRIM (fad.prs_kenmerklink_waarde))
adres,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpc.prs_kenmerklink_waarde),
TRIM (fpc.prs_kenmerklink_waarde))
postcode,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpl.prs_kenmerklink_waarde),
TRIM (fpl.prs_kenmerklink_waarde))
plaats,
btwnr.prs_kenmerklink_waarde btwnr,
'***CONCEPT***' factuurnummer, -- Factuurnummer
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') factuurperiode,
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (SYSDATE + 24, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (TRUNC (x.van - 1, 'mm'), 'yyyy-mm-dd hh24:mi')
|| x.lidmaatschap
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
'0L' sortering2, -- ..daarbinnen op type (0L1R1S2V3C)
NULL resnr,
NULL datum_tijd,
NULL van,
NULL tot,
NULL bezoekers,
NULL res_activiteit_key,
'Lidmaatschap ' || x.lidmaatschap ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (250, 2) netto,
21 btwtarief,
ROUND (250 * 21 / 100, 2) btw,
NULL oms,
NULL opm
FROM -- Lidmaatschap maandelijks vooruit (VANAF 2013)!
( SELECT TRIM(bedrijf.prs_kenmerklink_waarde)
bedrijf,
MIN (p.prs_perslid_key)
prs_perslid_key,
TRUNC (SYSDATE, 'mm') van,
TO_CHAR (SYSDATE,
'yyyy-mm')
lidmaatschap
FROM prs_v_aanwezigperslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1000)
bedrijf,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1024)
lidsinds,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1025)
opgezegd
WHERE p.prs_afdeling_key = 21 -- Leden
AND p.prs_perslid_key =
bedrijf.prs_link_key(+)
AND p.prs_perslid_key =
lidsinds.prs_link_key
AND lidsinds.prs_link_key =
opgezegd.prs_link_key(+)
AND TRUNC (SYSDATE, 'mm') >=
fac.safe_to_date (
lidsinds.prs_kenmerklink_waarde,
'dd-mm-yyyy'
)
AND TRUNC (SYSDATE, 'mm') <
COALESCE (
fac.safe_to_date (
opgezegd.prs_kenmerklink_waarde,
'dd-mm-yyyy'
),
SYSDATE
)
GROUP BY TRIM(bedrijf.prs_kenmerklink_waarde)
UNION ALL -- Lidmaatschap over 2012-12 achteraf (EENMALIG)!
SELECT TRIM(bedrijf.prs_kenmerklink_waarde)
bedrijf,
MIN (p.prs_perslid_key)
prs_perslid_key,
TRUNC (SYSDATE, 'mm') van,
'2012-12' lidmaatschap
FROM prs_v_aanwezigperslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1000)
bedrijf,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key =
1024)
lidsinds
WHERE p.prs_afdeling_key = 21 -- Leden
AND p.prs_perslid_key =
bedrijf.prs_link_key(+)
AND p.prs_perslid_key =
lidsinds.prs_link_key
AND lidsinds.prs_kenmerklink_waarde LIKE
'%2012'
AND TO_CHAR (SYSDATE,
'yyyy-mm') =
'2013-01' -- Alleen dan dus!
GROUP BY TRIM(bedrijf.prs_kenmerklink_waarde))
x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (
mc.prs_link_key,
c.prs_link_key
)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN(kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key =
1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key =
21 -- Leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN(kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key =
1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key =
21 -- Leden
AND p.prs_srtperslid_key =
482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf = mc.bedrijf)
y
ON UPPER (x.bedrijf) = y.bedrijf
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON COALESCE (y.prs_link_key,
x.prs_perslid_key) =
pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON COALESCE (y.prs_link_key,
x.prs_perslid_key) =
tav.prs_link_key
AND tav.prs_kenmerk_key = 1040
LEFT JOIN -- 1001 = C-Adres
prs_v_aanwezigkenmerklink cad
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
cad.prs_link_key
AND cad.prs_kenmerk_key = 1001
LEFT JOIN -- 1002 = C-Postcode
prs_v_aanwezigkenmerklink cpc
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
cpc.prs_link_key
AND cpc.prs_kenmerk_key = 1002
LEFT JOIN -- 1003 = C-Plaats
prs_v_aanwezigkenmerklink cpl
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
cpl.prs_link_key
AND cpl.prs_kenmerk_key = 1003
LEFT JOIN
prs_v_aanwezigkenmerklink fad
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fad.prs_link_key
AND fad.prs_kenmerk_key = 1006 -- F-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink fpc
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fpc.prs_link_key
AND fpc.prs_kenmerk_key = 1007 -- F-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink fpl
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
fpl.prs_link_key
AND fpl.prs_kenmerk_key = 1008 -- F-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink btwnr
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
btwnr.prs_link_key
AND btwnr.prs_kenmerk_key = 1005 -- BTW-nr
WHERE NOT EXISTS
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 82
AND TO_CHAR (fac_usrdata_aanmaak, 'yyyy-mm') =
TO_CHAR (SYSDATE, 'yyyy-mm')
AND fac.safe_to_number(SUBSTR (
fac_usrdata_omschr,
1,
LENGTH (
fac_usrdata_omschr
)
- 1
)) =
COALESCE (y.prs_link_key, x.prs_perslid_key))
UNION ALL -- Additionele kortingregels voor huurders/leden!
SELECT DECODE (TO_CHAR (x.van, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'), 0,
1)
periode,
SUBSTR (
'000000'
|| TO_CHAR (COALESCE (y.prs_link_key, x.prs_perslid_key)),
-6
)
debnr,
COALESCE (x.bedrijf,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key =
COALESCE (y.prs_link_key, x.prs_perslid_key))
)
tav,
NULL adres,
NULL postcode,
NULL plaats,
NULL btwnr,
'***CONCEPT***' factuurnummer, -- Factuurnummer
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') factuurperiode,
TO_CHAR (SYSDATE, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (SYSDATE + 24, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi')
|| x.res_ruimte_nr
|| x.res_reservering_key
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
'1S' sortering2, -- ..daarbinnen op type (0L1R1S2V3C)
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
NULL datum_tijd,
NULL van,
NULL tot,
NULL bezoekers,
NULL res_activiteit_key,
x.res_ruimte_nr || ' 20% korting' ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (
DECODE (
SIGN (x.aantal - 8),
-1,
DECODE (SIGN (x.aantal - 4),
-1, x.aantal * x.ps,
x.po + (x.aantal - 4) * x.ps),
x.pm
)
* -0.2,
2
)
netto,
21 btwtarief,
ROUND (
DECODE (
SIGN (x.aantal - 8),
-1,
DECODE (SIGN (x.aantal - 4),
-1, x.aantal * x.ps,
x.po + (x.aantal - 4) * x.ps),
x.pm
)
* -0.2
* 21
/ 100,
2
)
btw,
NULL oms,
NULL opm
FROM (SELECT TRIM (bedrijf.prs_kenmerklink_waarde) bedrijf,
p.prs_perslid_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rr.res_ruimte_nr,
rrr.res_rsv_ruimte_van van,
(rrr.res_rsv_ruimte_tot
- rrr.res_rsv_ruimte_van)
* 24
aantal,
rr.res_ruimte_prijs ps,
rr.res_ruimte_prijs_ochtend po,
rr.res_ruimte_prijs_middag pm
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
prs_perslid p,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) bedrijf,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1023) huurder,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1024) lidsinds,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1025) opgezegd
WHERE rrr.res_rsv_ruimte_ordernr IS NULL
AND rrr.res_status_fo_key IN (1, 2)
AND rrr.res_status_bo_key != 6 -- Nog niet AV
AND 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 rrr.res_rsv_ruimte_tot <
-- TO_DATE (
-- '01' || TO_CHAR (SYSDATE, 'mmyyyy'),
-- 'ddmmyyyy'
-- )
AND rrr.res_rsv_ruimte_tot <
SYSDATE + (1 / 24)
AND rrr.res_rsv_ruimte_contact_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
AND p.prs_perslid_key =
bedrijf.prs_link_key(+)
AND p.prs_perslid_key =
huurder.prs_link_key(+)
AND p.prs_perslid_key =
lidsinds.prs_link_key(+)
AND p.prs_perslid_key =
opgezegd.prs_link_key(+)
AND (huurder.prs_kenmerklink_waarde = 1
OR (TRUNC (rrr.res_rsv_ruimte_van, 'mm') >=
COALESCE (
fac.safe_to_date (
lidsinds.prs_kenmerklink_waarde,
'dd-mm-yyyy'
),
SYSDATE
)
AND TRUNC (rrr.res_rsv_ruimte_van,
'mm') <
COALESCE (
fac.safe_to_date (
opgezegd.prs_kenmerklink_waarde,
'dd-mm-yyyy'
),
SYSDATE
)))) x
LEFT JOIN
(SELECT c.bedrijf,
COALESCE (mc.prs_link_key, c.prs_link_key)
prs_link_key
FROM ( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
c
LEFT JOIN
( SELECT UPPER(TRIM(kl.prs_kenmerklink_waarde))
bedrijf,
MIN (kl.prs_link_key)
prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_perslid p
WHERE kl.prs_kenmerk_key = 1000
AND kl.prs_link_key =
p.prs_perslid_key
AND p.prs_afdeling_key IN
(21, 22) -- Leden/Niet leden
AND p.prs_srtperslid_key = 482
GROUP BY UPPER(TRIM(kl.prs_kenmerklink_waarde)))
mc
ON c.bedrijf = mc.bedrijf) y
ON UPPER (x.bedrijf) = y.bedrijf
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON COALESCE (y.prs_link_key, x.prs_perslid_key) =
tav.prs_link_key
AND tav.prs_kenmerk_key = 1040;
/* Formatted on 5-6-2013 16:35:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_res_frozen
(
hide_f_debnr,
fclt_f_bedrijf,
per_adres,
fclt_f_aanvrager,
adres,
postcode,
plaats,
btwnr,
fclt_f_factuur,
factuurperiode,
factuurdatum,
vervaldatum,
hide_f_datum,
hide_f_restype,
resnr,
datum,
van,
tot,
bezoekers,
activiteit_key,
ruimte_voorzieningen,
aantal,
stuksprijs,
kosten,
btwtarief,
btwkosten,
omschrijving,
opmerking
)
AS
SELECT SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6) debnr,
COALESCE (bedr.prs_kenmerklink_waarde,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key = x.prs_perslid_key)
)
tav,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cad.prs_kenmerklink_waarde),
TRIM (fad.prs_kenmerklink_waarde))
adres,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpc.prs_kenmerklink_waarde),
TRIM (fpc.prs_kenmerklink_waarde))
postcode,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpl.prs_kenmerklink_waarde),
TRIM (fpl.prs_kenmerklink_waarde))
plaats,
btwnr.prs_kenmerklink_waarde btwnr,
x.factuurnummer,
TO_CHAR (TRUNC (x.factuurdatum, 'mm') - 1, 'yyyy-mm')
factuurperiode,
TO_CHAR (x.factuurdatum, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (x.vervaldatum, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi')
|| rvc.res_ruimte_nr
|| x.res_reservering_key
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
rvc.res_type || SUBSTR ('000000' || TO_CHAR (rvc.vnr), -6)
sortering2, -- ..daarbinnen op type (1R2V3C) en dan volgnr
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
TO_CHAR (x.van, 'dd-mm-yyyy') datum_tijd,
TO_CHAR (x.van, 'hh24:mi') van,
TO_CHAR (x.tot, 'hh24:mi') tot,
TO_CHAR (x.res_rsv_ruimte_bezoekers) bezoekers,
x.res_activiteit_key,
DECODE (
rvc.res_type,
'2V',
rvc.res_voorziening || ' / ' || TO_CHAR (rvc.aantal) || ' uur',
'3C',
DECODE (x.res_activiteit_key,
50, x.res_rsv_ruimte_omschrijving,
70, x.res_rsv_ruimte_omschrijving,
TO_CHAR (rvc.aantal) || ' * ' || rvc.res_voorziening),
rvc.res_ruimte_nr -- '1R'
)
ruimte_voorzieningen,
TO_CHAR (rvc.aantal) aantal,
ROUND (
COALESCE (rvc.res_rsv_prijs, 0)
/ DECODE (rvc.aantal, NULL, 1, 0, 1, rvc.aantal),
2
)
stuksprijs,
ROUND (
DECODE ( -- '2V' of '3C'
x.res_activiteit_key,
50, -- Creditboeking
-1 * COALESCE (rvc.res_rsv_prijs, 0),
COALESCE (rvc.res_rsv_prijs, 0)),
2
)
netto,
rvc.btw btwtarief,
ROUND (
DECODE ( -- '2V' of '3C'
x.res_activiteit_key,
50, -- Creditboeking
-1 * COALESCE (rvc.res_rsv_prijs, 0),
COALESCE (rvc.res_rsv_prijs, 0))
* rvc.btw
/ 100,
2
)
btw,
x.res_rsv_ruimte_omschrijving oms,
x.res_rsv_ruimte_opmerking opm
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rr.res_rsv_ruimte_van
van,
rr.res_rsv_ruimte_tot
tot,
rr.res_activiteit_key,
rr.res_rsv_ruimte_bezoekers,
rr.res_rsv_ruimte_omschrijving,
rr.res_rsv_ruimte_opmerking,
fac.safe_to_number(SUBSTR (
ud.fac_usrdata_omschr,
1,
LENGTH(ud.fac_usrdata_omschr)
- 1
))
prs_perslid_key,
ud.fac_usrdata_code
factuurnummer,
ud.fac_usrdata_aanmaak
factuurdatum,
ud.fac_usrdata_vervaldatum
vervaldatum
FROM res_v_aanwezigrsv_ruimte rr,
fac_v_aanwezigusrdata ud
WHERE rr.res_rsv_ruimte_ordernr =
ud.fac_usrdata_code
AND ud.fac_usrtab_key =
82) x
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON x.prs_perslid_key =
pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON x.prs_perslid_key =
tav.prs_link_key
AND tav.prs_kenmerk_key = 1040
LEFT JOIN -- 1000 = Bedrijf
prs_v_aanwezigkenmerklink bedr
ON x.prs_perslid_key = bedr.prs_link_key
AND bedr.prs_kenmerk_key = 1000
LEFT JOIN
prs_v_aanwezigkenmerklink cad
ON x.prs_perslid_key = cad.prs_link_key
AND cad.prs_kenmerk_key = 1001 -- C-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink cpc
ON x.prs_perslid_key = cpc.prs_link_key
AND cpc.prs_kenmerk_key = 1002 -- C-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink cpl
ON x.prs_perslid_key = cpl.prs_link_key
AND cpl.prs_kenmerk_key = 1003 -- C-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink fad
ON x.prs_perslid_key = fad.prs_link_key
AND fad.prs_kenmerk_key = 1006 -- F-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink fpc
ON x.prs_perslid_key = fpc.prs_link_key
AND fpc.prs_kenmerk_key = 1007 -- F-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink fpl
ON x.prs_perslid_key = fpl.prs_link_key
AND fpl.prs_kenmerk_key = 1008 -- F-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink btwnr
ON x.prs_perslid_key = btwnr.prs_link_key
AND btwnr.prs_kenmerk_key = 1005 -- BTW-nr
LEFT JOIN
(SELECT rrr.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'1R' res_type,
TO_NUMBER (NULL) vnr,
NULL res_voorziening,
rrr.res_rsv_ruimte_prijs res_rsv_prijs,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van)
* 24
aantal, -- Duur in uren
21 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
UNION ALL
SELECT rrd.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'2V' res_type,
rd.res_ins_deel_key vnr,
LTRIM (ID.ins_deel_omschrijving)
|| DECODE (rd.res_deel_eenheid,
NULL, '',
' (' || rd.res_deel_eenheid || ')')
res_voorziening,
rrd.res_rsv_deel_prijs res_rsv_prijs,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24
aantal, -- Duur in uren
21 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel ID
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_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_ins_deel_key = ID.ins_deel_key
UNION ALL
SELECT rra.res_rsv_ruimte_key,
rr.res_ruimte_nr,
'3C' res_type,
ra.res_artikel_volgnummer vnr,
LTRIM (ra.res_artikel_omschrijving)
|| DECODE (ra.res_artikel_eenheid,
NULL, '',
' (' || ra.res_artikel_eenheid || ')')
res_voorziening,
--DECODE (ra.res_artikel_key, -1, -1, 1) * -- Korting
rra.res_rsv_artikel_prijs res_rsv_prijs,
rra.res_rsv_artikel_aantal aantal,
COALESCE (rra.res_rsv_artikel_btw,
ra.res_artikel_btw,
21)
btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key) rvc
ON x.res_rsv_ruimte_key = rvc.res_rsv_ruimte_key
UNION ALL -- Additionele lidmaatschapregels voor leden!
SELECT SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6) debnr,
COALESCE (bedr.prs_kenmerklink_waarde,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key = x.prs_perslid_key)
)
tav,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cad.prs_kenmerklink_waarde),
TRIM (fad.prs_kenmerklink_waarde))
adres,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpc.prs_kenmerklink_waarde),
TRIM (fpc.prs_kenmerklink_waarde))
postcode,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cpl.prs_kenmerklink_waarde),
TRIM (fpl.prs_kenmerklink_waarde))
plaats,
btwnr.prs_kenmerklink_waarde btwnr,
x.factuurnummer,
TO_CHAR (TRUNC (x.factuurdatum, 'mm') - 1, 'yyyy-mm')
factuurperiode,
TO_CHAR (x.factuurdatum, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (x.vervaldatum, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (TRUNC (TRUNC (x.factuurdatum, 'mm') - 1, 'mm'),
'yyyy-mm-dd hh24:mi')
|| x.lidmaatschap
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
'0L' sortering2, -- ..daarbinnen op type (0L1R1S2V3C)
NULL resnr,
NULL datum_tijd,
NULL van,
NULL tot,
NULL bezoekers,
NULL res_activiteit_key,
'Lidmaatschap ' || x.lidmaatschap ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (250, 2) netto,
21 btwtarief,
ROUND (250 * 21 / 100, 2) btw,
NULL oms,
NULL opm
FROM (SELECT fac.safe_to_number(SUBSTR (
fac_usrdata_omschr,
1,
LENGTH(fac_usrdata_omschr)
- 1
))
prs_perslid_key,
fac_usrdata_code
factuurnummer,
fac_usrdata_aanmaak
factuurdatum,
fac_usrdata_vervaldatum
vervaldatum,
TO_CHAR (
fac_usrdata_aanmaak,
'yyyy-mm'
)
lidmaatschap
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 82
AND SUBSTR (
fac_usrdata_omschr,
-1
) IN
('L', 'X') -- Lidmaatschap
UNION ALL
SELECT fac.safe_to_number(SUBSTR (
fac_usrdata_omschr,
1,
LENGTH(fac_usrdata_omschr)
- 1
))
prs_perslid_key,
fac_usrdata_code
factuurnummer,
fac_usrdata_aanmaak
factuurdatum,
fac_usrdata_vervaldatum
vervaldatum,
'2012-12' lidmaatschap
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 82
AND SUBSTR (
fac_usrdata_omschr,
-1
) IN
('L', 'X') -- Lidmaatschap
AND TO_CHAR (
fac_usrdata_aanmaak,
'yyyy-mm'
) = '2013-01') x
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON x.prs_perslid_key = pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON x.prs_perslid_key = tav.prs_link_key
AND tav.prs_kenmerk_key = 1040
LEFT JOIN
prs_v_aanwezigkenmerklink bedr
ON x.prs_perslid_key = bedr.prs_link_key
AND bedr.prs_kenmerk_key = 1000 -- Bedrijf
LEFT JOIN
prs_v_aanwezigkenmerklink cad
ON x.prs_perslid_key = cad.prs_link_key
AND cad.prs_kenmerk_key = 1001 -- C-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink cpc
ON x.prs_perslid_key = cpc.prs_link_key
AND cpc.prs_kenmerk_key = 1002 -- C-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink cpl
ON x.prs_perslid_key = cpl.prs_link_key
AND cpl.prs_kenmerk_key = 1003 -- C-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink fad
ON x.prs_perslid_key = fad.prs_link_key
AND fad.prs_kenmerk_key = 1006 -- F-Adres
LEFT JOIN
prs_v_aanwezigkenmerklink fpc
ON x.prs_perslid_key = fpc.prs_link_key
AND fpc.prs_kenmerk_key = 1007 -- F-Postcode
LEFT JOIN
prs_v_aanwezigkenmerklink fpl
ON x.prs_perslid_key = fpl.prs_link_key
AND fpl.prs_kenmerk_key = 1008 -- F-Plaats
LEFT JOIN
prs_v_aanwezigkenmerklink btwnr
ON x.prs_perslid_key = btwnr.prs_link_key
AND btwnr.prs_kenmerk_key = 1005 -- BTW-nr
UNION ALL -- Additionele kortingregels voor huurders/leden!
SELECT SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6) debnr,
COALESCE (bedr.prs_kenmerklink_waarde,
SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6))
bedrijf,
TRIM (pa.prs_kenmerklink_waarde) pa,
COALESCE (
TRIM (tav.prs_kenmerklink_waarde),
(SELECT DECODE (prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
|| DECODE (prs_perslid_voorletters,
'', '',
prs_perslid_voorletters || ' ')
|| DECODE (prs_perslid_tussenvoegsel,
'', '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid
WHERE prs_perslid_key = x.prs_perslid_key)
)
tav,
NULL adres,
NULL postcode,
NULL plaats,
NULL btwnr,
x.factuurnummer,
TO_CHAR (TRUNC (x.factuurdatum, 'mm') - 1, 'yyyy-mm')
factuurperiode,
TO_CHAR (x.factuurdatum, 'dd-mm-yyyy') factuurdatum,
TO_CHAR (x.vervaldatum, 'dd-mm-yyyy') vervaldatum,
TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi')
|| x.res_ruimte_nr
|| x.res_reservering_key
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
'1S' sortering2, -- ..daarbinnen op type (0L1R1S2V3C)
x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr resnr,
NULL datum_tijd,
NULL van,
NULL tot,
NULL bezoekers,
NULL res_activiteit_key,
x.res_ruimte_nr || ' 20% korting' ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (COALESCE (x.res_rsv_ruimte_prijs, 0) * -0.2, 2) netto,
21 btwtarief,
ROUND (COALESCE (x.res_rsv_ruimte_prijs, 0) * -0.2 * 21 / 100, 2)
btw,
NULL oms,
NULL opm
FROM (SELECT fac.safe_to_number(SUBSTR (
fac_usrdata_omschr,
1,
LENGTH (
fac_usrdata_omschr
)
- 1
))
prs_perslid_key,
fac_usrdata_code factuurnummer,
fac_usrdata_aanmaak factuurdatum,
fac_usrdata_vervaldatum vervaldatum,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rr.res_ruimte_nr,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_prijs
FROM fac_v_aanwezigusrdata ud,
res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE ud.fac_usrtab_key = 82
AND SUBSTR (ud.fac_usrdata_omschr, -1) IN
('H', 'L', 'X') -- Ruimtekorting
AND ud.fac_usrdata_code =
rrr.res_rsv_ruimte_ordernr
AND rrr.res_status_bo_key = 6 -- AV (zou zo moeten zijn)
AND rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key) x
LEFT JOIN -- 1060 = Factuur p.a.
prs_v_aanwezigkenmerklink pa
ON x.prs_perslid_key = pa.prs_link_key
AND pa.prs_kenmerk_key = 1060
LEFT JOIN -- 1040 = Factuur t.a.v.
prs_v_aanwezigkenmerklink tav
ON x.prs_perslid_key = tav.prs_link_key
AND tav.prs_kenmerk_key = 1040
LEFT JOIN -- 1000 = Bedrijf
prs_v_aanwezigkenmerklink bedr
ON x.prs_perslid_key = bedr.prs_link_key
AND bedr.prs_kenmerk_key = 1000;
/* Formatted on 5-6-2013 15:05:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_freezereserveringen
(
hide_f_prskey,
hide_f_debnr,
fclt_f_bedrijf,
fclt_f_aanvrager,
aantal,
periode
)
AS
SELECT x.hide_f_prskey,
x.hide_f_debnr,
x.fclt_f_bedrijf,
x.fclt_f_aanvrager,
x.aantal,
1 periode -- Altijd 1!
FROM ( SELECT fac.safe_to_number (v.hide_f_debnr) hide_f_prskey,
v.hide_f_debnr,
v.fclt_f_bedrijf,
v.fclt_f_aanvrager,
COUNT (DISTINCT v.resnr) aantal,
SUM (v.periode) periode
FROM wibc_v_rap_res_actual v
WHERE v.periode > 0
GROUP BY fac.safe_to_number (v.hide_f_debnr),
v.hide_f_debnr,
v.fclt_f_bedrijf,
v.fclt_f_aanvrager) x
WHERE x.periode > 0
UNION ALL -- Enkele reservering deze maand (en niets voorgaande maand)!
SELECT x.hide_f_prskey,
x.hide_f_debnr,
x.fclt_f_bedrijf,
x.fclt_f_aanvrager,
x.aantal,
x.periode -- Altijd 0!
FROM ( SELECT fac.safe_to_number (v.hide_f_debnr) hide_f_prskey,
v.hide_f_debnr,
v.fclt_f_bedrijf,
v.fclt_f_aanvrager,
COUNT (DISTINCT v.resnr) aantal,
SUM (v.periode) periode
FROM wibc_v_rap_res_actual v
GROUP BY fac.safe_to_number (v.hide_f_debnr),
v.hide_f_debnr,
v.fclt_f_bedrijf,
v.fclt_f_aanvrager) x
WHERE x.aantal = 1 AND x.periode = 0;
/* Formatted on 5-6-2013 12:24:42 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_transactielijst
(
hide_f_bb_key,
fclt_f_afschrift,
fclt_d_boekdatum,
omschrijving,
fclt_f_cd,
t_bedrag,
r_waarde,
r_bedrag
)
AS
SELECT bb.bankboek_key,
bb.afschriftnr,
TO_CHAR (TO_DATE (bb.boekdat_nieuw, 'yymmdd'), 'dd-mm-yyyy')
boekdatum,
bb.omschrijving,
bb.creditdebet,
bb.bedrag,
bb.ref_waarde,
(SELECT SUM (kosten + btwkosten)
FROM wibc_v_rap_res_frozen v
WHERE INSTR (UPPER (bb.ref_waarde), v.fclt_f_factuur) > 0)
ref_bedrag
FROM wibc_bankboek bb;
/* Formatted on 7-6-2013 11:55:44 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_charge_register
(
invoice_nr,
fclt_f_name,
fclt_f_firm,
due_date,
fclt_f_post_month,
net_amount,
VAT,
gross,
amount_paid,
remarks
)
AS
SELECT f.fclt_f_factuur,
f.fclt_f_aanvrager,
f.fclt_f_bedrijf,
f.vervaldatum,
SUBSTR (f.factuurperiode, 6, 2)
|| '/'
|| SUBSTR (f.factuurperiode, 1, 4)
factuurperiode,
f.kosten netto,
f.btwkosten btw,
f.kosten + f.btwkosten bruto,
t.t_bedrag,
DECODE (t.aantal,
NULL, NULL,
1, t.ref_waarde,
'Meer dan 1 transactie!')
FROM ( SELECT fclt_f_factuur,
MIN (fclt_f_bedrijf) fclt_f_bedrijf,
MIN (fclt_f_aanvrager) fclt_f_aanvrager,
MIN (factuurperiode) factuurperiode,
MIN (vervaldatum) vervaldatum,
SUM (kosten) kosten,
SUM (btwkosten) btwkosten
FROM wibc_v_rap_res_frozen v
GROUP BY fclt_f_factuur) f
LEFT JOIN
( SELECT ud.fac_usrdata_upper,
SUM (
DECODE (bb.creditdebet, 'D', -1, 1) * bb.bedrag
)
t_bedrag,
COUNT ( * ) aantal,
MAX (bb.ref_waarde) ref_waarde
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
GROUP BY ud.fac_usrdata_upper) t
ON f.fclt_f_factuur = t.fac_usrdata_upper;
/* Formatted on 7-6-2013 11:55:44 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_rap_openpostenlijst
(
fclt_f_legal_entity,
property,
fclt_f_charge_to,
fclt_f_factuurnummer,
factuurdatum,
vervaldatum,
boekperiode,
totaal_gefactureerd,
current_owed,
owed_0_30,
owed_31_60,
owed_61_90,
owed_91_120,
owed_over_120,
betalingen,
memo
)
AS
SELECT f.fclt_f_bedrijf,
'WTC The Hague Business Center',
f.fclt_f_aanvrager,
f.fclt_f_factuur,
f.factuurdatum,
f.vervaldatum,
SUBSTR (f.factuurperiode, 6, 2)
|| '/'
|| SUBSTR (f.factuurperiode, 1, 4)
factuurperiode,
f.f_bedrag,
f.f_bedrag - COALESCE (t.t_bedrag, 0),
CASE
WHEN TRUNC (SYSDATE) - TO_DATE (f.factuurdatum, 'dd-mm-yyyy') BETWEEN 0
AND 30
THEN
f.f_bedrag - COALESCE (paid1, 0)
ELSE
TO_NUMBER (NULL)
END
owed1,
CASE
WHEN TRUNC (SYSDATE) - TO_DATE (f.factuurdatum, 'dd-mm-yyyy') BETWEEN 31
AND 60
THEN
f.f_bedrag - COALESCE (paid1, 0) - COALESCE (paid2, 0)
ELSE
TO_NUMBER (NULL)
END
owed2,
CASE
WHEN TRUNC (SYSDATE) - TO_DATE (f.factuurdatum, 'dd-mm-yyyy') BETWEEN 61
AND 90
THEN
f.f_bedrag
- COALESCE (paid1, 0)
- COALESCE (paid2, 0)
- COALESCE (paid3, 0)
ELSE
TO_NUMBER (NULL)
END
owed3,
CASE
WHEN TRUNC (SYSDATE) - TO_DATE (f.factuurdatum, 'dd-mm-yyyy') BETWEEN 91
AND 120
THEN
f.f_bedrag
- COALESCE (paid1, 0)
- COALESCE (paid2, 0)
- COALESCE (paid3, 0)
- COALESCE (paid4, 0)
ELSE
TO_NUMBER (NULL)
END
owed4,
CASE
WHEN (TRUNC (SYSDATE) - TO_DATE (f.factuurdatum, 'dd-mm-yyyy')) >
120
THEN
f.f_bedrag
- COALESCE (paid1, 0)
- COALESCE (paid2, 0)
- COALESCE (paid3, 0)
- COALESCE (paid4, 0)
- COALESCE (paid5, 0)
ELSE
TO_NUMBER (NULL)
END
owed5,
t.t_bedrag,
NULL
FROM ( SELECT fclt_f_factuur,
MIN (fclt_f_bedrijf) fclt_f_bedrijf,
MIN (fclt_f_aanvrager) fclt_f_aanvrager,
MIN (factuurperiode) factuurperiode,
MIN (factuurdatum) factuurdatum,
MIN (vervaldatum) vervaldatum,
SUM (kosten + btwkosten) f_bedrag
FROM wibc_v_rap_res_frozen
GROUP BY fclt_f_factuur) f
LEFT JOIN
( SELECT ud.fac_usrdata_upper,
MIN(DECODE (
UPPER(SUBSTR (
bb.ref_waarde || 'x',
INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper)
+ 8,
1
)),
'=',
1,
0
))
force_match,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag) -- 'D' en '-' negatief!
t_bedrag
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
GROUP BY ud.fac_usrdata_upper) t
ON f.fclt_f_factuur = t.fac_usrdata_upper
LEFT JOIN
( SELECT x.fac_usrdata_upper,
SUM (x.paid1) paid1,
SUM (x.paid2) paid2,
SUM (x.paid3) paid3,
SUM (x.paid4) paid4,
SUM (x.paid5) paid5
FROM ( SELECT ud.fac_usrdata_upper,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag)
paid1,
0 paid2,
0 paid3,
0 paid4,
0 paid5
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
AND TO_DATE (bb.valutadat, 'yymmdd')
- ud.fac_usrdata_aanmaak BETWEEN 0
AND 30
GROUP BY ud.fac_usrdata_upper
UNION ALL
SELECT ud.fac_usrdata_upper,
0 paid1,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag)
paid2,
0 paid3,
0 paid4,
0 paid5
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
AND TO_DATE (bb.valutadat, 'yymmdd')
- ud.fac_usrdata_aanmaak BETWEEN 31
AND 60
GROUP BY ud.fac_usrdata_upper
UNION ALL
SELECT ud.fac_usrdata_upper,
0 paid1,
0 paid2,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag)
paid3,
0 paid4,
0 paid5
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
AND TO_DATE (bb.valutadat, 'yymmdd')
- ud.fac_usrdata_aanmaak BETWEEN 61
AND 90
GROUP BY ud.fac_usrdata_upper
UNION ALL
SELECT ud.fac_usrdata_upper,
0 paid1,
0 paid2,
0 paid3,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag)
paid4,
0 paid5
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
AND TO_DATE (bb.valutadat, 'yymmdd')
- ud.fac_usrdata_aanmaak BETWEEN 91
AND 120
GROUP BY ud.fac_usrdata_upper
UNION ALL
SELECT ud.fac_usrdata_upper,
0 paid1,
0 paid2,
0 paid3,
0 paid4,
SUM(DECODE (bb.creditdebet, 'C', 1, -1)
* bb.bedrag)
paid5
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.ref_waarde),
ud.fac_usrdata_upper) > 0
AND TO_DATE (bb.valutadat, 'yymmdd')
- ud.fac_usrdata_aanmaak > 120
GROUP BY ud.fac_usrdata_upper) x
GROUP BY x.fac_usrdata_upper) p
ON f.fclt_f_factuur = p.fac_usrdata_upper
--LEFT JOIN -- Eerdere factuur (debet) weggestreept door credit!
-- (SELECT ud.fac_usrdata_upper, 1 debet_ok
-- FROM fac_usrdata ud, wibc_bankboek bb
-- WHERE ud.fac_usrdata_verwijder IS NULL
-- AND ud.fac_usrtab_key = 82
-- AND INSTR (UPPER (bb.ref_waarde),
-- ud.fac_usrdata_upper) > 0
-- AND bb.creditdebet = '-') d
--ON f.fclt_f_factuur = d.fac_usrdata_upper
LEFT JOIN -- Factuur met negatief bedrag (credit) afgehandeld!
(SELECT ud.fac_usrdata_upper, 1 credit_ok
FROM fac_usrdata ud, wibc_bankboek bb
WHERE ud.fac_usrdata_verwijder IS NULL
AND ud.fac_usrtab_key = 82
AND INSTR (UPPER (bb.omschrijving),
ud.fac_usrdata_upper) > 0
AND bb.ref_waarde IS NOT NULL -- Iets ingevuld!
AND bb.creditdebet = '-') c
ON f.fclt_f_factuur = c.fac_usrdata_upper
WHERE f.f_bedrag != COALESCE (t.t_bedrag, 0)
AND COALESCE (t.force_match, 0) = 0 --AND COALESCE (c.debet_ok, 0) = 0
AND COALESCE (c.credit_ok, 0) = 0;
-- Gegevensbron voor het samenstellen van de response op API-requests vanaf
-- WTC-website (WW)!
-- LET OP: Aanname is dat er geen koppelzalen zijn!!!
/* Formatted on 18-12-2012 9:05:55 (QP5 v5.115.810.9015)
CREATE OR REPLACE VIEW WIBC_V_WW_INPUT
(
AV_DATE,
MAX_VIS,
NAV_PERC
)
AS
SELECT bes.ddmmyyyy av_date,
MAX(DECODE (SIGN (bes.uren - COALESCE (bez.uren, 0) - 1),
1, bes.cap,
0))
max_vis,
TO_CHAR(ROUND (
(SUM (COALESCE (bez.uren, 0)) / SUM (bes.uren)) * 100,
0
))
nav_perc -- SUM (bes.uren) nooit 0; hard 10 uur per ruimte!
FROM (SELECT TO_CHAR (per.av_date, 'dd-mm-yyyy') ddmmyyyy,
rr.res_ruimte_key,
rro.res_ruimte_opstel_bezoekers cap,
10 uren -- Beschikbaar
FROM res_v_aanwezigruimte rr,
res_ruimte_opstelling rro,
( SELECT TRUNC (SYSDATE) + ROWNUM - 1 av_date
FROM DUAL
CONNECT BY LEVEL <= 380) per
WHERE rr.res_ruimte_key = rro.res_ruimte_key
AND TO_CHAR (per.av_date, 'D') NOT IN (1, 7)
AND per.av_date NOT IN
(SELECT mld_vrije_dagen_datum
FROM mld_vrije_dagen)) bes
LEFT JOIN
( SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy')
ddmmyyyy,
rr.res_ruimte_key,
MAX (rro.res_ruimte_opstel_bezoekers) cap,
SUM( (rrr.res_rsv_ruimte_tot
- rrr.res_rsv_ruimte_van)
* 24)
uren -- Bezet
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_v_aanwezigruimte rr
WHERE res_rsv_ruimte_van > TRUNC (SYSDATE)
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 IS NOT NULL
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
rr.res_ruimte_key) bez
ON bes.ddmmyyyy = bez.ddmmyyyy
AND bes.res_ruimte_key = bez.res_ruimte_key
GROUP BY bes.ddmmyyyy;
*/
/* Formatted on 24-5-2013 19:30:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW WIBC_V_WW_INPUT
(
AV_DATE, -- Wanneer/datum
ACTIVITY, -- Waarvoor/Vergadering|Presentatie|Videoconferentie|Stiltewerk
MAX_VIS, -- Hoeveel/capaciteit
MAX_DUR,
MAX_BES,
CUR_BEZ,
CUR_BES,
AV_PERC
)
AS
SELECT bes.ddmmyyyy av_date,
DECODE (bes.res_activiteit_key,
10, 'VERGADERING',
30, 'PRESENTATIE',
31, 'VIDEOCONFERENTIE',
'STILTEWERK')
activity,
MAX(DECODE (SIGN (bes.uren - COALESCE (bez.uren, 0) - 1),
1, bes.cap,
0))
max_vis,
MAX (bes.uren - COALESCE (bez.uren, 0)) max_dur,
SUM (bes.uren), -- SUM (bes.uren) nooit 0; hard 10u per ruimte!
SUM (COALESCE (bez.uren, 0)),
SUM (bes.uren) - SUM (COALESCE (bez.uren, 0)),
TO_CHAR(100
- ROUND (
100 * SUM (COALESCE (bez.uren, 0)) / SUM (bes.uren)
))
av_perc -- SUM (bes.uren) nooit 0; hard 10u per ruimte!
FROM (SELECT TO_CHAR (per.av_date, 'dd-mm-yyyy') ddmmyyyy,
rr.res_ruimte_key,
rad.res_activiteit_key,
rro.res_ruimte_opstel_bezoekers cap,
10 uren -- Beschikbaar
FROM res_v_aanwezigruimte rr,
res_ruimte_opstelling rro,
res_activiteitdiscipline rad,
( SELECT TRUNC (SYSDATE) + ROWNUM - 1 av_date
FROM DUAL
CONNECT BY LEVEL <= 380) per
WHERE rr.res_discipline_key != 121 -- Alleen receptie
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rr.res_discipline_key = rad.res_discipline_key
AND rad.res_activiteit_key IN (10, 30, 31, 34)
AND TO_CHAR (per.av_date, 'D') NOT IN (1, 7)
AND per.av_date NOT IN
(SELECT mld_vrije_dagen_datum
FROM mld_vrije_dagen)) bes
LEFT JOIN -- Aanname: GEEN koppelzalen, maar ALLE zalen dubbel!
( SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy')
ddmmyyyy,
--rr.res_ruimte_key,
DECODE (SIGN (rr.res_ruimte_key - 20),
-1, rr.res_ruimte_key,
rr.res_ruimte_key - 20)
res_ruimte_key, -- TODO: NIET TOEKOMSTVAST!
--rrr.res_activiteit_key,
--MAX (rro.res_ruimte_opstel_bezoekers) cap,
--DECODE (rrr.res_activiteit_key, 34, 1, 2) *
SUM(DECODE (
SIGN( ( (rrr.res_rsv_ruimte_tot
- TRUNC (rrr.res_rsv_ruimte_tot))
* 24)
- 18),
1,
18,
( (rrr.res_rsv_ruimte_tot
- TRUNC (rrr.res_rsv_ruimte_tot))
* 24)
)
- ( (rrr.res_rsv_ruimte_van
- TRUNC (rrr.res_rsv_ruimte_van))
* 24))
uren -- Bezet
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_v_aanwezigruimte rr
WHERE rrr.res_activiteit_key IN (10, 30, 31, 34)
AND rrr.res_rsv_ruimte_van > TRUNC (SYSDATE)
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 IS NOT NULL
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
--rr.res_ruimte_key,
--rrr.res_activiteit_key) bez
DECODE (SIGN (rr.res_ruimte_key - 20),
-1, rr.res_ruimte_key,
rr.res_ruimte_key - 20)) bez
ON bes.ddmmyyyy = bez.ddmmyyyy
AND bes.res_ruimte_key = bez.res_ruimte_key
--AND bes.res_activiteit_key = bez.res_activiteit_key
GROUP BY bes.ddmmyyyy, bes.res_activiteit_key;
-- WW-request: GetAv (= Get Availability-indication)
/* Formatted on 28-2-2013 15:12:48 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW WIBC_V_WW_GETAV
(
AV_DATE, -- Wanneer/datum
ACTIVITY, -- Waarvoor/Vergadering|Presentatie|Videoconferentie|Stiltewerk
MAX_VIS, -- Hoeveel/capaciteit
MAX_DUR,
MAX_BES,
CUR_BEZ,
CUR_BES,
AV_PERC
)
AS
SELECT * FROM WIBC_V_WW_INPUT;
/* Formatted on 5-6-2013 17:55:05 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW wibc_v_noti_receptie
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL sender,
NULL, --x.receiver,
sn.fac_srtnotificatie_oms,
p.prs_perslid_key,
NULL,
NULL,
NULL,
'businesscenter@wtcthehague.com',
NULL
FROM prs_perslid p, fac_srtnotificatie sn
WHERE TRUNC (p.prs_perslid_aanmaak) = TRUNC (SYSDATE + 5 / 1440)
AND TO_NUMBER(TO_CHAR (p.prs_perslid_aanmaak, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24'))
--AND p.prs_afdeling_key = 22
AND sn.fac_srtnotificatie_code = 'CUST01'
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL sender,
NULL, --x.receiver,
sn.fac_srtnotificatie_oms,
t.fac_tracking_refkey,
NULL,
NULL,
NULL,
'businesscenter@wtcthehague.com',
NULL
FROM fac_tracking t, fac_srtnotificatie sn
WHERE TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE + 5 / 1440)
AND TO_NUMBER(TO_CHAR (t.fac_tracking_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE + 5 / 1440, 'HH24'))
AND t.fac_srtnotificatie_key = 75 -- RESNEW
AND sn.fac_srtnotificatie_code = 'CUST02';
BEGIN adm.systrackscript('$Workfile: wibc.sql $', '$Revision$', 0); END;
/
BEGIN fac.registercustversion('WIBC', 2); END;
/
COMMIT;
spool off