ARAI#38184: Ondersteuning voor strikt sequentiele opdrachtuitvoering.

svn path=/Website/trunk/; revision=33458
This commit is contained in:
Maykel Geerdink
2017-04-11 13:18:17 +00:00
parent de51aa1d01
commit 15fd00ca9f
8 changed files with 103 additions and 11 deletions

View File

@@ -148,6 +148,11 @@ function model_mld_typeopdr()
"defaultvalue": "1",
"LOV": L("mld_typeopdr_slamodeLOV"),
"emptyoption": null
},
"sequential": {
"dbs": "mld_typeopdr_sequential",
"label": L("lcl_typeopdr_sequential"),
"typ": "check0"
}
};

View File

@@ -633,6 +633,57 @@ mld = {setmeldingstatus:
return uitvoertijd;
},
getactivehltopdracht:
function (popdr_key, mode)
{
// Is er een actieve opdracht of zijn er onderbroken opdrachten die sequentieel uigevoerd moeten worden.
var sql = "SELECT MAX(mld_opdr_key) mld_opdr_key"
+ " , MAX(sd.ins_srtdiscipline_prefix || o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr) opdracht"
+ " , COUNT(mld_opdr_key) aantalopdr"
+ " FROM mld_opdr o"
+ " , mld_melding m"
+ " , mld_stdmelding s"
+ " , mld_discipline md"
+ " , ins_srtdiscipline sd"
+ " , mld_typeopdr top"
+ " , mld_v_uitvoerende mu"
+ " WHERE o.mld_melding_key = m.mld_melding_key"
+ " AND m.mld_stdmelding_key = s.mld_stdmelding_key"
+ " AND s.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
+ " AND o.mld_typeopdr_key = top.mld_typeopdr_key"
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key"
+ " AND o.prs_perslid_key = (SELECT o2.prs_perslid_key FROM mld_opdr o2 WHERE o2.mld_opdr_key = " + popdr_key + ")"
+ " AND o.mld_statusopdr_key = 8" // Actief (Status Geaccepteerd(8))
+ " AND top.mld_typeopdr_sequential = 1" // Opdracht die sequentieel uitgevoerd moeten worden.
+ (mode == "A"
? " AND (fac.gettrackingdate('ORDHLT', o.mld_opdr_key) IS NULL" // Alleen geaccepteerde(8) en hervatte(82) opdrachten.
+ " OR (fac.gettrackingdate('ORDRSM', o.mld_opdr_key) IS NOT NULL AND"
+ " fac.gettrackingdate('ORDHLT', o.mld_opdr_key) < fac.gettrackingdate('ORDRSM', o.mld_opdr_key)))"
: " AND fac.gettrackingdate('ORDHLT', o.mld_opdr_key) IS NOT NULL"
+ " AND (fac.gettrackingdate('ORDRSM', o.mld_opdr_key) IS NULL OR fac.gettrackingdate('ORDHLT', o.mld_opdr_key) > fac.gettrackingdate('ORDRSM', o.mld_opdr_key))")
+ " AND mu.intern = 1" // Alleen interne uitvoerders
+ " AND mld_opdr_key != " + popdr_key;
var oRs = Oracle.Execute(sql);
var result = { opdr_key: oRs("mld_opdr_key").Value? oRs("mld_opdr_key").Value : -1,
opdracht: oRs("opdracht").Value? oRs("opdracht").Value : "",
aantal: oRs("aantalopdr").Value };
oRs.Close();
return result;
},
getactiveopdracht:
function (popdr_key)
{
return mld.getactivehltopdracht(popdr_key, "A"); // Mode "Actief"
},
gethltopdrachten:
function (popdr_key)
{
return mld.getactivehltopdracht(popdr_key, "H"); // Mode "Onderbroken" (Halted)
},
keepFlexDocuments:
function(mld_key, old_stdm, stdmelding)
{
@@ -1961,6 +2012,7 @@ mld = {setmeldingstatus:
+ " , mto.mld_typeopdr_contract"
+ " , mto.mld_typeopdr_afhandeling"
+ " , mto.mld_typeopdr_kosten_verplicht"
+ " , mto.mld_typeopdr_sequential"
+ " , o.prs_perslid_key mld_opdr_contact_key" // key van de interne contactpersoon
+ " , (SELECT p.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key = o.prs_perslid_key) mld_opdr_contact_naam"
+ " , o.prs_contactpersoon_key"
@@ -2094,6 +2146,7 @@ mld = {setmeldingstatus:
typeopdr_contract: oRs("mld_typeopdr_contract").Value, // Of bij deze opdracht een contract moet (3), kan (2) of niet kan (0) worden opgegeven
typeopdr_afhandeling: oRs("mld_typeopdr_afhandeling").Value, // Afhandeling verplicht bij afmelden opdracht van dit opdrachttype (0=Nee/1=Ja)
typeopdr_kosten_verplicht: oRs("mld_typeopdr_kosten_verplicht").Value || 0, // Opdracht kosten verplicht (bitwise) bij (0 = niet verplicht, 1 = save + 2 = afmelden, 4 = afronden).
typeopdr_sequential: oRs("mld_typeopdr_sequential").Value == 1,
contactpers_key: oRs("mld_opdr_contact_key").Value || -1,
contactpers_naam: oRs("mld_opdr_contact_naam").Value,
contactpersuitv_key: oRs("prs_contactpersoon_key").Value,

View File

@@ -193,8 +193,8 @@ sql = " SELECT 1"
oRs2 = Oracle.Execute(sql);
if (!oRs2.eof)
{
defemail_key = oRs2("defemail_key").Value
defemail_type = oRs2("defemail_type").Value
defemail_key = oRs2("defemail_key").Value;
defemail_type = oRs2("defemail_type").Value;
}
var subjectMail = L("lcl_shared_order") + " " + mld_opdr.mld_key + "/" + mld_opdr.volgnr;
var urlMail = "../shared/queuemail.asp?pcode=ORDMAI&defemail_key=" + defemail_key
@@ -206,6 +206,8 @@ var urlMail = "../shared/queuemail.asp?pcode=ORDMAI&defemail_key=" + defemail_ke
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))? 1 : 0) == 1;
var opdr_kosten = mld_opdr.t_cost;
// Als de opdrachten niet sequentieel uitgevoerd moeten worden, dan wordt er ook geen actieve opdracht gevonden.
var activeopdr = mld.getactiveopdracht(opdr_key);
%>
<html>
@@ -228,6 +230,8 @@ var opdr_kosten = mld_opdr.t_cost;
var kosten_verplicht_afr = <%=mld_opdr.typeopdr_matchtype != 4 && (mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4))? 1 : 0%> == 1;
var opdr_kosten = <%=safe.jsfloat(mld_opdr.t_cost)%>;
var refiat = <%=refiat? 1 : 0%> == 1;
var activeopdr_key = <%=activeopdr.opdr_key%>;
var activeopdracht = "<%=activeopdr.opdracht%>";
jQuery(document).ready(function()
{

View File

@@ -67,14 +67,16 @@ function opdr_setsend()
}
function opdr_accept()
{
FcltMgr.confirm(L("lcl_mld_opdr_accept_1") + prefix + mld_key + "/" + volgnr + L("lcl_mld_opdr_accept_2"), function() {
// Accepteren scherm
var data = {
opdr_key: opdr_key
};
protectRequest.dataToken(data);
$.post("opdr_accept.asp", data, FcltCallbackRefresh, "json");
});
var confirmtekst = (activeopdr_key > 0
? 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.
protectRequest.dataToken(data);
$.post("opdr_accept.asp", data, FcltCallbackRefresh, "json");
});
}
function opdr_reject()

