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

svn path=/Website/trunk/; revision=28757
This commit is contained in:
Maykel Geerdink
2016-04-05 14:19:15 +00:00
parent d90e42761f
commit 5928297d38
4 changed files with 196 additions and 105 deletions

View File

@@ -316,7 +316,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
<body id="editbody" class="likemodal">
<% var buttons = [];
if (insPlan || insEdit)
buttons.push({title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit()"});
buttons.push({title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit(0)"});
if (insClose)
{
buttons.push({title: L("lcl_ins_close"), icon: "finish.png", action:"ins_submit(0)"});

View File

@@ -45,7 +45,7 @@ else if (savemode == "C") // Afmelden/Afronden (Close).
deelsrtcontrole_datum = getFParamDate("deelsrtcontrole_datum", new Date);
else if (savemode == "E")
{ // Wijzigen (Edit).
plandatum = getFParamDate("plandatum", null);
// Plandatum wordt bij opmaak velden (fields) wel uit frm gehaald i.p.v. val.
if (multi)
abort_with_warning(L("lcl_ins_allow_multi_edit"));
@@ -206,7 +206,7 @@ function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent)
if (savemode == "P")
{ // Inplannen inspectie.
var result = { success: true, plandatum: plandatum };
var result = { success: true, plandatum: plandatum, savemode: savemode };
for (var i = 0; i < ingesloten.length; i++)
{ // Zetten van de status en afhandelen van de tracking van het starten.
@@ -256,7 +256,7 @@ if (savemode == "P")
}
else if (savemode == "C")
{ // Afmelden inspectie.
var result = { success: true, deelsrtcontrole_datum: deelsrtcontrole_datum };
var result = { success: true, deelsrtcontrole_datum: deelsrtcontrole_datum, savemode: savemode };
for (var i = 0; i < ingesloten.length; i++)
{
@@ -394,6 +394,7 @@ else if (savemode == "C")
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
}
result.deelsrtcontrole_key = ingesloten[i].dlsrtcont_key;
if (err.friendlyMsg)
{
@@ -438,6 +439,7 @@ else if (savemode == "C")
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
}
result.deelsrtcontrole_key = ingesloten[i].dlsrtcont_key;
if (err.friendlyMsg)
{
@@ -484,9 +486,9 @@ else if (savemode == "C")
}
else if (savemode == "E")
{ // Wijzigen inspectie (Edit). Update van de gegevens (plandatum, opmerking en flexkenmerken).
var result = { success: true, plandatum: plandatum };
var result = { success: true, plandatum: plandatum, deelsrtcontrole_key: ingesloten[0].dlsrtcont_key, savemode: savemode };
var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum, track: L("lcl_opdr_plandate") },
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 }
];

View File

@@ -52,7 +52,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
// Het laatste inspectierecord moet ingepland of verwerkt(6) zijn, anders kan de inspectie niet gestart worden.
if (oRs("ins_deelsrtcontrole_status").Value > 0 && oRs("ins_deelsrtcontrole_status").Value != 6)
if (ins_deelsrtcontrole_status > 0 && ins_deelsrtcontrole_status != 6)
{ // Laatste inspectie is niet ingepland of verwerkt. Overslaan.
oRs.Close();
continue;
@@ -71,7 +71,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
}
user.anything_todo_or_abort(tobestart > 0); // We klagen niet over enkele wel en enkele niet
var result = {success: true, multi: multi };
var result = {success: true, multi: multi, start: true };
for (var i = 0; i < ingesloten.length; i++)
{ // Zetten van de status en afhandelen van de tracking van het starten.
@@ -79,7 +79,7 @@ for (var i = 0; i < ingesloten.length; i++)
{ // Er is nog geen inspectie (ins_deelsrtcontrole) record aangemaakt. Eerst maar eens aanmaken.
// Als er al een inspectie is geweest kan er een volgende inspectiedatum berekend worden.
var nextdate = null;
if (ingesloten.inspectiestatus > -1)
if (ingesloten[i].inspectiestatus > -1)
{ // Bereken de volgende inspectiedatum.
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
oRs = Oracle.Execute(sql);
@@ -105,8 +105,7 @@ for (var i = 0; i < ingesloten.length; i++)
result.success = false;
}
}
else // Er is al een inspectie (ins_deelsrtcontrole) record aangemaakt. De plandatum en orgdatum blijven onverandert.
// Bij bestaande inspecties mag het geen multi zijn.
//else Er is al een inspectie (ins_deelsrtcontrole) record aangemaakt. De plandatum en orgdatum blijven onverandert.
// Kenmerken konden niet ingevuld/aangepast worden.

View File

@@ -197,7 +197,6 @@ if (srtcontrole_key < 0 || defaultmode_key > 0)
};
<% protectRequest.dataToken("data"); %>
//alert("ins {0}, soort {1}, mode {2}".format(<%=ins_key%>, deelsrtcont_key, <%=defaultmode_key%>));
$.post("../ins/ins_inspect_save.asp",
data,
McltCallbackAndThen(ins_submit_callback),
@@ -217,6 +216,38 @@ else
var oRs = Oracle.Execute(sql);
var subject = oRs("ins_deel_omschrijving").Value;
oRs.Close();
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_controlemode_key"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND idsc.ins_deel_key(+) = " + ins_key
+ " AND isc.ins_srtcontrole_key = " + srtcontrole_key
+ (deelsrtcont_key > 0
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
: "")
+ " 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 deelsrtcont_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 status_str = "";
switch (ins_deelsrtcontrole_status)
{
case -1: status_str = L("lcl_ins_controle_first");
break;
case 6: status_str = L("lcl_ins_controle_new");
break;
case 0:
case 2:
case 5: status_str = ins.getinsstatustext(ins_deelsrtcontrole_status);
break;
}
var ins_controlemode_key = oRs("ins_controlemode_key").Value != null && ins_deelsrtcontrole_status != 6? oRs("ins_controlemode_key").Value : -1;
var ins_deelsrtcontrole_opmerking = oRs("ins_deelsrtcontrole_opmerking").Value != null && ins_deelsrtcontrole_status != 6? oRs("ins_deelsrtcontrole_opmerking").Value : "";
%>
<html>
@@ -263,33 +294,30 @@ else
%>
// Na de insert moet een tweede opslaan een update doen. Dan deelsrtcont_key meegeven.
var deelsrtcont_key = -1;
function ins_submit_callback(json)
function ins_callback(json)
{
if (json.success)
{
jqToast(L("lcl_mobile_data_saved"));
window.deelsrtcont_key = json.deelsrtcontrole_key;
//
// reload kenmerken.
var s = "../ins/load_kenmerksrtcontrole.asp"
+ "?srtcont_key=" + $("#sel_srtcontrole").val()
+ "&deelsrtcont_key=" + json.deelsrtcontrole_key
+ "&mobile=1";
$("#insFlexList").load(s, function(responseText, textStatus, jqXHR)
{
FcltMgr.resized(window);
});
if (json.start || json.finish || json.savemode != "E")
FcltMgr.reload();
}
}
function ins_submit()
function ins_submit(action)
{
if (!validateForm("u2"))
var controlemodeField = (action == "E"? ["sel_controlemode"] : null);
if (!validateForm("u2", { checkNot: controlemodeField }))
return false;
if (action == "C")
{
// De uitvoerdatum van de inspectie is nu. Daardoor ligt deze na de laatste uitvoerdatum en niet in de toekomst.
for (i = 0; i < inspected_srtcontroles.length; i++)
{
if (inspected_srtcontroles[i].srtcontrole_key == $("#sel_srtcontrole").val())
if (inspected_srtcontroles[i].srtcontrole_key == $("#srtcont_key_arr").val())
{
// Controle of er op de inspectiedatum (Vandaag) of op het inspectieuur (Dit uur) al inspecties zijn geweest.
if (new Date().midnight().getTime() == new Date(parseInt(inspected_srtcontroles[i].datum)).midnight().getTime() &&
@@ -317,23 +345,58 @@ else
}
}
}
}
$("#savemode").val(action); // Vul savemode met "E": Wijzigen (Edit) of "C": Afmelden/Afronden (Close).
$.post($("form[name=u2]")[0].action + "&deelsrtcont_key=" + deelsrtcont_key,
$("form[name=u2]").serialize(),
McltCallbackAndThen(ins_submit_callback),
McltCallbackAndThen(ins_callback),
"json");
return false;
}
function ins_start()
{
if (confirm(L("lcl_ins_starting")))
{
var data = { ins_keys: <%=ins_key%>,
srtcont_keys: <%=srtcontrole_key%>
};
protectRequest.dataToken(data);
$.post( "../ins/ins_inspect_start.asp"
, data
, McltCallbackAndThen(ins_callback)
, "json"
);
}
}
function ins_finish()
{
if (confirm(L("lcl_ins_finishing")))
{
var data = { ins_keys: <%=ins_key%>,
dlsrtcont_keys: <%=deelsrtcont_key%>
};
protectRequest.dataToken(data);
$.post( "../ins/ins_inspect_finish.asp"
, data
, McltCallbackAndThen(ins_callback)
, "json"
);
}
}
function onChangeSrtControle()
{
var s = "../ins/load_kenmerksrtcontrole.asp?srtcont_key=" + $("#sel_srtcontrole").val() + "&mobile=1";
var s = "../ins/load_kenmerksrtcontrole.asp?srtcont_key=" + $("#srtcont_key_arr").val() + "&mobile=1";
$("#insFlexList").load(s, function(data)
{
FcltMgr.resized(window);
});
}
</script>
@@ -341,21 +404,33 @@ else
<form name="u2" action="../ins/ins_inspect_save.asp?ins_keys=<%=ins_key%>" method="post">
<input type="hidden" name="ins_keys" id="ins_keys" value="<%=ins_key%>">
<input type="hidden" name="sel_srtcontrole" id="sel_srtcontrole" value="<%=srtcontrole_key%>">
<input type="hidden" name="sel_deelsrtcont" id="sel_deelsrtcont" value="<%=deelsrtcont_key%>">
<%
<input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=srtcontrole_key%>">
<input type="hidden" name="savemode" id="savemode" value="E">
<% ROFIELD("fld", L("lcl_ins_status"), status_str);
// Ik wil de vorige controle + opmerking tonen; optie is nog class expired2 toe te voegen als te laat
// (misschien dat ook al bij de button als er binnen een dag een inspectie moet of zo)
// Let op: deze datum hangt af van de srtcontrole, als dat er meer dan 1 is vind ik het nu de moeite nog niet waard.
var sql = "SELECT idsc.ins_deelsrtcontrole_datum"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " , idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ins_key
+ " AND idsc.ins_deelsrtcontrole_status = 6"
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
if (!oRs.eof) {
if (!oRs.eof)
{
ROFIELD("fld", L("lcl_ins_controle_last"), toDateTimeString(oRs("ins_deelsrtcontrole_datum").Value) + " " + (oRs("ins_deelsrtcontrole_opmerking").Value || ""));
var sql = "SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ins_key
+ " AND idsc.ins_deelsrtcontrole_status != 6";
var oRs = Oracle.Execute(sql);
if (!oRs.eof && oRs("ins_deelsrtcontrole_plandatum").Value != null)
ROFIELD("fld", L("lcl_opdr_plandate"), toDateTimeString(oRs("ins_deelsrtcontrole_plandatum").Value));
}
sql = "SELECT " + lcl.xsqla('isc.ins_srtcontrole_omschrijving', 'isc.ins_srtcontrole_key')
@@ -373,14 +448,15 @@ else
+ " WHERE ins_srtcontrole_type = " + srtcontrole_type;
FCLTselector("sel_controlemode",
sql,
{ label: L("lcl_ins_controle_mode"),
{ initKey: ins_controlemode_key,
label: L("lcl_ins_controle_mode"),
emptyOption: L("lcl_select_controlemode"),
required: true,
mobile: true
}
);
RWFIELD("opmerk", L("lcl_remark"), null, {multi: true});
RWFIELD("opmerk", L("lcl_remark"), ins_deelsrtcontrole_opmerking, {multi: true});
%><div id="insFlexList"><% // Wrapper div voor dynamisch herladen
generateFlexKenmerkBlock({fnpre : function () {},
@@ -394,7 +470,21 @@ else
%></div><%
CONTROLGROUP_START();
BUTTON(L("lcl_submit"), {click: "ins_submit()", dataicon: "check"});
switch (ins_deelsrtcontrole_status)
{
case -1:
case 6: // Geen inplannen van inspecties bij mobiel.
case 0: BUTTON(L("lcl_ins_start"), {click: "ins_start()", dataicon: "check"});
BUTTON(L("lcl_ins_close"), {click: "ins_submit('C')", dataicon: "check"});
break;
case 2: BUTTON(L("lcl_submit"), {click: "ins_submit('E')", dataicon: "check"});
BUTTON(L("lcl_ins_close"), {click: "ins_submit('C')", dataicon: "check"});
//BUTTON(L("lcl_ins_finish"), {click: "ins_finish()", dataicon: "check"});
break;
case 5: BUTTON(L("lcl_submit"), {click: "ins_submit('E')", dataicon: "check"});
BUTTON(L("lcl_ins_finish"), {click: "ins_finish()", dataicon: "check"});
break;
}
CONTROLGROUP_END();
IFACE.FORM_END();
%></form><%