FSN#26171: Verplicht bij afmelden lijkt fout geimplementeerd bij Opdrachten.

svn path=/Website/trunk/; revision=24908
This commit is contained in:
Maykel Geerdink
2015-04-20 13:39:00 +00:00
parent bbe831660e
commit 032bff3fb3
9 changed files with 160 additions and 66 deletions

View File

@@ -366,7 +366,7 @@ model_issues =
var futureOpdr = false;
// Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key, 5);
var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key, 5); // Melding status "Afgemeld(5)"
if (kvsAfwezig.length)
{
var mldnr = mld.mld_prefix(mld_key) + mld_key;

View File

@@ -3464,41 +3464,37 @@ mld = {setmeldingstatus:
return "";
},
hasRequiredStatusEmpty: function(mld_key, status)
hasRequiredStatusEmptyMelding: function(mld_key, status)
{
var sql = "SELECT *"
+ " FROM (SELECT MK.*"
+ " , (SELECT KM.mld_kenmerkmelding_waarde"
+ " FROM mld_kenmerkmelding KM"
+ " WHERE KM.mld_kenmerk_key = MK.mld_kenmerk_key"
+ " AND KM.mld_melding_key = MK.mld_melding_key) waarde"
+ " FROM (SELECT M.mld_melding_key"
+ " , S.mld_stdmelding_key"
+ " , D.ins_discipline_key"
+ " , K.mld_kenmerk_key"
+ " , V.mld_srtkenmerk_key"
+ " , V.mld_srtkenmerk_omschrijving"
+ " , K.mld_kenmerk_verplicht_status"
+ " , K.mld_kenmerk_niveau"
+ " FROM mld_kenmerk K"
+ " , mld_melding M"
+ " , mld_stdmelding S"
+ " , mld_discipline D"
+ " , mld_srtkenmerk V"
+ " WHERE K.mld_srtkenmerk_key = V.mld_srtkenmerk_key"
+ " AND S.mld_stdmelding_key = M.mld_stdmelding_key"
+ " AND S.mld_ins_discipline_key = D.ins_discipline_key"
+ " AND ((K.mld_stdmelding_key = S.mld_stdmelding_key AND K.mld_kenmerk_niveau = 'S')"
+ " OR (K.mld_stdmelding_key = S.mld_ins_discipline_key AND K.mld_kenmerk_niveau = 'D')"
+ " OR (K.mld_stdmelding_key = D.ins_srtdiscipline_key AND K.mld_kenmerk_niveau = 'T'))"
+ " AND V.mld_srtkenmerk_kenmerktype <> 'M'"
+ " AND V.mld_srtkenmerk_verwijder IS NULL"
+ " AND K.mld_kenmerk_verwijder IS NULL"
+ " ) MK"
+ " ) MKW"
+ " WHERE MKW.mld_melding_key = " + mld_key
+ " AND MKW.mld_kenmerk_verplicht_status = " + status
+ " AND MKW.waarde IS NULL";
+ " FROM (SELECT mk.*"
+ " , (SELECT km.mld_kenmerkmelding_waarde"
+ " FROM mld_kenmerkmelding km"
+ " WHERE km.mld_kenmerk_key = mk.mld_kenmerk_key"
+ " AND km.mld_melding_key = mk.mld_melding_key) waarde"
+ " FROM (SELECT m.mld_melding_key"
+ " , k.mld_kenmerk_key"
+ " , v.mld_srtkenmerk_omschrijving"
+ " , k.mld_kenmerk_verplicht_status"
+ " FROM mld_kenmerk k"
+ " , mld_melding m"
+ " , mld_stdmelding s"
+ " , mld_discipline d"
+ " , mld_srtkenmerk v"
+ " WHERE k.mld_srtkenmerk_key = v.mld_srtkenmerk_key"
+ " AND s.mld_stdmelding_key = m.mld_stdmelding_key"
+ " AND s.mld_ins_discipline_key = d.ins_discipline_key"
+ " AND ((k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')"
+ " OR (k.mld_stdmelding_key = s.mld_ins_discipline_key AND k.mld_kenmerk_niveau = 'D')"
+ " OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'))"
+ " AND v.mld_srtkenmerk_kenmerktype <> 'M'"
+ " AND v.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " ) mk"
+ " ) mkw"
+ " WHERE mkw.mld_melding_key = " + mld_key
+ " AND mkw.mld_kenmerk_verplicht_status = " + status
+ " AND mkw.waarde IS NULL";
var oRs = Oracle.Execute(sql);
var ontbreekt = [];
while (!oRs.eof)
@@ -3507,7 +3503,47 @@ mld = {setmeldingstatus:
oRs.MoveNext();
}
oRs.Close();
// levert array op met kenmerken die ingevuld hadden moeten zijn.
// Levert array op met kenmerken die ingevuld hadden moeten zijn.
return ontbreekt;
},
hasRequiredStatusEmptyOpdr: function(opdr_key, status)
{
var sql = "SELECT *"
+ " FROM (SELECT ok.*"
+ " , (SELECT ko.mld_kenmerkopdr_waarde"
+ " FROM mld_kenmerkopdr ko"
+ " WHERE ko.mld_kenmerk_key = ok.mld_kenmerk_key"
+ " AND ko.mld_opdr_key = ok.mld_opdr_key) waarde"
+ " FROM (SELECT o.mld_opdr_key"
+ " , k.mld_kenmerk_key"
+ " , v.mld_srtkenmerk_omschrijving"
+ " , k.mld_kenmerk_verplicht_status"
+ " FROM mld_kenmerk k"
+ " , mld_srtkenmerk v"
+ " , mld_opdr o"
+ " , mld_typeopdr t"
+ " WHERE k.mld_srtkenmerk_key = v.mld_srtkenmerk_key"
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key"
+ " AND k.mld_typeopdr_key = t.mld_typeopdr_key"
+ " AND k.mld_kenmerk_niveau = 'O'"
+ " AND v.mld_srtkenmerk_kenmerktype <> 'O'"
+ " AND v.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"
+ " ) ok"
+ " ) okw"
+ " WHERE okw.mld_opdr_key = " + opdr_key
+ " AND okw.mld_kenmerk_verplicht_status = " + status
+ " AND okw.waarde IS NULL";
var oRs = Oracle.Execute(sql);
var ontbreekt = [];
while (!oRs.eof)
{
ontbreekt.push(oRs("mld_srtkenmerk_omschrijving").Value);
oRs.MoveNext();
}
oRs.Close();
// Levert array op met kenmerken die ingevuld hadden moeten zijn.
return ontbreekt;
},
@@ -3672,16 +3708,30 @@ mld = {setmeldingstatus:
// De status van de melding zou gewijzigd kunnen/moeten worden hierdoor
mld.updatemeldingstatus(mld_opdr.mld_key, 0);
},
getReqStatusEmpty:
function _getReqStatusEmpty(kenmerkEmpty, mld_key, status)
getReqStatusEmptyMelding:
function _getReqStatusEmptyMelding(kenmerkEmpty, mld_key, status)
{ // Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key, status);
var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key, status);
if (kvsAfwezig.length)
{
var mldnr = mld.mld_prefix(mld_key) + mld_key;
kenmerkEmpty.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
}
return kenmerkEmpty;
},
getReqStatusEmptyOpdr:
function _getReqStatusEmptyOpdr(kenmerkEmpty, opdr_key, status)
{ // Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmptyOpdr(opdr_key, status);
if (kvsAfwezig.length)
{
var mld_opdr = mld.mld_opdr_info(opdr_key);
var mldnr = mld.mld_prefix(mld_opdr.mld_key) + mld_opdr.mld_key + "/" + mld_opdr.volgnr;
kenmerkEmpty.push(L("lcl_mld_opdr_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
}
return kenmerkEmpty;
}
}

View File

@@ -35,7 +35,7 @@ var result = {};
var tobeclosed = 0;
var ingesloten = [];
var canCloseOpdr = [];
var reqStatusEmpty = [];
var reqStatusEmptyMelding = [];
var futureOpdr = false;
// Bepaal de meldingen in de selectie die
// ook echt afgemeld kunnen of mogen worden.
@@ -46,11 +46,11 @@ for (var i = 0; i < mld_key_arr.length; i++)
if (this_mld.canClose) // Als je mag accepteren mag je ook rejecten
{
// Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key_arr[i], 5); // verplicht_status = afmelden
var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key_arr[i], 5); // Melding status "Afgemeld(5)"
if (kvsAfwezig.length)
{
var mldnr = mld.mld_prefix(mld_key_arr[i]) + mld_key_arr[i];
reqStatusEmpty.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
}
// Zijn er nog lopende opdrachten?
var canCloseOpdrOfMld = [];
@@ -102,7 +102,7 @@ for (var i = 0; i < mld_key_arr.length; i++)
}
}
}
user.anything_todo_or_abort(!reqStatusEmpty.length, reqStatusEmpty.join("<br />"));
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
user.auth_required_or_abort(!(mld_key_arr.length == 1 && futureOpdr), L("lcl_mld_einddatum_to_late_mld")); // Bij enkele melding met toekomstige opdrachten een aparte melding geven
user.anything_todo_or_abort(tobeclosed > 0); // We klagen niet over enkele wel en enkele niet

