From 9a565777f11998a0536b57770b41d6bb663fffa0 Mon Sep 17 00:00:00 2001 From: Koen Reefman Date: Thu, 24 Aug 2017 13:49:06 +0000 Subject: [PATCH] PLAT#39730 MJOB multiedit toegevoegd en de bulkactie 'herplannen taken' werkt nu met een relatief aantal jaren svn path=/Website/trunk/; revision=35080 --- APPL/API2/model_ins_srtcontrole.inc | 9 ++++ APPL/INS/ins_inspect_save.asp | 75 ++++++++++++++++++++++++++--- APPL/MJB/mjb_dragdropyear.asp | 36 ++++++++------ APPL/MJB/mjb_search_list.asp | 48 +++++++++++++----- 4 files changed, 136 insertions(+), 32 deletions(-) diff --git a/APPL/API2/model_ins_srtcontrole.inc b/APPL/API2/model_ins_srtcontrole.inc index a8c48adc8b..e29ff52c10 100644 --- a/APPL/API2/model_ins_srtcontrole.inc +++ b/APPL/API2/model_ins_srtcontrole.inc @@ -123,6 +123,7 @@ function model_ins_srtcontrole() "typ": "number", "defaultvalue": 10, "required": true, + "multiedit": true, "track": true }, "period": { @@ -130,6 +131,7 @@ function model_ins_srtcontrole() "label": L("ins_srtcontrole_periode"), "typ": "float", "required": true, + "multiedit": true, "track": true }, "unit": { @@ -168,6 +170,7 @@ function model_ins_srtcontrole() "label": L("ins_srtcontrole_kosten"), "iscurrency": true, "typ": "float", + "multiedit": true, "track": true }, "costs2": { @@ -175,6 +178,7 @@ function model_ins_srtcontrole() "label": L("ins_srtcontrole_kosten2"), "iscurrency": true, "typ": "float", + "multiedit": true, "track": true }, "costs3": { @@ -182,6 +186,7 @@ function model_ins_srtcontrole() "label": L("ins_srtcontrole_kosten3"), "iscurrency": true, "typ": "float", + "multiedit": true, "track": true }, "material": { @@ -189,24 +194,28 @@ function model_ins_srtcontrole() "label": L("ins_srtcontrole_materiaal"), "iscurrency": true, "typ": "float", + "multiedit": true, "track": true }, "hours": { "dbs": "ins_srtcontrole_uren", "label": L("ins_srtcontrole_uren"), "typ": "float", + "multiedit": true, "track": true }, "enddate": { "dbs": "ins_srtcontrole_eind", "label": L("ins_srtcontrole_eind"), "typ": "date", + "multiedit": true, "track": true }, "phasingouttime": { "dbs": "ins_srtcontrole_afbouwtijd", "label": L("ins_srtcontrole_afbouwtijd"), "typ": "float", + "multiedit": true, "track": true }, "taskgroup": { diff --git a/APPL/INS/ins_inspect_save.asp b/APPL/INS/ins_inspect_save.asp index 21c4a2110c..9b31f3de6f 100644 --- a/APPL/INS/ins_inspect_save.asp +++ b/APPL/INS/ins_inspect_save.asp @@ -44,7 +44,7 @@ var mjob = getFParamInt("mjob", 0) == 1; user.auth_required_or_abort(!multi || (ins_key_arr.length == srtcont_key_arr.length)); var deelsrtcontrole_datum; -var plandatum; +var plandatum, moveyears; var nextdate; var deelsrtcont_key = -1; @@ -54,7 +54,7 @@ else if (savemode == "C") // Afmelden/Afronden (Close). deelsrtcontrole_datum = getFParamDate("deelsrtcontrole_datum", new Date); else if (savemode == "E") { // Wijzigen (Edit). - // Plandatum wordt bij opmaak velden (fields) wel uit frm gehaald i.p.v. val. + plandatum = getFParamDate("plandatum"); if (multi) abort_with_warning(L("lcl_ins_allow_multi_edit")); @@ -67,6 +67,18 @@ else if (savemode == "D") // Delete (Move back to original year). { var dlsrtcont_key_arr = getFParamIntArray("dlsrtcont_key_arr", []); // Inspecties } +else if (savemode == "R") +{ + moveyears = getFParamInt("plandatum"); + if (multi || isNaN(moveyears) || moveyears % 1 !== 0) + { + Response.Clear(); + Response.Write(JSON.stringify({ success: false, savemode: "R", warning: "" })); + Response.End(); + } + deelsrtcont_key = getFParamInt("deelsrtcont_key", -1); // Specifieke inspectie die gewijzigd is. + var silent = true; +} var warning = ""; var result = {}; @@ -88,6 +100,9 @@ for (var i = 0; i < ins_key_arr.length; i++) ? " AND idsc2.ins_scenario_key = " + scen_key_arr[i] : " AND idsc2.ins_scenario_key = 1") + " ) ins_deelsrtcontrole_datum" + + (deelsrtcont_key > 0 + ? " , idsc.ins_deelsrtcontrole_plandatum" + : "") + " , xcp.ins_srtcontrole_eenheid eenheid" + " , xcp.ins_srtcontrole_mode" + " , idsc.ins_deelsrtcontrole_status" @@ -126,6 +141,7 @@ for (var i = 0; i < ins_key_arr.length; i++) var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value; var isc_options = oRs("options").Value; var disc_oms = oRs("ins_discipline_omschrijving").Value; + var deelsrtcontrole_plandatum = (deelsrtcont_key > 0 ? oRs("ins_deelsrtcontrole_plandatum").Value : -1); var this_ins = ins.func_enabled_deel(ins_key_arr[i], {srtcont_key: srtcont_key_arr[i], @@ -135,6 +151,47 @@ for (var i = 0; i < ins_key_arr.length; i++) canMsuEdit = savemode == "E" && this_ins.canMsuEdit; oRs.Close(); + if (savemode == "R") + { + var minyear = S("mjb_freeze_year") || (new Date()).getFullYear(); + if (ins_deelsrtcontrole_status == 0) // Er is nog geen inspectie geweest. + { + if (deelsrtcontrole_plandatum != -1) + plandatum = new Date(deelsrtcontrole_plandatum); + else + continue; + savemode = "E"; // bestaat al dus 'edit' + } + else + { + sql = "SELECT ins.nextcyclusdate ("+ins_key_arr[i]+", "+srtcont_key_arr[i]+", 1) nextdate FROM DUAL"; + oRs_nextdate = Oracle.Execute(sql); + plandatum = new Date(oRs_nextdate("nextdate").Value); + oRs_nextdate.Close(); + + if (ins_deelsrtcontrole_status == -1) + { + var aanmaakyear = ins_deel_aanmaak.getFullYear(); + minyear = Math.max(minyear, aanmaakyear); + } + else if (ins_deelsrtcontrole_status == 5 || ins_deelsrtcontrole_status == 6) + { + var lastinsdate = new Date(ins_deelsrtcontrole_datum_max); + var lastinsyear = lastinsdate.getFullYear(); + minyear = Math.max(minyear, lastinsyear); + } + else // ins_deelsrtcontrole_status == 2 + continue; + + savemode = "P"; // moet nog ingepland worden + } + var newyear = plandatum.getFullYear() + moveyears; + if (moveyears === 0 || newyear < minyear) + continue; + + plandatum = new Date(newyear, 11, 31); + } + // Inplannen (dlsrtcont_key = -1). // Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden. if (savemode == "P" && !this_ins.canInspPlan) // Inplannen. @@ -292,7 +349,14 @@ for (var i = 0; i < ins_key_arr.length; i++) tobehandled++; } -user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet +if (tobehandled == 0 && silent) +{ + Response.Clear(); + Response.Write(JSON.stringify({ success: false, savemode: savemode, warning: "" })); + Response.End(); +} +else + user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent, pdelete) { @@ -726,7 +790,6 @@ else if (savemode == "E") var srtcontrole_type = oRsN("ctr_disc_params_controle_type").Value; var thisyear = (new Date()).getFullYear(); - plandatum = getFParamDate("plandatum"); var plandatum_jaar = plandatum.getFullYear(); // De inspectiedatum voor taken die nog nooit een inspectie hebben gehad is voor een Vervanging(2) of Certificering(3) // een periode verder dan de registratie/aanmaak datum van het object. @@ -778,13 +841,13 @@ else if (savemode == "E") if (isScenario && mjobdelete) fields.push( { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: "", track: L("lcl_opdr_plandate") } ); else - fields.push( { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", frm: "plandatum", track: L("lcl_opdr_plandate") } ); + fields.push( { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum, track: L("lcl_opdr_plandate") } ); if (getDeelsrtcontroleDate) fields.push( { dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum, track: L("lcl_ins_controle_datum") } ); if (canMsuEdit) - fields.push( { dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } ); + fields.push( { dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } ); var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[0].dlsrtcont_key, fields); var err = Oracle.Execute(insUpd.sql, true); diff --git a/APPL/MJB/mjb_dragdropyear.asp b/APPL/MJB/mjb_dragdropyear.asp index 01e0922d89..6ffeaa0c4e 100644 --- a/APPL/MJB/mjb_dragdropyear.asp +++ b/APPL/MJB/mjb_dragdropyear.asp @@ -37,34 +37,42 @@ if (ctrdisc_key > 0) return false; var year = $("#dragdropyear").val(); - var today_year = (new Date()).getFullYear(); - if (year < today_year || year >= (today_year + <%=S("mjb_show_years")%>)) + var thisyear = (new Date()).getFullYear(); + var minyear = <%=S("mjb_freeze_year")%> || thisyear; + var toyear = thisyear + <%=S("mjb_show_years")%>; + var movemaxyears = toyear - minyear; + + // minyear = inclusive + // toyear = exclusive -> consistent with mjb_search.asp ('toyear') + + if ( year <= -movemaxyears || + (year >= movemaxyears && year < minyear) || + year >= toyear + ) { - FcltMgr.alert(L("lcl_mjb_not_overyear").format(<%=S("mjb_show_years")%>)); + FcltMgr.alert(L("lcl_mjb_between_years").format(minyear, toyear-1, movemaxyears-1)); return false; } FcltMgr.closeDetail(window, { year: $("#dragdropyear").val() } ); } + + $(document).ready(function() { + + $("#dragdropyear").focus(); + }); + -
+ <% BLOCK_START("mldDragDropYears", L("lcl_shared_needed_info")); - //RWFIELDTR("dragdropyear", "fld", L("lcl_mjb_years"), "", { required: true, datatype: "number" }) - var jaar = new Date().getFullYear(); - var sqljaren = []; - for (var i = 0; i < S("mjb_show_years"); i++) - sqljaren.push("SELECT {0}, '{0}' FROM DUAL".format(jaar + i)); - FCLTselector("dragdropyear", - sqljaren.join(" UNION "), - { initKey: jaar + 5, - label: L("lcl_mjb_year") - }); + RWFIELDTR("dragdropyear", "fld", L("lcl_mjb_years"), "", { required: true, datatype: "number" }) + BLOCK_END(); buttons = []; diff --git a/APPL/MJB/mjb_search_list.asp b/APPL/MJB/mjb_search_list.asp index 204c019aab..67fa8801e0 100644 --- a/APPL/MJB/mjb_search_list.asp +++ b/APPL/MJB/mjb_search_list.asp @@ -145,19 +145,37 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol FcltMgr.openModalDetail(url, { titel: L("lcl_ins_change_xcp")+" "+ttl, callback: <%=bld_key > 0? "FcltMgr.reload ": "null"%> }); } - function moveplan(evt, ins_key, srtcont_key, scen_key, jaar) + function moveplan(evt, ins_key, srtcont_key, scen_key, dlsrtcont_key, jaar) { FcltMgr.stopPropagation(evt); if (!jaar) return; - var data = { savemode: "P", // plan-mode - ins_keys: ins_key, - srtcont_key_arr: srtcont_key, - scen_key_arr: scen_key, - plandatum: new Date(jaar, 11, 31).getTime(), - mjob: 1 + var minjaar = <%=S("mjb_freeze_year")%> || (new Date()).getFullYear(); + var savemode, plandatum; + + if (jaar >= minjaar && jaar < (minjaar + <%=S("mjb_show_years")%>)) + { + savemode = "P"; // (absolute) plan-mode + plandatum = new Date(jaar, 11, 31).getTime(); + } + else if (jaar > -<%=S("mjb_show_years")%> && jaar < <%=S("mjb_show_years")%>) + { + savemode = "R" // relative plan-mode + plandatum = jaar; + } + else + return; + + var data = { savemode : savemode, + ins_keys : ins_key, + srtcont_key_arr : srtcont_key, + deelsrtcont_key : dlsrtcont_key, + scen_key_arr : scen_key, + plandatum : plandatum, + mjob : 1 }; + protectRequest.dataToken(data); $.post("../ins/ins_inspect_save.asp" , data @@ -165,6 +183,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol , "json" ); } + $(function () { $('td.mjbjaar').droppable( @@ -176,7 +195,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben var row = $td.closest('tr')[0]; var insData = eval("(" + row.getAttribute("ROWDATA") + ")"); - moveplan(null, insData.insKey, insData.insSrtControleKey, insData.insScenKey, $th.text()); + moveplan(null, insData.insKey, insData.insSrtControleKey, insData.insScenKey, null, $th.text()); } }); @@ -232,26 +251,31 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol }); }) - var mjbDeelKeyArray = []; + var mjbDeelKeyArray = []; var mjbSrtContrKeyArray = []; - var mjbScenKeyArray = []; + var mjbDlSrtContKeyArr = []; + var mjbScenKeyArray = []; function dragDropCallback(json, textStatus, tweede) { for (var i = 0; i < mjbDeelKeyArray.length; i++) { - moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], mjbScenKeyArray[i], json.year) + moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], mjbScenKeyArray[i], mjbDlSrtContKeyArr[i], json.year); } FcltCallbackRefresh(json, textStatus); } function mjb_dragdrop(rowArray, isMulti) { - var key; + mjbDeelKeyArray = []; + mjbSrtContrKeyArray = []; + mjbDlSrtContKeyArr = []; + mjbScenKeyArray = []; for (var i = 0; i < rowArray.length; i++) { rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')'); mjbDeelKeyArray.push(rowdata.insKey); mjbSrtContrKeyArray.push(rowdata.insSrtControleKey); + mjbDlSrtContKeyArr.push(rowdata.insDeelSrtContrKey); mjbScenKeyArray.push(rowdata.insScenKey) } url = "../mjb/mjb_dragdropyear.asp?ctrdisc_key=<%=ctrdisc_key%>&ins_keys=" + mjbDeelKeyArray.join(",");