AKZA#34210: Beschikbaarheidstijden voor voorzieningen(catering).
svn path=/Database/trunk/; revision=27140
This commit is contained in:
@@ -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) 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 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,60 +764,41 @@ 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)
|
||||
FUNCTION res_artikel_in_scope (pres_artikel_key IN NUMBER, pres_rsv_ruimte_key IN NUMBER, 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 || ')');
|
||||
SELECT COUNT ( * )
|
||||
INTO n_inscope
|
||||
FROM res_v_alg_ruimte_gegevens rg, res_v_aanwezigartikel a
|
||||
WHERE rg.alg_ruimte_key IS NOT NULL
|
||||
AND res_artikel_key = pres_artikel_key
|
||||
AND rg.alg_ruimte_key IN (SELECT COALESCE(rr.alg_ruimte_key, ra.alg_ruimte_key) alg_ruimte_key
|
||||
FROM res_rsv_ruimte rr,
|
||||
res_ruimte_opstelling ro,
|
||||
res_alg_ruimte ra
|
||||
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
|
||||
AND ro.res_ruimte_key = ra.res_ruimte_key(+)
|
||||
AND rr.res_rsv_ruimte_key = pres_rsv_ruimte_key
|
||||
AND ra.res_alg_ruimte_verwijder IS NULL) -- Het kan ook een koppelruimte zijn die uit meerdere ruimten bestaat
|
||||
AND (rg.alg_locatie_key IN
|
||||
(SELECT DISTINCT sao.alg_onrgoed_key
|
||||
FROM res_srtartikel_onrgoed sao
|
||||
WHERE a.res_discipline_key = sao.res_discipline_key
|
||||
AND sao.res_srtartikel_og_verwijder IS NULL
|
||||
AND alg_onrgoed_niveau = 'L')
|
||||
OR rg.alg_gebouw_key IN
|
||||
(SELECT DISTINCT sao.alg_onrgoed_key
|
||||
FROM res_srtartikel_onrgoed sao
|
||||
WHERE a.res_discipline_key = sao.res_discipline_key
|
||||
AND sao.res_srtartikel_og_verwijder IS NULL
|
||||
AND alg_onrgoed_niveau = 'G')
|
||||
OR rg.alg_verdieping_key IN
|
||||
(SELECT DISTINCT sao.alg_onrgoed_key
|
||||
FROM res_srtartikel_onrgoed sao
|
||||
WHERE a.res_discipline_key = sao.res_discipline_key
|
||||
AND sao.res_srtartikel_og_verwijder IS NULL
|
||||
AND alg_onrgoed_niveau = 'V')
|
||||
OR rg.alg_ruimte_key IN
|
||||
(SELECT DISTINCT sao.alg_onrgoed_key
|
||||
FROM res_srtartikel_onrgoed sao
|
||||
WHERE a.res_discipline_key = sao.res_discipline_key
|
||||
AND sao.res_srtartikel_og_verwijder IS NULL
|
||||
AND alg_onrgoed_niveau = 'R'))
|
||||
-- Levering tussen begintijd artikel en eindtijd artikel.
|
||||
AND (SELECT ra.res_rsv_artikel_levering
|
||||
FROM res_rsv_ruimte rr,
|
||||
res_rsv_artikel ra
|
||||
WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||||
AND rr.res_rsv_ruimte_key = pres_rsv_ruimte_key
|
||||
AND ra.res_artikel_key = pres_artikel_key)
|
||||
BETWEEN (SELECT TRUNC(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(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;
|
||||
DBMS_OUTPUT.put_line ('res_artikel_in_scope(' || pres_artikel_key || ',' || pres_rsv_ruimte_key || ',' || pres_rsv_artikel_key || ')');
|
||||
SELECT COUNT(DISTINCT ra.res_rsv_artikel_key)
|
||||
INTO n_inscope
|
||||
FROM res_rsv_ruimte rr,
|
||||
res_ruimte_opstelling ro,
|
||||
res_alg_ruimte rar,
|
||||
res_v_alg_ruimte_gegevens rg,
|
||||
res_srtartikel_onrgoed sao,
|
||||
res_v_aanwezigartikel a,
|
||||
res_rsv_artikel ra
|
||||
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_ruimte_key = COALESCE (rr.alg_ruimte_key, rar.alg_ruimte_key)
|
||||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_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;
|
||||
RETURN n_inscope > 0;
|
||||
END;
|
||||
-- Moeten wijzelf misschien dirty worden
|
||||
@@ -826,7 +807,10 @@ AS
|
||||
AS
|
||||
CURSOR prsv_artikelcur
|
||||
IS
|
||||
SELECT res_artikel_key, res_rsv_ruimte_key, res_rsv_artikel_verwijder
|
||||
SELECT res_artikel_key,
|
||||
res_rsv_ruimte_key,
|
||||
res_rsv_artikel_key,
|
||||
res_rsv_artikel_verwijder
|
||||
FROM res_rsv_artikel
|
||||
WHERE res_rsv_artikel_key = prsv_artikel_key
|
||||
FOR UPDATE OF res_rsv_artikel_dirtlevel;
|
||||
@@ -837,7 +821,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)
|
||||
AND NOT res_artikel_in_scope (prsv_artikel.res_artikel_key, prsv_artikel.res_rsv_ruimte_key, prsv_artikel.res_rsv_artikel_key)
|
||||
THEN
|
||||
newdirtlevel := newdirtlevel + 256; -- OutOfScope
|
||||
END IF;
|
||||
|
||||
Reference in New Issue
Block a user