diff --git a/APPL/API2/model_mld_typeopdr.inc b/APPL/API2/model_mld_typeopdr.inc index a96e4906ed..7060e591c6 100644 --- a/APPL/API2/model_mld_typeopdr.inc +++ b/APPL/API2/model_mld_typeopdr.inc @@ -165,10 +165,36 @@ function model_mld_typeopdr() "dbs": "mld_typeopdr_sequential", "label": L("lcl_typeopdr_sequential"), "typ": "number", - "defaultvalue": "0", - "LOV": L("mld_typeopdr_seqmodeLOV"), - "emptyoption": null, - "multiedit": true + "multiedit": true, + "bits": [ + { + "name": "", + "label": "", + "typ": "check", + "mask": 7, + "radios": [ + { + "name": "inplan", + "label": L("mld_typeopdr_hold_allowed"), + "mask": 1, + "defaultvalue": 0 + }, + { + "name": "start", + "label": L("ins_srtcontrole_seq_strict"), + "mask": 2, + "defaultvalue": 0 + }, + { + "name": "afmeld", + "label": L("ins_srtcontrole_halt_start"), + "mask": 4, + "defaultvalue": 0 + } + ] + } + ], + "track": true } }; diff --git a/APPL/MLD/mld_edit_opdr.asp b/APPL/MLD/mld_edit_opdr.asp index a84dd817ee..5f2f4a5e1e 100644 --- a/APPL/MLD/mld_edit_opdr.asp +++ b/APPL/MLD/mld_edit_opdr.asp @@ -1105,7 +1105,7 @@ oRs.Close(); opdr_status: mld_opdr.opdr_status, mld_key: mld_key, stdm_arr: [], - showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canSeeARFlex)), + showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canHervatten || this_opdr.canSeeARFlex)), copy: copy, reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)), flexcolumns: S("mld_flexcolumns"), diff --git a/APPL/MLD/mld_show_opdr.asp b/APPL/MLD/mld_show_opdr.asp index 11e2882196..41ed07bb48 100644 --- a/APPL/MLD/mld_show_opdr.asp +++ b/APPL/MLD/mld_show_opdr.asp @@ -215,6 +215,10 @@ if (mld_opdr.contactpers_key < 0) var activeopdr = mld.getactiveopdracht(opdr_key, user_key, mld_opdr.uitvoerende_key); else var activeopdr = mld.getactiveopdracht(opdr_key); + +// Zijn bij deze opdracht alle verplichte kenmerken ingevuld voor het onderbreken(81)? +var reqStatusEmptyOpdr = []; +reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 81); // Opdracht status "Onderbroken(81)" een substatus van "Geaccepteerd(8)". %> @@ -240,6 +244,9 @@ else var refiat = <%=refiat? 1 : 0%> == 1; var activeopdr_key = <%=activeopdr.opdr_key%>; var activeopdracht = "<%=activeopdr.opdracht%>"; + var typeopdr_sequential = "<%=mld_opdr.typeopdr_sequential%>"; + var kenmerk_verplicht_status = "<%=mld_opdr.kenmerk_verplicht_status%>"; + var hasKenmerkOnderbreken = "<%=reqStatusEmptyOpdr.length? 1 : 0%>" == 1; $(function() { @@ -650,7 +657,7 @@ else opdr_type: mld_opdr.opdr_type, opdr_type_org: opdr_type_org, opdr_status: mld_opdr.opdr_status, - showClose: this_opdr.couldClose || this_opdr.canClose || this_opdr.canSeeARFlex, + showClose: this_opdr.couldClose || this_opdr.canClose || this_opdr.canHervatten || this_opdr.canSeeARFlex, reado: true, flexcolumns: S("mld_flexcolumns"), showConfidential : this_opdr.canViewConfidential diff --git a/APPL/MLD/mld_show_opdr.js b/APPL/MLD/mld_show_opdr.js index f79470707b..c1838a121a 100644 --- a/APPL/MLD/mld_show_opdr.js +++ b/APPL/MLD/mld_show_opdr.js @@ -67,13 +67,12 @@ function opdr_setsend() } function opdr_accept() { - var confirmtekst = (activeopdr_key > 0 + var confirmtekst = (activeopdr_key > 0 && (typeopdr_sequential & 4) != 4 ? L("lcl_mld_opdr_accept_hlt").format(prefix + mld_key + "/" + volgnr, activeopdracht) : L("lcl_mld_opdr_accept").format(prefix + mld_key + "/" + volgnr)); FcltMgr.confirm(confirmtekst, function() { // Accepteren scherm - var data = { opdr_key: opdr_key, - hltactive: activeopdr_key > 0? 1 : 0 }; // Onderbreek de actieve opdracht. + var data = { opdr_key: opdr_key }; protectRequest.dataToken(data); $.post("opdr_accept.asp", data, FcltCallbackRefresh, "json"); }); @@ -188,14 +187,26 @@ function mld_melding_materiaal() function opdr_onderbreken() { - FcltMgr.confirm(L("lcl_mld_opdr_hlt").format(prefix + mld_key + "/" + volgnr), - function() - { - var data = { opdr_key: opdr_key, - hlt: 1 }; - protectRequest.dataToken(data); - $.post("opdr_hltrsm.asp", data, FcltCallbackRefresh, "json"); - }); + if (hasKenmerkOnderbreken) + { + var url = "../mld/opdr_halt_confirm.asp?opdr_key=" + opdr_key; + FcltMgr.openModalDetail(url, + L("lcl_halt"), + { callback: FcltCallbackRefresh } + ); + } + else + FcltMgr.confirm(L("lcl_mld_opdr_hlt").format(prefix + mld_key + "/" + volgnr), + function() + { + var data = { opdr_key: opdr_key, + hlt: 1 }; + protectRequest.dataToken(data); + $.post("opdr_hltrsm.asp", + data, + FcltCallbackRefresh, + "json"); + }); } function opdr_hervatten() diff --git a/APPL/MLD/opdr_accept.asp b/APPL/MLD/opdr_accept.asp index e46ab87c40..3ff78f1321 100644 --- a/APPL/MLD/opdr_accept.asp +++ b/APPL/MLD/opdr_accept.asp @@ -24,8 +24,6 @@ if (opdr_key_arr.length) <% /***** Get webform parameters *****/ -var hltactive = getFParamInt("hltactive", 0) == 1; // Onderbreek de actieve opdracht. - var result = { message: "", success: false }; var tobeaccepted = 0; var ingesloten = []; @@ -47,6 +45,7 @@ for (var i = 0; i < ingesloten.length; i++) { // Blijkbaar mogen we Accepteren var mld_opdr = mld.mld_opdr_info(ingesloten[i]); + // Als de behandelaar leeg is en een user van het INTERNE bedrijf meldt de opdracht af, dan de user_key als behandelaar (prs_perslid_key) zetten. var fields = []; var prs_filled = false; // Beheerder is leeg en wordt gevuld met de accepteerder. @@ -86,17 +85,25 @@ for (var i = 0; i < ingesloten.length; i++) // Zetten van de status en afhandelen van de tracking van het fiatteren (approve). mld.setopdrachtstatus(ingesloten[i], 8); // Geaccepteerd - // De actieve opdracht onderbreken. - if (hltactive || prs_filled) - { // Er is 1 actieve opdracht die onderbroken moet worden. Dit doen we door een "ORDHLT" tracking op de opdracht te doen. - // Haal de actieve opdracht weer op. - var activeopdr = mld.getactiveopdracht(ingesloten[i]); - // Voor hltactive is er 1 active opdracht aanwezig maar voor prs_filled weet ik dat nog niet. Daarom activeopdr.opdr_key testen. - if (activeopdr.opdr_key > 0) - { - shared.trackaction("ORDHLT", activeopdr.opdr_key); - Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 1 WHERE mld_opdr_key = " + activeopdr.opdr_key); - } + // Ik kan hier zelf bepalen of de actieve opdracht onderbroken moet worden (hltactive). + // Als de opdrachten niet sequentieel uitgevoerd moeten worden, dan wordt er ook geen actieve opdracht gevonden. + if (mld_opdr.contactpers_key < 0) + var activeopdr = mld.getactiveopdracht(ingesloten[i], user_key, mld_opdr.uitvoerende_key); // Haal de actieve opdracht op. + else + var activeopdr = mld.getactiveopdracht(ingesloten[i]); // Haal de actieve opdracht op. + var activeopdr_key = activeopdr.opdr_key; + var activeopdracht = activeopdr.opdracht; + var hltactive = (activeopdr_key > 0); + + var onHold = ((mld_opdr.typeopdr_sequential & 4) == 4); // Staat "Onderbroken starten" aan? + if (hltactive) + { // Er is 1 actieve opdracht die onderbroken moet worden. Dit doen we door een "ORDHLT" tracking op die actieve opdracht te doen. + Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 1 WHERE mld_opdr_key = " + activeopdr.opdr_key); + shared.trackaction("ORDHLT", activeopdr.opdr_key); + } + else if (onHold) + { // Als "Onderbroken starten" aan staat dan deze opdracht op "On Hold" zetten. Dan geen "ORDHLT" tracking genereren. + Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 1 WHERE mld_opdr_key = " + ingesloten[i]); } } diff --git a/APPL/PDA/order.asp b/APPL/PDA/order.asp index ddb309048f..5c6cc32fac 100644 --- a/APPL/PDA/order.asp +++ b/APPL/PDA/order.asp @@ -31,10 +31,17 @@ FCLTHeader.Requires({ plugins: ["suggest"] var mld_key = getQParamInt("mld_key", -1); var copy = false; +var halt = getQParamInt("hlt", 0) == 1; +var resume = getQParamInt("rsm", 0) == 1; // Als de opdrachten niet sequentieel uitgevoerd moeten worden, dan wordt er ook geen actieve of halted opdracht gevonden. var activeopdr = mld.getactiveopdracht(opdr_key); var hltopdr = mld.gethltopdrachten(opdr_key); +// Zijn bij deze opdracht alle verplichte kenmerken ingevuld voor het onderbreken(81)? +var reqStatusEmptyOpdr = []; +reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 81); // Opdracht status "Onderbroken(81)" een substatus van "Geaccepteerd(8)". +var hasKenmerkOnderbreken = (reqStatusEmptyOpdr.length? 1 : 0) == 1; + // Mogelijke parameters voor toevoegen only if (opdr_key == -1) { @@ -46,10 +53,8 @@ if (opdr_key == -1) Server.Transfer("order_new.asp"); // Ga eerst opdrachttype kiezen } } -else +else if (halt || resume) { - var halt = getQParamInt("hlt", 0) == 1; - var resume = getQParamInt("rsm", 0) == 1; mld.opdr_hltrsm(opdr_key, { halt: halt, resume: resume }); } @@ -189,8 +194,7 @@ if (mld_opdr.uitv_type == "B") : L("lcl_mld_opdr_accept").format(opdr_nr)); if (confirm(confirmtekst)) { - var data = { opdr_key: <%=opdr_key%>, - hltactive: activeopdr_key > 0? 1 : 0 }; // Onderbreek de actieve opdracht. + var data = { opdr_key: <%=opdr_key%> }; <% protectRequest.dataToken("data"); %> $.post( "<%=rooturl%>/appl/mld/opdr_accept.asp", data, @@ -274,7 +278,18 @@ if (mld_opdr.uitv_type == "B") window.history.go(-1); } - function opdr_onderbreken() + function opdr_halt_submit() + { + var data = $("[name=haltform]").serialize(); + protectRequest.dataToken(data); + $.post($("form[name=haltform]")[0].action, + data, + McltCallbackAndThenAlways(function() { window.location.href = "<%=rooturl%>/appl/pda/order.asp?opdr_key=<%=opdr_key%>"; }), + "json"); + return false; + } + + function opdr_halt() { var opdr_nr = "<%=mld_opdr.srtdiscprefix + mld_opdr.mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr%>"; if (confirm(L("lcl_mld_opdr_hlt").format(opdr_nr))) @@ -283,7 +298,7 @@ if (mld_opdr.uitv_type == "B") } } - function opdr_hervatten() + function opdr_resume() { var opdr_nr = "<%=mld_opdr.srtdiscprefix + mld_opdr.mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr%>"; if (confirm(L("lcl_mld_opdr_rsm").format(opdr_nr))) @@ -567,7 +582,7 @@ if (mld_opdr.uitv_type == "B") opdr_status: mld_opdr.opdr_status, mld_key: mld_key, stdm_arr: [], - showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canSeeARFlex)), + showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canHervatten || this_opdr.canSeeARFlex)), mobile: true, reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)), showConfidential : this_opdr.canViewConfidential @@ -710,10 +725,15 @@ if (mld_opdr.uitv_type == "B") // Onderbreken. if (this_opdr.canOnderbreken) - BUTTON(L("lcl_halt"), {click: "opdr_onderbreken()", dataicon: "power"}); + { + if (hasKenmerkOnderbreken) + BUTTON(L("lcl_halt"), {linkid: "#opdr-5-" + opdr_key, dataicon: "power"}); + else + BUTTON(L("lcl_halt"), {click: "opdr_halt()", dataicon: "power"}); + } // Hervatten. if (this_opdr.canHervatten) - BUTTON(L("lcl_resume"), {click: "opdr_hervatten()", dataicon: "power"}); + BUTTON(L("lcl_resume"), {click: "opdr_resume()", dataicon: "power"}); if (this_opdr.canClose) { // Afmelden @@ -762,7 +782,7 @@ if (mld_opdr.uitv_type == "B") // scherm: Annuleren opdracht PAGE_START({id: "opdr-3-"+opdr_key }) - HEADER({title: L("lcl_mld_opdr_cancel_button")+" "+subject, back: false, nohome: true}); + HEADER({title: L("lcl_mld_opdr_cancel_button") + " " + subject, back: false, nohome: true}); CONTENT_START(); %>
<% @@ -781,7 +801,7 @@ if (mld_opdr.uitv_type == "B") // scherm: Afmelden opdracht PAGE_START({id: "opdr-4-" + opdr_key, dialog: true}) - HEADER({title: L("lcl_close") + " " + subject, back: false, nohome:true}); + HEADER({title: L("lcl_close") + " " + subject, back: false, nohome: true}); CONTENT_START(); var nu = new Date; %> @@ -828,6 +848,48 @@ if (mld_opdr.uitv_type == "B") BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} ); CONTROLGROUP_END(); // IFACE.FORM_END(); +%> + +<% + CONTENT_END(); + PAGE_END(); + + // scherm: Verplichte kenmerken invullen bij onderbreken opdracht. + PAGE_START({id: "opdr-5-" + opdr_key, dialog: true}) + HEADER({title: L("lcl_halt") + " " + subject, back: false, nohome: true}); + CONTENT_START(); +%> + <%