NYBU#65991: Export vermaat eenmalig voor 5 weken

svn path=/Customer/trunk/; revision=50542
This commit is contained in:
Suzan Wiegerinck
2021-03-29 13:26:08 +00:00
parent 4198e82640
commit 249dd33b0f

View File

@@ -11617,6 +11617,371 @@ EXCEPTION
END nybu_select_res_cat;
/
CREATE OR REPLACE PROCEDURE nybu_select_res_cat_5w (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
CURSOR c (c_tot DATE)
IS
SELECT klant,
res_rsv_ruimte_van,
periode,
grootboek,
kostenplaats_key,
kostenplaats,
deb_nr,
proj_key,
proj,
btw,
prs_kostensoort_btw,
res_key,
res_volgnr,
referentie,
res_rsv_ruimte_key,
descr,
aantal,
omschrijving,
soort,
btw_code,
SUM (prijs_ex) prijs_ex,
SUM (prijs_inc) prijs_inc,
SUM (btw_laag) btw_laag,
SUM (btw_hoog) btw_hoog,
SUM (korting) korting,
SUM (inex) inex
FROM (SELECT k.prs_kostenplaats_omschrijving klant,
rr.res_rsv_ruimte_van,
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYYMM') periode,
ks.prs_kostensoort_oms grootboek,
kg.prs_kostenplaatsgrp_key kostenplaats_key,
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7))
kostenplaats,
k.prs_kostenplaats_nr deb_nr,
k.prs_kostenplaats_key proj_key,
k.prs_kostenplaats_nr proj,
CASE
WHEN btw.perc > 9
THEN
btw.perc
WHEN (btw.perc = 6 OR btw.perc = 9)
THEN
CASE
WHEN rra.res_rsv_artikel_levering <
TO_DATE ('1-1-2019', 'dd-mm-yyyy')
THEN
6
ELSE
9
END
ELSE
0
END
btw,
ks.prs_kostensoort_btw,
CASE
WHEN btw.perc > 9
THEN
btw.btw_code
WHEN (btw.perc = 6 OR btw.perc = 9)
THEN
CASE
WHEN rra.res_rsv_artikel_levering <
TO_DATE ('1-1-2019', 'dd-mm-yyyy')
THEN
'VL'
ELSE
btw.btw_code
END
ELSE
btw.btw_code
END
btw_code,
rr.res_reservering_key res_key,
rr.res_rsv_ruimte_volgnr res_volgnr,
NULL referentie,
rr.res_reservering_key
|| '/'
|| rr.res_rsv_ruimte_volgnr
reservering,
rr.res_rsv_ruimte_key,
rr.res_rsv_ruimte_omschrijving descr,
1 aantal,
NVL (
(SELECT r.res_ruimte_nr
FROM res_ruimte_opstelling ro, res_ruimte r
WHERE ro.res_ruimte_opstel_key =
rr.res_ruimte_opstel_key
AND r.res_ruimte_key = ro.res_ruimte_key), ---- NVL ipv coalesce aangepast nav Oracle bug #55835
(SELECT 'Kamer '
|| alg_ruimte_nr
|| ' ('
|| alg_ruimte_omschrijving
|| ')'
FROM alg_v_ruimte_gegevens rg
WHERE rg.alg_ruimte_key = rr.alg_ruimte_key))
omschrijving,
'catering' soort,
(rra.res_rsv_artikel_prijs
/ ( (CASE
WHEN btw.perc > 9
THEN
btw.perc
WHEN (btw.perc = 6 OR btw.perc = 9)
THEN
CASE
WHEN rra.res_rsv_artikel_levering <
TO_DATE ('1-1-2019',
'dd-mm-yyyy')
THEN
6
ELSE
9
END
ELSE
0
END)
+ 100))
* 100
prijs_ex,
rra.res_rsv_artikel_prijs prijs_inc,
DECODE (
btw.perc,
9,
rra.res_rsv_artikel_prijs
* (CASE
WHEN rra.res_rsv_artikel_levering <
TO_DATE ('1-1-2019', 'dd-mm-yyyy')
THEN
6
ELSE
9
END)
/ (100
+ (CASE
WHEN rra.res_rsv_artikel_levering <
TO_DATE ('1-1-2019', 'dd-mm-yyyy')
THEN
6
ELSE
9
END)),
0)
btw_laag,
DECODE (
btw.perc,
21,
rra.res_rsv_artikel_prijs
* btw.perc
/ (100 + btw.perc),
0)
btw_hoog,
0 korting,
0 inex
FROM res_rsv_ruimte rr,
prs_kostenplaats k,
prs_kostenplaatsgrp kg,
res_rsv_artikel rra,
res_artikel ra,
res_discipline di,
prs_kostensoort ks,
(SELECT fac.safe_to_number (fac_usrdata_upper) perc,
fac_usrdata_omschr btw_code
FROM fac_usrdata
WHERE fac_usrtab_key = 42
AND fac_usrdata_verwijder IS NULL) btw
WHERE COALESCE (k.prs_kostenplaats_extern, 0) = 0
AND kg.prs_kostenplaatsgrp_key =
k.prs_kostenplaatsgrp_key
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key
AND rr.res_rsv_ruimte_dirtlevel = 0
AND rr.res_rsv_ruimte_afgerond = 1
AND rr.res_rsv_ruimte_verwijder IS NULL
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = di.ins_discipline_key
AND ks.prs_kostensoort_key = di.prs_kostensoort_key
AND di.ins_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen
AND ra.res_artikel_btw = btw.perc
AND rra.res_rsv_artikel_prijs <> 0
AND rra.res_rsv_artikel_levering < c_tot
AND NOT EXISTS -- flag reservering bevat catering op externe kostenplaats is niet gezet.
(SELECT res_kenmerkwaarde_key
FROM res_kenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 321 -- Reservering bevat catering op externe kostenpaats.
AND kw.res_rsv_ruimte_key =
rr.res_rsv_ruimte_key
AND fac.safe_to_number (
kw.res_kenmerkreservering_waarde) =
1)
AND NOT EXISTS -- entry komt nog niet voor in de verkoopfactuurtabel
(SELECT fin_verkoopfactuur_key
FROM fin_verkoopfactuur vf
WHERE vf.fin_verkoopfactuur_xmlnode =
'reservering'
AND vf.fin_verkoopfactuur_refkey =
rr.res_rsv_ruimte_key
AND COALESCE (vf.fin_verkoopfactuur_c4,
'NOP') = 'catering'))
GROUP BY klant,
res_rsv_ruimte_van,
periode,
grootboek,
kostenplaats_key,
kostenplaats,
deb_nr,
proj_key,
proj,
btw,
prs_kostensoort_btw,
res_key,
res_volgnr,
referentie,
res_rsv_ruimte_key,
descr,
aantal,
omschrijving,
soort,
btw_code
ORDER BY res_rsv_ruimte_key, btw_code;
v_teller NUMBER;
v_rap_count NUMBER;
v_kenmerk_key_laatste NUMBER;
v_ruimte_key_prev NUMBER;
v_verkoopfactuurkop_key NUMBER;
v_tot DATE;
v_van DATE;
BEGIN
v_teller := 0;
v_rap_count := 0;
v_aanduiding := 'Init';
v_errormsg := 'Periode bepalen';
SELECT TRUNC (MAX (fin_verkoopfactuur_d2))
INTO v_van
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum IS NOT NULL
AND fin_verkoopfactuur_c4 = 'catering';
-- We rekenen hier met periodes van 5 weken.
v_tot := v_van + 35;
DELETE imp_log
WHERE imp_log_applicatie = p_applname;
-- verwijder regels die nog niet verwerkt zijn
DELETE fin_verkoopfactuurkop
WHERE fin_verkoopfactuurkop_key IN
(SELECT fin_verkoopfactuurkop_key
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum IS NULL
AND fin_verkoopfactuur_c4 = 'catering');
DELETE fin_verkoopfactuur
WHERE fin_verkoopfactuur_datum IS NULL
AND fin_verkoopfactuur_c4 = 'catering';
v_ruimte_key_prev := -1;
FOR rec IN c (v_tot)
LOOP
IF rec.res_rsv_ruimte_key <> v_ruimte_key_prev
THEN
v_ruimte_key_prev := rec.res_rsv_ruimte_key;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES (rec.res_key || '/' || rec.res_volgnr || '-c')
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
END IF;
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaatsgrp_oms,
prs_kostensoort_oms,
prs_debiteur_naam,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_btwtabelwaarde_perc,
fin_verkoopfactuur_maand,
fin_verkoopfactuur_n1,
fin_verkoopfactuur_n2,
fin_verkoopfactuur_c1,
fin_verkoopfactuur_c2,
fin_verkoopfactuur_c3,
fin_verkoopfactuur_c4,
fin_verkoopfactuur_d1,
fin_verkoopfactuur_d2)
VALUES (v_verkoopfactuurkop_key,
TO_CHAR (SYSDATE, 'YYYY-MM-DD'),
NULL,
rec.omschrijving,
'reservering',
rec.res_rsv_ruimte_key,
rec.proj,
rec.proj,
rec.kostenplaats,
rec.grootboek,
rec.deb_nr,
rec.prijs_ex,
rec.btw_hoog + rec.btw_laag,
rec.btw_code,
rec.btw_code,
rec.btw,
rec.periode,
rec.inex,
0, -- debet
rec.res_key || '/' || rec.res_volgnr,
rec.klant,
rec.referentie,
'catering',
rec.res_rsv_ruimte_van,
v_tot);
END LOOP;
fac.writelog (p_applname,
'S',
'Factuurregels gegenereerd',
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'E',
v_aanduiding || v_errormsg,
'Onbekende fout!');
COMMIT;
END nybu_select_res_cat_5w;
/
CREATE OR REPLACE VIEW nybu_v_exp_res_cat
(
reservering,