From e5f3e6ea885370884e6e40eb202ecbfab5fe864f Mon Sep 17 00:00:00 2001 From: Maykel Geerdink Date: Wed, 26 Oct 2016 07:41:28 +0000 Subject: [PATCH] FSN#36795: Planning, start en afronden niet altijd wenselijk bij terugkerende taken. svn path=/Website/trunk/; revision=31217 --- APPL/API2/model_ins_srtcontrole.inc | 5 +++++ APPL/INS/ins.inc | 25 ++++++++++++++++++++----- APPL/INS/ins_edit_inspect.asp | 9 +++++++-- APPL/INS/ins_inspect_list.asp | 11 ++++++++--- APPL/INS/ins_inspect_save.asp | 4 +++- APPL/INS/ins_list.inc | 8 ++++++-- APPL/PDA/ins_inspect.asp | 9 +++++++-- 7 files changed, 56 insertions(+), 15 deletions(-) diff --git a/APPL/API2/model_ins_srtcontrole.inc b/APPL/API2/model_ins_srtcontrole.inc index a23531be13..4c7f2627b4 100644 --- a/APPL/API2/model_ins_srtcontrole.inc +++ b/APPL/API2/model_ins_srtcontrole.inc @@ -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"), diff --git a/APPL/INS/ins.inc b/APPL/INS/ins.inc index 9bcd4aff8b..3d1207434a 100644 --- a/APPL/INS/ins.inc +++ b/APPL/INS/ins.inc @@ -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" diff --git a/APPL/INS/ins_edit_inspect.asp b/APPL/INS/ins_edit_inspect.asp index b198ad5f9e..3d5da259be 100644 --- a/APPL/INS/ins_edit_inspect.asp +++ b/APPL/INS/ins_edit_inspect.asp @@ -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) diff --git a/APPL/INS/ins_inspect_list.asp b/APPL/INS/ins_inspect_list.asp index 5b0547ba52..94314d7170 100644 --- a/APPL/INS/ins_inspect_list.asp +++ b/APPL/INS/ins_inspect_list.asp @@ -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(); %> diff --git a/APPL/INS/ins_inspect_save.asp b/APPL/INS/ins_inspect_save.asp index bfb5167535..7ac8b2f7ea 100644 --- a/APPL/INS/ins_inspect_save.asp +++ b/APPL/INS/ins_inspect_save.asp @@ -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; } diff --git a/APPL/INS/ins_list.inc b/APPL/INS/ins_list.inc index 485bcf57d3..cf9c723410 100644 --- a/APPL/INS/ins_list.inc +++ b/APPL/INS/ins_list.inc @@ -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 { diff --git a/APPL/PDA/ins_inspect.asp b/APPL/PDA/ins_inspect.asp index f533950f58..d816ca5f6e 100644 --- a/APPL/PDA/ins_inspect.asp +++ b/APPL/PDA/ins_inspect.asp @@ -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"});