NYBU#38051: Bezettingsgraad beschikbare uren klopt niet meer.

svn path=/Website/branches/v2016.2/; revision=31121
This commit is contained in:
Maykel Geerdink
2016-10-18 11:45:52 +00:00
parent ac44253a11
commit c2d489fc0e

View File

@@ -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
});