From 86d681b93129bc698d5aa1ffa8cd63fa7056e5e3 Mon Sep 17 00:00:00 2001 From: Maykel Geerdink Date: Wed, 16 Nov 2016 09:28:59 +0000 Subject: [PATCH] FSN#36795: Planning, start en afronden niet altijd wenselijk bij terugkerende taken. svn path=/Website/trunk/; revision=31489 --- APPL/INS/ins.inc | 38 ++++++++++++++--------- APPL/INS/ins_edit_inspect.asp | 39 ++++++++++++++++-------- APPL/INS/ins_inspect_finish.asp | 2 +- APPL/INS/ins_inspect_list.asp | 53 +++++++++++++++++++-------------- APPL/INS/ins_inspect_save.asp | 10 +++---- APPL/INS/ins_list.inc | 16 ++++------ APPL/INS/ins_list.js | 42 +++++++++++++++++--------- APPL/INS/ins_show_inspect.asp | 2 +- 8 files changed, 123 insertions(+), 79 deletions(-) diff --git a/APPL/INS/ins.inc b/APPL/INS/ins.inc index 126a49bb52..6be19c163d 100644 --- a/APPL/INS/ins.inc +++ b/APPL/INS/ins.inc @@ -553,7 +553,7 @@ ins = {checkAutLevel: + " , insp.vervaldatum" + " , insp.isc_mode" + " , insp.ctr_discipline_key" - + " , onlyfinish" + + " , options" // 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. @@ -591,7 +591,7 @@ ins = {checkAutLevel: + " , xcp.ins_srtcontroledl_xcp_eind vervaldatum" + " , isc.ins_srtcontrole_mode isc_mode" + " , isc.ctr_discipline_key" - + " , isc.ins_srtcontrole_onlyfinish onlyfinish" + + " , isc.ins_srtcontrole_options options" + " , COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) eenheid" + " , idsc.ins_deelsrtcontrole_plandatum plandatum" + " , CASE" @@ -634,7 +634,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 isc_options = oRs("options").Value; var vervallen = vervaldatum != null && vervaldatum < new Date(); var invoerAfterNext = oRs("invoerAfterNext").Value == 1; oRs.Close(); @@ -655,6 +655,7 @@ ins = {checkAutLevel: iresult.canShowXcp = iresult.hasCTRRead && iresult.canRead("WEB_INSMAN"); // Exceptions (xcp) waarden inspecties/taken bekijken (waarden in ins_srtcontroledl_xcp tabel). iresult.canChangeXcp = iresult.hasCTRWrite && iresult.canWrite("WEB_INSMAN"); // Exceptions (xcp) waarden inspecties/taken wijzigen (waarden in ins_srtcontroledl_xcp tabel). + // Een nieuwe inspectie mag pas weer aangemaakt worden als de laatste inspectie Afgerond(6) is. // Als de inspectie vervallen is moet je alleen nog de lopende inspecties (ingepland of later) kunnen gereedmelden en/of afronden, // zodat deze inspectie afgerond kan worden. Nieuwe inspectie kunnen nooit meer beginnen. // Eerste inspectie of verwerkte inspectie kan niet gewijzigd worden. @@ -667,22 +668,29 @@ ins = {checkAutLevel: iresult.canInspPlan = iresult.readuse && !vervallen && (ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) && actief && iresult.hasCTRWrite && - !onlyfinish; + ((isc_options & 1) == 1); // 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 && - !onlyfinish; + ((isc_options & 2) == 2); // 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 && - !onlyfinish; - // Alleen als de inspectie gereedgemeld is kan afgerond worden. + ((isc_options & 4) == 4); + // Afronden kan vanuit elke status. Alleen vanuit status Gereed gemeld/Afgemeld(5) kan het zonder gegevens in te vullen. iresult.canInspFinish = iresult.readuse && invoerAfterNext && - (ins_deelsrtcontrole_status == 5 || ((ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) && onlyfinish)) && - actief && iresult.hasCTRWrite; + //(ins_deelsrtcontrole_status == 5 || + // (ins_deelsrtcontrole_status < 5 && ((isc_options & 4) != 4))) && + actief && iresult.hasCTRWrite && + ((isc_options & 8) == 8); + // Alleen als de inspectie gereedgemeld is kan SNEL afgerond worden zonder gegevens in te vullen. + iresult.canInspFastFinish = iresult.readuse && invoerAfterNext && + (ins_deelsrtcontrole_status == 5) && + actief && iresult.hasCTRWrite && + ((isc_options & 8) == 8); } else { @@ -994,7 +1002,7 @@ ins = {checkAutLevel: + " , inspectie_eind" + " , ins_srtcontrole_omschrijving" + " , ins_srtcontrole_key" - + " , onlyfinish" + + " , options" + " , ins_deelsrtcontrole_status" + " , ins_deelsrtcontrole_plandatum" + " , ctr_controle_type" @@ -1015,10 +1023,12 @@ ins = {checkAutLevel: + " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key" + " AND idsc.ins_deelsrtcontrole_status IN (5, 6)" + " AND idsc.ins_deel_key = di.ins_deel_key) inspectie_date" + + " , di.ins_srtcontroledl_xcp_startdat" + " , NULL nonext" + " , di.ins_srtcontrole_eenheid inspectie_eenheid" + " , di.ins_srtcontrole_eind inspectie_eind" + " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key') + + " , di.ins_srtcontrole_options options" + " , di.ins_srtcontrole_key" + " , -1 ins_deelsrtcontrole_status" + " , NULL ins_deelsrtcontrole_key" @@ -1083,13 +1093,13 @@ ins = {checkAutLevel: + " , di.ins_srtcontrole_periode" + " , di.ins_srtcontrole_bits" + " , 1) inspectie_next" - + " , ins_srtcontroledl_xcp_startdat" + + " , di.ins_srtcontroledl_xcp_startdat" + " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext" + " , di.ins_srtcontrole_eenheid inspectie_eenheid" + " , 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" + + " , di.ins_srtcontrole_options options" + " , -1 ins_deelsrtcontrole_status" + " , NULL ins_deelsrtcontrole_key" + " , NULL ins_deelsrtcontrole_plandatum" @@ -1154,7 +1164,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" + + " , di.ins_srtcontrole_options options" + " , idsc.ins_deelsrtcontrole_status" + " , idsc.ins_deelsrtcontrole_key" + " , CASE" @@ -1204,7 +1214,7 @@ ins = {checkAutLevel: + " , ispn.ins_srtcontroledl_xcp_startdat" + " , ispn.ins_srtcontrole_omschrijving" + " , ispn.ins_srtcontrole_key" - + " , ispn.onlyfinish" + + " , ispn.options" + " , 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 a7fbad304b..38ef1734d2 100644 --- a/APPL/INS/ins_edit_inspect.asp +++ b/APPL/INS/ins_edit_inspect.asp @@ -31,7 +31,7 @@ FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"], var ins_key_arr = getQParamIntArray("ins_keys"); var srtcont_key_arr = getQParamIntArray("srtcont_keys"); var deelsrtcont_arr = getQParamIntArray("deelsrtcont_keys", -1); // Bestaande inspectie indien meegegeven. -var multi = ins_key_arr.length > 1; +var multi = ins_key_arr.length > 1; // Er zijn meerdere object keys meegegeven. var insPlan = getQParamInt("plan", 0) == 1; // Inplannen inspectie. var insClose = getQParamInt("close", 0) == 1; // Afmelden of afronden inspectie. @@ -48,7 +48,11 @@ 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; +var canClose = false; +var canFinish = false; +// Alle objecten moeten Gereed gemeld(5) of Afgerond(6) kunnen worden voordat de button zichtbaar mag worden. +var canClose = true; +var canFinish = true; for (var i = 0; i < ins_key_arr.length; i++) { var this_ins = ins.func_enabled_deel(ins_key_arr[i], @@ -61,7 +65,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" + + " , isc.ins_srtcontrole_options options" + " FROM ins_srtcontrole isc" + " , ins_deelsrtcontrole idsc" + " , ins_srtcontroledl_xcp xcp" @@ -84,7 +88,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; + var isc_options = oRs("options").Value; oRs.Close(); // Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden. @@ -93,9 +97,9 @@ for (var i = 0; i < ins_key_arr.length; i++) continue; } - // Afgemelde inspecties kunnen niet nog eens afgemeld worden. Deze eruit filteren. Ze kunnen wel gewijzigd worden (stuk voor stuk). - if (insClose && !(this_ins.canInspClose || (onlyfinish && this_ins.canInspFinish))) - { // De inspectie kan niet afgemeld worden. Overslaan. + // Kan de inspectie gereed gemeld/afgemeld of afgerond woden? + if (insClose && !this_ins.canInspClose && !this_ins.canInspFinish) + { // De inspectie kan niet afgemeld/afgerond worden. Overslaan. continue; } @@ -113,12 +117,19 @@ 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. + // Als 1 van de srtcontroles niet gereed te melden is, dan kan er niet gereed gemeld worden en moet de button niet getoond worden. + canClose = canClose && this_ins.canInspClose; + // Als 1 van de srtcontroles niet af te ronden is, dan kan er niet afgerond worden en moet de button niet getoond worden. + canFinish = canFinish && this_ins.canInspFinish; tobehandled++; } +if (!canClose && !canFinish) + // Als de buttons niet zichtbaar zijn heb ik niets te doen. + tobehandled = 0; lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY"); user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet +var desc = ""; if (ins_key_arr.length == 1) { sql = "SELECT d.ins_deel_omschrijving" // identificatie @@ -448,9 +459,10 @@ 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) { - if (!mayNotClose) + if (canClose) 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 (canFinish) + 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" }); @@ -475,7 +487,10 @@ if (ins_key_arr.length == 1) <% } %> -<% var blocktext = (insPlan? L("lcl_ins_schedule") : (insClose? L("lcl_ins_stop") : L("lcl_details") )); +<% var blocktext = (insPlan? L("lcl_ins_schedule") : (insClose? L("lcl_ins_stop") : L("lcl_details") )) + + (multi + ? " (" + L("lcl_count") + ":" + tobehandled + ")" + : ""); BLOCK_START("insMultiEdit", blocktext); if (ins_key_arr.length == 1) { @@ -585,7 +600,7 @@ if (ins_key_arr.length == 1) var dag_na_lastinspectdatum; var aantal_dmj_eenheid; var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum. - if (!oRs.eof && oRs("lastinspectdatum").Value) + if (!oRs.eof && oRs("lastinspectdatum").Value != null) { lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn. dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn. diff --git a/APPL/INS/ins_inspect_finish.asp b/APPL/INS/ins_inspect_finish.asp index df80ad319b..b7e896c7f8 100644 --- a/APPL/INS/ins_inspect_finish.asp +++ b/APPL/INS/ins_inspect_finish.asp @@ -58,7 +58,7 @@ for (var i = 0; i < ins_key_arr.length; i++) oRs.Close(); // Deze actie rond alleen afgemelde inspecties af. - if (this_ins.canInspFinish) + if (this_ins.canInspFastFinish) { // Alle Arrays zijn even groot. ingeslotendsc.push(dlsrtcont_key_arr[i]); tobefinished++; diff --git a/APPL/INS/ins_inspect_list.asp b/APPL/INS/ins_inspect_list.asp index e1e3f30ee9..1bf710630e 100644 --- a/APPL/INS/ins_inspect_list.asp +++ b/APPL/INS/ins_inspect_list.asp @@ -108,21 +108,31 @@ var authparams = user.checkAutorisation("WEB_INSUSE"); function insFinish(row) { - FcltMgr.confirm(L("lcl_ins_finishing"), function() { - var inskey = row.getAttribute("ROWKEY"); - var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")"); - if (rowdata) { - deellsrtcontkey = rowdata.insDeelSrtContrKey; + FcltMgr.confirm(L("lcl_ins_finishing"), + function() + { + var inskey = row.getAttribute("ROWKEY"); + var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")"); + if (rowdata) + { + deellsrtcontkey = rowdata.insDeelSrtContrKey; + isc_options = rowdata.insSrtControleOpt; + isc_status = rowdata.ins_status; + if (isc_status != 4) // Als ((isc_options & 4) != 4) geldt dan geldt zeker (isc_status != 4). + { // Er is nog niet Gereed gemeld(5) of er kan niet Gereed gemeld(5) worden. + // Dan moet ik de gegevens invullen via insClose. + insClose(row); + } + else + { + var data = { ins_keys: inskey, + dlsrtcont_key_arr: deellsrtcontkey}; - var data = { - ins_keys: inskey, - dlsrtcont_key_arr: deellsrtcontkey - }; - - protectRequest.dataToken(data); - $.post("ins_inspect_finish.asp", data, FcltCallbackRefresh, "json"); - } - }); + protectRequest.dataToken(data); + $.post("ins_inspect_finish.asp", data, FcltCallbackRefresh, "json"); + } + } + }); } @@ -209,7 +219,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" + + " , di.ins_srtcontrole_options options" + " , NULL ins_controlemode_success" + " FROM ins_v_defined_inspect_xcp di" + " WHERE (di.ins_srtcontrole_eind >= TRUNC(SYSDATE, 'DD')" @@ -294,7 +304,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" + + " , di.ins_srtcontrole_options options" + " , cm.ins_controlemode_success ins_controlemode_success" + " FROM ins_v_defined_inspect_xcp di" + " , ins_deelsrtcontrole idsc" @@ -323,12 +333,14 @@ var authparams = user.checkAutorisation("WEB_INSUSE"); var insKey = ins_key; var insSrtControleKey = oRs("ins_srtcontrole_key").Value; var insSrtControleType = oRs("ctr_controle_type").Value; + var insSrtControleOpt = oRs("options").Value; // Als de status Verwerkt(6) is dan kan/moet er weer een nieuw inspectie gestart worden. Dan geen ins_deelsrtcontrole_key meegegeven (-2). var istatus = oRs("ins_deelsrtcontrole_status").Value; var insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -2; - var data = { insKey: ins_key, insSrtControleKey: insSrtControleKey, insSrtControleType: insSrtControleType, insDeelSrtContrKey: insDeelSrtContrKey, ins_status: istatus}; + var data = { insKey: ins_key, insSrtControleKey: insSrtControleKey, insSrtControleType: insSrtControleType, + insSrtControleOpt: insSrtControleOpt, insDeelSrtContrKey: insDeelSrtContrKey, ins_status: istatus}; return JSON.stringify(data); } @@ -352,7 +364,6 @@ var authparams = user.checkAutorisation("WEB_INSUSE"); { var insSrtControleKey = oRs("ins_srtcontrole_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 @@ -365,11 +376,10 @@ 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 = !insOnlyFinish && lthis_ins.canInspFinish; - var eFinishOnly = insOnlyFinish && lthis_ins.canInspFinish; + var eFinish = !lthis_ins.canInspClose && lthis_ins.canInspFinish; // Als er nog niet gereed gemeld/afgemeld is dan wordt die butten wel getoond. } - var data = {eEdit: eEdit, eShow: eShow, ePlan: ePlan, eStart: eStart, eStartD: eStartD, eClose: eClose, eFinish: eFinish, eFinishOnly: eFinishOnly}; + var data = {eEdit: eEdit, eShow: eShow, ePlan: ePlan, eStart: eStart, eStartD: eStartD, eClose: eClose, eFinish: eFinish}; return data; } @@ -556,7 +566,6 @@ 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 9e81507a88..521d38ee3c 100644 --- a/APPL/INS/ins_inspect_save.asp +++ b/APPL/INS/ins_inspect_save.asp @@ -82,7 +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" + + " , di.ins_srtcontrole_options options" + " FROM ins_v_defined_inspect di" + " , ins_srtcontroledl_xcp xcp" + " , ins_deelsrtcontrole idsc" @@ -108,7 +108,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 isc_options = oRs("options").Value; var this_ins = ins.func_enabled_deel(ins_key_arr[i], {srtcont_key: srtcont_key_arr[i], @@ -154,7 +154,7 @@ for (var i = 0; i < ins_key_arr.length; i++) continue; } - if (!(this_ins.canInspClose || (onlyfinish && this_ins.canInspFinish)) || ins_deelsrtcontrole_status == 5) + if (!this_ins.canInspClose && !this_ins.canInspFinish) { // Ik heb geen Close (gereedmelden/afronden) rechten of laatste inspectie is niet verwerkt (dan moet ins_inspect_finish.asp aangeroepen worden). Overslaan. continue; } @@ -207,7 +207,7 @@ for (var i = 0; i < ins_key_arr.length; i++) lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn. dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn. dmj_eenheid = oRs("dmj_eenheid").Value; - minDate = dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum; + minDate = dmj_eenheid == 1? dag_na_lastinspectdatum : lastinspectdatum; } else minDate = aanmaakdatum; @@ -241,7 +241,7 @@ for (var i = 0; i < ins_key_arr.length; i++) firstinspectdatum = new Date(oRs("firstinspectdatum").Value); // Kan uiterlijk vandaag zijn. dag_voor_firstinspectdatum = new Date(oRs("dag_voor_firstinspectdatum").Value); // Kan uiterlijk morgen zijn. dmj_eenheid = oRs("dmj_eenheid").Value; - maxDate = dmj_eenheid? dag_voor_firstinspectdatum : firstinspectdatum; + maxDate = dmj_eenheid == 1? dag_voor_firstinspectdatum : firstinspectdatum; } //else //maxDate = new Date(); oRs.Close(); diff --git a/APPL/INS/ins_list.inc b/APPL/INS/ins_list.inc index f621050038..4ec82514e8 100644 --- a/APPL/INS/ins_list.inc +++ b/APPL/INS/ins_list.inc @@ -422,8 +422,9 @@ function ins_list (pautfunction, params) var istatus = inspect? oRs("ins_deelsrtcontrole_status").Value : -1; var insDeelSrtContrKey = inspect && oRs("ins_deelsrtcontrole_key").Value != null && istatus != 6? oRs("ins_deelsrtcontrole_key").Value : -2; - var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, insSrtControleKey: insSrtControleKey, - insDeelSrtContrKey: insDeelSrtContrKey}; + var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, + insSrtControleKey: insSrtControleKey, insDeelSrtContrKey: insDeelSrtContrKey, + ins_status: istatus}; return JSON.stringify(data); } @@ -446,30 +447,26 @@ 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 isc_options = oRs("options").Value; 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 }); var istatus = oRs("ins_deelsrtcontrole_status").Value; - // Een nieuwe inspectie mag pas weer aangemaakt worden als de laatste inspectie Afgerond(6) is. eShowInsp = this_ins.canInspShow && istatus < 6; // Als de inspectie is afgerond dan kun moet je eerst een nieuwe inspectie starten. Alleen lopende inspecties kun je inkijken. ePlan = this_ins.canInspPlan; 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 = !onlyfinish && this_ins.canInspFinish; - eFinishOnly = onlyfinish && this_ins.canInspFinish; + eFinish = !this_ins.canInspClose && this_ins.canInspFinish; // Als er nog niet gereed gemeld/afgemeld is dan wordt die butten wel getoond. } var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit, - eDetails: eDetails, eShowInsp: eShowInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish, eFinishOnly: eFinishOnly}; + eDetails: eDetails, eShowInsp: eShowInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish}; return data; } @@ -872,7 +869,6 @@ 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/INS/ins_list.js b/APPL/INS/ins_list.js index 18bd55180e..bad8cc9109 100644 --- a/APPL/INS/ins_list.js +++ b/APPL/INS/ins_list.js @@ -267,21 +267,35 @@ function insClose(rowArray) function insFinish(rowArray, isMulti) { - FcltMgr.confirm(rowArray.length == 1 ? L("lcl_ins_finishing") : L("lcl_ins_finishing_m"), { autoconfirm: isMulti }, function() { - var insKeyString = getKeyString(rowArray); - var deelsrtcontrkeyArray = new Array(); - for (var i = 0; i < rowArray.length; i++) { - rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')'); - deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey; - } + FcltMgr.confirm(rowArray.length == 1 ? L("lcl_ins_finishing") : L("lcl_ins_finishing_m"), + { autoconfirm: isMulti }, + function() + { + var insKeyString = getKeyString(rowArray); + var deelsrtcontrkeyArray = new Array(); + // Als er 1 inspectie is die niet Gereed gemeld(5) kan worden dan heb ik de Gereed meld gegevens nodig. + // Dan moet ik de gegevens invullen via insClose. + var mustClose = false; + for (var i = 0; i < rowArray.length; i++) + { + rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')'); + deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey; + isc_status = rowdata.ins_status; + mustClose = mustClose || (isc_status != 4); + } - var data = { - ins_keys: insKeyString, - dlsrtcont_key_arr: deelsrtcontrkeyArray.join(",") - }; - protectRequest.dataToken(data); - $.post("../ins/ins_inspect_finish.asp", data, FcltCallbackRefresh, "json"); - }); + if (mustClose) + { // Via insClose scherm de gegevens invullen. + insClose(rowArray, isMulti); + } + else + { + var data = { ins_keys: insKeyString, + dlsrtcont_key_arr: deelsrtcontrkeyArray.join(",") }; + protectRequest.dataToken(data); + $.post("../ins/ins_inspect_finish.asp", data, FcltCallbackRefresh, "json"); + } + }); } function insMultiMove(rowArray) diff --git a/APPL/INS/ins_show_inspect.asp b/APPL/INS/ins_show_inspect.asp index 26c653033e..ab3c2ff4e7 100644 --- a/APPL/INS/ins_show_inspect.asp +++ b/APPL/INS/ins_show_inspect.asp @@ -225,7 +225,7 @@ user.auth_required_or_abort(this_ins.canInspShow); var canPlan = this_ins.canInspPlan && deelsrtcontrole_status != 6; var canStart = this_ins.canInspStart && deelsrtcontrole_status != 6; var canClose = this_ins.canInspClose && deelsrtcontrole_status != 6; - var canFinish = this_ins.canInspFinish; + var canFinish = !canClose && this_ins.canInspFinish && deelsrtcontrole_status != 6; // Bestaande inspectie die al afgerond is kan niet nog een keer worden afgerond. var buttons = []; if (canStart)