FSN#36761: AiAi! foutmelding bij afmelden inspectie op mobiel.
svn path=/Website/branches/v2016.1/; revision=29707
This commit is contained in:
@@ -42,6 +42,8 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) eenheid"
|
||||
+ " , isc.ins_srtcontrole_mode"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
@@ -58,6 +60,8 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
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();
|
||||
var inspectiemode = oRs("ins_srtcontrole_mode").Value;
|
||||
var eenheid = oRs("eenheid").Value;
|
||||
|
||||
// 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))
|
||||
@@ -65,7 +69,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
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});
|
||||
inspectiestatus: ins_deelsrtcontrole_status, inspectiemode: inspectiemode, eenheid: eenheid});
|
||||
tobestart++;
|
||||
}
|
||||
}
|
||||
@@ -75,41 +79,110 @@ 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.
|
||||
var nextdate = null;
|
||||
var datum_org = null;
|
||||
var plandatum;
|
||||
var startdate = new Date();
|
||||
var respijt = false;
|
||||
var fields = [];
|
||||
if (ingesloten[i].dlsrtcont_key < 0)
|
||||
{ // 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[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);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
datum_org = new Date(oRs("nextdate").Value);
|
||||
}
|
||||
//else Er zijn nog geen inspecties geweest voor dit object. Dit wordt de eerste inspectie.
|
||||
// Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
|
||||
else
|
||||
nextdate = new Date();
|
||||
|
||||
// Plandatum blijft leeg.
|
||||
var fields = [ { dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
|
||||
{ dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
|
||||
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
|
||||
{ dbs: "ins_deelsrtcontrole_status", typ: "key", val: 2 },
|
||||
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
||||
{ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: (nextdate? nextdate : null) }
|
||||
];
|
||||
fields = [ { dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
|
||||
{ dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
|
||||
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
|
||||
{ dbs: "ins_deelsrtcontrole_status", typ: "key", val: 2 },
|
||||
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
||||
{ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: (datum_org? datum_org : null) }
|
||||
];
|
||||
// Inspectie opslaan als ik weet voor de moment modus dat de inspectiedatum na de volgende inspectiedatum ligt.
|
||||
}
|
||||
else if (ingesloten[i].inspectiemode == 0)
|
||||
{ // Alleen voor de moment modus hebben we nog meer informatie nodig.
|
||||
// Is er een plandatum? Dan is dit de volgende inspectiedatum.
|
||||
sql = "SELECT ins_deelsrtcontrole_plandatum"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " WHERE idsc.ins_deelsrtcontrole_status <= 5"
|
||||
+ " AND idsc.ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key
|
||||
+ " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
|
||||
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
var insIns = buildInsert("ins_deelsrtcontrole", fields);
|
||||
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
|
||||
var err = Oracle.Execute(insIns.sql, true);
|
||||
if (err.friendlyMsg)
|
||||
if (!oRs.eof && oRs("ins_deelsrtcontrole_plandatum").Value != null)
|
||||
{
|
||||
result.warning = err.friendlyMsg;
|
||||
result.success = false;
|
||||
// De plandatum is de volgende inspectiedatum
|
||||
plandatum = new Date(oRs("ins_deelsrtcontrole_plandatum").Value);
|
||||
nextdate = plandatum;
|
||||
// Alleen als de plandatum na de volgende inspectiedatum valt is er sprake van respijt.
|
||||
// Als het de allereerste inspectie is dan is er nooit sprake van respijt.
|
||||
respijt = ingesloten[i].inspectiestatus > -1 && plandatum > nextdate;
|
||||
}
|
||||
else
|
||||
{ // Status is groter dan -1 want er is een ins_deelsrtcontrole record.
|
||||
// Bereken de volgende inspectiedatum.
|
||||
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();
|
||||
}
|
||||
|
||||
if (ingesloten[i].inspectiemode == 0)
|
||||
{ // Alleen voor de moment modus hebben we nog meer informatie nodig.
|
||||
// Truncate datums op de dag of het uur afhankelijk van de eenheid.
|
||||
if (ingesloten[i].eenheid == 0)
|
||||
{
|
||||
var nextdate_trunc = new Date(new Date(nextdate).setMinutes(0, 0, 0));
|
||||
var now_trunc = new Date(new Date().setMinutes(0, 0, 0));
|
||||
if (respijt)
|
||||
plandatum = new Date(plandatum.setMinutes(0, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
var nextdate_trunc = new Date(nextdate.midnight());
|
||||
var now_trunc = new Date(new Date().midnight());
|
||||
if (respijt)
|
||||
plandatum = new Date(plandatum.midnight());
|
||||
}
|
||||
}
|
||||
|
||||
// Nu nog de status zetten, tracking genereren en notificaties sturen.
|
||||
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, 2); // In behandeling(2)
|
||||
result.key += (i > 0? "," : "") + ingesloten[i].dlsrtcont_key;
|
||||
// I.g.v. moment modus: valt de inspectie voor de geplande inspectie datum?
|
||||
if ((ingesloten[i].inspectiemode == 0) && !((respijt && plandatum <= now_trunc) || (!respijt && nextdate_trunc <= now_trunc)))
|
||||
{ // Moment modus en de startdatum (nu) is voor de volgende inspectiedatum
|
||||
result.warning = "Geplande datum is in de toekomst. Er is geen terugkerende taak gestart.";
|
||||
result.success = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ingesloten[i].dlsrtcont_key < 0)
|
||||
{ // Nu pas weten we zeker dat het inspectie (ins_deelsrtcontrole) record aangemaakt mag worden. Dat doen we hier dan ook.
|
||||
var insIns = buildInsert("ins_deelsrtcontrole", fields);
|
||||
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
|
||||
var err = Oracle.Execute(insIns.sql, true);
|
||||
if (err.friendlyMsg)
|
||||
{
|
||||
result.warning = err.friendlyMsg;
|
||||
result.success = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Nu nog de status zetten, tracking genereren en notificaties sturen.
|
||||
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, 2); // In behandeling(2)
|
||||
result.key += (i > 0? "," : "") + ingesloten[i].dlsrtcont_key;
|
||||
}
|
||||
}
|
||||
|
||||
Response.Write(JSON.stringify(result));
|
||||
|
||||
@@ -468,7 +468,7 @@ else
|
||||
ROFIELD("fld", L("lcl_opdr_plandate"), toDateTimeString(oRs("ins_deelsrtcontrole_plandatum").Value));
|
||||
}
|
||||
|
||||
if (ins_deelsrtcontrole_status < 6)
|
||||
if (ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 5)
|
||||
{
|
||||
sql = "SELECT " + lcl.xsqla('isc.ins_srtcontrole_omschrijving', 'isc.ins_srtcontrole_key')
|
||||
+ " , ins_srtcontrole_type"
|
||||
|
||||
Reference in New Issue
Block a user