Files
Facilitor/APPL/INS/ins_move_deel_multi.asp
2025-03-25 10:00:27 +00:00

264 lines
8.6 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_move_multi.asp
Description: Multi verplaatsen van objecten
Parameters: ins_keys
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="ins.inc" -->
<%
FCLTHeader.Requires({ plugins:["suggest", "jQuery"]
, js: ["../ins/bind.js"]
});
var urole = getQParamSafe("urole");
var fronto = urole == "fo";
var backo = urole == "bo";
var minfo = urole == "mi";
var frontend = (!fronto && !backo && !minfo);
var autfunction = urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN";
var authparams = user.checkAutorisation(autfunction); // Nog nodig voor FCLTplaatsselector
var ins_key_arr = getQParamIntArray("ins_keys");
var tobemoved = 0;
var ingesloten = [];
// Bepaal de objecten in de selectie die ook echt gewijzigd kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
if (this_ins.canChange)
{
ingesloten.push(ins_key_arr[i]);
tobemoved++;
}
}
user.anything_todo_or_abort(tobemoved > 0); // We klagen niet over enkele wel en enkele niet
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
async function ins_submit()
{
if (!await validateForm("u2"))
return false;
$.post( $("form[name=u2]")[0].action
, $("[name=u2]").serialize()
, FcltCallbackAndThenAlways(ins_submit_callback)
, "json"
);
return true; // disable button
}
function ins_submit_callback(json)
{
iface.button.enable("btn_move_submit");
if (json.success)
FcltMgr.closeDetail(window, json);
}
function ins_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
function onChangeAfdeling(p_key)
{
if (p_key > 0)
{
setBind("A");
$("#locatie").removeClass("required");
}
}
function onChangePersoon(p_key)
{
if (p_key > 0)
{
setBind("P");
$("#locatie").removeClass("required");
}
}
function change1()
{ // plaats: gebouw/terrein
setBind('T');
$("#locatie").addClass("required");
}
function change2(p_key)
{ // plaats: ruimte
setBind('R');
$("#locatie").addClass("required");
}
function change3(p_key)
{ // plaats: werkplek
setBind('W');
$("#locatie").addClass("required");
}
</script>
</head>
<body class="fclt-modal" id="mod_insmultiMove">
<% MODAL_START(); %>
<%
var srtdeel_binding = 0xFF; // Veronderstel nog even dat alles mag
var maxlevel = 3;
var change = "";
sql = "SELECT DISTINCT sd.ins_srtdeel_binding"
+ " FROM ins_srtdeel SD"
+ " , ins_deel D"
+ " WHERE D.ins_srtdeel_key = SD.ins_srtdeel_key"
+ " AND D.ins_deel_key IN (" + ingesloten.join(",") + ")";
oRs = Oracle.Execute(sql);
while (!oRs.eof)
{ // bitwise and om alleen de overeenkomstige bindings over te houden.
srtdeel_binding = srtdeel_binding & oRs("ins_srtdeel_binding").value;
oRs.MoveNext();
}
oRs.close();
var heeftPlaats = (srtdeel_binding & (BIND_RUIMTE | BIND_WERKPL | BIND_TERREI));
var heeftAfdeling = (srtdeel_binding & (BIND_AFDELI));
var heeftPersoon = (srtdeel_binding & (BIND_PERSOO));
var heeftDeel = (srtdeel_binding & (BIND_INSDEE));
var change = "";
if (srtdeel_binding & (BIND_TERREI | BIND_RUIMTE | BIND_WERKPL))
{
change = "change1()";
maxlevel = 2;
}
if (srtdeel_binding & (BIND_RUIMTE | BIND_WERKPL))
{
change = "change2()";
maxlevel = 5;
}
if (srtdeel_binding & (BIND_WERKPL))
{
change = "change3()";
maxlevel = 6;
}
%>
<form name="u2"
action="ins_move_deel_multi_save.asp?urole=<%=urole%>&ins_keys=<%=ingesloten.join(",")%>"
method="post">
<%
MODAL_BLOCK_START("insMultiMove", L("lcl_select_locatie"), { icon: "fa-map-marker" })
if (heeftAfdeling)
{
FCLTafdelingselector( "afdelingkey"
, "sDept"
, { departmentKey: null
, label: L("lcl_prs_organisatie")
, autlevel: authparams.PRSwritelevel
, onChange: "onChangeAfdeling"
}
);
}
else
{
Response.Write("<input type='hidden' id='afdelingkey' name='afdelingkey' value='-1'/>");
}
if (heeftPersoon)
{
FCLTpersoonselector( "persoonkey"
, "sgPerson"
, { perslidKey: null
, label: L("lcl_name")
, autlevel: authparams.PRSwritelevel
, onChange: "onChangePersoon"
}
);
}
else
{
Response.Write("<input type='hidden' id='persoonkey' name='persoonkey' value='-1'/>");
}
if (heeftPlaats)
{
FCLTplaatsselector( authparams.ALGreadlevel
, { terrein: true
, startlevel: 2 /*locatie*/
, eindlevel: maxlevel
, terrein: (srtdeel_binding & BIND_TERREI)
, requiredlevel: 2
, filtercode: "INCVR"
, onLocChange: change
, escalateOnChUp: true
}
);
if (S("fg_ins_symbols"))
{
// zijn er objecten met coordinaten?
var sql = "SELECT count(*) aantal"
+ " FROM ins_deel"
+ " WHERE ins_deel_dwgx IS NOT NULL"
+ " AND ins_deel_key IN (" + ingesloten.join(",") + ")";
var oRs = Oracle.Execute(sql);
if (oRs("aantal").Value > 0)
{
RWCHECKBOXTR("wis_grafisch", "fldcheck", L("lcl_ins_deel_wisgrafisch"), 1); // default wissen
}
}
}
else
{
Response.Write("<input type='hidden' id='locatiekey' name='locatiekey' value='-1'>");
Response.Write("<input type='hidden' id='gebouwkey' name='gebouwkey' value='-1'>");
Response.Write("<input type='hidden' id='verdiepingkey' name='verdiepingkey' value='-1'>");
Response.Write("<input type='hidden' id='ruimtekey' name='ruimtekey' value='-1'>");
Response.Write("<input type='hidden' id='werkplekkey' name='werkplekkey' value='-1'>");
}
if (!heeftAfdeling && !heeftPersoon && !heeftPlaats)
{
var alle_binding = [L("lcl_obj_bind_a"), L("lcl_obj_bind_p"), L("alg_locatie")];
var geen_binding = L("lcl_obj_bind_none").format(alle_binding.join(" "+L("lcl_fac_api_of")+" "));
%>
<tr>
<td><%=safe.jsstring(geen_binding)%></td>
</tr>
<%
}
MODAL_BLOCK_END();
var buttons = [];
if (heeftAfdeling || heeftPersoon || heeftPlaats)
{
buttons.push({title: L("lcl_submit"), action:"ins_submit()", icon: "fa-fclt-save", singlepress: true, id: "btn_move_submit", importance: 1});
}
buttons.push({title: L("lcl_cancel"), action:"ins_cancel()", icon: "fa-fclt-cancel" , importance: 3});
SIMPLE_BLOCK_START();
CreateButtons(buttons);
SIMPLE_BLOCK_END();
IFACE.FORM_END();
%>
</form>
<% MODAL_END(); %>
</body>
</html>
<% ASPPAGE_END(); %>