1703 lines
78 KiB
C++
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) + ' - ' + 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) + ' - ' + 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 = " ";
|
|
return descr;
|
|
}
|
|
|
|
function fnrowRemark(oRs)
|
|
{
|
|
var remark = oRs("opmerking").Value;
|
|
if (remark == "" || remark == "null")
|
|
remark=" ";
|
|
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>
|
|
<%
|
|
}
|
|
%>
|