MARX#56769: Verfijning start & stop bij mld_opdr: stop voor start en stop op stop lukt niet.

svn path=/Website/branches/v2019.1/; revision=41672
This commit is contained in:
Maykel Geerdink
2019-03-19 13:37:56 +00:00
parent 97efd1a90f
commit 8a41d028a5
2 changed files with 26 additions and 5 deletions

View File

@@ -630,13 +630,34 @@ for (i=0; i < opdrachten.length; i++)
resulttekst = "Not authorized for ORDRSM";
else if (!this_opdr.canOnderbreken && halt && !mld_opdr.halted)
resulttekst = "Not authorized for ORDHLT";
else
resultcode = -1; // hij was al halted of resumed, niet erg dus
else if (mld_opdr.opdr_status == 8) // Een halt of resume is alleen mogelijk in de opdrachtstatus Geaccepteerd(8).
{ // De opdracht was al halted of resume.
// Als er nog geen "ORDHLT" of "ORDRSM" tracking aanwezig was, dan moet deze tracking nu wel worden toegevoegd.
// Dit moet in de functie opdr_hltrsm worden geforceerd, anders doet de functie dat niet.
var forcetracking = false;
var sql = "SELECT COUNT(*) aantal"
+ " FROM fac_tracking t"
+ " , fac_srtnotificatie sn"
+ " WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key"
+ " AND t.fac_tracking_refkey = " + opdr_key
+ " AND sn.fac_srtnotificatie_xmlnode = 'opdracht'"
+ " AND sn.fac_srtnotificatie_code IN ('ORDHLT', 'ORDRSM')";
oRs = Oracle.Execute(sql);
if (oRs("aantal").Value == 0)
forcetracking = true;
if (((halt && mld_opdr.halted) || (resume && !mld_opdr.halted)) && forcetracking)
// De status staat al op halted of resume maar er is nog geen "ORDHLT" of "ORDRSM" tracking aanwezig.
// Dan deze tracking alsnog aanmaken m.b.v. de functie opdr_hltrsm.
// De functie zorgt ook voor het leegmaken van verplichte onderbreek kenmerken bij het hervatten.
mld.opdr_hltrsm(opdr_key, { halt: halt, resume: resume, forcetracking: true }); // Zorgt voor het zetten van de mld_opdr.mld_opdr_halted waarde en het tracken van "ORDHLT" of "ORDRSM".
resultcode = -1; // Hij was al halted of resumed, niet erg dus.
}
}
if (S("mld_use_plandate2") & 2)
{
var latest_pld = new_plandatum || mld_opdr.mld_opdr_plandatum;
var latest_pld = new_plandatum || mld_opdr.mld_opdr_plandatum;
var latest_pl2 = new_plandatum2 || mld_opdr.mld_opdr_plandatum2;
if (latest_pld != null && latest_pl2 != null // We have a plan-start-date and a plan-end-date
&& (new_plandatum || new_plandatum2) // and at least 1 of them is new

View File

@@ -245,12 +245,12 @@ mld = {
var halted = oRs("mld_opdr_halted").Value == 1;
oRs.Close();
if (params.halt && !halted)
if (params.halt && (!halted || params.forcetracking))
{
Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 1 WHERE mld_opdr_key = " + opdr_key);
shared.trackaction("ORDHLT", opdr_key);
}
if (params.resume && halted)
if (params.resume && (halted || params.forcetracking))
{
Oracle.Execute("UPDATE mld_opdr SET mld_opdr_halted = 0 WHERE mld_opdr_key = " + opdr_key);
shared.trackaction("ORDRSM", opdr_key);