FMHN#71112: Foutmelding in App bij aanvinken parkeerplaats.
svn path=/Database/trunk/; revision=55226
This commit is contained in:
195
BEZ/BEZ_PAC.SRC
195
BEZ/BEZ_PAC.SRC
@@ -8,7 +8,7 @@ CREATE OR REPLACE PACKAGE bez AS
|
||||
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER);
|
||||
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER, newafspraakkey OUT NUMBER);
|
||||
PROCEDURE sync_resafspraak (presvruimtevan IN NUMBER, presvruimtenaar IN NUMBER);
|
||||
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, palg_gebter_key IN NUMBER);
|
||||
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, puserkey IN NUMBER, palg_gebter_key IN NUMBER);
|
||||
FUNCTION hasparking (pbez_bezoekers_key IN NUMBER) RETURN NUMBER;
|
||||
FUNCTION afssprintf (ps IN VARCHAR2 , p_afspraak_key IN NUMBER) RETURN VARCHAR2 ;
|
||||
FUNCTION bzksprintf (ps IN VARCHAR2 , p_bezoekers_key IN NUMBER) RETURN VARCHAR2 ;
|
||||
@@ -130,7 +130,7 @@ CREATE OR REPLACE PACKAGE BODY bez AS
|
||||
|
||||
IF (hasparking > 0)
|
||||
THEN
|
||||
claim_parking (newbezoekerskey, null);
|
||||
claim_parking (newbezoekerskey, puserkey, null);
|
||||
-- Eventueel: controleren of de nieuwe nu ook een P heeft,
|
||||
-- en zo niet dat dan tracken; goed doordenken!
|
||||
END IF;
|
||||
@@ -203,7 +203,7 @@ CREATE OR REPLACE PACKAGE BODY bez AS
|
||||
END IF;
|
||||
END;
|
||||
|
||||
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, palg_gebter_key IN NUMBER)
|
||||
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, puserkey IN NUMBER, palg_gebter_key IN NUMBER)
|
||||
AS
|
||||
lafspraakkey bez_afspraak.bez_afspraak_key%TYPE;
|
||||
ldeelreskey res_rsv_ruimte.res_rsv_ruimte_key%TYPE;
|
||||
@@ -215,6 +215,7 @@ CREATE OR REPLACE PACKAGE BODY bez AS
|
||||
lparkeerkey res_deel.res_deel_key%TYPE;
|
||||
bez_parkingdiscipline_key NUMBER;
|
||||
lpreposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
|
||||
lautlevel fac_v_webgebruiker.fac_gebruiker_prs_level_write%TYPE;
|
||||
BEGIN
|
||||
-- Claim een (nieuwe) parkeerplaats voor de gegeven bezoeker
|
||||
-- Reserveer voor de tijden van de bijbehorende afspraak cq. res_rsv_ruimte
|
||||
@@ -287,75 +288,143 @@ CREATE OR REPLACE PACKAGE BODY bez AS
|
||||
FROM res_disc_params rdp
|
||||
WHERE rdp.res_ins_discipline_key = bez_parkingdiscipline_key;
|
||||
|
||||
SELECT w.fac_gebruiker_prs_level_write
|
||||
INTO lautlevel
|
||||
FROM fac_v_webgebruiker w,
|
||||
fac_functie f
|
||||
WHERE w.fac_functie_key = f.fac_functie_key
|
||||
AND w.prs_perslid_key = puserkey
|
||||
AND f.fac_functie_code = 'WEB_BEZPAF';
|
||||
|
||||
-- lpreposttime is nu in dagen (in uren / 24 = in dagen).
|
||||
-- In de query wordt rekening gehouden met 1 minuut marge voor afrondfouten (+/- 1 / 1440).
|
||||
-- Heb ik een gebouwkey of terreinkey meegekregen?
|
||||
IF palg_gebter_key IS NULL
|
||||
THEN
|
||||
-- Wat is een vrije parkeerplaats
|
||||
SELECT MIN (res_deel_key) -- logischer maken?
|
||||
INTO lparkeerkey
|
||||
FROM ( SELECT d.res_deel_key,
|
||||
(SELECT MIN (rd.res_deel_key)
|
||||
FROM res_v_aanwezigrsv_deel rd
|
||||
WHERE d.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
|
||||
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key)
|
||||
aantal
|
||||
FROM res_v_aanwezigdeel d, ins_deel id, alg_v_aanwezigterreinsector t
|
||||
WHERE d.res_ins_deel_key = id.ins_deel_key
|
||||
AND id.ins_alg_locatie_key = llocatiekey
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key
|
||||
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
|
||||
-- outer join mag hier niet en dit filter is niet nodig? AND id.ins_alg_ruimte_type = 'T'(+)
|
||||
AND t.prs_afdeling_key IS NULL -- Alleen 'gewone' parkeerplaatsen
|
||||
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
|
||||
-- (bits & (2^(dow-1))) = (2^(dow-1))
|
||||
AND BITAND(d.res_deel_beschikbaar_bits,
|
||||
POWER(2,
|
||||
(fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
|
||||
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
|
||||
AND ( d.res_deel_vervaldatum IS NULL
|
||||
OR d.res_deel_vervaldatum > lbegin)
|
||||
ORDER BY id.ins_deel_upper)
|
||||
WHERE aantal IS NULL;
|
||||
SELECT MIN (res_deel_key) -- logischer maken?
|
||||
INTO lparkeerkey
|
||||
FROM (SELECT d.res_deel_key,
|
||||
(SELECT MIN (rd.res_deel_key)
|
||||
FROM res_v_aanwezigrsv_deel rd
|
||||
WHERE d.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
|
||||
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key) aantal
|
||||
FROM res_v_aanwezigdeel d,
|
||||
ins_deel id,
|
||||
alg_v_aanwezigterreinsector t,
|
||||
alg_locatie l
|
||||
WHERE d.res_ins_deel_key = id.ins_deel_key
|
||||
AND id.ins_alg_locatie_key = llocatiekey
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key
|
||||
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
|
||||
AND id.ins_alg_locatie_key = l.alg_locatie_key
|
||||
-- outer join mag hier niet en dit filter is niet nodig? AND id.ins_alg_ruimte_type = 'T'(+)
|
||||
AND t.alg_terreinsector_key IN
|
||||
(SELECT alg_terreinsector_key
|
||||
FROM alg_v_aanwezigterreinsector t2
|
||||
WHERE (lautlevel < 0
|
||||
OR (lautlevel = 9 AND t2.prs_afdeling_key IS NULL)
|
||||
OR (lautlevel > 0
|
||||
AND (t2.prs_afdeling_key IS NULL
|
||||
OR t2.prs_afdeling_key IN
|
||||
(SELECT prs_afdeling_key
|
||||
FROM prs_v_afdeling_familie a
|
||||
WHERE a.prs_afdeling_elder_key IN
|
||||
(SELECT aa.prs_afdeling_elder_key
|
||||
FROM prs_v_afdeling_familie aa
|
||||
WHERE aa.prs_afdeling_key = (SELECT prs_afdeling_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_key = puserkey)
|
||||
AND aa.niveau = lautlevel))))
|
||||
OR (lautlevel = 0
|
||||
AND (t2.prs_afdeling_key IS NULL
|
||||
OR t2.prs_afdeling_key IN
|
||||
(SELECT a.prs_afdeling_key
|
||||
FROM prs_v_afdeling a
|
||||
WHERE a.prs_bedrijf_key = (SELECT a.prs_bedrijf_key
|
||||
FROM prs_perslid p,
|
||||
prs_afdeling a
|
||||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND p.prs_perslid_key = puserkey))))))
|
||||
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
|
||||
-- (bits & (2^(dow-1))) = (2^(dow-1))
|
||||
AND BITAND(d.res_deel_beschikbaar_bits, POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
|
||||
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
|
||||
AND (d.res_deel_vervaldatum IS NULL OR d.res_deel_vervaldatum > lbegin)
|
||||
AND (l.alg_locatie_vervaldatum IS NULL OR l.alg_locatie_vervaldatum > TRUNC(lbegin))
|
||||
AND (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(lbegin))
|
||||
ORDER BY id.ins_deel_upper)
|
||||
WHERE aantal IS NULL;
|
||||
ELSE
|
||||
-- Wat is een vrije parkeerplaats
|
||||
-- Er is een gebouwkey of terreinkey meegegeven. Hierbinnen moet de parkeerplaats gereserveerd worden.
|
||||
SELECT MIN (res_deel_key) -- logischer maken?
|
||||
INTO lparkeerkey
|
||||
FROM ( SELECT d.res_deel_key,
|
||||
(SELECT MIN (rd.res_deel_key)
|
||||
FROM res_v_aanwezigrsv_deel rd
|
||||
WHERE d.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
|
||||
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key)
|
||||
aantal
|
||||
FROM res_v_aanwezigdeel d, ins_deel id, alg_v_allonroerendgoed og
|
||||
WHERE d.res_ins_deel_key = id.ins_deel_key
|
||||
AND id.ins_alg_locatie_key = llocatiekey
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key
|
||||
AND (id.ins_alg_ruimte_key = og.alg_ruimte_key
|
||||
OR id.ins_alg_ruimte_key = og.alg_terreinsector_key)
|
||||
AND (og.alg_gebouw_key = palg_gebter_key
|
||||
OR og.alg_terreinsector_key = palg_gebter_key)
|
||||
AND id.ins_alg_ruimte_type IN ('R', 'T')
|
||||
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
|
||||
-- (bits & (2^(dow-1))) = (2^(dow-1))
|
||||
AND BITAND(d.res_deel_beschikbaar_bits,
|
||||
POWER(2,
|
||||
(fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
|
||||
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
|
||||
AND ( d.res_deel_vervaldatum IS NULL
|
||||
OR d.res_deel_vervaldatum > lbegin)
|
||||
ORDER BY id.ins_deel_upper)
|
||||
WHERE aantal IS NULL;
|
||||
SELECT MIN (res_deel_key) -- logischer maken?
|
||||
INTO lparkeerkey
|
||||
FROM (SELECT d.res_deel_key,
|
||||
(SELECT MIN (rd.res_deel_key)
|
||||
FROM res_v_aanwezigrsv_deel rd
|
||||
WHERE d.res_deel_key = rd.res_deel_key
|
||||
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
|
||||
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
|
||||
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key)
|
||||
aantal
|
||||
FROM res_v_aanwezigdeel d,
|
||||
ins_deel id,
|
||||
alg_v_allonroerendgoed og,
|
||||
alg_v_aanwezigterreinsector t,
|
||||
alg_locatie l
|
||||
WHERE d.res_ins_deel_key = id.ins_deel_key
|
||||
AND id.ins_alg_locatie_key = llocatiekey
|
||||
AND d.res_discipline_key = bez_parkingdiscipline_key
|
||||
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
|
||||
AND id.ins_alg_locatie_key = l.alg_locatie_key
|
||||
AND (id.ins_alg_ruimte_key = og.alg_ruimte_key
|
||||
OR id.ins_alg_ruimte_key = og.alg_terreinsector_key)
|
||||
AND (og.alg_gebouw_key = palg_gebter_key -- De talbel alg_gebouw heeft geen referentie naar de afdelingen tabel (geen prs_afdeling_key kolom).
|
||||
OR (og.alg_terreinsector_key = palg_gebter_key
|
||||
AND og.alg_terreinsector_key IN
|
||||
(SELECT alg_terreinsector_key
|
||||
FROM alg_v_aanwezigterreinsector t2
|
||||
WHERE (lautlevel < 0
|
||||
OR (lautlevel = 9 AND t2.prs_afdeling_key IS NULL)
|
||||
OR (lautlevel > 0
|
||||
AND (t2.prs_afdeling_key IS NULL
|
||||
OR t2.prs_afdeling_key IN
|
||||
(SELECT prs_afdeling_key
|
||||
FROM prs_v_afdeling_familie a
|
||||
WHERE a.prs_afdeling_elder_key IN
|
||||
(SELECT aa.prs_afdeling_elder_key
|
||||
FROM prs_v_afdeling_familie aa
|
||||
WHERE aa.prs_afdeling_key = (SELECT prs_afdeling_key
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_key = puserkey)
|
||||
AND aa.niveau = lautlevel))))
|
||||
OR (lautlevel = 0
|
||||
AND (t2.prs_afdeling_key IS NULL
|
||||
OR t2.prs_afdeling_key IN
|
||||
(SELECT a.prs_afdeling_key
|
||||
FROM prs_v_afdeling a
|
||||
WHERE a.prs_bedrijf_key = (SELECT a.prs_bedrijf_key
|
||||
FROM prs_perslid p,
|
||||
prs_afdeling a
|
||||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND p.prs_perslid_key = puserkey))))))))
|
||||
AND id.ins_alg_ruimte_type IN ('R', 'T')
|
||||
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
|
||||
-- (bits & (2^(dow-1))) = (2^(dow-1))
|
||||
AND BITAND(d.res_deel_beschikbaar_bits, POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
|
||||
POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))
|
||||
AND (d.res_deel_vervaldatum IS NULL OR d.res_deel_vervaldatum > lbegin)
|
||||
AND (l.alg_locatie_vervaldatum IS NULL OR l.alg_locatie_vervaldatum > TRUNC(lbegin))
|
||||
AND (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(lbegin))
|
||||
ORDER BY id.ins_deel_upper)
|
||||
WHERE aantal IS NULL;
|
||||
END IF;
|
||||
|
||||
IF lparkeerkey IS NOT NULL
|
||||
|
||||
Reference in New Issue
Block a user