Files
Facilitor/APPL/RES/res_reservering.asp
Jos Groot Lipman 07a69910a9 FSN#35094 Opfrissen icon-set font-awesome
svn path=/Website/trunk/; revision=31663
2016-11-24 12:49:38 +00:00

718 lines
31 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<%
/* $Revision$
$Id$
File: res_reservering.asp
Description: Muteerscherm voor reserveringen
Parameters: (allemaal optioneel)
rsv_ruimte_key: te bewerken
restype: "R" of "CV" om (via CV) alleen catering/objecten te reserven. "R" is default.
verynew: we zijn heel erg nieuw (net aangemaakt)
gevolg:==> Bij CV wordt catering direct geopend
==> ?? Automatisch multi voor alle deelreservingen ??
nowold: nog sterker dan verynew, negeer verynew.
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="res.inc" -->
<!-- #include file="../fin/fin_verkoopfactuur.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js: ["jQuery-ui.js"],
css: ["../shared/suggest/suggest.css"]}); // css voor child frames
// AUTORISATIEPARAMETERS
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
if (rsv_ruimte_key > 0)
{
var urole = getQParamSafe("urole", "fe");
var autolike = getQParamInt("autolike", 0) == 1;
}
else
var urole = getQParamSafe("urole", "xx"); // autodetect
var orgurole = urole;
var verynew = getQParamInt("verynew", 0) == 1 && getQParamInt("nowold", 0) != 1;
var transitParam = "";
if (verynew)
transitParam += "&verynew=1";
// res_deel_key: Te reserveren deel, Vanuit planbord geklikt
// activiteit_key: res_activiteit_key die we van plan zijn. Wordt automatisch bevroren
// host_key: gastheer, vanuit PACTA
// ab_mode: zie res_default_CVAB_mode
// alg_ruimte_key, handig bij bezorgen
// flex_defaults pacta, bijv: bsn=12345678&plaats=Enschede&postcode=1234AB
transitParam += buildTransitParam(["res_deel_key", "res_artikel_key", "res_ruimte_key", "disc_key", "host_key", "activiteit_key",
"res_van", "res_tot", "ab_mode", "alg_ruimte_key",
"flex_defaults", "rsv_copy_key","rsv_is_serie","pool",
"bez_omschr", // vanuit Outlook
"bez_naam", "bez_bedrijf"]); // alleen eerste naam/bedrijf
var res_deel_key = getQParamInt("res_deel_key", -1);
var res_artikel_key = getQParamInt("res_artikel_key", -1);
// Nog een alternatieve ingang: als een (hoofd)reserveringskey wordt meegegeven en geen deelreservernmg
// Dan gaat het toch niet om een nieuwe reservering, maar iets dat info wil over deze xreservering
// Dan zoeken we er de eerste deelreservering bij om verder te gaan
if (rsv_ruimte_key == -1 && res_deel_key == -1 && res_artikel_key == -1)
{
var res_reservering_key = getQParamInt("reservering_key", -1);
if (res_reservering_key > 0)
{
sql = "SELECT MIN(res_rsv_ruimte_key) res_rsv_ruimte_key"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_verwijder IS NULL"
+ " AND res_reservering_key = " + res_reservering_key
oRs = Oracle.Execute(sql);
if (!oRs.eof)
rsv_ruimte_key = oRs("res_rsv_ruimte_key").value;
}
}
// Overige parameters
if (rsv_ruimte_key == -1)
{
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
if (urole == "xx") // Vanuit prodsearch, probeer intelligente autoUrole
{ // Let op: als FSN#22774 wordt doorgevoerd is urole niet meer nodig in dit bestand
// en kan onderstaande code waarschijnlijk naar res_edit_rsv_ruimte.asp
if (res_ruimte_key > 0)
{
sql = "SELECT 1"
+ " FROM fac_functie ff,"
+ res.fac_v_my_res_ruimte_write + "rr"
+ " WHERE ff.fac_functie_code = 'WEB_RESFOF'"
+ " AND res_ruimte_key = " + res_ruimte_key
+ " AND ff.fac_functie_key = rr.fac_functie_key"
+ " AND prs_perslid_key = " + user_key;
oRs = Oracle.Execute(sql);
urole = oRs.Eof?"fe":"fo";
}
else if (res_deel_key > 0 || res_artikel_key > 0)
{
if (res_deel_key > 0)
sql = "SELECT rd.res_discipline_key"
+ " FROM res_deel rd"
+ " WHERE res_deel_key = " + res_deel_key;
else
sql = "SELECT ra.res_discipline_key"
+ " FROM res_artikel ra"
+ " WHERE res_artikel_key = " + res_artikel_key;
var oRs = Oracle.Execute(sql);
var disc_key = oRs("res_discipline_key");
var canFOF = user.checkAutorisation("WEB_RESFOF", true, disc_key);
urole = canFOF?"fo":"fe";
}
else
{
var autfunctions = { fo: "WEB_RESFOF", fe: "WEB_RESUSE" };// pas op voorkeursvolgorde!
urole = user.autoUrole("fo", autfunctions, false); // false->verplicht, je moet 1 van de 2 hebben
}
}
// Is er een srtactiviteit meegegeven
var srtact = getQParamInt("srtact", -1);
// Is er een activiteit meegegeven, dan kan de srtactiviteit hieruit gehaald worden.
var act_key = getQParamInt("activiteit_key", -1);
var bezoeker = true;
if (act_key > 0)
{
var sql_a = "SELECT res_srtactiviteit_key"
+ " , res_activiteit_bezoeker"
+ " FROM res_activiteit"
+ " WHERE res_activiteit_key = " + act_key;
var oRs_a = Oracle.Execute(sql_a);
if (!oRs_a.eof)
srtact = oRs_a("res_srtactiviteit_key").value;
bezoeker = oRs_a("res_activiteit_bezoeker").value == 1;
oRs_a.Close();
}
var restype;
if (srtact > 0)
{
// Bepalen restype uit srtactiviteit.
var sql = "SELECT sa.res_srtactiviteit_soort"
+ " FROM res_srtactiviteit sa"
+ " WHERE sa.res_srtactiviteit_key = " + srtact;
var oRs = Oracle.Execute(sql);
var restype = oRs("res_srtactiviteit_soort").value == 0? "R" : "CV";
}
else
// Dan is restype meegegeven.
var restype = getQParam("restype", "R"); // Default gaan we een ruimte reserveren
var rrr = { rsv_ruimte_key : -1,
reservering_ispool : getQParamInt("pool",0)==1,
reservering_key : -1,
has_visitors: bezoeker
}
//FCLTHeader.Title(restype=='R'?L("lcl_menu_rooms"):L("lcl_menu_res_fe_objects"));
}
else // Bestaande reservering
{
// Zoek zo snel mogelijk info van res_rsv_ruimte op
sql = "SELECT rr.res_reservering_key"
+ " , rr.res_reservering_ispool"
+ " , alg_ruimte_key"
+ " , res_rsv_ruimte_volgnr"
+ " , res_rsv_ruimte_verwijder"
+ " , res_rsv_ruimte_dirtlevel"
+ " FROM res_reservering rr,"
+ " res_rsv_ruimte rrr"
+ " WHERE rr.res_reservering_key = rrr.res_reservering_key AND"
+ " res_rsv_ruimte_key = " + rsv_ruimte_key
oRs = Oracle.Execute(sql);
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
reservering_key : oRs("res_reservering_key").value,
reservering_ispool : oRs("res_reservering_ispool").value == 1,
rsv_ruimte_volgnr : oRs("res_rsv_ruimte_volgnr").value,
rsv_ruimte_verwijder: oRs("res_rsv_ruimte_verwijder").value,
rsv_ruimte_dirtlevel: oRs("res_rsv_ruimte_dirtlevel").value,
has_visitors : true
};
restype = oRs("alg_ruimte_key").Value? "CV" : "R";
oRs.Close()
FCLTHeader.Title(L("lcl_reservation"));
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
rrr.has_visitors = this_res.res_has_visitors;
var hasFOBOread = this_res.canReadFO || this_res.canReadBO;
user.auth_required_or_abort(this_res.canReadAny); // Meeste diepere schermen controleren ook zelf wel (UWVA#20446: bez nog niet).
// Veelgevraagd: autoswitch naar fo als geen fe-schrijfrechten
if (urole == "fe" && !this_res.canWrite("WEB_RESUSE") && this_res.canWrite("WEB_RESFOF"))
{
urole = "fo";
}
}
// Mag ik ook BEZ doen (met ongeveer dezelfde rol als RES)?
// Functioneel nagaan wat we met BO eigenlijk moeten
var bezauthparams = user.checkAutorisation({ fe: "WEB_BEZUSE", bo: "WEB_BEZBOF", fo: "WEB_BEZFOF", mi: "WEB_BEZBAC"} [urole], true);
var mldauthparams = user.checkAutorisation({ fe: "WEB_MLDUSE", bo: "WEB_MLDBOF", fo: "WEB_MLDFOF", mi: "WEB_MLDBAC"} [urole], true);
var resauthParams = user.checkAutorisation("WEB_RESMSU", true);
var mayShow_bez_desk = (resauthParams ? true : false ) && rrr.reservering_ispool;
var showMldFrame = (rsv_ruimte_key > 0 && mldauthparams && S("res_with_mld") == 1);
if (showMldFrame && urole == 'fe') // fe krijgt geen Add knop. Als er dan ook geen meldingen zijn wil ik het hele frame niet zien
{
var sql = "SELECT COUNT(1) FROM mld_melding WHERE res_rsv_ruimte_key=" + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
showMldFrame = oRs(0).Value > 0;
oRs.Close();
}
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script>
var rsv_ruimte_key=<%=rsv_ruimte_key%>; // kan na wisselen deelres veranderen
$(document).ready(function ()
{
<% if (rsv_ruimte_key > 0)
{ %>
FcltMgr.setTitle("<%=L("lcl_reservation") + " " + rrr.reservering_key + "/" + rrr.rsv_ruimte_volgnr%>", {hot: false});
<% }
else
{ %>
FcltMgr.setTitle(L("lcl_res_new_reservation"), {hot: true});
FcltMgr.startEdit($("#roomFrame")[0].contentWindow);
<% }
if (verynew && restype == "CV") // Indien verynew dan geldt (rsv_ruimte_key > 0)
{ // direct naar edit mode
%>
FcltMgr.startEdit($("#objcatFrame")[0].contentWindow); // het window is over 1 seconde weg maar onze overlays staan dan al goed
$("#objcatFrame")[0].src = "res_edit_objcat.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%><%=transitParam%>&width_px=" + $(window).width();
<% } %>
});
function refreshall(data)
{
if (data.refresh)
window.location.href = "res_reservering.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%><%=transitParam%>";
}
function roomClose(params)
{
<% if (rsv_ruimte_key == -1)
{
var verynew=1;
if (res_deel_key > 0)
verynew=0; // hij is opgeslagen
%>
if (params.cancel)
{
FcltMgr.closeDetail(window, { cancel: true } );
return true;
}
// nieuwe reservering, ga verder in 'verynew' modus
if (!params.keepForm)
window.location.href = "res_reservering.asp?urole=<%=urole%>&verynew=<%=verynew%><%=transitParam%>&rsv_ruimte_key=" + params.rsv_ruimte_key;
<% }
else
{ // Bestaande res bewerkt, switch naar show-mode
%>
if (!params.keepForm)
{
if (params.cancel)
$("#roomFrame")[0].src = "res_show_rsv_ruimte.asp?urole=<%=urole%>&rsv_ruimte_key=" + rsv_ruimte_key;
else // Complete refresh: allerlei dirty<-->clean toggles mogelijk
window.location.href="res_reservering.asp?urole=<%=urole%><%=transitParam%>&rsv_ruimte_key="+rsv_ruimte_key;
}
<% } %>
};
// In verynew mode klagen we zelfs als je cancel drukt.
var everCV = false;
function objcatClose(params)
{ // Als deze functie wordt aangeroepen dan geldt (rsv_ruimte_key > 0)
everCV |= params.hasAnyCV;
<% if (restype == "CV")
{
if (verynew)
{ %>
if (params.cancel && !everCV)
FcltMgr.alert(L("lcl_res_no_CV_yet")); // Nog niets gereserveerd.
<% } %>
if (!params.cancel && !params.hasAnyCV)
FcltMgr.alert(L("lcl_res_no_CV_yet")); // Nog niets gereserveerd.
<% } %>
if (!params.keepForm)
{
if (params.cancel)
$("#objcatFrame")[0].src = "res_show_objcat.asp?urole=<%=urole%>&rsv_ruimte_key=" + rsv_ruimte_key;
else // Complete refresh: allerlei dirty<-->clean toggles mogelijk. Wel de verynew er van af
window.location.href="res_reservering.asp?urole=<%=urole%>&nowold=1<%=transitParam%>&rsv_ruimte_key=" + rsv_ruimte_key;
}
};
function MultiSave()
{
if (FcltMgr.mayEdit(window))
FcltMgr.openModalDetail("./res_edit_multi.asp?urole=<%=urole%>&rsv_ruimte_key=" + rsv_ruimte_key,
"<%=L("lcl_res_multiple_save")%>", { callback: refreshall });
}
function makeMulti()
{
if (FcltMgr.mayEdit(window))
FcltMgr.openModalDetail("./res_multi_create.asp?urole=<%=orgurole%>&rsv_ruimte_key=" + rsv_ruimte_key,
"<%=L("lcl_res_add_deelres")%>", { callback: refreshall });
}
function ruimteErbij(rtype)
{
if (FcltMgr.mayEdit(window))
window.location.href="res_reservering.asp?urole=<%=urole%>&rsv_ruimte_key=-1&rsv_copy_key=" + rsv_ruimte_key + "&restype=" + rtype;
}
function GaNaar()
{
if (FcltMgr.mayEdit(window))
{
rsv_ruimte_key = $("#selectedDates").val();
window.location.href="res_reservering.asp?urole=<%=urole%><%=transitParam%>&rsv_ruimte_key="+rsv_ruimte_key;
}
}
function res_print()
{
var wnd = window.open('../res/res_xml.asp?res_key=<%=rrr.reservering_key%>');
wnd.focus()
// doet de XSL maar: wnd.print();
}
function res_mail()
{ // Als deze functie wordt aangeroepen geldt rsv_ruimte_key > 0 (Bestaande reserveringen). hasFOBOread is dan bekend
<% var defemail_key = -1;
// van de aanvrager=melder van initieel getoonde deelreservering
sql = " SELECT rr.res_rsv_ruimte_contact_key, res_rsv_ruimte_volgnr"
+ " FROM res_rsv_ruimte rr"
+ " WHERE rr.res_rsv_ruimte_key=" + rsv_ruimte_key;
oRs = Oracle.Execute( sql);
if (!oRs.eof)
defemail_key = oRs("res_rsv_ruimte_contact_key").value;
subject = L("lcl_reservation") + ' ' + rrr.reservering_key;
url = "../shared/queuemail.asp?pcode=RES2MA&defemail_key=" + defemail_key
+ "&key=" + rrr.reservering_key
+ "&subject=" + Server.URLencode(subject)
+ "&mailfrom=" + (hasFOBOread? 1 : 0);
%>
var subject = "<%=safe.jsstring(subject)%>";
var url= "<%=safe.jsstring(protectQS.create(url))%>";
FcltMgr.openModalDetail(url, subject);
}
<% if (mayShow_bez_desk)
{
%>
function res_oproep()
{
<%
url = "./appl/res/res_bez_desk.asp"
+ "?key=" + rrr.reservering_key;
%>
var subject = L("lcl_res_bez_oproepscherm");
var url = "<%=safe.jsstring(url)%>";
FcltMgr.openDetail(url, subject)
}
<% }
%>
// Wordt automagisch aangeroepen als tabje wordt geactiveerd
function fcltontabshow(isHot)
{
if (isHot)
return;
$("iframe#objcatFrame").each(function ()
{
this.src = this.src;
});
}
</script>
</head>
<body>
<div id="edit">
<% if (rsv_ruimte_key > 0)
{
var page = "res_show_rsv_ruimte.asp?urole=" + urole + "&rsv_ruimte_key=" + rsv_ruimte_key + (autolike?"&autolike=1":"");
// ============================================
// Voorzieningen info
// ============================================
sqlD = "SELECT ra.res_rsv_ruimte_key, "
+ " res_rsv_artikel_verwijder datumdel, "
+ " CASE WHEN (res_rsv_artikel_dirtlevel < 256 OR res_rsv_artikel_verwijder IS NOT NULL)"
+ " THEN 0" // afwijkende tijden niet moeilijk over doen
+ " ELSE res_rsv_artikel_dirtlevel"
+ " END dirtlevel"
+ " FROM res_rsv_artikel ra "
+ " UNION ALL "
+ "SELECT res_rsv_ruimte_key, "
+ " res_rsv_deel_verwijder datumdel, "
+ " CASE WHEN (res_rsv_deel_dirtlevel < 256 OR res_rsv_deel_verwijder IS NOT NULL)"
+ " THEN 0" // afwijkende tijden niet moeilijk over doen
+ " ELSE res_rsv_deel_dirtlevel"
+ " END dirtlevel"
+ " FROM res_rsv_deel rd "
// ============================================
// Show list of reservation-rooms
// ============================================
if (restype == "R")
{
sql = "SELECT rm.res_rsv_ruimte_key"
+ " ," + lcl.xsqla('r.res_ruimte_nr', 'r.res_ruimte_key')
+ " , res_rsv_ruimte_van"
+ " , res_rsv_ruimte_tot"
+ " , rm.res_rsv_ruimte_volgnr"
+ " , rm.res_rsv_ruimte_verwijder"
+ " , rm.res_rsv_ruimte_dirtlevel"
+ " , COUNT (*) cnt, COUNT (datumdel) cntdeleted, SUM(dirtlevel) dirtlevel"
+ " FROM res_rsv_ruimte rm, res_ruimte_opstelling ro, res_ruimte r"
+ " , (" + sqlD + ") rec2 "
+ " WHERE rm.res_rsv_ruimte_key = rec2.res_rsv_ruimte_key (+) "
+ " AND rm.res_ruimte_opstel_key = ro.res_ruimte_opstel_key"
+ " AND ro.res_ruimte_key = r.res_ruimte_key"
+ " AND res_reservering_key = " + rrr.reservering_key
+ " AND (res_rsv_ruimte_verwijder IS NULL OR rm.res_rsv_ruimte_key = " + rsv_ruimte_key + ")"
+ " GROUP BY res_rsv_ruimte_van, res_rsv_ruimte_tot"
+ " , rm.res_rsv_ruimte_key"
+ " , " + lcl.xsql('r.res_ruimte_nr', 'r.res_ruimte_key')
+ " , res_rsv_ruimte_volgnr"
+ " , res_rsv_ruimte_verwijder"
+ " , res_rsv_ruimte_dirtlevel"
+ " ORDER BY res_rsv_ruimte_van, res_rsv_ruimte_key";
}
else
{
sql = "SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot"
+ " , COUNT (*) cnt, COUNT (datumdel) cntdeleted, SUM(dirtlevel) dirtlevel"
+ " , rr.res_rsv_ruimte_key, res_rsv_ruimte_volgnr"
+ " , rr.res_rsv_ruimte_verwijder"
+ " , res_rsv_ruimte_dirtlevel"
+ " FROM res_rsv_ruimte rr"
+ " , (" + sqlD + ") rec2 "
+ " WHERE rr.res_rsv_ruimte_key = rec2.res_rsv_ruimte_key (+) "
+ " AND res_reservering_key = " + rrr.reservering_key
+ " AND (res_rsv_ruimte_verwijder IS NULL OR rr.res_rsv_ruimte_key = " + rsv_ruimte_key + ")"
+ " GROUP BY res_rsv_ruimte_van, res_rsv_ruimte_tot"
+ " , rr.res_rsv_ruimte_key"
+ " , res_rsv_ruimte_volgnr"
+ " , res_rsv_ruimte_verwijder"
+ " , res_rsv_ruimte_dirtlevel"
+ " ORDER BY res_rsv_ruimte_van";
}
oRs = Oracle.Execute(sql);
var multiDeel = false;
var anyDirty = [];
if (!oRs.eof)
{ %>
<div id="resselector"><%
if (rrr.reservering_ispool)
Response.Write("<span id='multires'>"+L("lcl_respool")+"</span>");
// Pas als er meer dan 1 deelreservering is, is een listbox nodig
var options = [];
var selclass = "";
//======================================
while (!oRs.eof)
{
rKey = oRs("res_rsv_ruimte_key").Value;
d1Key = new Date(oRs("res_rsv_ruimte_van").Value);
d2Key = new Date(oRs("res_rsv_ruimte_tot").Value);
var tekst = toDateTimeString(d1Key) + "-" + toTimeString(d2Key)
if (restype == "R")
{
opttitle = "title='" + safe.htmlattr(oRs("res_ruimte_nr").value) + "' ";
}
else
{
opttitle = "title='" + (oRs("cnt") - oRs("cntDeleted")) + " " + L("lcl_reserved_cons") + "/" + L("lcl_reserved_object") + "' ";
}
volgnrTxt = oRs("res_rsv_ruimte_volgnr").value + ".";
var optclass = "";
if ((oRs("res_rsv_ruimte_dirtlevel") & res.dirtlevel.ruimte.notavailable) || oRs("dirtlevel").Value > 0)
{
anyDirty.push(rKey);
tekst = L("lcl_res_BAD_reservation_pre") + tekst + L("lcl_res_BAD_reservation_post");
optclass = "class='fatal' ";
}
sel = "";
if (oRs("res_rsv_ruimte_key").value == rsv_ruimte_key)
{
var sel = " SELECTED "
selclass = optclass;
}
options.push("<option "+optclass+" "+opttitle+" value="+rKey+ " " + sel + ">" + volgnrTxt + "&nbsp;" + tekst + "</option>");
oRs.Movenext();
if (!oRs.Eof) multiDeel = true;
}
if (options.length > 1) {
%>
<select id="selectedDates" <%=selclass%> onchange='GaNaar()'>
<%= options.join("") %>
</select>
<% }
}
if (anyDirty.length)
{
var txt = null;
if (anyDirty.length > 1)
var txt = L("lcl_res_fail_multi1") + anyDirty.length + L("lcl_res_fail_multi2");
else if (anyDirty[0] != rsv_ruimte_key) // onszelf geven we al wel op andere manieren aan
var txt = L("lcl_res_fail_multi1s");
if (txt) { %>
<script type="text/javascript">
$(document).ready(function() {FcltMgr.alert("<%=safe.jsstring(txt)%>")});
</script>
<% }
}
var buttons = [];
if (this_res.couldCreate)
{
buttons.push( {id: "repeatbutton", title: L("lcl_res_add_deelres"), icon: "resrepeat.png", action: "makeMulti()" } );
if (restype == "R")
buttons.push( {title: L("lcl_res_add_deelresruimte"), icon: "plus.png", action: "ruimteErbij('" + restype + "')" } );
if (restype == "CV")
buttons.push( {title: L("lcl_res_add_deelresreservering"), icon: "plus.png", action: "ruimteErbij('" + restype + "')" } );
}
if (multiDeel && this_res.couldCreate)
{
buttons.push({ title: L("lcl_res_multiple_save"), icon: "doc_page.png", action: "MultiSave()" });
buttons.push({ icon: "print.png", title: L("lcl_print"), action: 'res_print()' });
buttons.push({ icon: "email.png", title: L("lcl_noti_res_email"), action: "res_mail()" });
}
if (mayShow_bez_desk)
buttons.push({ icon: "magnifier.png", title: L("lcl_res_bez_oproepscherm"), action: "res_oproep()" });
if (rrr.rsv_ruimte_verwijder == null && buttons.length)
{
%><div class="buttoncontainer" style="float:right;"><%
CreateButtons(buttons, { showIcons: true} );
%></div><%
}
//======================================
%></div><%
}
else
{ // rsv_ruimte_key == -1
var page = "res_edit_rsv_ruimte.asp?urole=" + urole + "&res_ruimte_key=" + res_ruimte_key + transitParam;
// srtactiviteit moeten we weten om toe te kunnen voegen aan page, anders vragen.
if (srtact > 0)
{
page += "&srtact=" + srtact;
}
else
{ //Dan maar vragen
var buttons = [];
// Give the user a list and let him select a srtactiviteit.
mySRTsql = // Voor alle res_srtactiviteiten met zijn ins_disciplines eronder moeten we schrijf rechten hebben.
// Om een reservering toe te kunnen voegen vereist FO rechten, dit is ook het geval bij BO reserveringen.
"SELECT DISTINCT sa.res_srtactiviteit_key"
+ ", "+lcl.xsqla('sa.res_srtactiviteit_omschrijving', 'sa.res_srtactiviteit_key')
+ " FROM res_srtactiviteit sa"
+ ", res_activiteit ra"
+ ", res_activiteitdiscipline ad"
+ ", res_discipline rd"
+ " WHERE sa.res_srtactiviteit_key = ra.res_srtactiviteit_key"
+ " AND ra.res_activiteit_key = ad.res_activiteit_key"
+ " AND sa.res_srtactiviteit_verwijder IS NULL"
+ " AND rd.ins_discipline_key = ad.res_discipline_key"
+ " AND rd.ins_discipline_key IN (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ ", fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = " + safe.quoted_sql({ fe: "WEB_RESUSE", bo: "WEB_RESBOF", fo: "WEB_RESFOF", mi: "WEB_RESBAC"} [urole])
+ " AND (g.fac_gebruiker_alg_level_write < 9"
+ " AND g.fac_gebruiker_prs_level_write < 9)"
+ " AND g.prs_perslid_key = " + user_key + ")"
+ " AND sa.res_srtactiviteit_soort = " + (restype == "R"? "0" : "1")
+ (res_deel_key > 0 // Alleen die activiteitsoorten die de gekozen voorziening onder een van de bijbehorende activiteiten hebben gedefinieerd.
? " AND EXISTS (SELECT rd1.res_deel_key"
+ " FROM res_deel rd1"
+ " WHERE rd1.res_discipline_key = rd.ins_discipline_key"
+ " AND rd1.res_deel_key = " + res_deel_key + ")"
: "")
+ (res_ruimte_key > 0 // Alleen die activiteitsoorten die mogelijk zijn in deze ruimte.
? " AND sa.res_srtactiviteit_key IN (SELECT rs.res_srtactiviteit_key"
+ " FROM res_ruimte rr"
+ " , res_activiteitdiscipline r"
+ " , res_activiteit ra"
+ " , res_srtactiviteit rs"
+ " WHERE rr.res_discipline_key = r.res_discipline_key"
+ " AND r.res_activiteit_key = ra.res_activiteit_key"
+ " AND ra.res_srtactiviteit_key = rs.res_srtactiviteit_key"
+ " AND rr.res_ruimte_key = " + res_ruimte_key + ")"
: "")
+ " ORDER BY 2"
oRs = Oracle.Execute(mySRTsql);
while (!oRs.eof)
{
var tmp_srtact = oRs("res_srtactiviteit_key").value;
buttons.push({ title: oRs("res_srtactiviteit_omschrijving").value,
action: "srtact=" + tmp_srtact + ";$('div#dmodal').dialog('close').remove();"
});
oRs.MoveNext();
}
if (buttons.length == 0)
{
shared.simpel_page(L("lcl_no_auth")); // Response.End;
}
else if (buttons.length == 1)
{ // Er is maar <20><>n srtactiviteit die direct geselecteerd dient te worden.
srtact = tmp_srtact
page += "&srtact=" + srtact;
}
else
{
var tpage = page;
page="../shared/empty.html?urole=" + urole; // Achtergrondpagina tijdens popup keuze
%> <script type='text/javascript'>
srtact = -1;
function dialogClose()
{
if (srtact == -1)
FcltMgr.closeDetail(window, { cancel: true } );
else
window.location.href = "res_reservering.asp?urole=<%=urole%><%=transitParam%>&srtact=" + srtact;
}
// Normaal gebruik je hier $(document).ready
// Dat is echter voor IE9 een fractie te vroeg en soms was FcltMgr.fixActiveelementError niet genoeg
// Dan maar $(window).load die een fractie later is.
$(window).load(function()
{
var params = { title: "<%=L("lcl_mld_choose_srt")%>",
modal: true,
width : 300,
resizable : false,
close : dialogClose
};
FcltMgr.fixActiveelementError();
$('div#dmodal').dialog(params).dialog('open');
});
</script>
<div id="dmodal" style="display:none">
<% if (buttons.length)
CreateButtons(buttons, { vertical: 1, isDialog: true } )
else
Response.write(L("lcl_mld_choose_na")); %>
</div>
<% }
}
}
IFRAMER("roomFrame", page, { title: null,
initHeight: "400px",
FcltClose: "roomClose" });
//======================================
if (rsv_ruimte_key > 0 || srtact > 0)
{
if (rsv_ruimte_key < 0)
var page = "res_save_first.asp?module=RES";
else if (verynew && restype == "CV" && res_artikel_key < 0)
var page = "../shared/empty.html"; // komt wel in document.ready
else
var page = "res_show_objcat.asp?urole=" + urole + "&rsv_ruimte_key=" + rsv_ruimte_key + transitParam;
IFRAMER("objcatFrame", page, { FcltClose: "objcatClose" });
//======================================
if (rrr.rsv_ruimte_verwijder == null && bezauthparams && rrr.has_visitors) //TODO Ook nog check op IsBldVisitable();
{
if (rsv_ruimte_key < 0)
var page = "res_save_first.asp?module=BEZ";
else
{
var page = "../bez/bez_show_bezoekers.asp?urole=" + urole + "&rsv_ruimte_key=" + rsv_ruimte_key + transitParam;
if (rrr.rsv_ruimte_dirtlevel & res.dirtlevel.ruimte.nocatering)
{
var sql = "SELECT 1 FROM bez_afspraak WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
if (oRs.Eof)
var page = "res_save_first.asp?module=BEZ";
oRs.Close();
}
}
IFRAMER("bezFrame",
page,
{ title: (S("bez_sel_internpersoon") == 1? L("lcl_res_frame_visitors") : L("lcl_res_frame_visitors_external")), refreshOnClose: true });
}
//======================================
if (showMldFrame)
{
IFRAMER("mldFrame",
"../mld/mld_search_list.asp?urole=" + urole + "&rsv_ruimte_key=" + rsv_ruimte_key,
{ title: L("lcl_complains"), refreshOnClose: true });
}
verkoopfactuur_IFRAMER('reservering', rsv_ruimte_key);
}
%>
</div>
</body>
</html>