diff --git a/org.adempiere.base/src/org/compiere/model/MLookupFactory.java b/org.adempiere.base/src/org/compiere/model/MLookupFactory.java index d6fd02381d..3eb7a984b8 100644 --- a/org.adempiere.base/src/org/compiere/model/MLookupFactory.java +++ b/org.adempiere.base/src/org/compiere/model/MLookupFactory.java @@ -20,6 +20,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.List; import java.util.Properties; import java.util.logging.Level; @@ -618,7 +619,12 @@ public class MLookupFactory retValue.DisplayColumn = lookupDisplayColumn; retValue.InfoWindowId = infoWindowId; retValue.QueryDirect = MRole.getDefault().addAccessSQL(directQuery, TableName, true, false); + List lookupDisplayColumns = new ArrayList(); + if (isValueDisplayed) + lookupDisplayColumns.add("Value"); + lookupDisplayColumns.add(lookupDisplayColumn != null ? lookupDisplayColumn : DisplayColumn); s_cacheRefTable.put(key.toString(), retValue.cloneIt()); + retValue.lookupDisplayColumns = lookupDisplayColumns; return retValue; } // getLookup_Table @@ -850,6 +856,11 @@ public class MLookupFactory msginf.toString(), ZoomWindow, ZoomWindowPO, zoomQuery); lInfo.DisplayColumn = displayColumn.toString(); lInfo.QueryDirect = MRole.getDefault().addAccessSQL(directQuery, TableName, true, false); + List lookupDisplayColumns = new ArrayList(); + for (LookupDisplayColumn ldc : list) { + lookupDisplayColumns.add(ldc.ColumnName); + } + lInfo.lookupDisplayColumns = lookupDisplayColumns; s_cacheRefTable.put(cacheKey.toString(), lInfo.cloneIt()); return lInfo; } // getLookup_TableDir diff --git a/org.adempiere.base/src/org/compiere/model/MLookupInfo.java b/org.adempiere.base/src/org/compiere/model/MLookupInfo.java index 9372f56d77..d316136dfb 100644 --- a/org.adempiere.base/src/org/compiere/model/MLookupInfo.java +++ b/org.adempiere.base/src/org/compiere/model/MLookupInfo.java @@ -20,6 +20,7 @@ import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.List; import java.util.Properties; import java.util.logging.Level; @@ -207,6 +208,8 @@ public class MLookupInfo implements Serializable, Cloneable public String DisplayColumn; public int InfoWindowId; + + public List lookupDisplayColumns = null; /** * String representation diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java index 7e9e29e775..01a1a03945 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java @@ -21,6 +21,7 @@ import static org.compiere.model.SystemIDs.COLUMN_C_INVOICELINE_M_PRODUCT_ID; import static org.compiere.model.SystemIDs.COLUMN_C_INVOICE_C_BPARTNER_ID; import java.beans.PropertyChangeEvent; +import java.util.List; import java.util.Properties; import java.util.logging.Level; @@ -226,6 +227,15 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value .append(",") .append("pagesize:") .append(MAX_AUTO_COMPLETE_ROWS); + if (lookup instanceof MLookup) { + MLookup mlookup = (MLookup) lookup; + List displayColumns = mlookup.getLookupInfo().lookupDisplayColumns; + if (displayColumns != null && displayColumns.size() > 0) { + query.append(",") + .append("searchcolumn:") + .append(displayColumns.get(0)); + } + } query.append("}"); s = query.toString(); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java index 927c5ba915..e871e0410c 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/info/InfoWindow.java @@ -506,8 +506,11 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL isQueryByUser = true; for (int i = 0; i < identifiers.size(); i++) { WEditor editor = identifiers.get(i); - if (isAutoComplete && i > 0) { - break; + if (isAutoComplete) { + if (!Util.isEmpty(autoCompleteSearchColumn)) { + if (!editor.getColumnName().equals(autoCompleteSearchColumn)) + continue; + } } try{ editor.setValue(queryValue); @@ -516,6 +519,8 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL } testCount(false); + if (isAutoComplete) + break; if (m_count > 0) { break; } else { @@ -1452,8 +1457,7 @@ public class InfoWindow extends InfoPanel implements ValueChangeListener, EventL row.appendChild(checkAND); } } - if (!isAutoComplete) - evalDisplayLogic(); + evalDisplayLogic(); if (!update) initParameters(); if (!isAutoComplete) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java index cfcec5066b..42d4e0714e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java @@ -160,22 +160,32 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener if (queryValue != null && queryValue.length() > 0) { Textbox[] txts = new Textbox[] {txt1, txt2, txt3, txt4}; + int i = 0; for(Textbox t : txts) { if (t != null && t.isVisible()) { + if (isAutoComplete) + { + if (!Util.isEmpty(autoCompleteSearchColumn)) + { + if (!autoCompleteSearchColumn.equals(m_queryColumns.get(i))) + continue; + } + } t.setValue(queryValue); testCount(); if (m_count <= 0) t.setValue(null); else break; + + if (isAutoComplete) + break; } - - if (isAutoComplete) - break; + i++; } - if (m_count <= 0) + if (m_count <= 0 && !isAutoComplete) { txt1.setValue(queryValue); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 4b9a9510e6..4fe59bbf04 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -318,6 +318,8 @@ public abstract class InfoPanel extends Window implements EventListener, if (t > 0) this.pageSize = t; } catch (Exception e) {} + } else if (pair[0].equalsIgnoreCase("searchcolumn")) { + this.autoCompleteSearchColumn = pair[1]; } } } @@ -462,6 +464,8 @@ public abstract class InfoPanel extends Window implements EventListener, protected int queryTimeout = 0; + protected String autoCompleteSearchColumn = null; + protected String queryValue; /**