From f7f554627c275b9d42fd74c7edc128c55c7ac04a Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 18 Feb 2022 06:35:44 +0100 Subject: [PATCH] IDEMPIERE-5195 SEARCH FAILURE FOR SAVED QUERIES + IDEMPIERE-4658 #resolve (#1191) - Fix issue reported in IDEMPIERE-5195 saving wrongly Yes/No values as true/false - Fix also wrong recover of timestamps just as dates (ignoring the time part) - Fix also IDEMPIERE-4568 reopened, adding wrongly operators --- .../adempiere/webui/window/FindWindow.java | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index 10e81e3633..7703855739 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -43,6 +43,7 @@ import org.adempiere.webui.ClientInfo; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.adwindow.AbstractADWindowContent; import org.adempiere.webui.component.Button; +import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Column; import org.adempiere.webui.component.Columns; import org.adempiere.webui.component.ComboItem; @@ -1420,19 +1421,29 @@ public class FindWindow extends Window implements EventListener, ValueCha } if(!selected) listColumn.setSelectedIndex(0); - if (liCol != null) - addOperators(liCol, listOperator); - selected = false; - for (int i = 0; i < op.length; i++) - { - ValueNamePair item = op[i]; - ComboItem li = new ComboItem(Msg.getMsg(Env.getCtx(), item.getName()), item.getValue()); - listOperator.appendChild(li); - if(item.getValue().equals(operator)) + if (liCol != null) { + addOperators(liCol, listOperator); + for (Component listitem : listOperator.getChildren()) { + if (listitem instanceof ComboItem) { + if (((ComboItem)listitem).getValue().equals(operator)) { + listOperator.setSelectedItem((ComboItem)listitem); + selected = true; + break; + } + } + } + } else { + for (int i = 0; i < op.length; i++) { - listOperator.setSelectedItem(li); - selected = true; + ValueNamePair item = op[i]; + ComboItem li = new ComboItem(Msg.getMsg(Env.getCtx(), item.getName()), item.getValue()); + listOperator.appendChild(li); + if(item.getValue().equals(operator)) + { + listOperator.setSelectedItem(li); + selected = true; + } } } if(!selected) listOperator.setSelectedIndex(0); @@ -2015,7 +2026,7 @@ public class FindWindow extends Window implements EventListener, ValueCha long time = 0; try { - time = DisplayType.getDateFormat_JDBC().parse(in).getTime(); + time = DisplayType.getTimestampFormat_Default().parse(in).getTime(); editor.setValue(new Timestamp(time)); } catch (Exception e) @@ -2028,9 +2039,14 @@ public class FindWindow extends Window implements EventListener, ValueCha editor.setValue(new Timestamp(time)); } else if (dt == DisplayType.YesNo) - editor.setValue(Boolean.valueOf(in)); + { + boolean val = ("Y".equalsIgnoreCase(in) || "true".equalsIgnoreCase(in)); + editor.setValue(val); + } else + { editor.setValue(in); + } editor.addValueChangeListener(this); @@ -2184,6 +2200,9 @@ public class FindWindow extends Window implements EventListener, ValueCha if(dtbox.getValue() != null) value = new Timestamp(((Date)dtbox.getValue()).getTime()); } + else if(compo instanceof Checkbox && cellQueryFrom.getAttribute("value") instanceof Boolean) { + value = ((boolean) cellQueryFrom.getAttribute("value") ? "Y" : "N"); + } else { value = cellQueryFrom.getAttribute("value"); } @@ -2250,12 +2269,13 @@ public class FindWindow extends Window implements EventListener, ValueCha if(dtbox.getValue() != null) value2 = new Timestamp(((Date)dtbox.getValue()).getTime()); } + else if(compo instanceof Checkbox && cellQueryTo.getAttribute("value") instanceof Boolean) { + value2 = ((boolean) cellQueryTo.getAttribute("value") ? "Y" : "N"); + } else { - value2 = cellQueryFrom.getAttribute("value"); + value2 = cellQueryTo.getAttribute("value"); } - - value2 = cellQueryTo.getAttribute("value"); if (value2 == null) continue; Object parsedValue2 = null;