ASFC#34371: Start en stopmoment bij schoonmaak via inspecties kunnen vastleggen.

UWVA#35539: ins: kan gedane inspectie aanpassen.

svn path=/Website/trunk/; revision=29158
This commit is contained in:
Maykel Geerdink
2016-04-25 09:56:33 +00:00
parent e4185cce84
commit eac03075ed
3 changed files with 42 additions and 47 deletions

View File

@@ -48,11 +48,17 @@ var ingeslotendsc = [];
// ook echt ingepland kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
+ (deelsrtcont_arr[i] > 0
@@ -61,39 +67,40 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
// Als de laatste inspectie is afgerond is, wordt er null opgeleverd voor de ins_deelsrtcontrole_key en ins_deelsrtcontrole_status.
// Er moet dan een nieuwe inspectie worden ingeland/gestart/afgemeld of afgerond.
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -1;
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
var vervallen = vervaldatum != null && vervaldatum < new Date();
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
if (insPlan && ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6) // Inplannen.
if (insPlan && (vervallen || !this_ins.canInspect || ins_deelsrtcontrole_status != -1)) // Inplannen.
{ // Het is niet de eerste inspectie of de laatste inspectie is niet verwerkt. Overslaan.
oRs.Close();
continue;
}
// Afgemelde inspecties kunnen niet nog eens afgemeld worden. Deze eruit filteren. Ze kunnen wel gewijzigd worden (stuk voor stuk).
if (insClose && ins_deelsrtcontrole_status == 5)
{ // De inspectie is al afgemeld. Overslaan.
if (insClose && (!this_ins.canInspect || (vervallen && (ins_deelsrtcontrole_status != 0 && ins_deelsrtcontrole_status != 2))))
{ // De inspectie kan niet afgemeld worden. Overslaan.
oRs.Close();
continue;
}
// Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
if (insEdit && (ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6))
if (insEdit && (!this_ins.canChange || vervallen || ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6))
{ // Eerste inspectoe of verwerkte inspectie kan niet gewijzigd worden. Overslaan.
oRs.Close();
continue;
}
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
// Als ik mag inspecteren mag ik ook inplannen.
if (this_ins.canInspect)
{ // Alle Arrays zijn even groot.
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(ins_deelsrtcontrole_key);
tobehandled++;
}
// Ik mag inplannen, gereed melden of wijzigen.
// Alle Arrays zijn even groot.
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(ins_deelsrtcontrole_key);
tobehandled++;
}
user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet
%>
@@ -365,32 +372,17 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
var oRs = Oracle.Execute(sql);
canMelding = (oRs("aantal").Value > 0);
oRs.Close();
// Als object is vervallen dan kun je niet meer inspecteren en uitstellen.
var this_ins = ins.func_enabled_deel(ingesloten[0]);
// Gedaande inspecties kunnen alleen geedit worden.
// Ik zie alleen objecten waar ik read rechten (3d) op heb. Dan mag ik ze ook verder inzien.
var canEdit = !vervallen && ins_deelsrtcontrole_status >= 0 && ins_deelsrtcontrole_status < 6 && this_ins.canChange;
var canShow = ins_deelsrtcontrole_status >= 0 && this_ins.canRead;
var canPlan = !vervallen && this_ins.canInspect && (ins_deelsrtcontrole_status < 0);
var canStart = !vervallen && this_ins.canInspect && (ins_deelsrtcontrole_status <= 0);
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
var canClose = !vervallen || (vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2));
var canFinish = canClose;
}
// De array ingesloten bevat die delen die gepland, gewijzigd, afgemeld of afgerond mogen worden.
// <20><>n van de waarden insPlan, insEdit of insClose is true.
var buttons = [];
if (!vervallen && (insPlan || insEdit))
buttons.push({title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit(0)"});
if (insPlan || insEdit)
buttons.push({title: (insPlan? L("lcl_ins_schedule") : L("lcl_submit")), icon: "opslaan.png", action:"ins_submit(0)"});
if (insClose)
{
if (canClose)
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
if (canFinish)
buttons.push({title: L("lcl_ins_finish"), icon: "close.png", action: "ins_submit(1)"});
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
buttons.push({title: L("lcl_ins_finish"), icon: "close.png", action: "ins_submit(1)"});
}
if (canMelding)
buttons.push({title: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "doemelding.png" });

View File

@@ -545,7 +545,9 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
rst.addColumn(new Column({caption: L("lcl_ins_controle_opm"), content: "ins_srtcontrole_opmerking"}));
}
rst.addAction({ action: "insShow", caption: L("lcl_edit"), enabler: "eShow", isDefault: true });
rst.addAction({ action: "insEditInsp", caption: L("lcl_change"), enabler: "eEdit" });
// Op een tablet zijn geen inline acties.
// Daarom kun je, als de laatste inspectie afgerond is en geen inspectierecord aanwezig is, door op de regel te klikken een inspectie starten.
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), enabler: "eStart", isDefault: true });
rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), enabler: "ePlan" });
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), enabler: "eStart" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), enabler: "eClose" });

View File

@@ -39,32 +39,33 @@ var dlsrtcont_key = -1;
// ook echt gestart kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
//+ " AND idsc.ins_deelsrtcontrole_status(+) != 6"
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1; // Als er nog geen inspectie is geweest is de status -1.
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
var vervallen = vervaldatum != null && vervaldatum < new Date();
// Het laatste inspectierecord moet ingepland of verwerkt(6) zijn, anders kan de inspectie niet gestart worden.
if (ins_deelsrtcontrole_status > 0 && ins_deelsrtcontrole_status != 6)
{ // Laatste inspectie is niet ingepland of verwerkt. Overslaan.
oRs.Close();
continue;
}
else if (ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6)
dlsrtcont_key = ins_deelsrtcontrole_key;
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
// Als ik mag inspecteren mag ik ook starten.
if (this_ins.canInspect)
// Het laatste inspectierecord moet Gepland(0) of verwerkt(6) (ins_deelsrtcontrole_status = -1) zijn, anders kan de inspectie niet gestart worden.
if (this_ins.canInspect && !vervallen && (ins_deelsrtcontrole_status <= 0 || ins_deelsrtcontrole_status == 6))
{ // Alle Arrays zijn even groot.
if (ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6)
dlsrtcont_key = ins_deelsrtcontrole_key;
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], dlsrtcont_key: dlsrtcont_key,
inspectiestatus: ins_deelsrtcontrole_status});
tobestart++;