FSN#24677 Dirty berekening met schoonmaak weer correcter

svn path=/Database/trunk/; revision=15764
This commit is contained in:
Jos Groot Lipman
2012-11-01 12:09:27 +00:00
parent b7f7562b23
commit 80d172919f

View File

@@ -341,7 +341,7 @@ AS
-- of schoon worden -- of schoon worden
PROCEDURE set_ruimte_dirty (prsv_ruimte_key IN NUMBER) PROCEDURE set_ruimte_dirty (prsv_ruimte_key IN NUMBER)
AS AS
preposttime res_disc_params.res_disc_params_preposttime%TYPE; preposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
my_res_ruimte_key res_ruimte.res_ruimte_key%TYPE; my_res_ruimte_key res_ruimte.res_ruimte_key%TYPE;
n_overlap NUMBER (10); n_overlap NUMBER (10);
CURSOR prsv_ruimtecur CURSOR prsv_ruimtecur
@@ -386,20 +386,27 @@ AS
THEN THEN
preposttime := 0; preposttime := 0;
END IF; END IF;
-- 1 Minuut marge voor afrondfouten
IF preposttime > 1/24/60 THEN
preposttime := preposttime - 1/24/60;
END IF;
-- Oke, hoeveel overlappende alg_ruimte hebben we nu -- Oke, hoeveel overlappende alg_ruimte hebben we nu
SELECT COUNT (DISTINCT rb.res_ruimte_key) SELECT COUNT (DISTINCT rb.res_ruimte_key)
INTO n_overlap INTO n_overlap
FROM res_alg_ruimte rb, -- ikzelf FROM res_alg_ruimte rb, -- ikzelf
res_v_rsv_ruimte_2_alg_ruimte rr -- de andere res_v_rsv_ruimte_2_alg_ruimte rr -- de andere
WHERE rr.alg_ruimte_key = rb.alg_ruimte_key AND rb.res_ruimte_key = my_res_ruimte_key WHERE rr.alg_ruimte_key = rb.alg_ruimte_key AND rb.res_ruimte_key = my_res_ruimte_key
-- Redundant maar z??r goed voor performance -- Redundant maar z<EFBFBD><EFBFBD>r goed voor performance
-- VOORKENNIS: Geen meerdaagse reserveringen -- ONGETEST/komt niet voor maar: meerdaagse reserveringen zou zo maar goed kunnen gaan
AND rb.res_alg_ruimte_verwijder IS NULL AND rb.res_alg_ruimte_verwijder IS NULL
AND rr.res_rsv_ruimte_van BETWEEN TRUNC (prsv_ruimte.res_rsv_ruimte_van) AND rr.res_rsv_ruimte_van BETWEEN TRUNC (prsv_ruimte.res_rsv_ruimte_van)
AND prsv_ruimte.res_rsv_ruimte_tot AND TRUNC (prsv_ruimte.res_rsv_ruimte_tot)+1
-- Er is overlap als -- Er is overlap als
-- A) de andere ruimte begint voor ons einde -- A) de andere ruimte begint voor ons einde
-- B) en eindigt na ons begin -- B) en eindigt na ons begin
-- Let op: bij Blokkade(3) van de ander rekenen we geen schoonmaaktijd.
-- Dat gebeurt ietwat getruct door te tegen-corrigeren, vandaar
-- de rr.res_rsv_ruimte_van PLUS preposttime
AND CASE rr.res_status_fo_key AND CASE rr.res_status_fo_key
WHEN 3 THEN rr.res_rsv_ruimte_van + preposttime WHEN 3 THEN rr.res_rsv_ruimte_van + preposttime
ELSE rr.res_rsv_ruimte_van ELSE rr.res_rsv_ruimte_van