FCLT#56379 Numerieke berekende waarde met decimalen wijzigt onterecht agv wijziging flex

svn path=/Website/trunk/; revision=40820
This commit is contained in:
Erik Groener
2019-02-06 13:19:02 +00:00
parent 6d93c16585
commit 14133a14f1
2 changed files with 44 additions and 7 deletions

View File

@@ -50,10 +50,20 @@ savekenmerkwaarden(module, refkey, niveau, flexdata);
evaluateflexexpressions(module, refkey, false);
//removekenmerkwaarden(module, refkey);
function repeat(c,n)
{ // De functie str.repeat(n) volgens W3S kan hier niet gebruikt worden, dus zelf gemaakt.
var s = "";
for (i=0; i<n; i++)
s+=c;
return s;
}
var result = [];
var sql = "SELECT fac_kenmwaarden_kenmerk_key"
+ " , fac_kenmwaarden_waarde"
+ " , fac_kenmwaarden_kenmerktype"
+ " , fac_kenmwaarden_kenmerklen"
+ " , fac_kenmwaarden_kenmerkdec"
+ " FROM fac_kenmwaarden"
+ " WHERE fac_kenmwaarden_module = " + safe.quoted_sql(module)
+ " AND fac_kenmwaarden_refkey = " + refkey
@@ -62,9 +72,13 @@ var sql = "SELECT fac_kenmwaarden_kenmerk_key"
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
var waarde = oRs("fac_kenmwaarden_waarde").Value ||"";
var k_typ = oRs("fac_kenmwaarden_kenmerktype").Value;
var n_len = oRs("fac_kenmwaarden_kenmerklen").Value;
var n_dec = oRs("fac_kenmwaarden_kenmerkdec").Value;
result.push({ kfieldid: flexdata[oRs("fac_kenmwaarden_kenmerk_key").Value].kfieldid,
kenmerkkey: oRs("fac_kenmwaarden_kenmerk_key").Value,
waarde: oRs("fac_kenmwaarden_waarde").Value,
waarde: waarde,
kenmerktype: oRs("fac_kenmwaarden_kenmerktype").Value
});
oRs.MoveNext();

View File

@@ -432,6 +432,14 @@ function kenmerk_regel(kv_params)
// Alleen dan hidden name-velden er bij
kvhtml += "<input type=hidden name='"+kv_params.nameprefix + kv_params.idCounter+"key' id='"+kv_params.nameprefix + kv_params.idCounter+"key' value='"+kv_params.kkey+"'>";
kvhtml += "<input type=hidden name='"+kv_params.nameprefix + kv_params.idCounter+"t' id='"+kv_params.nameprefix + kv_params.idCounter+"t' value='"+kv_params.ktype+"'>";
if (kv_params.ktype == "C" || kv_params.ktype == "N" || kv_params.ktype == "B")
{
kvhtml += "<input type=hidden name='"+kv_params.nameprefix + kv_params.idCounter+"p' id='"+kv_params.nameprefix + kv_params.idCounter+"p' value='"+kv_params.klen+"'>";
if (kv_params.ktype == "N" || kv_params.ktype == "B")
{
kvhtml += "<input type=hidden name='"+kv_params.nameprefix + kv_params.idCounter+"d' id='"+kv_params.nameprefix + kv_params.idCounter+"d' value='"+kv_params.kdec+"'>";
}
}
if (kv_params.isExpression)
{
kvhtml += "<input type=hidden name='"+kv_params.nameprefix + kv_params.idCounter+"e' id='"+kv_params.nameprefix + kv_params.idCounter+"e' value='"+ ((kv_params.expressionClass == "flexshow") ? 2 : 1) +"'>";
@@ -1959,6 +1967,8 @@ function listKenmerk(sql, module, key, props)
, module: module
, kvolgnr: kvolgnr
, ktype: ktype
, klen: klen
, kdec: kdec
, kkey: kkey
, kdim: kdim
, readonlyfield: readonlyfield
@@ -2772,6 +2782,8 @@ function savekenmerkwaarden(module, refkey, kenmerkniveau, flexdata)
+ " , fac_kenmwaarden_kenmerk_key"
+ " , fac_kenmwaarden_waarde"
+ " , fac_kenmwaarden_kenmerktype"
+ " , fac_kenmwaarden_kenmerklen"
+ " , fac_kenmwaarden_kenmerkdec"
+ " , fac_kenmwaarden_isexpr"
+ " , prs_perslid_key"
+ " )"
@@ -2783,6 +2795,8 @@ function savekenmerkwaarden(module, refkey, kenmerkniveau, flexdata)
+ " , " + flexdata[kenmerkkey].id
+ " , " + safe.quoted_sql(flexdata[kenmerkkey].value)
+ " , " + safe.quoted_sql(flexdata[kenmerkkey].type)
+ " , " + (flexdata[kenmerkkey].len ? flexdata[kenmerkkey].len : "NULL")
+ " , " + (flexdata[kenmerkkey].dec ? flexdata[kenmerkkey].dec : "NULL")
+ " , " + (flexdata[kenmerkkey].expr ? 1 : 0) // 2 -> 0
+ " , " + user_key
+ " )";
@@ -2838,6 +2852,8 @@ function flexkenmerken2jsondata(params)
{
var kk = getFParamInt(flex + "key"); // kenmerk key
var kt = getFParam(flex + "t", ""); // Type letter
var kp = getFParam(flex + "p", ""); // lengte veld (alleen voor type C en N)
var kd = getFParam(flex + "d", ""); // aantal decimalen (alleen voor type N)
var kv = getFParam(flex + "val", ""); // kenmerk waarde
var ke = getFParamInt(flex + "e", 0); // Flexkenmerk is een expressie.
var checkVal = "check_" + flex + "val";
@@ -2865,12 +2881,6 @@ function flexkenmerken2jsondata(params)
// Als het een numeriek/decimaal veld is, kan het ook een checkbox zijn
if (kt == "N")
{
kv = kv.replace(",", "."); // We slaan altijd op met punten
if (kv.substr(0, 2) == "0.") // leading zero er af. Doet de database trigger ook en nu
if (kv.length == 2 || kv.substr(3) == " ")
kv = "0";
else
kv = kv.substr(1); // krijgen we geen ongewenste tracking.
// Kijken of het een checkbox is
var isCheckbox = getFParamInt("has_" + flex + "val", 0) == 1;
if (isCheckbox)
@@ -2878,6 +2888,17 @@ function flexkenmerken2jsondata(params)
var isChecked = Request.Form(flex + "val").Count;
kv = (isChecked ? "1" : ""); // Een niet aangevinkte checkbox hoeft niet opgeslagen te worden als de waarde "0".
}
else
{
kv = kv.replace(",", "."); // We slaan altijd op met punten
if (kv.substr(0, 2) == "0.") // leading zero er af. Doet de database trigger ook en nu
{
if (kv.length == 2 || kv.substr(3) == " ")
kv = "0";
else
kv = kv.substr(1); // krijgen we geen ongewenste tracking.
}
}
}
// Suggest kenmerken moeten ook gedelete worden als ze leeg zijn. Dus voor delete actie leeg maken.
@@ -2887,6 +2908,8 @@ function flexkenmerken2jsondata(params)
jsondata[kk] = { id: kk,
//name: "",
type: kt,
len: kp,
dec: kd,
value: kv,
expr: ke,
kfieldid: flex