View File

@@ -33,7 +33,7 @@ var result = {};
var tobeclosed = 0;
var ingesloten = [];
var canCloseOpdr = [];
var reqStatusEmpty = [];
var reqStatusEmptyMelding = [];
var futureOpdr = false;
// Bepaal de meldingen in de selectie die
// ook echt afgemeld kunnen of mogen worden.
@@ -43,11 +43,11 @@ for (var i = 0; i < mld_key_arr.length; i++)
if (this_mld.canClose) // Als je mag accepteren mag je ook rejecten
{
// Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key_arr[i], 5);
var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key_arr[i], 5); // Melding status "Afgemeld(5)"
if (kvsAfwezig.length)
{
var mldnr = mld.mld_prefix(mld_key_arr[i]) + mld_key_arr[i];
reqStatusEmpty.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
}
// Zijn er nog lopende opdrachten?
var canCloseOpdrOfMld = [];
@@ -92,7 +92,7 @@ for (var i = 0; i < mld_key_arr.length; i++)
}
}
}
user.anything_todo_or_abort(!reqStatusEmpty.length, reqStatusEmpty.join("<br />"));
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
user.auth_required_or_abort(!(mld_key_arr.length == 1 && futureOpdr), L("lcl_mld_einddatum_to_late_mld")); // Bij enkele melding met toekomstige opdrachten een aparte melding geven
user.anything_todo_or_abort(tobeclosed > 0); // We klagen niet over enkele wel en enkele niet

