190 lines
8.2 KiB
Plaintext
190 lines
8.2 KiB
Plaintext
<%@language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mld_edit_kenmerk_multi_save.asp
|
|
Description: Multi-edit wijzigen van overeenkomstige kenmerken van de geselecteerde meldingen:
|
|
het save-script.
|
|
Parameters:
|
|
|
|
Context:
|
|
Note:
|
|
*/
|
|
%>
|
|
|
|
<%
|
|
var JSON_Result = true;
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<!-- #include file="../Shared/save2db.inc" -->
|
|
<!-- #include file="../mld/mld_flexkenmerk.inc" -->
|
|
<!-- #include file="../mld/mld.inc" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
var mld_key_arr = getFParamIntArray("mld_key");
|
|
var nameprefix = getFParamSafe("nameprefix");
|
|
var urole = getFParamSafe("urole");
|
|
var kenmerk_count = getFParamInt("k_all", 0);
|
|
|
|
var fronto = urole == "fo";
|
|
var backo = urole == "bo";
|
|
var minfo = urole == "mi";
|
|
var frontend = (!fronto && !backo && !minfo);
|
|
|
|
var autfunction = "";
|
|
if (fronto)
|
|
autfunction = "WEB_MLDFOF";
|
|
else if (minfo)
|
|
autfunction = "WEB_MLDBAC";
|
|
else if (backo)
|
|
autfunction = "WEB_MLDBOF";
|
|
else
|
|
autfunction = "WEB_MLDUSE";
|
|
var authparams = user.checkAutorisation(autfunction); // Dit is nog ongeacht de melding
|
|
|
|
var ingesloten = [];
|
|
for (i=0; i<mld_key_arr.length; i++)
|
|
{
|
|
var this_mld = mld.func_enabled_melding(mld_key_arr[i]);
|
|
if (this_mld.canFlexChange)
|
|
{
|
|
ingesloten.push(mld_key_arr[i]);
|
|
}
|
|
}
|
|
|
|
if (ingesloten.length > 0)
|
|
{ // Kenmerken van referentiemelding ophalen.
|
|
var kkey_arr = getMultiRefKenmerken();
|
|
// Bij elke melding de juiste kenmerken ophalen.
|
|
// In _saveFlexKenmerken() zijn de kenmerk keys nodig die bij de betreffende (std)melding horen.
|
|
// De functie flexkenmerken2jsondata() leest echter de referentie kenmerken. Met onderstaande query
|
|
// worden de kenmerken bepaald die horen bij de (std)melding.
|
|
var sql = "SELECT COALESCE(rk.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving) ref_naam"
|
|
+ " , rk.mld_kenmerk_key ref_kenmerk_key"
|
|
+ " , k.mld_srtkenmerk_key"
|
|
+ " , k.mld_kenmerk_key"
|
|
+ " , k.mld_stdmelding_key"
|
|
+ " , m.mld_melding_key"
|
|
+ " , w.mld_kenmerkmelding_waarde"
|
|
+ " , w.mld_kenmerkmelding_key"
|
|
+ " , w.mld_kenmerkmelding_verwijder"
|
|
+ " FROM mld_kenmerk k"
|
|
+ " , mld_srtkenmerk s"
|
|
+ " , mld_discipline d"
|
|
+ " , mld_stdmelding t"
|
|
+ " , mld_melding m"
|
|
+ " , mld_kenmerkmelding w"
|
|
+ " , mld_kenmerk rk"
|
|
+ " WHERE k.mld_srtkenmerk_key = s.mld_srtkenmerk_key"
|
|
+ " AND COALESCE(k.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving) = COALESCE(rk.mld_kenmerk_omschrijving, s.mld_srtkenmerk_omschrijving)"
|
|
+ " AND k.mld_kenmerk_verwijder IS NULL"
|
|
+ " AND s.mld_srtkenmerk_verwijder IS NULL"
|
|
+ " AND m.mld_stdmelding_key = t.mld_stdmelding_key"
|
|
+ " AND t.mld_ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND ( ( k.mld_stdmelding_key IS NULL AND k.mld_kenmerk_niveau = 'A')"
|
|
+ " OR ( k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T')"
|
|
+ " OR ( k.mld_stdmelding_key = t.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
|
|
+ " OR ( k.mld_stdmelding_key = t.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
|
|
+ " )"
|
|
+ " AND k.mld_kenmerk_key = w.mld_kenmerk_key(+)"
|
|
+ " AND m.mld_melding_key = w.mld_melding_key(+)"
|
|
+ " AND w.mld_kenmerkmelding_verwijder IS NULL"
|
|
+ " AND k.mld_srtkenmerk_key = rk.mld_srtkenmerk_key"
|
|
+ " AND rk.mld_kenmerk_key IN (" + kkey_arr.join(",") + ")"
|
|
+ " AND m.mld_melding_key IN (" + ingesloten.join(",") + ")"
|
|
+ " ORDER BY m.mld_melding_key";
|
|
var oRs = Oracle.Execute(sql);
|
|
var data_arr = [];
|
|
var old_key = -1;
|
|
while (!oRs.eof)
|
|
{
|
|
var mld_key = oRs("mld_melding_key").Value;
|
|
if (old_key != mld_key)
|
|
{
|
|
old_key = mld_key;
|
|
var flx = { mld_key: mld_key
|
|
, ref_key: {}
|
|
};
|
|
data_arr.push(flx);
|
|
}
|
|
flx.ref_key[oRs("ref_kenmerk_key").Value] = {kenmerk_key: oRs("mld_kenmerk_key").Value};
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
|
|
// Per melding de kenmerken aanpassen.
|
|
for (var i=0; i<data_arr.length; i++)
|
|
{
|
|
var knm_arr = [];
|
|
for (var ref in data_arr[i].ref_key)
|
|
{
|
|
knm_arr.push(data_arr[i].ref_key[ref].kenmerk_key);
|
|
}
|
|
|
|
var currentKenmerkenSQL = "SELECT k.mld_kenmerk_key"
|
|
+ " , ok.mld_kenmerkmelding_waarde"
|
|
+ " , k.mld_kenmerk_toonbaar"
|
|
+ " , k.fac_functie_key"
|
|
+ " FROM mld_kenmerkmelding ok"
|
|
+ " , mld_kenmerk k"
|
|
+ " WHERE ok.mld_kenmerk_key = k.mld_kenmerk_key"
|
|
+ " AND ok.mld_kenmerkmelding_verwijder IS NULL"
|
|
+ " AND k.mld_kenmerk_key IN (" + knm_arr.join(",") + ")"
|
|
+ " AND ok.mld_melding_key = " + data_arr[i].mld_key;
|
|
|
|
var allKenmerkenSQL = "SELECT COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
|
|
+ " , " + lcl.xsql("t.mld_srtkenmerk_omschrijving", "t.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
|
|
+ " , t.mld_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
|
+ " , t.mld_srtkenmerk_systeem kenmerk_systeem"
|
|
+ " , k.mld_kenmerk_toonbaar kenmerk_readonly"
|
|
+ " , k.mld_kenmerk_uniek kenmerk_uniek"
|
|
+ " , fac_kenmerkdomein_key"
|
|
+ " FROM mld_kenmerk k"
|
|
+ " , mld_srtkenmerk t"
|
|
+ " WHERE k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
|
|
+ " AND k.mld_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
|
|
|
|
var kenmerkParams = { kenmerkTable: "mld_kenmerkmelding"
|
|
, kenmerkParentKey : "mld_melding_key"
|
|
, kenmerkWaarde: "mld_kenmerkmelding_waarde"
|
|
, kenmerkKey: "mld_kenmerk_key"
|
|
, kenmerkToonbaar: "mld_kenmerk_toonbaar"
|
|
, currentKenmerkenSQL: currentKenmerkenSQL
|
|
, allKenmerkenSQL: allKenmerkenSQL
|
|
, requestQF: Request.Form
|
|
, module: "MLD"
|
|
, flexPath: "MLD/M"
|
|
, tracking: true
|
|
, multiEdit: true
|
|
, noFlexCleanup: true
|
|
, multikenmerk: data_arr[i].ref_key
|
|
, isNew: false
|
|
};
|
|
if (hasFParam("nameprefix"))
|
|
{
|
|
kenmerkParams.nameprefix = getFParamSafe("nameprefix", "");
|
|
kenmerkParams.extraserie = true;
|
|
}
|
|
var all_flexdata = flexkenmerken2jsondata(kenmerkParams);
|
|
var changed_flexdata = [];
|
|
for (km_data in all_flexdata)
|
|
{
|
|
if (inArray(km_data, kkey_arr))
|
|
changed_flexdata.push(all_flexdata[km_data]);
|
|
}
|
|
kenmerkParams.flexdata = changed_flexdata;
|
|
|
|
var flextrack = saveFlexKenmerken( data_arr[i].mld_key, kenmerkParams );
|
|
shared.trackaction("MLDUPD", data_arr[i].mld_key, flextrack.join("\n"));
|
|
}
|
|
}
|
|
|
|
var result = {success: true, message: "", key: ingesloten.join(",")};
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|
|
<% ASPPAGE_END(); %>
|