FSN#26559 Te korte string gefixt.

svn path=/Database/trunk/; revision=20728
This commit is contained in:
Peter Feij
2014-02-20 13:00:39 +00:00
parent 5d38f02f8a
commit 5ede852449

View File

@@ -606,7 +606,7 @@ AS
FROM res_v_aanwezigrsv_deel rad, -- de andere
res_deel rd
WHERE rd.res_deel_key = rad.res_deel_key
AND rd.res_ins_deel_key = lres_ins_deel_key -- Er kunnen meerdere res_deel-en zijn met dezelfde ins_deel_key
AND rd.res_ins_deel_key = lres_ins_deel_key -- Er kunnen meerdere res_deel-en zijn met dezelfde ins_deel_key
-- Er is overlap als
-- A) de andere ruimte begint voor ons einde
-- B) en eindigt na ons begin
@@ -821,7 +821,7 @@ AS
ruimtekey alg_ruimte.alg_ruimte_key%TYPE;
locatiekey alg_locatie.alg_locatie_key%TYPE;
oldloc bez_afspraak.alg_locatie_key%TYPE;
bezremark bez_afspraak.bez_afspraak_opmerking%TYPE;
bezremark VARCHAR2(2100); -- bez_afspraak.bez_afspraak_opmerking%TYPE is te kort
lremarkfilled BOOLEAN;
CURSOR ckenmerk
@@ -907,7 +907,7 @@ AS
bez_afspraak_eind = newtot,
alg_locatie_key = locatiekey,
alg_onrgoed_keys = ruimtekey,
bez_afspraak_opmerking = bezremark
bez_afspraak_opmerking = SUBSTR(bezremark, 1, 320)
WHERE bez_afspraak_key = afspraak_key;
ELSE -- Opmerking niet opslaan
UPDATE bez_afspraak
@@ -989,17 +989,17 @@ AS
res_length_morning NUMBER;
res_length_afternoon NUMBER;
res_length_evening NUMBER;
lres_t_middag NUMBER;
lres_t_avond NUMBER;
res_1e_dagblok NUMBER;
res_2e_dagblok NUMBER;
cost_morning NUMBER;
cost_afternoon NUMBER;
cost_evening 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;
@@ -1120,7 +1120,7 @@ AS
THEN
res_length_evening := 0;
END IF;
IF res_roompricingmethod = 1
THEN
@@ -1154,25 +1154,25 @@ AS
END IF;
thisroomprice := room_price * res_ruimte_length;
END IF;
ELSIF res_roompricingmethod = 2
THEN
-- Lever voor de duur van de reservering de laagste prijs op: zie NYBU#25763
-- Dagprijs -> Uren uitgesplitst per dagdeel (uur van dat dagdeel x prijs) en vergelijken met dagdeelprijs, en daarvan het goedkoopste.
-- Voor alle 3 dagdelen verkijgen we dan een goedkoopste gedrag (D1 + D2 +D3), die optellen en vergelijken met dagprijs, en daarvan de goedkoopste.
-- room_price_fixed = 1 werkt alleen op dagdeelprijs, en NIET op uurtarief (eigenlijk zouden we 2 vinkjes moeten hebben, voor ieder 1 afzonderlijk).
-- En tenslotte nog vergelijken met dagprijs, neem de goedkoopste.
cost_morning := 0;
cost_afternoon := 0;
cost_evening := 0;
-- Hieronder de uren uitsplitsen naar dagdelen en vergelijken met dagdeelprijzen, daarvan de goedkoopste.
-- Net als bij res_roompricingmethod = 1, ook kijken of de middag en avond tijden zijn ingesteld, anders doen die niet mee.
IF (lres_t_middag > 0 AND lres_t_middag < 24 AND lres_t_avond > 0 AND lres_t_avond < 24)
THEN
THEN
-- Een prijs per blok (kennelijk). Tellen hoeveel blokken dan
IF res_length_morning > 0
THEN
@@ -1181,13 +1181,13 @@ AS
cost_morning := price_morning;
ELSE
cost_morning := price_morning * res_length_morning;
END IF;
END IF;
IF (res_length_morning * room_price) < cost_morning
THEN
cost_morning := res_length_morning * room_price;
END IF;
END IF;
IF res_length_afternoon > 0
THEN
IF room_price_fixed = 1
@@ -1195,13 +1195,13 @@ AS
cost_afternoon := price_afternoon;
ELSE
cost_afternoon := price_afternoon * res_length_afternoon;
END IF;
END IF;
IF (res_length_afternoon * room_price) < cost_afternoon
THEN
cost_afternoon := res_length_afternoon * room_price;
END IF;
END IF;
IF res_length_evening > 0
THEN
IF room_price_fixed = 1
@@ -1209,24 +1209,24 @@ AS
cost_evening := price_evening;
ELSE
cost_evening := price_evening * res_length_evening;
END IF;
END IF;
IF (res_length_evening * room_price) < cost_evening
THEN
cost_evening := res_length_evening * room_price;
END IF;
END IF;
thisroomprice := cost_morning + cost_afternoon + cost_evening;
-- Als dagprijs = 0 (d.i. price_allday is NULL cq. is niet gevuld), dan telt die niet mee, en moet de nieuwe prijsberekening gelden.
-- Of als dagprijs lager is lager is dan de nieuwe prijsberekening, dan ook.
IF (price_allday <> 0) AND price_allday < thisroomprice
IF (price_allday <> 0) AND price_allday < thisroomprice
THEN
thisroomprice := price_allday;
END IF;
ELSE
thisroomprice := price_allday;
END IF;
ELSIF res_roompricingmethod = 3
THEN
-- Methode 3: STAFFELS van b.v. 4 en 8: zie WIBC#26163
@@ -1234,19 +1234,19 @@ AS
-- x < 4 uur: duur x uurprijs
-- 4 <= x < 8 uur: dagdeelprijs (ochtend) + (duur - 4) x uurprijs
-- x >= 8 uur: dagprijs, (of indien dagprijs niet is ingesteld, dan dagdeelprijs (middag) + (duur - 8) x uurprijs
-- Bij methode 3 wordt lres_t_middag niet als tijdsgrens tussen morgen en middag ingesteld, maar als een 'blok' van een aantal uren.
-- Bij methode 3 wordt lres_t_middag niet als tijdsgrens tussen morgen en middag ingesteld, maar als een 'blok' van een aantal uren.
-- En idem voor avond, die is het 2e blok (groter aantal) uren dan het 1e blok.
--
--
res_1e_dagblok := lres_t_middag;
res_2e_dagblok := lres_t_avond;
--- MB: Overlegd met DEVELOP (PF): geconstateerd dat res_ruimte_res bij een reservering van 10:00-14:00 niet exact 4 is, maar 4.000000en-een-beetje.
--- Tot dusver ook geen probleem met voorgaande price-methodes, maar nu gaan we (exact) vergelijken met een staffel, en dan kan die net de verkeerde kant (if-then-else) opvallen!
-- Vandaar deze foef om af te ronden, alleen op deze plaats.
res_ruimte_length := ROUND(res_ruimte_length, 2);
IF (res_1e_dagblok > 0 AND res_1e_dagblok < 24)
THEN
-- Er is een 1e block gedefinieerd
@@ -1270,7 +1270,7 @@ AS
THEN
-- Reserv. duur is GROTER dan 2e blok uren, dan geldt de dagprijs indien deze is ingesteld.
-- Als de dagprijs NIET is ingesteld, dan dagdeelprijs (middag) + (duur - 8) x uurprijs
IF price_allday > 0
THEN
-- Er is een dagprijs voor de ruimte ingesteld, die telt dan.
@@ -1286,7 +1286,7 @@ AS
thisroomprice := price_afternoon + (room_price * (res_ruimte_length - res_2e_dagblok));
END IF;
ELSE
-- Reserv. duur is ligt tussen 1e en 2e blok uren in,
-- Reserv. duur is ligt tussen 1e en 2e blok uren in,
-- dan geldt dagdeelprijs (ochtend) + (duur - 4) x uurprijs
IF room_price_fixed = 1 AND res_ruimte_length > res_1e_dagblok
THEN
@@ -1306,10 +1306,10 @@ AS
res_ruimte_length := res_1e_dagblok + 1;
END IF;
thisroomprice := price_morning + (room_price * (res_ruimte_length - res_1e_dagblok));
END IF;
END IF;
END IF;
ELSE
-- Er is geen 1e blok gedefinieerd.
-- Er is geen 1e blok gedefinieerd.
-- Dan maar gewoon uur x prijs.
-- Ook hier doet setting room_price_fixed ook gewoon mee.
IF room_price_fixed = 1
@@ -1323,21 +1323,21 @@ AS
-- Kost nooit wat.
thisroomprice := 0;
END IF;
-- Hier rekening houden met intern/extern tarief
IF prs_kostenplaats_extern = 0
THEN
thisroomprice := thisroomprice * COALESCE(ruimte_prijsfactor_intern,fac.safe_to_number (fac.getsetting ('res_ruimte_prijsfactor_intern')));
END IF;
-- Doorbelastingspercentage (bij annuleren) op het laatste moment nog.
-- Voor de berekening van de doorbelasting moet gerekend worden met een op twee decimalen afgeronde ruimteprijs.
thisroomprice := ROUND(thisroomprice, 2) * doorbelasting / 100;
thisroomprice := ROUND(thisroomprice, 2) * doorbelasting / 100;
-- De uiteindelijke ruimteprijs die afgeleverd wordt (return waarde) moet een op twee decimalen afgeronde prijs zijn. Vanwege doorbelasting opnieuw afronden.
RETURN ROUND(thisroomprice, 2);
END;
FUNCTION getdeelprijs (pres_rsv_deel_key IN NUMBER)
RETURN NUMBER IS
deel_price res_deel.res_deel_prijs%TYPE;
@@ -1423,7 +1423,7 @@ AS
END IF;
END IF;
END IF;
-- De uiteindelijke artikelprijs die afgeleverd wordt (return waarde) moet een op twee decimalen afgeronde prijs zijn.
-- De uiteindelijke artikelprijs die afgeleverd wordt (return waarde) moet een op twee decimalen afgeronde prijs zijn.
-- Afronden op twee decimalen gaat automatisch omdat deel_price_total twee decimalen heeft.
deel_price_total := deel_price * res_deel_length;
RETURN deel_price_total;