KMMO#69267 -- Implementatie Evenementen en Rondleidingen (Facturatie)
svn path=/Customer/trunk/; revision=55706
This commit is contained in:
376
KMMO/kmmo.sql
376
KMMO/kmmo.sql
@@ -23,6 +23,94 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PACKAGE KMMO AS
|
||||
-- PACKAGES voor de KMMO specifieke rapportages
|
||||
TYPE t_cursor IS REF CURSOR;
|
||||
PROCEDURE rap_bezetting_rondleider (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY KMMO AS
|
||||
-- PACKAGES voor de KMMO specifieke rapportages
|
||||
PROCEDURE rap_bezetting_rondleider (user_key IN NUMBER,
|
||||
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
|
||||
p_datum_tot IN VARCHAR2,
|
||||
p_cursor OUT t_cursor
|
||||
)
|
||||
AS
|
||||
v_datum_van DATE;
|
||||
BEGIN
|
||||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||||
|
||||
OPEN p_cursor FOR
|
||||
SELECT p.prs_perslid_naam naam,
|
||||
prs_perslid_voornaam voornaam,
|
||||
prs_srtperslid_omschrijving rondleider_taal,
|
||||
(SELECT LISTAGG (
|
||||
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi')
|
||||
|| '-'
|
||||
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi')
|
||||
|| ' '
|
||||
|| ud.fac_usrdata_code,
|
||||
CHR (10))
|
||||
WITHIN GROUP (ORDER BY rrr.res_rsv_ruimte_van) AS beschikbaarheid
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
res_rsv_ruimte rrr,
|
||||
res_kenmerkwaarde kw,
|
||||
fac_usrdata ud
|
||||
WHERE o.mld_uitvoerende_keys = p.prs_perslid_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_statusopdr_key NOT IN (1,2) -- Afgewezen/Niet akkoord
|
||||
AND m.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND TRUNC (rrr.res_rsv_ruimte_van) = v_datum_van
|
||||
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND kw.res_kenmerk_key = 1 -- taal rondleiding
|
||||
AND fac.safe_to_number (kw.res_kenmerkreservering_waarde) =
|
||||
ud.fac_usrdata_key) bezetting,
|
||||
(SELECT COUNT(*)
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
res_rsv_ruimte rrr
|
||||
WHERE o.mld_uitvoerende_keys = p.prs_perslid_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_statusopdr_key NOT IN (1,2) -- Afgewezen/Niet akkoord
|
||||
AND m.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND ABS(TRUNC (rrr.res_rsv_ruimte_van) - v_datum_van) < 4) bezetting_week
|
||||
FROM prs_perslid p, prs_srtperslid sp
|
||||
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||||
AND prs_srtperslid_omschrijving LIKE 'Rondleider %'
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_kenmerklink kl
|
||||
WHERE kl.prs_kenmerk_key =
|
||||
DECODE (TO_CHAR (v_datum_van, 'D'),
|
||||
1, 1006,
|
||||
2, 1000,
|
||||
3, 1001,
|
||||
4, 1002,
|
||||
5, 1003,
|
||||
6, 1004,
|
||||
7, 1005)
|
||||
AND kl.prs_link_key = p.prs_perslid_key)
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM mld_melding m
|
||||
WHERE m.prs_perslid_key = p.prs_perslid_key
|
||||
AND TO_DATE (
|
||||
FLX.getflex ('MLD', 421, m.mld_melding_key),
|
||||
'dd-mm-yyyy') <=
|
||||
v_datum_van
|
||||
AND TO_DATE (
|
||||
FLX.getflex ('MLD', 423, m.mld_melding_key),
|
||||
'dd-mm-yyyy') >=
|
||||
v_datum_van)
|
||||
ORDER BY sp.prs_srtperslid_omschrijving;
|
||||
|
||||
END rap_bezetting_rondleider;
|
||||
END;
|
||||
/
|
||||
|
||||
-- Dagelijkse taak
|
||||
CREATE OR REPLACE PROCEDURE kmmo_daily
|
||||
AS
|
||||
@@ -892,6 +980,294 @@ EXCEPTION
|
||||
END;
|
||||
/
|
||||
|
||||
--
|
||||
-- Rondleidingen
|
||||
--
|
||||
CREATE OR REPLACE VIEW kmmo_v_rap_rondl_planning
|
||||
AS
|
||||
SELECT rrr.res_rsv_ruimte_key,
|
||||
'R' || rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr
|
||||
reservering,
|
||||
FAC.gettrackingdate ('RESNEW', rrr.res_rsv_ruimte_key)
|
||||
res_aanmaak,
|
||||
res_rsv_ruimte_van,
|
||||
(SELECT fac_usrdata_code
|
||||
FROM fac_usrdata ud, res_kenmerkwaarde kw
|
||||
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND kw.res_kenmerk_key = 1 -- taal rondleiding
|
||||
AND fac.safe_to_number (kw.res_kenmerkreservering_waarde) =
|
||||
ud.fac_usrdata_key)
|
||||
taal,
|
||||
DECODE (res_status_fo_key,
|
||||
1, 'Aanvraag',
|
||||
2, 'Bevestigd',
|
||||
3, 'Geblokkeerd',
|
||||
4, 'Vervallen')
|
||||
res_status,
|
||||
'Ron' || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht,
|
||||
p.prs_perslid_naam_full,
|
||||
so.mld_statusopdr_omschrijving
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
res_rsv_ruimte rrr,
|
||||
prs_v_perslid_fullnames p,
|
||||
mld_statusopdr so
|
||||
WHERE o.mld_uitvoerende_keys = p.prs_perslid_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND m.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND o.mld_statusopdr_key = so.mld_statusopdr_key;
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW kmmo_v_rondleidingen_kijk
|
||||
AS
|
||||
SELECT res_rsv_ruimte_van,
|
||||
res_rsv_ruimte_tot,
|
||||
res_reservering_key || '/' || res_rsv_ruimte_volgnr res_rsv_ruimte_nr,
|
||||
rrr.res_rsv_ruimte_omschrijving,
|
||||
rrr.res_rsv_ruimte_opmerking,
|
||||
pf.prs_perslid_naam_full,
|
||||
COALESCE(so.mld_statusopdr_omschrijving, 'Geaccepteerd') mld_statusopdr_omschrijving,
|
||||
LISTAGG (rd.res_deel_omschrijving, CHR (10))
|
||||
WITHIN GROUP (ORDER BY rd.res_deel_omschrijving) AS voorzieningen,
|
||||
ra.res_activiteit_omschrijving,
|
||||
FLX.getflex ('RES', 82, rrr.res_rsv_ruimte_key) naam
|
||||
FROM res_rsv_ruimte rrr,
|
||||
res_activiteit ra,
|
||||
mld_melding m,
|
||||
mld_opdr o,
|
||||
res_rsv_deel rrd,
|
||||
res_deel rd,
|
||||
mld_statusopdr so,
|
||||
prs_v_perslid_fullnames pf,
|
||||
(SELECT COALESCE (r.res_rsv_ruimte_key, a.res_rsv_ruimte_key) res_rsv_ruimte_key
|
||||
FROM (SELECT res_rsv_ruimte_key
|
||||
FROM res_rsv_ruimte rrr
|
||||
WHERE res_activiteit_key = 30) r
|
||||
FULL JOIN
|
||||
(SELECT res_rsv_ruimte_key
|
||||
FROM res_rsv_ruimte rrr
|
||||
WHERE EXISTS
|
||||
(SELECT 1
|
||||
FROM res_rsv_deel rrd, res_deel rd
|
||||
WHERE rrr.res_rsv_ruimte_key =
|
||||
rrd.res_rsv_ruimte_key
|
||||
AND rrd.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_discipline_key = 601 -- audiotours en fluistersets
|
||||
)) a
|
||||
ON r.res_rsv_ruimte_key = a.res_rsv_ruimte_key) my_rrr
|
||||
WHERE my_rrr.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND rrr.res_rsv_ruimte_key = m.res_rsv_ruimte_key(+)
|
||||
AND m.mld_melding_key = o.mld_melding_key(+)
|
||||
AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key(+)
|
||||
AND rrr.res_activiteit_key = ra.res_activiteit_key(+)
|
||||
AND rrd.res_deel_key = rd.res_deel_key(+)
|
||||
AND o.mld_uitvoerende_keys = pf.prs_perslid_key(+)
|
||||
AND o.mld_statusopdr_key = so.mld_statusopdr_key(+)
|
||||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND rrd.res_rsv_deel_verwijder IS NULL
|
||||
GROUP BY rrr.res_rsv_ruimte_van,
|
||||
rrr.res_rsv_ruimte_tot,
|
||||
rrr.res_rsv_ruimte_key,
|
||||
rrr.res_reservering_key,
|
||||
rrr.res_rsv_ruimte_volgnr,
|
||||
pf.prs_perslid_naam_full,
|
||||
so.mld_statusopdr_omschrijving,
|
||||
rrr.res_rsv_ruimte_omschrijving,
|
||||
rrr.res_rsv_ruimte_opmerking,
|
||||
ra.res_activiteit_omschrijving;
|
||||
|
||||
-- view om te zien welke reservering facturabel is. Dat betekent dat <20><>n van de rsv_ruimtes het kenmerk facturabel op 1 heeft staan.
|
||||
CREATE OR REPLACE VIEW kmmo_v_res_facturabel
|
||||
AS
|
||||
SELECT rrr.res_reservering_key
|
||||
FROM res_rsv_ruimte rrr, res_kenmerk rk
|
||||
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
||||
AND rk.res_srtkenmerk_key = 101
|
||||
AND rrr.res_activiteit_key = rk.res_activiteit_key
|
||||
AND COALESCE (
|
||||
flx.getflex ('RES',
|
||||
rk.res_kenmerk_key,
|
||||
rrr.res_rsv_ruimte_key),
|
||||
'0') =
|
||||
'1'
|
||||
GROUP BY rrr.res_reservering_key;
|
||||
|
||||
-- View om te rapporteren welke factuur bevroren mag worden via de export.
|
||||
CREATE OR REPLACE VIEW kmmo_v_rap_res_factuurstatus
|
||||
AS
|
||||
SELECT r.res_reservering_key,
|
||||
r.res_rsv_ruimte_volgnr,
|
||||
r.res_reservering_key || '/' || r.res_rsv_ruimte_volgnr res_nr,
|
||||
r.type,
|
||||
r.res_rsv_ruimte_van,
|
||||
r.res_rsv_ruimte_omschrijving,
|
||||
bo.res_status_bo_omschrijving,
|
||||
bo.res_status_bo_key,
|
||||
r.res_rsv_ruimte_key,
|
||||
f.factuur_nummer,
|
||||
f.export_datum
|
||||
FROM (SELECT f.res_reservering_key,
|
||||
rrr.res_rsv_ruimte_volgnr,
|
||||
'R' type,
|
||||
res_rsv_ruimte_van,
|
||||
res_rsv_ruimte_omschrijving,
|
||||
res_status_bo_key,
|
||||
rrr.res_rsv_ruimte_key
|
||||
FROM kmmo_v_res_facturabel f, res_rsv_ruimte rrr
|
||||
WHERE res_rsv_ruimte_verwijder IS NULL
|
||||
AND f.res_reservering_key = rrr.res_reservering_key
|
||||
UNION ALL
|
||||
SELECT f.res_reservering_key,
|
||||
rrr.res_rsv_ruimte_volgnr,
|
||||
'D' type,
|
||||
res_rsv_ruimte_van,
|
||||
COUNT (*) || ' * ' || res_deel_omschrijving,
|
||||
MIN (rrd.res_status_bo_key),
|
||||
rrr.res_rsv_ruimte_key
|
||||
FROM kmmo_v_res_facturabel f,
|
||||
res_rsv_ruimte rrr,
|
||||
res_rsv_deel rrd,
|
||||
res_deel rd
|
||||
WHERE res_rsv_ruimte_verwijder IS NULL
|
||||
AND f.res_reservering_key = rrr.res_reservering_key
|
||||
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND rrd.res_rsv_deel_verwijder IS NULL
|
||||
AND rrd.res_deel_key = rd.res_deel_key
|
||||
GROUP BY f.res_reservering_key,
|
||||
rrr.res_rsv_ruimte_volgnr,
|
||||
res_rsv_ruimte_van,
|
||||
res_deel_omschrijving,
|
||||
rrr.res_rsv_ruimte_key
|
||||
UNION ALL
|
||||
SELECT f.res_reservering_key,
|
||||
rrr.res_rsv_ruimte_volgnr,
|
||||
'A' type,
|
||||
res_rsv_ruimte_van,
|
||||
res_rsv_artikel_aantal || ' * ' || res_artikel_omschrijving,
|
||||
rra.res_status_bo_key,
|
||||
rrr.res_rsv_ruimte_key
|
||||
FROM kmmo_v_res_facturabel f,
|
||||
res_rsv_ruimte rrr,
|
||||
res_rsv_artikel rra,
|
||||
res_artikel ra
|
||||
WHERE res_rsv_ruimte_verwijder IS NULL
|
||||
AND f.res_reservering_key = rrr.res_reservering_key
|
||||
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND rra.res_rsv_artikel_verwijder IS NULL
|
||||
AND rra.res_artikel_key = ra.res_artikel_key) r,
|
||||
res_status_bo bo,
|
||||
(SELECT res_reservering_key, MAX(res_kenmerkreservering_waarde) factuur_nummer, MAX(res_kenmerkwaarde_aanmaak) export_datum
|
||||
FROM res_kenmerkwaarde kw, res_kenmerk k, res_rsv_ruimte rrr
|
||||
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||||
AND k.res_srtkenmerk_key = 102 -- Factuur
|
||||
GROUP BY res_reservering_key) f
|
||||
WHERE r.res_status_bo_key = bo.res_status_bo_key
|
||||
AND r.res_reservering_key = f.res_reservering_key(+);
|
||||
|
||||
-- factuur export. Tijdens de export wordt het factuurnummer bepaald. Dit nummer zit in de reeks xx-yyy. Hierbij is xx het jaar
|
||||
-- waarop de factuur is aangemaakt en yyy is een volgnummer tussen de 700 en 899. In een nieuw jaar wordt weer bij 700 begonnen.
|
||||
|
||||
-- welke reservering is helemaal afgemeld (5). Er mogen dus geen items meer open staan.
|
||||
CREATE OR REPLACE VIEW kmmo_v_export_res_facturen
|
||||
(
|
||||
result,
|
||||
result_order
|
||||
)
|
||||
AS
|
||||
SELECT res_nr, res_reservering_key * 1000 + res_rsv_ruimte_volgnr
|
||||
FROM kmmo_v_rap_res_factuurstatus fs
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM kmmo_v_rap_res_factuurstatus fs2
|
||||
WHERE fs.res_reservering_key = fs2.res_reservering_key
|
||||
AND res_status_bo_key <> 5);
|
||||
|
||||
CREATE OR REPLACE PROCEDURE kmmo_export_res_facturen (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
p_filename IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c IS
|
||||
SELECT DISTINCT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr
|
||||
FROM kmmo_v_rap_res_factuurstatus fs
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM kmmo_v_rap_res_factuurstatus fs2
|
||||
WHERE fs.res_reservering_key =
|
||||
fs2.res_reservering_key
|
||||
AND res_status_bo_key <> 5) -- Afgemeld
|
||||
ORDER BY res_reservering_key, res_rsv_ruimte_volgnr;
|
||||
|
||||
v_factuurnr NUMBER;
|
||||
v_kenmerk_key NUMBER;
|
||||
v_reservering_key_prev NUMBER;
|
||||
BEGIN
|
||||
BEGIN
|
||||
SELECT MAX (
|
||||
fac.safe_to_number (
|
||||
SUBSTR (res_kenmerkreservering_waarde, 4, 100)))
|
||||
+ 1
|
||||
INTO v_factuurnr
|
||||
FROM res_kenmerk k, res_kenmerkwaarde kw
|
||||
WHERE res_srtkenmerk_key = 102 -- Factuurnummer
|
||||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||||
AND SUBSTR (res_kenmerkreservering_waarde, 1, 2) =
|
||||
TO_CHAR (SYSDATE, 'YY');
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_factuurnr := 700;
|
||||
END;
|
||||
|
||||
IF v_factuurnr IS NULL
|
||||
THEN
|
||||
v_factuurnr := 700;
|
||||
END IF;
|
||||
|
||||
v_reservering_key_prev := -1;
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
IF rec.res_reservering_key <> v_reservering_key_prev
|
||||
THEN
|
||||
SELECT res_kenmerk_key
|
||||
INTO v_kenmerk_key
|
||||
FROM res_kenmerk k, res_rsv_ruimte rrr
|
||||
WHERE k.res_srtkenmerk_key = 102 -- Factuurnummer
|
||||
AND rrr.res_activiteit_key = k.res_activiteit_key
|
||||
AND rrr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||||
|
||||
FLX.setflex ('RES',
|
||||
v_kenmerk_key,
|
||||
rec.res_rsv_ruimte_key,
|
||||
TO_CHAR (SYSDATE, 'YY') || '-' || v_factuurnr);
|
||||
|
||||
v_reservering_key_prev := rec.res_reservering_key;
|
||||
v_factuurnr := v_factuurnr + 1;
|
||||
END IF;
|
||||
|
||||
UPDATE res_rsv_artikel
|
||||
SET res_status_bo_key = 6 -- Verwerkt
|
||||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key
|
||||
AND res_rsv_artikel_verwijder IS NULL;
|
||||
|
||||
UPDATE res_rsv_deel
|
||||
SET res_status_bo_key = 6 -- Verwerkt
|
||||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key
|
||||
AND res_rsv_deel_verwijder IS NULL;
|
||||
|
||||
UPDATE res_rsv_ruimte
|
||||
SET res_status_bo_key = 6 -- Verwerkt
|
||||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key
|
||||
AND res_rsv_ruimte_verwijder IS NULL;
|
||||
END;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user