UWVA#21022

svn path=/Database/trunk/; revision=10931
This commit is contained in:
Maykel Geerdink
2011-10-20 12:59:36 +00:00
parent 9e1da79c74
commit bcc22652ba
3 changed files with 151 additions and 51 deletions

View File

@@ -1,8 +1,8 @@
#ifdef RES
/* RES_PAC.SRC
*
* $Revision: 72 $
* $Modtime: 12-09-11 16:33 $
* $Revision: 73 $
* $Modtime: 20-10-11 13:03 $
*/
CREATE OR REPLACE PACKAGE res AS
@@ -918,28 +918,68 @@ AS
END;
FUNCTION getruimteprijs (pres_rsv_ruimte_key IN NUMBER)
RETURN NUMBER IS
room_price res_ruimte.res_ruimte_prijs%TYPE;
room_price_fixed res_ruimte.res_ruimte_prijs_vast%TYPE;
price_morning res_ruimte.res_ruimte_prijs_ochtend%TYPE;
price_afternoon res_ruimte.res_ruimte_prijs_middag%TYPE;
price_evening res_ruimte.res_ruimte_prijs_avond%TYPE;
room_price_total res_rsv_ruimte.res_rsv_ruimte_prijs%TYPE;
res_ruimte_length NUMBER;
res_ruimte_begin NUMBER;
res_ruimte_end NUMBER;
res_length_morning NUMBER;
res_length_afternoon NUMBER;
res_length_evening NUMBER;
lres_t_middag NUMBER;
lres_t_avond NUMBER;
room_price res_ruimte.res_ruimte_prijs%TYPE;
room_price_fixed res_ruimte.res_ruimte_prijs_vast%TYPE;
price_morning res_ruimte.res_ruimte_prijs_ochtend%TYPE;
price_afternoon res_ruimte.res_ruimte_prijs_middag%TYPE;
price_evening res_ruimte.res_ruimte_prijs_avond%TYPE;
room_price_total res_rsv_ruimte.res_rsv_ruimte_prijs%TYPE;
res_ruimte_length NUMBER;
res_ruimte_begin NUMBER;
res_ruimte_end NUMBER;
res_length_morning NUMBER;
res_length_afternoon NUMBER;
res_length_evening NUMBER;
lres_t_middag NUMBER;
lres_t_avond NUMBER;
verwijderdatum res_rsv_ruimte.res_rsv_ruimte_verwijder%TYPE;
statusfokey res_rsv_ruimte.res_status_fo_key%TYPE;
doorbelasting res_disc_params.res_disc_params_kosten%TYPE;
BEGIN
-- Is de reservering verwijderd
SELECT rrr.res_rsv_ruimte_verwijder,
rrr.res_status_fo_key
INTO verwijderdatum,
statusfokey
FROM res_rsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_key = pres_rsv_ruimte_key;
-- Bepaal doorbelasting
IF verwijderdatum IS NULL -- Actuele reservering: 100% kosten doorberekenen.
THEN
doorbelasting := 100;
ELSIF statusfokey = 4 -- Verwijderde reservering en FO status is vervallen: X% kosten doorberekenen
THEN
-- Hoeveel moet worden doorbelast
BEGIN
-- Hoeveel van de ruimte kosten doorberekenen
SELECT rdp.res_disc_params_kosten
INTO doorbelasting
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_disc_params rdp
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = rdp.res_ins_discipline_key
AND rrr.res_rsv_ruimte_key = pres_rsv_ruimte_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- Geen R-reservering maar een CV-reservering, dan kost de ruimte niks
RETURN 0;
END;
ELSE -- Verwijderde reservering en FO status is niet vervallen: 0% kosten doorberekenen
RETURN 0;
END IF;
-- Als Uitgevoerd/verwerkt, dan is de prijs al geregistreerd en bekend
BEGIN
SELECT res_rsv_ruimte_prijs
INTO room_price
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_key = pres_rsv_ruimte_key AND res_status_bo_key IN (5, 6);
RETURN room_price;
RETURN room_price * doorbelasting / 100;
EXCEPTION
WHEN OTHERS
THEN
@@ -1022,22 +1062,37 @@ AS
END IF;
room_price_total := room_price * res_ruimte_length;
END IF;
RETURN room_price_total;
RETURN room_price_total * doorbelasting / 100;
END;
FUNCTION getdeelprijs (pres_rsv_deel_key IN NUMBER)
RETURN NUMBER IS
deel_price res_deel.res_deel_prijs%TYPE;
deel_price_fixed res_deel.res_deel_prijs_vast%TYPE;
deel_price_total res_rsv_deel.res_rsv_deel_prijs%TYPE;
res_deel_length NUMBER;
res_deel_begin NUMBER;
res_deel_end NUMBER;
res_length_morning NUMBER;
res_length_afternoon NUMBER;
res_length_evening NUMBER;
lres_t_middag NUMBER;
lres_t_avond NUMBER;
deel_price res_deel.res_deel_prijs%TYPE;
deel_price_fixed res_deel.res_deel_prijs_vast%TYPE;
deel_price_total res_rsv_deel.res_rsv_deel_prijs%TYPE;
res_deel_length NUMBER;
res_deel_begin NUMBER;
res_deel_end NUMBER;
res_length_morning NUMBER;
res_length_afternoon NUMBER;
res_length_evening NUMBER;
lres_t_middag NUMBER;
lres_t_avond NUMBER;
verwijderdatum res_rsv_ruimte.res_rsv_ruimte_verwijder%TYPE;
BEGIN
-- Is de reservering verwijderd
SELECT rrr.res_rsv_ruimte_verwijder
INTO verwijderdatum
FROM res_rsv_ruimte rrr,
res_rsv_deel rrd
WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_rsv_deel_key = pres_rsv_deel_key;
IF verwijderdatum IS NOT NULL -- Reserveerbare objecten worden bij een verwijderde reservering nooit doorbelast.
THEN
RETURN 0;
END IF;
-- Actuele reservering: 100% kosten doorberekenen.
-- Als Uitgevoerd/verwerkt, dan is de prijs al geregistreerd en bekend
BEGIN
SELECT res_rsv_deel_prijs
@@ -1099,19 +1154,52 @@ AS
END;
FUNCTION getartikelprijs (pres_rsv_artikel_key IN NUMBER)
RETURN NUMBER IS
res_artikel_aantal res_rsv_artikel.res_rsv_artikel_aantal%TYPE;
artikel_price_total res_rsv_artikel.res_rsv_artikel_prijs%TYPE;
res_artikel_aantal res_rsv_artikel.res_rsv_artikel_aantal%TYPE;
artikel_price_total res_rsv_artikel.res_rsv_artikel_prijs%TYPE;
verwijderdatum res_rsv_ruimte.res_rsv_ruimte_verwijder%TYPE;
statusfokey res_rsv_ruimte.res_status_fo_key%TYPE;
doorbelasting res_disc_params.res_disc_params_kosten%TYPE;
BEGIN
-- Is de reservering verwijderd
SELECT rrr.res_rsv_ruimte_verwijder,
rrr.res_status_fo_key
INTO verwijderdatum,
statusfokey
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_key = pres_rsv_artikel_key;
-- Bepaal doorbelasting
IF verwijderdatum IS NULL -- Actuele reservering: 100% kosten doorberekenen.
THEN
doorbelasting := 100;
ELSIF statusfokey = 4 -- Verwijderde reservering en FO status is vervallen: X% kosten doorberekenen
THEN
-- Hoeveel moet worden doorbelast
SELECT res_disc_params_kosten
INTO doorbelasting
FROM res_rsv_artikel rra,
res_artikel ra,
res_disc_params rdp
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rdp.res_ins_discipline_key
AND res_rsv_artikel_dirtlevel = 0
AND res_rsv_artikel_key = pres_rsv_artikel_key;
ELSE -- Verwijderde reservering en FO status is niet vervallen: 0% kosten doorberekenen
return 0;
END IF;
-- Als de prijs al geregistreerd in res_rsv_artikel_prijs dan nemen we die
BEGIN
SELECT res_rsv_artikel_prijs
INTO artikel_price_total
INTO artikel_price_total
FROM res_rsv_artikel ra, res_artikel a
WHERE res_rsv_artikel_key = pres_rsv_artikel_key
AND ra.res_artikel_key = a.res_artikel_key
AND res_rsv_artikel_prijs IS NOT NULL
AND (res_status_bo_key >= 5 OR res_artikel_prijs_vast IS NULL);
RETURN artikel_price_total;
WHERE res_rsv_artikel_key = pres_rsv_artikel_key
AND ra.res_artikel_key = a.res_artikel_key
AND res_rsv_artikel_prijs IS NOT NULL
AND (res_status_bo_key >= 5 OR res_artikel_prijs_vast IS NULL);
RETURN artikel_price_total * doorbelasting / 100;
EXCEPTION
WHEN OTHERS
THEN
@@ -1124,7 +1212,7 @@ AS
INTO artikel_price_total
FROM res_rsv_artikel ra, res_artikel a
WHERE ra.res_artikel_key = a.res_artikel_key AND ra.res_rsv_artikel_key = pres_rsv_artikel_key;
RETURN artikel_price_total;
RETURN artikel_price_total * doorbelasting / 100;
END;
-- Bepaal de totaalprijs van een reservering
FUNCTION getdeelresprijs (pres_rsv_ruimte_key IN NUMBER)
@@ -1136,15 +1224,13 @@ AS
IS
SELECT res_rsv_artikel_key
FROM res_rsv_artikel
WHERE res_rsv_artikel_verwijder IS NULL
AND res_rsv_artikel_dirtlevel = 0
WHERE res_rsv_artikel_dirtlevel = 0
AND res_rsv_ruimte_key = pres_rsv_ruimte_key;
CURSOR cdeel
IS
SELECT res_rsv_deel_key
FROM res_rsv_deel
WHERE res_rsv_deel_verwijder IS NULL
AND res_rsv_deel_dirtlevel = 0
WHERE res_rsv_deel_dirtlevel = 0
AND res_rsv_ruimte_key = pres_rsv_ruimte_key;
BEGIN
ruimteprijs := res.getruimteprijs(pres_rsv_ruimte_key);
@@ -1180,6 +1266,6 @@ AS
END res;
/
REGISTERRUN('$Workfile: RES_PAC.SRC $','$Revision: 72 $')
REGISTERRUN('$Workfile: RES_PAC.SRC $','$Revision: 73 $')
#endif // RES

View File

@@ -1,7 +1,7 @@
#ifdef RES // 07-12-99 BIV
/*
* $Revision: 124 $
* $Modtime: 7-09-11 9:40 $
* $Revision: 125 $
* $Modtime: 19-10-11 14:08 $
*/
CREATE_TABLE (res_disc_params,0)
@@ -11,10 +11,11 @@ CREATE_TABLE (res_disc_params,0)
res_disc_params_preposttime NUMBER(5,2) DEFAULT 0,
res_disc_params_notify NUMBER(2) DEFAULT 1,
res_disc_params_aantalreq NUMBER(1) DEFAULT 1, /* is res_rsv_ruimte_bezoekers verplicht? */
res_disc_params_kosten NUMBER(1) DEFAULT 1, /* kosten wel/niet doorbelasten */
res_disc_params_kosten NUMBER(3) DEFAULT 100, /* Hoeveel van de kosten worden doorbelast in procenten */
res_disc_params_noti_dagen NUMBER(2), /* aantal dagen voor/achteraf voor reminder */
res_disc_params_expire_dagen NUMBER(2), /* aantal (hele) dagen vooraf waarna niet meer mag gewijzigd */
res_disc_params_expire_dagen NUMBER(2), /* aantal (hele) dagen vooraf waarna niet meer mag worden gewijzigd */
res_disc_params_expire_tijd NUMBER(5,2), /* grenstijdstip van de dag voor die freeze (bv 16.5) */
res_disc_params_cancel_dagen NUMBER(2), /* aantal (hele) dagen vooraf waarna niet meer kostenloos mag worden gennuleerd/verwijderd */
CONSTRAINT res_c_ins_discipline_key CHECK (res_ins_discipline_key IS NOT NULL),
CONSTRAINT res_k_res_disc_params_key PRIMARY KEY (res_disc_params_key),
CONSTRAINT res_r_ins_discipine_key FOREIGN KEY (res_ins_discipline_key)
@@ -653,6 +654,6 @@ CREATE_TABLE(res_activiteitdiscipline, 0) (
REFERENCES res_activiteit(res_activiteit_key) ON DELETE CASCADE
);
REGISTERONCE('$Workfile: RES_TAB.SRC $','$Revision: 124 $')
REGISTERONCE('$Workfile: RES_TAB.SRC $','$Revision: 125 $')
#endif // RES

