diff --git a/APPL/INS/ins.inc b/APPL/INS/ins.inc index 929b5ecc0d..6cce643cdb 100644 --- a/APPL/INS/ins.inc +++ b/APPL/INS/ins.inc @@ -1055,7 +1055,7 @@ ins = {checkAutLevel: var max_dsc_key = oRsM("max_dsc_key").Value; var dsc_status = oRsM("ins_deelsrtcontrole_status").Value || -1; var cm_success = (oRsM("ins_controlemode_success").Value || 0) == 1; - var dsc_freezedate = oRsM("ins_deelsrtcontrole_freezedate").Value? new Date(oRsM("ins_deelsrtcontrole_freezedate").Value) : null; + var dsc_freezedate = oRsM("ins_deelsrtcontrole_freezedate").Value != null? new Date(oRsM("ins_deelsrtcontrole_freezedate").Value) : null; if (dsc_status == 6 && cm_success) // 1) De laatste inspectie is succesvol voltooid: De volgende met ins.nextcyclusdate() te berekenen. { // De laatste inspectie is een succesvol afgeronde inspectie. De volgende met ins.nextcyclusdate() te berekenen. @@ -1082,7 +1082,7 @@ ins = {checkAutLevel: + " , " + (ismjob? "1" : "0") + ") nextdate" + " FROM ins_v_defined_inspect_xcp xcp" + " WHERE xcp.ins_deel_key = " + pins_key - + " AND xcp.ins_srtcontrole_key = " + pscen_key; + + " AND xcp.ins_srtcontrole_key = " + psrtcont_key; var oRsN = Oracle.Execute(sql); nextdate = new Date(oRsN("nextdate").Value); oRsN.Close(); diff --git a/APPL/MJB/mjb_commit_scen.asp b/APPL/MJB/mjb_commit_scen.asp index 523ab60024..43992e3f5d 100644 --- a/APPL/MJB/mjb_commit_scen.asp +++ b/APPL/MJB/mjb_commit_scen.asp @@ -25,6 +25,7 @@ var JSON_Result = true; <% protectRequest.validateToken(); var scen_key = getFParamInt("scenario", -1); +var mjb_freeze_year = S("mjb_freeze_year"); var sql = "SELECT ins_scenario_omschrijving" + " FROM ins_scenario" @@ -69,6 +70,29 @@ Oracle.Transaction(); for (var i = 0; i < ingesloten.length; i++) { // Toevoegen van de taak voor het object aan het (nieuwe) scenario. + var dlsrtcont_key = -1; + var dlsrtcont_status; + var dsc_plandatum_string = L("lcl_empty"); + // Laatste inspectie record (Active Situatie (AS)) ophalen. + sql = "SELECT idsc.ins_deelsrtcontrole_key" + + " , idsc.ins_deelsrtcontrole_status" + + " , idsc.ins_deelsrtcontrole_plandatum" + + " , EXTRACT (YEAR FROM idsc.ins_deelsrtcontrole_freezedate) freezejaar" + + " FROM ins_deelsrtcontrole idsc" + + " WHERE idsc.ins_deel_key = " + ingesloten[i].ins_key + + " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key + + " AND idsc.ins_scenario_key = 1" + + " ORDER BY idsc.ins_deelsrtcontrole_key DESC"; + var oRs = Oracle.Execute(sql); + if (!oRs.eof) + { + dlsrtcont_key = oRs("ins_deelsrtcontrole_key").Value; + dlsrtcont_status = oRs("ins_deelsrtcontrole_status").Value; + dsc_plandatum_string = oRs("ins_deelsrtcontrole_plandatum").Value != null? toDateTimeString(new Date(oRs("ins_deelsrtcontrole_plandatum").Value)) : L("lcl_empty"); + dsc_freezejaar = oRs("freezejaar").Value; + } + oRs.Close(); + // Waarden van het scenario ophalen. var sql = "SELECT xcp.ins_srtcontroledl_xcp_key" + " , isc.ins_srtcontrole_mode" @@ -150,28 +174,8 @@ for (var i = 0; i < ingesloten.length; i++) var plandatum = oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null; oRs.Close(); - var dlsrtcont_key = -1; - var dlsrtcont_status; - var dsc_plandatum_string = L("lcl_empty"); - // Laatste inspectie record (Active Situatie (AS)) ophalen. - sql = "SELECT idsc.ins_deelsrtcontrole_key" - + " , idsc.ins_deelsrtcontrole_status" - + " , idsc.ins_deelsrtcontrole_plandatum" - + " FROM ins_deelsrtcontrole idsc" - + " WHERE idsc.ins_deel_key = " + ingesloten[i].ins_key - + " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key - + " AND idsc.ins_scenario_key = 1" - + " ORDER BY idsc.ins_deelsrtcontrole_key DESC"; - var oRs = Oracle.Execute(sql); - if (!oRs.eof) - { - dlsrtcont_key = oRs("ins_deelsrtcontrole_key").Value; - dlsrtcont_status = oRs("ins_deelsrtcontrole_status").Value; - dsc_plandatum_string = oRs("ins_deelsrtcontrole_plandatum").Value != null? toDateTimeString(new Date(oRs("ins_deelsrtcontrole_plandatum").Value)) : L("lcl_empty"); - } - - // TODO: Wat als de status Gestart(2) of Gereedgemeld/Afgerond(5) is??? - if (dlsrtcont_key > 0 && dlsrtcont_status < 6) + // In mjob komen geen Gereedgemeld/Afgerond(5) inspecties voor. Alleen status 0, 2 en 6. + if (dlsrtcont_key > 0 && dlsrtcont_status == 0) { if (plandatum) { @@ -192,7 +196,8 @@ for (var i = 0; i < ingesloten.length; i++) } else { // Er is in de Active Situatie (AS) geen lopende inspectie. - if (plandatum) + // of er is een geaccordeerde inspectie voor het freeze jaar. + if (plandatum && !(dlsrtcont_status == 2 && dsc_freezejaar == mjb_freeze_year)) { var nextdate = ins.func_get_nextdate(ingesloten[i].ins_key, ingesloten[i].srtcont_key, 1); var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key }, @@ -207,7 +212,6 @@ for (var i = 0; i < ingesloten.length; i++) var err = Oracle.Execute(insIns.sql, true); } } - oRs.Close(); } // Nu nog het scenario verwijderen. // Een scenario gooit via de cascade zijn ins_deelsrtcontrole en ins_srtcontroledl_xcp records mee weg.