Files
Facilitor/APPL/MLD/mld_edit_kenmerk_multi_save.asp
Koen Reefman 85dfae91f6 Merge 2024.3 Gold B patches
svn path=/Website/trunk/; revision=67344
2024-12-10 08:23:53 +00:00

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(); %>