FSN#32688: XD status niet opgelost wordt weergegeven als in behandeling.
svn path=/Website/trunk/; revision=25572
This commit is contained in:
@@ -362,13 +362,17 @@ api2 = {
|
||||
continue;
|
||||
if (filterval instanceof Array)
|
||||
{
|
||||
safe_val = "(" + filterval.join(",") + ")";
|
||||
safe_val = filterval.join(",");
|
||||
if (typeof filter != 'function')
|
||||
safe_val = "(" + safe_val + ")";
|
||||
operand = " IN ";
|
||||
}
|
||||
else if (String(filterval).indexOf(",") != -1) // let op: bij buildings/1234.json is id al numeriek gemaakt
|
||||
// NB: index=-1 als het geen array is.
|
||||
{
|
||||
safe_val = "(" + getQParamIntArray(fld).join(",") + ")"; // TODO: Niet via getQParamIntArray
|
||||
safe_val = getQParamIntArray(fld).join(","); // TODO: Niet via getQParamIntArray
|
||||
if (typeof filter != 'function')
|
||||
safe_val = "(" + safe_val + ")";
|
||||
operand = " IN ";
|
||||
}
|
||||
else if (String(filterval).substr(0,1) == '~'
|
||||
@@ -387,7 +391,9 @@ api2 = {
|
||||
if (foreign.where)
|
||||
foreignsql += foreign.where + " AND ";
|
||||
foreignsql += "UPPER(" + (foreign.alias||"xx") + "." + fieldname + ") LIKE " + safe.quoted_sql_wild("%"+String(filterval).substr(1) + "%");
|
||||
safe_val = "(" + foreignsql + ")";
|
||||
safe_val = foreignsql;
|
||||
if (typeof filter != 'function')
|
||||
safe_val = "(" + safe_val + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -554,7 +560,12 @@ api2 = {
|
||||
{
|
||||
dbs = "TRUNC("+dbs+")";
|
||||
}
|
||||
wheres.push(dbs + operand + safe_val);
|
||||
|
||||
// Als filter een functie is dan de functie aanroepen.
|
||||
if (typeof filter == 'function')
|
||||
wheres.push(filter(safe_val));
|
||||
else
|
||||
wheres.push(dbs + operand + safe_val);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -602,8 +613,6 @@ api2 = {
|
||||
dbs = lcl.xsql(dbs, model.table + "." + model.fields.id.dbs);
|
||||
if (model.aliasprefix)
|
||||
dbs += " AS " + api2.sqlfield_alias(model, fld);
|
||||
if (field.as)
|
||||
dbs += " AS " + field.as;
|
||||
else
|
||||
if (field.translate)
|
||||
dbs += " AS " + field.dbs;
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
<!-- #include file="model_orders.inc"-->
|
||||
<%
|
||||
|
||||
function fnextendedStatus (oRs, field, model)
|
||||
{
|
||||
var xstatus = mld.getextendedmldstatus(oRs("mld_melding_status").Value, oRs("mld_melding_key").Value);
|
||||
return xstatus;
|
||||
}
|
||||
|
||||
model_issues =
|
||||
{
|
||||
module: "MLD",
|
||||
@@ -37,8 +43,8 @@ model_issues =
|
||||
"issuetype" : { dbs: "mld_stdmelding_key", typ: "key", foreign: "mld_stdmelding", label: L("lcl_complain"), track: true, filter: "exact" },
|
||||
"description": { dbs: "mld_melding_omschrijving", typ: "varchar", label: L("lcl_descr"), track: true, filter: "like" },
|
||||
"remark" : { dbs: "mld_melding_opmerking", typ: "varchar", label: L("lcl_remark"), track: true},
|
||||
"status" : { dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, label: L("lcl_status"), track: true, filter: "exact" },
|
||||
"flag" : { dbs: "mld_melding_flag", typ: "key", /* geen echte key, wel key-gedrag */ label: L("lcl_mld_flags"), track: true, filter: "exact" },
|
||||
"status" : { dbs: "mld_melding_status", typ: "key", foreign: mld.getmldstatustext, label: L("lcl_status"), track: true, filter: mld.getStatusSql },
|
||||
"flag" : { dbs: "mld_melding_flag", typ: "key", /* geen echte key, wel key-gedrag */ label: L("lcl_mld_flags"), track: true, filter: "exact" },
|
||||
"account" : { dbs: "prs_kostenplaats_key", typ: "key", foreign: "prs_kostenplaats", label: L("lcl_account"), track: true, filter: "exact" },
|
||||
"handler" : { dbs: "mld_melding_behandelaar_key", typ: "key", foreign: "prs_perslid", label: L("lcl_mld_behandelaar"), track: true, filter: "exact" },
|
||||
"location" : { dbs: "mld_alg_locatie_key", typ: "key", foreign: "alg_locatie", label: L("lcl_location"), track: true, filter: "exact" },
|
||||
@@ -46,7 +52,8 @@ model_issues =
|
||||
"floor" : { dbs: "alg_v_allonroerendgoed.alg_verdieping_key", typ: "key", foreign: "alg_verdieping", label: L("lcl_floor"), track: true, filter: "exact" },
|
||||
"room" : { dbs: "alg_v_allonroerendgoed.alg_ruimte_key", typ: "key", foreign: "alg_ruimte", label: L("lcl_room"), track: true, filter: "exact" },
|
||||
"terrain" : { dbs: "alg_v_allonroerendgoed.alg_terreinsector_key", typ: "key", foreign: "alg_terreinsector", label: L("lcl_room"), track: true, filter: "exact" },
|
||||
"xstatus" : { dbs: "mld_melding_key", as: "xstatus", typ: "key", foreign: mld.getextendedmldstatustext, label: L("lcl_extended_status"), track: true, filter: "exact" }
|
||||
"xstatus" : { dbs: "mld_melding_status",
|
||||
val: fnextendedStatus, typ: "key", foreign: mld.getmldstatustext, label: L("lcl_extended_status"), track: true, filter: "exact" }
|
||||
},
|
||||
includes: {
|
||||
"issueobjects": {
|
||||
|
||||
@@ -328,13 +328,9 @@ mld = {setmeldingstatus:
|
||||
},
|
||||
|
||||
getextendedmldstatustext:
|
||||
function (pmld_key)
|
||||
function (pstatus, pmld_key)
|
||||
{
|
||||
var sql = "SELECT mld_melding_status status FROM mld_melding WHERE mld_melding_key = " + pmld_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
var mldStatus = oRs("status").Value;
|
||||
oRs.Close();
|
||||
var xstatus = mld.getextendedmldstatus(mldStatus, pmld_key);
|
||||
var xstatus = mld.getextendedmldstatus(pstatus, pmld_key);
|
||||
return mld.getmldstatustext(xstatus);
|
||||
},
|
||||
|
||||
@@ -463,9 +459,10 @@ mld = {setmeldingstatus:
|
||||
},
|
||||
|
||||
getStatusSql:
|
||||
function(mldstatus_str)
|
||||
function(mldstatus_str, alias)
|
||||
{
|
||||
var sql="";
|
||||
var sql = "";
|
||||
alias = alias || "mld_melding";
|
||||
if (mldstatus_str)
|
||||
{
|
||||
// Aantal openstaande opdrachten of offertes
|
||||
@@ -474,12 +471,12 @@ mld = {setmeldingstatus:
|
||||
// Offerte Acceptatie: offerte met een opdracht status 6 ook als open zien.
|
||||
var sql_opdr_be_open = " CASE (SELECT COUNT(o.mld_opdr_key)"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE mld_melding_key = m.mld_melding_key)"
|
||||
+ " WHERE mld_melding_key = " + alias + ".mld_melding_key)"
|
||||
+ " WHEN 0"
|
||||
+ " THEN -1"
|
||||
+ " ELSE (SELECT COUNT (o.mld_statusopdr_key)"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE mld_melding_key = m.mld_melding_key"
|
||||
+ " WHERE mld_melding_key = " + alias + ".mld_melding_key"
|
||||
+ " AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9))"
|
||||
+ " END";
|
||||
|
||||
@@ -495,9 +492,9 @@ mld = {setmeldingstatus:
|
||||
// (Er zijn opdrachten van eerdere offertes) => AND mld_opdr_key > MAX(o1.mld_opdr_key)
|
||||
var sql_offertes_afgerond = " (SELECT COUNT(o.mld_statusopdr_key)"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " , mld_typeopdr mo"
|
||||
+ " , mld_typeopdr mo"
|
||||
+ " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
|
||||
+ " AND o.mld_melding_key = m.mld_melding_key"
|
||||
+ " AND o.mld_melding_key = " + alias + ".mld_melding_key"
|
||||
+ " AND mo.mld_typeopdr_isofferte = 1"
|
||||
+ " AND o.mld_statusopdr_key = 9" // AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7)
|
||||
+ " AND o.mld_opdr_key > COALESCE ((SELECT MAX(o1.mld_opdr_key)"
|
||||
@@ -505,13 +502,13 @@ mld = {setmeldingstatus:
|
||||
+ " , mld_typeopdr mo1"
|
||||
+ " WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key"
|
||||
+ " AND mo1.mld_typeopdr_isofferte = 0"
|
||||
+ " AND o1.mld_melding_key = m.mld_melding_key), 0))";
|
||||
+ " AND o1.mld_melding_key = " + alias + ".mld_melding_key), 0))";
|
||||
// Als alle offertes zijn afgewezen of afgekeurd en er zijn geen te accepteren offertes meer dan is de melding status "Niet opgelost"
|
||||
var sql_offertes_toaccept = " (SELECT COUNT(o.mld_statusopdr_key)"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " , mld_typeopdr mo"
|
||||
+ " , mld_typeopdr mo"
|
||||
+ " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
|
||||
+ " AND o.mld_melding_key = m.mld_melding_key"
|
||||
+ " AND o.mld_melding_key = " + alias + ".mld_melding_key"
|
||||
+ " AND mo.mld_typeopdr_isofferte = 1"
|
||||
+ " AND o.mld_statusopdr_key = 6" // AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7)
|
||||
+ " AND o.mld_opdr_key > COALESCE ((SELECT MAX(o1.mld_opdr_key)"
|
||||
@@ -519,7 +516,7 @@ mld = {setmeldingstatus:
|
||||
+ " , mld_typeopdr mo1"
|
||||
+ " WHERE o1.mld_typeopdr_key = mo1.mld_typeopdr_key"
|
||||
+ " AND mo1.mld_typeopdr_isofferte = 0"
|
||||
+ " AND o1.mld_melding_key = m.mld_melding_key), 0))";
|
||||
+ " AND o1.mld_melding_key = " + alias + ".mld_melding_key), 0))";
|
||||
|
||||
// Is de laatste opdracht bij de melding een offerte?
|
||||
var sql_last_is_offertes = " COALESCE((SELECT 1"
|
||||
@@ -527,10 +524,10 @@ mld = {setmeldingstatus:
|
||||
+ " , mld_typeopdr mo"
|
||||
+ " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
|
||||
+ " AND mo.mld_typeopdr_isofferte = 1"
|
||||
+ " AND o.mld_melding_key = m.mld_melding_key"
|
||||
+ " AND o.mld_melding_key = " + alias + ".mld_melding_key"
|
||||
+ " AND o.mld_opdr_key = (SELECT MAX(o1.mld_opdr_key)"
|
||||
+ " FROM mld_opdr o1"
|
||||
+ " WHERE o1.mld_melding_key = m.mld_melding_key)), 0)";
|
||||
+ " WHERE o1.mld_melding_key = " + alias + ".mld_melding_key)), 0)";
|
||||
|
||||
// In mldstatus_str kan de waarde 99 "Niet opgelost" voorkomen. Dit is geen bestaande status.
|
||||
if (mldstatus_str.indexOf("-1") == -1)
|
||||
@@ -558,7 +555,7 @@ mld = {setmeldingstatus:
|
||||
mldstatus_str += (mldstatus_str == ""? "" : ", ") + status_split[i];
|
||||
}
|
||||
}
|
||||
sql = " AND m.mld_melding_status IN (" + mldstatus_str + ")";
|
||||
sql = " " + alias + ".mld_melding_status IN (" + mldstatus_str + ")";
|
||||
}
|
||||
else if (mldstatus_str.indexOf("99") != -1)
|
||||
{ // Als niet opgelost(99) is geselecteerd en geaccepteerd(4) is niet geselecteerd => Als Te behandelen (99) is aangevinkt
|
||||
@@ -571,21 +568,21 @@ mld = {setmeldingstatus:
|
||||
if (status_split[i] != "99")
|
||||
mldstatus_str += (mldstatus_str == ""? "" : ", ") + status_split[i];
|
||||
}
|
||||
sql = " AND (m.mld_melding_status IN (" + mldstatus_str + ")"
|
||||
sql = " (" + alias + ".mld_melding_status IN (" + mldstatus_str + ")"
|
||||
// Voor meldingstatus 4 geldt dat er geen open opdrachten zijn.
|
||||
// En daarnaast geldt:
|
||||
// Opdrachten: De laatste opdracht is geen offerte.
|
||||
// Offertes: Offertes met niet afgemelde (6) offertes niet tonen (laatste opdracht is een offerte).
|
||||
+ " OR ((" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_afgerond + " != 0 OR " + sql_offertes_toaccept + " = 0 OR " + sql_last_is_offertes + " = 0))"
|
||||
+ " AND (m.mld_melding_status = 4)))";
|
||||
+ " AND (" + alias + ".mld_melding_status = 4)))";
|
||||
}
|
||||
else
|
||||
{ // Voor meldingstatus 4 geldt dat er geen open opdrachten zijn.
|
||||
// En daarnaast geldt:
|
||||
// Opdrachten: De laatste opdracht is geen offerte.
|
||||
// Offertes: Offertes met niet afgemelde (6) offertes niet tonen (laatste opdracht is een offerte).
|
||||
sql = " AND (" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_afgerond + " != 0 OR " + sql_offertes_toaccept + " = 0 OR " + sql_last_is_offertes + " = 0))"
|
||||
+ " AND (m.mld_melding_status = 4)";
|
||||
sql = " (" + sql_opdr_be_open + " = 0 AND (" + sql_offertes_afgerond + " != 0 OR " + sql_offertes_toaccept + " = 0 OR " + sql_last_is_offertes + " = 0))"
|
||||
+ " AND (" + alias + ".mld_melding_status = 4)";
|
||||
}
|
||||
}
|
||||
else if (mldstatus_str.indexOf("4") != -1)
|
||||
@@ -599,19 +596,19 @@ mld = {setmeldingstatus:
|
||||
if (status_split[i] != "4")
|
||||
mldstatus_str += (mldstatus_str == ""? "" : ", ") + status_split[i];
|
||||
}
|
||||
sql = " AND (m.mld_melding_status IN (" + mldstatus_str + ")"
|
||||
sql = " (" + alias + ".mld_melding_status IN (" + mldstatus_str + ")"
|
||||
// Voor meldingstatus 4 geldt.
|
||||
// Opdrachten: Er zijn geen opdrachten.
|
||||
// Offertes: Alle offertes staan ter acceptatie (zijn afgemeld (6)) (laatste opdracht is een offerte)
|
||||
+ " OR ((" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_afgerond + " = 0 AND " + sql_offertes_toaccept + " > 0 AND " + sql_last_is_offertes + " = 1))"
|
||||
+ " AND (m.mld_melding_status = 4)))";
|
||||
+ " AND (" + alias + ".mld_melding_status = 4)))";
|
||||
}
|
||||
else
|
||||
{ // Voor meldingstatus 4 geldt.
|
||||
// Opdrachten: Er zijn geen opdrachten.
|
||||
// Offertes: Alle offertes staan ter acceptatie (zijn afgemeld (6)) (laatste opdracht is een offerte)
|
||||
sql = " AND ((" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_afgerond + " = 0 AND " + sql_offertes_toaccept + " > 0 AND " + sql_last_is_offertes + " = 1))"
|
||||
+ " AND (m.mld_melding_status = 4))";
|
||||
sql = " ((" + sql_opdr_be_open + " = -1 OR (" + sql_offertes_afgerond + " = 0 AND " + sql_offertes_toaccept + " > 0 AND " + sql_last_is_offertes + " = 1))"
|
||||
+ " AND (" + alias + ".mld_melding_status = 4))";
|
||||
}
|
||||
}
|
||||
//
|
||||
@@ -620,18 +617,18 @@ mld = {setmeldingstatus:
|
||||
// Ook als de melding in Uitgegeven(7) en er is een opdracht Toegekend(5).
|
||||
if (S("mld_show_urgent_as_new") && mldstatus_str.indexOf("2") != -1)
|
||||
{
|
||||
var add_spoed = " OR ( (m.mld_melding_spoed < 3)"
|
||||
+ " AND ( (m.mld_melding_status IN (2, 3, 4))"
|
||||
+ " OR ( (m.mld_melding_status = 7)"
|
||||
var add_spoed = " OR ( (" + alias + ".mld_melding_spoed < 3)"
|
||||
+ " AND ( (" + alias + ".mld_melding_status IN (2, 3, 4))"
|
||||
+ " OR ( (" + alias + ".mld_melding_status = 7)"
|
||||
+ " AND ( (SELECT COUNT (o.mld_statusopdr_key)"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE mld_melding_key = m.mld_melding_key"
|
||||
+ " WHERE mld_melding_key = " + alias + ".mld_melding_key"
|
||||
+ " AND o.mld_statusopdr_key = 5"
|
||||
+ ") > 0)"
|
||||
+ " )"
|
||||
+ " )"
|
||||
+ " )";
|
||||
sql = " AND (" + sql.slice(4) + add_spoed + ")";
|
||||
sql = " (" + sql.slice(4) + add_spoed + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1022,7 +1019,7 @@ mld = {setmeldingstatus:
|
||||
else
|
||||
mldstatus_arr = showstatus;
|
||||
|
||||
sqln += mld.getStatusSql(mldstatus_arr);
|
||||
sqln += " AND" + mld.getStatusSql(mldstatus_arr, "m");
|
||||
|
||||
if (params.flags && params.flags.length > 0 && params.flags.length < S('mld_melding_flags'))
|
||||
{
|
||||
|
||||
@@ -459,7 +459,7 @@ function opdr_list (params)
|
||||
{
|
||||
mldstatus_arr = showstatus;
|
||||
}
|
||||
sql += mld.getStatusSql(mldstatus_arr);
|
||||
sql += " AND" + mld.getStatusSql(mldstatus_arr, "m");
|
||||
// Opdrachtstatus
|
||||
if (opdrstatus_arr && ((opdrstatus_arr.length > 1) || (opdrstatus_arr != -1)))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user