MARX#53147: Opdrachten in status Halt laten beginnen om expliciet later te starten.

svn path=/Website/trunk/; revision=38908
This commit is contained in:
Maykel Geerdink
2018-08-22 09:19:58 +00:00
parent 4616728ed1
commit 1555569839
6 changed files with 156 additions and 43 deletions

View File

@@ -165,10 +165,36 @@ function model_mld_typeopdr()
"dbs": "mld_typeopdr_sequential", "dbs": "mld_typeopdr_sequential",
"label": L("lcl_typeopdr_sequential"), "label": L("lcl_typeopdr_sequential"),
"typ": "number", "typ": "number",
"defaultvalue": "0", "multiedit": true,
"LOV": L("mld_typeopdr_seqmodeLOV"), "bits": [
"emptyoption": null, {
"multiedit": true "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
} }
}; };

View File

@@ -1105,7 +1105,7 @@ oRs.Close();
opdr_status: mld_opdr.opdr_status, opdr_status: mld_opdr.opdr_status,
mld_key: mld_key, mld_key: mld_key,
stdm_arr: [], 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, copy: copy,
reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)), reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)),
flexcolumns: S("mld_flexcolumns"), flexcolumns: S("mld_flexcolumns"),

View File

@@ -215,6 +215,10 @@ if (mld_opdr.contactpers_key < 0)
var activeopdr = mld.getactiveopdracht(opdr_key, user_key, mld_opdr.uitvoerende_key); var activeopdr = mld.getactiveopdracht(opdr_key, user_key, mld_opdr.uitvoerende_key);
else else
var activeopdr = mld.getactiveopdracht(opdr_key); 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)".
%> %>
<html> <html>
@@ -240,6 +244,9 @@ else
var refiat = <%=refiat? 1 : 0%> == 1; var refiat = <%=refiat? 1 : 0%> == 1;
var activeopdr_key = <%=activeopdr.opdr_key%>; var activeopdr_key = <%=activeopdr.opdr_key%>;
var activeopdracht = "<%=activeopdr.opdracht%>"; 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() $(function()
{ {
@@ -650,7 +657,7 @@ else
opdr_type: mld_opdr.opdr_type, opdr_type: mld_opdr.opdr_type,
opdr_type_org: opdr_type_org, opdr_type_org: opdr_type_org,
opdr_status: mld_opdr.opdr_status, 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, reado: true,
flexcolumns: S("mld_flexcolumns"), flexcolumns: S("mld_flexcolumns"),
showConfidential : this_opdr.canViewConfidential showConfidential : this_opdr.canViewConfidential

View File

@@ -67,13 +67,12 @@ function opdr_setsend()
} }
function opdr_accept() 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_hlt").format(prefix + mld_key + "/" + volgnr, activeopdracht)
: L("lcl_mld_opdr_accept").format(prefix + mld_key + "/" + volgnr)); : L("lcl_mld_opdr_accept").format(prefix + mld_key + "/" + volgnr));
FcltMgr.confirm(confirmtekst, FcltMgr.confirm(confirmtekst,
function() { // Accepteren scherm function() { // Accepteren scherm
var data = { opdr_key: opdr_key, var data = { opdr_key: opdr_key };
hltactive: activeopdr_key > 0? 1 : 0 }; // Onderbreek de actieve opdracht.
protectRequest.dataToken(data); protectRequest.dataToken(data);
$.post("opdr_accept.asp", data, FcltCallbackRefresh, "json"); $.post("opdr_accept.asp", data, FcltCallbackRefresh, "json");
}); });
@@ -188,14 +187,26 @@ function mld_melding_materiaal()
function opdr_onderbreken() function opdr_onderbreken()
{ {
FcltMgr.confirm(L("lcl_mld_opdr_hlt").format(prefix + mld_key + "/" + volgnr), if (hasKenmerkOnderbreken)
function() {
{ var url = "../mld/opdr_halt_confirm.asp?opdr_key=" + opdr_key;
var data = { opdr_key: opdr_key, FcltMgr.openModalDetail(url,
hlt: 1 }; L("lcl_halt"),
protectRequest.dataToken(data); { callback: FcltCallbackRefresh }
$.post("opdr_hltrsm.asp", data, FcltCallbackRefresh, "json"); );
}); }
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() function opdr_hervatten()

View File

@@ -24,8 +24,6 @@ if (opdr_key_arr.length)
<% <%
/***** Get webform parameters *****/ /***** Get webform parameters *****/
var hltactive = getFParamInt("hltactive", 0) == 1; // Onderbreek de actieve opdracht.
var result = { message: "", success: false }; var result = { message: "", success: false };
var tobeaccepted = 0; var tobeaccepted = 0;
var ingesloten = []; var ingesloten = [];
@@ -47,6 +45,7 @@ for (var i = 0; i < ingesloten.length; i++)
{ {
// Blijkbaar mogen we Accepteren // Blijkbaar mogen we Accepteren
var mld_opdr = mld.mld_opdr_info(ingesloten[i]); 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. // 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 fields = [];
var prs_filled = false; // Beheerder is leeg en wordt gevuld met de accepteerder. 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). // Zetten van de status en afhandelen van de tracking van het fiatteren (approve).
mld.setopdrachtstatus(ingesloten[i], 8); // Geaccepteerd mld.setopdrachtstatus(ingesloten[i], 8); // Geaccepteerd
// De actieve opdracht onderbreken. // Ik kan hier zelf bepalen of de actieve opdracht onderbroken moet worden (hltactive).
if (hltactive || prs_filled) // Als de opdrachten niet sequentieel uitgevoerd moeten worden, dan wordt er ook geen actieve opdracht gevonden.
{ // Er is 1 actieve opdracht die onderbroken moet worden. Dit doen we door een "ORDHLT" tracking op de opdracht te doen. if (mld_opdr.contactpers_key < 0)
// Haal de actieve opdracht weer op. var activeopdr = mld.getactiveopdracht(ingesloten[i], user_key, mld_opdr.uitvoerende_key); // Haal de actieve opdracht op.
var activeopdr = mld.getactiveopdracht(ingesloten[i]); else
// Voor hltactive is er 1 active opdracht aanwezig maar voor prs_filled weet ik dat nog niet. Daarom activeopdr.opdr_key testen. var activeopdr = mld.getactiveopdracht(ingesloten[i]); // Haal de actieve opdracht op.
if (activeopdr.opdr_key > 0) var activeopdr_key = activeopdr.opdr_key;
{ var activeopdracht = activeopdr.opdracht;
shared.trackaction("ORDHLT", activeopdr.opdr_key); var hltactive = (activeopdr_key > 0);
Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 1 WHERE mld_opdr_key = " + activeopdr.opdr_key);
} 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]);
} }
} }

