FSN#36795: Planning, start en afronden niet altijd wenselijk bij terugkerende taken.

svn path=/Website/trunk/; revision=31217
This commit is contained in:
Maykel Geerdink
2016-10-26 07:41:28 +00:00
parent dbbbe2b7aa
commit e5f3e6ea88
7 changed files with 56 additions and 15 deletions

View File

@@ -204,6 +204,11 @@ function model_ins_srtcontrole()
+ ")"
}
},
"onlyfinish": {
"dbs": "ins_srtcontrole_onlyfinish",
"label": L("ins_srtcontrole_onlyfinish"),
"typ": "check0"
},
"remark": {
"dbs": "ins_srtcontrole_opmerking",
"label": L("ins_srtcontrole_opmerking"),

View File

@@ -551,7 +551,8 @@ ins = {checkAutLevel:
+ " , insp.ins_deelsrtcontrole_status"
+ " , insp.vervaldatum"
+ " , insp.isc_mode"
+" , insp.ctr_discipline_key"
+ " , insp.ctr_discipline_key"
+ " , onlyfinish"
// Moment inspectie pas kunnen opslaan op of na geplande inspectiedatum.
// Is in de moment modus de invoer na het volgende berekende inspectietijdstip? Voor interval modus is dit altijd het geval.
// Als er nog nooit is geinspecteerd en er is er nog geen ingepland dan is het ook ok.
@@ -589,6 +590,7 @@ ins = {checkAutLevel:
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " , isc.ins_srtcontrole_mode isc_mode"
+ " , isc.ctr_discipline_key"
+ " , isc.ins_srtcontrole_onlyfinish onlyfinish"
+ " , COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) eenheid"
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
+ " , CASE"
@@ -631,6 +633,7 @@ ins = {checkAutLevel:
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 ctr_discipline_key = oRs("ctr_discipline_key").Value;
var onlyfinish = oRs("onlyfinish").Value == 1;
var vervallen = vervaldatum != null && vervaldatum < new Date();
var invoerAfterNext = oRs("invoerAfterNext").Value == 1;
oRs.Close();
@@ -660,17 +663,25 @@ ins = {checkAutLevel:
!vervallen && actief && iresult.hasCTRWrite;
iresult.canInspShow = iresult.readuse && !vervallen && (ins_deelsrtcontrole_status >= 0) && iresult.hasCTRRead;
// Bij eerste inspectie of verwerkte inspectie kan er gepland worden.
iresult.canInspPlan = iresult.readuse && !vervallen && (ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) && actief && iresult.hasCTRWrite;
iresult.canInspPlan = iresult.readuse && !vervallen &&
(ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) &&
actief && iresult.hasCTRWrite &&
!onlyfinish;
// Bij eerste inspectie, geplande inspectie of verwerkte inspectie kan er gestart worden.
iresult.canInspStart = iresult.readuse && invoerAfterNext && !vervallen &&
(ins_deelsrtcontrole_status <= 0 || ins_deelsrtcontrole_status == 6) && actief && iresult.hasCTRWrite;
(ins_deelsrtcontrole_status <= 0 || ins_deelsrtcontrole_status == 6) &&
actief && iresult.hasCTRWrite &&
!onlyfinish;
// Bij eerste inspectie, geplande inspectie, gestarte inspectie of verwerkte inspectie kan er gereedgemeld/afgerond worden.
iresult.canInspClose = iresult.readuse && invoerAfterNext &&
((!vervallen && (ins_deelsrtcontrole_status < 5 || ins_deelsrtcontrole_status == 6)) ||
(ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2)) &&
actief && iresult.hasCTRWrite;
actief && iresult.hasCTRWrite &&
!onlyfinish;
// Alleen als de inspectie gereedgemeld is kan afgerond worden.
iresult.canInspFinish = iresult.readuse && invoerAfterNext && ins_deelsrtcontrole_status == 5 && actief && iresult.hasCTRWrite;
iresult.canInspFinish = iresult.readuse && invoerAfterNext &&
(ins_deelsrtcontrole_status == 5 || ((ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) && onlyfinish)) &&
actief && iresult.hasCTRWrite;
}
else
{
@@ -981,6 +992,7 @@ ins = {checkAutLevel:
+ " , inspectie_eind"
+ " , ins_srtcontrole_omschrijving"
+ " , ins_srtcontrole_key"
+ " , onlyfinish"
+ " , ins_deelsrtcontrole_status"
+ " , ins_deelsrtcontrole_plandatum"
+ " , ctr_controle_type"
@@ -1074,6 +1086,7 @@ ins = {checkAutLevel:
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_onlyfinish onlyfinish"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_plandatum"
@@ -1137,6 +1150,7 @@ ins = {checkAutLevel:
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_onlyfinish onlyfinish"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , CASE"
@@ -1185,6 +1199,7 @@ ins = {checkAutLevel:
sqlInspectie_select = (inspDone? "inspectie_date" : "inspectie_next")
+ " , ispn.ins_srtcontrole_omschrijving"
+ " , ispn.ins_srtcontrole_key"
+ " , ispn.onlyfinish"
+ " , ispn.ins_deelsrtcontrole_status"
+ " , ispn.ins_deelsrtcontrole_plandatum"
+ " , ispn.inspectie_eind"

View File

@@ -48,6 +48,7 @@ var canMsuEdit = false; // Alleen voor het wijzigen van inspectie (insEdit). Er
// Bepaal de objecten/delen in de selectie die
// ook echt ingepland kunnen of mogen worden.
var ctrdisc_key = -1;
var mayNotClose = false;
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
@@ -60,6 +61,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " , idsc.ins_deelsrtcontrole_status"
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " , isc.ctr_discipline_key"
+ " , isc.ins_srtcontrole_onlyfinish onlyfinish"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -82,6 +84,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
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();
var onlyfinish = oRs("onlyfinish").Value == 1;
oRs.Close();
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
@@ -91,7 +94,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
}
// Afgemelde inspecties kunnen niet nog eens afgemeld worden. Deze eruit filteren. Ze kunnen wel gewijzigd worden (stuk voor stuk).
if (insClose && !this_ins.canInspClose)
if (insClose && !(this_ins.canInspClose || (onlyfinish && this_ins.canInspFinish)))
{ // De inspectie kan niet afgemeld worden. Overslaan.
continue;
}
@@ -110,6 +113,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(ins_deelsrtcontrole_key);
mayNotClose = mayNotClose || onlyfinish; // Als 1 van de srtcontroles onlyfinish is, dan kan er niet gereed gemeld worden.
tobehandled++;
}
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
@@ -436,7 +440,8 @@ if (ins_key_arr.length == 1)
buttons.push({title: (insPlan? L("lcl_ins_schedule") : L("lcl_submit")), icon: "opslaan.png", action:"ins_submit(0)"});
if (insClose)
{
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
if (!mayNotClose)
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)

View File

@@ -218,6 +218,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , di.ctr_controle_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , di.ins_srtcontrole_onlyfinish onlyfinish"
+ " , NULL ins_controlemode_success"
+ " FROM ins_v_defined_inspect_xcp di"
+ " WHERE (di.ins_srtcontrole_eind >= TRUNC(SYSDATE, 'DD')"
@@ -301,6 +302,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , di.ctr_controle_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , di.ins_srtcontrole_onlyfinish onlyfinish"
+ " , cm.ins_controlemode_success ins_controlemode_success"
+ " FROM ins_v_defined_inspect_xcp di"
+ " , ins_deelsrtcontrole idsc"
@@ -357,7 +359,8 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
if (istatus != 6)
{
var insSrtControleKey = oRs("ins_srtcontrole_key").Value;
var insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value
var insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value;
var insOnlyFinish = oRs("onlyfinish").Value == 1;
var lthis_ins = ins.func_enabled_deel(ins_key,
{srtcont_key: insSrtControleKey,
deelsrtcont_key: insDeelSrtContrKey
@@ -370,10 +373,11 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
var eStart = lthis_ins.canInspStart; // Start een nieuwe inspectie m.b.v. een inline button actie.
var eStartD = lthis_ins.canInspStart && (istatus < 0); // Start een nieuwe inspectie m.b.v. een default inline actie (op regel klikken).
var eClose = lthis_ins.canInspClose;
var eFinish = lthis_ins.canInspFinish;
var eFinish = !insOnlyFinish && lthis_ins.canInspFinish;
var eFinishOnly = insOnlyFinish && lthis_ins.canInspFinish;
}
var data = {eEdit: eEdit, eShow: eShow, ePlan: ePlan, eStart: eStart, eStartD: eStartD, eClose: eClose, eFinish: eFinish};
var data = {eEdit: eEdit, eShow: eShow, ePlan: ePlan, eStart: eStart, eStartD: eStartD, eClose: eClose, eFinish: eFinish, eFinishOnly: eFinishOnly};
return data;
}
@@ -552,6 +556,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), enabler: "eStart" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_stop"), enabler: "eClose" });
rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), enabler: "eFinish" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_finish"), enabler: "eFinishOnly" }); // Afronden, maar wel gegevens invullen (uitvoerdatum, taakafhanelding, opmerking en flexkenmerken).
var cnt = rst.processResultset();
%>

View File

@@ -82,6 +82,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " , idsc.ins_deelsrtcontrole_status"
+ " , di.ins_deel_aanmaak"
+ " , di.ctr_discipline_key"
+ " , di.ins_srtcontrole_onlyfinish onlyfinish"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
@@ -108,6 +109,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
var eenheid = oRs("eenheid").Value;
var ins_deelsrtcontrole_datum_max = oRs("ins_deelsrtcontrole_datum").Value;
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
var onlyfinish = oRs("onlyfinish").Value == 1;
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
{srtcont_key: srtcont_key_arr[i],
@@ -153,7 +155,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
continue;
}
if (!this_ins.canInspClose || ins_deelsrtcontrole_status == 5)
if (!(this_ins.canInspClose || (onlyfinish && this_ins.canInspFinish)) || ins_deelsrtcontrole_status == 5)
{ // Ik heb geen Close (gereedmelden/afronden) rechten of laatste inspectie is niet verwerkt (dan moet ins_inspect_finish.asp aangeroepen worden). Overslaan.
continue;
}

View File

@@ -446,10 +446,12 @@ function ins_list (pautfunction, params)
var eStart = false;
var eClose = false;
var eFinish = false;
var eFinishOnly = false;
if (inspect && !inspDone)
{
// Als object is vervallen dan kun je niet meer inspecteren en uitstellen.
var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
var onlyfinish = oRs("onlyfinish").Value == 1;
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
@@ -462,11 +464,12 @@ function ins_list (pautfunction, params)
eStart = this_ins.canInspStart;
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
eClose = this_ins.canInspClose;
eFinish = this_ins.canInspFinish;
eFinish = !onlyfinish && this_ins.canInspFinish;
eFinishOnly = onlyfinish && this_ins.canInspFinish;
}
var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit,
eDetails: eDetails, eShowInsp: eShowInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish};
eDetails: eDetails, eShowInsp: eShowInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish, eFinishOnly: eFinishOnly};
return data;
}
@@ -861,6 +864,7 @@ function ins_list (pautfunction, params)
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), multi: !tiny, multiOnce: true, enabler: "eStart" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_stop"), multi: !tiny, multiOnce: true, enabler: "eClose" });
rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), multi: !tiny, multiOnce: true, enabler: "eFinish" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_finish"), multi: !tiny, multiOnce: true, enabler: "eFinishOnly" }); // Afronden, maar wel gegevens invullen (uitvoerdatum, taakafhanelding, opmerking en flexkenmerken).
}
else
{

View File

@@ -255,6 +255,7 @@ else
+ " , idsc.ins_controlemode_key"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " , cdp.ctr_disc_params_controle_type"
+ " , isc.ins_srtcontrole_onlyfinish onlyfinish"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " , ctr_disc_params cdp"
@@ -271,6 +272,7 @@ else
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 sctype = oRs("ctr_disc_params_controle_type").Value;
var onlyfinish = oRs("onlyfinish").Value;
var status_str = "";
switch (ins_deelsrtcontrole_status)
{
@@ -497,7 +499,7 @@ else
var srtcontrole_info = oRs("ins_srtcontrole_info").Value;
oRs.Close();
if (ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 5)
if (ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 5 || onlyfinish)
{
ROFIELD("sel_srtcontrole_oms", L("lcl_ins_controle"), srtcontrole_oms, {});
@@ -536,7 +538,10 @@ else
{
case -1:
case 6: // Geen inplannen van inspecties bij mobiel.
case 0: BUTTON(L("lcl_ins_start"), {click: "ins_start()", dataicon: "clock"});
case 0: if (onlyfinish)
BUTTON(L("lcl_ins_finish"), {click: "ins_submit('F')", dataicon: "check"});
else
BUTTON(L("lcl_ins_start"), {click: "ins_start()", dataicon: "clock"});
break;
case 2: BUTTON(L("lcl_submit"), {click: "ins_submit('E')", dataicon: "refresh"});
BUTTON(L("lcl_ins_close"), {click: "ins_submit('C')", dataicon: "comment"});