296 lines
11 KiB
Plaintext
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")%>: </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>
|
|
<%
|
|
}
|
|
%> |