Files
Facilitor/APPL/MLD/mld_reject_save.asp
Peter Feij c7cafc7535 LOGC#90264 Ook geaccepteerde meldingen nog kunnen afwijzen
svn path=/Website/trunk/; revision=70009
2025-08-14 14:09:19 +00:00

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