View File

@@ -27,7 +27,7 @@ var opmerk = getFParam("opmerk", "");
var result = {};
var toberejected = 0;
var ingesloten = [];
var reqStatusEmpty = [];
var reqStatusEmptyMelding = [];
// Bepaal de meldingen in de selectie die
// ook echt afgewezen kunnen of mogen worden.
for (var i = 0; i < mld_key_arr.length; i++)
@@ -41,15 +41,15 @@ for (var i = 0; i < mld_key_arr.length; i++)
toberejected++;
}
// Zijn er nog kenmerken die nu wel verplicht zijn?
var kvsAfwezig = mld.hasRequiredStatusEmpty(mld_key_arr[i], 1); // verplicht_status = afgewezen
var kvsAfwezig = mld.hasRequiredStatusEmptyMelding(mld_key_arr[i], 1); // Melding status "Afgemeld(5)"
if (kvsAfwezig.length)
{
var mldnr = mld.mld_prefix(mld_key_arr[i]) + mld_key_arr[i];
reqStatusEmpty.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
reqStatusEmptyMelding.push(L("lcl_mld_req_status_empty").format(kvsAfwezig.join(", "), mldnr) );
}
}
// De laatst gebruikte set_dialect uit de for-lus geldt nu voor de onderstaande code.
user.anything_todo_or_abort(!reqStatusEmpty.length, reqStatusEmpty.join("<br />"));
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
user.anything_todo_or_abort(toberejected > 0); // We klagen niet over enkele wel en enkele niet
%>

View File

@@ -28,6 +28,10 @@ user.auth_required_or_abort(opdr_key > 0); // Hebben we een opdracht key gekrege
// Controleren of ik deze opdracht mag annuleren
var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
user.auth_required_or_abort(this_opdr.canCancel); // Mag ik deze opdracht annuleren
var reqStatusEmptyOpdr = [];
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 1); // Opdracht status "Afgewezen(1)"
%>
<html>
@@ -45,6 +49,13 @@ user.auth_required_or_abort(this_opdr.canCancel); // Mag ik deze opdracht annule
if (!validateForm("u2"))
return false;
// Zijn er opdrachtkenmerken die alleen verplicht zijn bij het afmelden en niet zijn ingevuld?
if (<%=reqStatusEmptyOpdr.length%> != 0)
{
alert("<%=safe.jsstring(reqStatusEmptyOpdr.join('\n'))%>");
return false;
}
$.post($("form[name=cancelform]")[0].action, $("[name=cancelform]").serialize(), FcltCallbackClose, "json");
return true; // disable button

