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()
|
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()
|
function opdr_cancel()
|
||||||
{
|
{
|
||||||
var url = "../mld/opdr_cancel_confirm.asp?opdr_key=" + opdr_key + "&dorefresh=1";
|
var url = "../mld/opdr_cancel_confirm.asp?opdr_key=" + opdr_key + "&dorefresh=1";
|
||||||
FcltMgr.openModalDetail(url, L("lcl_mld_opdr_cancel"),
|
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();
|
protectRequest.validateToken();
|
||||||
user.auth_required_or_abort(opdr_key > 0); // Hebben we een opdracht key gekregen?
|
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
|
// Controleren of ik deze opdracht mag annuleren
|
||||||
var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
|
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
|
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 result = { opdr_key: opdr_key, message: "", success: false};
|
||||||
|
var reqStatusEmptyMelding = [];
|
||||||
|
|
||||||
var mld_opdr = this_opdr.mld_opdr;
|
var mld_opdr = this_opdr.mld_opdr;
|
||||||
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
|
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).
|
// Zetten van de status en afhandelen van de tracking van het annuleren (cancel).
|
||||||
mld.setopdrachtstatus(opdr_key, 1); // Verworpen
|
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);
|
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;
|
result.success = true;
|
||||||
|
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
|||||||
sql = "SELECT COUNT(*) aantal"
|
sql = "SELECT COUNT(*) aantal"
|
||||||
+ " FROM mld_opdr o1"
|
+ " FROM mld_opdr o1"
|
||||||
+ " WHERE o1.mld_melding_key = " + mld_opdr.mld_key
|
+ " 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);
|
oRs = Oracle.Execute(sql);
|
||||||
var nn = oRs("aantal").Value;
|
var nn = oRs("aantal").Value;
|
||||||
oRs.Close();
|
oRs.Close();
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ var result = {};
|
|||||||
var toberejected = 0;
|
var toberejected = 0;
|
||||||
var ingesloten = [];
|
var ingesloten = [];
|
||||||
var opdr_type;
|
var opdr_type;
|
||||||
|
var vraag_sluitmelding = false;
|
||||||
// Bepaal de opdrachten in de selectie die
|
// Bepaal de opdrachten in de selectie die
|
||||||
// ook echt afgewezen kunnen of mogen worden.
|
// ook echt afgewezen kunnen of mogen worden.
|
||||||
for (var i = 0; i < opdr_key_arr.length; i++)
|
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;
|
var mld_key = oRs("mld_melding_key").value;
|
||||||
oRs.Close();
|
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
|
user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel en enkele niet
|
||||||
%>
|
%>
|
||||||
<html>
|
<html>
|
||||||
@@ -141,6 +143,15 @@ user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel
|
|||||||
L("lcl_mld_inf_opmerking_fiat"),
|
L("lcl_mld_inf_opmerking_fiat"),
|
||||||
(ingesloten.length == 1? opdr_opmr : ""),
|
(ingesloten.length == 1? opdr_opmr : ""),
|
||||||
{html: "rows='8'"});
|
{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();
|
BLOCK_END();
|
||||||
var buttons = [ {title: L("lcl_reject"), icon: "opslaan.png", action: "mld_reject()", singlepress: true, id: "btn_reject_submit" },
|
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()" }];
|
{title: L("lcl_cancel"), icon: "undo.png", action: "mld_cancel()" }];
|
||||||
|
|||||||
@@ -25,10 +25,46 @@ if (opdr_key_arr.length)
|
|||||||
<%
|
<%
|
||||||
protectRequest.validateToken();
|
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 opmerk = getFParam("opmerk", "");
|
||||||
var result = {};
|
var result = {};
|
||||||
var toberejected = 0;
|
var toberejected = 0;
|
||||||
var ingesloten = [];
|
var ingesloten = [];
|
||||||
|
var reqStatusEmptyMelding = [];
|
||||||
|
|
||||||
for (var i = 0; i < opdr_key_arr.length; i++)
|
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);
|
Oracle.Execute(sql);
|
||||||
}
|
}
|
||||||
// De status van de melding zou gewijzigd kunnen moeten worden hierdoor
|
// 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);
|
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;
|
result.success = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user