View File

@@ -31,10 +31,17 @@ FCLTHeader.Requires({ plugins: ["suggest"]
var mld_key = getQParamInt("mld_key", -1); var mld_key = getQParamInt("mld_key", -1);
var copy = false; 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. // 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 activeopdr = mld.getactiveopdracht(opdr_key);
var hltopdr = mld.gethltopdrachten(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 // Mogelijke parameters voor toevoegen only
if (opdr_key == -1) if (opdr_key == -1)
{ {
@@ -46,10 +53,8 @@ if (opdr_key == -1)
Server.Transfer("order_new.asp"); // Ga eerst opdrachttype kiezen 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 }); 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)); : L("lcl_mld_opdr_accept").format(opdr_nr));
if (confirm(confirmtekst)) if (confirm(confirmtekst))
{ {
var data = { opdr_key: <%=opdr_key%>, var data = { opdr_key: <%=opdr_key%> };
hltactive: activeopdr_key > 0? 1 : 0 }; // Onderbreek de actieve opdracht.
<% protectRequest.dataToken("data"); %> <% protectRequest.dataToken("data"); %>
$.post( "<%=rooturl%>/appl/mld/opdr_accept.asp", $.post( "<%=rooturl%>/appl/mld/opdr_accept.asp",
data, data,
@@ -274,7 +278,18 @@ if (mld_opdr.uitv_type == "B")
window.history.go(-1); 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%>"; 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))) 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%>"; 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))) 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, opdr_status: mld_opdr.opdr_status,
mld_key: mld_key, mld_key: mld_key,
stdm_arr: [], 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, mobile: true,
reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)), reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex)),
showConfidential : this_opdr.canViewConfidential showConfidential : this_opdr.canViewConfidential
@@ -710,10 +725,15 @@ if (mld_opdr.uitv_type == "B")
// Onderbreken. // Onderbreken.
if (this_opdr.canOnderbreken) 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. // Hervatten.
if (this_opdr.canHervatten) 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) if (this_opdr.canClose)
{ // Afmelden { // Afmelden
@@ -762,7 +782,7 @@ if (mld_opdr.uitv_type == "B")
// scherm: Annuleren opdracht // scherm: Annuleren opdracht
PAGE_START({id: "opdr-3-"+opdr_key }) 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(); CONTENT_START();
%> %>
<form id="cancelform" name="cancelform" action="<%=rooturl%>/appl/mld/opdr_cancel_save.asp?opdr_key=<%=opdr_key%>" method="post"> <form id="cancelform" name="cancelform" action="<%=rooturl%>/appl/mld/opdr_cancel_save.asp?opdr_key=<%=opdr_key%>" method="post">
@@ -772,7 +792,7 @@ if (mld_opdr.uitv_type == "B")
BUTTON(L("lcl_submit"), {click: "opdr_cancel_submit()", dataicon: "refresh"}); BUTTON(L("lcl_submit"), {click: "opdr_cancel_submit()", dataicon: "refresh"});
BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} ); BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} );
CONTROLGROUP_END(); CONTROLGROUP_END();
IFACE.FORM_END(); IFACE.FORM_END();
%> %>
</form> </form>
<% <%
@@ -781,7 +801,7 @@ if (mld_opdr.uitv_type == "B")
// scherm: Afmelden opdracht // scherm: Afmelden opdracht
PAGE_START({id: "opdr-4-" + opdr_key, dialog: true}) 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(); CONTENT_START();
var nu = new Date; var nu = new Date;
%> %>
@@ -828,6 +848,48 @@ if (mld_opdr.uitv_type == "B")
BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} ); BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} );
CONTROLGROUP_END(); CONTROLGROUP_END();
// IFACE.FORM_END(); // IFACE.FORM_END();
%>
</form>
<%
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();
%>
<form id="haltform" name="haltform" action="<%=rooturl%>/appl/mld/opdr_halt_save.asp?opdr_key=<%=opdr_key%>" method="post">
<%
//var mld_opdr = mld.mld_opdr_info(opdr_key);
var ttl = L("lcl_mld_opdr_number") + " " + (mld_opdr.srtdiscprefix||"") + mld_opdr.mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr;
BLOCK_START("mldhalt", ttl);
if (this_opdr.canEditOpdrNote)
RWFIELD("opdr_note", L("lcl_mld_note"), "", {multi: true, suppressEmpty: true});
BLOCK_END();
// De verplichte onderbreek (halt) kenmerken tonen bij het onderbreken. Vooralsnog worden de andere verplichte kenmerken niet getoond.
generateFlexKenmerkBlock({ opdr_key: opdr_key,
opdr_type: mld_opdr.opdr_type,
opdr_type_org: mld_opdr.opdr_type,
opdr_status: mld_opdr.opdr_status,
mld_key: mld_opdr.mld_key,
stdm_arr: [mld_opdr.stdm_key], // Stdmelding
halt: true,
act_key: -1,
mobile: true,
reado: (!(this_opdr.canFlexChange || this_opdr.canChangeARFlex)? "1" : null),
onlyverplicht: true,
prs_key: user_key, // Perslid key, wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
showConfidential: this_opdr.canViewConfidential
});
CONTROLGROUP_START();
BUTTON(L("lcl_submit"), {click: "opdr_halt_submit()", dataicon: "refresh"});
BUTTON(L("lcl_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} );
CONTROLGROUP_END();
IFACE.FORM_END();
%> %>
</form> </form>
<% <%