Files
Facilitor/APPL/RES/res_list.inc
2009-11-02 15:44:52 +00:00

1703 lines
78 KiB
C++

<% /*
$Revision: 2 $
$Modtime: 2-11-09 17:20 $
File: res_list.inc
Description: Show an overview of reservations in list-form,
which meets with the given requirements
Parameters:
urole user role (fe, fo, bo, mi)
outputmode behave in an output mode, print to 0 = screen, 1 = printer, 2 = excel, etc.
showall show all orders which meets with the given requirements
datefrom search for reservations at the selected date-month-year
dateto search for reservations at the selected date-month-year
res_key search for reservation with the given reservation key
loc_key search for reservations for the selected location
bld_key search for reservations for the selected building
floor_key search for reservations for the selected floor
room_key search for reservations for the selected room
act_key search for reservations witch the selected activity
searchtext search for reservations with the searchtext in description or remark
kp search for reservations with the given account text in account description
requestor_key search for reservations for selected requestor
host_key search for reservations for selected host
dep_key search for reservations for the selected department
room_key_str search for reservations with the selected room categories/types
obj_key_str search for reservations with the selected objects categories/types
art_key_str search for reservations with the selected articles categories/types
article_str search for reservations with the selected articles
artgroup search for reservations with the selected article group
resstatus search for reservations with the selected reservation FO status
roomcat search for room reservations
objcat search for object reservations
artcat search for article reservations
res_actual search for actual reservations
res_deleted search for res_deleted reservations
res_open search for reservations which are open
res_closed search for reservations which are closed
sortout sort out the reservations by
groupres groupres the reservations by
Context: Search action from res_fefo_search.asp or res_bomi_search form
Note: @@TODO
ZOU NOG MOETEN WORDEN GESPLITST IN res_list.inc en res_fo_search_list.asp en res_bomi_search_list.asp
waarbij de formfields worden vertaald naar filterparameters
TODO:
de afhankelijkheden van urole moeten er uit! Deze functie levert een lijst op die voldoet aan de criteria
en gegeven de user en de autorisatie. Punt!
*/
%>
<!-- #include file="../Shared/escape.inc" -->
<!-- #include file="../Shared/discxalg3d.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="./res.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="../Shared/datetime.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["wpos.js", "../RES/res_list.js"]
});
function res_list (pautfunction, params)
{ // VALIDATE AND PREPARE
// Als een parameter niet gedefinieerd of null is, dan doet-ie niks
// anders wordt die verondersteld een zinvolle waarde te hebben
// NB: -1 is vaak geen zinvolle waarde; null had het dan moeten zijn!
// Valid and supported parameters are:
// params.urole : the usuals two-letter lowercase string
// params.outputmode : print to 0 = screen, 1 = printer, 2 = excel, etc.
// params.showall : boolean (true | false)
// params.datefrom : date
// params.dateto : date
// params.res_key : key
// params.loc_key : key
// params.bld_key : key
// params.floor_key : key
// params.room_key : key
// params.act_key : key
// params.searchtxt : wildcard string
// params.dep_key : key
// params.kp : wildcard string
// params.requestor_key : key
// params.host_key : key
// params.dep_key : key
// params.room_key_str : string met keys
// params.obj_key_str : string met keys
// params.art_key_str : string met keys
// params.article_str : string met keys
// params.artgroup : string met keys
// params.resstatus : key
// params.roomcat : boolean (true | false)
// params.objcat : boolean (true | false)
// params.artcat : boolean (true | false)
// params.res_actual : boolean (true | false)
// params.res_deleted : boolean (true | false)
// params.res_open : boolean (true | false)
// params.res_closed : boolean (true | false)
// params.sortout : key
// params.groupres : key
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation(pautfunction);
var urole = params.urole;
var fronto = (urole == "fo");
var backo = (urole == "bo");
var minfo = (urole == "mi"); // NOT APPLICABLE?
var frontend = (urole == "fe" || (!fronto & !backo & !minfo));
// Voor resulttable de globalen zetten; zou nog anders moeten.
var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
var print = (outputmode == 1);
var excel = (outputmode == 2);
var formString = params.formString;
var showall = params.showall;
var datefrom = params.datefrom;
var dateto = params.dateto;
var res_key = params.res_key;
var loc_key = params.loc_key;
var bld_key = params.bld_key;
var floor_key = params.floor_key;
var room_key = params.room_key;
var act_key = params.act_key;
var searchtext = params.searchtext;
var dep_key = params.dep_key;
var kp = params.kp;
var requestor_key = params.requestor_key;
var host_key = params.host_key;
var dep_key = params.dep_key;
var room_key_str = params.room_key_str;
var obj_key_str = params.obj_key_str;
var art_key_str = params.art_key_str;
var article_str = params.article_str;
var artgroup = params.artgroup;
var resstatus = params.resstatus;
var roomcat = params.roomcat;
var objcat = params.objcat;
var artcat = params.artcat;
var res_actual = params.res_actual;
var res_deleted = params.res_deleted;
var res_open = params.res_open;
var res_closed = params.res_closed;
var sortout = params.sortout;
var groupres = params.groupres;
%>
<html>
<head>
<%
FCLTHeader.Generate({ outputmode: outputmode });
%>
<script type="text/javascript">
var urole = "<%=urole%>";
var groupres = "<%=groupres%>";
var print = (<%=print? 1 : 0%> == 1);
var excel = (<%=excel? 1 : 0%> == 1);
var lcl_reservation = "<%=lcl_reservation%>";
var user_naam = "<%=user.naam()%>";
var todayString = "<%=toDateString(new Date())%>";
// For BO/MI functions
var res_closed = (<%=res_closed? 1 : 0%> == 1)
</script>
</head>
<body id="listbody">
<%
/***** Build sql *****/
thePerslid = " WITH"
+ " thePerslid AS"
+ " (SELECT prs_perslid_key"
+ ", prs_afdeling_key"
+ ", " + prs_pers_string + " naam FROM prs_perslid p)"
if (frontend || fronto)
{ // Make ResultsetTable for FE or FO
// RES_RSV_ROOM
sqlR = "";
sqlR = "SELECT rm.RES_RESERVERING_KEY"
+ ", rm.res_rsv_ruimte_key"
+ ", rm.res_rsv_ruimte_omschrijving descr"
+ ", rm.res_status_fo_key, r.res_ruimte_nr waar"
+ ", res_rsv_ruimte_van tvan"
+ ", res_rsv_ruimte_tot ttot"
+ ", pcontact.naam contact"
+ ", res_rsv_ruimte_contact_key"
+ ", res_rsv_ruimte_host_key"
+ ", res_status_fo_omschrijving"
+ ", 'R' AS restype"
+ ", rm.res_rsv_ruimte_bezoekers bezoekers"
+ ", rm.res_rsv_ruimte_verwijder" // Als verwijderd dan wordt hij readonly
+ ", (SELECT prs_afdeling_key FROM prs_perslid WHERE prs_perslid_key = rm.res_rsv_ruimte_host_key) prs_afdeling_key"
+ ", rm.res_rsv_ruimte_opmerking remark"
+ ", rm.res_rsv_ruimte_volgnr"
+ ", (SELECT naam"
+ " FROM res_reservering r"
+ " , thePerslid pUser"
+ " WHERE r.res_reservering_user_key = pUser.prs_perslid_key"
+ " AND r.res_reservering_key = rm.res_reservering_key) res_user"
+ " FROM Res_rsv_ruimte rm"
+ ", res_ruimte_opstelling ro"
+ ", res_ruimte r"
+ ", alg_v_ruimte_gegevens rg"
+ ", alg_district di"
+ ", res_v_aanwezigalg_ruimte rar"
+ ", theperslid pcontact"
+ ", res_status_fo sf"
+ " WHERE rm.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
+ " AND rg.alg_district_key = di.alg_district_key"
+ " AND ro.res_ruimte_key = r.res_ruimte_key"
+ " AND r.res_ruimte_key = rar.res_ruimte_key"
+ " AND rar.alg_ruimte_key = rg.alg_ruimte_key"
+ " AND rar.alg_ruimte_key = (SELECT MIN (rar2.alg_ruimte_key)"
+ " FROM res_v_aanwezigalg_ruimte rar2"
+ " WHERE rar2.res_ruimte_key = r.res_ruimte_key)"
+ " AND rm.res_rsv_ruimte_contact_key = pcontact.prs_perslid_key"
+ " AND rm.res_status_fo_key = sf.res_status_fo_key"
+ (frontend
? " AND (rm.res_rsv_ruimte_user_key = " + user_key + " OR rm.res_rsv_ruimte_contact_key = " + user_key + ")"
: "");
if (res_actual && !res_deleted)
sqlR += " AND rm.res_rsv_ruimte_verwijder IS NULL";
if (!res_actual && res_deleted)
sqlR += " AND rm.res_rsv_ruimte_verwijder IS NOT NULL";
var sql_date = null;
if (!res_key)
{ // If there is no res_key then determine sql_date
// If from and to are given both are used
// If only one of from and to are give, this is used as a (1) day, not an half open interval
// 20-10-2009 9:46:28/PF
datefrom = datefrom || dateto;
dateto = dateto || datefrom;
if (datefrom && dateto)
{
var ora_date1 = datefrom.beginToSQL();
var ora_date2 = dateto.endToSQL();
sql_date = " AND res_rsv_ruimte_van < " + ora_date2 + " AND res_rsv_ruimte_tot > " + ora_date1;
}
if (sql_date)
sqlR += sql_date;
//var ora_date1 = datefrom.beginToSQL();
//var ora_date2 = dateto.endToSQL();
//sql_date = ora_date1 + " AND " + ora_date2;
//sqlR += " AND rm.res_rsv_ruimte_van BETWEEN " + ora_date1 + " AND " + ora_date2;
}
if (room_key_str)
sqlR += " AND r.res_discipline_key IN (" + room_key_str + ")";
if (fronto)
{
var sql_onrgoed = "";
if (room_key)
{
sql_onrgoed = " AND rg.ALG_RUIMTE_KEY = " + room_key;
}
else
{
if (floor_key) {
sql_onrgoed = " AND rg.alg_verdieping_key = " + floor_key;
} else {
if (bld_key) {
sql_onrgoed = " AND rg.alg_gebouw_key = " + bld_key;
} else {
if (loc_key) {
sql_onrgoed = " AND rg.alg_locatie_key = " + loc_key;
}
}
}
}
if (sql_onrgoed != "" )
sqlR += sql_onrgoed;
sqlR = discxalg3d(sqlR,
"r.res_discipline_key",
"di.alg_regio_key",
"rg.alg_district_key",
"rg.alg_locatie_key",
"rg.alg_gebouw_key",
"rg.alg_verdieping_key",
"rg.alg_ruimte_key",
pautfunction,
"");
}
else
{ // frontend
prsKeys = "" + user_key;
if (prs_collegas_used == 1)
{ // String met collega keys voor de tijd bepalen want sql string duurde te lang.
sql_collegas = " SELECT prs_perslid_key"
+ " FROM prs_collega"
+ " WHERE prs_perslid_key_alt = " + user_key;
oRs = Oracle.Execute(sql_collegas);
while (!oRs.eof)
{
prsKeys += "," + oRs(0).value;
oRs.MoveNext();
}
}
sqlR += " AND (res_rsv_ruimte_contact_key IN (" + prsKeys + ")"
+ " OR res_rsv_ruimte_host_key IN (" + prsKeys + "))";
}
// in 4.70 kunnen we direct een regel per deelreservering bepalen
sqlDeelCount = "SELECT rvard.res_rsv_ruimte_key"
+ ", COUNT(rvard.res_rsv_ruimte_key) aantal"
+ ", resd.res_discipline_key"
+ (res_deleted
? " FROM res_rsv_deel rvard"
: " FROM res_v_aanwezigrsv_deel rvard")
+ ", res_deel resd"
+ " WHERE rvard.res_deel_key = resd.res_deel_key"
+ " GROUP BY rvard.res_rsv_ruimte_key"
+ ", rvard.res_rsv_deel_van"
+ ", resd.res_discipline_key";
// RES_RSV_DEEL in alg_ruimte
sqlDe = "SELECT DISTINCT rvarr.res_reservering_key"
+ ", rvarr.res_rsv_ruimte_key"
+ ", res_rsv_ruimte_omschrijving descr"
+ ", rvarr.res_status_fo_key"
+ ", alg_ruimte_aanduiding waar"
+ ", res_rsv_ruimte_van tvan"
+ ", res_rsv_ruimte_tot ttot"
+ ", pcontact.naam contact"
+ ", res_rsv_ruimte_contact_key"
+ ", res_rsv_ruimte_host_key"
+ ", res_status_fo_omschrijving"
+ ", 'CV' AS restype"
+ ", res_rsv_ruimte_bezoekers bezoekers"
+ ", res_rsv_ruimte_verwijder res_rsv_ruimte_verwijder"
+ ", pHost.prs_afdeling_key"
+ ", res_rsv_ruimte_opmerking remark"
+ ", res_rsv_ruimte_volgnr"
+ ", pUser.naam res_user"
+ " FROM (" + sqlDeelCount + ") rd"
+ ", alg_v_ruimte_gegevens rg"
+ ", res_rsv_ruimte rvarr"
+ ", res_status_fo sfo"
+ ", res_reservering r"
+ ", thePerslid pUser"
+ ", thePerslid pcontact"
+ ", thePerslid pHost"
+ ", alg_district di"
+ " WHERE rd.res_rsv_ruimte_key = rvarr.res_rsv_ruimte_key"
+ " AND rvarr.alg_ruimte_key = rg.alg_ruimte_key" // Automatically filters RES_DEEL's on ALG_RUIMTE
+ " AND rg.alg_district_key = di.alg_district_key"
+ " AND rvarr.res_status_fo_key = sfo.res_status_fo_key"
+ " AND rvarr.res_rsv_ruimte_contact_key = pcontact.prs_perslid_key"
+ " AND pHost.prs_perslid_key = rvarr.res_rsv_ruimte_host_key"
+ " AND r.res_reservering_key = rvarr.res_reservering_key"
+ " AND r.res_reservering_user_key = pUser.prs_perslid_key"
+ (frontend
? " AND (rvarr.res_rsv_ruimte_user_key = " + user_key + " OR rvarr.res_rsv_ruimte_contact_key = " + user_key + ")"
: "");
if (res_actual && !res_deleted)
sqlDe += " AND rvarr.res_rsv_ruimte_verwijder IS NULL";
if (!res_actual && res_deleted)
sqlDe += " AND rvarr.res_rsv_ruimte_verwijder IS NOT NULL";
if (sql_date)
sqlDe += sql_date;
if (fronto) {
if (sql_onrgoed != "")
sqlDe += sql_onrgoed;
sqlDe = discxalg3d (sqlDe,
"rd.res_discipline_key",
"di.alg_regio_key",
"rg.alg_district_key",
"rg.alg_locatie_key",
"rg.alg_gebouw_key",
"rg.alg_verdieping_key",
"rg.alg_ruimte_key",
pautfunction,
"");
}
else
{ // FrontEnd. Filter on 'current' user
sqlDe += " AND (rvarr.res_rsv_ruimte_contact_key IN (" + prsKeys + ")"
+ " OR rvarr.res_rsv_ruimte_host_key IN (" + prsKeys + "))";
}
sqlArtCount = "SELECT rvara.res_rsv_ruimte_key"
+ ", MIN(rvara.res_rsv_artikel_levering) res_rsv_artikel_levering"
+ ", COUNT(res_rsv_ruimte_key) aantal"
+ ", resa.res_discipline_key"
+ (res_deleted
? " FROM res_rsv_artikel rvara"
: " FROM res_v_aanwezigrsv_artikel rvara")
+ ", res_artikel resa"
+ " WHERE rvara.res_artikel_key = resa.res_artikel_key"
+ " GROUP BY rvara.res_rsv_ruimte_key"
+ ", resa.res_discipline_key";
// RES_RSV_ARTIKEL in alg_ruimte
sqlA = "SELECT DISTINCT rvarr.res_reservering_key"
+ ", rvarr.res_rsv_ruimte_key"
+ ", res_rsv_ruimte_omschrijving descr"
+ ", rvarr.res_status_fo_key"
+ ", alg_ruimte_aanduiding waar"
+ ", ra.res_rsv_artikel_levering tvan"
+ ", res_rsv_ruimte_tot ttot" //afruimtijd
+ ", pcontact.naam contact"
+ ", res_rsv_ruimte_contact_key"
+ ", res_rsv_ruimte_host_key"
+ ", sfo.res_status_fo_omschrijving"
+ ", 'CV' AS restype"
+ ", res_rsv_ruimte_bezoekers bezoekers"
+ ", res_rsv_ruimte_verwijder res_rsv_ruimte_verwijder"
+ ", pHost.prs_afdeling_key"
+ ", res_rsv_ruimte_opmerking remark"
+ ", res_rsv_ruimte_volgnr"
+ ", pUser.naam res_user"
+ " FROM (" + sqlArtCount + ") ra"
+ ", res_rsv_ruimte rvarr"
+ ", res_status_fo sfo"
+ ", alg_v_ruimte_gegevens rg"
+ ", thePerslid pcontact"
+ ", alg_district di"
+ ", thePerslid pHost"
+ ", thePerslid pUser"
+ ", res_reservering r"
+ " WHERE rvarr.alg_ruimte_key = rg.alg_ruimte_key" // Automatically filters RES_ARTIKEL on ALG_RUIMTE
+ " AND rg.alg_district_key = di.alg_district_key"
+ " AND rvarr.res_rsv_ruimte_contact_key = pcontact.prs_perslid_key"
+ " AND rvarr.res_rsv_ruimte_host_key = pHost.prs_perslid_key"
+ " AND r.res_reservering_user_key = pUser.prs_perslid_key"
+ " AND r.res_reservering_key = rvarr.res_reservering_key"
+ " AND r.res_reservering_user_key = pUser.prs_perslid_key"
+ " AND ra.res_rsv_ruimte_key = rvarr.res_rsv_ruimte_key"
+ " AND rvarr.res_status_fo_key = sfo.res_status_fo_key"
+ (frontend
? " AND (rvarr.res_rsv_ruimte_user_key = " + user_key + " OR rvarr.res_rsv_ruimte_contact_key = " + user_key + ")"
: "");
if (res_actual && !res_deleted)
sqlA += " AND res_rsv_ruimte_verwijder IS NULL";
if (!res_actual && res_deleted)
sqlA += " AND res_rsv_ruimte_verwijder IS NOT NULL";
sql_select = " rec2.res_reservering_key"
+ ", rec2.descr"
+ ", rec2.res_status_fo_key"
+ ", rec2.waar"
+ ", MIN(rec2.tvan) tvan"
+ ", MAX(rec2.ttot) ttot"
+ ", rec2.contact"
+ ", rec2.res_rsv_ruimte_contact_key"
+ ", rec2.res_rsv_ruimte_host_key"
+ ", rec2.res_status_fo_omschrijving"
+ ", rec2.restype"
+ ", rec2.bezoekers"
+ ", rec2.res_rsv_ruimte_verwijder"
+ ", rec2.prs_afdeling_key"
+ ", rec2.remark"
+ ", rec2.res_rsv_ruimte_volgnr"
+ ", rec2.res_rsv_ruimte_key"
+ ", rec2.res_user"
+ ", (SELECT COUNT('1')"
+ " FROM res_rsv_deel"
+ " WHERE res_rsv_ruimte_key = rec2.res_rsv_ruimte_key)"
+ " + "
+ " (SELECT COUNT('2')"
+ " FROM res_rsv_artikel"
+ " WHERE res_rsv_ruimte_key = rec2.res_rsv_ruimte_key) nrObjects";
sql_groupby = " rec2.res_reservering_key"
+ ", rec2.descr"
+ ", rec2.res_status_fo_key"
+ ", rec2.waar"
+ ", rec2.contact"
+ ", rec2.res_rsv_ruimte_contact_key"
+ ", rec2.res_rsv_ruimte_host_key"
+ ", rec2.res_status_fo_omschrijving"
+ ", rec2.restype"
+ ", rec2.bezoekers"
+ ", rec2.res_rsv_ruimte_verwijder"
+ ", rec2.prs_afdeling_key"
+ ", rec2.remark"
+ ", rec2.res_rsv_ruimte_volgnr"
+ ", rec2.res_rsv_ruimte_key"
+ ", rec2.res_user";
if (sql_date)
sqlA += sql_date;
if (fronto) {
if (sql_onrgoed != "")
sqlA += sql_onrgoed;
sqlA = discxalg3d (sqlA,
"ra.res_discipline_key",
"di.alg_regio_key",
"rg.alg_district_key",
"rg.alg_locatie_key",
"rg.alg_gebouw_key",
"rg.alg_verdieping_key",
"rg.alg_ruimte_key",
pautfunction,
"");
}
else // frontend
{
sqlA += " AND (res_rsv_ruimte_contact_key IN (" + prsKeys + ")"
+ " OR res_rsv_ruimte_host_key IN (" + prsKeys + "))";
} // fronto
sql = "SELECT " + sql_select
+ " FROM (" + thePerslid + " " + sqlR + " UNION ALL " + sqlDe + " UNION ALL " + sqlA + ") rec2"
+ " WHERE 1=1 ";
if (resstatus)
sql += " AND res_status_fo_key = " + resstatus;
// Aanvrager
if (requestor_key)
sql += " AND res_rsv_ruimte_contact_key = " + requestor_key;
if (searchtext) // search text in description and remark
sql += " AND (UPPER(descr) LIKE UPPER('%" + replace(searchtext, "'", "''") + "%')"
+ " OR UPPER(remark) LIKE UPPER('%" + replace(searchtext, "'", "''") + "%'))";
if (host_key)
sql += " AND res_rsv_ruimte_host_key = " + host_key;
if (dep_key)
{
sqln = "SELECT db.niveau"
+ " FROM prs_v_afdeling_boom db"
+ " WHERE db.prs_afdeling_key = " + dep_key;
oRsn = Oracle.Execute(sqln);
var niveau;
if ( !oRsn.eof )
{
niveau = oRsn(0).Value;
}
else
{
Response.Write(lcl_internal_error);
Response.End();
}
sql += " AND prs_afdeling_key IN"
+ " (SELECT d.prs_afdeling_key afd_key"
+ " FROM prs_v_afdeling d"
+ ", prs_v_afdeling_boom db"
+ " WHERE d.prs_afdeling_verwijder IS NULL"
+ " AND d.prs_afdeling_key = db.prs_afdeling_key"
+ " AND db.prs_afdeling_key" + niveau + " = " + dep_key + ")";
}
if (res_key)
sql += " AND res_reservering_key = " + res_key;
sql += " GROUP BY " + sql_groupby
+ " ORDER BY tvan desc, waar";
/***** End build sql *****/
/*****************************************************
* Callback functies ResultsetTable for FE and FO only
****************************************************/
function fnrowClassF(oRs)
{
var rowclass = "";
if ("" + oRs("res_rsv_ruimte_verwijder").value != "null")
{ // verwijderd
rowclass = "deleted";
}
else
{ // voorbij
var tVan = new Date(oRs("tvan"));
if (tVan <= res.tExpire())
rowclass = "expired1";
}
return rowclass;
}
function fnrowDataF(oRs)
{
var resKey = oRs("res_reservering_key").value; // Reservering key
var resVolgnr = oRs("res_rsv_ruimte_volgnr").value; // Reservering volgnummer
var resRsvRuimteKey = oRs("res_rsv_ruimte_key").value; // rsv_ruimte_key
var data = {resKey: resKey, resVolgnr: resVolgnr, resRsvRuimteKey: resRsvRuimteKey};
return JSON.stringify(data);
}
function fnHasVZ(oRs)
{
if (oRs("nrObjects").value > 0)
return oRs("nrObjects").value + " " + lcl_res_reserved_objects;
else
return null;
}
function fncolResNr(oRs)
{
var content = oRs("res_reservering_key").value + "/" + oRs("res_rsv_ruimte_volgnr").value;
return content;
}
function fnrowVisitorsF(oRs)
{
return (oRs("bezoekers").value != 0? oRs("bezoekers").value : "");
}
/*********************************************************
* End callback functies ResultsetTable for FE and FO only
********************************************************/
var rst = new ResultsetTable({keyColumn: "res_rsv_ruimte_key",
ID: "restable",
rowClass: fnrowClassF,
rowData: fnrowDataF,
sql: sql,
filterParams: params,
outputmode: outputmode,
title: lcl_reservation_title,
inlineDetails: "inlineVoorzieningUrl",
hasInlineDetails: fnHasVZ,
showAll: showall
});
// Kolommen
rst.addColumn(new Column({caption: lcl_res_number, content: fncolResNr }));
rst.addColumn(new Column({caption: lcl_room_n, content: "waar", hasActions: true}));
rst.addColumn(new Column({caption: lcl_date, content: "tvan", datatype: "date", nowrap: true}));
rst.addColumn(new Column({caption: lcl_from, content: "tvan", datatype: "time", nowrap: true}));
rst.addColumn(new Column({caption: lcl_to, content: "ttot", datatype: "time"}));
rst.addColumn(new Column({caption: lcl_room_status, content: "res_status_fo_omschrijving"}));
rst.addColumn(new Column({caption: lcl_res_visitors, content: fnrowVisitorsF, datatype: "integer"}));
rst.addColumn(new Column({caption: lcl_res_requestor, content: "contact"}));
rst.addColumn(new Column({caption: lcl_descr, content: "descr"}));
if (!fronto && prs_collegas_used == 1)
rst.addColumn(new Column({caption: lcl_res_owner, content: "res_user"}));
// Acties
rst.addAction({ action: "resEdit", caption: lcl_edit, isDefault: true});
var count = rst.processResultset();
%>
<iframe src="../Shared/empty.asp" style="display:none" id ="hidFrame"> </iframe>
<%
} // frontend || fronto
else
{ // Make ResultsetTable for bo or mi
/***** Build sql *****/
//var res_key = 0;
var sql_loc = "";
var sql_bld = "";
var sql_floor = "";
var sql_room = "";
var sql_act = "";
var sql_dept = "";
var sql_account = "";
var date_sql = "";
var sql_name = "";
var sql_room_key = "";
var sql_obj_key = "";
var sql_art_key = "";
var sql_article = "";
var status_sql = "";
if (res_key)
{
sql_resnum = " AND rrr.res_reservering_key = " + res_key;
}
else
{
var fdate_sql = null;
if (datefrom && dateto)
{
var ora_date1 = datefrom.beginToSQL();
var ora_date2 = dateto.endToSQL();
fdate_sql = " AND res_rsv_ruimte_van < " + ora_date2 + " AND res_rsv_ruimte_tot > " + ora_date1;
//fdate_sql = " BETWEEN " + ora_date1 + " AND " + ora_date2;
}
else if (datefrom)
{
var ora_date1 = datefrom.beginToSQL();
fdate_sql = " res_rsv_ruimte_tot > " + ora_date1;
}
else if (dateto)
{
var ora_date2 = dateto.endToSQL();
fdate_sql = " res_rsv_ruimte_van < " + ora_date2;
}
// JGL: Niet meer nodig volgens mij: de afzonderlijke takken hebben zelf al wel gefilterd.
// if (fdate_sql)
//fdate_sql = " BETWEEN " + ora_date1 + " AND " + ora_date2;
// date_sql = " AND res_geg.res_reservering_van" + fdate_sql;
if (dep_key)
{
sql_org = "SELECT ab.niveau"
+ " FROM prs_v_afdeling_boom ab"
+ " WHERE ab.prs_afdeling_key = " + dep_key;
oRs_org = Oracle.Execute(sql_org);
sql_dept += " AND p.prs_afdeling_key IN (SELECT ab.prs_afdeling_key"
+ " FROM prs_v_afdeling_boom ab"
+ " WHERE ab.prs_afdeling_key" + (!oRs_org.eof?oRs_org(0).value:"") + " = " + dep_key + ")";
}
if (kp)
sql_dept = " AND k.prs_kostenplaats_upper LIKE UPPER('" + kp + "%')";
if (loc_key)
sql_loc = " AND ruimte_geg.alg_locatie_key = " + loc_key;
else
// Only looking at authorisation of the room is sufficient
sql_loc = "";
if (bld_key)
sql_bld = " AND ruimte_geg.alg_gebouw_key = " + bld_key;
else
// Only looking at authorisation of the room is sufficient
sql_bld = "";
if (floor_key)
sql_floor = " AND ruimte_geg.alg_verdieping_key = " + floor_key;
else
// Only looking at authorisation of the room is sufficient
sql_floor = "";
if (room_key)
sql_room = " AND ruimte_geg.alg_ruimte_key = " + room_key;
// Activiteit
if (act_key)
sql_act = " AND res_activiteit_key = " + act_key;
// Aanvrager
if (requestor_key)
sql_name = " AND rrr.res_rsv_ruimte_contact_key = " + requestor_key;
if (room_key_str)
sql_room_key = " AND res_discipline_key IN (" + room_key_str + ")";
if (obj_key_str)
sql_obj_key = " AND rd.res_discipline_key IN (" + obj_key_str + ")";
if (art_key_str)
sql_art_key = " AND ra.res_discipline_key IN (" + art_key_str + ")";
if (article_str)
sql_article = " AND rra.res_artikel_key IN (" + article_str + ")";
if (resstatus)
status_sql = " AND res_status_fo_key = " + resstatus;
if (res_open)
{
if (!res_closed)
status_sql += " AND res_geg.res_status_bo_key < " + res_bo_status_key;
}
else
status_sql += " AND res_geg.res_status_bo_key >= " + res_bo_status_key;
}
// Artikel groep. Ook uitvoeren als resnum is meegegeven
var sql_art_group = "";
if (artgroup)
sql_art_group = " AND ra.res_artikel_groep LIKE '" + artgroup + "'";
var sql = "";
// New res structure
// Volgens mij willen we 1 regel per reservering hier; wat doen we dan met de mogelijk varierende kolommen?
var sql_select = "rrr.res_reservering_key"
+ ", ruimte_geg.alg_locatie_key"
+ ", l.alg_locatie_code locatie"
+ ", ruimte_geg.alg_gebouw_key"
+ ", ruimte_geg.alg_verdieping_key"
+ ", ruimte_geg.alg_ruimte_key"
+ ", COALESCE(opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) res_ruimte_nr"
+ ", ruimte_geg.alg_ruimte_aanduiding"
+ ", res_geg.res_voorziening"
+ ", NULL"
+ ", res_geg.res_reservering_van num_datum_tijd"
+ ", res_geg.res_reservering_van datum"
+ ", res_geg.res_reservering_van tijd"
+ ", res_geg.res_reservering_tot tot"
+ ", (SELECT naam"
+ " FROM thePerslid p "
+ " WHERE p.prs_perslid_key = rrr.res_rsv_ruimte_contact_key) aanvrager"
+ ", res_geg.res_ins_discipline_key"
+ ", res_rsv_ruimte_omschrijving omschrijving"
+ ", res_rsv_ruimte_opmerking opmerking"
+ ", res_geg.res_rsv_ruimte_key rsv_ruimte_key"
+ ", res_geg.res_item_key"
+ ((groupres == 1) // Bij groupering op deelreservering is het afmelden afhankelijk van de laagste bo status
? ", (SELECT MIN(res_status_bo_key)"
+ " FROM (SELECT rrr.res_rsv_ruimte_key"
+ ", rrr.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_ruimte rrr"
+ " UNION ALL"
+ " SELECT rrd.res_rsv_ruimte_key"
+ ", rrd.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_deel rrd"
+ " UNION ALL"
+ " SELECT rra.res_rsv_ruimte_key"
+ ", rra.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_artikel rra) bostatus"
+ " WHERE bostatus.res_rsv_ruimte_key = res_geg.res_rsv_ruimte_key)"
: ", res_geg.res_status_bo_key")
+ " res_status_bo_key"
+ ", res_geg.res_type categorie"
+ ", rrr.res_rsv_ruimte_bezoekers bezoekers"
+ ", " + prs_pers_string + " gastheer"
+ ", p.prs_perslid_telefoonnr prs_perslid_telefoonnr"
+ ", COALESCE((SELECT k.prs_kostenplaats_nr "
+ " FROM prs_kostenplaats k"
+ " WHERE rrr.prs_kostenplaats_key = k.prs_kostenplaats_key), '') kostenplaats"
+ ", res_geg.aantal aantal"
+ ", res_geg.rsv_ruimte_aantal" // 29 Hogere nummers worden alleen op naam gebruikt, zoals het hoort :-)
+ ", res_geg.prijs verwerkt_prijs"
+ ", l.alg_district_key"
+ ", rrr.res_activiteit_key"
+ ", res_geg.stuks_prijs stuks_prijs"
+ ", p.prs_afdeling_key prs_afdeling_key"
+ ", (SELECT " + prs_dep_string
+ " FROM prs_v_afdeling d"
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key ) organisatie"
+ ", artikelnummer"
+ ", rrr.res_rsv_ruimte_noshow noshow"
+ ", artikel_groep"
+ ", res_geg.rcv_type rcv_type"
+ ", res_geg.keycolumn keycolumn"
+ ", (SELECT COUNT('1')"
+ " FROM res_rsv_deel"
+ " WHERE res_rsv_ruimte_key = res_geg.res_rsv_ruimte_key)"
+ " + "
+ " (SELECT COUNT('2')"
+ " FROM res_rsv_artikel"
+ " WHERE res_rsv_ruimte_key = res_geg.res_rsv_ruimte_key) nrObjects"
+ ((groupres == 7) || (groupres == 8)
? ", res_artikel_key artikel_key"
: "")
+ ((groupres == 9)
? ", rrr.prs_kostenplaats_key kostenplaats_key"
: "")
+ ((groupres == 12)
? ", (SELECT ks.prs_kostensoort_oms"
+ " FROM prs_kostensoort ks, ins_tab_discipline d"
+ " WHERE d.ins_discipline_key = res_ins_discipline_key"
+ " AND d.prs_kostensoort_key = ks.prs_kostensoort_key) prs_kostensoort_oms "
+ ", (SELECT d.prs_kostensoort_key"
+ " FROM ins_tab_discipline d"
+ " WHERE d.ins_discipline_key = res_ins_discipline_key) prs_kostensoort_key"
: "")
+ ((groupres == 13)
? ", (SELECT ksg.prs_kostensoortgrp_oms"
+ " FROM prs_kostensoortgrp ksg"
+ ", prs_kostensoort ks"
+ ", ins_tab_discipline d"
+ " WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key"
+ " AND d.ins_discipline_key = res_ins_discipline_key"
+ " AND d.prs_kostensoort_key = ks.prs_kostensoort_key) prs_kostensoortgrp_oms"
+ ", (SELECT ks.prs_kostensoortgrp_key"
+ " FROM prs_kostensoort ks"
+ ", ins_tab_discipline d"
+ " WHERE d.ins_discipline_key = res_ins_discipline_key"
+ " AND d.prs_kostensoort_key = ks.prs_kostensoort_key) prs_kostensoortgrp_key"
: "")
+ ", (SELECT naam "
+ " FROM thePerslid p "
+ " WHERE p.prs_perslid_key = res_geg.afmelder_key) afmelder_naam"
+ ", res_geg.afmeld_datum afmeld_datum"
+ ", rrr.res_rsv_ruimte_volgnr"
+ ", res_geg.res_ruimte_key";
var sql_from_art_part = "SELECT 'C' AS res_type"
+ ", 'CV' AS rcv_type"
+ ", rra.res_rsv_ruimte_key"
+ ", (SELECT rro.res_ruimte_key"
+ " FROM res_ruimte_opstelling rro"
+ " WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key"
+ ", res_rsv_artikel_key AS res_item_key"
+ (groupres == 1 && (sortout == 1 || sortout == 5)
? ",rrr.res_rsv_ruimte_van AS res_reservering_van"
: ", rra.res_rsv_artikel_levering AS res_reservering_van")
+ ", res_rsv_ruimte_tot AS res_reservering_tot"
+ ", rra.res_rsv_artikel_aantal AS aantal"
+ ", LTRIM(ra.res_artikel_omschrijving) || ' (' ||COALESCE(ra.res_artikel_eenheid, '') || ')' AS res_voorziening"
+ ", NULL"
+ ", ra.res_discipline_key AS res_ins_discipline_key"
+ ", rra.res_status_bo_key"
+ ", ra.res_artikel_key AS res_artikel_key"
+ ", rra.res_rsv_artikel_prijs AS prijs"
+ ", ra.res_artikel_prijs AS stuks_prijs"
+ ", to_number(null) AS rsv_ruimte_aantal"
+ ", ra.res_artikel_nr AS artikelnummer"
+ ", ra.res_artikel_groep AS artikel_groep"
+ ", rra.res_rsv_artikel_afgemeld_user afmelder_key"
+ ", rra.res_rsv_artikel_afgemeld afmeld_datum"
+ ", rra.res_rsv_artikel_key keycolumn"
+ " FROM res_v_aanwezigrsv_artikel rra"
+ ", res_v_aanwezigrsv_ruimte rrr"
+ ", res_artikel ra"
+ " WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
+ " AND rra.res_artikel_key = ra.res_artikel_key"
+ (groupres == 1
? " AND rrr.alg_ruimte_key IS NOT NULL"
: "")
+ sql_art_key
+ sql_article
+ sql_art_group;
if (fdate_sql != "")
sql_from_art_part += fdate_sql;
var sql_from_obj_part = "SELECT 'V' as res_type"
+ ", 'CV' AS rcv_type"
+ ", rrd.res_rsv_ruimte_key"
+ ", (SELECT rro.res_ruimte_key"
+ " FROM res_ruimte_opstelling rro"
+ " WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key) AS res_ruimte_key"
+ ", rrd.res_rsv_deel_key AS res_item_key"
+ (groupres == 1 && (sortout == 1 || sortout == 5)
? ", rrr.res_rsv_ruimte_van AS res_reservering_van"
: ", rrd.res_rsv_deel_van AS res_reservering_van")
+ (groupres == 1 && (sortout == 1 || sortout == 5)
? ", rrr.res_rsv_ruimte_tot AS res_reservering_tot"
: ", rrd.res_rsv_deel_tot AS res_reservering_tot")
+ ", to_number(null) AS aantal"
+ ", id.ins_deel_omschrijving || ' (' || COALESCE(rd.res_deel_eenheid,'') || ')' AS res_voorziening"
+ ", NULL"
+ ", rd.res_discipline_key AS res_ins_discipline_key"
+ ", rrd.res_status_bo_key"
+ ", TO_NUMBER(null) AS res_artikel_key"
+ ", rrd.res_rsv_deel_prijs as prijs"
+ ", rd.res_deel_prijs AS stuks_prijs"
+ ", to_number(null) AS rsv_ruimte_aantal"
+ ", null AS artikelnummer"
+ ", '' AS artikel_groep"
+ ", rrd.res_rsv_deel_afgemeld_user afmelder_key"
+ ", rrd.res_rsv_deel_afgemeld afmeld_datum"
+ ", rrd.res_rsv_deel_key keycolumn"
+ " FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_ruimte rrr, res_deel rd, ins_deel id "
+ " WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key "
+ " AND rrd.res_deel_key = rd.res_deel_key "
+ " AND rd.res_ins_deel_key = id.ins_deel_key"
+ (groupres == 1
? " AND rrr.alg_ruimte_key IS NOT NULL"
: "")
+ sql_obj_key;
if (fdate_sql != "")
sql_from_obj_part += fdate_sql;
var sql_from_room_part = "SELECT 'R' AS res_type"
+ ", 'R' AS rcv_type"
+ ", rrr.res_rsv_ruimte_key"
+ ", rro.res_ruimte_key"
+ ", rrr.res_rsv_ruimte_key AS res_item_key"
+ ", rrr.res_rsv_ruimte_van AS res_reservering_van"
+ ", rrr.res_rsv_ruimte_tot AS res_reservering_tot"
+ ", TO_NUMBER(null) AS aantal"
+ ", ro.res_opstelling_omschrijving AS res_voorziening"
+ ", rro.res_ruimte_opstel_default AS res_ruimte_opstel_default"
+ ", rr.res_discipline_key AS res_ins_discipline_key"
+ ", rrr.res_status_bo_key"
+ ", to_number(null) AS res_artikel_key"
+ ", rrr.res_rsv_ruimte_prijs AS prijs"
+ ", to_number(null) AS stuks_prijs"
+ ", 1 AS rsv_ruimte_aantal"
+ ", null AS artikelnummer"
+ ", '' AS artikel_groep"
+ ", rrr.res_rsv_ruimte_afgemeld_user afmelder_key"
+ ", rrr.res_rsv_ruimte_afgemeld afmeld_datum"
+ ", rrr.res_rsv_ruimte_key keycolumn"
+ " FROM res_v_aanwezigrsv_ruimte rrr"
+ ", res_ruimte_opstelling rro"
+ ", res_ruimte rr"
+ ", res_opstelling ro"
+ " WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key"
+ " AND rro.res_ruimte_key = rr.res_ruimte_key"
+ " AND rro.res_opstelling_key = ro.res_opstelling_key"
+ sql_room_key;
if (fdate_sql != "")
sql_from_room_part += fdate_sql;
//===================================================
if (groupres == 1)
{ // Alleen backoffice reserveringen, group by deelreservering (rsv_ruimte_key and rcv_type DESC)
if (sortout == 1) // locatie, tijd
var sql_order = " ORDER BY locatie, datum, rsv_ruimte_key, rcv_type DESC, res_reservering_key, categorie DESC";
else if (sortout == 2) // plaats
var sql_order = " ORDER BY locatie, rsv_ruimte_key, rcv_type DESC, datum";
else if (sortout == 3) // reservering
var sql_order = " ORDER BY res_reservering_key, rsv_ruimte_key, rcv_type DESC, datum";
else if (sortout == 4) // gastheer
var sql_order = " ORDER BY gastheer, rsv_ruimte_key, rcv_type DESC, datum";
else if (sortout == 5) // tijd
var sql_order = " ORDER BY datum, rsv_ruimte_key, rcv_type DESC, locatie, categorie DESC, bezoekers DESC";
else
var sql_order = " ORDER BY res_reservering_key DESC, rsv_ruimte_key, rcv_type DESC, locatie, categorie DESC, datum, res_ruimte_nr, bezoekers DESC";
}
else
{
if (sortout == 1) // locatie, tijd
var sql_order = " ORDER BY locatie, datum, res_ruimte_nr, res_reservering_key, categorie DESC";
else if (sortout == 2) // plaats
var sql_order = " ORDER BY locatie, res_ruimte_nr, datum, res_reservering_key, categorie DESC";
else if (sortout == 3) // reservering
var sql_order = " ORDER BY res_reservering_key, datum, res_ruimte_nr, categorie DESC";
else if (sortout == 4) // gastheer
var sql_order = " ORDER BY gastheer, datum, res_ruimte_nr, res_reservering_key, categorie DESC";
else if (sortout == 5) // tijd
var sql_order = " ORDER BY datum, locatie, res_ruimte_nr, res_reservering_key, categorie DESC";
}
//sql += sql_order;
//sql = "SELECT " + sql_select
// + " FROM (";
var sql_from_total = "";
if (res_key || roomcat)
{
sql_from_total += sql_from_room_part;
if (res_key || objcat || artcat)
sql_from_total += " UNION ALL "
}
if (res_key || objcat)
{
sql_from_total += sql_from_obj_part;
if (res_key || artcat)
sql_from_total += " UNION ALL "
}
if (res_key || artcat)
sql_from_total += sql_from_art_part;
sql = thePerslid
+ "SELECT " + sql_select
+ " FROM (" + sql_from_total + ") res_geg"
+ ", res_rsv_ruimte rrr"
+ ", prs_perslid p"
//+ ((sql_name != '' && !res_key)
// ? ", PRS_PERSLID pcont"
// : "")
+ ", alg_v_ruimte_gegevens ruimte_geg"
+ ", (SELECT res_ruimte_opstel_key, res_ruimte_nr, MIN (alg_ruimte_key) alg_ruimte_key "
+ " FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr "
+ " WHERE rro.res_ruimte_key = rar.res_ruimte_key"
+ " AND rr.res_ruimte_key = rar.res_ruimte_key "
+ " AND rar.res_alg_ruimte_verwijder is null "
+ " GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg"
+ ", alg_locatie l"
+ ", alg_district di"
+ ", prs_kostenplaats k"
+ " WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
+ " AND res_rsv_ruimte_host_key = p.prs_perslid_key"
+ " AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)"
+ " AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
+ " AND ruimte_geg.alg_ruimte_key = coalesce(rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)"
+ " AND l.alg_locatie_key = ruimte_geg.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ (!res_key
? sql_act
+ sql_name
+ date_sql
+ status_sql
+ sql_loc + sql_bld + sql_floor + sql_room + sql_dept + sql_account
: sql_resnum);
if (!groupres || groupres == 1)
sql += getKenmerkSql("RES", "rrr.res_rsv_ruimte_key", true);
sql = discxalg3d (sql,
"res_geg.res_ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"ruimte_geg.alg_locatie_key",
"ruimte_geg.alg_gebouw_key",
"ruimte_geg.alg_verdieping_key",
"ruimte_geg.alg_ruimte_key",
pautfunction,
"");
// Voor groeperingen het resultaat nu eerst filteren zodat je maar 1 regel per deelreservering overhoud.
if (groupres == 1)
{
// Voor groepering nog verder filteren
sql = " SELECT DISTINCT res_reservering_key"
//+ ", alg_locatie_key"
+ ", locatie"
+ ", alg_gebouw_key"
+ ", alg_verdieping_key"
+ ", alg_ruimte_key"
+ ", res_ruimte_nr"
+ ", alg_ruimte_aanduiding"
+ ", CASE categorie"
+ " WHEN 'V' THEN '" + lcl_reserved_object + "'"
+ " WHEN 'C' THEN '" + lcl_reserved_object + "'"
+ " ELSE res_voorziening"
+ " END res_voorziening"
+ ", datum"
+ ", tijd"
+ ", tot"
+ ", aanvrager"
//+ ", 'res_ins_discipline_key' res_ins_discipline_key"
+ ", omschrijving"
+ ", opmerking"
+ ", rsv_ruimte_key"
+ ", NULL res_item_key"
+ ", res_status_bo_key"
+ ", CASE categorie"
+ " WHEN 'V' THEN 'VC'"
+ " WHEN 'C' THEN 'VC'"
+ " ELSE 'R'"
+ " END categorie"
+ ", bezoekers"
+ ", gastheer"
+ ", prs_perslid_telefoonnr"
+ ", kostenplaats"
//+ ", 'aantal' aantal"
+ ", rsv_ruimte_aantal"
+ ", verwerkt_prijs"
//+ ", alg_district_key"
//+ ", res_activiteit_key"
//+ ", 'stuks_prijs' stuks_prijs"
//+ ", prs_afdeling_key"
//+ ", organisatie"
//+ ", 'artikelnummer' artikelnummer"
//+ ", noshow"
//+ ", artikel_groep"
+ ", rcv_type"
+ ", rsv_ruimte_key keycolumn"
+ ", nrobjects"
//+ ", afmelder_naam"
//+ ", afmeld_datum"
+ ", res_rsv_ruimte_volgnr"
+ ", res_ruimte_key"
+ " FROM ("
+ sql
+ ") resgroup"
}
var res_keyColumn = ""
var res_columns = new Array();
function columnData(header, content, datatype, showTotal)
{
this.header = header;
this.content = content;
this.datatype = datatype;
this.showTotal = showTotal;
}
if (groupres == 6)
{
// locatie
res_keyColumn = "alg_locatie_key";
res_columns[res_columns.length] = new columnData(lcl_location, "locatie")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = "SELECT l.alg_locatie_key " + res_keyColumn
+ ", l.alg_locatie_omschrijving locatie"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ ", alg_locatie l "
+ " WHERE res.alg_locatie_key = l.alg_locatie_key"
+ " GROUP BY l.alg_locatie_key"
+ ", l.alg_locatie_omschrijving"
+ " ORDER BY 2";
}
else if (groupres == 10)
{
// gebouw
res_keyColumn = "alg_gebouw_key";
res_columns[res_columns.length] = new columnData(lcl_location, "gebouw")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT g.alg_gebouw_key " + res_keyColumn
+ ", l.alg_locatie_code || '-' || g.alg_gebouw_naam gebouw"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ ", alg_locatie l"
+ ", alg_gebouw g"
+ " WHERE res.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " GROUP BY g.alg_gebouw_key"
+ ", l.alg_locatie_code || '-' || g.alg_gebouw_naam"
+ " ORDER BY 2";
}
else if (groupres == 11)
{
// activiteit
res_keyColumn = "res_activiteit_key";
res_columns[res_columns.length] = new columnData(lcl_activity, "activiteit")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
sql = " SELECT a.res_activiteit_key " + res_keyColumn
+ ", a.res_activiteit_omschrijving activiteit"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ " FROM (" + sql + ") res"
+ ", res_activiteit a"
+ " WHERE res.res_activiteit_key = a.res_activiteit_key"
+ " GROUP BY a.res_activiteit_key"
+ ", a.res_activiteit_omschrijving"
+ " ORDER BY 2";
}
else if (groupres == 12)
{
// kostensoort
res_keyColumn = "prs_kostensoort_key";
res_columns[res_columns.length] = new columnData(lcl_charge_type, "kostensoort")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT COALESCE(res.prs_kostensoort_key, 0) " + res_keyColumn
+ ", res.prs_kostensoort_oms kostensoort"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ " GROUP BY res.prs_kostensoort_key"
+ ", res.prs_kostensoort_oms"
+ " ORDER BY 2";
}
else if (groupres == 13)
{
// kostensoortgrp
res_keyColumn = "prs_kostensoortgrp_key";
res_columns[res_columns.length] = new columnData(lcl_charge_type_group, "kostensoortgrp")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT COALESCE(res.prs_kostensoortgrp_key, 0) " + res_keyColumn
+ ", res.prs_kostensoortgrp_oms kostensoortgrp"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ " GROUP BY res.prs_kostensoortgrp_key"
+ ", res.prs_kostensoortgrp_oms"
+ " ORDER BY 2";
}
else if (groupres == 7)
{
// artikelen
res_keyColumn = "artikel_key";
res_columns[res_columns.length] = new columnData(lcl_res_art_desc, "artikelomschrijving")
res_columns[res_columns.length] = new columnData(lcl_res_item_price, "artikelprijs", "currency", true)
res_columns[res_columns.length] = new columnData(lcl_res_art_nr, "artikelaantal", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT res.artikel_key " + res_keyColumn
+ ", res.res_voorziening artikelomschrijving"
+ ", res.stuks_prijs artikelprijs"
+ ", SUM(res.aantal) artikelaantal"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ " WHERE categorie = 'C'"
+ " GROUP BY artikel_key"
+ ", res_voorziening"
+ ", stuks_prijs"
+ " ORDER BY 2";
}
else if (groupres == 8)
{
// artikelnummer
res_keyColumn = "artikel_key";
res_columns[res_columns.length] = new columnData(lcl_res_art_number, "artikel")
res_columns[res_columns.length] = new columnData(lcl_res_art_nr, "artikelaantal", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT res.artikel_key " + res_keyColumn
+ ", res.artikelnummer || ' - ' ||"
+ " (SELECT MIN(res_artikel_omschrijving)"
+ " FROM res_v_aanwezigartikel"
+ " WHERE res_artikel_nr = res.artikelnummer)"
+ " || ' ' ||"
+ " CASE (SELECT COUNT(res_artikel_omschrijving) FROM res_v_aanwezigartikel WHERE res_artikel_nr = res.artikelnummer)"
+ " WHEN 1"
+ " THEN ''"
+ " ELSE '...'"
+ " END artikel"
+ ", SUM(res.aantal) artikelaantal"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ " WHERE categorie = 'C'"
+ " GROUP BY artikel_key"
+ ", artikelnummer"
+ " ORDER BY 2";
}
else if (groupres == 9)
{
// kostenplaats
res_keyColumn = "kostenplaats_key";
res_columns[res_columns.length] = new columnData(lcl_res_art_number, "kostenplaats")
res_columns[res_columns.length] = new columnData(lcl_res_art_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = " SELECT COALESCE(res.kostenplaats_key, 0) " + res_keyColumn
+ ", res.kostenplaats kostenplaats"
+ ", COUNT(DISTINCT res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ " GROUP BY kostenplaats_key"
+ ", kostenplaats"
+ " ORDER BY 2";
}
else if (groupres == 5)
{
// district
res_keyColumn = "alg_district_key";
res_columns[res_columns.length] = new columnData(lcl_district, "district")
res_columns[res_columns.length] = new columnData(lcl_res_res_nr, "aantalres", "integer", true)
res_columns[res_columns.length] = new columnData(lcl_total, "totaalprijs", "currency", true)
sql = "SELECT d.alg_district_key " + res_keyColumn
+ ", d.alg_district_omschrijving district"
+ ", COUNT(distinct res.res_reservering_key) aantalres"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ " FROM (" + sql + ") res"
+ ", alg_district d"
+ " WHERE res.alg_district_key = d.alg_district_key"
+ " GROUP BY d.alg_district_key"
+ ", d.alg_district_omschrijving"
+ " ORDER BY 2";
}
else if (groupres == 4)
{ // De default als groepering als niets gekozen
// minfo reserveringen
res_keyColumn = "res_reservering_key";
res_columns[res_columns.length] = new columnData(lcl_resnr, "res_reservering_key")
res_columns[res_columns.length] = new columnData(lcl_location, "locatie")
res_columns[res_columns.length] = new columnData(lcl_room_n, "ruimte_aanduiding")
res_columns[res_columns.length] = new columnData(lcl_date, "datum")
res_columns[res_columns.length] = new columnData(lcl_res_starttime, "tijd", "time")
res_columns[res_columns.length] = new columnData(lcl_res_endtime, "tot", "time")
res_columns[res_columns.length] = new columnData(lcl_prs_organisatie, "organisatie")
res_columns[res_columns.length] = new columnData(lcl_host, "gastheer")
res_columns[res_columns.length] = new columnData(lcl_res_account, "kostenplaats")
res_columns[res_columns.length] = new columnData(lcl_descr, "omschrijving")
res_columns[res_columns.length] = new columnData(lcl_remark, "opmerking")
res_columns[res_columns.length] = new columnData(lcl_res_no_show, "noshow")
res_columns[res_columns.length] = new columnData(lcl_room_n, "totaalprijs", "currency", true)
sql = "SELECT res.res_reservering_key || '/' || res.res_rsv_ruimte_volgnr " + res_keyColumn
+ ", res.res_rsv_ruimte_volgnr volgnr"
+ ", res.locatie locatie"
+ ", res.alg_ruimte_aanduiding ruimte_aanduiding"
+ ", res.datum datum"
+ ", MIN(res.tijd) tijd"
+ ", MAX(res.tot) tot"
+ ", res.organisatie organisatie"
+ ", res.gastheer gastheer"
+ ", res.kostenplaats kostenplaats"
+ ", res.omschrijving omschrijving"
+ ", res.opmerking opmerking"
+ ", max(res.noshow) noshow"
+ ", SUM(res.verwerkt_prijs) totaalprijs"
+ ", MAX(res.rsv_ruimte_key) rsv_ruimte_key"
+ ", MAX(res.alg_ruimte_key) alg_ruimte_key"
+ ", MAX(res.categorie) categorie"
+ ", MAX(res.res_item_key) res_item_key"
+ ", MAX(res.res_ruimte_key) res_ruimte_key"
+ " FROM (" + sql + ") res"
+ " GROUP BY res_reservering_key || '/' || res.res_rsv_ruimte_volgnr"
+ ", res_rsv_ruimte_volgnr"
+ ", locatie"
+ ", alg_ruimte_aanduiding"
+ ", datum"
+ ", organisatie"
+ ", gastheer"
+ ", kostenplaats"
+ ", omschrijving"
+ ", opmerking"
+ ", noshow"
+ ", res_ruimte_key"
+ " ORDER BY 1";
}
else
{
sql = sql + sql_order;
}
/***** End build sql *****/
var count = 0;
var descr = "";
var remark = "";
var total = new Array;
/*****************************************************
* Callback functies ResultsetTable for BO and MI only
****************************************************/
/*function fnrowClass(oRs)
{
var rowclass = 'selectable';
if (excel || print)
rowclass = "DRR";
return rowclass;
}*/
/*********************************************************
* End callback functies ResultsetTable for BO and MI only
********************************************************/
if (groupres > 1)
{ // minfo with grouping
/*****************************************************************
* Callback functies ResultsetTable for only MI with grouping
****************************************************************/
function fnrowDataM(oRs)
{
var data = { resKey : oRs(res_keyColumn).value }; // Reservering key
if (res_keyColumn == "res_reservering_key")
{
data.resVolgnr = oRs("volgnr").value; // Reservering volgnummer
data.resRsvRuimteKey = oRs("rsv_ruimte_key").value; // rsv_ruimte_key
}
return JSON.stringify(data);
}
function fncolDistrict(oRs)
{
var content = oRs("locatie");
return content;
}
/*********************************************************************
* End callback functies ResultsetTable for only MI with grouping
********************************************************************/
var rst = new ResultsetTable({keyColumn: res_keyColumn,
ID: "restable",
//rowClass: fnrowClass,
rowData: fnrowDataM,
sql: sql,
filterParams: params,
outputmode: outputmode,
title: lcl_reservation_title,
showAll: showall
})
// Kolommen
for (var i = 0; i < res_columns.length; i++)
{
if (res_columns[i].showTotal)
rst.addColumn(new Column({caption: res_columns[i].header, content: res_columns[i].content, datatype: res_columns[i].datatype, total: true}));
else
rst.addColumn(new Column({caption: res_columns[i].header, content: res_columns[i].content, datatype: res_columns[i].datatype}));
}
if (!print && !excel) {
var captionResAllDone = '<img id="checkall" src="../Pictures/res_ok.gif" style="cursor:hand" OnClick="javascript:if (window.confirm(\'' + lcl_res_alldone + '\') && document.all.item(\'res\').rows.length>1) { multiComplete=true;document.all.item(\'res\').rows[1].cells[0].click();}" alt="' + lcl_res_alldo + '">'
}
// Acties
if (groupres == 4) {
rst.addAction({action: "resEdit", caption: lcl_edit, isDefault: true});
}
var count = rst.processResultset();
}
else
{ // (BO: grouping and no grouping)
/***********************************************************************
* Callback functies ResultsetTable for only BO grouping and no grouping
**********************************************************************/
function fnrowData(oRs)
{
var resKey = oRs("res_reservering_key").value; // Reservering key
var resVolgnr = oRs("res_rsv_ruimte_volgnr").value; // Reservering volgnummer
var resRsvRuimteKey = oRs("rsv_ruimte_key").value; // rsv_ruimte_key
var resPartkey = oRs("res_item_key").value; // rsv_ruimte_key, rsv_deel_key of rsv_artikel_key
var resPartType = oRs("categorie").value; // reserveringstype ('C', 'V', 'R')
var resVanDatumMidnight = new Date(oRs("tijd").value).midnight(); // rsv_ruimte_van datum om middernacht
var now = new Date();
var resFuture = (resVanDatumMidnight > now? 1 : 0)
var data = {resKey: resKey, resVolgnr: resVolgnr, resRsvRuimteKey: resRsvRuimteKey, resPartkey: resPartkey, resPartType: resPartType, resFuture: resFuture};
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
var eEdit = true; // Altijd aanwezig
var eClose = false;
var besStatusBO = oRs("res_status_bo_key").value;
if (oRs("res_status_bo_key").value < res_bo_status_key)
{
eClose = true;
}
var data = {eEdit:eEdit, eClose:eClose};
return data;
}
//function fncolTResComplete(oRs)
//{
// var tooltip = "";
// if (oRs("res_status_bo_key").value < res_bo_status_key )
// tooltip = lcl_RES_mark_completed;
// return tooltip;
//}
function fncolCompleteRes(oRs)
{
//var content = "";
//if (oRs("res_status_bo_key").value >= res_bo_status_key)
// //content = ''; //'<img style="display:block" id="img' + oRs("res_item_key").value + '" src="../Pictures/vis_todo.gif"' + (!excel && !print? 'alt="' + lcl_RES_mark_completed + '"' : '') + '>';
////else
//{
// if (oRs("afmelder_naam").value == null)
// alt_afmeld_info = 'alt="' + LCL.res.completed_unknown + '"';
// else
// alt_afmeld_info = 'alt="' + toDateString(oRs("afmeld_datum").value) + '&nbsp;&nbsp;-&nbsp;&nbsp;' + oRs("afmelder_naam").value + '"';
// //content = '<img style="display:block" id="afm' + oRs("keycolumn").value + '" src="../Pictures/res_ok.gif" ' + alt_afmeld_info + '>'
//}
//else
//{
// var today = new Date();
// alt_afmeld_info = 'alt="' + toDateString(today) + '&nbsp;&nbsp;-&nbsp;&nbsp;' + user.naam() + '"';
//}
//content = '<img style="display:' + ((oRs("res_status_bo_key").value >= res_bo_status_key)? 'block' : 'none') + '" id="afm' + oRs("res_item_key").value + '" src="../Pictures/res_ok.gif" ' + alt_afmeld_info + '>'
var content = "<div id='afm" + oRs("keycolumn").value + "'></div>";
return content;
}
function fnrowResNr(oRs)
{
return oRs("res_reservering_key").value + "/" + oRs("res_rsv_ruimte_volgnr").value;
}
function fnrowVisitors(oRs)
{
return ((oRs("bezoekers").value != 0)? oRs("bezoekers").value : '');
}
function fnrowOpstelling(oRs)
{
return ((oRs('categorie').value == 'R')? oRs("res_voorziening").value : "");
}
function fnrowObject(oRs)
{
return ((oRs('categorie').value != 'R')? oRs("res_voorziening").value : "");
}
function fnrowConfiguration(oRs)
{
if (groupres == 1)
{
if (oRs("categorie").value == 'R') {
// TODO: ik wil hier een span class toevoegen om afwijking van de
// defaultopstelling te markeren. Ik vind het echter nu nogal ondoorzichtig
// waar die kolomwaarde vandaan zou moeten komen.
//c_inst = (oRs('res_ruimte_opstel_default').value != "1" ? "*" : "")
c_inst = oRs("res_voorziening").value;
} else
c_inst = lcl_reserved_object;
}
else
{
if (oRs("aantal").value == null)
c_inst = oRs("res_voorziening").value;
else
c_inst = oRs("aantal").value + " * " + oRs("res_voorziening").value;
}
return c_inst;
}
function fnrowDescr(oRs)
{
var descr = oRs("omschrijving").Value;
if (descr == "" || descr == "null")
descr = "&nbsp;";
return descr;
}
function fnrowRemark(oRs)
{
var remark = oRs("opmerking").Value;
if (remark == "" || remark == "null")
remark="&nbsp;";
return remark;
}
/***************************************************************************
* End callback functies ResultsetTable for only BO grouping and no grouping
**************************************************************************/
var rst = new ResultsetTable({keyColumn: "keycolumn",
ID: "restable",
//rowClass: fnrowClass,
rowData: fnrowData,
rowActionEnabler: fnrowActionEnabler,
sql: sql,
flexModule: "RES",
flexId: "keycolumn", // keycolumn is de res_rsv_ruimte_key
filterParams: params,
outputmode: outputmode,
title: lcl_reservation_title,
inlineDetails: "inlineVoorzieningUrl",
hasInlineDetails: fnHasVZ,
showAll: showall
});
// Kolommen
// AAFM#14872/PF: Deze locatiekolom is wat dubbelop. We spreken af dat we die
// eerst maar eens niet meer tonen. Als er gefundeerde klachten komen is
// deze snel genoeg combined terug te halen
// rst.addColumn(new Column({caption: lcl_location, content: "locatie"}));
rst.addColumn(new Column({caption: lcl_room_n, content: "res_ruimte_nr", combine: false, hasActions: true}));
rst.addColumn(new Column({caption: lcl_date, content: "datum"}));
rst.addColumn(new Column({caption: lcl_res_starttime, content: "tijd", datatype: "time"}));
rst.addColumn(new Column({caption: lcl_res_endtime, content: "tot", datatype: "time"}));
rst.addColumn(new Column({caption: lcl_resnr, content: fnrowResNr}));
rst.addColumn(new Column({caption: lcl_res_pers, content: fnrowVisitors}));
if (excel)
{ // Aparte kolommen voor aantal/config en aantal/voorzieningen
rst.addColumn(new Column({caption: lcl_res_opstelling, content: fnrowOpstelling}));
rst.addColumn(new Column({caption: lcl_res_aantalvoorziening, content: "aantal"}));
rst.addColumn(new Column({caption: lcl_reserved_object, content: fnrowObject}));
}
else
rst.addColumn(new Column({caption: lcl_config_instance, content: fnrowConfiguration}));
if (res_bo_show_host == 1)
rst.addColumn(new Column({caption: lcl_host, content: "gastheer"}));
rst.addColumn(new Column({caption: lcl_res_requestor, content: "aanvrager"}));
if (res_bo_show_telnr == 1)
rst.addColumn(new Column({caption: lcl_res_requestor_phone, content: "prs_perslid_telefoonnr"}));
if (res_bo_show_kpn == 1)
rst.addColumn(new Column({caption: lcl_res_account, content: "kostenplaats"}));
rst.addColumn(new Column({caption: lcl_descr, content: fnrowDescr}));
rst.addColumn(new Column({caption: lcl_remark, content: fnrowRemark}));
//if (print || excel)
//{
// var captionOk = '<img id="checkall" src="../Pictures/res_ok.gif">'
// rst.addColumn(new Column({caption: captionOk, content: fncolCompleteRes}));
//}
////if (!print && !excel)
//else
//{
// var captionResAllDone = '<img id="checkall" src="../Pictures/res_ok.gif">'
// //rst.addColumn(new Column({caption: captionResAllDone, content: fncolCompleteRes, action: actionResAllDone, title:lcl_res_alldo, tooltip:fncolTResComplete}));
// rst.addColumn(new Column({caption: captionResAllDone, content: fncolCompleteRes}));
//}
rst.addColumn(new Column({caption: '<img id="checkall" src="../Pictures/res_ok.gif">', content: fncolCompleteRes}));
// Acties
rst.addAction({action: "resEdit", caption: lcl_edit, enabler: "eEdit", isDefault: true});
rst.addAction({action: "resClose", caption: lcl_close, enabler: "eClose", multi: true, multiOnce: true});
var count = rst.processResultset();
}
%>
<iframe src="../Shared/empty.asp" frameborder="0" id="hidFrame" style="display:none"></iframe>
<%
} // else bo || mi
%>
</body>
</html>
<%
}
%>