Files
Facilitor/APPL/ALG/alg_ruimteafdeling.asp
Jos Groot Lipman bacaa9588a Cursor vergeten te closen
svn path=/Website/branches/v2017.3/; revision=38344
2018-06-27 12:48:00 +00:00

296 lines
11 KiB
Plaintext

<%@language = "javascript"%>
<% /*
$Revision$
$Id$
File: alg_ruimteafdeling.asp
Description: Laat een afdeling aan meerdere ruimtes toevoegen
Parameters: ruimte_keys: komma separated lijst met alg_ruimte_keys
Context:
Note:
k
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="alg.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["./alg_ruimteafdeling.js" ]
});
// TODO: Autorisatie controle "WEB_PRSBOF" op ruimte_keys
var ruimte_key_arr = getQParamIntArray("ruimte_keys");
var submitting = getQParamInt("submit", 0) == 1;
if (submitting)
{
protectRequest.validateToken();
FCLTHeader.Generate();
var nrRows = getFParamInt("nrRows", 0);
var afdeling_key = -1;
var bezetting = -1;
var bezettingen = new Array();
var afdeling_keys = new Array();
var afdeling_names = [];
function shorttxt(txt, len)
{
len = len || S("max_tracking_length");
if (txt.length < len)
return txt;
else
return txt.substr(0, len-4) + "...";
}
for (var i = 0; i < nrRows; i++)
{
afdeling_key = getFParamInt("afd" + i, 0);
bezetting = getFParamFloat("bez" + i, 0);
if (afdeling_key > 0 && bezetting >= 0)
{
afdeling_keys.push(afdeling_key);
bezettingen.push(bezetting);
}
}
if (afdeling_keys.length)
{
var sql = "SELECT prs_afdeling_key, prs_afdeling_omschrijving"
+ " FROM prs_afdeling a"
+ " WHERE prs_afdeling_key IN (" + afdeling_keys.join(",") + ")"
+ " AND prs_afdeling_verwijder IS NULL";
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
afdeling_names[oRs("prs_afdeling_key").value] = oRs("prs_afdeling_omschrijving").value;
oRs.MoveNext();
}
}
var oldvals = [];
var sql = "SELECT ra.alg_ruimte_key, ra.prs_afdeling_key, a.prs_afdeling_omschrijving, ra.prs_ruimteafdeling_bezetting"
+ " FROM prs_ruimteafdeling ra, prs_afdeling a"
+ " WHERE ra.alg_ruimte_key IN (" + ruimte_key_arr.join(",") + ")"
+ " AND ra.prs_afdeling_key = a.prs_afdeling_key"
+ " AND ra.prs_ruimteafdeling_verwijder IS NULL"
+ " AND a.prs_afdeling_verwijder IS NULL";
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
var tempTuple = { afd_key: oRs("prs_afdeling_key").value, bez: oRs("prs_ruimteafdeling_bezetting").value };
if (typeof oldvals[oRs("alg_ruimte_key").value] === 'undefined') // New ruimte
oldvals[oRs("alg_ruimte_key").value] = [tempTuple];
else
oldvals[oRs("alg_ruimte_key").value].push(tempTuple);
if (typeof afdeling_names[oRs("prs_afdeling_key").value] === 'undefined')
afdeling_names[oRs("prs_afdeling_key").value] = oRs("prs_afdeling_omschrijving").value;
oRs.MoveNext();
}
for (var j = 0; j < ruimte_key_arr.length; j++)
{ // Verwijderen
var sql = "DELETE prs_ruimteafdeling"
+ " WHERE alg_ruimte_key = " + ruimte_key_arr[j];
if (afdeling_keys.length) // 'nieuwe' laten staan, er komt straks wel een update
sql += " AND prs_afdeling_key NOT IN (" + afdeling_keys.join(",") + ")";
Oracle.Execute(sql);
}
for (var i = 0; i < afdeling_keys.length; i++)
{
for (var j = 0; j < ruimte_key_arr.length; j++)
{
var sql = "SELECT prs_ruimteafdeling_key"
+ " FROM prs_ruimteafdeling"
+ " WHERE alg_ruimte_key = " + ruimte_key_arr[j]
+ " AND prs_afdeling_key = " + afdeling_keys[i]
+ " AND prs_ruimteafdeling_verwijder IS NULL";
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{ // Update
var sql = "UPDATE prs_ruimteafdeling SET"
+ " prs_ruimteafdeling_bezetting = " + bezettingen[i]
+ " WHERE prs_ruimteafdeling_key = " + oRs("prs_ruimteafdeling_key").Value;
Oracle.Execute(sql);
}
else
{ // Insert
var sql = "INSERT INTO prs_ruimteafdeling "
+ " (alg_ruimte_key, prs_afdeling_key, prs_ruimteafdeling_bezetting)"
+ " VALUES (" + ruimte_key_arr[j] + ","
+ afdeling_keys[i] + ","
+ bezettingen[i] + ")";
Oracle.Execute(sql);
}
oRs.Close();
}
}
var trackingArr = new Object();
var fromLbl = "";
var toLbl = "";
var rowNr = -1;
var doneAfdeling = new Array();
for (var i = 0; i < ruimte_key_arr.length; i++)
{
if (typeof oldvals[ruimte_key_arr[i]] !== 'undefined')
for (var x = 0; x < oldvals[ruimte_key_arr[i]].length; x++)
{
fromLbl = shorttxt(afdeling_names[oldvals[ruimte_key_arr[i]][x].afd_key]) + " (" + oldvals[ruimte_key_arr[i]][x].bez + "%) ";
rowNr = sharedIndexOf(oldvals[ruimte_key_arr[i]][x].afd_key, afdeling_keys);
if (rowNr > -1) // Update
{
doneAfdeling[rowNr] = true;
if (oldvals[ruimte_key_arr[i]][x].bez == bezettingen[rowNr]) // No change
continue;
toLbl = " " + shorttxt(afdeling_names[afdeling_keys[rowNr]]) + " (" + bezettingen[rowNr] + "%)";
}
else // Delete
toLbl = " " + L("lcl_tracktoempty");
if (typeof trackingArr[ruimte_key_arr[i]] === 'undefined')
trackingArr[ruimte_key_arr[i]] = new Array();
trackingArr[ruimte_key_arr[i]].push(fromLbl + L("lcl_trackto") + toLbl);
}
for (var y = 0; y < afdeling_keys.length; y++)
{
if (doneAfdeling[y])
continue;
else if (typeof trackingArr[ruimte_key_arr[i]] === 'undefined')
trackingArr[ruimte_key_arr[i]] = new Array();
// Insert
fromLbl = L("lcl_trackfromempty") + " ";
toLbl = " " + shorttxt(afdeling_names[afdeling_keys[y]]) + " (" + bezettingen[y] + "%)";
trackingArr[ruimte_key_arr[i]].push(fromLbl + L("lcl_trackto") + toLbl);
}
}
for (var i = 0; i < ruimte_key_arr.length; i++)
{
if (typeof trackingArr[ruimte_key_arr[i]] !== 'undefined')
shared.trackaction("ALGRUP", ruimte_key_arr[i], L("lcl_alg_is_algrup") + "\n" + trackingArr[ruimte_key_arr[i]].join("\n"));
}
%>
<script type="text/javascript">
FcltMgr.closeDetail(window, { success: true });
</script>
<%
}
else
{ %>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
setMultiRuimte(<%=ruimte_key_arr.length%>);
</script>
</head>
<body class="modal" id="mod_ruimteafdeling">
<div id="email">
<form name="u2" method="post" action="alg_ruimteafdeling.asp?submit=1&ruimte_keys=<%=ruimte_key_arr.join(",")%>">
<input type="hidden" id="nrRows" name="nrRows" value="0">
<% BLOCK_START("alg_ruimteafdeling", L("lcl_alg_geselecteerde_ruimten") + ": " + ruimte_key_arr.length);
// <!-- Toevoegen -->
FCLTafdelingselector("afdeling_key",
"sgDept",
{ label: L("lcl_dep_name_level2"),
//autlevel: authparams.PRSreadlevel,
whenEmpty: L("lcl_search_generic") // want filter
});
%>
<tr>
<td class="label">
<label for="afdbezettingtable" style="white-space: nowrap"><%=L("lcl_alg_te_koppelen_afd")%>:&nbsp;</label>
</td>
<td>
<table id="afdbezettingtable" cellspacing=0 cellpadding=0 class="rstable">
<thead>
<tr>
<th style='width:15px'></th>
<th><%=L("lcl_department")%></th>
<th><%=L("lcl_alg_bezetting_perc")%></th>
<%
if (ruimte_key_arr.length ==1)
{
%>
<th><%=L("lcl_estate_ruimte_bruto_vloeropp")%></th>
<%
}
%>
</tr>
</thead>
<tbody>
<%
var sql = "SELECT SUM(alg_ruimte_bruto_vloeropp) oppervlak"
+ " FROM alg_ruimte r"
+ " WHERE r.alg_ruimte_key in (" + ruimte_key_arr.join(",") + ")";
oRs = Oracle.Execute(sql);
var tot_oppervlak = oRs("oppervlak").value;
var sql = "SELECT DISTINCT ra.prs_afdeling_key,"
+ S("prs_dep_string") + " prs_afdeling_naam,"
+ " prs_ruimteafdeling_bezetting bezetting,"
+ " alg_ruimte_bruto_vloeropp oppervlak"
+ " FROM prs_ruimteafdeling ra,"
+ " prs_v_aanwezigafdeling d,"
+ " alg_ruimte r"
+ " WHERE ra.prs_afdeling_key = d.prs_afdeling_key"
+ " AND ra.alg_ruimte_key = r.alg_ruimte_key"
+ " AND ra.prs_ruimteafdeling_verwijder IS NULL"
+ " AND ra.alg_ruimte_key in (" + ruimte_key_arr.join(",") + ")"
+ " ORDER BY 2";
oRs = Oracle.Execute(sql);
var teller = 0;
var bezetopp;
while (!oRs.eof)
{
teller++;
var oppervlak = oRs("oppervlak").value;
bezetopp = (oRs("bezetting").value * oRs("oppervlak").value)/100;
%>
<script type="text/javascript">
CreateRow(<%=oRs("prs_afdeling_key").value%>,
'<%=safe.jsstring(oRs("prs_afdeling_naam").value)%>',
'<%=safe.displayfloat(oRs("bezetting").value, 2)%>',
'<%=safe.displayfloat(bezetopp, 2)%>',
'<%=safe.displayfloat(oppervlak, 2)%>'
);
</script>
<% oRs.MoveNext();
}
%>
</tbody>
</table>
</td>
</tr>
<% BLOCK_END();
var buttons = [ {title: L("lcl_add"), icon: "submit.png", action: "alg_add('"+ safe.displayfloat(tot_oppervlak, 2) +"')" },
{title: L("lcl_submit"), icon: "undo.png", action: "alg_submit()" } ];
CreateButtons(buttons);
IFACE.FORM_END();
%>
</form>
</div>
</body>
</html>
<%
}
%>