AKZA#34210: Beschikbaarheidstijden voor voorzieningen(catering).

svn path=/Database/trunk/; revision=27193
This commit is contained in:
Maykel Geerdink
2015-12-01 11:29:36 +00:00
parent 395fd67a83
commit 563e318a7c

View File

@@ -26,7 +26,7 @@ CREATE OR REPLACE PACKAGE res AS
PROCEDURE follow_deel (prsv_ruimte_key IN NUMBER, oldvan IN DATE, oldtot IN DATE);
PROCEDURE follow_afspraak (prsv_ruimte_key IN NUMBER, pres_copy_to_bez IN NUMBER);
FUNCTION res_deel_in_scope (pres_deel_key IN NUMBER, pres_rsv_ruimte_key IN NUMBER) RETURN BOOLEAN;
FUNCTION res_artikel_in_scope (pres_artikel_key IN NUMBER, pres_rsv_ruimte_key IN NUMBER, pres_rsv_artikel_key IN NUMBER) RETURN BOOLEAN;
FUNCTION res_artikel_in_scope (pres_rsv_artikel_key IN NUMBER) RETURN BOOLEAN;
FUNCTION getruimteprijs (pres_rsv_ruimte_key IN NUMBER, ignoretotaal IN NUMBER DEFAULT NULL) RETURN NUMBER;
FUNCTION getdeelprijs (pres_rsv_deel_key IN NUMBER) RETURN NUMBER;
FUNCTION getartikelprijs (pres_rsv_artikel_key IN NUMBER) RETURN NUMBER;
@@ -764,12 +764,12 @@ AS
end loop;
END;
-- Mag dit res_dartikel in de (koppel)ruimte van de reservering gereserveerd worden
FUNCTION res_artikel_in_scope (pres_artikel_key IN NUMBER, pres_rsv_ruimte_key IN NUMBER, pres_rsv_artikel_key IN NUMBER)
FUNCTION res_artikel_in_scope (pres_rsv_artikel_key IN NUMBER)
RETURN BOOLEAN IS
result BOOLEAN;
n_inscope INTEGER;
BEGIN
DBMS_OUTPUT.put_line ('res_artikel_in_scope(' || pres_artikel_key || ',' || pres_rsv_ruimte_key || ',' || pres_rsv_artikel_key || ')');
DBMS_OUTPUT.put_line ('res_artikel_in_scope(' || pres_rsv_artikel_key || ')');
SELECT COUNT(DISTINCT ra.res_rsv_artikel_key)
INTO n_inscope
FROM res_rsv_ruimte rr,
@@ -782,23 +782,20 @@ AS
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
AND ro.res_ruimte_key = rar.res_ruimte_key(+)
AND a.res_discipline_key = sao.res_discipline_key
AND (rg.alg_locatie_key = sao.alg_onrgoed_key AND alg_onrgoed_niveau = 'L'
OR rg.alg_gebouw_key = sao.alg_onrgoed_key AND alg_onrgoed_niveau = 'G'
OR rg.alg_verdieping_key = sao.alg_onrgoed_key AND alg_onrgoed_niveau = 'V'
OR rg.alg_ruimte_key = sao.alg_onrgoed_key AND alg_onrgoed_niveau = 'R')
AND (rg.alg_locatie_key = sao.alg_onrgoed_key AND sao.alg_onrgoed_niveau = 'L'
OR rg.alg_gebouw_key = sao.alg_onrgoed_key AND sao.alg_onrgoed_niveau = 'G'
OR rg.alg_verdieping_key = sao.alg_onrgoed_key AND sao.alg_onrgoed_niveau = 'V'
OR rg.alg_ruimte_key = sao.alg_onrgoed_key AND sao.alg_onrgoed_niveau = 'R')
AND rg.alg_ruimte_key = COALESCE (rr.alg_ruimte_key, rar.alg_ruimte_key)
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND sao.res_srtartikel_og_verwijder IS NULL
AND rg.alg_ruimte_key IS NOT NULL
AND rar.res_alg_ruimte_verwijder IS NULL -- Het kan ook een koppelruimte zijn die uit meerdere ruimten bestaat
AND a.res_artikel_key = pres_artikel_key
AND rr.res_rsv_ruimte_key = pres_rsv_ruimte_key
AND ra.res_rsv_artikel_key = pres_rsv_artikel_key
-- Levering tussen begintijd artikel en eindtijd artikel.
AND ra.res_rsv_artikel_levering BETWEEN (SELECT TRUNC (rr.res_rsv_ruimte_van) FROM res_rsv_ruimte rr WHERE rr.res_rsv_ruimte_key = pres_rsv_ruimte_key)
+ COALESCE (a.res_artikel_begintijd, fac.safe_to_number (fac.getsetting ('res_t1'))) / 24
AND (SELECT TRUNC (rr.res_rsv_ruimte_van) FROM res_rsv_ruimte rr WHERE rr.res_rsv_ruimte_key = pres_rsv_ruimte_key)
+ COALESCE (a.res_artikel_eindtijd, fac.safe_to_number (fac.getsetting ('res_t2'))) / 24;
AND ra.res_rsv_artikel_levering BETWEEN TRUNC (rr.res_rsv_ruimte_van) + COALESCE (a.res_artikel_begintijd, fac.safe_to_number (fac.getsetting ('res_t1'))) / 24
AND TRUNC (rr.res_rsv_ruimte_van) + COALESCE (a.res_artikel_eindtijd, fac.safe_to_number (fac.getsetting ('res_t2'))) / 24;
RETURN n_inscope > 0;
END;
-- Moeten wijzelf misschien dirty worden
@@ -821,7 +818,7 @@ AS
FETCH prsv_artikelcur INTO prsv_artikel;
newdirtlevel := 0; -- Begin 'Clean'
IF prsv_artikel.res_rsv_artikel_verwijder IS NULL
AND NOT res_artikel_in_scope (prsv_artikel.res_artikel_key, prsv_artikel.res_rsv_ruimte_key, prsv_artikel.res_rsv_artikel_key)
AND NOT res_artikel_in_scope (prsv_artikel.res_rsv_artikel_key)
THEN
newdirtlevel := newdirtlevel + 256; -- OutOfScope
END IF;