From 61b1c9338910c955e89f947f56f12da8badd823f Mon Sep 17 00:00:00 2001 From: Alex Tiehuis Date: Wed, 18 Jul 2018 11:48:38 +0000 Subject: [PATCH] FSN#48107 Afmelden Mobile geeft geen waarschuwing en controleert niet op verplichte opmerking (gelijk gemaakt aan de desktopversie) svn path=/Website/trunk/; revision=38563 --- APPL/PDA/iface.inc | 1 - APPL/PDA/melding.asp | 375 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 353 insertions(+), 23 deletions(-) diff --git a/APPL/PDA/iface.inc b/APPL/PDA/iface.inc index 853cd0eb6f..82cb0a6b37 100644 --- a/APPL/PDA/iface.inc +++ b/APPL/PDA/iface.inc @@ -306,7 +306,6 @@ function BUTTON(plabel, params) <%=1||params.mini ? " data-mini='true'" : ""%> <%=params.id ? " id='"+params.id+"'" : ""%> <%=params.dataicon ? " data-icon='"+params.dataicon+"'" : ""%> - <%=params.datarel ? " data-rel='"+params.datarel+"'" : ""%> <%=params.dataiconpos? " data-iconpos='"+params.dataiconpos+"'" : ""%> <%=params.dataajax ? " data-ajax='"+params.dataajax+"'" : ""%> <%=params.transition ? " transition='"+params.transition+"'" : ""%> diff --git a/APPL/PDA/melding.asp b/APPL/PDA/melding.asp index 387a75d5f7..eb2b28e7a1 100644 --- a/APPL/PDA/melding.asp +++ b/APPL/PDA/melding.asp @@ -20,11 +20,13 @@ - als bij Vakgroep Kostenplaats verplicht aangevinkt is */ var mld_key = getQParamInt("mld_key",-1); +var verynew = (getQParamInt("verynew",-1) == 1); var LOCKED_USER_OK = { "xmlnode": "melding", "key": mld_key }; %> + @@ -52,6 +54,9 @@ var plaats_niveau = ""; var ins_keys_arr = []; var ins_name_arr = []; var addSubheader = false; +var lastopdr = (getQParamInt("lastopdr", 0) == 1) +var TransitParam = buildTransitParam(["mld_key", "verynew", "lastopdr"]); +var controleModeArray = [-1, -1, -1]; // De drie controlemoden zijn niet aanwezig (-1); urole = autoUrole(urole, { bo: "WEB_MLDBOF", fo: "WEB_MLDFOF", fe: "WEB_MLDUSE" }); @@ -61,6 +66,16 @@ var fronto = (urole=="fo"); var frontend = (urole=="fe"); var backo = (urole=="bo"); +var result = {}; +var tobeclosed = 0; +var ingesloten = []; +var canCloseOpdr = []; +var mldRequireCnt = 0; // Aantal meldingen waarvan minstens één verplicht kenmerk en/of object niet is ingevuld. +var reqStatusEmptyMelding = []; +var reqStatusEmptyMeldingkey = -1; +var reqStatusEmptyMeldingnr = ""; +var futureOpdr = false; + // Mogelijke parameters voor toevoegen only if (mld_key == -1) { @@ -151,8 +166,123 @@ if (mld_key == -1) if (mld_key > -1) { +//Bepaal of melding ook echt afgemeld mag worden + var this_mld = mld.func_enabled_melding(mld_key); + if (this_mld.canClose) // Als je mag accepteren mag je ook rejecten + { + // Zijn er nog kenmerken die nu wel verplicht zijn of een object? + var afwezig = mld.hasRequiredStatusEmptyMelding(mld_key, 5); // Melding status "Afgemeld(5)" + if (afwezig.kenm_ontbreekt.length || afwezig.obj_ontbreekt) + { + mldRequireCnt++; + var mldnr = mld.mld_prefix(mld_key) + mld_key; + if (afwezig.kenm_ontbreekt.length) + reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(afwezig.kenm_ontbreekt.join(", "), mldnr) ); + if (afwezig.obj_ontbreekt) + reqStatusEmptyMelding.push(L("lcl_mld_req_obj").format(mldnr) ); + reqStatusEmptyMeldingkey = mld_key; + reqStatusEmptyMeldingnr = mldnr; + } + // Zijn er nog lopende opdrachten? + var canCloseOpdrOfMld = []; + var sql = "SELECT o.mld_opdr_key" + + " FROM mld_opdr o" + + " WHERE o.mld_melding_key IN (" + mld_key + ")" + + " AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9)" + var oRsOM = Oracle.Execute(sql); + var noOpdrCloseAtAll = false; + futureOpdr = false; + while (!oRsOM.eof) + { // Voor elke opdracht van een melding controleren of deze afgemeld mag worden + var this_opdr = mld.func_enabled_opdracht(oRsOM("mld_opdr_key").Value); + var mld_opdr = this_opdr.mld_opdr; + sql = "SELECT mld_opdr_einddatum" + + " FROM mld_opdr o" + + " WHERE o.mld_opdr_key = " + oRsOM("mld_opdr_key").Value; + var oRs = Oracle.Execute(sql); + + var kosten_verplicht_afm = mld_opdr.typeopdr_matchtype != 4 && (mld_opdr.typeopdr_kosten_verplicht & 2 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 2)); + var opdr_kosten = mld_opdr.t_cost; + + // Als Setting S("mld_ord_afmeld_future") niet is gezet (0): Opdrachten waarvan de einddatum in de toekomst ligt mogen niet worden afgemeld. + if (!this_opdr.canClose || (S("mld_ord_afmeld_future") != 1 && (oRs("mld_opdr_einddatum").Value > new Date())) || (kosten_verplicht_afm && opdr_kosten == 0)) + { // Geen autorisatie om alle opdrachten van een melding af te melden of opdrachten in de toekomst met setting S("mld_ord_afmeld_future") niet gezet-->dan geen enkele van die melding + noOpdrCloseAtAll = true; + if (S("mld_ord_afmeld_future") != 1 && (oRs("mld_opdr_einddatum").Value > new Date())) + futureOpdr = true; // Indien opdrachten in de toekomst en setting S("mld_ord_afmeld_future") niet gezet (0) dan mag je de melding niet afmelden + } + oRs.Close(); + canCloseOpdrOfMld.push(oRsOM("mld_opdr_key").Value); + oRsOM.MoveNext(); + } + oRsOM.Close(); + // Geen autorisatie om alle opdrachten van een melding af te melden of opdrachten in de toekomst met setting S("mld_ord_afmeld_future") niet gezet (0) + // --> dan geen enkele van die melding + if (!noOpdrCloseAtAll) + { + for (var j = 0; j < canCloseOpdrOfMld.length; j++) + { + canCloseOpdr.push(canCloseOpdrOfMld[j]); + } + } + + if (!futureOpdr) + { // Indien opdrachten in de toekomst en setting S("mld_ord_afmeld_future") niet gezet (0) dan mag je de melding niet afmelden + ingesloten.push(mld_key); + tobeclosed++; + } + } + + // Als er meerder meldingen zijn waarvan een verplicht kenmerk niet is ingevuld, dan abort en melding. + // Als er 1 melding is waarvan een verplicht kenmerk niet is ingevuld, dan wordt er verderop alleen een melding met twee buttons getoond. + user.anything_todo_or_abort(mldRequireCnt < 2, reqStatusEmptyMelding.join("
")); +// user.auth_required_or_abort(!(mld_key && futureOpdr), L("lcl_mld_einddatum_to_late_mld")); // Bij enkele melding met toekomstige opdrachten een aparte melding geven + user.anything_todo_or_abort(tobeclosed > 0); // We klagen niet over enkele wel en enkele niet + + var canCloseCtr = []; + var srtContKeyArray = []; + for (var i = 0; i < ingesloten.length; i++) + { + var mld_melding = mld.mld_melding_info(ingesloten[i]); + if (i == 0) lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY"); // Neem voor informatie de eerste melding. + + if (mld_melding.meldbron_key == 10 && mld_melding.kto_type == 'T') + { + var sql = "SELECT dsc.ins_deel_key" + + " , dsc.ins_srtcontrole_key" + + " , ctr_disc_params_controle_type" + + " FROM ins_deelsrtcontrole dsc" + + " , ins_srtcontrole isc" + + " , ctr_disc_params cdp" + + " WHERE dsc.ins_srtcontrole_key = isc.ins_srtcontrole_key" + + " AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key" + + " AND dsc.ins_deelsrtcontrole_key = " + mld_melding.kto_key; + var oRs = Oracle.Execute(sql); + // De controle moet aanwezig zijn. + var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value, + {srtcont_key: oRs("ins_srtcontrole_key").Value, + deelsrtcont_key: mld_melding.kto_key, + scen_key: 1 + }); + if (this_ins.canInspFinishMjb) + { + canCloseCtr.push({ ins_key: oRs("ins_deel_key").Value, + srtcont_key: oRs("ins_srtcontrole_key").Value, + deelsrtcont_key: mld_melding.kto_key, + controlemode: oRs("ctr_disc_params_controle_type").Value + }); + srtContKeyArray.push(oRs("ins_srtcontrole_key").Value); + controleModeArray[oRs("ctr_disc_params_controle_type").Value - 1] = oRs("ctr_disc_params_controle_type").Value; // Controlemode 2 op de 2de plek van de Array invullen [-1, 2, -1]. + } + } + } + + // De -1 waarden in de controlemode Array verwijderen + for (var i = 2; i >= 0; i--) + { + if (controleModeArray[i] == -1) controleModeArray.splice(i, 1); + } // BESTAANDE MELDING - var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding user.auth_required_or_abort(this_mld.canReadAny); mld_info = mld.mld_melding_info(mld_key); @@ -328,22 +458,10 @@ var editKostenplaats = (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info. return false; }; - function mld_close() + function mld_close(verynew) { - if (!validateForm("meld")) - return false; - - $.post( $("form[name=meld]")[0].action - , $("[name=meld]").serialize() - , FcltCallbackAndThen(function () - { - $.post( "<%=rooturl%>/appl/mld/mld_close_save.asp?mld_key=<%=mld_key%>" - , $("[name=meld]").serialize() - , McltCallbackRefresh - , "json"); - }) - , "json"); - return false; + window.location.href = "<%=rooturl%>/appl/pda/melding.asp?mld_key=<%=mld_key%>#meld-4-<%=mld_key%>"; + return false; }; function mld_submit_callback(json) @@ -420,12 +538,12 @@ var editKostenplaats = (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info. function PasteFromSelectbox() { - if ($("#stdremark :selected").val() > -1) - { - $("#remark").focus(); - var PastedText = $("#stdremark :selected")[0].getAttribute("afmeldtekstoms"); - $("#remark").val($("#remark").val() + ($("#remark").val() != ""? "\n" : "") + PastedText); - } + if ($("#stdopmerk :selected").val() > -1) + { + $("#opmerk").focus(); + var PastedText = $("#stdopmerk :selected")[0].getAttribute("afmeldtekstoms"); + $("#opmerk").val($("#opmerk").val() + ($("#opmerk").val() != ""? "\n" : "") + PastedText); + } } function mld_forward_cancel() @@ -483,6 +601,38 @@ var editKostenplaats = (stdm_info.ins_srtdiscipline_kostenklant==1 && stdm_info. $("#time_from_enddate").val(endTime); } + function mld_close_submit() + { + if (!validateForm("u2")) + return false; + + $.post($("form[name=closeform]")[0].action, $("[name=closeform]").serialize(), McltCallbackAndThenAlways(function() {window.history.back();}), "json"); + return true; // disable button + } + + function ctrcloseToggler(deze) + { + var ctrclose = $(deze).prop('checked'); + if (ctrclose) + { + <% for (var i = 0; i < controleModeArray.length; i++) + { %> + $("#sel_controlemode" + <%=controleModeArray[i]%>).addClass("required"); + <% } %> + $("#inscontrolemode").show(); + FcltMgr.resized(window); + } + else + { + $("#inscontrolemode").hide(); + <% for (var i = 0; i < controleModeArray.length; i++) + { %> + $("#sel_controlemode" + <%=controleModeArray[i]%>).removeClass("required"); + <% } %> + } + } + +