GOUD#37603 Mail naar helpdesk zodra een voorziening gereserveerd wordt (RES2BO)

svn path=/Database/trunk/; revision=34040
This commit is contained in:
Erik Groener
2017-05-29 14:42:53 +00:00
parent 13342db425
commit e4f1594e76

View File

@@ -1858,10 +1858,10 @@ AS
PROCEDURE notifybackoffice (prsvkey IN NUMBER, pcode IN VARCHAR2)
AS
lloc_key alg_locatie.alg_locatie_key%TYPE;
lroom_key alg_ruimte.alg_ruimte_key%TYPE;
lafd_key prs_perslid.prs_afdeling_key%TYPE;
ldisc_key res_disc_params.res_ins_discipline_key%TYPE;
--lloc_key alg_locatie.alg_locatie_key%TYPE;
--lroom_key alg_ruimte.alg_ruimte_key%TYPE;
--lafd_key prs_perslid.prs_afdeling_key%TYPE;
--ldisc_key res_disc_params.res_ins_discipline_key%TYPE;
loms2bo fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
l2bomode fac_srtnotificatie.fac_srtnotificatie_mode%TYPE;
lsrtnoticode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
@@ -1876,75 +1876,6 @@ AS
-- De discipline setting RES_DISC_PARAMS_BONOTIFY geeft aan of de notificatie moeten worden verstuurd.
-- RES_DISC_PARAMS_BONOTIFY: 0=niet, 1=bof.
--
SELECT x.alg_locatie_key
, x.res_discipline_key
, x.prs_afdeling_key
, x.alg_ruimte_key
INTO lloc_key
, ldisc_key
, lafd_key
, lroom_key
FROM (
SELECT rg.alg_locatie_key -- RES_RUIMTE
, rg.res_discipline_key
, p.prs_afdeling_key
, rar.alg_ruimte_key
FROM res_v_res_ruimte_gegevens rg
, res_rsv_ruimte rr
, prs_perslid p
, res_alg_ruimte rar
WHERE rg.res_ruimte_key = rar.res_ruimte_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rg.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND rr.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
UNION
SELECT g.alg_locatie_key -- RES_DEEL
, d.res_discipline_key
, p.prs_afdeling_key
, rr.alg_ruimte_key
FROM res_rsv_ruimte rr
, res_rsv_deel rd
, res_deel d
, ins_deel i
, prs_perslid p
, alg_v_allonroerendgoed g
WHERE i.ins_alg_ruimte_key = g.alg_ruimte_key
AND i.ins_alg_ruimte_type = g.alg_type
AND i.ins_deel_key = d.res_ins_deel_key
AND rd.res_deel_key = d.res_deel_key
AND rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND rr.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
UNION
SELECT rg.alg_locatie_key -- RES_ARTIKEL
, a.res_discipline_key
, p.prs_afdeling_key
, rar.alg_ruimte_key
FROM res_rsv_ruimte rr
, res_rsv_artikel ra
, res_artikel a
, prs_perslid p
, res_ruimte_opstelling ro
, res_alg_ruimte rar
, res_v_res_ruimte_gegevens rg
WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rar.res_alg_ruimte_key
AND ro.res_ruimte_key = rg.res_ruimte_key
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND rr.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
) x;
--
-- Als die er niet is springen we naar de exception.
-- Als die er wel is, gaan we verder
SELECT lcl.x('fac_srtnotificatie_oms', fac_srtnotificatie_key, fac_srtnotificatie_oms)
, fac_srtnotificatie_mode
INTO loms2bo
@@ -1965,72 +1896,141 @@ AS
lnrreceivers := 0;
lreceivers := '';
--
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g
, fac_functie f
, prs_perslid p
, prs_v_afdeling d
WHERE g.fac_functie_key = f.fac_functie_key
AND g.ins_discipline_key = ldisc_key
AND g.prs_perslid_key = p.prs_perslid_key
AND d.prs_afdeling_key = p.prs_afdeling_key
AND ( g.fac_gebruiker_prs_level_write = -1
OR ( g.fac_gebruiker_prs_level_write = 0
AND d.prs_bedrijf_key =
(SELECT aa.prs_bedrijf_key
FROM prs_v_afdeling aa
WHERE aa.prs_afdeling_key = lafd_key
)
)
OR ( g.fac_gebruiker_prs_level_write > 0
AND p.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 = lafd_key
AND aa.niveau = g.fac_gebruiker_prs_level_write
)
)
)
)
-- in ASP: if (params.loc_key>0)
-- Bij ruimte reservering wordt altijd een ruimte ingevuld die is gekoppeld aan alg_ruimte_key. Dus hier op ruimte niveau checken.
AND (g.fac_gebruiker_alg_level_write = -1
OR (g.fac_gebruiker_alg_level_write < 9
AND lroom_key IN
(SELECT alg_ruimte_key
FROM fac_v_my_rooms
WHERE prs_perslid_key = p.prs_perslid_key
AND niveau = fac_gebruiker_alg_level_write)))
AND fac_functie_code = lfunctiecode)
FOR disc
IN (SELECT x.alg_locatie_key
, x.res_discipline_key
, x.prs_afdeling_key
, x.alg_ruimte_key
FROM (
SELECT rg.alg_locatie_key -- RES_RUIMTE
, rg.res_discipline_key
, p.prs_afdeling_key
, ra.alg_ruimte_key
FROM res_v_res_ruimte_gegevens rg
, res_alg_ruimte ra
, res_ruimte_opstelling ro
, res_rsv_ruimte rr
, prs_perslid p
WHERE rg.res_ruimte_key = ro.res_ruimte_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ra.res_ruimte_key = ro.res_ruimte_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND rr.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
UNION
SELECT g.alg_locatie_key -- RES_DEEL
, d.res_discipline_key
, p.prs_afdeling_key
, rr.alg_ruimte_key
FROM res_rsv_ruimte rr
, res_rsv_deel rd
, res_deel d
, ins_deel i
, prs_perslid p
, alg_v_allonroerendgoed g
WHERE i.ins_alg_ruimte_key = g.alg_ruimte_key
AND i.ins_alg_ruimte_type = g.alg_type
AND i.ins_deel_key = d.res_ins_deel_key
AND rd.res_deel_key = d.res_deel_key
AND rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND rd.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
UNION
SELECT rg.alg_locatie_key -- RES_ARTIKEL
, a.res_discipline_key
, p.prs_afdeling_key
, rar.alg_ruimte_key
FROM res_rsv_ruimte rr
, res_rsv_artikel ra
, res_artikel a
, prs_perslid p
, res_ruimte_opstelling ro
, res_alg_ruimte rar
, res_v_res_ruimte_gegevens rg
WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rar.res_alg_ruimte_key
AND ro.res_ruimte_key = rg.res_ruimte_key
AND TRUNC(rr.res_rsv_ruimte_van) = TRUNC(sysdate)
AND ra.res_status_bo_key = 2
AND rr.res_rsv_ruimte_key = prsvkey
) x
)
LOOP
fac.putnotificationsrtprio (NULL,
boer.prs_perslid_key,
lsrtnoticode,
prsvkey,
bericht,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
);
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g
, fac_functie f
, prs_perslid p
, prs_v_afdeling d
WHERE g.fac_functie_key = f.fac_functie_key
AND g.ins_discipline_key = disc.res_discipline_key
AND g.prs_perslid_key = p.prs_perslid_key
AND d.prs_afdeling_key = p.prs_afdeling_key
AND ( g.fac_gebruiker_prs_level_write = -1
OR ( g.fac_gebruiker_prs_level_write = 0
AND d.prs_bedrijf_key =
(SELECT aa.prs_bedrijf_key
FROM prs_v_afdeling aa
WHERE aa.prs_afdeling_key = disc.prs_afdeling_key
)
)
OR ( g.fac_gebruiker_prs_level_write > 0
AND p.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 = disc.prs_afdeling_key
AND aa.niveau = g.fac_gebruiker_prs_level_write
)
)
)
)
-- in ASP: if (params.loc_key>0)
-- Bij ruimte reservering wordt altijd een ruimte ingevuld die is gekoppeld aan alg_ruimte_key. Dus hier op ruimte niveau checken.
AND (g.fac_gebruiker_alg_level_write = -1
OR (g.fac_gebruiker_alg_level_write < 9
AND disc.alg_ruimte_key IN
(SELECT alg_ruimte_key
FROM fac_v_my_rooms
WHERE prs_perslid_key = p.prs_perslid_key
AND niveau = fac_gebruiker_alg_level_write
)))
AND fac_functie_code = lfunctiecode
)
LOOP
fac.putnotificationsrtprio (NULL,
boer.prs_perslid_key,
lsrtnoticode,
prsvkey,
bericht,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
);
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key; -- key van bo-er
--
IF lnrreceivers = 0 THEN
lreceivers := lreceivers1;
ELSE
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key; -- key van bo-er
--
IF lnrreceivers = 0 THEN
lreceivers := lreceivers1;
ELSE
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;
END LOOP;
--
IF lnrreceivers > 0 THEN