FSN#24920: RES: res.set_delen_clean en schoonmaaktijden, gaat dat goed?

svn path=/Database/trunk/; revision=16209
This commit is contained in:
Maykel Geerdink
2012-12-04 15:08:36 +00:00
parent 44385dbfab
commit 1ecdbe003d

View File

@@ -34,9 +34,9 @@ CREATE OR REPLACE PACKAGE BODY res
AS
FUNCTION res_copy_deelres (prsv_ruimte_key IN NUMBER, newdate IN DATE, puserkey NUMBER) RETURN NUMBER
AS
nextvolg res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
nextkey res_rsv_ruimte.res_rsv_ruimte_key%TYPE;
destatus res_rsv_ruimte.res_status_bo_key%TYPE;
nextvolg res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
nextkey res_rsv_ruimte.res_rsv_ruimte_key%TYPE;
destatus res_rsv_ruimte.res_status_bo_key%TYPE;
BEGIN
SELECT res_s_res_rsv_ruimte_key.NEXTVAL INTO nextkey FROM DUAL;
SELECT MAX (a.res_rsv_ruimte_volgnr) + 1, MAX(a.res_status_bo_key)
@@ -518,8 +518,8 @@ AS
-- Mag dit res_deel in deze alg_ruimte_key gereserveerd worden
FUNCTION res_deel_in_scope (pres_deel_key IN NUMBER, palg_ruimte_key IN NUMBER)
RETURN BOOLEAN IS
result BOOLEAN;
n_inscope INTEGER;
result BOOLEAN;
n_inscope INTEGER;
BEGIN
DBMS_OUTPUT.put_line ('res_deel_in_scope(' || pres_deel_key || ',' || palg_ruimte_key || ')');
SELECT COUNT (d.ins_deel_key)
@@ -560,17 +560,17 @@ AS
-- of door out-of-scope geraakt
PROCEDURE set_deel_dirty (prsv_deel_key IN NUMBER)
AS
n_overlap NUMBER (10);
preposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
lres_deel_key res_rsv_deel.res_deel_key%TYPE;
lrsv_ruimte_key res_rsv_deel.res_rsv_ruimte_key%TYPE;
lrsv_deel_key res_rsv_deel.res_rsv_deel_key%TYPE;
lrsv_deel_van res_rsv_deel.res_rsv_deel_van%TYPE;
lrsv_deel_tot res_rsv_deel.res_rsv_deel_tot%TYPE;
lres_rsv_deel_verwijder res_rsv_deel.res_rsv_deel_verwijder%TYPE;
newdirtlevel res_rsv_deel.res_rsv_deel_dirtlevel%TYPE;
lruimtevan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
lruimtetot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
n_overlap NUMBER (10);
preposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
lres_deel_key res_rsv_deel.res_deel_key%TYPE;
lrsv_ruimte_key res_rsv_deel.res_rsv_ruimte_key%TYPE;
lrsv_deel_key res_rsv_deel.res_rsv_deel_key%TYPE;
lrsv_deel_van res_rsv_deel.res_rsv_deel_van%TYPE;
lrsv_deel_tot res_rsv_deel.res_rsv_deel_tot%TYPE;
lres_rsv_deel_verwijder res_rsv_deel.res_rsv_deel_verwijder%TYPE;
newdirtlevel res_rsv_deel.res_rsv_deel_dirtlevel%TYPE;
lruimtevan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
lruimtetot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
BEGIN
BEGIN
SELECT d.res_deel_key,
@@ -580,7 +580,7 @@ AS
res_rsv_deel_tot,
r.res_rsv_ruimte_van,
r.res_rsv_ruimte_tot,
lres_rsv_deel_verwijder,
res_rsv_deel_verwijder,
res_disc_params_preposttime / 24
INTO lres_deel_key,lrsv_ruimte_key,lrsv_deel_key,lrsv_deel_van,lrsv_deel_tot,
lruimtevan,lruimtetot,lres_rsv_deel_verwijder,
@@ -631,14 +631,28 @@ AS
-- checkdate is op zich redundant maar heel goed voor de performance
PROCEDURE set_delen_clean (pdeel_key IN NUMBER, checkdate_van IN DATE, checkdate_tot IN DATE)
AS
preposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
BEGIN
BEGIN
SELECT res_disc_params_preposttime / 24
INTO preposttime
FROM res_deel rd,
res_disc_params dp
WHERE rd.res_deel_key = pdeel_key
AND rd.res_discipline_key = dp.res_ins_discipline_key;
END;
-- 1 Minuut marge voor afrondfouten
IF preposttime > 1/24/60 THEN
preposttime := preposttime - 1/24/60;
END IF;
FOR prsv_deel
IN (SELECT res_rsv_deel_key
FROM res_rsv_deel
WHERE res_deel_key = pdeel_key
AND res_rsv_deel_dirtlevel <> 0
AND res_rsv_deel_van <= checkdate_tot
AND res_rsv_deel_tot >= checkdate_van)
WHERE res_deel_key = pdeel_key
AND res_rsv_deel_dirtlevel <> 0
AND res_rsv_deel_van < checkdate_tot + preposttime
AND res_rsv_deel_tot > checkdate_van - preposttime)
loop
set_deel_dirty (prsv_deel.res_rsv_deel_key);
-- TODO: Alle ruimtes met Dirty-bitje bekijken
@@ -647,8 +661,8 @@ AS
-- Mag dit res_dartikel in deze alg_ruimte_key gereserveerd worden
FUNCTION res_artikel_in_scope (pres_artikel_key IN NUMBER, palg_ruimte_key IN NUMBER)
RETURN BOOLEAN IS
result BOOLEAN;
n_inscope INTEGER;
result BOOLEAN;
n_inscope INTEGER;
BEGIN
DBMS_OUTPUT.put_line ('res_artikel_in_scope(' || pres_artikel_key || ',' || palg_ruimte_key || ')');
SELECT COUNT ( * )
@@ -690,7 +704,7 @@ AS
WHERE res_rsv_artikel_key = prsv_artikel_key
FOR UPDATE OF res_rsv_artikel_dirtlevel;
prsv_artikel prsv_artikelcur%ROWTYPE;
newdirtlevel res_rsv_artikel.res_rsv_artikel_dirtlevel%TYPE;
newdirtlevel res_rsv_artikel.res_rsv_artikel_dirtlevel%TYPE;
BEGIN
OPEN prsv_artikelcur;
FETCH prsv_artikelcur INTO prsv_artikel;
@@ -723,8 +737,8 @@ AS
FROM res_rsv_artikel rra
WHERE rra.res_rsv_ruimte_key = prsv_ruimte_key;
prsv_artikel prsv_artikelcur%ROWTYPE;
newvan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
newvan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
BEGIN
SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot
INTO newvan,newtot
@@ -751,8 +765,8 @@ AS
-- niet de parkeerplaatsen, dat doet de afspraak
PROCEDURE follow_deel (prsv_ruimte_key IN NUMBER, oldvan IN DATE, oldtot IN DATE)
AS
newvan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
newvan res_rsv_ruimte.res_rsv_ruimte_van%TYPE;
newtot res_rsv_ruimte.res_rsv_ruimte_tot%TYPE;
CURSOR prsv_deelcur
IS
SELECT *