# HG changeset patch
# User Augusto Mauch <augusto.mauch@openbravo.com>
# Date 1405598314 -7200
#      Thu Jul 17 13:58:34 2014 +0200
# Node ID bf844ee869c868f69195158e33eb885e9be457c3
# Parent  571b30a9364576f658637c97cc16143b5e50a699
Fixes issue 26988: Whereclauses do not work on a field with Tree Reference

The context info was not being sent to the datasource in the request.

diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-tree.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-tree.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-tree.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/form/formitem/ob-formitem-tree.js
@@ -286,6 +286,8 @@
       dsRequest.params._startRow = 0;
       dsRequest.params._endRow = OB.Properties.TreeDatasourceFetchLimit;
       dsRequest.params.treeReferenceId = target.treeItem.treeReferenceId;
+      var contextInfo = target.treeItem.form.view.getContextInfo(false, true);
+      isc.addProperties(dsRequest.params, contextInfo);
       return this.Super('transformRequest', arguments);
     };
 
@@ -516,11 +518,14 @@
       setDataSource: function (ds, fields) {
         var me = this;
         ds.transformRequest = function (dsRequest) {
-          var target = window[dsRequest.componentId];
+          var target = window[dsRequest.componentId],
+              contextInfo;
           dsRequest.params = dsRequest.params || {};
           dsRequest.params._startRow = 0;
           dsRequest.params._endRow = OB.Properties.TreeDatasourceFetchLimit;
           dsRequest.params.treeReferenceId = target.treeItem.treeReferenceId;
+          contextInfo = target.treeItem.form.view.getContextInfo(false, true);
+          isc.addProperties(dsRequest.params, contextInfo);
           return this.Super('transformRequest', arguments);
         };
 
@@ -674,11 +679,12 @@
 isc.OBTreeFilterSelectItem.addProperties({
 
   filterDataBoundPickList: function (requestProperties, dropCache) {
+    var contextInfo;
     requestProperties = requestProperties || {};
     requestProperties.params = requestProperties.params || {};
     // on purpose not passing the third boolean param
-    var contextInfo = this.treeWindow.treeItem.form.view.getContextInfo(false, true);
-
+    contextInfo = this.treeWindow.treeItem.form.view.getContextInfo(false, true);
+    isc.addProperties(requestProperties.params, contextInfo);
     // also add the special ORG parameter
     if (this.treeWindow.treeItem.form.getField('organization')) {
       requestProperties.params[OB.Constants.ORG_PARAMETER] = this.treeWindow.treeItem.form.getValue('organization');
diff --git a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/TreeDatasourceService.java b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/TreeDatasourceService.java
--- a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/TreeDatasourceService.java
+++ b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/TreeDatasourceService.java
@@ -733,7 +733,14 @@
     HashMap<String, String> replacements = new HashMap<String, String>();
     while (matcher.find()) {
       String contextPropertyName = hqlTreeWhereClause.substring(matcher.start(), matcher.end());
-      String value = parameters.get(contextPropertyName);
+      String value = null;
+      if (parameters.containsKey(contextPropertyName)) {
+        value = parameters.get(contextPropertyName);
+      } else if (parameters.containsKey(contextPropertyName.substring(1,
+          contextPropertyName.length() - 1))) {
+        // try again without the '@'
+        value = parameters.get(contextPropertyName.substring(1, contextPropertyName.length() - 1));
+      }
       replacements.put(contextPropertyName, "'" + value + "'");
     }
     String hqlCopy = new String(hqlTreeWhereClause);
diff --git a/src-db/database/model/functions/C_INVOICE_CREATE.xml b/src-db/database/model/functions/C_INVOICE_CREATE.xml
--- a/src-db/database/model/functions/C_INVOICE_CREATE.xml
+++ b/src-db/database/model/functions/C_INVOICE_CREATE.xml
@@ -803,7 +803,7 @@
    
           SELECT count(*) 
           INTO v_isSchedule
-          FROM DUAL WHERE EXISTS (SELECT 1 FROM C_ORDER WHERE ISSELECTED = 'Y' AND INVOICERULE IN ('S','D'));
+          FROM DUAL WHERE EXISTS (SELECT 1 FROM C_ORDER WHERE ISSELECTED = 'Y' AND INVOICERULE = 'S');
        
         /**
         * Invoice Schedule ======================================================
diff --git a/src-db/database/model/tables/M_RESERVATION.xml b/src-db/database/model/tables/M_RESERVATION.xml
--- a/src-db/database/model/tables/M_RESERVATION.xml
+++ b/src-db/database/model/tables/M_RESERVATION.xml
@@ -123,15 +123,6 @@
       <foreign-key foreignTable="M_WAREHOUSE" name="M_RESERVATION_WAREHOUSE">
         <reference local="M_WAREHOUSE_ID" foreign="M_WAREHOUSE_ID"/>
       </foreign-key>
-      <index name="M_RESERVATION_PRODUCT_IDX" unique="false">
-        <index-column name="M_PRODUCT_ID"/>
-      </index>
-      <index name="M_RESERVATION_RESSTATUS_IDX" unique="false">
-        <index-column name="RES_STATUS"/>
-      </index>
-      <index name="M_RESERVATION_UOM_IDX" unique="false">
-        <index-column name="C_UOM_ID"/>
-      </index>
       <check name="M_RESERVATION_ACTIVE_CHK"><![CDATA[ISACTIVE IN ('Y', 'N')]]></check>
     </table>
   </database>
diff --git a/src-db/database/model/tables/M_RESERVATION_STOCK.xml b/src-db/database/model/tables/M_RESERVATION_STOCK.xml
--- a/src-db/database/model/tables/M_RESERVATION_STOCK.xml
+++ b/src-db/database/model/tables/M_RESERVATION_STOCK.xml
@@ -82,12 +82,6 @@
       <index name="M_RESERVATION_STOCK_RES" unique="false">
         <index-column name="M_RESERVATION_ID"/>
       </index>
-      <index name="M_RESERVSTOCK_ATTRSETINS_IDX" unique="false">
-        <index-column name="M_ATTRIBUTESETINSTANCE_ID"/>
-      </index>
-      <index name="M_RESERVSTOCK_LOCATOR_IDX" unique="false">
-        <index-column name="M_LOCATOR_ID"/>
-      </index>
       <index name="M_RESERVSTOCK_ORDERLINE_IDX" unique="false">
         <index-column name="C_ORDERLINE_ID"/>
       </index>
diff --git a/src-db/database/sourcedata/AD_COLUMN.xml b/src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml
+++ b/src-db/database/sourcedata/AD_COLUMN.xml
@@ -29420,7 +29420,8 @@
 <!--2163-->  <HELP><![CDATA[An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.]]></HELP>
 <!--2163-->  <COLUMNNAME><![CDATA[AD_Org_ID]]></COLUMNNAME>
 <!--2163-->  <AD_TABLE_ID><![CDATA[259]]></AD_TABLE_ID>
-<!--2163-->  <AD_REFERENCE_ID><![CDATA[19]]></AD_REFERENCE_ID>
+<!--2163-->  <AD_REFERENCE_ID><![CDATA[8C57A4A2E05F4261A1FADF47C30398AD]]></AD_REFERENCE_ID>
+<!--2163-->  <AD_REFERENCE_VALUE_ID><![CDATA[35FA79C4CAF04576848EA904E7AC83DF]]></AD_REFERENCE_VALUE_ID>
 <!--2163-->  <AD_VAL_RULE_ID><![CDATA[49DC1D6F086945AB82F84C66F5F13F16]]></AD_VAL_RULE_ID>
 <!--2163-->  <FIELDLENGTH><![CDATA[22]]></FIELDLENGTH>
 <!--2163-->  <DEFAULTVALUE><![CDATA[@#AD_Org_ID@]]></DEFAULTVALUE>
diff --git a/src-db/database/sourcedata/AD_REFERENCE.xml b/src-db/database/sourcedata/AD_REFERENCE.xml
--- a/src-db/database/sourcedata/AD_REFERENCE.xml
+++ b/src-db/database/sourcedata/AD_REFERENCE.xml
@@ -4644,6 +4644,18 @@
 <!--2FE25E4AF395479EB8BAB0539A829C28-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
 <!--2FE25E4AF395479EB8BAB0539A829C28--></AD_REFERENCE>
 
+<!--35FA79C4CAF04576848EA904E7AC83DF--><AD_REFERENCE>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <AD_REFERENCE_ID><![CDATA[35FA79C4CAF04576848EA904E7AC83DF]]></AD_REFERENCE_ID>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <NAME><![CDATA[Org Tree Reference]]></NAME>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <ISBASEREFERENCE><![CDATA[N]]></ISBASEREFERENCE>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <PARENTREFERENCE_ID><![CDATA[8C57A4A2E05F4261A1FADF47C30398AD]]></PARENTREFERENCE_ID>
+<!--35FA79C4CAF04576848EA904E7AC83DF-->  <ISVALUEDISPLAYED><![CDATA[N]]></ISVALUEDISPLAYED>
+<!--35FA79C4CAF04576848EA904E7AC83DF--></AD_REFERENCE>
+
 <!--368E5F32B443454093D14D4E0AD44E13--><AD_REFERENCE>
 <!--368E5F32B443454093D14D4E0AD44E13-->  <AD_REFERENCE_ID><![CDATA[368E5F32B443454093D14D4E0AD44E13]]></AD_REFERENCE_ID>
 <!--368E5F32B443454093D14D4E0AD44E13-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
