AAIT#36710: Berekende waarde van velden in Facilitor.

svn path=/Website/trunk/; revision=31967
This commit is contained in:
Maykel Geerdink
2016-12-14 15:35:51 +00:00
parent 1dd957c251
commit e0281d691e
4 changed files with 81 additions and 30 deletions

View File

@@ -628,7 +628,7 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
mld_melding.melder_key,
{ kostenplaatsKey: mld_melding.kostenpl_key || -1,
label: (urole == "fe")?L("lcl_mld_inf_Kostenplaats"):L("lcl_mld_inf_Kostenklant"),
extraParamField: "module",
extraParamField: "kmodule",
extracode: "M",
filtercode: "AA", // Alleen actieve kostenplaatsen kunnen selecteren "All Active". Huidige waarde als initi<74>le waarde kan bij kostenplaatsen altijd.
urlAdd: [{ urlParam: "prs_key", field: (frontend && S("mld_allow_for_others") == 1 && S("prs_dep_default_kpn_voor") == 1? "personFor" : "person") }, { urlParam: "showeigenkp", field: "eigenkp" }],

View File

@@ -257,11 +257,11 @@ function onChangeKostenklant()
}
else
// Huidige waarde niet zomaar laten staan. Wel checken of het een geldige waarde is.
sgAccount.setValue($("#account").val(), $("#account_show").val(), false, true, $("#module").val(), true);
sgAccount.setValue($("#account").val(), $("#account_show").val(), false, true, $("#kmodule").val(), true);
}
else
// Huidige waarde niet zomaar laten staan. Wel checken of het een geldige waarde is.
sgAccount.setValue($("#account").val(), $("#account_show").val(), false, true, $("#module").val(), true);
sgAccount.setValue($("#account").val(), $("#account_show").val(), false, true, $("#kmodule").val(), true);
// Mocht er maar <20><>n waarde voorkomen in de suggesbox dan deze niet selecteren. Kostenplaats is niet verplicht.
//sgAccount.CheckJustOne();
@@ -403,7 +403,7 @@ function onChangeGebouw(locbld_changed, do_not_change_kp) // sl is de gebouw sel
// 1) kostenklant vinkje aan is of
// 2) locatie of gebouw veranderd is en kostenklant vinkje uit is en de kostenplaats niet een ALG kostenplaats is of niet is ingevuld
if ($("#kostenklant").prop("checked") ||
(locbld_changed && (!$("#kostenklant").prop("checked") && ($("#module").val() != "ALG" && $("#module").val() != ""))))
(locbld_changed && (!$("#kostenklant").prop("checked") && ($("#kmodule").val() != "ALG" && $("#kmodule").val() != ""))))
{
return; // Niets doen bij kostenklant en als PRS-kostenplaats
}
@@ -426,7 +426,7 @@ function process_melder_info(data)
{
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry);
// lastTry is true zodat suggestbox wordt leeggemaakt indien waarde niet voorkomt (en niet de laatst waarde wordt getoond)
// nameParam.module
// nameParam.kmodule
if ($("#kostenklant").prop("checked"))
{
// Zet eigen (default) kostenplaats alleen als kostenklant AAN. Indien niet aanwezig dan wordt suggestbox automatisch leeg gemaakt.
@@ -435,7 +435,7 @@ function process_melder_info(data)
// Deze waarde kan dan fout gezet worden (Rood weergegeven). Dit komt door timingproblemen tussen verschillende jquery ajax code!
// Daarom zorgen dat jquery ajax code van deze kostenplaats suggest asynchroon wordt uitgevoerd.
jQuery.ajaxSetup({async: false});
sgAccount.setValue(data.kostenplaats_key, data.kpn_string, true, true, data.module, true);
sgAccount.setValue(data.kostenplaats_key, data.kpn_string, true, true, data.kmodule, true);
jQuery.ajaxSetup({async: true});
}
@@ -829,7 +829,7 @@ function onChangeEnddate()
var nw = enddate; // startdatum wordt einddatum.
else
var nw = melddatum; // startdatum wordt melddatum.
$("#show_startdate").datepicker("setDate", new Date(nw))
$("#show_startdate").datepicker("setDate", new Date(nw));
$("#startdate").val(nw);
}
// else startdum == melddatum.

View File

