(0075496)
|
hgbot
|
2015-03-12 17:08
|
|
Repository: erp/backports/3.0PR14Q3.8
Changeset: ea610afa4225516668fe5f6c86c9232ff8d12013
Author: Augusto Mauch <augusto.mauch <at> openbravo.com>
Date: Thu Mar 12 12:00:30 2015 +0100
URL: http://code.openbravo.com/erp/backports/3.0PR14Q3.8/rev/ea610afa4225516668fe5f6c86c9232ff8d12013 [^]
Fixes issue 29254: 0 can be used to filter numeric columns
In this changeset [1] this code was added to the OBNumberItem.parseValueExpressions function:
ret = this.Super('parseValueExpressions', [value, fieldName, operator]);
+
+ // if operator is not supported remove it
+ if (!this.validOperators.contains(ret.operator)) {
+ ret.operator = '';
+ ret.value = '';
+ this.setValue('');
+ }
if (ret && ret.start) {
ret.start = this.convertToTypedValue(ret.start);
}
The problem is that if the provided value is 0, this.Super('parseValueExpressions', [value, fieldName, operator]) will return undefined. This happens because of a bug in smartclient's implementation of the
parseValueExpressions function. This code is placed at the beginning of that function:
if (!value) value = this.getValue();
if (!value) return;
if (!isc.isA.String(value)) value += "";
If the provided value is 0, the value will be taken from this.getValue(). The returned value will again be evaluated to false, so the function will not return any value. Right after that, there is a comman
d to convert the provided value to String.
To fix this, in the call to this.Super('parseValueExpressions'), the string representation of the number will be passed instead of its numerical value. This way smartclient will accept the value and will n
ot return undefined. Smartclient was already converting the passed values to String, so there is no risk there.
The value passed to the OBNumberItem.parseValueExpressions is not modified to prevent unexpected consequences. A copy of it is converted to string and passed to the this.Super('parseValueExpressions') func
tion.
[1] https://code.openbravo.com/erp/devel/pi/rev/d9ce373c75dad51598fb943d75e4d8e56f1d56eb [^]
---
M modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-number.js
---
|
|