202 lines
7.0 KiB
Plaintext
202 lines
7.0 KiB
Plaintext
<%@language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: kpn_edit_mandate_save
|
|
Description: SUBMIT-form
|
|
|
|
Parameters:
|
|
keys String van prs_perslidkostenplaats keys (dan multi-edit kostenplaatsen)
|
|
of: form kpn_kpnkey voor ondermandateren?
|
|
Context:
|
|
Note:
|
|
|
|
SUBMIT-form
|
|
*/ %>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../shared/save2db.inc" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
FCLTHeader.Requires({ plugins:["jQuery"] })
|
|
|
|
var kpnman_keys = getQParamIntArray("keys", []);
|
|
|
|
var authparams = user.checkAutorisation("WEB_FINMSU", true);
|
|
if (authparams && authparams.ALGwritelevel < 9)
|
|
{
|
|
var filtercode = "A"; // alles, mandateren
|
|
}
|
|
else
|
|
{
|
|
var filtercode = "B"; // kostenplaatsverantwoordelijke, ondermandateren
|
|
|
|
var authparams = user.checkAutorisation("WEB_FACMAN");
|
|
// Voor WEB_FACMAN kijken naar prs write rechten, fac_functie_min_level = 7, lezen en schrijven organisatie (Let op dat alg write rechten dan altijd -1 zijn, ook bij geen write rechten)
|
|
// Dus alleen kijken naar prs write rechten
|
|
var canSave = (authparams.PRSwritelevel < 9);
|
|
user.auth_required_or_abort(canSave);
|
|
|
|
if (kpnman_keys.length > 0 && kpnman_keys[0] > -1)
|
|
{ // Het is geen nieuwe mandate
|
|
var tobesaved = 0;
|
|
var ingesloten = [];
|
|
for (var i = 0; i < kpnman_keys.length; i++)
|
|
{
|
|
if (canSave)
|
|
{ // De rechten heb je
|
|
sql = "SELECT prs_perslidkostenplaats_key"
|
|
+ " , prs_kostenplaats_key"
|
|
+ " FROM prs_perslidkostenplaats"
|
|
+ " WHERE prs_perslidkostenplaats_key = " + kpnman_keys[i]
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.eof)
|
|
shared.record_not_found("<!--" + kpnman_keys[i] + "-->");
|
|
|
|
if (!oRs.eof && oRs("prs_kostenplaats_key").value)
|
|
{ // prs_kostenplaats_key heeft een waarde
|
|
ingesloten.push(kpnman_keys[i]);
|
|
tobesaved++;
|
|
}
|
|
oRs.Close();
|
|
}
|
|
}
|
|
user.auth_required_or_abort(tobesaved > 0); // We klagen niet over enkele wel en enkele niet
|
|
kpnman_keys = ingesloten;
|
|
}
|
|
}
|
|
|
|
var multi = kpnman_keys.length > 1;
|
|
|
|
var fields = [ { dbs: "prs_perslidkostenplaats_boeken", typ: "check", frm: "kpn_kpnbk" },
|
|
{ dbs: "prs_perslidkostenplaats_inzage", typ: "check", frm: "kpn_kpninz" }];
|
|
|
|
var closetab = false;
|
|
var warning = "";
|
|
if (multi)
|
|
{ // Multi update
|
|
var boeken = (Request.Form("has_kpn_kpnbk").count == 1 && Request.Form("kpn_kpnbk").count == 1)
|
|
var inzage = (Request.Form("has_kpn_kpninz").count == 1 && Request.Form("kpn_kpninz").count == 1)
|
|
|
|
if (boeken || inzage)
|
|
{
|
|
sql = buildUpdate("prs_perslidkostenplaats", fields)
|
|
+ " prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
|
|
}
|
|
else
|
|
{
|
|
sql = "DELETE FROM prs_perslidkostenplaats WHERE prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
|
|
}
|
|
|
|
var err = Oracle.Execute(sql, true);
|
|
if (err.friendlyMsg)
|
|
warning = err.friendlyMsg;
|
|
}
|
|
else if (kpnman_keys[0] > 0)
|
|
{ // Update
|
|
var boeken = (Request.Form("has_kpn_kpnbk").count == 1 && Request.Form("kpn_kpnbk").count == 1)
|
|
var inzage = (Request.Form("has_kpn_kpninz").count == 1 && Request.Form("kpn_kpninz").count == 1)
|
|
|
|
if (boeken || inzage)
|
|
{
|
|
sql = buildUpdate("prs_perslidkostenplaats", fields)
|
|
+ " prs_perslidkostenplaats_key = " + kpnman_keys[0];
|
|
}
|
|
else
|
|
{
|
|
sql = "DELETE FROM prs_perslidkostenplaats WHERE prs_perslidkostenplaats_key = " + kpnman_keys[0]
|
|
closetab = true;
|
|
}
|
|
var err = Oracle.Execute(sql, true);
|
|
if (err.friendlyMsg)
|
|
warning = err.friendlyMsg;
|
|
}
|
|
else // kpnman_keys == -1
|
|
{ // Insert nieuwe perslidkostenplaatsen
|
|
fields.push({ dbs: "prs_perslid_key", typ: "key", frm: "kpn_prskey" });
|
|
fields.push({ dbs: "prs_perslidkostenplaats_key", typ: "key", seq: "prs_s_prs_perslidkp_key" });
|
|
|
|
var kpn_kpnkeys = getFParamIntArray("kpn_kpnkey", []);
|
|
if (kpn_kpnkeys.length == 0 && filtercode != 'A')
|
|
{
|
|
warning = "U moet kostenplaatsen selecteren.";
|
|
}
|
|
else
|
|
{
|
|
var kpn_prskey = getFParamInt("kpn_prskey"); // Gemandateerde persoon.
|
|
kpnman_keys = [];
|
|
|
|
// Als "Alle" (kostenplaatsen) is geselecteerd samen met andere kostenplaatsen, dan zijn andere geselecteerde kostenplaatsen niet meer interessant.
|
|
if (kpn_kpnkeys.join(",").indexOf("-1") != -1)
|
|
kpn_kpnkeys = [-1];
|
|
// Als de array leeg is dan is "Alle" (kostenplaatsen) geselecteerd geweest.
|
|
if (kpn_kpnkeys.length == 0)
|
|
kpn_kpnkeys = [-1];
|
|
|
|
for (var i = 0; i < kpn_kpnkeys.length; i++)
|
|
{
|
|
// Controleer of de informatie al in de tabel aanwezig is
|
|
// (Of de persoon al rechten heeft voor de kostenplaats)
|
|
sql = "SELECT COALESCE(pk.prs_kostenplaats_key, -1)"
|
|
+ " FROM prs_perslidkostenplaats pk"
|
|
+ " WHERE COALESCE(pk.prs_kostenplaats_key, -1) = " + kpn_kpnkeys[i]
|
|
+ " AND pk.prs_perslid_key = " + kpn_prskey
|
|
+ " ORDER BY 1";
|
|
var oRsKP = Oracle.Execute(sql);
|
|
var present = (1 == 0);
|
|
if (!oRsKP.eof)
|
|
{
|
|
present = (1 == 1); // Informatie is aanwezig
|
|
}
|
|
|
|
if (!present)
|
|
{ // Informatie is niet aanwezig, dus voeg nieuwe relatie toe
|
|
if (kpn_kpnkeys[i] == -1)
|
|
{ // Als de nieuwe rechten voor alle kostenplaatsen zijn, verwijder de aanwezige relaties
|
|
sql = "DELETE prs_perslidkostenplaats"
|
|
+ " WHERE prs_perslid_key = " + kpn_prskey;
|
|
Oracle.Execute(sql);
|
|
}
|
|
else
|
|
{ // Verwijder rechten voor alle kostenplaatsen indien aanwezig
|
|
sql = "DELETE prs_perslidkostenplaats"
|
|
+ " WHERE prs_perslid_key = " + kpn_prskey
|
|
+ " AND prs_kostenplaats_key IS NULL";
|
|
Oracle.Execute(sql);
|
|
}
|
|
|
|
fields.push({ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_kpnkeys[i] });
|
|
|
|
var regIns = buildInsert("prs_perslidkostenplaats", fields);
|
|
kpnman_keys[kpnman_keys.length] = regIns.sequences["prs_perslidkostenplaats_key"];
|
|
sql = regIns.sql;
|
|
var err = Oracle.Execute(sql, true);
|
|
if (err.friendlyMsg)
|
|
warning += err.friendlyMsg;
|
|
|
|
fields.pop(); // Haal de prs_kostenplaats_key (laatste fields item) er weer vanaf
|
|
}
|
|
oRsKP.Close();
|
|
}
|
|
}
|
|
}
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate() %>
|
|
<script>
|
|
$(document).ready(function () {
|
|
FcltMgr.closeDetail(window, { kpnman_keys: "<%=kpnman_keys.join(",")%>",
|
|
warning: "<%=safe.jsstring(warning)%>",
|
|
keepForm: <%=warning?"true":"false"%>,
|
|
close: <%=closetab || multi?"true":"false"%>,
|
|
refresh: true
|
|
}); } );
|
|
</script>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|