View File

@@ -29,7 +29,12 @@ user.auth_required_or_abort(opdr_key > 0); // Hebben we een opdracht key gekrege
// Controleren of ik deze opdracht mag annuleren
var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
user.auth_required_or_abort(this_opdr.canCancel, JSON.stringify({ message: L("lcl_shared_no_auth"), success: false })); // Mag ik deze opdracht annuleren
var reqStatusEmptyOpdr = [];
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 1); // Opdracht status "Afgewezen(1)"
user.auth_required_or_abort(this_opdr.canCancel && !reqStatusEmptyOpdr.length, JSON.stringify({ message: L("lcl_shared_no_auth"), success: false })); // Mag ik deze opdracht annuleren
var result = { opdr_key: opdr_key, message: "", success: false};

View File

@@ -29,7 +29,8 @@ FCLTHeader.Requires({plugins: ["jQuery"],
css: ["timePicker-table.css"]});
var opdr_key_arr = getQParamIntArray("opdr_key");
var reqStatusEmpty = [];
var reqStatusEmptyMelding = [];
var reqStatusEmptyOpdr = [];
var ingesloten = [];
var result = {};
var maychangeopm = false;
@@ -64,8 +65,11 @@ if (opdr_key_arr.length == 1)
if (!maychangeopm && this_opdr.canOpmChange)
maychangeopm = true; // Ik mag voor de opdracht de opmerking aanpassen
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key_arr[0], 6); // Opdracht status "Technisch Voltooid(6)"
// Zijn bij de melding van deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmpty = mld.getReqStatusEmpty(reqStatusEmpty, mld_key, 5);
reqStatusEmptyMelding = mld.getReqStatusEmptyMelding(reqStatusEmptyMelding, mld_key, 5); // Melding status "Afgemeld(5)"
// Hoeveel opdrachten staan er open bij deze melding.
var sql = "SELECT COUNT(mld_opdr_key) nrOpen"
@@ -79,7 +83,7 @@ if (opdr_key_arr.length == 1)
if (nrOpen == 1 && typeopdr_sluitmelding == 2)
{
// Dit is de laatste opdracht bij de melding EN de melding mag na sluiten van de opdracht ook gesloten worden.
user.anything_todo_or_abort(!reqStatusEmpty.length, reqStatusEmpty.join("<br />"));
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
}
var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding.
}
@@ -103,8 +107,14 @@ else
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));
var opdr_kosten = mld_opdr.t_cost;
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 6); // Opdracht status "Technisch Voltooid(6)"
// Als Setting S("mld_ord_afmeld_future") niet is gezet (0): Opdrachten waarvan de einddatum in de toekomst ligt mogen niet worden afgemeld.
if ((S("mld_ord_afmeld_future") == 1 || (mld_opdr_einddatum < new Date())) && this_opdr.canClose && !(kosten_verplicht_afm && opdr_kosten == 0))
if ((S("mld_ord_afmeld_future") == 1 || (mld_opdr_einddatum < new Date())) &&
this_opdr.canClose &&
!(kosten_verplicht_afm && opdr_kosten == 0) &&
!reqStatusEmptyOpdr.length)
{
ingesloten.push(opdr_key_arr[i]);
@@ -129,7 +139,7 @@ lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
<script type="text/javascript">
function mld_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
FcltMgr.closeDetail(window, { cancel: true } );
}
function mld_close(close)
@@ -137,12 +147,19 @@ lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");
if (!validateForm("u2"))
return false;
// Zijn er opdrachtkenmerken die alleen verplicht zijn bij het afmelden en niet zijn ingevuld?
if (<%=reqStatusEmptyOpdr.length%> != 0)
{
alert("<%=safe.jsstring(reqStatusEmptyOpdr.join('\n'))%>");
return false;
}
// Alleen vergeten verplichte kenmerken vermelden als die er zijn en aangevinkt is dat de melding evt. afgemeld moet worden.
// Voorwaarde "aantal nog openstaande opdrachten = 1" kan niet ivm batchmode.
if ($("#mld_close").is(":checked") && (<%=reqStatusEmpty.length%> != 0))
if ($("#mld_close").is(":checked") && (<%=reqStatusEmptyMelding.length%> != 0))
{
alert("<%=safe.jsstring(reqStatusEmpty.join('\n'))%>");
return false;
alert("<%=safe.jsstring(reqStatusEmptyMelding.join('\n'))%>");
return false;
}
$.post($("form[name=closeform]")[0].action, $("[name=closeform]").serialize(), FcltCallbackClose, "json");

