401 lines
16 KiB
SQL
401 lines
16 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- NYBU#63678: Vermaat | Facturatie
|
|
-- In verband met uitbraak Corona is er gedurende april en mei geen catering geleverd
|
|
-- Daarom moet eenmalig de factuurperiode 2 maanden overbruggen
|
|
--
|
|
DEFINE thisfile = 'nybu#63678.SQL'
|
|
DEFINE dbuser = '^NYBU'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
CREATE OR REPLACE PROCEDURE nybu_select_res_cat_56d (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 eenmalig met periodes van 2x4 weken. Dit door sluiting ivm Corona
|
|
v_tot := v_van + 56;
|
|
|
|
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_56d;
|
|
/
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|