View File

@@ -1,7 +1,7 @@
/* DB11TO12.SRC
* Update script van Facilitor schema DB12 naar DB13
* $Revision: 52 $
* $Modtime: 11-10-11 14:36 $
* $Revision: 53 $
* $Modtime: 18-10-11 13:52 $
*/
#include "prologue.inc"
@@ -1253,6 +1253,19 @@ ALTER TABLE mld_melding ADD mld_melding_externnr VARCHAR2(30);
/////////////////////////////////////////////////////////////////////////////////////////// UWVA#21485
ALTER TABLE mld_stdmelding ADD mld_stdmelding_vervaldatum DATE;
/////////////////////////////////////////////////////////////////////////////////////////// UWVA#21022
ALTER TABLE res_disc_params ADD res_disc_params_cancel_dagen NUMBER(2);
ALTER TABLE res_disc_params MODIFY (res_disc_params_kosten NUMBER(3));
-- annulerings dagen dezelfde waarden als de wijzigings dagen
UPDATE res_disc_params
SET res_disc_params_cancel_dagen = res_disc_params_expire_dagen;
-- 0 = 0%, 1=100% kosten doorberekenen
UPDATE res_disc_params
SET res_disc_params_kosten = 100
WHERE res_disc_params_kosten = 1;
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
@@ -1327,5 +1340,5 @@ DROP PACKAGE webfac;
DROP FUNCTION FAC_F_FAC_GET_DESCRIPTION;
///////////////////////////////////////////////////////////////////////////////////////////
REGISTERONCE('$Workfile: DB12to13.src $','$Revision: 52 $')
REGISTERONCE('$Workfile: DB12to13.src $','$Revision: 53 $')
#include "epilogue.inc"