DJIN#53402 DV&O: Melding blijft openstaan na afwijzen opdracht
svn path=/Website/trunk/; revision=38962
This commit is contained in:
@@ -80,14 +80,14 @@ function opdr_accept()
|
||||
|
||||
function opdr_reject()
|
||||
{
|
||||
FcltMgr.openModalDetail("../mld/opdr_reject.asp?opdr_key=" + opdr_key + "&urole=" + urole, L("lcl_mld_reject"), { callback: FcltMgr.reload });
|
||||
FcltMgr.openModalDetail("../mld/opdr_reject.asp?opdr_key=" + opdr_key + "&urole=" + urole, L("lcl_mld_reject"), { callback: opdrCloseCallback });
|
||||
}
|
||||
|
||||
function opdr_cancel()
|
||||
{
|
||||
var url = "../mld/opdr_cancel_confirm.asp?opdr_key=" + opdr_key + "&dorefresh=1";
|
||||
FcltMgr.openModalDetail(url, L("lcl_mld_opdr_cancel"),
|
||||
{ callback: FcltCallbackRefresh
|
||||
{ callback: opdrCloseCallback
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,20 @@ var LOCKED_USER_OK = { "xmlnode": "opdracht", "key": opdr_key };
|
||||
protectRequest.validateToken();
|
||||
user.auth_required_or_abort(opdr_key > 0); // Hebben we een opdracht key gekregen?
|
||||
|
||||
function writeOpdrOpmToMld()
|
||||
{ // Afhandelingtekst van de opdracht automatisch kopi<70>ren naar de melding.
|
||||
var sql = "SELECT mld_melding_opmerking"
|
||||
+ " FROM mld_melding"
|
||||
+ " WHERE mld_melding_key = " + mld_opdr.mld_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var new_opm = (oRs("mld_melding_opmerking").Value || "") + "\n" + L("lcl_mld_final_remark") + ":\n" + opdr_opm;
|
||||
var fields = [ { dbs: "mld_melding_opmerking", typ: "varchar", val: new_opm, track: L("lcl_mld_inf_Opmerking"), len: 4000 } ];
|
||||
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + mld_opdr.mld_key, fields);
|
||||
oRs = Oracle.Execute(mldUpd.sql);
|
||||
if (mldUpd.trackarray.length)
|
||||
mld.trackmeldingupdate(mld_opdr.mld_key, L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
|
||||
}
|
||||
|
||||
// Controleren of ik deze opdracht mag annuleren
|
||||
var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
|
||||
|
||||
@@ -34,6 +48,7 @@ var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze
|
||||
user.auth_required_or_abort(this_opdr.canCancel, L("lcl_shared_no_auth")); // Mag ik deze opdracht annuleren
|
||||
|
||||
var result = { opdr_key: opdr_key, message: "", success: false};
|
||||
var reqStatusEmptyMelding = [];
|
||||
|
||||
var mld_opdr = this_opdr.mld_opdr;
|
||||
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
|
||||
@@ -89,7 +104,42 @@ if (flextrack.length)
|
||||
|
||||
// Zetten van de status en afhandelen van de tracking van het annuleren (cancel).
|
||||
mld.setopdrachtstatus(opdr_key, 1); // Verworpen
|
||||
var sluitmelding = mld_opdr.typeopdr_sluitmelding;
|
||||
result.mld_key = mld_opdr.mld_key;
|
||||
mld.updatemeldingstatus(mld_opdr.mld_key, 0);
|
||||
if (sluitmelding > 0 && mld_opdr.typeopdr_isofferte == 0) // misschien melding nu ook? Bij offertes melding nooit automatisch afmelden of de vraag weergeven
|
||||
{ // Zijn er niet-afgemelde opdrachten bij dezelfde melding?
|
||||
sql = "SELECT COUNT(*) aantal"
|
||||
+ " FROM mld_opdr o1"
|
||||
+ " WHERE o1.mld_melding_key = " + mld_opdr.mld_key
|
||||
+ " AND o1.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)";
|
||||
oRs = Oracle.Execute(sql);
|
||||
var nn = oRs("aantal").Value;
|
||||
oRs.Close();
|
||||
if (nn == 0) // Het was de laatste opdracht van de melding die nog niet afgemeld is
|
||||
{
|
||||
reqStatusEmptyMelding = mld.getReqStatusEmptyMelding(reqStatusEmptyMelding, mld_opdr.mld_key, 1); // Melding status "Afgewezen(1)"
|
||||
if (reqStatusEmptyMelding.length == 0) // Alle verplichte kenmerken en/of verplicht object zijn ingevuld.
|
||||
{
|
||||
// Mag ik dan ook de melding afmelden?
|
||||
var this_mld = mld.func_enabled_melding(mld_opdr.mld_key);
|
||||
result.canCloseMld = this_mld.canClose; // ondervangt ook de situatie dat hij al is afgemeld.
|
||||
if (result.canCloseMld && (sluitmelding == 2)) // Autoclose mld
|
||||
{
|
||||
writeOpdrOpmToMld();
|
||||
// Handle workflow actions for completion:
|
||||
mld.nextworkflowstep(mld_opdr.mld_key, 1); // 1 = completed
|
||||
mld.setmeldingstatus(mld_opdr.mld_key, 5);
|
||||
result.canCloseMld = false; // want hij is net afgemeld.
|
||||
}
|
||||
else if (!result.canCloseMld && S("mld_add_mldopmerk_on_opdrclose") == 1 && opdr_opm != "")
|
||||
{ // Afhandelingtekst van de opdracht automatisch kopi<70>ren naar de melding.
|
||||
writeOpdrOpmToMld();
|
||||
}
|
||||
}
|
||||
// else: Als result.canCloseMld == true dan is sluitmelding == 1 en dan wordt alsnog de vraag gesteld of melding ook moet worden gesloten via callback functie
|
||||
}
|
||||
}
|
||||
|
||||
result.success = true;
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
sql = "SELECT COUNT(*) aantal"
|
||||
+ " FROM mld_opdr o1"
|
||||
+ " WHERE o1.mld_melding_key = " + mld_opdr.mld_key
|
||||
+ " AND o1.mld_statusopdr_key NOT IN (1, 6, 7, 9)";
|
||||
+ " AND o1.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)";
|
||||
oRs = Oracle.Execute(sql);
|
||||
var nn = oRs("aantal").Value;
|
||||
oRs.Close();
|
||||
|
||||
@@ -29,6 +29,7 @@ var result = {};
|
||||
var toberejected = 0;
|
||||
var ingesloten = [];
|
||||
var opdr_type;
|
||||
var vraag_sluitmelding = false;
|
||||
// Bepaal de opdrachten in de selectie die
|
||||
// ook echt afgewezen kunnen of mogen worden.
|
||||
for (var i = 0; i < opdr_key_arr.length; i++)
|
||||
@@ -47,6 +48,7 @@ for (var i = 0; i < opdr_key_arr.length; i++)
|
||||
var mld_key = oRs("mld_melding_key").value;
|
||||
oRs.Close();
|
||||
}
|
||||
vraag_sluitmelding = (ingesloten.length > 1) ; // Bij meerdere opdrachten sluiten vragen we of de meldingen ook meemoeten
|
||||
user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel en enkele niet
|
||||
%>
|
||||
<html>
|
||||
@@ -141,6 +143,15 @@ user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel
|
||||
L("lcl_mld_inf_opmerking_fiat"),
|
||||
(ingesloten.length == 1? opdr_opmr : ""),
|
||||
{html: "rows='8'"});
|
||||
|
||||
if (vraag_sluitmelding)
|
||||
{
|
||||
%><tr><td colspan="2">
|
||||
<% CHECKBOX("fldmldclose", "mld_close"); %>
|
||||
<label for="mld_close"><%=L("lcl_mld_mld_close_try")%></label>
|
||||
</td></tr>
|
||||
<%
|
||||
}
|
||||
BLOCK_END();
|
||||
var buttons = [ {title: L("lcl_reject"), icon: "opslaan.png", action: "mld_reject()", singlepress: true, id: "btn_reject_submit" },
|
||||
{title: L("lcl_cancel"), icon: "undo.png", action: "mld_cancel()" }];
|
||||
|
||||
@@ -25,10 +25,46 @@ if (opdr_key_arr.length)
|
||||
<%
|
||||
protectRequest.validateToken();
|
||||
|
||||
function mldClose(sluitmelding, ingesloten)
|
||||
{
|
||||
if (sluitmelding == 1)
|
||||
{
|
||||
var mld_close = (Request.Form("mld_close").count == 1); // Die ook?
|
||||
var ismobile = getFParamInt("ismobile", 0) == 1; // Meld ik de opdracht met mijn mobile af?
|
||||
|
||||
if (ismobile)
|
||||
sluitmelding = 2; // // Via mobile afmelden nooit vragen maar gewoon melding afmelden (FSN#26329).
|
||||
|
||||
if (ingesloten.length > 1) // Vraag is al geweest
|
||||
{
|
||||
if (mld_close)
|
||||
sluitmelding = 2; // yepe
|
||||
else
|
||||
sluitmelding = 0; // nope
|
||||
}
|
||||
}
|
||||
return sluitmelding;
|
||||
}
|
||||
|
||||
function writeOpdrOpmToMld()
|
||||
{ // Afhandelingtekst van de opdracht automatisch kopi<70>ren naar de melding.
|
||||
var sql = "SELECT mld_melding_opmerking"
|
||||
+ " FROM mld_melding"
|
||||
+ " WHERE mld_melding_key = " + mld_opdr.mld_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var new_opm = (oRs("mld_melding_opmerking").Value || "") + "\n" + L("lcl_mld_final_remark") + ":\n" + opdr_opm;
|
||||
var fields = [ { dbs: "mld_melding_opmerking", typ: "varchar", val: new_opm, track: L("lcl_mld_inf_Opmerking"), len: 4000 } ];
|
||||
var mldUpd = buildTrackingUpdate("mld_melding", " mld_melding_key = " + mld_opdr.mld_key, fields);
|
||||
oRs = Oracle.Execute(mldUpd.sql);
|
||||
if (mldUpd.trackarray.length)
|
||||
mld.trackmeldingupdate(mld_opdr.mld_key, L("lcl_mld_is_mldupd") + "\n" + mldUpd.trackarray.join("\n"));
|
||||
}
|
||||
|
||||
var opmerk = getFParam("opmerk", "");
|
||||
var result = {};
|
||||
var toberejected = 0;
|
||||
var ingesloten = [];
|
||||
var reqStatusEmptyMelding = [];
|
||||
|
||||
for (var i = 0; i < opdr_key_arr.length; i++)
|
||||
{
|
||||
@@ -121,7 +157,42 @@ var result = { opdr_key: ingesloten.join(","), message: "", success: false };
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
// De status van de melding zou gewijzigd kunnen moeten worden hierdoor
|
||||
var sluitmelding = mldClose(mld_opdr.typeopdr_sluitmelding, ingesloten);
|
||||
result.mld_key = mld_opdr.mld_key;
|
||||
mld.updatemeldingstatus(mld_opdr.mld_key, 0);
|
||||
if (sluitmelding > 0 && mld_opdr.typeopdr_isofferte == 0) // misschien melding nu ook? Bij offertes melding nooit automatisch afmelden of de vraag weergeven
|
||||
{ // Zijn er niet-afgemelde opdrachten bij dezelfde melding?
|
||||
sql = "SELECT COUNT(*) aantal"
|
||||
+ " FROM mld_opdr o1"
|
||||
+ " WHERE o1.mld_melding_key = " + mld_opdr.mld_key
|
||||
+ " AND o1.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)";
|
||||
oRs = Oracle.Execute(sql);
|
||||
var nn = oRs("aantal").Value;
|
||||
oRs.Close();
|
||||
if (nn == 0) // Het was de laatste opdracht van de melding die nog niet afgemeld is
|
||||
{
|
||||
reqStatusEmptyMelding = mld.getReqStatusEmptyMelding(reqStatusEmptyMelding, mld_opdr.mld_key, 1); // Melding status "Afgewezen(1)"
|
||||
if (reqStatusEmptyMelding.length == 0) // Alle verplichte kenmerken en/of verplicht object zijn ingevuld.
|
||||
{
|
||||
// Mag ik dan ook de melding afmelden?
|
||||
var this_mld = mld.func_enabled_melding(mld_opdr.mld_key);
|
||||
result.canCloseMld = this_mld.canClose; // ondervangt ook de situatie dat hij al is afgemeld.
|
||||
if (result.canCloseMld && (sluitmelding == 2)) // Autoclose mld
|
||||
{
|
||||
writeOpdrOpmToMld();
|
||||
// Handle workflow actions for completion:
|
||||
mld.nextworkflowstep(mld_opdr.mld_key, 1); // 1 = completed
|
||||
mld.setmeldingstatus(mld_opdr.mld_key, 5);
|
||||
result.canCloseMld = false; // want hij is net afgemeld.
|
||||
}
|
||||
else if (!result.canCloseMld && S("mld_add_mldopmerk_on_opdrclose") == 1 && opdr_opm != "")
|
||||
{ // Afhandelingtekst van de opdracht automatisch kopi<70>ren naar de melding.
|
||||
writeOpdrOpmToMld();
|
||||
}
|
||||
}
|
||||
// else: Als result.canCloseMld == true dan is sluitmelding == 1 en dan wordt alsnog de vraag gesteld of melding ook moet worden gesloten via callback functie
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result.success = true;
|
||||
|
||||
Reference in New Issue
Block a user