NYBU#38051: Bezettingsgraad beschikbare uren klopt niet meer.
svn path=/Website/branches/v2016.2/; revision=31121
This commit is contained in:
@@ -148,91 +148,113 @@ function res_list_ppi(pautfunction, params)
|
||||
if (room_key_arr)
|
||||
sql_room_key = " AND beschik.res_discipline_key IN (" + room_key_arr.join(",") + ")";
|
||||
|
||||
// leuke functie om voor alle uren een resultaat op te leveren
|
||||
// zie res_list_ppi.inc;7 voor wat er gegenereerd wordt
|
||||
settings.overrule_setting("res_rap_t1", S("res_rap_t1") >= 0 ? S("res_rap_t1") : S("res_t1"));
|
||||
settings.overrule_setting("res_rap_t2", S("res_rap_t2") >= 0 ? S("res_rap_t2") : S("res_t2"));
|
||||
// Leuke functie om voor alle uren een resultaat op te leveren.
|
||||
// Zie res_list_ppi.inc;7 voor wat er gegenereerd wordt.
|
||||
var rap_t1_overruled = S("res_rap_t1") < 0;
|
||||
var rap_t2_overruled = S("res_rap_t2") < 0;
|
||||
settings.overrule_setting("res_rap_t1", rap_t1_overruled? S("res_t1") : S("res_rap_t1"));
|
||||
settings.overrule_setting("res_rap_t2", rap_t2_overruled? S("res_t2") : S("res_rap_t2"));
|
||||
|
||||
function forhours(fn)
|
||||
{
|
||||
var i;
|
||||
var res = []
|
||||
for (i = S("res_rap_t1"); i < S("res_rap_t2"); i++)
|
||||
// Wel met hele uren rekenen, anders geeft dat hier problemen.
|
||||
for (i = Math.floor(S("res_rap_t1")); i < Math.floor(S("res_rap_t2") + 0.6); i++)
|
||||
res.push(fn.call(null, i));
|
||||
return res;
|
||||
}
|
||||
//__Log(forhours(function (h) { return String(h); }));
|
||||
|
||||
var sql = " SELECT beschik.alg_ruimte_key"
|
||||
+ ", beschik.res_discipline_key"
|
||||
+ " , beschik.res_discipline_key"
|
||||
+ (dayschedule
|
||||
? "," + forhours(function (h) { return "b" + String(h); })
|
||||
: ", ROUND(bezetting,2) bezetting")
|
||||
+ ", ROUND(beschikbaar,2) beschikbaar"
|
||||
+ ", di.alg_regio_key"
|
||||
+ ", l.alg_district_key"
|
||||
+ ", l.alg_locatie_key"
|
||||
+ ", alg_gebouw_key"
|
||||
+ ", alg_verdieping_key"
|
||||
? " ," + forhours(function (h) { return "b" + String(h); })
|
||||
: " , ROUND(bezetting,2) bezetting")
|
||||
+ " , ROUND(beschikbaar,2) beschikbaar"
|
||||
+ " , di.alg_regio_key"
|
||||
+ " , l.alg_district_key"
|
||||
+ " , l.alg_locatie_key"
|
||||
+ " , alg_gebouw_key"
|
||||
+ " , alg_verdieping_key"
|
||||
+ " FROM (SELECT alg_ruimte_key"
|
||||
+ ", rarg.res_discipline_key"
|
||||
+ (dayschedule ? ("," + forhours(function (h) { return " SUM(n" + String(h) + ") b" + String(h); }))
|
||||
: ", SUM(GREATEST(LEAST(to_number(TO_CHAR(res_rsv_ruimte_tot, 'SSSSS')) / 3600, COALESCE(res_ruimte_eindtijd, " + S("res_t2") + ")," + S("res_rap_t2") + "),"+S("res_rap_t1")+")"
|
||||
+ " - LEAST(GREATEST(to_number(TO_CHAR(res_rsv_ruimte_van, 'SSSSS')) / 3600, COALESCE(res_ruimte_begintijd, " + S("res_t1") + ")," + S("res_rap_t1") + "),"+ S("res_rap_t2") +")) bezetting")
|
||||
+ " FROM ("
|
||||
+ " SELECT r.res_rsv_ruimte_key"
|
||||
+ ", ra.alg_ruimte_key"
|
||||
+ ", ra.res_alg_ruimte_key"
|
||||
+ ", rr.res_discipline_key"
|
||||
+ " , rarg.res_discipline_key"
|
||||
+ (dayschedule
|
||||
? (" ," + forhours(function (h) { return " SUM(n" + String(h) + ") b" + String(h); }))
|
||||
: " , SUM(GREATEST(LEAST(to_number(TO_CHAR(res_rsv_ruimte_tot, 'SSSSS')) / 3600"
|
||||
+ " , COALESCE(res_ruimte_eindtijd, " + S("res_t2") + ")"
|
||||
+ " ," + S("res_rap_t2")
|
||||
+ " )"
|
||||
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
|
||||
+ " )"
|
||||
+ " - LEAST(GREATEST(to_number(TO_CHAR(res_rsv_ruimte_van, 'SSSSS')) / 3600"
|
||||
+ " , COALESCE(res_ruimte_begintijd, " + S("res_t1") + ")"
|
||||
+ " ," + S("res_rap_t1")
|
||||
+ " )"
|
||||
+ " ," + (rap_t2_overruled? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
|
||||
+ " )"
|
||||
+ " ) bezetting")
|
||||
+ " FROM (SELECT r.res_rsv_ruimte_key"
|
||||
+ " , ra.alg_ruimte_key"
|
||||
+ " , ra.res_alg_ruimte_key"
|
||||
+ " , rr.res_discipline_key"
|
||||
+ (dayschedule
|
||||
? " ," + forhours(function (h) { return "r.n" + String(h); })
|
||||
: "")
|
||||
+ " , r.res_rsv_ruimte_van"
|
||||
+ " , r.res_rsv_ruimte_tot"
|
||||
+ " , ra.res_alg_ruimte_aanmaak"
|
||||
+ " , ra.res_alg_ruimte_verwijder"
|
||||
+ " , rr.res_ruimte_begintijd"
|
||||
+ " , rr.res_ruimte_eindtijd"
|
||||
+ " FROM "
|
||||
+ (dayschedule
|
||||
? " res_v_res_dag_bezetting r"
|
||||
: " res_rsv_ruimte r")
|
||||
+ " , res_ruimte_opstelling ro"
|
||||
+ " , res_ruimte rr"
|
||||
+ " , res_alg_ruimte ra"
|
||||
+ " WHERE r.res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND r.res_status_fo_key IN (1, 2)"
|
||||
+ " AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
|
||||
+ " AND ro.res_ruimte_key = rr.res_ruimte_key"
|
||||
+ " AND rr.res_ruimte_key = ra.res_ruimte_key) rarg"
|
||||
+ " WHERE res_rsv_ruimte_van BETWEEN " + ora_date3 + " AND " + ora_date4
|
||||
+ " AND TO_CHAR(res_rsv_ruimte_van, 'd') >= 2" // --veronderstelt NLS_TERRITORY='AMERICA', 2 is maandag
|
||||
+ " AND TO_CHAR(res_rsv_ruimte_van, 'd') <= 6"
|
||||
+ " AND TRUNC(res_rsv_ruimte_van) NOT IN (SELECT mld_vrije_dagen_datum FROM mld_vrije_dagen)"
|
||||
+ " AND rarg.res_alg_ruimte_aanmaak <= " + ora_date2
|
||||
+ " AND (rarg.res_alg_ruimte_verwijder IS NULL"
|
||||
+ " OR rarg.res_alg_ruimte_verwijder >= " + ora_date1 + ")"
|
||||
+ " GROUP BY alg_ruimte_key"
|
||||
+ " , rarg.res_discipline_key) bez"
|
||||
+ " , (SELECT DISTINCT rr1.res_discipline_key"
|
||||
+ " , ra.alg_ruimte_key"
|
||||
+ " , ((fac.Count_Work_Days(" + ora_date1 + "-1 , " + ora_date2 + "))"
|
||||
+ (dayschedule
|
||||
? "," + forhours(function (h) { return "r.n" + String(h); })
|
||||
: "")
|
||||
+ ", r.res_rsv_ruimte_van"
|
||||
+ ", r.res_rsv_ruimte_tot"
|
||||
+ ", ra.res_alg_ruimte_aanmaak"
|
||||
+ ", ra.res_alg_ruimte_verwijder"
|
||||
+ ", rr.res_ruimte_begintijd"
|
||||
+ ", rr.res_ruimte_eindtijd"
|
||||
+ " FROM "
|
||||
+ (dayschedule
|
||||
? "res_v_res_dag_bezetting r"
|
||||
: "res_rsv_ruimte r")
|
||||
+ ", res_ruimte_opstelling ro"
|
||||
+ ", res_ruimte rr"
|
||||
+ ", res_alg_ruimte ra"
|
||||
+ " WHERE r.res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND r.res_status_fo_key IN (1, 2)"
|
||||
+ " AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
|
||||
+ " AND ro.res_ruimte_key = rr.res_ruimte_key"
|
||||
+ " AND rr.res_ruimte_key = ra.res_ruimte_key) rarg"
|
||||
+ " WHERE res_rsv_ruimte_van BETWEEN " + ora_date3 + " AND " + ora_date4
|
||||
+ " AND TO_CHAR(res_rsv_ruimte_van, 'd') >= 2" // --veronderstelt NLS_TERRITORY='AMERICA', 2 is maandag
|
||||
+ " AND TO_CHAR(res_rsv_ruimte_van, 'd') <= 6"
|
||||
+ " AND TRUNC(res_rsv_ruimte_van) NOT IN (SELECT mld_vrije_dagen_datum FROM mld_vrije_dagen)"
|
||||
+ " AND rarg.res_alg_ruimte_aanmaak <= " + ora_date2
|
||||
+ " AND (rarg.res_alg_ruimte_verwijder IS NULL"
|
||||
+ " OR rarg.res_alg_ruimte_verwijder >= " + ora_date1 + ")"
|
||||
+ " GROUP BY alg_ruimte_key"
|
||||
+ ", rarg.res_discipline_key) bez"
|
||||
+ ", (SELECT DISTINCT rr1.res_discipline_key"
|
||||
+ ", ra.alg_ruimte_key"
|
||||
+ ", ((fac.Count_Work_Days(" + ora_date1 + "-1 , " + ora_date2 + "))"
|
||||
+ (dayschedule
|
||||
? ""
|
||||
: " * (LEAST(COALESCE(rr1.res_ruimte_eindtijd, " + S("res_t2") + ")," + S("res_rap_t2") + ") - GREATEST(COALESCE(rr1.res_ruimte_begintijd, " + S("res_t1") + ")," + S("res_rap_t1") + ")") + ")) beschikbaar"
|
||||
+ " FROM res_ruimte rr1, res_alg_ruimte ra "
|
||||
+ " WHERE rr1.res_ruimte_key = ra.res_ruimte_key "
|
||||
+ " AND ra.res_alg_ruimte_aanmaak <= " + ora_date2
|
||||
+ " AND ( ra.res_alg_ruimte_verwijder IS NULL "
|
||||
+ " OR ra.res_alg_ruimte_verwijder >= " + ora_date1 + ")) beschik"
|
||||
+ ", alg_v_ruimte_gegevens_all ruimte_geg"
|
||||
+ ", alg_locatie l"
|
||||
+ ", alg_district di"
|
||||
? ""
|
||||
: " * (LEAST(COALESCE(rr1.res_ruimte_eindtijd, " + S("res_t2") + ")"
|
||||
+ " ," + (rap_t2_overruled? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
|
||||
+ " )"
|
||||
+ " - GREATEST(COALESCE(rr1.res_ruimte_begintijd, " + S("res_t1") + ")"
|
||||
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
|
||||
+ " )"
|
||||
+ " )")
|
||||
+ " ) beschikbaar"
|
||||
+ " FROM res_ruimte rr1"
|
||||
+ " , res_alg_ruimte ra"
|
||||
+ " WHERE rr1.res_ruimte_key = ra.res_ruimte_key"
|
||||
+ " AND ra.res_alg_ruimte_aanmaak <= " + ora_date2
|
||||
+ " AND (ra.res_alg_ruimte_verwijder IS NULL"
|
||||
+ " OR ra.res_alg_ruimte_verwijder >= " + ora_date1 + ")) beschik"
|
||||
+ " , alg_v_ruimte_gegevens_all ruimte_geg"
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_district di"
|
||||
+ " WHERE beschik.alg_ruimte_key = bez.alg_ruimte_key(+)"
|
||||
+ " AND beschik.res_discipline_key = bez.res_discipline_key(+)"
|
||||
+ " AND beschik.alg_ruimte_key = ruimte_geg.alg_ruimte_key"
|
||||
+ " AND ruimte_geg.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND l.alg_district_key = di.alg_district_key"
|
||||
+ " AND beschik.res_discipline_key = bez.res_discipline_key(+)"
|
||||
+ " AND beschik.alg_ruimte_key = ruimte_geg.alg_ruimte_key"
|
||||
+ " AND ruimte_geg.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND l.alg_district_key = di.alg_district_key"
|
||||
+ sql_room_key
|
||||
+ sql_dis
|
||||
+ sql_loc
|
||||
@@ -655,13 +677,13 @@ function forhours(fn)
|
||||
if (res_rap_t1h < 10) res_rap_t1h = "0" + res_rap_t1h;
|
||||
var res_rap_t1m = Math.floor((S("res_rap_t1") - res_rap_t1h)*60);
|
||||
if (res_rap_t1m < 10) res_rap_t1m = "0" + res_rap_t1m;
|
||||
var res_rap_t1s = res_rap_t1h+ ":" + res_rap_t1m
|
||||
var res_rap_t1s = res_rap_t1h + ":" + res_rap_t1m
|
||||
|
||||
var res_rap_t2h = Math.floor(S("res_rap_t2"));
|
||||
if (res_rap_t2h < 10) res_rap_t2h = "0" + res_rap_t2h;
|
||||
var res_rap_t2m = Math.floor((S("res_rap_t2") - res_rap_t2h)*60);
|
||||
if (res_rap_t2m < 10) res_rap_t2m = "0" + res_rap_t2m;
|
||||
var res_rap_t2s = res_rap_t2h+ ":" + res_rap_t2m
|
||||
var res_rap_t2s = res_rap_t2h + ":" + res_rap_t2m
|
||||
|
||||
|
||||
var doTotals = (groupres != 16 && groupres != 18 && groupres != 19)
|
||||
@@ -672,7 +694,7 @@ function forhours(fn)
|
||||
totalShow: (doTotals ? fntotalShow : null),
|
||||
filterParams: params,
|
||||
outputmode: outputmode,
|
||||
title: L("lcl_res_PPI_title")+" "+L("lcl_res_PPI_fromto").format(res_rap_t1s, res_rap_t2s) ,
|
||||
title: L("lcl_res_PPI_title") + " " + L("lcl_res_PPI_fromto").format(res_rap_t1s, res_rap_t2s),
|
||||
showAll: showall
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user