From 7b6704421286e667ab682843dce2a0383183083c Mon Sep 17 00:00:00 2001 From: Maykel Geerdink Date: Tue, 11 Jul 2017 07:42:28 +0000 Subject: [PATCH] =?UTF-8?q?FSN#36298:=201.=20Scenario=E2=80=99s=20(per=20c?= =?UTF-8?q?omplex=20moeten=20verschillende=20scenario=E2=80=99s=20gemaakt?= =?UTF-8?q?=20moeten=20kunnen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/Website/trunk/; revision=34586 --- APPL/MJB/mjb_dragdropyear.asp | 3 + APPL/MJB/mjb_incl_scen.asp | 38 +++++++++-- APPL/MJB/mjb_search.asp | 52 ++++++++++++--- APPL/MJB/mjb_search_list.asp | 122 +++++++++++++++++++++++++++++----- 4 files changed, 183 insertions(+), 32 deletions(-) diff --git a/APPL/MJB/mjb_dragdropyear.asp b/APPL/MJB/mjb_dragdropyear.asp index 8ba59b5b53..fe2f95df3a 100644 --- a/APPL/MJB/mjb_dragdropyear.asp +++ b/APPL/MJB/mjb_dragdropyear.asp @@ -15,6 +15,9 @@ <% var ctrdisc_key = getQParamInt("ctrdisc_key", -1); // Ctrdiscipline +var ins_key_arr = getQParamIntArray("ins_keys", []); +user.anything_todo_or_abort(ins_key_arr.length > 0); // We klagen niet over enkele wel en enkele niet + if (ctrdisc_key > 0) lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY"); diff --git a/APPL/MJB/mjb_incl_scen.asp b/APPL/MJB/mjb_incl_scen.asp index 1cc26524f6..b5a4a3e62d 100644 --- a/APPL/MJB/mjb_incl_scen.asp +++ b/APPL/MJB/mjb_incl_scen.asp @@ -16,6 +16,7 @@ + <% FCLTHeader.Requires({ plugins: ["jQuery"], js: [] }) @@ -25,7 +26,32 @@ FCLTHeader.Requires({ plugins: ["jQuery"], <% FCLTHeader.Generate(); %> <% var ins_key_arr = getQParamIntArray("ins_keys"); - var srtcont_key_arr = getQParamIntArray("srtcont_keys"); + var srtcont_key_arr = getQParamIntArray("srtcont_keys", []); + + var tobeincluded = 0; + var ingesloten = []; + var ingeslotensc = []; + // Bepaal de objecten in de selectie die + // ook echt opgenomen kunnen of mogen worden in het scenario. + for (var i = 0; i < ins_key_arr.length; i++) + { + var this_ins = ins.func_enabled_deel(ins_key_arr[i], {srtcont_key: srtcont_key_arr[i]}); + if (this_ins.canChangeXcp) // Mag ik nieuwe exceptions (xcp) waarden van de taak voor het nieuwe scenario wijzigen? + { + ingesloten.push(ins_key_arr[i]); + ingeslotensc.push(srtcont_key_arr[i]); + tobeincluded++; + } + } + user.anything_todo_or_abort(tobeincluded > 0); // We klagen niet over enkele wel en enkele niet. + + var sql = "SELECT isc.ctr_discipline_key" + + " FROM ins_srtcontrole isc" + + " WHERE isc.ins_srtcontrole_key = " + srtcont_key_arr[0]; + var oRs = Oracle.Execute(sql); + ctrdisc_key = oRs("ctr_discipline_key").Value; + + lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY"); var sql_scen = "SELECT COUNT(ins_scenario_key) aantal" + " , MAX(ins_scenario_key) maxkey" @@ -82,8 +108,8 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
- "> - "> + "> + ">
> @@ -91,8 +117,10 @@ FCLTHeader.Requires({ plugins: ["jQuery"], sql = "SELECT ins_scenario_key" + " , ins_scenario_omschrijving" - + " FROM ins_scenario"; - var oRs = Oracle.Execute(sql + " WHERE ins_scenario_verwerkt IS NULL"); + + " FROM ins_scenario" + + " WHERE ins_scenario_verwerkt IS NULL" + + " ORDER BY ins_scenario_omschrijving"; + var oRs = Oracle.Execute(sql); FCLTselector("scenario", sql, { label: L("lcl_mjb_scenarios"), diff --git a/APPL/MJB/mjb_search.asp b/APPL/MJB/mjb_search.asp index 33ba831c0e..30e20b0bee 100644 --- a/APPL/MJB/mjb_search.asp +++ b/APPL/MJB/mjb_search.asp @@ -48,7 +48,7 @@ var frequentie = getQParamInt("frequentie", -1); var toyear = getQParamInt("toyear", new Date().getFullYear() + S("mjb_show_years")); var incbtw = getQParamInt("incbtw", 0) == 1; var scen_key_arr = getQParamIntArray("scen_keys", [-1]); // Scenario's -var onlyscen = getQParamInt("onlyscen", 0) == 1; +var actsit = getQParamInt("actsit", 0) == 1; var ctrdisc_key = getQParamInt("ctrdisc_key", -1); // Ctrdiscipline @@ -87,13 +87,41 @@ var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE"); @@ -277,7 +305,8 @@ var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE"); sql = "SELECT ins_scenario_key" + " , ins_scenario_omschrijving" + " FROM ins_scenario" - + " WHERE ins_scenario_verwerkt IS NULL"; + + " WHERE ins_scenario_verwerkt IS NULL" + + " ORDER BY ins_scenario_omschrijving"; var oRs = Oracle.Execute(sql); if (!oRs.Eof) { @@ -285,11 +314,12 @@ var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE"); sql, { label: L("lcl_mjb_scenarios"), initKey: scen_key_arr, - multi: true, + //multi: true, // Voor nu niet multi trclass:"primsearch noxd", - emptyOption: "" + emptyOption: "", + onChange: "onChangeScenario()" }); - RWCHECKBOXTR("onlyscen", "fldonlyscen", L("lcl_mjb_onlyscen"), onlyscen, { html: " value='1' ", trclass: 'primsearch noxd'}); + RWCHECKBOXTR("actsit", "fldactsit", L("lcl_mjb_act_situation"), actsit, { html: " value='1' ", trclass: 'primsearch noxd tractsit'}); } oRs.Close(); %> diff --git a/APPL/MJB/mjb_search_list.asp b/APPL/MJB/mjb_search_list.asp index cf6f06a0d7..95eecaf9a3 100644 --- a/APPL/MJB/mjb_search_list.asp +++ b/APPL/MJB/mjb_search_list.asp @@ -79,7 +79,7 @@ var scenarios = getQParamIntArray("scenarios", []); // Array met scenario's. var sindex = scenarios.join(",").indexOf("-1"); if (sindex > -1) scenarios.splice(sindex, 1); -var onlyscen = getQParamInt("onlyscen", 0) == 1; // Lijst inclusief BTW weergeven. +var actsit = getQParamInt("actsit", 0) == 1; // Ook actuele situatie. var ctrdisc_key = getQParamInt("ctrdisc_key", -1); // Ctrdiscipline if (ctrdisc_key > 0) @@ -124,16 +124,19 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol var url = "appl/mjb/mjb_search.asp?autosearch=1&groupby=7<%=transitParam%>&gebouw_key=" + bld_key; FcltMgr.openDetail(url, $(deze).text()); } + function naardeel(ins_key, deze) { var url = "appl/ins/ins_deel.asp?ins_key=" + ins_key + "&urole=bo"; FcltMgr.openDetail(url, $(deze).text()); } - function exception(ins_key, srtcont_key, ttl) + + function exception(ins_key, srtcont_key, scen_key, ttl) { - var url = "../ins/ins_xcp.asp?ins_key=" + ins_key + "&srtcont_key=" + srtcont_key + "&urole=bo"; + var url = "../ins/ins_xcp.asp?ins_key=" + ins_key + "&srtcont_key=" + srtcont_key + (scen_key > 0? "&scen_key=" + scen_key : "") + "&urole=bo"; FcltMgr.openModalDetail(url, { titel: L("lcl_ins_change_xcp") + " " + ttl, callback: <%=bld_key > 0? "FcltMgr.reload ": "null"%> }); } + function moveplan(evt, ins_key, srtcont_key, jaar) { FcltMgr.stopPropagation(evt); @@ -237,11 +240,15 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol for (var i = 0; i < rowArray.length; i++) { rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')'); - mjbDeelKeyArray.push(rowdata.insKey); - mjbSrtContrKeyArray.push(rowdata.insSrtControleKey); + // Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren. + if (!rowdata.insScenKey || rowdata.insScenKey < 0) + { // Het is geen scenario. De periodieke taak kan in tijd verschoven worden. De periodieke taak aan het array toevoegen. + mjbDeelKeyArray.push(rowdata.insKey); + mjbSrtContrKeyArray.push(rowdata.insSrtControleKey); + } } - url = "../mjb/mjb_dragdropyear.asp?ctrdisc_key=<%=ctrdisc_key%>"; + url = "../mjb/mjb_dragdropyear.asp?ctrdisc_key=<%=ctrdisc_key%>&ins_keys=" + mjbDeelKeyArray.join(","); FcltMgr.openModalDetail(url, L("lcl_mjb_dragdrop"), {callback: dragDropCallback}); } @@ -252,7 +259,11 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol for (var i = 0; i < rowArray.length; i++) { rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')'); - srtcontrolekeyArray[i] = rowdata.insSrtControleKey; + // Scenario's kunnen niet opgenomen worden in een scenario. Hier de scenario's er al uit filteren. + if (!rowdata.insScenKey || rowdata.insScenKey < 0) + { // Het is geen scenario. De periodieke taak kan in een scenario worden opgenomen. De inspectie aan het array toevoegen. + srtcontrolekeyArray[i] = rowdata.insSrtControleKey; + } } var subject = L("lcl_mjb_incl_scen"); @@ -312,6 +323,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , e.ctr_controle_type" + " , e.ins_scenario_key" + " , e.hasscenario" + + " , e.scenario_oms" + + " , e.scenario_aantal" + " FROM (SELECT el.ins_deel_key" + " , el.ins_srtcontroledl_xcp_key" + " , el.ins_srtcontrole_omschrijving" @@ -335,6 +348,20 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , el.ctr_controle_type" + " , el.ins_scenario_key" + " , el.hasscenario" + + " , (SELECT LISTAGG(isc.ins_scenario_omschrijving, ', ') WITHIN GROUP (ORDER BY isc.ins_scenario_omschrijving)" + + " FROM ins_srtcontroledl_xcp xcp" + + " , ins_scenario isc" + + " WHERE xcp.ins_scenario_key = isc.ins_scenario_key " + + " AND xcp.ins_srtcontrole_key = el.ins_srtcontrole_key" + + " AND xcp.ins_deel_key = el.ins_deel_key" + + " AND xcp.ins_scenario_key IS NOT NULL) scenario_oms" + + " , (SELECT COUNT(isc.ins_scenario_omschrijving)" + + " FROM ins_srtcontroledl_xcp xcp" + + " , ins_scenario isc" + + " WHERE xcp.ins_scenario_key = isc.ins_scenario_key " + + " AND xcp.ins_srtcontrole_key = el.ins_srtcontrole_key" + + " AND xcp.ins_deel_key = el.ins_deel_key" + + " AND xcp.ins_scenario_key IS NOT NULL) scenario_aantal" + " FROM ins_v_defined_inspect_xcp el" + " WHERE el.ins_srtcontrole_periode > 0" + " AND el.ctr_ismjob = 1" @@ -434,6 +461,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , comp.ctr_controle_type" + " , comp.ins_scenario_key" + " , comp.hasscenario" + + " , comp.scenario_oms" + + " , comp.scenario_aantal" + " FROM (WITH comps (ins_deel_key" // Recursive WITH statement om het volgende vervangingsjaar te vinden (m.vervangingsjaar + m.ins_srtcontrole_periode). + " , ins_srtcontroledl_xcp_key" + " , ins_srtcontrole_key" @@ -456,7 +485,9 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , ins_srtcontroledl_xcp_eind" + " , ctr_controle_type" + " , ins_scenario_key" - + " , hasscenario)" + + " , hasscenario" + + " , scenario_oms" + + " , scenario_aantal)" + " AS (SELECT ins_deel_key" + " , ins_srtcontroledl_xcp_key" + " , ins_srtcontrole_key" @@ -480,6 +511,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , ctr_controle_type" + " , ins_scenario_key" + " , hasscenario" + + " , scenario_oms" + + " , scenario_aantal" + " FROM (" + sql_componenten + ")" + " WHERE vervangingsjaar IS NOT NULL" + " UNION ALL" // latere jaren @@ -506,6 +539,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , ctr_controle_type" + " , ins_scenario_key" + " , hasscenario" + + " , scenario_oms" + + " , scenario_aantal" + " FROM comps m" + " WHERE (m.vervangingsjaar + m.ins_srtcontrole_periode <= " + toyear + "))" + " SELECT *" @@ -573,6 +608,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , cy.ctr_controle_type" + " , cy.ins_scenario_key" + " , cy.hasscenario" + + " , cy.scenario_oms" + + " , cy.scenario_aantal" + " FROM (" + sql_yearcost + ") cy" + " , ins_v_deel_gegevens dg" + " , alg_district d" @@ -605,7 +642,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , cv.keyColumn" + " , cv.ins_srtcontroledl_xcp_key" + " , cv.ins_srtcontrole_key" - + " , ins.nextcyclusdate (cv.ins_deel_key, cv.ins_srtcontrole_key, 0) org_nexdate_0" // Eerstaankomende inspectie: 1-ste vandaag of in de toekomst. + + " , ins.nextcyclusdate (cv.ins_deel_key, cv.ins_srtcontrole_key, cv.ins_scenario_key, 0) org_nexdate_0" // Eerstaankomende inspectie: 1-ste vandaag of in de toekomst. + " , cv.ins_srtcontrole_periode" + " , cv.ins_srtcontrole_opmerking" + " , cv.ins_srtcontrole_level" @@ -648,6 +685,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + " , cv.ctr_controle_type" + " , cv.ins_scenario_key" + " , cv.hasscenario" + + " , cv.scenario_oms" + + " , cv.scenario_aantal" + " FROM (" + sql_cost_verval + ") cv"; if (!fulldetails) @@ -687,15 +726,20 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol + ") PIVOT (SUM(bedrag), SUM(orgbedrag) AS orgbedrag " + " FOR vervangingsjaar IN (" + jaren.join(",") + ") )"; - // TODO: Testen of dit filter stukje klopt en uitbereiden??? if (scenarios.length > 0) { - if (onlyscen) + if (!actsit) sql += " WHERE ins_scenario_key IN (" + scenarios + ") AND hasscenario = 1"; else sql += " WHERE ins_scenario_key IN (" + scenarios + ") OR hasscenario = 0"; } - //else TODO + else + { + if (!actsit) + sql += " WHERE 1 = 0"; + else + sql += " WHERE ins_scenario_key IS NULL"; + } sql += " ORDER BY 1"; for (var i = 2; i <= groupby; i++) @@ -721,6 +765,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol data.insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1; data.insNexdate0 = new Date(oRs("org_nexdate_0").Value).getFullYear(); // Eerstaankomende vandaag of in de toekomst. data.insCtrControleType = oRs("ctr_controle_type").Value; + data.insScenKey = oRs("ins_scenario_key").Value? oRs("ins_scenario_key").Value : -1; } return JSON.stringify(data); @@ -730,7 +775,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol { if (!fulldetails) return ""; - scen_key = oRs("ins_scenario_key").Value? oRs("ins_scenario_key").Value : -1; + var scen_key = oRs("ins_scenario_key").Value? oRs("ins_scenario_key").Value : -1; var lclass = scen_key < 0 && oRs("ins_srtcontroledl_xcp_key").Value != null? "mjbxcp" : "mjbstd"; if (scen_key > 0) lclass += " scenerized1"; @@ -755,7 +800,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol // Inspectie acties alleen zichtbaar in het overzicht gegroepeerd naar Taken. Het gebouw filter is dan al vaak ingevuld. 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? oRs("ins_deelsrtcontrole_key").Value : -1}); + deelsrtcont_key: oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1, + isScenario: oRs("ins_scenario_key").Value? true : null}); ePlan = this_ins.canInspPlan; eStart = this_ins.canInspStart; eClose = this_ins.canInspClose; @@ -766,6 +812,16 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol return data; } + function fnHasScenario(oRs) + { + if (oRs("hasscenario").Value) + { + return "" + (oRs("scenario_aantal").Value > 1? "*" : "") + "" + "" + } + else + return ""; + } + function fnGebouw(oRs) { if (hasReadALGUSE || hasReadALGMAN) @@ -794,6 +850,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol var fncall = "exception({0}, {1}, '{2}')" .format(oRs("ins_deel_key").Value, oRs("ins_srtcontrole_key").Value, + oRs("ins_scenario_key").Value || -1, safe.jsstring(oRs("ins_deel_omschrijving").Value)); return "{1}" .format(safe.htmlattr(fncall), @@ -812,6 +869,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol return v; } } + function fnfnBedragNumber(jaar) // Voor optellen { return function (oRs) @@ -819,6 +877,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol return Math.round(oRs(jaar).Value); } } + function totalShow(column, rowNum) { return safe.curr(column.totalsum, true); @@ -834,6 +893,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol } return s; } + function fnTotalText(oRs) { return safe.curr(fnTotal(oRs), true); @@ -870,9 +930,10 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol doneclik[deel_key + ":" + srtcont_key] = 1; + var scen_key = oRs("ins_scenario_key").Value? oRs("ins_scenario_key").Value : -1; // INSUSE read rechten heb je al nodig om dit overzicht te zien. // Inspecties in de status gestart(2) of gereedgemeld(5) mogen niet drag en drop zijn. Planningsdatum is daarvan niet aan te passen. - return "{0}".format(safe.curr(v, true)) + return "{0}".format(safe.curr(v, true)) /* experimenteel inline schuiven var fnprev = "moveplan(event, {0}, {1}, {2}-1)".format(deel_key, srtcont_key, jaar); @@ -904,6 +965,18 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol } } + function fncolCloneClass() + { + return function (oRs) + { + if (oRs("hasscenario").Value) + { + return "mjbcloned" + } + else + return ""; + } + } var buttons = []; buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" }); @@ -927,6 +1000,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol }); //rst.addColumn(new Column({caption: L("level"), content: "ins_srtcontrole_level" /*, hasActions: true*/})); + if (scenarios.length == 0) + rst.addColumn(new Column({caption: "".format(safe.htmlattr(L("lcl_mjb_scenarios"))) + I("fa-clone") + "", content: fnHasScenario })); rst.addColumn(new Column({caption: L("lcl_district"), content: "alg_district_omschrijving", purpose: (dist_key>-1 ? PRINTING_ONLY : PRINT_AND_VIEW)})); if (groupby > 1) rst.addColumn(new Column({caption: L("lcl_building"), content: fnGebouw })); @@ -990,7 +1065,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol