835 lines
46 KiB
Plaintext
835 lines
46 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: res_show_objcat.asp (oude rsv_voorziening_view.inc)
|
|
Description: Show the objects en voorzieningen of a reservation part
|
|
Parameters:
|
|
res_rsv_ruimte RES_RSV_RUIMTE_KEY, de deelreservering
|
|
Context:
|
|
in een frame binnen het reserveringsscherm
|
|
in de inline?
|
|
|
|
*/
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/iface.inc" -->
|
|
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
|
<!-- #include file="../ins/ins.inc" -->
|
|
<!-- #include file="./res.inc" -->
|
|
<!-- #include file="res_flexkenmerk_art.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({ js: [],
|
|
css: [rooturl + "/appl/res/res.css"] });
|
|
|
|
var urole = getQParamSafe("urole");
|
|
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
|
|
var embedded = getQParamInt("embedded", 0) == 1;
|
|
var verynew = getQParamInt("verynew", 0) == 1;
|
|
|
|
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
|
user.auth_required_or_abort(this_res.canReadAny);
|
|
|
|
// Finds required res_kenmerken (regular or of type 'M'(bijlagen))
|
|
// that are either missing or have no value for a specific reservation.
|
|
|
|
var mywriterolcode = 0 + (this_res.canWrite("WEB_RESUSE") ? 1 : 0)
|
|
+ (this_res.canWrite("WEB_RESFOF") ? 2 : 0)
|
|
+ (this_res.canWrite("WEB_RESBOF") ? 4 : 0);
|
|
|
|
var sql = "SELECT COUNT (*) amount"
|
|
+ " FROM res_rsv_ruimte rrr"
|
|
+ " JOIN res_activiteit ra"
|
|
+ " ON rrr.res_activiteit_key = ra.res_activiteit_key"
|
|
+ " JOIN res_kenmerk rk ON rk.res_activiteit_key = ra.res_activiteit_key"
|
|
+ " LEFT JOIN res_kenmerkwaarde rkw"
|
|
+ " ON rk.res_kenmerk_key = rkw.res_kenmerk_key"
|
|
+ " AND rrr.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key"
|
|
+ " LEFT JOIN"
|
|
+ " ( SELECT fac_bijlagen_refkey,"
|
|
+ " fac_bijlagen_kenmerk_key,"
|
|
+ " COUNT (*) AS aantal"
|
|
+ " FROM fac_bijlagen"
|
|
+ " WHERE fac_bijlagen_module = 'RES'"
|
|
+ " GROUP BY fac_bijlagen_refkey, fac_bijlagen_kenmerk_key) bijlagen"
|
|
+ " ON rrr.res_rsv_ruimte_key = bijlagen.fac_bijlagen_refkey"
|
|
+ " AND rk.res_kenmerk_key = bijlagen.fac_bijlagen_kenmerk_key"
|
|
+ " JOIN res_srtkenmerk rsk"
|
|
+ " ON rk.res_srtkenmerk_key = rsk.res_srtkenmerk_key"
|
|
+ " WHERE rrr.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " AND rk.res_kenmerk_verplicht = 1"
|
|
+ " AND rk.res_kenmerk_verwijder IS NULL"
|
|
+ " AND BITAND(rk.res_kenmerk_rolcode, " + mywriterolcode + ") > 0"
|
|
+ " AND rk.res_kenmerk_show_expr IS NULL" // We gaan deze niet inline evalueren; als er een show-expressie bestaat, sluiten we deze uit
|
|
+ " AND rk.fac_functie_key IS NULL" // Idem; We gaan deze niet inline evalueren; als er een extra autorisatie bestaat, sluiten we deze uit
|
|
+ " AND (rk.res_kenmerk_toonbaar IS NULL OR rk.res_kenmerk_toonbaar = 0)" // Volgens mij altijd NULL of 1, maar voor de zekerheid ..
|
|
+ " AND rsk.res_srtkenmerk_kenmerktype NOT IN ('L', 'l', 'b', 'Q')"
|
|
+ " AND ( ( rsk.res_srtkenmerk_kenmerktype = 'M'"
|
|
+ " AND bijlagen.aantal IS NULL)"
|
|
+ " OR ( rsk.res_srtkenmerk_kenmerktype != 'M'"
|
|
+ " AND rkw.res_kenmerkreservering_waarde IS NULL))";
|
|
var oRs = Oracle.Execute(sql);
|
|
var hasMissingRequiredKenmerk = (oRs("amount").Value >= 1);
|
|
oRs.Close();
|
|
|
|
if(!hasMissingRequiredKenmerk) {
|
|
// Merk op: (later) verwijderde records of parkeerplaatsen zouden we hier weer kunnen
|
|
// uitsluiten. Dat is echter al weer te complex/ licht risicovol
|
|
cache.whenNoRecords("SELECT 1 FROM res_rsv_deel WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " UNION ALL SELECT 1 FROM res_rsv_artikel WHERE res_rsv_ruimte_key = " + rsv_ruimte_key);
|
|
}
|
|
|
|
res.res_set_dialect(rsv_ruimte_key);
|
|
|
|
var resdeleted = this_res.rsv_ruimte_verwijder != null;
|
|
|
|
// Als res_rsv_ruimte_cat_appr 0 is hoeft er niet gefiatteerd te worden, zelfs niet als de drempel later is verlaagd.
|
|
var sql = "SELECT sa.res_srtactiviteit_prefix"
|
|
+ " , rrr.res_reservering_key"
|
|
+ " , rrr.res_rsv_ruimte_van"
|
|
+ " , rrr.res_rsv_ruimte_tot"
|
|
+ " , ro.res_ruimte_key"
|
|
+ " , rrr.res_rsv_ruimte_volgnr"
|
|
+ " , CASE"
|
|
+ " WHEN sa.res_srtactiviteit_prefix IS NOT NULL"
|
|
+ " THEN sa.res_srtactiviteit_prefix || ' '"
|
|
+ " ELSE ''"
|
|
+ " END"
|
|
+ " || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnrtxt"
|
|
+ " , rrr.res_rsv_ruimte_cat_appr"
|
|
+ " , sa.res_srtactiviteit_soort"
|
|
+ " FROM res_rsv_ruimte rrr"
|
|
+ " , res_activiteit ra"
|
|
+ " , res_srtactiviteit sa"
|
|
+ " , res_ruimte_opstelling ro"
|
|
+ " WHERE rrr.res_activiteit_key = ra.res_activiteit_key"
|
|
+ " AND ra.res_srtactiviteit_key = sa.res_srtactiviteit_key"
|
|
+ " AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key (+)"
|
|
+ " AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
var res_van = new Date(oRs("res_rsv_ruimte_van").Value);
|
|
var res_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
|
|
var res_ruimte_key = oRs("res_ruimte_key").Value;
|
|
var resnrtxt = oRs("resnrtxt").Value;
|
|
var hasFiat = oRs("res_rsv_ruimte_cat_appr").Value == 1;
|
|
var isCV = oRs("res_srtactiviteit_soort").Value == 1;
|
|
oRs.Close();
|
|
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate() %>
|
|
<script>
|
|
var anyDirty = false;
|
|
var hasMissingRequiredKenmerk = <%=hasMissingRequiredKenmerk ? 1 : 0%>;
|
|
|
|
function res_change()
|
|
{
|
|
if(hasMissingRequiredKenmerk) {
|
|
FcltMgr.alert(L("lcl_shared_validator_missing"));
|
|
window.parent.$("#frametabs").tabs({ "active": 0 });
|
|
} else {
|
|
if (FcltMgr.startEdit(window)) {
|
|
var newurl = "res_edit_objcat.asp?urole=<%=this_res.canChangeUrole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>&verynew=<%=verynew? 1 : 0%>&width_px=" + $(window).width();
|
|
if (anyDirty && confirm (L("lcl_res_cleanup_invalid_objcat"))) // opschonen?
|
|
{
|
|
var data = {
|
|
urole: "<%=urole%>",
|
|
rsv_ruimte_key: <%=rsv_ruimte_key%>
|
|
};
|
|
<% protectRequest.dataToken("data"); %>
|
|
$.post("res_cleanup.asp",
|
|
data,
|
|
FcltCallbackAndThen(function (data) {
|
|
anyDirty = false;
|
|
window.location.href = newurl;
|
|
}),"json");
|
|
}
|
|
else
|
|
window.location.href = newurl;
|
|
}
|
|
}
|
|
}
|
|
function res_fiatteren()
|
|
{ // Voor alle rsv_artikel regels het veld res_rsv_artikel_approved de waarde 1 geven.
|
|
FcltMgr.confirm("<%=safe.jsstring(L("lcl_res_fiatteren_art").format(resnrtxt))%>", function()
|
|
{
|
|
var data = { rsv_ruimte_key: <%=rsv_ruimte_key%> };
|
|
<% protectRequest.dataToken("data"); %>
|
|
$.post("res_fiatteren.asp",
|
|
data,
|
|
FcltCallbackRefresh,
|
|
"json"
|
|
);
|
|
});
|
|
}
|
|
function res_afwijzen()
|
|
{ // Voor alle rsv_artikel regels het veld res_rsv_artikel_approved de waarde 2 geven.
|
|
var subject = "<%=safe.jsstring(L("lcl_res_afwijzen_art").format(resnrtxt))%>";
|
|
var url = "res_afwijzen.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>";
|
|
FcltMgr.openModalDetail(url, subject, {callback: window.parent.FcltMgr.reload });
|
|
}
|
|
function insCheckIn(row)
|
|
{
|
|
var rsv_deel_key = row.getAttribute("ROWKEY");
|
|
FcltMgr.openDetail("appl/ins/ins_deel_free.asp?takein=1&rsv_deel_key="+rsv_deel_key,
|
|
L("lcl_ins_insinn"), {callback: FcltMgr.reload});
|
|
}
|
|
|
|
function insCheckOut(row)
|
|
{
|
|
var rsv_deel_key = row.getAttribute("ROWKEY");
|
|
FcltMgr.openDetail("appl/INS/ins_deel_free.asp?lendout=1&rsv_deel_key="+rsv_deel_key,
|
|
L("lcl_ins_lend_out"), {callback: FcltMgr.reload});
|
|
}
|
|
|
|
// Uitleen flexkenmerken bewerken.
|
|
function insAdapt(row)
|
|
{
|
|
var rsv_deel_key = row.getAttribute("ROWKEY");
|
|
FcltMgr.openDetail("appl/ins/ins_deel_free.asp?adapt=1&rsv_deel_key="+rsv_deel_key,
|
|
L("lcl_ins_adapt"), {callback: FcltMgr.reload});
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body class="listmode">
|
|
<% var buttons = [];
|
|
if (this_res.canChangeCV)
|
|
buttons.push( { title: (this_res.hasCV ? L("lcl_change") : L("lcl_add")), icon: (this_res.hasCV ? "fa-fclt-edit" : "fa-plus"), action: "res_change()"});
|
|
if (this_res.canFiatteren)
|
|
buttons.push( {title: L("lcl_approve"), icon: "fa-check", action: "res_fiatteren()"});
|
|
if (this_res.canAfwijzen)
|
|
buttons.push( {title: L("lcl_reject"), icon: "fa-times", action: "res_afwijzen()"});
|
|
|
|
// Fast checks to see if we have any prices at all, to prevent superfluous column
|
|
// We beschouwen dit nu als een businessrule: helemaal nergens bedragen. Mocht er behoefte
|
|
// aan komen is het logisch dit per ins_discipline_min_level te bepalen (want die worden
|
|
// nooit gecombineerd), maar verfijnder willen we niet.
|
|
var sql = "SELECT ''"
|
|
+ " FROM res_deel"
|
|
+ " WHERE (res_deel_prijs IS NOT NULL OR res_deel_prijs_vast = 0)" // prijs is mogelijk
|
|
+ " AND (res_deel_vervaldatum IS NULL OR res_deel_vervaldatum > SYSDATE)" // actueel relevant
|
|
+ " AND res_deel_verwijder IS NULL"; // niet historisch
|
|
var oRs = Oracle.Execute(sql);
|
|
var anydeelprijs = !oRs.eof;
|
|
oRs.close();
|
|
sql = "SELECT ''"
|
|
+ " FROM res_artikel"
|
|
+ " WHERE (res_artikel_prijs IS NOT NULL OR res_artikel_prijs_vast = 0)"
|
|
+ " AND (res_artikel_vervaldatum IS NULL OR res_artikel_vervaldatum > SYSDATE)"
|
|
+ " AND res_artikel_verwijder IS NULL";
|
|
oRs = Oracle.Execute(sql);
|
|
var anyartikelprijs = !oRs.eof;
|
|
oRs.close();
|
|
|
|
if (rsv_ruimte_key > 0)
|
|
{
|
|
var total_price = 0;
|
|
var r_price = 0;
|
|
|
|
function fnOmschrijving(oRs)
|
|
{
|
|
var returnval = "";
|
|
|
|
// Voor objecten de autorisatie opvragen om eventueel door te kunnen klikken (omdat dat bij personen ook kan)
|
|
var this_ins = {canReadAny: false};
|
|
if (oRs("ins_deel_key").Value != null) // alleen als res_deel is ins_deel
|
|
{
|
|
this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value);
|
|
var action = ""; // default geen doorklik
|
|
if (this_ins.canReadAny)
|
|
{
|
|
// doorklikbaar naar objectdetails, voor details of om uit te lenen
|
|
if (oRs("ins_srtdeel_uitleenbaar").Value == 1 && this_ins.canWriteINSFOF)
|
|
action = 'FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=fo&ins_key=' + oRs('ins_deel_key').value + '"); FcltMgr.stopPropagation(event);';
|
|
else
|
|
action = 'FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=' + oRs('ins_deel_key').value + '"); FcltMgr.stopPropagation(event);';
|
|
}
|
|
returnval = (action == "" ? safe.html(oRs("res_deel_omschrijving").value) + " "
|
|
: "<a href='#' onclick='" + action + "'>" + safe.html(oRs("res_deel_omschrijving").value) + "</a> ")
|
|
+ (oRs("res_rsv_deel_prijs").value != 0 ? (oRs("inclBTW").value ? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")) : "")
|
|
+ (oRs("verval").value == 0 ? L("lcl_inactive_data_suffix") : "");
|
|
}
|
|
else
|
|
{ // persoonlijke resource
|
|
// TODO: hier ook autorisatie checken of ik wel door mag klikken
|
|
var action = 'FcltMgr.openDetail("appl/prs/prs_perslid.asp?urole=fe&prs_key=' + oRs('prs_perslid_key').value + '"); FcltMgr.stopPropagation(event);';
|
|
returnval = "<a href='#' onclick='" + action + "'>" + safe.html(oRs("res_deel_omschrijving").value) + "</a> " + safe.html(oRs("prs_srtperslid_omschrijving").value) + " "
|
|
+ (oRs("res_rsv_deel_prijs").value != 0 ? (oRs("inclBTW").value? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")) : "")
|
|
+ (oRs("verval").value == 0? L("lcl_inactive_data_suffix") : "");
|
|
}
|
|
|
|
return returnval;
|
|
}
|
|
|
|
function fnImage (oRs)
|
|
{
|
|
return oRs("ins_discipline_image").value ? I(oRs("ins_discipline_image").value+" fa-2x") : ""; // defaultje?
|
|
}
|
|
|
|
function fnVantijd(oRs)
|
|
{
|
|
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
|
var vanDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_van").value)) : toTimeString(new Date(oRs("res_rsv_deel_van").value)))
|
|
if (oRs("vanbinnentijd").value == 0)
|
|
vanDateString = "<span class='outofbounds'>" + vanDateString + "</span>";
|
|
return vanDateString;
|
|
}
|
|
|
|
function fnTottijd(oRs)
|
|
{
|
|
// Als Van en Tot verschillen tonen we de datum erbij, anders alleen de tijd
|
|
var totDateString = (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_tot").value)) : toTimeString(new Date(oRs("res_rsv_deel_tot").value)))
|
|
if (oRs("totbinnentijd").value == 0)
|
|
totDateString = "<span class='outofbounds'>" + totDateString + "</span>";
|
|
return totDateString;
|
|
}
|
|
|
|
function fnTijd(oRs)
|
|
{
|
|
if ( oRs("levbinnentijd").value == 1 )
|
|
return toTimeString(new Date(oRs("res_rsv_artikel_levering").value));
|
|
else
|
|
return "<span class='outofbounds'>" + toTimeString(new Date(oRs("res_rsv_artikel_levering").value)) + "</span>";
|
|
}
|
|
|
|
function fnAfhaaltijd(oRs)
|
|
{
|
|
if (oRs("res_rsv_artikel_afhalen").Value != null)
|
|
{
|
|
return toTimeString(new Date(oRs("res_rsv_artikel_afhalen").Value));
|
|
}
|
|
else
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
|
|
var anyDirty = false;
|
|
function fnRowClassObj(oRs)
|
|
{
|
|
if (oRs("verval").value == 0 || oRs("res_rsv_deel_dirtlevel").value & (res.dirtlevel.deel.notavailable | res.dirtlevel.deel.notallowed))
|
|
{
|
|
anyDirty = true;
|
|
return "res_fatal";
|
|
}
|
|
else
|
|
{
|
|
return "xx";
|
|
}
|
|
}
|
|
|
|
function fnRowClassCat(oRs)
|
|
{
|
|
var active_artikel = (oRs("ingang").value == 1 && oRs("verval").value == 1);
|
|
if (!active_artikel || (oRs("res_rsv_artikel_dirtlevel").value & (res.dirtlevel.artikel.notallowed)))
|
|
{
|
|
anyDirty = true;
|
|
return "res_fatal";
|
|
}
|
|
else
|
|
return "xx";
|
|
}
|
|
|
|
function fnrowActionEnabler(oRs)
|
|
{
|
|
var data = {eLendOut: false, eReceive: false, eAdapt: false };
|
|
if (oRs("ins_srtdeel_uitleenbaar").Value == 1)
|
|
{
|
|
// TODO: We negeren de 3D scope vooralsnog. Veel te ingewikkeld met org-velden en dergelijke
|
|
// Eerst maar even praktijkgeluiden afwachten
|
|
// user.checkAutorisation cache't per discipline dus dat is te overzien.
|
|
// LET OP: Hier dus de ins_discipline_key, niet de res_discipline_key
|
|
var authparams = user.checkAutorisation("WEB_INSFOF", true, oRs("ins_discipline_key").Value);
|
|
if (authparams && authparams.PRSwritelevel < 9)
|
|
{
|
|
data.eLendOut = oRs("ins_alg_ruimte_key_org").value == null;
|
|
data.eReceive = !data.eLendOut;
|
|
|
|
if (oRs("bewerkbaar").Value == 1)
|
|
{
|
|
data.eAdapt = data.eReceive;
|
|
}
|
|
}
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
var nonBulkFields = lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key')
|
|
+ " , 0 total"
|
|
+ " , id.ins_alg_ruimte_key_org"
|
|
+ " , id.ins_deel_key"
|
|
+ " , id.ins_discipline_key"
|
|
+ " , ins_srtdeel_uitleenbaar"
|
|
+ " , rd.res_discipline_key"
|
|
+ " , d.ins_discipline_image"
|
|
+ " , " + lcl.xsqla("d.ins_discipline_omschrijving", "d.ins_discipline_key")
|
|
+ " , d.ins_discipline_volgnr"
|
|
+ " , rrd.res_rsv_deel_key"
|
|
+ " , rrd.res_rsv_deel_aantal"
|
|
+ " , res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
|
|
+ " , rrd.res_rsv_deel_van"
|
|
+ " , rrd.res_rsv_deel_tot"
|
|
+ " , rrd.res_rsv_deel_dirtlevel"
|
|
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
|
|
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
|
|
+ " , CASE "
|
|
+ " WHEN (rrd.res_rsv_deel_van BETWEEN res_rsv_ruimte_van"
|
|
+ " AND res_rsv_ruimte_tot"
|
|
+ " )"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END vanbinnentijd,"
|
|
+ " CASE "
|
|
+ " WHEN (rrd.res_rsv_deel_tot BETWEEN res_rsv_ruimte_van"
|
|
+ " AND res_rsv_ruimte_tot"
|
|
+ " )"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END totbinnentijd"
|
|
+ " , CASE WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'P'"
|
|
+ " THEN (SELECT pf.prs_perslid_naam_friendly"
|
|
+ " FROM prs_v_perslid_fullnames_all pf"
|
|
+ " WHERE pf.prs_perslid_key = id.ins_alg_ruimte_key)"
|
|
+ " WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'C'"
|
|
+ " THEN (SELECT c.prs_contactpersoon_naam"
|
|
+ " FROM prs_contactpersoon c"
|
|
+ " WHERE id.ins_alg_ruimte_key = c.prs_contactpersoon_key)"
|
|
+ " END eigenaar"
|
|
+ " , COALESCE (ks.prs_kostensoort_btw, 0) inclbtw"
|
|
+ " , CASE"
|
|
+ " WHEN (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > rr.res_rsv_ruimte_tot)"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END verval"
|
|
+ " , p.prs_perslid_key,"
|
|
+ lcl.xsqla('sp.prs_srtperslid_omschrijving', 'p.prs_srtperslid_key') // TODO, Diensten en zo, wat kan deze man?
|
|
+ " , 0 isbulk";
|
|
var bulkFields = " distinct "
|
|
+ lcl.xsql('rd.res_deel_omschrijving', 'rd.res_deel_key') + " || ' (' || sel.selected || '/' || cnt.total || ')'" + " res_deel_omschrijving"
|
|
+ " , cnt.total"
|
|
+ " , id.ins_alg_ruimte_key_org"
|
|
+ " , id.ins_deel_key"
|
|
+ " , id.ins_discipline_key"
|
|
+ " , ins_srtdeel_uitleenbaar"
|
|
+ " , rd.res_discipline_key"
|
|
+ " , d.ins_discipline_image"
|
|
+ " , " + lcl.xsqla("d.ins_discipline_omschrijving", "d.ins_discipline_key")
|
|
+ " , d.ins_discipline_volgnr"
|
|
+ " , rrd.res_rsv_deel_key"
|
|
+ " , rrd.res_rsv_deel_aantal"
|
|
+ " , sel.selected * res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" // zou je achterwege kunnen laten als !anydeelprijs
|
|
+ " , rrd.res_rsv_deel_van"
|
|
+ " , rrd.res_rsv_deel_tot"
|
|
+ " , rrd.res_rsv_deel_dirtlevel"
|
|
+ " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar"
|
|
+ " , rrd.res_rsv_deel_verwijder ddVerwijder"
|
|
+ " , CASE "
|
|
+ " WHEN (rrd.res_rsv_deel_van BETWEEN res_rsv_ruimte_van"
|
|
+ " AND res_rsv_ruimte_tot"
|
|
+ " )"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END vanbinnentijd,"
|
|
+ " CASE "
|
|
+ " WHEN (rrd.res_rsv_deel_tot BETWEEN res_rsv_ruimte_van"
|
|
+ " AND res_rsv_ruimte_tot"
|
|
+ " )"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END totbinnentijd"
|
|
+ " , CASE WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'P'"
|
|
+ " THEN (SELECT pf.prs_perslid_naam_friendly"
|
|
+ " FROM prs_v_perslid_fullnames_all pf"
|
|
+ " WHERE pf.prs_perslid_key = id.ins_alg_ruimte_key)"
|
|
+ " WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'C'"
|
|
+ " THEN (SELECT c.prs_contactpersoon_naam"
|
|
+ " FROM prs_contactpersoon c"
|
|
+ " WHERE id.ins_alg_ruimte_key = c.prs_contactpersoon_key)"
|
|
+ " END eigenaar"
|
|
+ " , COALESCE (ks.prs_kostensoort_btw, 0) inclbtw"
|
|
+ " , CASE"
|
|
+ " WHEN (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > rr.res_rsv_ruimte_tot)"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END verval"
|
|
+ " , p.prs_perslid_key,"
|
|
+ lcl.xsqla('sp.prs_srtperslid_omschrijving', 'p.prs_srtperslid_key') // Later: evt Diensten en zo, wat kan deze man?
|
|
+ " , 1 isbulk";
|
|
|
|
var sql1 = "SELECT {0}"
|
|
+ " FROM res_rsv_deel rrd"
|
|
+ " , res_rsv_ruimte rr"
|
|
+ " , res_deel rd"
|
|
+ " , res_discipline d"
|
|
+ " , prs_kostensoort ks"
|
|
+ " , ins_deel id"
|
|
+ " , prs_perslid p"
|
|
+ " , prs_srtperslid sp"
|
|
+ " , ins_srtdeel isd"
|
|
+ "{1}"
|
|
+ " , ( SELECT sd.ins_srtdeel_key"
|
|
+ " , COUNT (km.ins_kenmerk_rolcode) km900" // kolomalias is historisch, maar zo gelaten
|
|
+ " FROM ins_srtkenmerk sk"
|
|
+ " , ins_kenmerk km"
|
|
+ " , ins_srtdeel sd"
|
|
+ " , ins_srtgroep gr"
|
|
+ " WHERE km.ins_srtkenmerk_key = sk.ins_srtkenmerk_key"
|
|
+ " AND gr.ins_srtgroep_key = sd.ins_srtgroep_key"
|
|
+ " AND km.ins_kenmerk_verwijder IS NULL"
|
|
+ " AND sk.ins_srtkenmerk_verwijder IS NULL"
|
|
+ " AND ( (km.ins_srtinstallatie_key = sd.ins_srtdeel_key"
|
|
+ " AND km.ins_kenmerk_niveau = 'S')"
|
|
+ " OR (km.ins_srtinstallatie_key = sd.ins_srtgroep_key"
|
|
+ " AND km.ins_kenmerk_niveau = 'G')"
|
|
+ " OR (km.ins_srtinstallatie_key = gr.ins_discipline_key"
|
|
+ " AND km.ins_kenmerk_niveau = 'D'))"
|
|
+ " AND BITAND(km.ins_kenmerk_rolcode,4) = 4" // uitleenkenmerken
|
|
+ " GROUP BY sd.ins_srtdeel_key) k"
|
|
+ " WHERE rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
|
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " AND id.ins_deel_key(+) = rd.res_ins_deel_key" // outer join voor als het een res_prs_perslid_key is
|
|
+ " AND p.prs_perslid_key(+) = rd.res_prs_perslid_key" // outer join voor als het een res_ins_deel_key is
|
|
+ " AND sp.prs_srtperslid_key(+) = p.prs_srtperslid_key" // outer join voor als het een res_ins_deel_key is
|
|
+ " AND rrd.res_deel_key = rd.res_deel_key"
|
|
+ " AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key"
|
|
+ " AND d.ins_discipline_key = rd.res_discipline_key"
|
|
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key(+)"
|
|
+ (S("vis_parking_key") != -1 ? " AND rd.res_discipline_key != " + S("vis_parking_key") : "")
|
|
+ (!resdeleted? " AND rrd.res_rsv_deel_verwijder IS NULL" : "")
|
|
+ " AND isd.ins_srtdeel_key = k.ins_srtdeel_key(+)"
|
|
// temp table for count of bulk-items on unique description
|
|
var sqlBulkCount = ", ("
|
|
+ " SELECT distinct"
|
|
+ " oms.res_deel_omschrijving,"
|
|
+ " COUNT(oms.res_deel_omschrijving) total,"
|
|
+ " oms.res_deel_key,"
|
|
+ " oms.res_ins_deel_key ins_deel_key"
|
|
+ " FROM"
|
|
+ " ("
|
|
+ " SELECT"
|
|
+ " distinct res_deel_omschrijving, res_deel_key, res_ins_deel_key"
|
|
+ " FROM"
|
|
+ " res_v_aanwezigdeel rx"
|
|
+ " WHERE"
|
|
+ " res_deel_bulkreserveerbaar = 1"
|
|
+ " AND rx.res_deel_key IN (SELECT ry.res_deel_key FROM res_v_aanwezigdeel ry WHERE rx.res_deel_omschrijving = ry.res_deel_omschrijving)"
|
|
+ " AND res_deel_key IN ( " + sql1.format("rd.res_deel_key", "") + " )"
|
|
+ " ) oms,"
|
|
+ " res_v_aanwezigdeel r1"
|
|
+ " WHERE"
|
|
+ " oms.res_deel_omschrijving = r1.res_deel_omschrijving"
|
|
+ " AND r1.res_deel_key NOT IN ("
|
|
+ " SELECT distinct rrd.res_deel_key"
|
|
+ " FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd"
|
|
+ " WHERE ( rrr.RES_RSV_RUIMTE_VAN BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
|
|
+ " AND TO_DATE (" + res_tot.toSQL(true) + ")"
|
|
+ " OR rrr.RES_RSV_RUIMTE_TOT BETWEEN TO_DATE (" + res_van.toSQL(true) + ")"
|
|
+ " AND TO_DATE (" + res_tot.toSQL(true) + "))"
|
|
+ " AND rrr.res_rsv_ruimte_key <> " + rsv_ruimte_key
|
|
+ " AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
|
|
+ " AND rrd.res_deel_key = rd.res_deel_key"
|
|
+ " AND rd.res_deel_bulkreserveerbaar = 1"
|
|
+ " )"
|
|
+ " GROUP BY"
|
|
+ " oms.res_deel_omschrijving,"
|
|
+ " oms.res_deel_key,"
|
|
+ " oms.res_ins_deel_key"
|
|
+ " ) cnt";
|
|
// temp table for count of (selected) bulk-items on unique description
|
|
var sqlSelectedCount = ", ("
|
|
+ " SELECT DISTINCT oms.res_deel_omschrijving,"
|
|
+ " COUNT (oms.res_deel_omschrijving) selected,"
|
|
+ " oms.res_deel_key,"
|
|
+ " oms.res_ins_deel_key ins_deel_key"
|
|
+ " FROM (SELECT DISTINCT"
|
|
+ " rx.res_deel_omschrijving, rx.res_deel_key, rx.res_ins_deel_key"
|
|
+ " FROM res_deel rx, res_rsv_deel rrd"
|
|
+ " WHERE rx.res_deel_bulkreserveerbaar = 1"
|
|
+ " AND rx.res_deel_key IN (SELECT min(ry.res_deel_key)"
|
|
+ " FROM res_v_aanwezigdeel ry, res_rsv_deel rrdy"
|
|
+ " WHERE rx.res_deel_omschrijving = ry.res_deel_omschrijving"
|
|
+ " AND ry.res_deel_key = rrdy.res_deel_key"
|
|
+ " AND rrdy.res_rsv_ruimte_key = " + rsv_ruimte_key + ")"
|
|
+ " AND rx.res_deel_key = rrd.res_deel_key"
|
|
+ " AND rrd.res_rsv_ruimte_key = " + rsv_ruimte_key + ") oms,"
|
|
+ " res_v_aanwezigdeel r1, res_rsv_deel rrd1"
|
|
+ " WHERE oms.res_deel_omschrijving = r1.res_deel_omschrijving"
|
|
+ " AND r1.res_deel_key = rrd1.res_deel_key"
|
|
+ " AND rrd1.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " GROUP BY oms.res_deel_omschrijving,"
|
|
+ " oms.res_deel_key,"
|
|
+ " oms.res_ins_deel_key"
|
|
+ " ) sel";
|
|
var sqlComplete = sql1.format(nonBulkFields, "")
|
|
+ " AND rd.res_deel_bulkreserveerbaar = 0"
|
|
+ " UNION ALL "
|
|
+ sql1.format(bulkFields, sqlBulkCount + sqlSelectedCount)
|
|
+ " AND rd.res_deel_bulkreserveerbaar = 1"
|
|
+ " AND rd.res_deel_omschrijving = cnt.res_deel_omschrijving (+)"
|
|
+ " AND rd.res_deel_key = sel.res_deel_key "
|
|
+ " ORDER BY ins_discipline_volgnr, 1";
|
|
|
|
// Niet super efficient maar ach....
|
|
var oRs = Oracle.Execute("SELECT COUNT(*) FROM (" + sqlComplete + ") WHERE ins_srtdeel_uitleenbaar = 1" );
|
|
var ErisUitleenbaar = oRs(0).value > 0;
|
|
// Leesrechten WEB_INSFOF is grof maar beter dan niets
|
|
var showUitleenbaar = ErisUitleenbaar && user.checkAutorisation("WEB_INSFOF", true);
|
|
oRs.Close();
|
|
|
|
// Moet de fiatteur boven in de titel van het iframe getoond worden.
|
|
var fiatteur = "";
|
|
// Moet de gehele catering (opnieuw) gefiatteerd worden?
|
|
// In de setting velden res_rsv_artikel_approved en res_rsv_ruimte_cat_appr opnieuw staat aangegeven of er (opnieuw) gefiatteerd dient te worden
|
|
// Setting veld res_rsv_artikel_approved: Catalogus artikelen dienen gefiatteerd te worden 0=Nee, 1=Ja.
|
|
// Setting veld res_rsv_ruimte_cat_appr: Artikel is 0=Niet gefiatteerd, 1=Goedgekeurd, 2=Afgewezen.
|
|
var sql_a = "SELECT rr.res_rsv_ruimte_omschrijving"
|
|
+ " , rr.res_rsv_ruimte_cat_appr"
|
|
+ " , ra.res_rsv_artikel_approved"
|
|
+ " FROM res_rsv_ruimte rr"
|
|
+ " , res_rsv_artikel ra"
|
|
+ " WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key"
|
|
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key;
|
|
oRs_a = Oracle.Execute(sql_a);
|
|
var approve = false;
|
|
while (!oRs_a.Eof)
|
|
{
|
|
approve = approve || (oRs_a("res_rsv_ruimte_cat_appr").Value == 1 && oRs_a("res_rsv_artikel_approved").Value == 0);
|
|
oRs_a.MoveNext();
|
|
}
|
|
oRs_a.Close();
|
|
|
|
if (approve)
|
|
{
|
|
var sql_b = "SELECT COALESCE(kp.prs_perslid_key, -1) budgethouder_key"
|
|
+ " FROM res_rsv_ruimte rr"
|
|
+ " , prs_kostenplaats kp"
|
|
+ " WHERE rr.prs_kostenplaats_key = kp.prs_kostenplaats_key"
|
|
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
var oRs_b = Oracle.Execute(sql_b);
|
|
if (!oRs_b.eof)
|
|
{
|
|
var budgethouder_key = oRs_b("budgethouder_key").Value;
|
|
if (budgethouder_key > 0)
|
|
{
|
|
var budgethouder = new Perslid(budgethouder_key);
|
|
fiatteur = " (" + L("lcl_res_approver") + ": " + budgethouder.naam() + ")";
|
|
}
|
|
else
|
|
fiatteur = " (" + L("lcl_res_no_fiatteur_known") + ")";
|
|
}
|
|
oRs_b.Close();
|
|
}
|
|
|
|
buttons.push({ icon: "fa-fclt-refresh", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
|
|
|
|
var rst1 = new ResultsetTable({sql: sqlComplete,
|
|
rstableCount: 2,
|
|
rstableNr: 1,
|
|
keyColumn: "res_rsv_deel_key",
|
|
ID: "resvtable" + (embedded? "tiny" : ""),
|
|
noPrint: true,
|
|
rowClass: fnRowClassObj,
|
|
rowActionEnabler: fnrowActionEnabler,
|
|
summaryShow: function () {},
|
|
emptySetString : L("lcl_no_objects"),
|
|
title: L("lcl_res_frame_voorziening") + fiatteur,
|
|
buttons: (this_res.rsv_ruimte_verwijder != null? null : buttons)
|
|
});
|
|
rst1.addColumn(new Column({caption: "", content: fnImage, tooltip: "ins_discipline_omschrijving"}));
|
|
rst1.addColumn(new Column({caption: L("lcl_reserved_object"), content: fnOmschrijving}));
|
|
if (showUitleenbaar)
|
|
rst1.addColumn(new Column({caption: L("lcl_ins_lent_res"), content: "eigenaar", hasActions: true }));
|
|
rst1.addColumn(new Column({caption: L("lcl_from"), content: fnVantijd, align:"center"}));
|
|
rst1.addColumn(new Column({caption:L("lcl_to"), content: fnTottijd, align:"center"}));
|
|
if (anydeelprijs)
|
|
rst1.addColumn(new Column({caption: L("lcl_r_price5"), content: "res_rsv_deel_prijs", datatype: "currency"}));
|
|
if (resdeleted)
|
|
rst1.addColumn(new Column({caption:L("lcl_deleted"), content: "ddVerwijder", datatype: "datetime"}));
|
|
|
|
if (showUitleenbaar)
|
|
{
|
|
rst1.addAction({ action: "insCheckOut", caption: L("lcl_obj_lend_out"), enabler: "eLendOut", multi: true });
|
|
rst1.addAction({ action: "insCheckIn", caption: L("lcl_obj_receive"), enabler: "eReceive", multi: true });
|
|
rst1.addAction({ action: "insAdapt", caption: L("lcl_ins_adapt"), enabler: "eAdapt"});
|
|
}
|
|
|
|
function fncolFiat(oRs)
|
|
{ // Als res_rsv_ruimte_cat_appr 0 is, dan wordt deze functie niet aangeroepen. Dus de controle "res_rsv_ruimte_cat_appr == 0" hoeft hier niet uitgevoerd te worden.
|
|
// Als er voor een catalogus niet met een drempelwaarde wordt gewerkt, dan wordt er vooralsnog een blokje getoond met dezelfde kleur als de andere cateringregels van die reservering.
|
|
var ttl;
|
|
var icon;
|
|
var displ = "";
|
|
var rsv_art_key = oRs("res_rsv_artikel_key").Value; // rsv_ruimte_key
|
|
var rsv_art_appr = oRs("res_rsv_artikel_approved").Value;
|
|
switch (rsv_art_appr)
|
|
{
|
|
case 0: ttl = L("lcl_res_ter_fiat");
|
|
icon = "fa-exclamation-circle";
|
|
break;
|
|
case 1: ttl = L("lcl_res_goedgekeurd");
|
|
icon = "fa-check-circle";
|
|
break;
|
|
case 2: ttl = L("lcl_res_afgewezen");
|
|
icon = "fa-times-circle";
|
|
break;
|
|
}
|
|
var fiatimg = "<span id='resfiatimg" + rsv_art_key + "' class='resfiat" + rsv_art_appr + "' title='" + safe.htmlattr(ttl) + "'>" + I(icon+" fa-lg", {"fastyle":"fas"}) + "</span>";
|
|
displ = "<div class='resfiatdiv' title='" + safe.htmlattr(ttl) + "'>" + fiatimg + "</div>";
|
|
return displ;
|
|
}
|
|
|
|
function fnArtikeltekst(oRs)
|
|
{
|
|
var sqlFlex = getSqlFlex("RESA");
|
|
var flexData = getFlexData(sqlFlex, oRs("res_rsv_artikel_key").Value, { showProperties: true, onlyWithValue: true }); // Alleen flexkenmerken met een waarde ophalen.
|
|
var artflex = "";
|
|
if (flexData.length)
|
|
artflex = "<div class='resartflexshow'>";
|
|
for (var i = 0; i < flexData.length; i++)
|
|
{
|
|
artflex += (i? "<br>" : "") + "<span>" + safe.html(flexData[i].header) + ": " + safe.html(flexData[i].value) + "</span>"
|
|
}
|
|
|
|
// Bijlagen.
|
|
var result = res.res_deel_flex_bijlagen(oRs("res_rsv_artikel_key").Value, oRs("res_discipline_key").Value);
|
|
if (result.length)
|
|
artflex += "<br>" + result;
|
|
|
|
if (flexData.length)
|
|
artflex += "</div>";
|
|
|
|
var action = "";
|
|
if (user.has("WEB_RESMSU"))
|
|
action = 'FcltMgr.openDetail("appl/mgt/res_artikel.asp?mode=wrap&id=' + oRs('res_artikel_key').value + '"); FcltMgr.stopPropagation(event);';
|
|
var active_artikel = (oRs("ingang").value == 1 && oRs("verval").value == 1);
|
|
var arttekst = (action == "" ? safe.html(oRs("res_artikel_omschrijving").value) + " "
|
|
: "<a href='#' onclick='" + action + "'>" + safe.html(oRs("res_artikel_omschrijving").value) + "</a> ")
|
|
+ (oRs("res_artikel_eenheid").value ? " (" + safe.html(oRs("res_artikel_eenheid").value) + ")" : "")
|
|
+ (oRs("res_rsv_artikel_prijs").Value ? (" " + (oRs("inclBTW").value? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW"))) : "")
|
|
+ (!active_artikel? L("lcl_inactive_data_suffix") : "");
|
|
|
|
return arttekst + artflex;
|
|
}
|
|
|
|
var sql2 = "SELECT CASE WHEN a.res_artikel_vrije_omschrijving = 1"
|
|
+ " THEN ra.res_rsv_artikel_omschrijving"
|
|
+ " ELSE " + lcl.xsql("a.res_artikel_omschrijving", "a.res_artikel_key")
|
|
+ " END res_artikel_omschrijving"
|
|
+ " , " + lcl.xsqla("a.res_artikel_eenheid", "a.res_artikel_key")
|
|
+ " , ra.res_rsv_artikel_key"
|
|
+ " , ra.res_rsv_artikel_aantal"
|
|
+ " , res.getartikelprijs(ra.res_rsv_artikel_key) res_rsv_artikel_prijs" // zou je achterwege kunnen laten als !anyartikelprijs
|
|
+ " , d.ins_discipline_image"
|
|
+ " , " + lcl.xsqla("d.ins_discipline_omschrijving", "d.ins_discipline_key")
|
|
+ " , dp.res_disc_params_threshold"
|
|
+ " , ra.res_rsv_artikel_levering"
|
|
+ " , ra.res_rsv_artikel_afhalen"
|
|
+ " , rr.res_rsv_ruimte_tot"
|
|
+ " , ra.res_rsv_artikel_verwijder ddVerwijder"
|
|
+ " , CASE "
|
|
+ " WHEN (ra.res_rsv_artikel_levering BETWEEN rr.res_rsv_ruimte_van "
|
|
+ " AND rr.res_rsv_ruimte_tot) "
|
|
+ " THEN 1 "
|
|
+ " ELSE 0 "
|
|
+ " END levbinnentijd"
|
|
+ " , res_rsv_artikel_dirtlevel"
|
|
+ " , res_rsv_artikel_approved"
|
|
+ " , COALESCE (ks.prs_kostensoort_btw, 0) inclbtw"
|
|
+ " , CASE"
|
|
+ " WHEN (a.res_artikel_ingangsdatum IS NULL OR a.res_artikel_ingangsdatum <= rr.res_rsv_ruimte_van)"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END ingang"
|
|
+ " , CASE"
|
|
+ " WHEN (a.res_artikel_vervaldatum IS NULL OR a.res_artikel_vervaldatum > rr.res_rsv_ruimte_van)"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END verval"
|
|
+ " , a.res_artikel_key"
|
|
+ " , a.res_discipline_key"
|
|
+ " FROM res_rsv_artikel ra"
|
|
+ " , res_rsv_ruimte rr"
|
|
+ " , res_artikel a"
|
|
+ " , res_discipline d"
|
|
+ " , res_disc_params dp"
|
|
+ " , prs_kostensoort ks"
|
|
+ " WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
|
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key
|
|
+ " AND ra.res_artikel_key = a.res_artikel_key"
|
|
+ " AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key"
|
|
+ " AND a.res_discipline_key = d.ins_discipline_key"
|
|
+ " AND d.ins_discipline_key = dp.res_ins_discipline_key"
|
|
+ (!resdeleted? " AND ra.res_rsv_artikel_verwijder IS NULL" : "")
|
|
+ " ORDER BY res_artikel_volgnummer"
|
|
+ " , res_rsv_artikel_levering"
|
|
+ " , d.ins_discipline_volgnr"
|
|
+ " , " + lcl.xsql("res_artikel_omschrijving", "a.res_artikel_key");
|
|
|
|
// Niet super efficient maar ach....
|
|
var oRs = Oracle.Execute("SELECT 1 FROM (" + sql2 + ")" );
|
|
var rst2Empty = oRs.EoF;
|
|
oRs.Close();
|
|
|
|
if (!rst2Empty)
|
|
rst1.emptySetString = "";
|
|
|
|
var cnt1 = rst1.processResultset();
|
|
|
|
var rst2 = new ResultsetTable({sql:sql2,
|
|
rstableCount: 2,
|
|
rstableNr: 2,
|
|
keyColumn: "res_rsv_artikel_key",
|
|
ID: "resctable"+(embedded?"tiny":""),
|
|
noPrint:true,
|
|
rowClass: fnRowClassCat,
|
|
summaryShow: function () {},
|
|
emptySetString : L("lcl_no_artikels")
|
|
});
|
|
if (hasFiat)
|
|
rst2.addColumn(new Column({caption: I("fa-circle"), content: fncolFiat, colName: "fncolFlags", colText: L("lcl_res_fiatstatus"), align: "center"}));
|
|
rst2.addColumn(new Column({caption: "", content: fnImage, tooltip: "ins_discipline_omschrijving"}));
|
|
rst2.addColumn(new Column({caption: L("lcl_consumable_objects"), content: fnArtikeltekst }));
|
|
rst2.addColumn(new Column({caption: L("lcl_count"), content: "res_rsv_artikel_aantal", align:"center"}));
|
|
rst2.addColumn(new Column({caption: L("lcl_time"), content: fnTijd, datatype: "time", align:"center"}));
|
|
rst2.addColumn(new Column({caption: L("lcl_res_ophalen"), content: fnAfhaaltijd, datatype: "time", align:"center"}));
|
|
if (this_res.res_has_visitors)
|
|
rst2.addColumn(new Column({caption: L("lcl_to"), content: "res_rsv_ruimte_tot", datatype: "time", align:"center"}));
|
|
if (anyartikelprijs)
|
|
rst2.addColumn(new Column({caption: L("lcl_r_price7"), content: "res_rsv_artikel_prijs", datatype: "currency"}));
|
|
if (resdeleted)
|
|
rst2.addColumn(new Column({caption: L("lcl_deleted"), content: "ddVerwijder", datatype: "datetime"}));
|
|
var cnt2 = rst2.processResultset();
|
|
|
|
var hasVoorziening = (cnt1 > 0);
|
|
var hasCatering = (cnt2 > 0);
|
|
if (isCV && !hasVoorziening && !hasCatering)
|
|
{
|
|
%> <script>
|
|
$(function() {
|
|
FcltMgr.setSubtabExtra("<span class='subtab-badge-icon subtab-badge-missing'>" + I("fa-exclamation-triangle fa-lg", { "fastyle": "fas" }) + "</span>");
|
|
});
|
|
</script>
|
|
<% }
|
|
|
|
if (anyDirty)
|
|
{
|
|
%> <script type='text/javascript'>
|
|
$(function()
|
|
{
|
|
anyDirty = true;
|
|
FcltMgr.alert(L("lcl_res_fail_invalid_objcat"));
|
|
})
|
|
</script>
|
|
<% }
|
|
}
|
|
%>
|
|
</body>
|
|
</html>
|
|
<% ASPPAGE_END(); %>
|