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",
"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
}
};

View File

@@ -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"),

View File

@@ -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)".
%>
<html>
@@ -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

View File

@@ -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()

View File

@@ -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]);
}
}

View File

@@ -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();
%>
<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_cancel"), {click: "opdr_cancel_action()", dataicon: "back"} );
CONTROLGROUP_END();
IFACE.FORM_END();
IFACE.FORM_END();
%>
</form>
<%
@@ -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();
%>
</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>
<%