# HG changeset patch
# Parent 9c881e0eb9bbaee0d09c76d0aae79dad78f6aade
re issue 16611: Fix initial filter when using custom query within selector

diff --git a/modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_FIELD.xml b/modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_FIELD.xml
--- a/modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_FIELD.xml
+++ b/modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_FIELD.xml
@@ -1099,7 +1099,7 @@
 <!--9A5A29111530107DE040007F01002F6B-->  <AD_TAB_ID><![CDATA[75FEAE3FF26F49E394BDF833B1B97647]]></AD_TAB_ID>
 <!--9A5A29111530107DE040007F01002F6B-->  <AD_COLUMN_ID><![CDATA[9A597DDF995CE963E040007F01002F75]]></AD_COLUMN_ID>
 <!--9A5A29111530107DE040007F01002F6B-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
-<!--9A5A29111530107DE040007F01002F6B-->  <DISPLAYLOGIC><![CDATA[@showingrid@='Y'&@custom_query@='Y']]></DISPLAYLOGIC>
+<!--9A5A29111530107DE040007F01002F6B-->  <DISPLAYLOGIC><![CDATA[@custom_query@='Y']]></DISPLAYLOGIC>
 <!--9A5A29111530107DE040007F01002F6B-->  <DISPLAYLENGTH><![CDATA[255]]></DISPLAYLENGTH>
 <!--9A5A29111530107DE040007F01002F6B-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
 <!--9A5A29111530107DE040007F01002F6B-->  <SEQNO><![CDATA[162]]></SEQNO>
diff --git a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
--- a/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
+++ b/modules/org.openbravo.userinterface.selector/src/org/openbravo/userinterface/selector/CustomQuerySelectorDatasource.java
@@ -181,6 +181,7 @@
 
     StringBuffer defaultExpressionsFilter = new StringBuffer();
     boolean hasFilter = false;
+    String valueFilter = null;
     List<SelectorField> fields = OBDao.getActiveOBObjectList(sel,
         Selector.PROPERTY_OBUISELSELECTORFIELDLIST);
     HashMap<String, String> criteria = getCriteria(parameters);
@@ -228,10 +229,16 @@
           }
         }
         additionalFilter.append(whereClause);
+      } else if (field == sel.getValuefield() && value != null ) {
+        // Handle special case we are trying to retrieve a particular object.
+        String whereClause = getWhereClause(value, field, xmlDateFormat);
+        valueFilter = NEW_FILTER_CLAUSE + " (" + whereClause +")";
       }
     }
     if (hasFilter) {
       additionalFilter.append(")");
+    } else if( valueFilter != null ) {
+      additionalFilter.append(valueFilter);
     }
     if (defaultExpressionsFilter.length() > 0) {
       additionalFilter.append(defaultExpressionsFilter);
diff --git a/src-db/database/sourcedata/OBUISEL_SELECTOR_FIELD.xml b/src-db/database/sourcedata/OBUISEL_SELECTOR_FIELD.xml
--- a/src-db/database/sourcedata/OBUISEL_SELECTOR_FIELD.xml
+++ b/src-db/database/sourcedata/OBUISEL_SELECTOR_FIELD.xml
@@ -562,6 +562,7 @@
 <!--B103893820FC4080809A97FABD49D8AF-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--B103893820FC4080809A97FABD49D8AF-->  <ISOUTFIELD><![CDATA[Y]]></ISOUTFIELD>
 <!--B103893820FC4080809A97FABD49D8AF-->  <DISPLAY_EXPRESSION><![CDATA[bpid]]></DISPLAY_EXPRESSION>
+<!--B103893820FC4080809A97FABD49D8AF-->  <CLAUSE_LEFT_PART><![CDATA[bp.id]]></CLAUSE_LEFT_PART>
 <!--B103893820FC4080809A97FABD49D8AF-->  <AD_REFERENCE_ID><![CDATA[13]]></AD_REFERENCE_ID>
 <!--B103893820FC4080809A97FABD49D8AF-->  <SHOWINPICKLIST><![CDATA[N]]></SHOWINPICKLIST>
 <!--B103893820FC4080809A97FABD49D8AF--></OBUISEL_SELECTOR_FIELD>
