Openbravo Issue Tracking System - Openbravo ERP
View Issue Details
0029248Openbravo ERPA. Platformpublic2015-03-12 09:562015-03-13 11:16
caristu 
AugustoMauch 
immediateminoralways
closedfixed 
5
pi 
3.0PR15Q2 
alostale
Core
Production - Confirmed Stable
2014-05-20
3.0PR14Q3
https://code.openbravo.com/erp/devel/pi/rev/d9ce373c75dad51598fb943d75e4d8e56f1d56eb [^]
No
0029248: Can't filter in numeric fields using the value 0
Is not possible to filter numeric fields using the value 0, the following error appears in the javascript console:

  "Uncaught TypeError: Cannot read property 'operator' of undefined"
1) Go to the Sales Order window
2) Try to filter by Delivery Status or Invoice Status fields , using the value 0
3) Notice that the filtering is not done and the error in description appears
No tags attached.
depends on backport 00292533.0PR15Q1.2 closed AugustoMauch Can't filter in numeric fields using the value 0 
depends on backport 00292543.0PR14Q3.8 closed AugustoMauch Can't filter in numeric fields using the value 0 
caused by defect 0026305 closed guillermogil [PR14Q2]In column filter, when i enter ^511 and press tab, filter value gets deleted 
Issue History
2015-03-12 09:56caristuNew Issue
2015-03-12 09:56caristuAssigned To => AugustoMauch
2015-03-12 09:56caristuModules => Core
2015-03-12 09:56caristuTriggers an Emergency Pack => No
2015-03-12 09:56caristuIssue Monitored: networkb
2015-03-12 09:57caristuRegression introduced in release => 3.0PR14Q4
2015-03-12 09:57caristuversion => pi
2015-03-12 11:07AugustoMauchRegression level => Production - Confirmed Stable
2015-03-12 11:07AugustoMauchRegression date => 2014-05-20
2015-03-12 11:07AugustoMauchRegression introduced in release3.0PR14Q4 => 3.0PR14Q3
2015-03-12 11:07AugustoMauchRegression introduced by commit => https://code.openbravo.com/erp/devel/pi/rev/d9ce373c75dad51598fb943d75e4d8e56f1d56eb [^]
2015-03-12 11:18AugustoMauchSummaryCan't filter in some fields using the value 0 => Can't filter in numeric fields using the value 0
2015-03-12 11:18AugustoMauchDescription Updatedbug_revision_view_page.php?rev_id=7934#r7934
2015-03-12 11:18AugustoMauchSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=7936#r7936
2015-03-12 11:33AugustoMauchStatusnew => scheduled
2015-03-12 11:49AugustoMauchRelationship addedcaused by 0026305
2015-03-12 12:56hgbotCheckin
2015-03-12 12:56hgbotNote Added: 0075481
2015-03-12 12:56hgbotStatusscheduled => resolved
2015-03-12 12:56hgbotResolutionopen => fixed
2015-03-12 12:56hgbotFixed in SCM revision => http://code.openbravo.com/erp/devel/pi/rev/59a302602f2f7757baf69cbdb1862014393bd9f7 [^]
2015-03-13 03:18hudsonbotCheckin
2015-03-13 03:18hudsonbotNote Added: 0075513
2015-03-13 09:26AugustoMauchNote Added: 0075518
2015-03-13 11:16alostaleReview Assigned To => alostale
2015-03-13 11:16alostaleNote Added: 0075529
2015-03-13 11:16alostaleStatusresolved => closed
2015-03-13 11:16alostaleFixed in Version => 3.0PR15Q2

Notes
(0075481)
hgbot   
2015-03-12 12:56   
Repository: erp/devel/pi
Changeset: 59a302602f2f7757baf69cbdb1862014393bd9f7
Author: Augusto Mauch <augusto.mauch <at> openbravo.com>
Date: Thu Mar 12 12:00:30 2015 +0100
URL: http://code.openbravo.com/erp/devel/pi/rev/59a302602f2f7757baf69cbdb1862014393bd9f7 [^]

Fixes issue 29248: 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
---
(0075513)
hudsonbot   
2015-03-13 03:18   
A changeset related to this issue has been promoted main and to the
Central Repository, after passing a series of tests.

Promotion changeset: https://code.openbravo.com/erp/devel/main/rev/6f599d5217c4 [^]
Maturity status: Test
(0075518)
AugustoMauch   
2015-03-13 09:26   
Test created in testlink: http://testlink.openbravo.com/testlink/linkto.php?tprojectPrefix=Communit&item=testcase&id=Communit-8136 [^]
(0075529)
alostale   
2015-03-13 11:16   
code reviewed

tested in Sales Order delivery status (computed column) and total gross amount (regular column) with values:
-0
-100
->1000
-<1000
-^3 (as reported in 0026305, in this case the filter is removed as it is not supported textual filters in numeric columns)