STAM#52848 QR code uitlenen / innemen

svn path=/Website/trunk/; revision=39117
This commit is contained in:
Alex Tiehuis
2018-09-11 15:28:08 +00:00
parent 3d52abbce5
commit 67720e70aa

485
APPL/PDA/ins_deel_free.asp Normal file
View File

@@ -0,0 +1,485 @@
<%@language = "javascript" %>
<%
/* $Revision$
$Id$
File: ins_deel_free.asp
Description: Modal screen
Parameters: ins_key of
res_deel_key (dan zoeken we ins_key zelf wel op)
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/contactpersoonselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../ins/ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/objectselector.inc" -->
<!-- #include file="../ins/ins.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery", "suggest"],
js: ["jquery-ui.js"]
});
var has_rsvdeel = false;
var qrc = getQParamInt("qrc", 0) != 0;
var rsv_deel_key = getQParamInt("rsv_deel_key", -1); // We komen uit een bestaande reservering
if (rsv_deel_key > 0)
{
var sql = "SELECT res_ins_deel_key"
+ " FROM res_rsv_deel rrd,"
+ " res_deel rd"
+ " WHERE rrd.res_deel_key = rd.res_deel_key"
+ " AND res_rsv_deel_key = " + rsv_deel_key;
var oRs = Oracle.Execute(sql);
obj_key = oRs("res_ins_deel_key").Value;
oRs.Close();
}
else
var obj_key = getQParamInt("ins_key", -1);
var adapt = getQParamInt("adapt", 0) == 1;
// Indien het een sleutel of cilinder betreft dan WEB_SLEFOF rechten i.p.v. WEB_INSFOF rechten.
if (obj_key > 0 && ins.isSleCil(obj_key))
var autfunction = "WEB_SLEFOF";
else
var autfunction = "WEB_INSFOF";
var authparams = user.checkAutorisation(autfunction);
var isLendOut = false;
var isCil = false;
if (obj_key > 0)
{ // Object uitlenen of innemen
var sql = "SELECT s.ins_srtdeel_key"
+ ", d.ins_deel_omschrijving"
+ ", " + lcl.xsqla('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key')
+ ", s.ins_srtgroep_key"
+ ", d.ins_alg_ruimte_key_org"
+ ", d.ins_alg_ruimte_key"
+ ", d.ins_alg_ruimte_type"
+ " FROM ins_deel d"
+ ", ins_srtdeel s"
+ ", ins_srtgroep g"
+ ", ins_tab_discipline dis"
+ " WHERE ins_deel_key = " + obj_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key";
var oRs = Oracle.Execute(sql);
var desc = oRs("ins_deel_omschrijving").value;
var sort = oRs("ins_srtdeel_omschrijving").value;
var sort_key = oRs("ins_srtdeel_key").value;
var algprs_key = oRs("ins_alg_ruimte_key").value; // alg_key (niet uitgeleend) of prs_key (uitgeleend)
var alg_ruimte_type = oRs("ins_alg_ruimte_type").value; // alg_key (niet uitgeleend) of prs_key (uitgeleend)
isLendOut = oRs("ins_alg_ruimte_key_org").value != null;
isCil = oRs("ins_srtgroep_key").value == S("cil_ins_srt_groep_key");
oRs.Close();
if (isCil)
{
sql = "SELECT aor.alg_locatie_key"
+ " , aor.alg_gebouw_key"
+ " , aor.alg_terreinsector_key"
+ " , aor.alg_verdieping_key"
+ " , aor.alg_ruimte_key"
+ " , aor.alg_type"
+ " FROM alg_v_allonroerendgoed aor"
+ " WHERE aor.alg_onroerendgoed_keys = " + algprs_key;
var oRs_1 = Oracle.Execute(sql);
var loc_key = oRs_1("alg_locatie_key").value;
var bld_key = oRs_1("alg_gebouw_key").value;
var ter_key = oRs_1("alg_terreinsector_key").value;
var flr_key = oRs_1("alg_verdieping_key").value;
var room_key = oRs_1("alg_ruimte_key").value;
var alg_type = oRs_1("alg_type").value;
oRs_1.Close();
}
var default_prs_key = null;
var restxt = "";
var hasreservering = false;
var has_rsvdeel = (rsv_deel_key > 0) && !isLendOut;
var res_rsv_deel_key = null;
// Is het object ook reserveerbaar?
var sql = "SELECT res_deel_key,"
+ " res_deel_opmerking"
+ " FROM res_deel"
+ " WHERE res_ins_deel_key = " + obj_key;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof)
{
restxt = L("lcl_ins_lend_no_res"); // Geen toekomstige reservering gevonden
var res_deel_key = oRs("res_deel_key").Value;
if (!isLendOut)
{
// zoek contactpersoon van eerstkomende reservering
sql = "SELECT rrr.res_reservering_key,"
+ " rrr.res_rsv_ruimte_volgnr,"
+ " rrr.res_rsv_ruimte_van, "
+ " rrr.res_rsv_ruimte_host_key,"
+ " rrd.res_rsv_deel_key,"
+ S("prs_pers_string") + " host_naam"
+ " FROM res_rsv_ruimte rrr,"
+ " res_rsv_deel rrd,"
+ " prs_perslid p"
+ " WHERE res_rsv_ruimte_host_key = p.prs_perslid_key(+)"
+ " AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
+ " AND res_rsv_deel_verwijder IS NULL"
+ " AND res_deel_key = " + res_deel_key;
if (rsv_deel_key > 0)
sql += " AND res_rsv_deel_key = " + rsv_deel_key;
else
sql += " AND res_rsv_deel_tot > SYSDATE"
+ " ORDER BY res_rsv_deel_tot ASC"; // eerstkomende eerst
oRs2 = Oracle.Execute(sql);
if (!oRs2.Eof)
{
default_prs_key = oRs2("res_rsv_ruimte_host_key").Value; // gedachte is dat de gastheer daadwerkelijk naar
// de zaal gaat en de contactpersoon niet per se
restxt = L("lcl_ins_lend_next_res").format(
String(oRs2("res_reservering_key").value) + "/" + oRs2("res_rsv_ruimte_volgnr").value,
toDateTimeString(oRs2("res_rsv_ruimte_van").Value),
oRs2("host_naam").Value);
hasreservering = true;
res_rsv_deel_key = oRs2("res_rsv_deel_key").Value;
}
oRs2.Close();
}
}
oRs.Close();
}
else
{ // Dan moet er een prs_key meegegeven zijn. Object uitlenen
var dis_key = getQParamInt("dis_key", -1); // Discipline
var srtgroup = getQParamInt("srtgroup", -1); // Groep
var srtdeel = getQParamInt("srtdeel", -1); // Objectsoort
var prs_key = getQParamInt("prs_key", -1);
var cps_key = getQParamInt("cps_key", -1);
if (prs_key > 0)
{
var sql = "SELECT " + S("prs_pers_string") + " naam"
+ " FROM prs_perslid p"
+ " WHERE prs_perslid_key = " + prs_key;
var oRs = Oracle.Execute(sql);
var prs_naam = oRs("naam").value;
}
else
{ // er is een ocntactperson key meegegeven (cps_key > 0)
var sql = "SELECT prs_contactpersoon_naam naam"
+ " FROM prs_contactpersoon c"
+ " WHERE prs_contactpersoon_key = " + cps_key;
var oRs = Oracle.Execute(sql);
var prs_naam = oRs("naam").value;
}
var sort_key = -1;
}
%>
<html class="likemodal">
<head>
<%
FCLTMHeader.Generate();
%>
<script type="text/javascript">
$(function() {
if (window.sessionStorage.getItem("mobile_data_saved"))
{
window.sessionStorage.removeItem("mobile_data_saved");
jqToast(L("lcl_mobile_data_saved"));
}
});
function ins_submit()
{
document.activeElement.blur(); // trigger laatste onChanges
if (!validateForm("u2"))
return false;
var data = $("form").serializeArray();
protectRequest.dataToken(data);
function backAndReload(json)
{
window.sessionStorage.setItem("mobile_data_saved", true);
window.history.back();
window.parent.FcltMgr.reload();
}
$.post("../ins/ins_deel_free_save.asp",
data, //TODO: Gewoon submit van het formulier en ins_deel_free_save.asp hierop aanpassen.
McltCallbackAndThenAlways(backAndReload),
"json");
return true; // disable button
}
function ins_cancel()
{
window.history.back();
}
function updateSrtGroup(pautfunction, psrtgroup_arr, psrtdeel_arr)
{
// Object suggestbox leeg maken. checkExist moet dan false zijn en lastTry true.
sgObject.setValue(-1, "", true, false, null, true);
var ldis_key = $('#disc :selected').val();
$("#srtgroup").load("../Shared/loadGroup.asp",
{ autfunction: pautfunction,
disc_key_arr: ldis_key,
module: "ins",
required: 1,
emptyOption: "",
srtgroup: (psrtgroup_arr? psrtgroup_arr.join(",") : "")
}, // srtgroupChanged
function ()
{
// Laad de items
// Selecteer eventueel de initi<74>le items die meegegeven kunnen worden
updateSrtDeel(pautfunction, (psrtdeel_arr? psrtdeel_arr : []));
});
}
function updateSrtDeel(pautfunction, psrtdeel_arr)
{
// Object suggestbox leeg maken. checkExist moet dan false zijn en lastTry true.
sgObject.setValue(-1, "", true, false, null, true);
var lsrtgroup = $('#srtgroup :selected').val();
$("#srtdeel").load("../Shared/loadDeel.asp",
{ autfunction : pautfunction,
srtgroup_key_arr: lsrtgroup,
module: "ins",
srtdeel_arr: (psrtdeel_arr? psrtdeel_arr.join(",") : ""),
required: 1,
emptyOption: "",
multi: 1
});
}
function loadKenmerk()
{
var ins_key = $("#ins_key").val()
var s = "load_kenmerk.asp?urole=fo"
+ "&ins_key=" + ins_key
+ "&reado=0"
+ "&lendout=1"
+ "&srtdeel_arr=";
$("#insFlexList").load(s, function(txt)
{
FcltMgr.resized(window);
});
}
function onChangeGebouw()
{
var isGebouw = $("#bttype").val() == "B";
if ($("#bttype").val() == "B")
{ // Het is een gebouw
if (!$("#verdieping").hasClass("required"))
$("#verdieping").addClass("required");
if (!$("#ruimte").hasClass("required"))
$("#ruimte").addClass("required");
}
else
{ // Het is een terrein
$("#verdieping").removeClass("required");
$("#ruimte").removeClass("required");
}
}
function onChangeIsres()
{
if ($("#leen_res").is(":checked"))
$("#lent_out_person_show").removeClass("required");
if ($("#leen_vrij").is(":checked"))
$("#lent_out_person_show").addClass("required");
}
$(function()
{
$("[name=isres]").change(onChangeIsres);
onChangeIsres();
onChangeGebouw()
});
</script>
</head>
<body id="editbody" class="likemodal">
<%
PAGE_START({id: "ins-out-1-" + obj_key, dialog: true})
HEADER({title: isLendOut? L("lcl_ins_insinn") : L("lcl_ins_lend_out"), back:!qrc, home: !qrc});
CONTENT_START();
%>
<form name="u2"
action="<%=rooturl%>/appl/ins/ins_deel_free_save.asp"
method="post"
onsubmit="ins_submit();return false">
<input type="hidden" name="adapt" id="adapt" value="<%=adapt? 1 : 0%>">
<% if (obj_key > 0)
var blockheader = (desc);
else
var blockheader = (L("lcl_ins_lend_out_to") + " " + prs_naam);
// BLOCK_START("insUit", blockheader);
if (hasreservering)
{
Response.Write("<tr><td colspan='2' class='label'>"
+ "<input type='radio' name='isres' id='leen_res' value='" + res_rsv_deel_key + "' checked>"
+ "<label for='isres'>" + safe.html(restxt) + "</label></td></tr>"
);
}
else
{
if (!isLendOut)
Response.Write("<tr><td colspan='2'><div id='uitleen_restxt'>" + safe.html(restxt) + "</div></td></tr>");
}
if (obj_key < 0) // JGL: Vanuit bezoekersoverzicht?
{
// <!-- Discipline -->
sql = "SELECT ins_discipline_key"
+ ", " + lcl.xsqla('ins_discipline_omschrijving', 'ins_discipline_key')
+ " FROM ins_v_aanwezigdiscipline"
+ " WHERE ins_discipline_key IN"
+ " (SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
+ ", fac_functie f"
+ " WHERE g.prs_perslid_key = " + user_key
+ " AND f.fac_functie_key = g.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" + ")"
+ " ORDER BY " + lcl.xsql('ins_discipline_omschrijving', 'ins_discipline_key');
FCLTselector("disc",
sql,
{ initKey: dis_key,
label: L("lcl_discipline"),
onChange: 'updateSrtGroup("' + autfunction + '");', // disgroupChanged
emptyOption: (dis_key > 0? null : "")
});
// <!-- Group -->
FCLTselector("srtgroup",
"", // sql: lege selectbox die onload wordt geladen
{ initKey: srtgroup,
label: L("lcl_obj_group"), //L("lcl_obj_inf_name")
onChange: 'updateSrtDeel("' + autfunction + '");', // srtgroupChanged
emptyOption: ""
});
// <!-- Objectsoort -->
FCLTselector("srtdeel", // obj_sort
"", // sql: lege selectbox die onload wordt geladen
{ initKey: srtdeel,
label: L("lcl_obj_sort"),
onChange: 'sgObject.setValue(-1, "", true, false, null, true);', // Object suggestbox leegmaken. checkExist moet dan false zijn en lastTry true.
initEmpty: true,
emptyOption: ""
});
FCLTobjectselector("ins_key",
"sgObject",
{ label: L("lcl_ins_object"),
ins_key: obj_key,
urlAdd: [{urlParam: "disc_key", field: "disc"},
{urlParam: "srtgroup_key", field: "srtgroup"},
{urlParam: "srtdeel_key", field: "srtdeel"}],
onChange: "loadKenmerk",
required: true,
filtercode: "I", // Ik wil een object uitgeven, dus laat alle ingenomen objecten zien
autfunction: "WEB_INSFOF"
}); %>
<script type="text/javascript">
// Laad de groupen en de items
// Selecteer eventueel de initi<74>le groepen en items die meegegeven kunnen worden
$(function()
{
updateSrtGroup("<%=autfunction%>", ["<%=srtgroup%>"], ["<%=srtdeel%>"]);
});
</script>
<tr>
<td>
<input type="hidden" name="lent_out_person" id="lent_out_person" value="<%=prs_key > 0? prs_key : cps_key%>">
<input type="hidden" name="person_type" id="person_type" value="<%=prs_key > 0? "P" : "C"%>">
</td>
</tr>
<%
}
else
{
if (isCil)
{
FCLTplaatsselector(authparams.ALGwritelevel,
{ locatiekey: loc_key,
gebouwkey: alg_type == "G"? bld_key : ter_key,
verdiepingkey: flr_key,
ruimtekey: room_key,
suppressEmpty: true,
terrein: true,
eindlevel: 5,
requiredlevel: 5,
onGebChange: "onChangeGebouw();",
readonly: isLendOut
});
}
else
{
if (alg_ruimte_type == "C")
FCLTcontactpersoonselector("lent_out_person",
"sglent_out_person",
{ contactpersoonKey: (isLendOut? algprs_key : null),
label: L("lcl_contact_pers"),
extracode: "B",
required: true,
readonly: isLendOut
});
else
if (!has_rsvdeel)
FCLTpersoonselector("lent_out_person", // requestor
"sglent_out_person",
{ perslidKey: (isLendOut? algprs_key : default_prs_key),
label: (hasreservering ? "<input type='radio' name='isres' id='leen_vrij' value=''>" : "") + L("lcl_name"),
autlevel: authparams.PRSwritelevel,
required: true,
readonly: isLendOut
});
}
%>
<tr><td><input type="hidden" name="ins_key" id="ins_key" value="<%=obj_key%>"></td></tr>
<% }
// BLOCK_END();
generateFlexKenmerkBlock({ urole: "fo",
ins_key: obj_key,
srtdeelkey_array: sort_key > 0? [sort_key] : [],
lendout: true,
reado: false,
flexcolumns: 1
});
CONTROLGROUP_START();
BUTTON(isLendOut? L("lcl_ins_insinn") : L("lcl_ins_lend_out"), {click: "ins_submit()", dataicon: isLendOut? "arrow-d":"arrow-u"});
BUTTON(L("lcl_cancel"), {click: "ins_cancel()", dataicon: "back"} );
CONTROLGROUP_END();
IFACE.FORM_END();
%>
</form>
<%
CONTENT_END();
FOOTER();
PAGE_END();
%>
</body>
</html>