View File

@@ -60,7 +60,8 @@ function writeOpdrOpmToMld()
var opdr_key_arr = getQParamIntArray("opdr_key");
var result = {};
var ingesloten = [];
var reqStatusEmpty = [];
var reqStatusEmptyMelding = [];
var reqStatusEmptyOpdr = [];
if (opdr_key_arr.length == 1)
{
@@ -68,7 +69,11 @@ if (opdr_key_arr.length == 1)
var mld_opdr = mld.mld_opdr_info(opdr_key_arr[0]);
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));
var opdr_kosten = mld_opdr.t_cost;
user.auth_required_or_abort(!(kosten_verplicht_afm && opdr_kosten == 0) && this_opdr.canClose, L("lcl_mld_opdr_kosten_verpl_afm")); // Dan zijn we vlug klaar.
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key_arr[0], 6); // Opdracht status "Technisch Voltooid(6)"
user.auth_required_or_abort(!(kosten_verplicht_afm && opdr_kosten == 0) && this_opdr.canClose && !reqStatusEmptyOpdr.length, L("lcl_mld_opdr_kosten_verpl_afm")); // Dan zijn we vlug klaar.
var sql = "SELECT o.mld_melding_key"
+ " , o.mld_opdr_einddatum"
@@ -101,9 +106,9 @@ if (opdr_key_arr.length == 1)
// Alleen te controleren als melding na afsluiten van de opdracht ook gesloten wordt.
var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding.
if (this_mld.canClose)
reqStatusEmpty = mld.getReqStatusEmpty(reqStatusEmpty, mld_key, 5);
reqStatusEmptyMelding = mld.getReqStatusEmptyMelding(reqStatusEmptyMelding, mld_key, 5); // Melding status "Afgemeld(5)"
}
user.anything_todo_or_abort(!reqStatusEmpty.length, reqStatusEmpty.join("<br />"));
user.anything_todo_or_abort(!reqStatusEmptyMelding.length, reqStatusEmptyMelding.join("<br />"));
// Als Setting S("mld_ord_afmeld_future") niet is gezet: Opdrachten waarvan de einddatum in de toekomst ligt mogen niet worden afgemeld.
user.auth_required_or_abort((S("mld_ord_afmeld_future") == 1 || (mld_opdr_einddatum < new Date())) && this_opdr.canClose, L("lcl_mld_einddatum_to_late_opdr"));
}
@@ -123,8 +128,14 @@ else
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));
var opdr_kosten = mld_opdr.t_cost;
// Zijn bij deze opdracht alle verplichte kenmerken ingevuld?
reqStatusEmptyOpdr = mld.getReqStatusEmptyOpdr(reqStatusEmptyOpdr, opdr_key, 6); // Opdracht status "Technisch Voltooid(6)"
// Als Setting S("mld_ord_afmeld_future") niet is gezet (0): Opdrachten waarvan de einddatum in de toekomst ligt mogen niet worden afgemeld.
if ((S("mld_ord_afmeld_future") == 1 || (oRs("mld_opdr_einddatum").Value < new Date())) && this_opdr.canClose && !(kosten_verplicht_afm && opdr_kosten == 0))
if ((S("mld_ord_afmeld_future") == 1 || (oRs("mld_opdr_einddatum").Value < new Date())) &&
this_opdr.canClose &&
!(kosten_verplicht_afm && opdr_kosten == 0) &&
!reqStatusEmptyOpdr.length)
{
ingesloten.push(opdr_key_arr[i]);
}
@@ -199,8 +210,8 @@ for (var i = 0; i < ingesloten.length; i++)
oRs.Close();
if (nn == 0) // Het was de laatste opdracht van de melding die nog niet afgemeld is
{
reqStatusEmpty = mld.getReqStatusEmpty(reqStatusEmpty, mld_opdr.mld_key, 5);
if (reqStatusEmpty.length == 0) // Alle verplichte kenmerkeb zijn ingevuld
reqStatusEmptyMelding = mld.getReqStatusEmptyMelding(reqStatusEmptyMelding, mld_opdr.mld_key, 5); // Melding status "Afgemeld(5)"
if (reqStatusEmptyMelding.length == 0) // Alle verplichte kenmerkeb zijn ingevuld
{
// Mag ik dan ook de melding afmelden?
var this_mld = mld.func_enabled_melding(mld_opdr.mld_key);