FSN#44847: Multi-actie vervolgmelding.

svn path=/Website/trunk/; revision=35797
This commit is contained in:
Maykel Geerdink
2017-10-24 09:33:08 +00:00
parent 22e5a3fa63
commit 80c69a53e5
4 changed files with 345 additions and 215 deletions

View File

@@ -23,11 +23,31 @@ if (backo)
else
autfunction = 'WEB_MLDUSE';
var mld_key = getQParamInt('mld_key');
var this_mld = mld.func_enabled_melding(mld_key);
user.auth_required_or_abort(this_mld.canContinue);
var mld_melding = mld.mld_melding_info(mld_key); // Globale variabele met alle mld_melding informatie
lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
var mld_key_arr = getQParamIntArray("mld_key");
var tobecontinued = 0;
var ingesloten = [];
var this_mld;
var mld_info;
var opmerk_ro = true;
// Bepaal de meldingen in de selectie die
// ook echt vervolgt kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
mld_info = mld.mld_melding_info(mld_key_arr[i]);
lcl.set_dialect(mld_info.srtdisc, "MLD_SRTDISCIPLINE_KEY");
if (this_mld.canContinue && !mld_info.parent_key) // Geen child melding
{
ingesloten.push(mld_key_arr[i]);
tobecontinued++;
opmerk_ro = opmerk_ro && mld_info.mld_status == 5;
}
}
// De laatst gebruikte set_dialect uit de for-lus geldt nu voor de onderstaande code.
user.anything_todo_or_abort(tobecontinued > 0); // We klagen niet over enkele wel en enkele niet
var multi = ingesloten.length > 1;
%>
<html>
@@ -38,7 +58,7 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
var user_kpkey = <%=user.afdeling().prs_kostenplaats_key() || -1%>;
var user_kpnaam = "<%=safe.jsstring(user.afdeling().kpn_naam())%>";
var user_kpmodule = "<%=user.afdeling().kpn_module()%>";
var show_alg = (<%=mld_melding.show_alg? 1 : 0%> == 1);
var show_alg = (<%=mld_info.show_alg? 1 : 0%> == 1);
function mld_cont()
{
document.activeElement.blur(); // trigger laatste onChanges
@@ -77,7 +97,6 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
$.getJSON("./get_mld_info_ajax.asp",
{ req_info: "mld_stdmelding",
mld_stdmelding_key: stdmelding_key,
mld_key: <%=mld_key%>,
caller_key: <%=user_key%> },
process_stdm_info);
}
@@ -86,18 +105,19 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
</head>
<body class="modal" id="mod_mldcontinue">
<form id="rejectform" name="rejectform" action="mld_continue_save.asp?mld_key=<%=mld_key%>&urole=<%=urole%>" method="post">
<form id="rejectform" name="rejectform" action="mld_continue_save.asp?mld_key=<%=ingesloten.join(",")%>&urole=<%=urole%>" method="post">
<%
BLOCK_START("mldContinue", L("lcl_mld_continueblok") + (mld_melding.prefix||"") + mld_key);
BLOCK_START("mldContinue", L("lcl_mld_continueblok") + (multi? (mld_info.prefix||"") + ingesloten[0]
: "(" + ingesloten.length + " " + L("lcl_complains") + ")"));
// Vakgroep
FCLTdisciplineselector("disc",
"sgDisc",
{ label: L("lcl_vakgroup"),
disc_key: null, //mld_disc,
module: "MLD",
perslidKey: mld_melding.melder_key,
perslidKey: multi? user_key : mld_info.melder_key, // Wordt niet naar gekeken omdat autfunctionKey == -1
autfunctionKey: -1, // alles is toegestaan! authparams.autfunctionkey,
srtdisc_key: (S("mld_forward_all") == 1 ? null : mld_melding.srtdisc),
srtdisc_key: (S("mld_forward_all") == 1 || multi ? null : mld_info.srtdisc),
filtercode: "VD",
onChange: "onChangeVakgroep",
required: true
@@ -106,9 +126,9 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
FCLTstdmeldingselector("stdm",
"sgStdm",
{ label: L("lcl_complain"),
perslidKey: mld_melding.melder_key,
perslidKey: multi? user_key : mld_info.melder_key,
autfunctionKey: -1, // alles is toegestaan! authparams.autfunctionkey,
srtdisc_key: (S("mld_forward_all") == 1 ? null : mld_melding.srtdisc),
srtdisc_key: (S("mld_forward_all") == 1 || multi? null : mld_info.srtdisc),
urlAdd: [{urlParam: "disc_key", field: "disc"}],
stdmelding_key: null,
onChange: "onChangeStdMelding",
@@ -119,7 +139,7 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
{
FCLTpersoonselector("person",
"sgPerson",
{ perslidKey: mld_melding.melder_key,
{ perslidKey: multi? user_key : mld_info.melder_key,
label: L("lcl_mld_name"),
fieldNameKey: "person",
moreinfo: backo,
@@ -128,9 +148,10 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
});
}
// Opmerking die wordt opgeslagen in de oorspronkelijke opmerking
RWTEXTAREATR("opmerk", "fldremark", L("lcl_mld_omschr_oorsprong"), mld_melding.remark, {html: "rows='8'", readonly: (mld_melding.mld_status==5?true:false)});
RWTEXTAREATR("vervolg", "fldremark", L("lcl_mld_omschr_vervolg"), mld_melding.mld_omschr, {html: "rows='8'"});
// Bij multi worden de opmerking en omschrijving (vervolg) aangevuld met wat je invuld.
// Bij 1 melding kun je de huidige opmerking en omschrijving (vervolg) die je in beeld krijgt aanvullen.
RWTEXTAREATR("opmerk", "fldremark", L("lcl_mld_omschr_oorsprong"), (multi? "" : mld_info.remark), {html: "rows='8'", readonly: opmerk_ro});
RWTEXTAREATR("vervolg", "fldremark", L("lcl_mld_omschr_vervolg"), (multi? "" : mld_info.mld_omschr), {html: "rows='8'"});
BLOCK_END();
var buttons = [ {title: L("lcl_mld_continuation"), icon: "opslaan.png", action: "mld_cont()", singlepress: true, id: "btn_cont_submit" },
{title: L("lcl_cancel"), icon: "undo.png", action: "mld_cancel()" } ];

View File

@@ -24,7 +24,7 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
js: [] })
var urole = getQParamSafe("urole");
var mld_key = getQParamInt("mld_key");
var mld_key_arr = getQParamIntArray("mld_key");
var stdm_key = getFParamInt("stdm");
var opmerk = getFParam("opmerk", "");
var vervolg = getFParam("vervolg", "");
@@ -36,15 +36,46 @@ var stdm_info = mld.mld_stdmeldinginfo(stdm_key);
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation("WEB_MLDFOF");
var mld_melding = mld.mld_melding_info(mld_key);
var locatiekey = mld_melding.loc_key;
if (locatiekey < 0 && mld_melding.deladdress)
{ // Als we geen locatiekey hebben maar wel een afleveradres, kunnen we mogelijk ook een locatiekey bepalen
oRs = Oracle.Execute('SELECT alg_locatie_key FROM mld_adres WHERE mld_adres_key = ' + mld_melding.deladdress);
if (!oRs.eof && oRs("alg_locatie_key").Value)
locatiekey = oRs("alg_locatie_key").Value;
var tobecontinued = 0;
var ingesloten = [];
var this_mld;
var mld_info;
var opmerk_ro = true;
// Bepaal de meldingen in de selectie die
// ook echt vervolgt kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
{
this_mld = mld.func_enabled_melding(mld_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke melding
mld_info = mld.mld_melding_info(mld_key_arr[i]);
lcl.set_dialect(mld_info.srtdisc, "MLD_SRTDISCIPLINE_KEY");
if (this_mld.canContinue && !mld_info.parent_key) // Geen child melding
{
ingesloten.push(mld_key_arr[i]);
tobecontinued++;
opmerk_ro = opmerk_ro && mld_info.mld_status == 5;
}
}
// De laatst gebruikte set_dialect uit de for-lus geldt nu voor de onderstaande code.
user.anything_todo_or_abort(tobecontinued > 0); // We klagen niet over enkele wel en enkele niet
var multi = ingesloten.length > 1;
//var mld_melding = mld.mld_melding_info(mld_key);
var prs_bedrijf_key;
if (multi)
prs_bedrijf_key = mld.dienst_controle(stdm_key, user.alg_locatie_key(), user.alg_gebouw_key(), user.alg_ruimte_key(), user_key);
else
{
var locatiekey = mld_info.loc_key;
if (locatiekey < 0 && mld_info.deladdress)
{ // Als we geen locatiekey hebben maar wel een afleveradres, kunnen we mogelijk ook een locatiekey bepalen
oRs = Oracle.Execute("SELECT alg_locatie_key FROM mld_adres WHERE mld_adres_key = " + mld_info.deladdress);
if (!oRs.eof && oRs("alg_locatie_key").Value)
locatiekey = oRs("alg_locatie_key").Value;
}
prs_bedrijf_key = mld.dienst_controle(stdm_key, locatiekey, mld_info.bld_key, mld_info.room_key, mld_info.perslid_key_voor);
}
var prs_bedrijf_key = mld.dienst_controle(stdm_key, locatiekey, mld_melding.bld_key, mld_melding.room_key, mld_melding.perslid_key_voor);
%>
<html>
@@ -66,13 +97,28 @@ function PropertieItem(key, waarde, defaultwaarde, verplicht, srtkey, groep)
var currentProperties = new Array();
var fields = [ { dbs: "mld_melding_opmerking", typ: "varchar", val: opmerk, track: L("lcl_mld_inf_Opmerking"), len: 4000 }
];
for (var i = 0; i < ingesloten.length; i++)
{
var mld_opm = [];
if (multi)
{ // Haal opmerking van de melding op
var sql = "SELECT mld_melding_opmerking"
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + ingesloten[i];
oRs = Oracle.Execute(sql);
var mld_melding_opmerking = oRs("mld_melding_opmerking").Value || "";
if (oRs("mld_melding_opmerking").Value != "")
mld_opm.push(oRs("mld_melding_opmerking").Value);
}
if (opmerk != "")
mld_opm.push(opmerk);
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + mld_key, fields);
oRs = Oracle.Execute(mldUpd.sql);
if (mldUpd.trackarray.length)
mld.trackmeldingupdate(mld_key, L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
var fields = [ { dbs: "mld_melding_opmerking", typ: "varchar", val: mld_opm.join("\n"), track: L("lcl_mld_inf_Opmerking"), len: 4000 } ];
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i], fields);
oRs = Oracle.Execute(mldUpd.sql);
if (mldUpd.trackarray.length)
mld.trackmeldingupdate(ingesloten[i], L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
}
// Copieer melding naar nieuwe melding met
// - nieuwe productgroep/vakgroep (mld_discipline)
@@ -83,7 +129,7 @@ if (mldUpd.trackarray.length)
var foundValue = false;
var waarde = null;
var melder_key = ((S("mld_continue_edit_issuer") && person_key != -1) ? person_key : mld_melding.melder_key);
var melder_key = ((S("mld_continue_edit_issuer") && person_key != -1) ? person_key : (multi? user_key : mld_info.melder_key));
var melder_info = new Perslid(melder_key); // Je maakt de melding voor jezelf of ander aan (prs_perslid_key_voor is user_key).
if ((S("mld_continue_edit_issuer") && person_key != -1))
@@ -92,7 +138,7 @@ if ((S("mld_continue_edit_issuer") && person_key != -1))
user.auth_required_or_abort(canAdd);
}
var kp_key = mld_melding.kostenpl_key;
var kp_key = multi? user.afdeling().prs_kostenplaats_key() : mld_info.kostenpl_key;
// Kostenplaats is verplicht maar geen kostenplaats bij de orginele melding?
if (stdm_info.kpnverplicht == 1 && kp_key < 0)
@@ -110,55 +156,100 @@ oRs = Oracle.Execute(sql);
var new_mld_key = oRs(0).Value;
oRs.close();
// Ook niet copie<69>ren: mld_melding_opmerking, mld_melding_behandeling
// De status mld_melding_status wordt ingevoerd (2)
sql = "INSERT INTO mld_melding ("
+ " mld_melding_key"
+ ", mld_melding_module"
+ ", mld_ins_srtinst_keys"
+ ", mld_meldbron_key"
+ ", mld_meldbron_nr"
+ ", mld_oorzaak_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", mld_melding_datum"
+ ", mld_melding_omschrijving"
+ ", mld_stdmelding_key"
+ ", mld_melding_geprint"
+ ", mld_kosten_klant"
+ ", mld_melding_document"
+ ", mld_melding_ordernr"
+ ", prs_perslid_key"
+ ", mld_adres_key"
+ ", mld_melding_start_key"
+ ", mld_melding_spoed"
+ ", prs_kostenplaats_key"
+ ", fac_activiteit_key"
+ ")"
+ " SELECT "
+ new_mld_key
+ ", mld_melding_module"
+ ", mld_ins_srtinst_keys"
+ ", mld_meldbron_key"
+ ", mld_meldbron_nr"
+ ", mld_oorzaak_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", SYSDATE"
+ ", " + safe.quoted_sql(vervolg) // aangepaste omschrijving van oorspronkelijke melding wordt omschrijving vervolgmelding
+ ", " + stdm_key
+ ", mld_melding_geprint"
+ ", mld_kosten_klant"
+ ", mld_melding_document"
+ ", mld_melding_ordernr"
+ ", "+ (melder_info.isSystemUser() ? user_key : melder_key)
+ ", mld_adres_key"
+ ", " + mld_key
+ ", 3" // Altijd normaal. Vervolgmelding kent misschien onze prio niet
+ ", " + (kp_key && kp_key > 0? kp_key : "NULL")
+ ", fac_activiteit_key"
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + mld_key;
if (multi)
{
var alg_onroerendgoed_keys = -1;
if (stdm_info.ins_srtdiscipline_alg)
{
if (stdm_info.alg_level == 2)
alg_onroerendgoed_keys = user.alg_locatie_key();
else
alg_onroerendgoed_keys = user.alg_ruimte_key();
}
sql = "INSERT INTO mld_melding ("
+ " mld_melding_key"
+ ", mld_melding_module"
+ ", mld_meldbron_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", mld_melding_datum"
+ ", mld_melding_omschrijving"
+ ", mld_stdmelding_key"
+ ", mld_kosten_klant"
+ ", prs_perslid_key"
+ ", mld_adres_key"
+ ", mld_melding_spoed"
+ ", prs_kostenplaats_key"
+ ")"
+ " VALUES ("
+ new_mld_key
+ ", 'MLD'"
+ ", " + S("mld_meldbron_key")
+ ", " + (user.alg_locatie_key() > 0? user.alg_locatie_key() : "NULL")
+ ", " + (alg_onroerendgoed_keys > 0? alg_onroerendgoed_keys : "NULL")
+ ", SYSDATE"
+ ", " + safe.quoted_sql(vervolg) // aangepaste omschrijving van oorspronkelijke melding wordt omschrijving vervolgmelding
+ ", " + stdm_key
+ ", " + (stdm_info.ins_srtdiscipline_kostenklant==1? 1 : 0)
+ ", " + (melder_info.isSystemUser() ? user_key : melder_key)
+ ", " + user.mld_adres_key() // "NULL" indien niet ingevuld.
+ ", 3" // Altijd normaal. Vervolgmelding kent misschien onze prio niet
+ ", " + (kp_key && kp_key > 0? kp_key : "NULL")
+ ")";
}
else
{
// Ook niet copie<69>ren: mld_melding_opmerking, mld_melding_behandeling
// De status mld_melding_status wordt ingevoerd (2)
sql = "INSERT INTO mld_melding ("
+ " mld_melding_key"
+ ", mld_melding_module"
+ ", mld_ins_srtinst_keys"
+ ", mld_meldbron_key"
+ ", mld_meldbron_nr"
+ ", mld_oorzaak_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", mld_melding_datum"
+ ", mld_melding_omschrijving"
+ ", mld_stdmelding_key"
+ ", mld_melding_geprint"
+ ", mld_kosten_klant"
+ ", mld_melding_document"
+ ", mld_melding_ordernr"
+ ", prs_perslid_key"
+ ", mld_adres_key"
+ ", mld_melding_start_key"
+ ", mld_melding_spoed"
+ ", prs_kostenplaats_key"
+ ", fac_activiteit_key"
+ ")"
+ " SELECT "
+ new_mld_key
+ ", mld_melding_module"
+ ", mld_ins_srtinst_keys"
+ ", mld_meldbron_key"
+ ", mld_meldbron_nr"
+ ", mld_oorzaak_key"
+ ", mld_alg_locatie_key"
+ ", mld_alg_onroerendgoed_keys"
+ ", SYSDATE"
+ ", " + safe.quoted_sql(vervolg) // aangepaste omschrijving van oorspronkelijke melding wordt omschrijving vervolgmelding
+ ", " + stdm_key
+ ", mld_melding_geprint"
+ ", mld_kosten_klant"
+ ", mld_melding_document"
+ ", mld_melding_ordernr"
+ ", "+ (melder_info.isSystemUser() ? user_key : melder_key)
+ ", mld_adres_key"
+ ", " + ingesloten[0]
+ ", 3" // Altijd normaal. Vervolgmelding kent misschien onze prio niet
+ ", " + (kp_key && kp_key > 0? kp_key : "NULL")
+ ", fac_activiteit_key"
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + ingesloten[0];
}
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
@@ -176,7 +267,7 @@ if (stdm_info.ins_srtinst_niveau)
+ " , ins_v_aanwezigdeel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " WHERE mld_melding_key = " + mld_key
+ " WHERE mld_melding_key IN (" + ingesloten.join(",") + ")"
+ " AND mld_melding_object_verwijder IS NULL"
+ " AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND d.ins_deel_key = mmo.ins_deel_key"
@@ -194,134 +285,150 @@ if (stdm_info.ins_srtinst_niveau)
mld.setmeldingstatus(new_mld_key, 2); // Zorgt ook voor tracking & daarmee notificatie
mld.nextworkflowstep(new_mld_key, -1); // -1 = initial (the originating call)
// Kenmerken copie<69>ren
// Sql huidige kenmerken
sql_current = "SELECT k.mld_kenmerk_key"
+ ", (SELECT v.mld_kenmerkmelding_waarde"
+ " FROM mld_kenmerkmelding v"
+ ", mld_kenmerk vk"
+ " WHERE v.mld_melding_key = " + mld_key
+ " AND vk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND vk.mld_kenmerk_groep = k.mld_kenmerk_groep"
+ " AND v.mld_kenmerk_key = vk.mld_kenmerk_key) currrval"
+ ", "+ lcl.xsqla('k.mld_kenmerk_default','k.mld_kenmerk_key')
+ ", k.mld_kenmerk_verplicht"
+ ", k.mld_srtkenmerk_key"
+ ", k.mld_kenmerk_groep"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k"
+ ", mld_stdmelding s"
+ ", mld_discipline d"
+ " WHERE s.mld_stdmelding_key = ("
+ "SELECT mld_stdmelding_key" // de oorspronkelijke! stdm_key
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + mld_key + ")"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND k.mld_kenmerk_niveau = 'T'))"
+ " AND k.mld_kenmerk_verwijder IS null"
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS null"
+ " AND k.mld_kenmerk_volgnummer <= 900"
+ " ORDER BY k.mld_kenmerk_key, k.mld_kenmerk_groep";
oRs = Oracle.Execute(sql_current);
while (!oRs.eof) {
currentProperties[currentProperties.length] = new PropertieItem(oRs("mld_kenmerk_key").Value,
oRs("currrval").Value,
oRs("mld_kenmerk_default").Value,
oRs("mld_kenmerk_verplicht").Value,
oRs("mld_srtkenmerk_key").Value,
oRs("mld_kenmerk_groep").Value);
oRs.MoveNext();
}
// Sql nieuwe kenmerken bij nieuwe mld_stdmelding
sql_new = "SELECT k.mld_kenmerk_key"
+ ", "+ lcl.xsqla('k.mld_kenmerk_default','k.mld_kenmerk_key')
+ ", k.mld_kenmerk_verplicht"
+ ", k.mld_srtkenmerk_key"
+ ", k.mld_kenmerk_groep"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k"
+ ", mld_stdmelding s"
+ ", mld_discipline d"
+ " WHERE s.mld_stdmelding_key = " + stdm_key
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND k.mld_kenmerk_niveau = 'T'))"
+ " AND k.mld_kenmerk_verwijder IS null"
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS null"
+ " AND k.mld_kenmerk_volgnummer <= 900"
+ " ORDER BY k.mld_kenmerk_key, k.mld_kenmerk_groep";
oRs = Oracle.Execute(sql_new);
while (!oRs.eof)
{
foundValue = false;
waarde = null;
for (var i = 0; i < currentProperties.length; i++)
if (multi)
{ // Tracking children na het zetten van de status van de nieuwe parent melding (mld_melding_parentkey) pas aanroepen.
// Als er een XML document (bon) wordt aangemaakt moet de status van de parent melding gezet zijn,
// anders levert de functie xml.make_xml2() een lege XML op en daardoor een foutmelding (zie ook FSN#46388).
for (var i = 0; i < ingesloten.length; i++)
{
if (currentProperties[i].srtkey == oRs("mld_srtkenmerk_key").Value && currentProperties[i].groep == oRs("mld_kenmerk_groep").Value)
{ // De srt keys en de groep zijn hetzelfde. Dan de waarde overnemen.
if (currentProperties[i].waarde != null)
{
waarde = currentProperties[i].waarde;
foundValue = true;
}
break;
}
var fields = [ { dbs: "mld_melding_parentkey", typ: "number", val: new_mld_key, track: L("lcl_mld_completion_in") } ];
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + ingesloten[i], fields);
oRs = Oracle.Execute(mldUpd.sql);
if (mldUpd.trackarray.length)
mld.trackmeldingupdate(ingesloten[i], L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
}
}
else // (!multi)
{
// Kenmerken copie<69>ren
var currentProperties = new Array();
// Sql huidige kenmerken
sql_current = "SELECT k.mld_kenmerk_key"
+ ", (SELECT v.mld_kenmerkmelding_waarde"
+ " FROM mld_kenmerkmelding v"
+ ", mld_kenmerk vk"
+ " WHERE v.mld_melding_key = " + ingesloten[0]
+ " AND vk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND vk.mld_kenmerk_groep = k.mld_kenmerk_groep"
+ " AND v.mld_kenmerk_key = vk.mld_kenmerk_key) currrval"
+ ", "+ lcl.xsqla('k.mld_kenmerk_default','k.mld_kenmerk_key')
+ ", k.mld_kenmerk_verplicht"
+ ", k.mld_srtkenmerk_key"
+ ", k.mld_kenmerk_groep"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k"
+ ", mld_stdmelding s"
+ ", mld_discipline d"
+ " WHERE s.mld_stdmelding_key = ("
+ "SELECT mld_stdmelding_key" // de oorspronkelijke! stdm_key
+ " FROM mld_melding"
+ " WHERE mld_melding_key = " + ingesloten[0] + ")"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND k.mld_kenmerk_niveau = 'T'))"
+ " AND k.mld_kenmerk_verwijder IS null"
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS null"
+ " AND k.mld_kenmerk_volgnummer <= 900"
+ " ORDER BY k.mld_kenmerk_key, k.mld_kenmerk_groep";
oRs = Oracle.Execute(sql_current);
while (!oRs.eof) {
currentProperties[currentProperties.length] = new PropertieItem(oRs("mld_kenmerk_key").Value,
oRs("currrval").Value,
oRs("mld_kenmerk_default").Value,
oRs("mld_kenmerk_verplicht").Value,
oRs("mld_srtkenmerk_key").Value,
oRs("mld_kenmerk_groep").Value);
oRs.MoveNext();
}
if (!foundValue)
{ // Als nieuwe waarde toch verplicht is dan neem de defaultwaarde.
// Als defaultwaarde ook niet gegeven is dan FcltMgr.alert(ERROR)???
if (oRs("mld_kenmerk_verplicht").Value == 1)
{ // if (verplicht)
if (oRs("mld_kenmerk_default").Value != null)
{ // defaultwaarde != null
waarde = oRs("mld_kenmerk_default").Value; // neem defaultwaarde
if (waarde.match('##SQL##') != null)
// Sql nieuwe kenmerken bij nieuwe mld_stdmelding
sql_new = "SELECT k.mld_kenmerk_key"
+ ", "+ lcl.xsqla('k.mld_kenmerk_default','k.mld_kenmerk_key')
+ ", k.mld_kenmerk_verplicht"
+ ", k.mld_srtkenmerk_key"
+ ", k.mld_kenmerk_groep"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k"
+ ", mld_stdmelding s"
+ ", mld_discipline d"
+ " WHERE s.mld_stdmelding_key = " + stdm_key
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key"
+ " AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key"
+ " AND k.mld_kenmerk_niveau = 'T'))"
+ " AND k.mld_kenmerk_verwijder IS null"
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS null"
+ " AND k.mld_kenmerk_volgnummer <= 900"
+ " ORDER BY k.mld_kenmerk_key, k.mld_kenmerk_groep";
oRs = Oracle.Execute(sql_new);
while (!oRs.eof)
{
foundValue = false;
waarde = null;
for (var i = 0; i < currentProperties.length; i++)
{
if (currentProperties[i].srtkey == oRs("mld_srtkenmerk_key").Value && currentProperties[i].groep == oRs("mld_kenmerk_groep").Value)
{ // De srt keys en de groep zijn hetzelfde. Dan de waarde overnemen.
if (currentProperties[i].waarde != null)
{
waarde = waarde.substr(waarde.indexOf('##SQL##') + 7);
var sql2 = waarde.replace("##PRS_PERSLID_KEY##", mld_melding.melder_key);
var oRsPerslid = Oracle.Execute(sql2);
if (!oRsPerslid.eof)
waarde = oRsPerslid(0).Value;
else
waarde = null;
oRsPerslid.Close();
waarde = currentProperties[i].waarde;
foundValue = true;
}
break;
}
if (!waarde)
__Log("ERROR, kenmerkwaarde is verplicht maar er is geen waarde!");
}
}
if (waarde != null)
{ // Copie<EFBFBD>r kenmerk voor nieuwe melding
sql = "INSERT INTO mld_kenmerkmelding ("
+ "mld_melding_key"
+ ", mld_kenmerk_key"
+ ", mld_kenmerkmelding_waarde"
+ ") VALUES ("
+ new_mld_key
+ ", " + oRs("mld_kenmerk_key").Value
+ ", " + safe.quoted_sql(waarde)
+ ")";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
if (!foundValue)
{ // Als nieuwe waarde toch verplicht is dan neem de defaultwaarde.
// Als defaultwaarde ook niet gegeven is dan FcltMgr.alert(ERROR)???
if (oRs("mld_kenmerk_verplicht").Value == 1)
{ // if (verplicht)
if (oRs("mld_kenmerk_default").Value != null)
{ // defaultwaarde != null
waarde = oRs("mld_kenmerk_default").Value; // neem defaultwaarde
if (waarde.match('##SQL##') != null)
{
waarde = waarde.substr(waarde.indexOf('##SQL##') + 7);
var sql2 = waarde.replace("##PRS_PERSLID_KEY##", mld_info.melder_key);
var oRsPerslid = Oracle.Execute(sql2);
if (!oRsPerslid.eof)
waarde = oRsPerslid(0).Value;
else
waarde = null;
oRsPerslid.Close();
}
}
if (!waarde)
__Log("ERROR, kenmerkwaarde is verplicht maar er is geen waarde!");
}
}
if (waarde != null)
{ // Copie<69>r kenmerk voor nieuwe melding
sql = "INSERT INTO mld_kenmerkmelding ("
+ "mld_melding_key"
+ ", mld_kenmerk_key"
+ ", mld_kenmerkmelding_waarde"
+ ") VALUES ("
+ new_mld_key
+ ", " + oRs("mld_kenmerk_key").Value
+ ", " + safe.quoted_sql(waarde)
+ ")";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
}
oRs.MoveNext();
}
oRs.MoveNext();
}
// Klantspecifieke check functie (hookfunction) voor de invoer

View File

@@ -941,7 +941,7 @@ function mld_list (pautfunction, params)
if (S("mld_melding_close") == 0) // als ik dit via de enabler doe, heb ik em multi nog steeds
rst.addAction({ action: "mld_close", caption: L("lcl_close"), enabler:"eClose", multi: !tiny, multiOnce: true } );
rst.addAction({ action: "mld_accept", caption: L("lcl_mld_accept"), enabler:"eAccept", multi: !tiny, multiOnce: true } );
rst.addAction({ action: "mld_continue", caption: L("lcl_mld_continuation"), enabler: "eContinue" } );
rst.addAction({ action: "mld_continue", caption: L("lcl_mld_continuation"), enabler: "eContinue", multi: !tiny, multiOnce: true } );
// E<>n van beiden, eEmptyRequiredFields of eForward, is true.
rst.addAction({ action: "mld_forward", caption: L("lcl_forward"), enabler: "eForward" } );
rst.addAction({ action: "mld_forward_empty", caption: L("lcl_forward"), enabler: "eEmptyRequiredFields" } );

View File

@@ -87,18 +87,20 @@ function mld_accept(rowArray, isMulti)
}
}
function mld_continue(row)
function mld_continue(rowArray, isMulti)
{
var mld_key = row.getAttribute("ROWKEY");
var mldData = eval("(" + row.getAttribute("ROWDATA") + ")");
if (mldData && !mldData.mldChild) // Child meldingen kunnen hier al tegengehouden worden.
{
var mldPrefix = mldData.mldPrefix;
var mldUrl = "../mld/mld_continue.asp?urole=" + urole + "&mld_key=" + mld_key
FcltMgr.openModalDetail( mldUrl
, L("lcl_mld_continuation_mld") + mldPrefix + mld_key
);
}
var mldKeyString = getKeyString(rowArray);
var mldData = eval("(" + rowArray[0].getAttribute("ROWDATA") + ")");
if (rowArray.length == 1 && mldData && mldData.mldChild) // Niet multi child meldingen kunnen hier al tegengehouden worden.
return;
var mldPrefix = mldData.mldPrefix;
var mldUrl = "../mld/mld_continue.asp?urole=" + urole + "&mld_key=" + mldKeyString
FcltMgr.openModalDetail( mldUrl
, L("lcl_mld_continuation_mld") + (rowArray.length == 1? mldPrefix + rowArray[0].getAttribute("ROWKEY")
: "(" + rowArray.length + " " + L("lcl_complains") + ")")
);
}
function mld_close(rowArray, isMulti)