@@ -292,6 +292,21 @@ function listKenmerk(sql, module, key, props)
key = srtdeel_key;
}
// Zitten er expressie kenmerken tussen?
var flexExprIncluded = false;
for (i = 1; !oRs.eof; i++)
{
var kdefault = oRs("kenmerk_default").Value;
if (kdefault && kdefault.match('##EXPR##') != null)
{
flexExprIncluded = true;
break;
}
oRs.MoveNext();
}
oRs.MoveFirst();
// ============================================================================================
// Doorloop alle flexkenmerken
if (key < 0 && tmpfolder == "")
@@ -302,7 +317,7 @@ function listKenmerk(sql, module, key, props)
{
var val = null;
val_seperator = ':';
var def_val = oRs("kenmerk_default").value;
var def_val = oRs("kenmerk_default").Value;
var isExpression = false;
if (!kenmerk_search && !multiMode)
@@ -1036,9 +1051,21 @@ function listKenmerk(sql, module, key, props)
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.
// Ooit meer HTML-types toepassen (number, float)
var onchangeExp = "";
if (flexExprIncluded && (ktype == "N" || ktype == "D") && !isExpression)
onchangeExp = ";calculateFlexExpressions(\"" + module
+ "\", " + key
+ ", \"" + niveau
+ "\", \"" + nameprefix
+ "\", \"" + extraserie
+ "\");";
kv = "<input type='text'"
+ (!readonlyfield && kregexp ? " regexp='" + kregexp + "' " : "")
+ (!readonlyfield ? " onChange='checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " : "")
+ (!readonlyfield
? " onChange='checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")"
+ onchangeExp
+ "' "
: "")
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " : "")
+ (readonlyfield? " readonly tabindex=-1 "
: " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' ");
@@ -1093,7 +1120,7 @@ function listKenmerk(sql, module, key, props)
+ (isExpression? " expression " : "")
+ "'"
+ (required ? " required='required' " : "")
+ (isExpression? " readonly " : "")
+ (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) + "'"
@@ -1720,9 +1747,9 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
var trackarray = []; // eventuele tracking
var hasExpression = false;
for (kenmerk=0; kenmerk<flexdata.length; kenmerk++)
for (kenmerkkey in flexdata)
{
var flex = flexdata[kenmerk];
var flex = flexdata[kenmerkkey];
var vold = kenmerk_keys[flex.id]? kenmerk_keys[flex.id] : "";
hasExpression = hasExpression || flex.expr == 1;
var vnew = flex.value || "";
@@ -1870,21 +1897,21 @@ function _saveFlexKenmerken(parentKey, params, flexdata) // TODO: support multiM
// Vorige waarden verwijderen.
removekenmerkwaarden(module, parentKey);
savekenmerkwaarden(module, parentKey, params.moduleVal, flexdata);
evaluateflexexpresions(module, parentKey);
evaluateflexexpressions(module, parentKey, true);
//removekenmerkwaarden(module, parentKey);
}
return trackarray;
}
function savekenmerkwaarden(module, refkey, niveau, flexdata)
function savekenmerkwaarden(module, refkey, kenmerkniveau, flexdata)
{
for (kenmerk = 0; kenmerk < flexdata.length; kenmerk++)
for (kenmerkkey in flexdata)
{
var sql = "INSERT INTO fac_kenmwaarden"
+ " (fac_kenmwaarden_module"
+ " , fac_kenmwaarden_refkey"
+ (niveau
+ (kenmerkniveau
? " , fac_kenmwaarden_niveau"
: "")
+ " , fac_kenmwaarden_kenmerk_key"
@@ -1895,29 +1922,29 @@ function savekenmerkwaarden(module, refkey, niveau, flexdata)
+ " )"
+ " VALUES (" + safe.quoted_sql(module)
+ " , " + refkey
+ (niveau
? " , " + safe.quoted_sql(niveau)
+ (kenmerkniveau
? " , " + safe.quoted_sql(kenmerkniveau)
: "")
+ " , " + flexdata[kenmerk].id
+ " , " + safe.quoted_sql(flexdata[kenmerk].value)
+ " , " + safe.quoted_sql(flexdata[kenmerk].type)
+ " , " + flexdata[kenmerk].expr
+ " , " + flexdata[kenmerkkey].id
+ " , " + safe.quoted_sql(flexdata[kenmerkkey].value)
+ " , " + safe.quoted_sql(flexdata[kenmerkkey].type)
+ " , " + flexdata[kenmerkkey].expr
+ " , " + user_key
+ " )";
Oracle.Execute(sql);
}
}
function evaluateflexexpresions(module, refkey)
function evaluateflexexpressions(module, refkey, savetodb)
{ // Berekening van de expressie kenmerken.
var sql = "BEGIN flx.evaluateflexexpresions(" + safe.quoted_sql(module) + ", " + refkey + ", " + user_key + "); END;";
var sql = "BEGIN flx.evaluateflexexpressions(" + safe.quoted_sql(module) + ", " + refkey + ", " + user_key + ", " + (savetodb? 1 : 0) + "); END;";
try
{
Oracle.Execute(sql);
}
catch(e)
{
var message = "kenmerk_common.inc (evaluateflexexpresions): Error writing flex expression\n" + e.description;
var message = "kenmerk_common.inc (evaluateflexexpressions): Error writing flex expression\n" + e.description;
__DoLog(message);
abort_with_warning(message);
}
@@ -1984,13 +2011,13 @@ function flexkenmerken2jsondata(params)
// Ook nodig voor correctere tracking
if ((kt == "S" || kt == "R") && kv == "-1") kv = ""; // anders zouden we '-1' opslaan
jsondata.push( { id: kk,
jsondata[kk] = { id: kk,
//name: "",
type: kt,
value: kv,
expr: (ke? 1 : 0)
}
);
expr: (ke? 1 : 0),
kfieldid: flex
};
}
}
return jsondata;

View File

@@ -257,4 +257,28 @@ function xmlNodeDetails(key, xmlnode)
}
if (url != "")
FcltMgr.openDetail(url, "<%=L("lcl_bes_srtprod")%>", {callback: FcltMgr.reload});
}
}
function callback_flex_expr_info(json)
{
for (var kenmerk=0; kenmerk < json.length; kenmerk++)
{
$("#" + json[kenmerk].kfieldid + "val").val(json[kenmerk].waarde);
}
}
function calculateFlexExpressions(module, refkey, niveau, nameprefix, extraserie)
{
var params = $("[name=u2]").serialize()
+ "&module=" + module
+ "&refkey=" + refkey
+ "&niveau=" + niveau
+ "&nameprefix=" + nameprefix
+ "&extraserie=" + (extraserie? 1 : 0);
$.post("../Shared/calculate_flex_expr.asp",
params,
FcltCallbackAndThenAlways(callback_flex_expr_info),
"json");
}