diff --git a/APPL/INS/ins_inspect_list.asp b/APPL/INS/ins_inspect_list.asp
index f0fdb761a0..4941799f99 100644
--- a/APPL/INS/ins_inspect_list.asp
+++ b/APPL/INS/ins_inspect_list.asp
@@ -145,17 +145,11 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
// Als de controlesoort niet meer geldig is dan kunnen er geen inspecties meer komen.
// Een object kan meerdere controlesoorten hebben. Alleen die controlesoorten laten zien die nog geldig zijn.
- var lastinspect = "(SELECT GREATEST(COALESCE (idsc.ins_deelsrtcontrole_plandatum"
- + " , CASE di.ins_srtcontrole_mode"
- + " WHEN 0"
- + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
- + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
- + " END)"
- + " , CASE di.ins_srtcontrole_mode"
- + " WHEN 0"
- + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
- + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
- + " END) ins_deelsrtcontrole_datum"
+ var lastinspect = "(SELECT CASE di.ins_srtcontrole_mode"
+ + " WHEN 0"
+ + " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ + " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ + " END ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
diff --git a/APPL/INS/ins_inspect_save.asp b/APPL/INS/ins_inspect_save.asp
index 94fd000577..b2015be5b1 100644
--- a/APPL/INS/ins_inspect_save.asp
+++ b/APPL/INS/ins_inspect_save.asp
@@ -36,6 +36,7 @@ var srtcont_key_arr = getFParamIntArray("srtcont_key_arr", []); // Inspectiesoor
var savemode = getFParam("savemode");
var finish = getFParamInt("finish", 0) == 1; // Inspectie direct afronden.
+var mjob = getFParamInt("mjob", 0) == 1;
// Als multi dan moet de ins_deel array even groot zijn als de srtcontrole array en deelsrtcontrole array.
user.auth_required_or_abort(!multi || (ins_key_arr.length == srtcont_key_arr.length));
@@ -170,16 +171,19 @@ for (var i = 0; i < ins_key_arr.length; i++)
user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet
-function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent)
+function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent, pdelete)
{
// HIER WORDEN DE SAVEFLEXKENMERKEN GEREGELD
- currentKenmerkenSQL = " SELECT kd.ins_kenmerk_key"
- + " , kd.ins_kmdeelsrtcontr_waarde"
- + " FROM ins_kmdeelsrtcontr kd"
- + " , ins_kenmerk k"
- + " WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key"
- + " AND kd.ins_kmdeelsrtcontr_verwijder IS NULL"
- + " AND kd.ins_deelsrtcontrole_key = " + pdlsrtcont_key;
+ if (pdelete)
+ currentKenmerkenSQL = "SELECT 1 FROM DUAL WHERE 1 = 0"; // Geen flexkenmerken opslaan en alle waarden verwijderen.
+ else
+ currentKenmerkenSQL = " SELECT kd.ins_kenmerk_key"
+ + " , kd.ins_kmdeelsrtcontr_waarde"
+ + " FROM ins_kmdeelsrtcontr kd"
+ + " , ins_kenmerk k"
+ + " WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key"
+ + " AND kd.ins_kmdeelsrtcontr_verwijder IS NULL"
+ + " AND kd.ins_deelsrtcontrole_key = " + pdlsrtcont_key;
var ftrack = saveFlexKenmerken( pdlsrtcont_key
, { kenmerkTable: "ins_kmdeelsrtcontr"
@@ -198,7 +202,7 @@ function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent)
if (savemode == "P")
-{ // Inplannen inspectie.
+{ // Inplannen inspectie. Er is nog geen inspectierecord aanwezig.
var result = { success: true, plandatum: plandatum, savemode: savemode, warning: "" };
if (ingesloten.length == 1)
@@ -208,6 +212,7 @@ if (savemode == "P")
+ " WHERE ins_srtcontrole_key = " + ingesloten[0].srtcont_key;
var oRs = Oracle.Execute(sql);
result.srtcontrole_type = oRs("ins_srtcontrole_type").Value;
+
oRs.Close();
}
@@ -217,7 +222,7 @@ if (savemode == "P")
// Is er een inspectie (ins_deelsrtcontrole) record aanwezig (ins_deelsrtcontrole_key is NULL).
var insPresent = ingesloten[i].dlsrtcont_key > 0;
- // Eerst maar eens aanmaken een inspectie record aanmaken.
+ // Eerst maar eens een inspectie record aanmaken.
// Zijn er inspecties geweest voor dit object of is er een plandatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
var sql = "SELECT ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
@@ -227,11 +232,10 @@ if (savemode == "P")
var oRs = Oracle.Execute(sql);
var nextdate = null;
if (!oRs.eof)
- { // Bereken de volgende inspectiedatum.
+ { // Bereken de volgende inspectiedatum. Het object is minstens 1 keer geinspecteerd.
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
oRs = Oracle.Execute(sql);
nextdate = new Date(oRs("nextdate").Value);
- oRs.Close();
}
//else Er zijn nog geen inspecties geweest voor dit object en er is nog geen plandatum voor dit object ingevuld.
// Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
@@ -521,15 +525,70 @@ else if (savemode == "E")
{ // Wijzigen inspectie (Edit). Update van de gegevens (plandatum, opmerking en flexkenmerken).
var result = { success: true, plandatum: plandatum, deelsrtcontrole_key: ingesloten[0].dlsrtcont_key, savemode: savemode, warning: "" };
- var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", frm: "plandatum", track: L("lcl_opdr_plandate") },
- { dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 }
- ];
+ var mjobdelete = false;
+ if (mjob)
+ { // Nieuwe plandatum vanuit het mjob scherm ontvangen.
+ // Indien het jaar van de plandatum hetzelfde is als het jaar van de orginele datum, kan het plan record verwijderd worden.
- if (canMsuEdit)
- fields.push({ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" });
+ // Is het een mjob discipline en is de eenheid jaarlijks?
+ sql = "SELECT cdp.ctr_disc_params_ismjob"
+ + " , isc.ins_srtcontrole_eenheid"
+ + " FROM ins_srtcontrole isc"
+ + " , ctr_disc_params cdp"
+ + " WHERE isc.ctr_discipline_key = cdp.ctr_ins_discipline_key"
+ + " AND isc.ins_srtcontrole_key = " + ingesloten[0].srtcont_key;
+ oRs = Oracle.Execute(sql);
+ var ismjob = !oRs.eof && oRs("ctr_disc_params_ismjob").Value == 1;
+ var isjaarlijks = oRs("ins_srtcontrole_eenheid").Value == 4;
+ oRs.Close();
- var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[0].dlsrtcont_key, fields);
- var err = Oracle.Execute(insUpd.sql, true);
+ // Zijn er inspecties geweest voor dit object of is er een plandatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
+ var sql = "SELECT ins_deelsrtcontrole_datum"
+ + " , MAX(ins_deelsrtcontrole_datum_org) ins_deelsrtcontrole_datum_org"
+ + " FROM ins_deelsrtcontrole idsc"
+ + " WHERE idsc.ins_srtcontrole_key = " + ingesloten[0].srtcont_key
+ + " AND idsc.ins_deel_key = " + ingesloten[0].ins_key
+ + " AND idsc.ins_deelsrtcontrole_datum IS NOT NULL"
+ + " GROUP BY ins_deelsrtcontrole_datum";
+ var oRs = Oracle.Execute(sql);
+ var nextdate = null;
+ if (!oRs.eof)
+ { // Er is een inspectie geweest. In de laatste inspectie staat de volgende orginele inspectiedatum (nextdate). Voor een eerste inspectie is dat de inspectiedatum.
+ nextdate = new Date(oRs("ins_deelsrtcontrole_datum_org").Value);
+
+ // Is jaar plandatum gelijk aan jaar orginele datum?
+ var plandatum_jaar = plandatum.getFullYear();
+ var nexdate_jaar = nextdate.getFullYear();
+
+ if (ismjob && isjaarlijks && plandatum_jaar == nexdate_jaar)
+ { // Verwijder het inspectie record en ga verder met het volgende object.
+ mjobdelete = true;
+ }
+ }
+ //else Er zijn nog geen inspecties geweest voor dit object en er is nog geen plandatum voor dit object ingevuld.
+ // Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
+ }
+
+ if (mjobdelete)
+ { // Verwijder het inspectie record.
+ var sql = "DELETE FROM ins_deelsrtcontrole"
+ + " WHERE ins_deel_key = " + ingesloten[0].ins_key
+ + " AND ins_srtcontrole_key = " + ingesloten[0].srtcont_key
+ + " AND ins_deelsrtcontrole_status = 0";
+ var err = Oracle.Execute(sql, true);
+ }
+ else
+ {
+ var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", frm: "plandatum", track: L("lcl_opdr_plandate") },
+ { dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 }
+ ];
+
+ if (canMsuEdit)
+ fields.push( { dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } );
+
+ var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[0].dlsrtcont_key, fields);
+ var err = Oracle.Execute(insUpd.sql, true);
+ }
if (err.friendlyMsg)
{
@@ -537,9 +596,9 @@ else if (savemode == "E")
result.success = false;
}
- var flextrack = saveFlexKenmerkenInspection(ingesloten[0].dlsrtcont_key, insPresent);
+ var flextrack = saveFlexKenmerkenInspection(ingesloten[0].dlsrtcont_key, insPresent, mjobdelete);
- if (insUpd.trackarray.length || flextrack.length)
+ if (!mjobdelete && (insUpd.trackarray.length || flextrack.length))
ins.trackinspectupdate(ingesloten[0].dlsrtcont_key, L("lcl_ins_controle_is_upd") + "\n" + insUpd.trackarray.concat(flextrack).join("\n"));
}
diff --git a/APPL/INS/ins_list.js b/APPL/INS/ins_list.js
index 0ea42151a8..3101444136 100644
--- a/APPL/INS/ins_list.js
+++ b/APPL/INS/ins_list.js
@@ -35,7 +35,7 @@ function insSave(rowArray)
{
var data = $("#inslist").serialize();
protectRequest.dataToken(data);
- $.post("ins_save_use.asp",
+ $.post("../ins/ins_save_use.asp",
data,
FcltCallbackRefresh,
"json");
@@ -240,7 +240,7 @@ function insStart(rowArray, isMulti)
srtcont_key_arr: srtcontrolekeyArray.join(",")
};
protectRequest.dataToken(data);
- $.post( "ins_inspect_start.asp"
+ $.post( "../ins/ins_inspect_start.asp"
, data
, FcltCallbackRefresh
, "json"
@@ -285,7 +285,7 @@ function insFinish(rowArray, isMulti)
dlsrtcont_key_arr: deelsrtcontrkeyArray.join(",")
};
protectRequest.dataToken(data);
- $.post( "ins_inspect_finish.asp"
+ $.post( "../ins/ins_inspect_finish.asp"
, data
, FcltCallbackRefresh
, "json"
diff --git a/APPL/MJB/mjb_search_list.asp b/APPL/MJB/mjb_search_list.asp
index 13671e6325..5d1d6183df 100644
--- a/APPL/MJB/mjb_search_list.asp
+++ b/APPL/MJB/mjb_search_list.asp
@@ -15,9 +15,10 @@
+
<%
FCLTHeader.Requires({plugins: ["jQuery"],
- js : ["jquery-ui.js"]}); // Voor slepen
+ js : ["jquery-ui.js", "../ins/ins_list.js"]}); // Voor slepen en acties.
var urole = getQParamSafe("urole", ""); // Indien niet meegegeven, veronderstel dan frontend gebruik
@@ -129,7 +130,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
ins_keys: ins_key,
srtcont_key_arr: srtcont_key,
plandatum: new Date(jaar, 11, 31).getTime(),
- jaar: jaar
+ mjob: 1
};
protectRequest.dataToken(data);
$.post("../ins/ins_inspect_save.asp"
@@ -148,7 +149,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben
var row = $td.closest('tr')[0];
var insData = eval("(" + row.getAttribute("ROWDATA") + ")");
- moveplan(null, insData.ins, insData.taak, $th.text());
+ moveplan(null, insData.insKey, insData.insSrtControleKey, $th.text());
}
});
@@ -182,8 +183,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
- mjbDeelKeyArray.push(rowdata.ins);
- mjbSrtContrKeyArray.push(rowdata.taak);
+ mjbDeelKeyArray.push(rowdata.insKey);
+ mjbSrtContrKeyArray.push(rowdata.insSrtControleKey);
}
url = "../mjb/mjb_dragdropyear.asp";
@@ -458,25 +459,25 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " AND d.alg_district_key = l.alg_district_key"
+ " AND dg.alg_gebouw_key = g.alg_gebouw_key";
- var sql_cost = "SELECT alg_district_key"
- + " , alg_district_omschrijving"
- + " , alg_gebouw_omschrijving"
- + " , alg_gebouw_key"
- + " , ins_deel_omschrijving"
- + " , ins_discipline_omschrijving"
- + " , ins_srtgroep_omschrijving"
- + " , ins_srtdeel_omschrijving"
- + " , ins_srtcontrole_omschrijving"
- + " , ins_deel_key"
- + " , keyColumn"
- + " , ins_srtcontroledl_xcp_key"
- + " , ins_srtcontrole_key"
- + " , ins_srtcontrole_periode"
- + " , ins_srtcontrole_opmerking"
- + " , ins_srtcontrole_level"
- + " , vervaljaar"
- + " , vervangingsjaar"
- + " , afbouwtijd"
+ var sql_cost = "SELECT cv.alg_district_key"
+ + " , cv.alg_district_omschrijving"
+ + " , cv.alg_gebouw_omschrijving"
+ + " , cv.alg_gebouw_key"
+ + " , cv.ins_deel_omschrijving"
+ + " , cv.ins_discipline_omschrijving"
+ + " , cv.ins_srtgroep_omschrijving"
+ + " , cv.ins_srtdeel_omschrijving"
+ + " , cv.ins_srtcontrole_omschrijving"
+ + " , cv.ins_deel_key"
+ + " , cv.keyColumn"
+ + " , cv.ins_srtcontroledl_xcp_key"
+ + " , cv.ins_srtcontrole_key"
+ + " , cv.ins_srtcontrole_periode"
+ + " , cv.ins_srtcontrole_opmerking"
+ + " , cv.ins_srtcontrole_level"
+ + " , cv.vervaljaar"
+ + " , cv.vervangingsjaar"
+ + " , cv.afbouwtijd"
+ " , CASE"
+ " WHEN (SELECT idsc.ins_deelsrtcontrole_key"
+ " FROM ins_deelsrtcontrole idsc"
@@ -486,15 +487,29 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " THEN 1"
+ " ELSE 0"
+ " END isPlanned"
- + " , bedrag AS orgbedrag"
+ + " , CASE"
+ + " WHEN (SELECT idsc.ins_deelsrtcontrole_key"
+ + " FROM ins_deelsrtcontrole idsc"
+ + " WHERE idsc.ins_deel_key = cv.ins_deel_key"
+ + " AND idsc.ins_srtcontrole_key = cv.ins_srtcontrole_key"
+ + " AND idsc.ins_deelsrtcontrole_status IN (2, 5)) IS NOT NULL"
+ + " THEN 0"
+ + " ELSE 1"
+ + " END canBePlanned"
+ + " , COALESCE((SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ + " FROM ins_deelsrtcontrole idsc2"
+ + " WHERE idsc2.ins_deel_key = cv.ins_deel_key"
+ + " AND idsc2.ins_srtcontrole_key = cv.ins_srtcontrole_key)"
+ + " , -1) ins_deelsrtcontrole_key"
+ + " , cv.bedrag AS orgbedrag"
// Als er een andere inspectie is met een lagere ins_srtcontrole_level
// in hetzelfde jaar dan springt ons bedrag op 0
- + " , CASE WHEN MIN(ins_srtcontrole_level) KEEP (DENSE_RANK FIRST ORDER BY ins_srtcontrole_level) "
- + " OVER (PARTITION BY ins_deel_key, vervangingsjaar) < ins_srtcontrole_level"
+ + " , CASE WHEN MIN(cv.ins_srtcontrole_level) KEEP (DENSE_RANK FIRST ORDER BY cv.ins_srtcontrole_level) "
+ + " OVER (PARTITION BY cv.ins_deel_key, cv.vervangingsjaar) < cv.ins_srtcontrole_level"
+ " OR"
- + " vervaljaar - COALESCE(afbouwtijd, 0) < vervangingsjaar"
+ + " cv.vervaljaar - COALESCE(cv.afbouwtijd, 0) < cv.vervangingsjaar"
+ " THEN 0 "
- + " ELSE bedrag "
+ + " ELSE cv.bedrag "
+ " END bedrag"
+ " FROM (" + sql_cost_verval + ") cv";
@@ -536,7 +551,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
function fnkeyFunction(oRs)
{
if (fulldetails)
- return oRs("ins_deel_key").Value + "-" + oRs("ins_srtcontrole_key").Value;
+ return oRs("ins_deel_key").Value; // + "-" + oRs("ins_srtcontrole_key").Value;
else
return oRs("keyColumn").Value;
}
@@ -546,8 +561,9 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
var data = {};
if (fulldetails)
{
- data.ins = oRs("ins_deel_key").Value;
- data.taak = oRs("ins_srtcontrole_key").Value;
+ data.insKey = oRs("ins_deel_key").Value;
+ data.insSrtControleKey = oRs("ins_srtcontrole_key").Value;
+ data.insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1;
}
return JSON.stringify(data);
@@ -567,6 +583,19 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
function fnrowActionEnabler(oRs)
{
var data = {};
+ //var eShowInsp = false;
+ var ePlan = false;
+ var eStart = false;
+ var eClose = false;
+ var eFinish = false;
+ 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? oRs("ins_deelsrtcontrole_key").Value : -1});
+ ePlan = this_ins.canInspPlan;
+ eStart = this_ins.canInspStart;
+ eClose = this_ins.canInspClose;
+ eFinish = this_ins.canInspFinish;
+ var data = {ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish};
return data;
}
@@ -669,7 +698,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
doneclik[deel_key + ":" + srtcont_key] = 1;
// INSUSE read rechten heb je al nodig om dit overzicht te zien.
- return "{0}".format(safe.curr(v, true))
+ // Inspecties in de status gestart(2) of gereedgemeld(5) mogen niet drag en drop zijn. Planningsdatum is daarvan niet aan te passen.
+ return "{0}".format(safe.curr(v, true))
/* experimenteel inline schuiven
var fnprev = "moveplan(event, {0}, {1}, {2}-1)".format(deel_key, srtcont_key, jaar);
@@ -697,8 +727,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
else if (vervaljaar != null && jaar > vervaljaar)
return "mjbjaar mjbverval";
}
- return "mjbjaar";
}
+ return "mjbjaar";
}
}
@@ -746,9 +776,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
else
var content = fnfnBedrag(String(jaren[j]));
rst.addColumn(new Column({caption: String(jaren[j]), datatype: "number",
- tdClass: "mjbjaar",
content: content,
- columnClass: fnfncolClass(String(jaren[j])),
+ columnClass: fnfncolClass(String(jaren[j])), // tdClass dan niet meer nodig.
total: true,
fnAmount: fnfnBedragNumber(String(jaren[j]))
}));
@@ -764,6 +793,11 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
if (fulldetails)
{
rst.addAction({ action: "mjb_dragdrop", caption: L("lcl_mjb_dragdrop"), multi: true, multiOnce: true, onlyMulti: true } );
+
+ rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), multi: true, multiOnce: true, enabler: "ePlan", onlyMulti: true });
+ rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), multi: true, multiOnce: true, enabler: "eStart", onlyMulti: true });
+ rst.addAction({ action: "insClose", caption: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), multi: true, multiOnce: true, enabler: "eClose", onlyMulti: true });
+ rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), multi: true, multiOnce: true, enabler: "eFinish", onlyMulti: true });
}
var count = rst.processResultset();