PNBR#32184: reserveren voorzieningen bij evenement: object bij koppelzaal boekt niet lekker.
svn path=/Database/trunk/; revision=25216
This commit is contained in:
@@ -25,9 +25,8 @@ CREATE OR REPLACE PACKAGE res AS
|
||||
PROCEDURE follow_artikel (prsv_ruimte_key IN NUMBER, oldvan IN DATE, oldtot IN DATE);
|
||||
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, palg_ruimte_key IN NUMBER) RETURN BOOLEAN;
|
||||
FUNCTION res_artikel_in_scope (pres_artikel_key IN NUMBER, palg_ruimte_key IN NUMBER) RETURN BOOLEAN;
|
||||
FUNCTION getalg_ruimte_key (pres_rsv_ruimte_key IN NUMBER) RETURN 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 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;
|
||||
@@ -579,8 +578,8 @@ AS
|
||||
|
||||
RETURN dirtlevel;
|
||||
END;
|
||||
-- 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)
|
||||
-- Mag dit res_deel in de (koppel)ruimte van de reservering gereserveerd worden
|
||||
FUNCTION res_deel_in_scope (pres_deel_key IN NUMBER, pres_rsv_ruimte_key IN NUMBER)
|
||||
RETURN BOOLEAN IS
|
||||
result BOOLEAN;
|
||||
n_inscope INTEGER;
|
||||
@@ -589,18 +588,25 @@ AS
|
||||
INTO n_inscope
|
||||
FROM ins_deel d,
|
||||
res_v_aanwezigdeel r,
|
||||
(SELECT d.alg_regio_key,
|
||||
l.alg_district_key,
|
||||
l.alg_locatie_key,
|
||||
g.alg_gebouw_key,
|
||||
v.alg_verdieping_key,
|
||||
r.alg_ruimte_key
|
||||
FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r
|
||||
WHERE r.alg_ruimte_key = palg_ruimte_key
|
||||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||||
AND g.alg_locatie_key = l.alg_locatie_key
|
||||
AND l.alg_district_key = d.alg_district_key) scope,
|
||||
(SELECT d.alg_regio_key,
|
||||
l.alg_district_key,
|
||||
l.alg_locatie_key,
|
||||
g.alg_gebouw_key,
|
||||
v.alg_verdieping_key,
|
||||
r.alg_ruimte_key
|
||||
FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r
|
||||
WHERE r.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 r.alg_verdieping_key = v.alg_verdieping_key
|
||||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||||
AND g.alg_locatie_key = l.alg_locatie_key
|
||||
AND l.alg_district_key = d.alg_district_key) scope,
|
||||
res_v_deelscope ds,
|
||||
res_v_aanwezigdiscipline r_disc
|
||||
WHERE r.res_discipline_key = r_disc.ins_discipline_key
|
||||
@@ -616,7 +622,7 @@ AS
|
||||
OR ds.alg_ruimte_key = scope.alg_ruimte_key
|
||||
OR ds.res_deel_alg_level = -1)
|
||||
AND r.res_deel_key = ds.res_deel_key;
|
||||
DBMS_OUTPUT.put_line ('res_deel_in_scope(' || pres_deel_key || ',' || palg_ruimte_key || ') -->' || n_inscope);
|
||||
DBMS_OUTPUT.put_line ('res_deel_in_scope(' || pres_deel_key || ',' || pres_rsv_ruimte_key || ') -->' || n_inscope);
|
||||
RETURN n_inscope > 0;
|
||||
END;
|
||||
-- Moeten wijzelf misschien dirty worden
|
||||
@@ -682,7 +688,7 @@ AS
|
||||
THEN
|
||||
newdirtlevel := 512; -- Overlap
|
||||
END IF;
|
||||
IF NOT res_deel_in_scope (lres_deel_key, getalg_ruimte_key (lrsv_ruimte_key))
|
||||
IF NOT res_deel_in_scope (lres_deel_key, lrsv_ruimte_key)
|
||||
THEN
|
||||
newdirtlevel := newdirtlevel + 256; -- OutOfScope
|
||||
END IF;
|
||||
@@ -727,19 +733,26 @@ AS
|
||||
-- TODO: Alle ruimtes met Dirty-bitje bekijken
|
||||
end loop;
|
||||
END;
|
||||
-- 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)
|
||||
-- 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)
|
||||
RETURN BOOLEAN IS
|
||||
result BOOLEAN;
|
||||
n_inscope INTEGER;
|
||||
BEGIN
|
||||
DBMS_OUTPUT.put_line ('res_artikel_in_scope(' || pres_artikel_key || ',' || palg_ruimte_key || ')');
|
||||
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 = palg_ruimte_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
|
||||
@@ -779,7 +792,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, getalg_ruimte_key (prsv_artikel.res_rsv_ruimte_key))
|
||||
AND NOT res_artikel_in_scope (prsv_artikel.res_artikel_key, prsv_artikel.res_rsv_ruimte_key)
|
||||
THEN
|
||||
newdirtlevel := newdirtlevel + 256; -- OutOfScope
|
||||
END IF;
|
||||
@@ -924,14 +937,20 @@ AS
|
||||
FROM res_rsv_ruimte rr
|
||||
WHERE rr.res_rsv_ruimte_key = prsv_ruimte_key;
|
||||
|
||||
ruimtekey := getalg_ruimte_key (prsv_ruimte_key);
|
||||
|
||||
SELECT g.alg_locatie_key
|
||||
-- In geval van koppelruimten worden meerdere locatie keys opgeleverd. De locaties zullen echter toch hetzelfde zijn.
|
||||
SELECT MIN(g.alg_locatie_key)
|
||||
INTO locatiekey
|
||||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||||
WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
||||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||||
AND r.alg_ruimte_key = ruimtekey;
|
||||
AND r.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 = prsv_ruimte_key
|
||||
AND ra.res_alg_ruimte_verwijder IS NULL);
|
||||
|
||||
SELECT bez_afspraak_datum, bez_afspraak_eind, alg_locatie_key
|
||||
INTO oldvan, oldtot, oldloc
|
||||
@@ -1011,30 +1030,6 @@ AS
|
||||
END IF;
|
||||
END;
|
||||
|
||||
-- Levert de ALG_RUIMTE_KEY uit res_rsv_ruimte CV
|
||||
-- of de ALG_RUIMTE_KEY van de eerste opstelling/ruimte
|
||||
FUNCTION getalg_ruimte_key (pres_rsv_ruimte_key IN NUMBER)
|
||||
RETURN NUMBER IS
|
||||
alg_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
||||
lres_ruimte_opstel_key res_ruimte_opstelling.res_ruimte_opstel_key%TYPE;
|
||||
BEGIN
|
||||
SELECT alg_ruimte_key, res_ruimte_opstel_key
|
||||
INTO alg_ruimte_key, lres_ruimte_opstel_key
|
||||
FROM res_rsv_ruimte
|
||||
WHERE res_rsv_ruimte_key = pres_rsv_ruimte_key;
|
||||
|
||||
IF alg_ruimte_key IS NULL
|
||||
THEN
|
||||
SELECT MIN (ra.alg_ruimte_key)
|
||||
INTO alg_ruimte_key
|
||||
FROM res_ruimte_opstelling ro, res_alg_ruimte ra
|
||||
WHERE ro.res_ruimte_opstel_key = lres_ruimte_opstel_key
|
||||
AND ro.res_ruimte_key = ra.res_ruimte_key
|
||||
AND ra.res_alg_ruimte_verwijder IS NULL;
|
||||
END IF;
|
||||
|
||||
RETURN alg_ruimte_key;
|
||||
END;
|
||||
FUNCTION getruimteprijs (pres_rsv_ruimte_key IN NUMBER, ignoretotaal IN NUMBER DEFAULT NULL)
|
||||
RETURN NUMBER IS
|
||||
room_price res_ruimte.res_ruimte_prijs%TYPE;
|
||||
|
||||
Reference in New Issue
Block a user