AAIT#36710: Berekende waarde van velden in Facilitor.

svn path=/Website/trunk/; revision=31887
This commit is contained in:
Maykel Geerdink
2016-12-07 15:53:32 +00:00
parent f85f2af9c1
commit 908895846b

View File

@@ -303,17 +303,22 @@ function listKenmerk(sql, module, key, props)
var val = null;
val_seperator = ':';
var def_val = oRs("kenmerk_default").value;
var isExpression = false;
if (!kenmerk_search && !multiMode)
{
// In multiMode no filling of default values
val = oRs("kenmerk_waarde").value;
if (def_val && def_val.match('##EXPR##') != null)
isExpression = true;
// For a new value, this default is used. It could be a primitive value (string, number or key) or
// it is suggested to support (later)
// a more sophisticated value, using ##asp-variable## and/or SQL:SELECT in the string.
if (val != null)
{ //__Log("val:"+val);
if (val==def_val && val.match('##SQL##') != null )
if (val == def_val && val.match('##SQL##') != null)
{
//__Log("val match");
prssql = true;
@@ -326,6 +331,10 @@ function listKenmerk(sql, module, key, props)
val = '';
oRsPerslid.Close();
}
else if (def_val && val == def_val && def_val.match('##EXPR##') != null)
{
val = "";
}
}
}
// Meegegeven default verwerken (UWVA Pacta o.a.)
@@ -372,9 +381,10 @@ function listKenmerk(sql, module, key, props)
// Velden die de gebruiker niet mag zien zijn we h<><68>l snel klaar mee
// Ook velden waar je niet op kunt zoeken slaan we direct over in zoekmode
// En labels met een readonly-kenmerk tonen we niet als readonly, om invulinstructies in showmode weg te laten
if ((!kenmerk_search && props.fnIsInvisible && props.fnIsInvisible(kvolgnr, ktype, oRs)) ||
(kenmerk_search && (ktype == 'L' || ktype == 'l' || ktype == 'Q' || ktype == 'M' || ktype == 'F' || ktype == 'E') ||
kvolgnr < 0)
(kenmerk_search && (ktype == 'L' || ktype == 'l' || ktype == 'Q' || ktype == 'M' || ktype == 'F' || ktype == 'E') || kvolgnr < 0) ||
(!kenmerk_search && (ktype == 'L' || ktype == 'l') && forceReadonly && props.fnIsReadonly(kvolgnr, oRs))
)
{
oRs.MoveNext();
@@ -974,9 +984,9 @@ function listKenmerk(sql, module, key, props)
}
if (kdim == 'xxx')
{
if (!missing && val)
if (!missing && val)
kv += "<img class='kenmerk' src=' " + protectQS.create(OpenFlexFile(module, niveau, key, kkey, val, { mime_type: "image/png", contentdp: "inline" })) + "'>";
else
else
kv += "<img class='kenmerk' style='display:none'>";
}
}
@@ -1021,7 +1031,7 @@ function listKenmerk(sql, module, key, props)
// De uitzonderingen hebben we nu gehad, alle overige types beginnen hetzelfde
// ===========================================================================
// JGL: Wat zijn de overige types nog van CNDRSXFEMLlQB ?
// Volgens mij NDXLlQ waarbij L en l nog overruled worden
// Volgens mij NDXLlQB waarbij L en l nog overruled worden.
if (kv == "" && ktype != "M" && ktype != "F" && ktype != "E" && !makeCheckbox)
{ // Ook lege folders met bestanden en een enkele bestandsnaam krijgen we via de query mee. Maar deze niet tonen.
@@ -1082,6 +1092,7 @@ function listKenmerk(sql, module, key, props)
+ (kdec > 0 ? " float " : " number ")
+ "'"
+ (required ? " required='required' " : "")
+ (isExpression? " readonly " : "")
//+ " placeholder='"+val_label+"'"
+ " value='" + (kdec > 0 && val? safe.displayfloat(parseFloat(val), kdec) : safe.html(val)) + "'"
+ " maxlength='" + ((kmin >= 0? 0 : 1) + (kdec > 0? 1 : 0) + klen) + "'"
@@ -1098,6 +1109,7 @@ function listKenmerk(sql, module, key, props)
+ (required ? required_class : "")
+ "'"
+ (required ? " required='required' " : "")
+ (isExpression? " readonly " : "")
+ " value='" + safe.htmlattr(val) + "'"
+ ">";
// Als er voor een datumveld geen kmin en kmax is ingevuld dan is de yearRange default -10 tot +10 jaar vanaf geselecteerd jaar.
@@ -1385,6 +1397,10 @@ function listKenmerk(sql, module, key, props)
{ // Alleen dan hidden name-velden er bij
%> <input type=hidden name='<%=nameprefix + idCounter%>key' id='<%=nameprefix + idCounter%>key' value='<%=kkey%>'>
<input type=hidden name='<%=nameprefix + idCounter%>t' id='<%=nameprefix + idCounter%>t' value='<%=ktype%>'>
<% if (isExpression)
{ %>
<input type=hidden name='<%=nameprefix + idCounter%>e' id='<%=nameprefix + idCounter%>e' value='1'>
<% } %>
<% }
idCounter++; // Nu ophogen
@@ -1657,7 +1673,7 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
}
// Nu oude kenmerken verzamelen in kenmerk_keys
var oRs = Oracle.Execute(params.currentKenmerkenSQL);
while( !oRs.eof )
while (!oRs.eof)
{
kenmerk_keys[oRs(params.kenmerkKey).value] = oRs(params.kenmerkWaarde).value; // kenmerkwaarde moet oldval bevatten
oRs.MoveNext();
@@ -1697,10 +1713,12 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
var trackarray = []; // eventuele tracking
var hasExpression = false;
for (kenmerk=0; kenmerk<flexdata.length; kenmerk++)
{
var flex = flexdata[kenmerk];
var vold = kenmerk_keys[flex.id]? kenmerk_keys[flex.id] : "";
hasExpression = hasExpression || flex.expr == 1;
var vnew = flex.value || "";
// tracking?
@@ -1830,9 +1848,73 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
}
}
if (hasExpression)
{
if (params.module == "MLD")
{
if (params.flexPath == "MLD/O")
module = "OPD"
else
module = "MLD"
}
else
module = params.module;
// Tabel fac_kenmwaarden vullen, expressies berekenen en tabel fac_kenmwaarden weer leeg maken.
// Vorige waarden verwijderen.
removekenmerkwaarden(module, parentKey);
savekenmerkwaarden(module, parentKey, params.moduleVal, flexdata);
evaluateflexexpresions(module, parentKey);
//removekenmerkwaarden(module, parentKey);
}
return trackarray;
}
function savekenmerkwaarden(module, refkey, niveau, flexdata)
{
for (kenmerk = 0; kenmerk < flexdata.length; kenmerk++)
{
var sql = "INSERT INTO fac_kenmwaarden"
+ " (fac_kenmwaarden_module"
+ " , fac_kenmwaarden_refkey"
+ (niveau
? " , fac_kenmwaarden_niveau"
: "")
+ " , fac_kenmwaarden_kenmerk_key"
+ " , fac_kenmwaarden_waarde"
+ " , fac_kenmwaarden_kenmerktype"
+ " , fac_kenmwaarden_isexpr"
+ " )"
+ " VALUES (" + safe.quoted_sql(module)
+ " , " + refkey
+ (niveau
? " , " + niveau
: "")
+ " , " + flexdata[kenmerk].id
+ " , " + safe.quoted_sql(flexdata[kenmerk].value)
+ " , " + safe.quoted_sql(flexdata[kenmerk].type)
+ " , " + flexdata[kenmerk].expr
+ " )";
Oracle.Execute(sql);
}
}
function evaluateflexexpresions(module, refkey)
{ // Berekening van de expressie kenmerken.
var sql = "BEGIN flx.evaluateflexexpresions(" + safe.quoted_sql(module) + ", " + refkey + "); END;";
Oracle.Execute(sql);
}
function removekenmerkwaarden(module, refkey)
{
var sql = "DELETE FROM fac_kenmwaarden"
+ " WHERE fac_kenmwaarden_module = " + safe.quoted_sql(module)
+ " AND fac_kenmwaarden_refkey = " + refkey;
Oracle.Execute(sql);
}
function flexkenmerken2jsondata(params)
{
// Lees de Form parameters van flexkenmerken en zet ze in een json-object.
@@ -1857,9 +1939,10 @@ function flexkenmerken2jsondata(params)
var ktn = Request.Form(flex + "t").Count;
if( kkn && ktn )
{
var kk = getFParamInt(flex + "key"); // kenmerk key
var kt = getFParam(flex + "t", ""); // Type letter
var kv = getFParam(flex + "val", ""); // kenmerk waarde
var kk = getFParamInt(flex + "key"); // kenmerk key
var kt = getFParam(flex + "t", ""); // Type letter
var kv = getFParam(flex + "val", ""); // kenmerk waarde
var ke = Request.Form(flex + "e").Count; // Flexkenmerk is een expressie.
// ATTENTIE: Als het een numeriek/decimaal veld is, kan het zijn dat er een komma in voorkomt die eigenlijk een punt moet zijn.
// Als het een numeriek/decimaal veld is, kan het ook een checkbox zijn
@@ -1887,7 +1970,8 @@ function flexkenmerken2jsondata(params)
jsondata.push( { id: kk,
//name: "",
type: kt,
value: kv
value: kv,
expr: (ke? 1 : 0)
}
);
}