Files
Customer/WIBC/wibc.sql
Maarten van der Heide 509f1cb1d7 Fout in wibc_v_noti_receptie (door Jos geconstateerd via logging)
svn path=/Customer/trunk/; revision=24791
2015-04-13 13:51:00 +00:00

2872 lines
123 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 10-3-2014 15:12:18 (QP5 v5.136.908.31019) */
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 DECODE (TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'), 0,
1)
periode,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rd.res_rsv_deel_key,
rd.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_deel rd,
wibc_v_cp v
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 = v.cp_key
AND v.bcp_key = p_prskey
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)) x
WHERE 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 DECODE (TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'), 0,
1)
periode,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
ra.res_rsv_artikel_key,
ra.res_artikel_key,
ra.res_status_bo_key,
a.res_artikel_prijs_vast
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_artikel ra,
res_artikel a,
wibc_v_cp v
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 = v.cp_key
AND v.bcp_key = p_prskey
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)) x
WHERE 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 DECODE (TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyymm'),
TO_CHAR (SYSDATE, 'yyyymm'), 0,
1)
periode,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
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
FROM res_v_aanwezigrsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte r,
wibc_v_cp v
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 = v.cp_key
AND v.bcp_key = p_prskey
AND rr.res_rsv_ruimte_tot < SYSDATE + (1 / 24)) x
WHERE 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_lidmaatschap_prijs NUMBER (8, 2);
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 bcp_key, bcnt_prijs
INTO v_prskey, v_lidmaatschap_prijs
FROM wibc_v_cp
WHERE cp_key = p_prskey AND bcp_key = p_prskey;
v_errormsg := 'Fout bij bepalen ruimtekorting.';
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,
fac_usrdata_prijs)
VALUES (82,
v_factuurnr,
TO_CHAR (p_prskey) || v_huurderlid,
TRUNC (SYSDATE),
TRUNC (SYSDATE + 24),
v_lidmaatschap_prijs);
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 12-3-2014 12:06:54 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW wibc_v_cp
(
cp_key,
pcnt_soort,
pcnt_prijs,
bedrijf,
bcp_key,
bcp_lang,
bcnt_aantal,
bcnt_soort,
bcnt_prijs
)
AS
SELECT p.prs_perslid_key,
pcnt.contract,
pcnt.prijs,
pb.bedrijf,
COALESCE (bcp1.prs_link_key, bcp2.prs_link_key, p.prs_perslid_key)
bcp_key,
(SELECT COALESCE (prs_perslid_lang, 'NL')
FROM prs_perslid
WHERE prs_perslid_key =
COALESCE (bcp1.prs_link_key,
bcp2.prs_link_key,
p.prs_perslid_key))
bcp_lang,
bcnt.aantal,
DECODE (bcnt.min_contract,
bcnt.max_contract, bcnt.min_contract,
NULL)
bcp_soort,
COALESCE (bcnt.tot_prijs, pcnt.prijs) tot_prijs
FROM prs_v_aanwezigperslid p -- Personen (actual)
LEFT JOIN (SELECT prs_link_key,
ud.fac_usrdata_omschr contract,
ud.fac_usrdata_prijs prijs
FROM prs_v_aanwezigkenmerklink kl, fac_usrdata ud
WHERE kl.prs_kenmerk_key = 1021 -- Contractsoort
AND fac.safe_to_number (
kl.prs_kenmerklink_waarde) =
ud.fac_usrdata_key) pcnt -- Contract (persoon)
ON p.prs_perslid_key = pcnt.prs_link_key
LEFT JOIN (SELECT prs_link_key,
TRIM (prs_kenmerklink_waarde) bedrijf
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1000) pb -- Bedrijf (persoon)
ON p.prs_perslid_key = pb.prs_link_key
LEFT JOIN ( SELECT UPPER (TRIM (kl.prs_kenmerklink_waarde)) bedrijf,
MIN (kl.prs_link_key) prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_v_aanwezigperslid p
WHERE kl.prs_kenmerk_key = 1000 -- Bedrijf
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 -- Main Contact
GROUP BY UPPER (TRIM (kl.prs_kenmerklink_waarde))) bcp1 -- CP1 (bedrijf)
ON UPPER (pb.bedrijf) = bcp1.bedrijf
LEFT JOIN ( SELECT UPPER (TRIM (kl.prs_kenmerklink_waarde)) bedrijf,
MIN (kl.prs_link_key) prs_link_key
FROM prs_v_aanwezigkenmerklink kl,
prs_v_aanwezigperslid p
WHERE kl.prs_kenmerk_key = 1000 -- Bedrijf
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))) bcp2 -- CP2 (bedrijf)
ON UPPER (pb.bedrijf) = bcp2.bedrijf
LEFT JOIN ( SELECT UPPER (TRIM (kl1.prs_kenmerklink_waarde)) bedrijf,
COUNT ( * ) aantal,
MIN (ud.fac_usrdata_omschr) min_contract,
MAX (ud.fac_usrdata_omschr) max_contract,
SUM (ud.fac_usrdata_prijs) tot_prijs
FROM prs_v_aanwezigkenmerklink kl1,
prs_v_aanwezigperslid p,
prs_v_aanwezigkenmerklink kl2,
fac_usrdata ud
WHERE kl1.prs_kenmerk_key = 1000 -- Bedrijf
AND kl1.prs_link_key = p.prs_perslid_key
AND p.prs_afdeling_key IN (21, 22) -- Leden/Niet leden
AND kl1.prs_link_key = kl2.prs_link_key
AND kl2.prs_kenmerk_key = 1021 -- Contractsoort
AND fac.safe_to_number (
kl2.prs_kenmerklink_waarde) =
ud.fac_usrdata_key
GROUP BY UPPER (TRIM (kl1.prs_kenmerklink_waarde))) bcnt -- Contract (bedrijf)
ON UPPER (pb.bedrijf) = bcnt.bedrijf
WHERE p.prs_afdeling_key IN (21, 22);
/* Formatted on 12-3-2014 13:00:00 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW wibc_v_rap_res_actual
(
periode,
hide_f_debnr,
language,
fclt_f_bedrijf,
per_adres,
fclt_f_aanvrager,
adres,
postcode,
plaats,
land,
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 (x.bcp_key), -6) debnr,
x.bcp_lang,
COALESCE (x.bedrijf, SUBSTR ('000000' || TO_CHAR (x.bcp_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.bcp_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,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cla.prs_kenmerklink_waarde),
TRIM (fla.prs_kenmerklink_waarde))
land,
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 rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
rrr.res_activiteit_key,
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_omschrijving,
rrr.res_rsv_ruimte_opmerking,
rrr.res_rsv_ruimte_contact_key,
v.bedrijf,
v.bcp_key,
v.bcp_lang
FROM res_v_aanwezigrsv_ruimte rrr, wibc_v_cp v
WHERE rrr.res_rsv_ruimte_ordernr IS NULL
AND rrr.res_status_fo_key IN (1, 2)
AND COALESCE (rrr.res_status_bo_key, 2) != 6 -- Nog niet AV
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_tot < SYSDATE + (1 / 24) -- Nu + uur!
AND rrr.res_rsv_ruimte_contact_key = v.cp_key) x
LEFT JOIN prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.bcp_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.bcp_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040
LEFT JOIN prs_v_aanwezigkenmerklink cad -- 1001 = C-Adres
ON x.bcp_key = cad.prs_link_key AND cad.prs_kenmerk_key = 1001
LEFT JOIN prs_v_aanwezigkenmerklink cpc -- 1002 = C-Postcode
ON x.bcp_key = cpc.prs_link_key AND cpc.prs_kenmerk_key = 1002
LEFT JOIN prs_v_aanwezigkenmerklink cpl -- 1003 = C-Plaats
ON x.bcp_key = cpl.prs_link_key AND cpl.prs_kenmerk_key = 1003
LEFT JOIN prs_v_aanwezigkenmerklink cla -- 1080 = C-Land
ON x.bcp_key = cla.prs_link_key AND cla.prs_kenmerk_key = 1080
LEFT JOIN prs_v_aanwezigkenmerklink fad -- F-Adres
ON x.bcp_key = fad.prs_link_key AND fad.prs_kenmerk_key = 1006
LEFT JOIN prs_v_aanwezigkenmerklink fpc -- F-Postcode
ON x.bcp_key = fpc.prs_link_key AND fpc.prs_kenmerk_key = 1007
LEFT JOIN prs_v_aanwezigkenmerklink fpl -- F-Plaats
ON x.bcp_key = fpl.prs_link_key AND fpl.prs_kenmerk_key = 1008
LEFT JOIN prs_v_aanwezigkenmerklink fla -- F-Land
ON x.bcp_key = fla.prs_link_key AND fla.prs_kenmerk_key = 1081
LEFT JOIN prs_v_aanwezigkenmerklink btwnr -- BTW-nr
ON x.bcp_key = btwnr.prs_link_key AND btwnr.prs_kenmerk_key = 1005
LEFT JOIN (SELECT rrr.res_rsv_ruimte_key,
--rr.res_ruimte_nr,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) 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,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) res_ruimte_nr,
'2V' res_type,
rd.res_ins_deel_key vnr,
LTRIM (lcl.x ('ins_deel_omschrijving', ID.ins_deel_key, ID.ins_deel_omschrijving))
|| DECODE (rd.res_deel_eenheid,
NULL, '',
' (' || lcl.x ('res_deel_eenheid', rd.res_deel_key, 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,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) res_ruimte_nr,
'3C' res_type,
ra.res_artikel_volgnummer vnr,
LTRIM (lcl.x ('res_artikel_omschrijving', ra.res_artikel_key, ra.res_artikel_omschrijving))
|| DECODE (ra.res_artikel_eenheid,
NULL, '',
' (' || lcl.x ('res_artikel_eenheid', ra.res_artikel_key, 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 (x.bcp_key), -6) debnr,
x.bcp_lang,
COALESCE (x.bedrijf, SUBSTR ('000000' || TO_CHAR (x.bcp_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.bcp_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,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cla.prs_kenmerklink_waarde),
TRIM (fla.prs_kenmerklink_waarde))
land,
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 (TRUNC (SYSDATE, 'mm') - 1, 'mm'),
'yyyy-mm-dd hh24:mi')
|| TO_CHAR (SYSDATE, 'yyyy-mm')
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,
x.pcnt_soort || TO_CHAR (SYSDATE, ' yyyy-mm') ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (x.pcnt_prijs, 2) netto,
21 btwtarief,
ROUND (x.pcnt_prijs * 21 / 100, 2) btw,
NULL oms,
NULL opm
FROM -- Lidmaatschap maandelijks vooruit (VANAF 2013)!
(SELECT v.bedrijf,
v.bcp_key,
v.bcp_lang,
SUBSTR (v.pcnt_soort, 1, INSTR (v.pcnt_soort, ' ', 1) - 1)
pcnt_soort,
v.pcnt_prijs
FROM wibc_v_cp v
WHERE v.pcnt_soort IS NOT NULL) x
LEFT JOIN prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.bcp_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.bcp_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040
LEFT JOIN prs_v_aanwezigkenmerklink cad -- 1001 = C-Adres
ON x.bcp_key = cad.prs_link_key AND cad.prs_kenmerk_key = 1001
LEFT JOIN prs_v_aanwezigkenmerklink cpc -- 1002 = C-Postcode
ON x.bcp_key = cpc.prs_link_key AND cpc.prs_kenmerk_key = 1002
LEFT JOIN prs_v_aanwezigkenmerklink cpl -- 1003 = C-Plaats
ON x.bcp_key = cpl.prs_link_key AND cpl.prs_kenmerk_key = 1003
LEFT JOIN prs_v_aanwezigkenmerklink cla -- 1080 = C-Land
ON x.bcp_key = cla.prs_link_key AND cla.prs_kenmerk_key = 1080
LEFT JOIN prs_v_aanwezigkenmerklink fad -- F-Adres
ON x.bcp_key = fad.prs_link_key AND fad.prs_kenmerk_key = 1006
LEFT JOIN prs_v_aanwezigkenmerklink fpc -- F-Postcode
ON x.bcp_key = fpc.prs_link_key AND fpc.prs_kenmerk_key = 1007
LEFT JOIN prs_v_aanwezigkenmerklink fpl -- F-Plaats
ON x.bcp_key = fpl.prs_link_key AND fpl.prs_kenmerk_key = 1008
LEFT JOIN prs_v_aanwezigkenmerklink fla -- F-Land
ON x.bcp_key = fla.prs_link_key AND fla.prs_kenmerk_key = 1081
LEFT JOIN prs_v_aanwezigkenmerklink btwnr -- BTW-nr
ON x.bcp_key = btwnr.prs_link_key AND btwnr.prs_kenmerk_key = 1005
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)) = x.bcp_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 (x.bcp_key), -6) debnr,
NULL bcp_lang,
COALESCE (x.bedrijf, SUBSTR ('000000' || TO_CHAR (x.bcp_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.bcp_key))
tav,
NULL adres,
NULL postcode,
NULL plaats,
NULL land,
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%' 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 v.bedrijf,
v.bcp_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,
wibc_v_cp v,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 1023) huurder
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 < SYSDATE + (1 / 24) -- Nu + uur!
AND rrr.res_rsv_ruimte_contact_key = v.cp_key
AND v.bcp_key = huurder.prs_link_key(+)
AND (v.bcnt_soort IS NOT NULL
OR huurder.prs_kenmerklink_waarde = 1)) x
LEFT JOIN prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.bcp_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.bcp_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040;
/* Formatted on 12-1-2015 12:45:15 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW wibc_v_rap_res_frozen
(
hide_f_debnr,
language,
fclt_f_bedrijf,
per_adres,
fclt_f_aanvrager,
adres,
postcode,
plaats,
land,
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,
v.bcp_lang,
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,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cla.prs_kenmerklink_waarde),
TRIM (fla.prs_kenmerklink_waarde))
land,
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 wibc_v_cp v
ON x.prs_perslid_key = v.cp_key
LEFT JOIN prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.prs_perslid_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.prs_perslid_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040
LEFT JOIN prs_v_aanwezigkenmerklink bedr -- 1000 = Bedrijf
ON x.prs_perslid_key = bedr.prs_link_key AND bedr.prs_kenmerk_key = 1000
LEFT JOIN prs_v_aanwezigkenmerklink cad -- C-Adres
ON x.prs_perslid_key = cad.prs_link_key AND cad.prs_kenmerk_key = 1001
LEFT JOIN prs_v_aanwezigkenmerklink cpc -- C-Postcode
ON x.prs_perslid_key = cpc.prs_link_key AND cpc.prs_kenmerk_key = 1002
LEFT JOIN prs_v_aanwezigkenmerklink cpl -- C-Plaats
ON x.prs_perslid_key = cpl.prs_link_key AND cpl.prs_kenmerk_key = 1003
LEFT JOIN prs_v_aanwezigkenmerklink cla -- C-Land
ON x.prs_perslid_key = cla.prs_link_key AND cla.prs_kenmerk_key = 1080
LEFT JOIN prs_v_aanwezigkenmerklink fad -- F-Adres
ON x.prs_perslid_key = fad.prs_link_key AND fad.prs_kenmerk_key = 1006
LEFT JOIN prs_v_aanwezigkenmerklink fpc -- F-Postcode
ON x.prs_perslid_key = fpc.prs_link_key AND fpc.prs_kenmerk_key = 1007
LEFT JOIN prs_v_aanwezigkenmerklink fpl -- F-Plaats
ON x.prs_perslid_key = fpl.prs_link_key AND fpl.prs_kenmerk_key = 1008
LEFT JOIN prs_v_aanwezigkenmerklink fla -- F-Land
ON x.prs_perslid_key = fla.prs_link_key AND fla.prs_kenmerk_key = 1081
LEFT JOIN prs_v_aanwezigkenmerklink btwnr -- BTW-nr
ON x.prs_perslid_key = btwnr.prs_link_key AND btwnr.prs_kenmerk_key = 1005
LEFT JOIN (SELECT rrr.res_rsv_ruimte_key,
--rr.res_ruimte_nr,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) 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,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) res_ruimte_nr,
'2V' res_type,
rd.res_ins_deel_key vnr,
LTRIM (lcl.x ('ins_deel_omschrijving', ID.ins_deel_key, ID.ins_deel_omschrijving))
|| DECODE (rd.res_deel_eenheid,
NULL, '',
' (' || lcl.x ('res_deel_eenheid', rd.res_deel_key, 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,
lcl.x ('res_ruimte_nr', rr.res_ruimte_key, rr.res_ruimte_nr) res_ruimte_nr,
'3C' res_type,
ra.res_artikel_volgnummer vnr,
LTRIM (lcl.x ('res_artikel_omschrijving', ra.res_artikel_key, ra.res_artikel_omschrijving))
|| DECODE (ra.res_artikel_eenheid,
NULL, '',
' (' || lcl.x ('res_artikel_eenheid', ra.res_artikel_key, 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,
v.bcp_lang,
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,
DECODE (fad.prs_kenmerklink_waarde,
NULL, TRIM (cla.prs_kenmerklink_waarde),
TRIM (fla.prs_kenmerklink_waarde))
land,
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,
COALESCE (
SUBSTR (l.pcnt_soort, 1, INSTR (l.pcnt_soort, ' ', 1) - 1),
'')
|| x.lidmaatschap
ruimte_voorzieningen,
NULL aantal,
NULL stuksprijs,
ROUND (COALESCE (l.pcnt_prijs, x.lidmaatschap_prijs), 2) netto,
21 btwtarief,
ROUND (COALESCE (l.pcnt_prijs, x.lidmaatschap_prijs) * 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,
COALESCE (fac_usrdata_prijs, 250) lidmaatschap_prijs
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,
COALESCE (fac_usrdata_prijs, 250) lidmaatschap_prijs
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 wibc_v_cp l -- Separate L-regels zolang de prijs klopt!
ON x.prs_perslid_key = l.bcp_key
AND x.lidmaatschap_prijs = l.bcnt_prijs
AND l.pcnt_soort IS NOT NULL
LEFT JOIN wibc_v_cp v -- Voor de language
ON x.prs_perslid_key = v.cp_key
LEFT JOIN prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.prs_perslid_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.prs_perslid_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040
LEFT JOIN prs_v_aanwezigkenmerklink bedr -- 1000 = Bedrijf
ON x.prs_perslid_key = bedr.prs_link_key AND bedr.prs_kenmerk_key = 1000
LEFT JOIN prs_v_aanwezigkenmerklink cad -- C-Adres
ON x.prs_perslid_key = cad.prs_link_key AND cad.prs_kenmerk_key = 1001
LEFT JOIN prs_v_aanwezigkenmerklink cpc -- C-Postcode
ON x.prs_perslid_key = cpc.prs_link_key AND cpc.prs_kenmerk_key = 1002
LEFT JOIN prs_v_aanwezigkenmerklink cpl -- C-Plaats
ON x.prs_perslid_key = cpl.prs_link_key AND cpl.prs_kenmerk_key = 1003
LEFT JOIN prs_v_aanwezigkenmerklink cla -- C-Land
ON x.prs_perslid_key = cla.prs_link_key AND cla.prs_kenmerk_key = 1080
LEFT JOIN prs_v_aanwezigkenmerklink fad -- F-Adres
ON x.prs_perslid_key = fad.prs_link_key AND fad.prs_kenmerk_key = 1006
LEFT JOIN prs_v_aanwezigkenmerklink fpc -- F-Postcode
ON x.prs_perslid_key = fpc.prs_link_key AND fpc.prs_kenmerk_key = 1007
LEFT JOIN prs_v_aanwezigkenmerklink fpl -- F-Plaats
ON x.prs_perslid_key = fpl.prs_link_key AND fpl.prs_kenmerk_key = 1008
LEFT JOIN prs_v_aanwezigkenmerklink fla -- F-Land
ON x.prs_perslid_key = fla.prs_link_key AND fla.prs_kenmerk_key = 1081
LEFT JOIN prs_v_aanwezigkenmerklink btwnr -- BTW-nr
ON x.prs_perslid_key = btwnr.prs_link_key AND btwnr.prs_kenmerk_key = 1005
UNION ALL -- Additionele kortingregels voor huurders/leden!
SELECT SUBSTR ('000000' || TO_CHAR (x.prs_perslid_key), -6) debnr,
NULL bcp_lang,
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 land,
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%' 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 prs_v_aanwezigkenmerklink pa -- 1060 = Factuur p.a.
ON x.prs_perslid_key = pa.prs_link_key AND pa.prs_kenmerk_key = 1060
LEFT JOIN prs_v_aanwezigkenmerklink tav -- 1040 = Factuur t.a.v.
ON x.prs_perslid_key = tav.prs_link_key AND tav.prs_kenmerk_key = 1040
LEFT JOIN prs_v_aanwezigkenmerklink bedr -- 1000 = Bedrijf
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 13-4-2015 15:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW wibc_v_noti_receptie
(
code,
sender,
receiver,
text,
KEY,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL sender,
NULL, --x.receiver,
sn.fac_srtnotificatie_oms,
p.prs_perslid_key,
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,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##KEY##',
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr),
'##DESC##',
rr.res_rsv_ruimte_omschrijving),
rr.res_reservering_key,
rr.res_rsv_ruimte_key,
'businesscenter@wtcthehague.com',
NULL
FROM fac_tracking t, res_rsv_ruimte rr, 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 t.fac_tracking_refkey = rr.res_rsv_ruimte_key
AND sn.fac_srtnotificatie_code = 'CUST02';
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('WIBC', 4); END;
/
COMMIT;
spool off