View File

@@ -21,6 +21,7 @@ var JSON_Result = true;
<%
/***** Get webform parameters *****/
var opdr_key_arr = getFParamIntArray("opdr_key");
var hltactive = getFParamInt("hltactive", 0) == 1; // Onderbreek de actieve opdracht.
var result = { message: "", success: false };
var tobeaccepted = 0;
@@ -76,6 +77,14 @@ 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
if (hltactive)
{ // 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]);
// De actieve opdracht onderbreken.
shared.trackaction("ORDHLT", activeopdr.opdr_key);
}
}
// Geen message "De opdracht PXXX/Y is geaccepteerd" meer geven (AADS#20339)

View File

@@ -30,6 +30,8 @@ FCLTHeader.Requires({plugins: ["jQuery"],
css: ["timePicker-table.css"]});
var opdr_key_arr = getQParamIntArray("opdr_key");
// Als de opdrachten niet sequentieel uitgevoerd moeten worden, dan wordt er ook geen halted opdracht gevonden.
var hltopdr = mld.gethltopdrachten(opdr_key_arr[0]);
var reqStatusEmptyMelding = [];
var reqStatusEmptyOpdr = [];
var ingesloten = [];
@@ -276,6 +278,14 @@ oRs.Close();
</td></tr>
<%
}
if (hltopdr.aantal == 1)
{
%><tr><td colspan="2">
<% CHECKBOX("fldmldhlt", "mld_hlt"); %>
<label for="mld_hlt"><%=L("lcl_mld_opdr_cont").format(hltopdr.opdracht)%></label>
</td></tr>
<%
}
BLOCK_END();
%><input type='hidden' name='orgdate' value='<%=nu.getTime()%>'><%
var buttons = [ {title: L("lcl_close"), icon: "accept.png", action: "mld_close()", singlepress: true, id: "btn_close_submit" },

View File

@@ -58,6 +58,7 @@ function writeOpdrOpmToMld()
}
var opdr_key_arr = getQParamIntArray("opdr_key");
var mld_hlt = (Request.Form("mld_hlt").count == 1);
var result = {};
var ingesloten = [];
var reqStatusEmptyMelding = [];
@@ -263,6 +264,14 @@ for (var i = 0; i < ingesloten.length; i++)
// Zijn er bijbehorende facturen die al zijn ingevoerd met de status "Ingevoerd(2)" die nog geapproved moeten worden?
mld.autoapprovefactuur(ingesloten[i]);
if (mld_hlt)
{ // Er is 1 onderbroken opdracht die hervat moet worden. Dit doen we door een "ORDRSM" tracking op de opdracht te doen.
// Haal de onderbroken opdracht weer op.
var hltopdr = mld.gethltopdrachten(opdr_key_arr[0]);
// De onderbroken opdracht weer hervatten.
shared.trackaction("ORDRSM", hltopdr.opdr_key);
}
}
result.success = true;

View File

@@ -173,7 +173,7 @@ else
function opdr_accept()
{
var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
if (confirm(L("lcl_mld_opdr_accept_1") + opdr_nr + L("lcl_mld_opdr_accept_2")))
if (confirm(L("lcl_mld_opdr_accept").format(opdr_nr)))
{
var data = { opdr_key: <%=opdr_key%>
};