225 lines
10 KiB
Plaintext
225 lines
10 KiB
Plaintext
<%@language = "javascript" %>
|
|
<%
|
|
/* $Revision$
|
|
$Id$
|
|
|
|
File: mld_reject_save.asp
|
|
Description: save_script van mld_reject.asp
|
|
Parameters: mld_key
|
|
|
|
|
|
Context:
|
|
Note:
|
|
|
|
*/
|
|
%>
|
|
<%
|
|
var JSON_Result = true;
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/save2db.inc" -->
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<!-- #include file="../mld/mld.inc" -->
|
|
<!-- #include file="../ins/ins.inc" -->
|
|
<%
|
|
protectRequest.validateToken();
|
|
var mld_key_arr = getQParamIntArray("mld_key");
|
|
var opmerk = getFParam("opmerk", "");
|
|
|
|
var result = {};
|
|
var toberejected = 0;
|
|
var ingesloten = []; // mld_key.
|
|
var reqStatusEmptyMelding = [];
|
|
|
|
if (mld_key_arr.length == 1)
|
|
{
|
|
// save mandatory characteristics before check on empty mandatory characteristics
|
|
var currentKenmerkenSQL = "SELECT vk.mld_kenmerk_key"
|
|
+ " , mld_kenmerkmelding_waarde"
|
|
+ " , vk.mld_kenmerk_toonbaar"
|
|
+ " , vk.fac_functie_key"
|
|
+ " FROM mld_kenmerkmelding km"
|
|
+ " , mld_kenmerk vk"
|
|
+ " , mld_melding m"
|
|
+ " , mld_stdmelding s"
|
|
+ " , mld_discipline d"
|
|
+ " WHERE km.mld_kenmerk_key = vk.mld_kenmerk_key"
|
|
+ " AND km.mld_kenmerkmelding_verwijder IS NULL"
|
|
+ " AND km.mld_melding_key = m.mld_melding_key"
|
|
+ " AND m.mld_melding_key = " + mld_key_arr[0]
|
|
+ " AND s.mld_stdmelding_key = m.mld_stdmelding_key"
|
|
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND ((vk.mld_stdmelding_key IS NULL AND vk.mld_kenmerk_niveau = 'A')"
|
|
+ " OR (vk.mld_stdmelding_key = s.mld_stdmelding_key AND vk.mld_kenmerk_niveau = 'S')"
|
|
+ " OR (vk.mld_stdmelding_key = s.mld_ins_discipline_key AND vk.mld_kenmerk_niveau = 'D')"
|
|
+ " OR (vk.mld_stdmelding_key = d.ins_srtdiscipline_key AND vk.mld_kenmerk_niveau = 'T'))";
|
|
|
|
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,
|
|
isNew: false,
|
|
flexPath: "MLD/M",
|
|
tracking: true,
|
|
module: "MLD"
|
|
}
|
|
|
|
if (hasFParam("nameprefix"))
|
|
{
|
|
kenmerkParams.nameprefix = getFParamSafe("nameprefix", "");
|
|
kenmerkParams.extraserie = true;
|
|
}
|
|
|
|
var flextrack = saveFlexKenmerken(mld_key_arr[0], kenmerkParams);
|
|
|
|
// Wijzigingen flexkenmerken tracken.
|
|
if (flextrack.length)
|
|
{
|
|
var mld_info = mld.mld_melding_info(mld_key_arr[0]);
|
|
var stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm_key);
|
|
var formattedID = stdm_info.ins_srtdiscipline_prefix+mld_key_arr[0] + " ("+ stdm_info.discipline_omschrijving + "/"+ stdm_info.stdmelding_omschrijving +")";
|
|
mld.trackmeldingupdate(mld_key_arr[0], L("lcl_mld_is_mldupdtrack").format(formattedID) + "\n" + flextrack.join("\n"));
|
|
}
|
|
}
|
|
// Bepaal de meldingen in de selectie die
|
|
// ook echt afgewezen kunnen of mogen worden.
|
|
for (var i = 0; i < mld_key_arr.length; i++)
|
|
{
|
|
var this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
|
|
var mld_info = mld.mld_melding_info(mld_key_arr[i]);
|
|
lcl.set_dialect(mld_info.srtdisc_key, "MLD_SRTDISCIPLINE_KEY");
|
|
if (this_mld.canReject && !mld_info.parent_key) // Geen child melding
|
|
{
|
|
ingesloten.push({ mld_key: mld_key_arr[i] });
|
|
toberejected++;
|
|
}
|
|
// Zijn er nog kenmerken die nu wel verplicht zijn?
|
|
var afwezig = mld.hasRequiredStatusEmptyMelding(mld_key_arr[i], 1); // Melding status "Afgemeld(5)"
|
|
if (afwezig.kenm_ontbreekt.length || afwezig.obj_ontbreekt)
|
|
{
|
|
var mldnr = mld.mld_prefix(mld_key_arr[i]) + mld_key_arr[i];
|
|
if (afwezig.kenm_ontbreekt.length)
|
|
reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(afwezig.kenm_ontbreekt.join(", "), mldnr));
|
|
if (afwezig.obj_ontbreekt)
|
|
reqStatusEmptyMelding.push(L("lcl_mld_req_obj").format(mldnr));
|
|
}
|
|
}
|
|
|
|
// De laatst gebruikte set_dialect uit de for-lus geldt nu voor de onderstaande code.
|
|
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
|
|
user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel en enkele niet
|
|
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{
|
|
var mld_melding = mld.mld_melding_info(ingesloten[i].mld_key);
|
|
|
|
ingesloten[i].ins_key_arr = [];
|
|
ingesloten[i].srtcont_key_arr = [];
|
|
ingesloten[i].controlemode_arr = [];
|
|
var sql = "SELECT dsc.ins_deel_key"
|
|
+ " , dsc.ins_srtcontrole_key"
|
|
+ " , cdp.ctr_disc_params_controle_type"
|
|
+ " , mo.ins_deelsrtcontrole_key"
|
|
+ " FROM ins_deelsrtcontrole dsc"
|
|
+ " , ins_srtcontrole isc"
|
|
+ " , ctr_disc_params cdp"
|
|
+ " , mld_melding_object mo"
|
|
+ " WHERE dsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
|
+ " AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key"
|
|
+ " AND mo.ins_deelsrtcontrole_key = dsc.ins_deelsrtcontrole_key"
|
|
+ " AND mo.mld_melding_key = " + ingesloten[i].mld_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
while (!oRs.eof)
|
|
{
|
|
// De controle moet aanwezig zijn. Maar een inspectie kan ook verwijderd zijn!
|
|
var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value,
|
|
{srtcont_key: oRs("ins_srtcontrole_key").Value,
|
|
deelsrtcont_key: oRs("ins_deelsrtcontrole_key").Value,
|
|
scen_key: 1
|
|
});
|
|
if (this_ins.canInspFinishMjb)
|
|
{
|
|
ingesloten[i].ins_key_arr.push(oRs("ins_deel_key").Value);
|
|
ingesloten[i].srtcont_key_arr.push(oRs("ins_srtcontrole_key").Value);
|
|
ingesloten[i].controlemode_arr.push(oRs("ctr_disc_params_controle_type").Value);
|
|
}
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
}
|
|
|
|
var reject_arr = [];
|
|
var notaccepted = 0;
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{
|
|
mld.nextworkflowstep(ingesloten[i].mld_key, 0); // 0 = rejected
|
|
// voorheen werd de opemerking ge-append aan een bestaande opmerking.
|
|
// Nu wordt de opmerking vervangen door de nieuwe opmerking.
|
|
var fields = [ { dbs: "mld_melding_opmerking", typ: "varchar", val: opmerk, track: L("lcl_mld_inf_Opmerking"), len: 4000 },
|
|
{ dbs: "mld_melding_conceptstatus", typ: "number", val: 0 } // voor als dit een afwijzing is van een conceptmelding
|
|
];
|
|
|
|
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i].mld_key, fields);
|
|
oRs = Oracle.Execute(mldUpd.sql);
|
|
if (mldUpd.trackarray.length)
|
|
mld.trackmeldingupdate(ingesloten[i].mld_key, L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
|
|
|
|
// Zetten van de status op afgewezen en afhandelen van de tracking.
|
|
mld.setmeldingstatus(ingesloten[i].mld_key, 1); // afgewezen
|
|
|
|
// Gequeuede berichten/notificaties en portalberichten van de instemmer verwijderen.
|
|
var clrsql = "BEGIN fac.clrnotifications ('MLD2CO', " + ingesloten[i].mld_key + "); END;";
|
|
Oracle.Execute(clrsql);
|
|
|
|
// check (zat er al in)
|
|
// TODO: Het afwijzen gaat niet altijd goed. Wat is de reden daartoe? Status wordt in enkele gevallen niet op 1 gezet door mld.setmeldingstatus?
|
|
sql = "SELECT ''"
|
|
+ " FROM mld_melding"
|
|
+ " WHERE mld_melding_key = " + ingesloten[i].mld_key
|
|
+ " AND mld_melding_status = 1";
|
|
oRs = Oracle.Execute(sql);
|
|
if (oRs.eof)
|
|
{
|
|
notaccepted++;
|
|
}
|
|
|
|
var ctr_close = getFParam("ctr_close", "off") == "on";
|
|
if (ctr_close)
|
|
{
|
|
for (var t = 0; t < ingesloten[i].ins_key_arr.length; t++)
|
|
{
|
|
var reject_mld = { mld_key: ingesloten[i].mld_key};
|
|
reject_mld.inspect = { savemode: "C"
|
|
, ins_keys: ingesloten[i].ins_key_arr[t]
|
|
, srtcont_key_arr: ingesloten[i].srtcont_key_arr[t]
|
|
, finish: 1
|
|
, deelsrtcontrole_datum: (new Date()).getTime()
|
|
, sel_controlemode: getFParamInt("sel_controlemode" + ingesloten[i].controlemode_arr[t])
|
|
};
|
|
reject_arr.push(reject_mld);
|
|
}
|
|
}
|
|
}
|
|
var warning = (notaccepted == ingesloten.length ? L("lcl_mld_reject_failed") : "");
|
|
|
|
var result = { success: true, warning: warning, mld_key: mld_key_arr, reject_arr: reject_arr };
|
|
Response.Write(JSON.stringify(result));
|
|
%><% ASPPAGE_END(); %>
|