NYBU#35578 bulkactie add_mandates toegevoegd

svn path=/Website/trunk/; revision=32701
This commit is contained in:
2017-02-06 09:27:24 +00:00
parent 058d86dd86
commit 24cfae8303
3 changed files with 147 additions and 70 deletions

View File

@@ -26,6 +26,7 @@
FCLTHeader.Requires({plugins:["jQuery"]}) FCLTHeader.Requires({plugins:["jQuery"]})
var kpnman_keys = getQParamIntArray("keys", []); var kpnman_keys = getQParamIntArray("keys", []);
var prs_keys = getQParamIntArray("prs_keys", []);
var modal = (getQParamInt("modal", 0) == 1); var modal = (getQParamInt("modal", 0) == 1);
@@ -130,11 +131,12 @@ else if (kpnman_keys.length > 0 && kpnman_keys[0] > -1)
%> %>
<script type="text/javascript"> <script type="text/javascript">
kpnman_keys = "<%=kpnman_keys.join(",")%>"; kpnman_keys = "<%=kpnman_keys.join(",")%>";
prs_keys = "<%=prs_keys.join(",")%>";
function kpn_submit() function kpn_submit()
{ {
document.activeElement.blur(); // trigger laatste onChanges document.activeElement.blur(); // trigger laatste onChanges
if (kpnman_keys.length == 0) if (kpnman_keys.length == 0 && prs_keys.length == 0)
{ {
if (!$("#kpn_kpnbk")[0].checked && !$("#kpn_kpninz")[0].checked) if (!$("#kpn_kpnbk")[0].checked && !$("#kpn_kpninz")[0].checked)
{ // Checkboxen boeken en inzage zijn niet geselecteerd { // Checkboxen boeken en inzage zijn niet geselecteerd
@@ -191,17 +193,25 @@ else if (kpnman_keys.length > 0 && kpnman_keys[0] > -1)
<% } <% }
else else
{ {
FCLTpersoonselector("kpn_prskey", // gemandateerde if (prs_keys.length == 0)
"sgKpnPrskey", {
{ perslidKey: kpn_prskey, FCLTpersoonselector("kpn_prskey", // gemandateerde
label: L("lcl_prs_name"), "sgKpnPrskey",
whenEmpty: L("lcl_select_persoon"), { perslidKey: kpn_prskey,
autlevel: authparams.PRSwritelevel, label: L("lcl_prs_name"),
filtercode: (S("prs_mandaterequiresprofiel") == 1 ? "B" : null), // UWVA#14068 whenEmpty: L("lcl_select_persoon"),
required: true, autlevel: authparams.PRSwritelevel,
readonly: kpnman_keys[0] > -1 filtercode: (S("prs_mandaterequiresprofiel") == 1 ? "B" : null), // UWVA#14068
}); required: true,
readonly: kpnman_keys[0] > -1
});
}
else
{
%>
<input type="hidden" name="kpn_prskeys" value="<%=prs_keys%>">
<%
}
if (kpnman_keys.length == 0 || kpnman_keys[0] == -1) if (kpnman_keys.length == 0 || kpnman_keys[0] == -1)
{ {
sql = "SELECT k.prs_kostenplaats_key kpkey" sql = "SELECT k.prs_kostenplaats_key kpkey"

View File

@@ -23,6 +23,8 @@ protectRequest.validateToken();
FCLTHeader.Requires({ plugins:["jQuery"] }) FCLTHeader.Requires({ plugins:["jQuery"] })
var kpnman_keys = getQParamIntArray("keys", []); var kpnman_keys = getQParamIntArray("keys", []);
var kpn_prskeys = getFParamIntArray("kpn_prskeys", []);
var kpn_man_res = [];
var authparams = user.checkAutorisation("WEB_FINMSU", true); var authparams = user.checkAutorisation("WEB_FINMSU", true);
if (authparams && authparams.ALGwritelevel < 9) if (authparams && authparams.ALGwritelevel < 9)
@@ -69,13 +71,55 @@ else
} }
var multi = kpnman_keys.length > 1; var multi = kpnman_keys.length > 1;
var prsAdd = kpn_prskeys.length != 0;
var fields = [ { dbs: "prs_perslidkostenplaats_boeken", typ: "check", frm: "kpn_kpnbk" }, var fields = [ { dbs: "prs_perslidkostenplaats_boeken", typ: "check", frm: "kpn_kpnbk" },
{ dbs: "prs_perslidkostenplaats_inzage", typ: "check", frm: "kpn_kpninz" }]; { dbs: "prs_perslidkostenplaats_inzage", typ: "check", frm: "kpn_kpninz" }];
var closetab = false; var closetab = false;
var warning = ""; var warning = "";
if (multi) if (prsAdd)
{
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)
var kpn_kpnkeys = getFParamArray("kpn_kpnkey", [-1]);
if (kpn_kpnkeys.join(",").indexOf("-1") != -1) // Als alle is geselecteerd, dan zijn andere geselecteerde kostenplaatsen niet meer interessant.
kpn_kpnkeys = [-1];
if (boeken || inzage)
{
if (kpn_kpnkeys[0] == -1 && filtercode != 'A')
{
warning = "U moet kostenplaatsen selecteren.";
}
else
{
kpnman_keys = [];
for(var a = 0; a < kpn_prskeys.length; a++)
{
for (var b = 0; b < kpn_kpnkeys.length; b++)
{
upsertPrsKpn(kpn_prskeys[a], kpn_kpnkeys[b]);
}
}
kpnman_keys = kpn_man_res;
}
}
else
{
var sqlWHERE = "";
if (kpn_kpnkeys[0] == -1)
sqlWHERE += " AND prs_kostenplaats_key IS NULL"
else
sqlWHERE += " AND prs_kostenplaats_key IN (" + kpn_kpnkeys + ")";
sql = "DELETE FROM prs_perslidkostenplaats"
+ " WHERE prs_perslid_key IN (" + kpn_prskeys + ")"
+ sqlWHERE;
Oracle.Execute(sql);
}
}
else if (multi)
{ // Multi update { // Multi update
var boeken = (Request.Form("has_kpn_kpnbk").count == 1 && Request.Form("kpn_kpnbk").count == 1) 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) var inzage = (Request.Form("has_kpn_kpninz").count == 1 && Request.Form("kpn_kpninz").count == 1)
@@ -115,73 +159,77 @@ else if (kpnman_keys[0] > 0)
} }
else // kpnman_keys == -1 else // kpnman_keys == -1
{ // Insert nieuwe perslidkostenplaatsen { // 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", []); var kpn_kpnkeys = getFParamArray("kpn_kpnkey", [-1]);
if (kpn_kpnkeys.length == 0 && filtercode != 'A') if (kpn_kpnkeys.join(",").indexOf("-1") != -1) // Als alle is geselecteerd, dan zijn andere geselecteerde kostenplaatsen niet meer interessant.
kpn_kpnkeys = [-1];
if (kpn_kpnkeys[0] == -1 && filtercode != 'A')
{ {
warning = "U moet kostenplaatsen selecteren."; warning = "U moet kostenplaatsen selecteren.";
} }
else else
{ {
var kpn_prskey = getFParamInt("kpn_prskey"); // Gemandateerde persoon. var kpn_prskey = getFParamInt("kpn_prskey", "");
kpnman_keys = []; 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++) for (var i = 0; i < kpn_kpnkeys.length; i++)
{ {
// Controleer of de informatie al in de tabel aanwezig is upsertPrsKpn(kpn_prskey, kpn_keys[i]);
// (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();
} }
kpnman_keys = kpn_man_res;
} }
} }
var useFields = [];
function upsertPrsKpn(prs_key, kpn_key)
{
useFields = fields.slice(0); // simple copy
// 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_key
+ " AND pk.prs_perslid_key = " + prs_key
+ " ORDER BY 1";
var oRsKP = Oracle.Execute(sql);
if (!oRsKP.eof)
{ // record present dus: update
sql = buildUpdate("prs_perslidkostenplaats", useFields)
+ " prs_perslid_key = " + prs_key
+ " AND prs_kostenplaats_key = " + kpn_key;
Oracle.Execute(sql);
}
else
{ // Informatie is niet aanwezig, dus voeg nieuwe relatie toe
useFields.push({ dbs: "prs_perslid_key", typ: "key", val: prs_key });
useFields.push({ dbs: "prs_perslidkostenplaats_key", typ: "key", seq: "prs_s_prs_perslidkp_key" });
// Als de nieuwe rechten voor alle kostenplaatsen zijn, verwijder de aanwezige relaties
sql = "DELETE prs_perslidkostenplaats"
+ " WHERE prs_perslid_key = " + prs_key;
if (kpn_key != -1)
{
// Verwijder rechten voor alle kostenplaatsen indien aanwezig
sql += " AND prs_kostenplaats_key IS NULL";
}
Oracle.Execute(sql);
useFields.push({ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_key });
var regIns = buildInsert("prs_perslidkostenplaats", useFields);
kpn_man_res[kpn_man_res.length] = regIns.sequences["prs_perslidkostenplaats_key"];
sql = regIns.sql;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
warning += err.friendlyMsg;
useFields = [];
}
oRsKP.Close();
}
%> %>
<html> <html>
<head> <head>

View File

@@ -50,6 +50,17 @@ function fnrowData(oRs)
"json"); "json");
}); });
} }
function mandateAdd(rowArray, isMulti)
{
var prsKeyString = getKeyString(rowArray);
var url = "kpn_edit_mandate.asp?modal=1&prs_keys="+prsKeyString;
var aantalPrs = prsKeyString.split(',').length;
var title = "[" + aantalPrs + "] " + (aantalPrs == 1 ? "<%=L("prs_perslid")%>" : "<%=L("prs_perslid_m")%>");
FcltMgr.openModalDetail(url, title, { callback: FcltCallbackRefresh});
}
</script> </script>
<% <%
@@ -61,8 +72,11 @@ function perslid_list(pautfunction, params)
var autfunction = "WEB_PRSUSE"; var autfunction = "WEB_PRSUSE";
var authparams = user.checkAutorisation(autfunction); var authparams = user.checkAutorisation(autfunction);
var authparamsMAN = user.checkAutorisation("WEB_PRSMAN", true); var authparamsPRSMAN = user.checkAutorisation("WEB_PRSMAN", true);
var canAdd = (authparamsMAN && authparamsMAN.ALGwritelevel < 9 && authparamsMAN.PRSwritelevel < 9); var authparamsFINMSU = user.checkAutorisation("WEB_FINMSU", true);
var authparamsFACMAN = user.checkAutorisation("WEB_FACMAN");
var canAdd = (authparamsPRSMAN && authparamsPRSMAN.ALGwritelevel < 9 && authparamsPRSMAN.PRSwritelevel < 9);
var canMultiAdd = (authparamsFINMSU && authparamsFINMSU.ALGwritelevel < 9) || authparamsFACMAN.PRSwritelevel < 9;
// Voor resulttable de globalen zetten; zou ng anders moeten. // Voor resulttable de globalen zetten; zou ng anders moeten.
var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc. var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
@@ -87,6 +101,9 @@ function perslid_list(pautfunction, params)
if (alg.canWriteRuimte(oRs("alg_ruimte_key").value, authparams.mALGwritelevel)) */ if (alg.canWriteRuimte(oRs("alg_ruimte_key").value, authparams.mALGwritelevel)) */
eDelete = true; eDelete = true;
return ({eDelete: eDelete}) return ({eDelete: eDelete})
eMandate = false; // alleen multi
return ({eMandate: eMandate})
} }
%> %>
@@ -287,6 +304,8 @@ function perslid_list(pautfunction, params)
rst.addAction({ action: "persoonEdit", caption: L("lcl_edit"), isDefault: true}); rst.addAction({ action: "persoonEdit", caption: L("lcl_edit"), isDefault: true});
if (canAdd) if (canAdd)
rst.addAction({ action: "doDelete", caption: L("lcl_delete"), enabler: "eDelete", single: false, multi: true, multiOnce: true}); rst.addAction({ action: "doDelete", caption: L("lcl_delete"), enabler: "eDelete", single: false, multi: true, multiOnce: true});
if (canMultiAdd)
rst.addAction({ action: "mandateAdd", caption: L("lcl_add_mandates"), enabler: "eMandate", single: false, multi: true, multiOnce: true});
var cnt = rst.processResultset(); var cnt = rst.processResultset();
%> %>