From 7a75e026807781943e31e1ced6031596eded175d Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 16 Dec 2008 08:22:09 +0000 Subject: [PATCH] Apply Swing client 3.4 to 3.5 changes --- .../webui/component/DatetimeBox.java | 17 +- .../adempiere/webui/component/NumberBox.java | 9 + .../adempiere/webui/panel/InfoAssetPanel.java | 98 +-- .../webui/panel/InfoAssignmentPanel.java | 79 +- .../webui/panel/InfoBPartnerPanel.java | 242 +++--- .../webui/panel/InfoCashLinePanel.java | 151 ++-- .../webui/panel/InfoGeneralPanel.java | 92 ++- .../adempiere/webui/panel/InfoInOutPanel.java | 153 ++-- .../webui/panel/InfoInvoicePanel.java | 196 +++-- .../adempiere/webui/panel/InfoOrderPanel.java | 182 +++-- .../org/adempiere/webui/panel/InfoPanel.java | 41 +- .../webui/panel/InfoPaymentPanel.java | 146 ++-- .../webui/panel/InfoProductPanel.java | 178 ++--- .../adempiere/webui/panel/InvoiceHistory.java | 736 ++++++++++++++++++ .../org/adempiere/webui/panel/WSchedule.java | 16 +- .../adempiere/webui/window/InfoSchedule.java | 107 ++- 16 files changed, 1617 insertions(+), 826 deletions(-) create mode 100644 zkwebui/WEB-INF/src/org/adempiere/webui/panel/InvoiceHistory.java diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/DatetimeBox.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/DatetimeBox.java index 8288d1b28d..c3341d889d 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/DatetimeBox.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/DatetimeBox.java @@ -15,7 +15,6 @@ package org.adempiere.webui.component; import java.text.SimpleDateFormat; import java.util.Date; -import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zul.Timebox; @@ -127,4 +126,20 @@ public class DatetimeBox extends Panel { public void setDateFormat(SimpleDateFormat dateFormat) { dateBox.setFormat(dateFormat.toPattern()); } + + /** + * @return dateBox + */ + public Datebox getDatebox() + { + return dateBox; + } + + /** + * @return timeBox + */ + public Timebox getTimebox() + { + return timeBox; + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/NumberBox.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/NumberBox.java index 930e1ed966..a28c327402 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/NumberBox.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/NumberBox.java @@ -408,4 +408,13 @@ public class NumberBox extends Div { decimalBox.focus(); } + + /** + * + * @return decimalBox + */ + public Decimalbox getDecimalbox() + { + return decimalBox; + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssetPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssetPanel.java index fc692f7b0f..2718811a16 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssetPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssetPanel.java @@ -21,9 +21,13 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; +import org.adempiere.webui.apps.AEnv; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.VerticalBox; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; @@ -32,12 +36,12 @@ import org.adempiere.webui.event.WTableModelEvent; import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MLookupFactory; +import org.compiere.model.MQuery; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Msg; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; /** @@ -45,6 +49,10 @@ import org.zkoss.zul.Separator; * * @author Niraj Sohun * Aug, 02, 2007 +* +* Zk Port +* @author Elaine +* @version InfoAsset.java Adempiere Swing UI 3.4.1 */ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, EventListener @@ -105,16 +113,10 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev setStatusDB(Integer.toString(no)); // AutoQuery - if (value != null && value.length() > 0) executeQuery(); p_loadedOK = true; - - // Focus - // fieldValue.requestFocus(); - - //AEnv.positionCenterWindow(frame, this); } // InfoProduct /** @@ -123,73 +125,52 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev private void statInit() { - Hbox boxValue = new Hbox(); - + fieldValue.setWidth("100%"); + fieldName.setWidth("100%"); + labelValue.setValue(Msg.getMsg(Env.getCtx(), "Value")); fieldValue.addEventListener(Events.ON_CHANGE, this); - boxValue.setWidth("100%"); - boxValue.setWidths("40%, 60%"); - boxValue.appendChild(labelValue); - boxValue.appendChild(fieldValue); - - Hbox boxName = new Hbox(); - labelName.setValue(Msg.getMsg(Env.getCtx(), "Name")); fieldName.addEventListener(Events.ON_CANCEL, this); - - boxName.setWidth("100%"); - boxName.setWidths("40%, 60%"); - boxName.appendChild(labelName); - boxName.appendChild(fieldName); - - // From A_Asset. - - Hbox boxBPartner = new Hbox(); - + // From A_Asset. fBPartner_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 8065, DisplayType.Search), Msg.translate(Env.getCtx(), "C_BPartner_ID"), "", false, false, true); fBPartner_ID.addValueChangeListener(this); - boxBPartner.setWidth("100%"); - boxBPartner.setWidths("40%, "); - - boxBPartner.appendChild(fBPartner_ID.getLabel()); - boxBPartner.appendChild(fBPartner_ID.getComponent()); - - - Hbox boxProduct = new Hbox(); - fProduct_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 8047, DisplayType.Search), Msg.translate(Env.getCtx(), "M_Product_ID"), "", false, false, true); fProduct_ID.addValueChangeListener(this); - boxProduct.appendChild(fProduct_ID.getLabel()); - boxProduct.appendChild(fProduct_ID.getComponent()); + Grid grid = GridFactory.newGridLayout(); - VerticalBox boxCol1 = new VerticalBox(); - boxCol1.appendChild(boxValue); - boxCol1.appendChild(new Separator()); - boxCol1.appendChild(boxName); + Rows rows = new Rows(); + grid.appendChild(rows); - VerticalBox boxCol2 = new VerticalBox(); - boxCol2.appendChild(boxBPartner); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxProduct); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(labelValue.rightAlign()); + row.appendChild(fieldValue); + row.appendChild(fBPartner_ID.getLabel().rightAlign()); + row.appendChild(fBPartner_ID.getComponent()); - Hbox mainBox = new Hbox(); - mainBox.setWidth("100%"); - mainBox.setWidths("30%, 70%"); - mainBox.appendChild(boxCol1); - mainBox.appendChild(boxCol2); + row = new Row(); + rows.appendChild(row); + row.appendChild(labelName.rightAlign()); + row.appendChild(fieldName); + row.appendChild(fProduct_ID.getLabel().rightAlign()); + row.appendChild(fProduct_ID.getComponent()); + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); + this.setWidth("850px"); -// this.setTitle("Info Asset"); this.setClosable(true); this.setBorder("normal"); - this.appendChild(mainBox); + this.appendChild(grid); this.appendChild(new Separator()); this.appendChild(contentPanel); this.appendChild(new Separator()); @@ -207,7 +188,6 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev private void initInfo (String value, int A_Asset_ID, String whereClause) { // Create Grid - StringBuffer where = new StringBuffer(); where.append("a.IsActive='Y'"); @@ -217,7 +197,6 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev prepareTable(s_assetLayout, s_assetFROM, where.toString(), "a.Value"); // Set Value - if (value == null) value = "%"; @@ -352,11 +331,11 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev return false; } // hasHistory + // Elaine 2008/12/16 /** * Zoom */ - -/* public void zoom() + public void zoom() { log.info( "InfoAsset.zoom"); Integer A_Asset_ID = getSelectedRowKey(); @@ -369,9 +348,10 @@ public class InfoAssetPanel extends InfoPanel implements ValueChangeListener, Ev query.setRecordCount(1); int AD_WindowNo = getAD_Window_ID("A_Asset", true); - super.zoom (AD_WindowNo, query); + AEnv.zoom(AD_WindowNo, query); } // zoom -*/ + // + /** * Has Zoom * @return true diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssignmentPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssignmentPanel.java index d9efcb9cfb..51205b2921 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssignmentPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoAssignmentPanel.java @@ -26,8 +26,11 @@ import java.util.logging.Level; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Datebox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; -import org.adempiere.webui.component.VerticalBox; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; @@ -44,7 +47,7 @@ import org.compiere.util.Msg; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; -import org.zkoss.zul.Hbox; +import org.zkoss.zul.Div; import org.zkoss.zul.Separator; /** @@ -52,6 +55,10 @@ import org.zkoss.zul.Separator; * * @author Niraj Sohun * Aug 06, 2007 +* +* Zk Port +* @author Elaine +* @version InfoAssignment.java Adempiere Swing UI 3.4.1 */ public class InfoAssignmentPanel extends InfoPanel implements EventListener, ValueChangeListener @@ -115,14 +122,8 @@ public class InfoAssignmentPanel extends InfoPanel implements EventListener, Val int no = contentPanel.getRowCount(); setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); setStatusDB(Integer.toString(no)); - - // AutoQuery - // if (value != null && value.length() > 0) - // executeQuery(); p_loadedOK = true; - - //AEnv.positionCenterWindow(frame, this); } // InfoAssignmentPanel /** @@ -166,44 +167,46 @@ public class InfoAssignmentPanel extends InfoPanel implements EventListener, Val private void statInit() { - VerticalBox boxResourceType = new VerticalBox(); - boxResourceType.appendChild(fieldResourceType.getLabel()); - boxResourceType.appendChild(fieldResourceType.getComponent()); - - VerticalBox boxResource = new VerticalBox(); - boxResource.appendChild(fieldResource.getLabel()); - boxResource.appendChild(fieldResource.getComponent()); - - VerticalBox boxFrom = new VerticalBox(); - boxFrom.appendChild(labelFrom); - boxFrom.appendChild(fieldFrom); - - VerticalBox boxTo = new VerticalBox(); - boxTo.appendChild(labelTo); - boxTo.appendChild(fieldTo); - - // parameterPanel.add(labelPhone, null); - // parameterPanel.add(checkFuzzy, null); - - Hbox mainBox = new Hbox(); + fieldFrom.setWidth("180px"); + fieldTo.setWidth("180px"); bNew.addEventListener(Events.ON_CLICK, this); - mainBox.setWidth("100%"); - mainBox.setWidths("30%, 30%, 17%, 17%, 6%"); - mainBox.appendChild(boxResourceType); - mainBox.appendChild(boxResource); - mainBox.appendChild(boxFrom); - mainBox.appendChild(boxTo); - mainBox.appendChild(bNew); + Grid grid = GridFactory.newGridLayout(); - // parameterPanel.add(checkCustomer, null); + Rows rows = new Rows(); + grid.appendChild(rows); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(fieldResourceType.getLabel().rightAlign()); + row.appendChild(fieldResource.getLabel().rightAlign()); + row.appendChild(labelFrom.rightAlign()); + row.appendChild(labelTo.rightAlign()); + row.appendChild(new Label()); + + row = new Row(); + rows.appendChild(row); + row.appendChild(fieldResourceType.getComponent()); + row.appendChild(fieldResource.getComponent()); + Div div = new Div(); + div.setAlign("right"); + div.appendChild(fieldFrom); + row.appendChild(div); + div = new Div(); + div.setAlign("right"); + div.appendChild(fieldTo); + row.appendChild(div); + row.appendChild(bNew); + + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); + this.setWidth("850px"); -// this.setTitle("Info Asset"); this.setClosable(true); this.setBorder("normal"); - this.appendChild(mainBox); + this.appendChild(grid); this.appendChild(new Separator()); this.appendChild(contentPanel); this.appendChild(new Separator()); diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoBPartnerPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoBPartnerPanel.java index 9eb2f1852f..0705f13be0 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoBPartnerPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoBPartnerPanel.java @@ -22,30 +22,36 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; -import org.adempiere.webui.component.Panel; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.WListbox; import org.adempiere.webui.event.WTableModelEvent; import org.adempiere.webui.event.WTableModelListener; import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; +import org.compiere.model.MQuery; import org.compiere.util.CLogger; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Intbox; import org.zkoss.zul.Separator; -import org.zkoss.zul.Vbox; /** * Search Business Partner and return selection * Based on InfoBPartner written by Jorg Janke -* @author Sendy Yagambrum +* @author Sendy Yagambrum +* +* Zk Port +* @author Elaine +* @version InfoBPartner.java Adempiere Swing UI 3.4.1 */ @@ -69,7 +75,8 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl private Checkbox checkAND ; private Checkbox checkCustomer; private Checkbox checkVendor; - + + private int m_AD_User_ID_index = -1; // Elaine 2008/12/16 private int m_C_BPartner_Location_ID_index = -1; /** SalesOrder Trx */ @@ -109,14 +116,13 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl * @param whereClause where clause */ public InfoBPartnerPanel(String queryValue,int windowNo, boolean isSOTrx,boolean multipleSelection, String whereClause) - { - + { super (windowNo, "C_BPartner", "C_BPartner_ID",multipleSelection, whereClause); + setTitle(Msg.getMsg(Env.getCtx(), "InfoBPartner")); m_isSOTrx = isSOTrx; initComponents(); init(); initInfo(queryValue, whereClause); - setTitle(Msg.getMsg(Env.getCtx(), "InfoBPartner")); int no = contentPanel.getRowCount(); setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); @@ -160,16 +166,18 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl fieldPhone.setMaxlength(40); checkAND = new Checkbox(); - checkAND.addEventListener(Events.ON_CHECK, this); + checkAND.setLabel(Msg.getMsg(Env.getCtx(), "SearchAND")); checkAND.setChecked(true); + checkAND.addEventListener(Events.ON_CHECK, this); checkCustomer = new Checkbox(); + checkCustomer.setLabel(Msg.getMsg(Env.getCtx(), "OnlyCustomers")); checkCustomer.setChecked(true); checkCustomer.addEventListener(Events.ON_CHECK, this); checkVendor = new Checkbox(); checkVendor.setChecked(true); + checkVendor.setLabel(Msg.getMsg(Env.getCtx(), "OnlyVendors")); checkVendor.addEventListener(Events.ON_CHECK, this); - contentPanel = new WListbox(); contentPanel.setWidth("99%"); contentPanel.setHeight("400px"); contentPanel.setVflex(true); @@ -177,101 +185,48 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl private void init() { + fieldValue.setWidth("100%"); + fieldContact.setWidth("100%"); + fieldPhone.setWidth("100%"); - Panel pnlValue = new Panel(); - pnlValue.appendChild(lblValue); - pnlValue.appendChild(fieldValue); - pnlValue.setAlign("right"); + fieldName.setWidth("100%"); + fieldEMail.setWidth("100%"); + fieldPostal.setWidth("100%"); - Panel pnlName = new Panel(); - pnlName.appendChild(lblName); - pnlName.appendChild(fieldName); - pnlName.setAlign("right"); + Grid grid = GridFactory.newGridLayout(); - Panel pnlContact = new Panel(); - pnlContact.appendChild(lblContact); - pnlContact.appendChild(fieldContact); - pnlContact.setAlign("right"); + Rows rows = new Rows(); + grid.appendChild(rows); - Panel pnlEMail = new Panel(); - pnlEMail.appendChild(lblEMail); - pnlEMail.appendChild(fieldEMail); - pnlEMail.setAlign("right"); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lblValue.rightAlign()); + row.appendChild(fieldValue); + row.appendChild(lblContact.rightAlign()); + row.appendChild(fieldContact); + row.appendChild(lblPhone.rightAlign()); + row.appendChild(fieldPhone); + row.appendChild(m_isSOTrx ? checkCustomer : checkVendor); - Panel pnlPostal = new Panel(); - pnlPostal.appendChild(lblPostal); - pnlPostal.appendChild(fieldPostal); - pnlPostal.setAlign("right"); - - Panel pnlPhone = new Panel(); - pnlPhone.appendChild(lblPhone); - pnlPhone.appendChild(fieldPhone); - pnlPhone.setAlign("right"); - - Panel pnlCheckAND = new Panel(); - Label lblAND = new Label(); - lblAND.setValue("All/Any"); - pnlCheckAND.appendChild(checkAND); - pnlCheckAND.appendChild(lblAND); - pnlCheckAND.setAlign("left"); - - Panel pnlCheckCust = new Panel(); - Label lblCheckCust = new Label(); - lblCheckCust.setValue("Customers Only"); - pnlCheckCust.appendChild(checkCustomer); - pnlCheckCust.appendChild(lblCheckCust); - pnlCheckCust.setAlign("right"); - - Panel pnlCheckVendor = new Panel(); - Label lblCheckVendor = new Label(); - lblCheckVendor.setValue("Vendors Only"); - pnlCheckVendor.appendChild(checkVendor); - pnlCheckVendor.appendChild(lblCheckVendor); - pnlCheckVendor.setAlign("right"); - - Vbox vbox1 = new Vbox(); - vbox1.appendChild(pnlValue); - vbox1.appendChild(pnlName); - - Vbox vbox2 = new Vbox(); - vbox2.appendChild(pnlContact); - vbox2.appendChild(pnlEMail); - - Vbox vbox3 = new Vbox(); - vbox3.appendChild(pnlPostal); - vbox3.appendChild(pnlPhone); - - Vbox vbox4 = new Vbox(); - vbox4.appendChild(pnlCheckAND); - - if (m_isSOTrx) - { - vbox4.appendChild(pnlCheckCust); - } - else - { - vbox4.appendChild(pnlCheckVendor); - } - - Hbox parameterPanel = new Hbox(); - parameterPanel.appendChild(vbox1); - parameterPanel.appendChild(vbox2); - parameterPanel.appendChild(vbox3); - parameterPanel.appendChild(vbox4); - - Panel mainPanel = new Panel(); - mainPanel.appendChild(parameterPanel); + row = new Row(); + rows.appendChild(row); + row.appendChild(lblName.rightAlign()); + row.appendChild(fieldName); + row.appendChild(lblEMail.rightAlign()); + row.appendChild(fieldEMail); + row.appendChild(lblPostal.rightAlign()); + row.appendChild(fieldPostal); + row.appendChild(checkAND); - mainPanel.setWidth("100%"); - mainPanel.appendChild(new Separator()); - mainPanel.appendChild(contentPanel); - mainPanel.appendChild(new Separator()); - mainPanel.appendChild(confirmPanel); - mainPanel.appendChild(new Separator()); - mainPanel.appendChild(statusBar); - - this.appendChild(mainPanel); + this.appendChild(grid); + this.appendChild(new Separator()); + this.appendChild(contentPanel); + this.appendChild(new Separator()); + this.appendChild(confirmPanel); + this.appendChild(new Separator()); + this.appendChild(statusBar); + this.setClosable(true); this.setBorder("normal"); this.setWidth("1000px"); @@ -301,9 +256,13 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl prepareTable(s_partnerLayout, s_partnerFROM, where.toString(), "C_BPartner.Value"); -// Get indexes + // Get indexes for (int i = 0; i < p_layout.length; i++) { + // Elaine 2008/12/16 + if (p_layout[i].getKeyPairColSQL().indexOf("AD_User_ID") != -1) + m_AD_User_ID_index = i; + // if (p_layout[i].getKeyPairColSQL().indexOf("C_BPartner_Location_ID") != -1) m_C_BPartner_Location_ID_index = i; } @@ -478,10 +437,15 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl int AD_User_ID = 0; int C_BPartner_Location_ID = 0; - - AD_User_ID = ((KeyNamePair)contentPanel.getValueAt(row, 3)).getKey(); - + // Elaine 2008/12/16 + if (m_AD_User_ID_index != -1) + { + Object data =contentPanel.getValueAt(row, m_AD_User_ID_index); + if (data instanceof KeyNamePair) + AD_User_ID = ((KeyNamePair)data).getKey(); + } + // if (m_C_BPartner_Location_ID_index != -1) { Object data =contentPanel.getValueAt(row, m_C_BPartner_Location_ID_index); @@ -495,7 +459,77 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "C_BPartner_Location_ID", String.valueOf(C_BPartner_Location_ID)); } // saveSelectionDetail - + + // Elaine 2008/12/16 + /************************************************************************** + * Show History + */ + protected void showHistory() + { + log.info(""); + Integer C_BPartner_ID = getSelectedRowKey(); + if (C_BPartner_ID == null) + return; + InvoiceHistory ih = new InvoiceHistory (this, C_BPartner_ID.intValue(), + 0, 0, 0); + ih.setVisible(true); + ih = null; + } // showHistory + + /** + * Has History + * @return true + */ + protected boolean hasHistory() + { + return true; + } // hasHistory + + /** + * Zoom + */ + public void zoom() + { + log.info( "InfoBPartner.zoom"); + Integer C_BPartner_ID = getSelectedRowKey(); + if (C_BPartner_ID == null) + return; + // AEnv.zoom(MBPartner.Table_ID, C_BPartner_ID.intValue(), true); // SO + + MQuery query = new MQuery("C_BPartner"); + query.addRestriction("C_BPartner_ID", MQuery.EQUAL, C_BPartner_ID); + query.setRecordCount(1); + int AD_WindowNo = getAD_Window_ID("C_BPartner", true); // SO + AEnv.zoom (AD_WindowNo, query); + } // zoom + + /** + * Has Zoom + * @return true + */ + protected boolean hasZoom() + { + return true; + } // hasZoom + + /** + * Customize + */ + protected void customize() + { + log.info( "InfoBPartner.customize"); + } // customize + + /** + * Has Customize + * @return false + */ + protected boolean hasCustomize() + { + return false; // for now + } // hasCustomize + // + public void tableChanged(WTableModelEvent event) { diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoCashLinePanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoCashLinePanel.java index ec7c9944e4..94fb399896 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoCashLinePanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoCashLinePanel.java @@ -21,14 +21,16 @@ import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.Date; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Datebox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.VerticalBox; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; @@ -52,21 +54,16 @@ import org.zkoss.zul.Separator; * * @author Niraj Sohun * Aug 03, 2007 +* +* Zk Port +* @author Elaine +* @version InfoCashLine.java Adempiere Swing UI 3.4.1 */ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener, EventListener { private static final long serialVersionUID = 1L; - - /** list of query columns */ - private ArrayList m_queryColumns = new ArrayList(); - - /** Table Name */ - private String m_tableName; - - /** Key Column Name */ - private String m_keyColumn; - + private Textbox fName = new Textbox(); private Textbox fAmtTo = new Textbox(); private Textbox fAmtFrom = new Textbox(); @@ -97,8 +94,6 @@ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener, "c.StatementDate", Timestamp.class), new ColumnInfo(Msg.translate(Env.getCtx(), "Line"), "cl.Line", Integer.class), - // new ColumnInfo(Msg.translate(Env.getCtx(), "C_Currency_ID"), - // "(SELECT ISO_Code FROM C_Currency c WHERE c.C_Currency_ID=cl.C_Currency_ID)", String.class), new ColumnInfo(Msg.translate(Env.getCtx(), "Amount"), "cl.Amount", BigDecimal.class, true, true, null), new ColumnInfo(Msg.translate(Env.getCtx(), "C_Invoice_ID"), @@ -152,11 +147,6 @@ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener, fName .setValue(value); executeQuery(); } - - //pack(); - - // Focus - // fName.requestFocus(); } // InfoCashLinePanel /** @@ -166,120 +156,83 @@ public class InfoCashLinePanel extends InfoPanel implements ValueChangeListener, private void statInit() throws Exception { - Hbox boxName = new Hbox(); + fName.setWidth("180px"); + fDateFrom.setWidth("165px"); + fDateTo.setWidth("165px"); + fAmtFrom.setWidth("180px"); + fAmtTo.setWidth("180px"); fName.addEventListener(Events.ON_CHANGE, this); - boxName.setWidth("100%"); - boxName.setWidths("40%, 60%"); - boxName.appendChild(lName ); - boxName.appendChild(fName); - - // fOrg_ID = new VLookup("AD_Org_ID", false, false, true, - // MLookupFactory.create(Env.getCtx(), 3486, m_WindowNo, DisplayType.TableDir, false), - // DisplayType.TableDir, m_WindowNo); - // lOrg_ID.setLabelFor(fOrg_ID); - // fOrg_ID.setBackground(AdempierePLAF.getInfoBackground()); - // 5249 - C_Cash.C_CashBook_ID - - Hbox boxCashBook = new Hbox(); - + // 5249 - C_Cash.C_CashBook_ID fCashBook_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 5249, DisplayType.TableDir), Msg.translate(Env.getCtx(), "C_CashBook_ID"), "", false, false, true); fCashBook_ID.addValueChangeListener(this); - boxCashBook.appendChild(fCashBook_ID.getLabel()); - boxCashBook.appendChild(fCashBook_ID.getComponent()); - - Hbox boxInvoice = new Hbox(); - // 5354 - C_CashLine.C_Invoice_ID fInvoice_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 5354, DisplayType.Search), Msg.translate(Env.getCtx(), "C_Invoice_ID"), "", false, false, true); fInvoice_ID.addValueChangeListener(this); - boxInvoice.appendChild(fInvoice_ID.getLabel()); - boxInvoice.appendChild(fInvoice_ID.getComponent()); - - Hbox boxBankAcct = new Hbox(); - // 5295 - C_CashLine.C_BankAccount_ID fBankAccount_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 5295, DisplayType.TableDir), Msg.translate(Env.getCtx(), "C_BankAccount_ID"), "", false, false, true); fBankAccount_ID.addValueChangeListener(this); - boxBankAcct.appendChild(fBankAccount_ID.getLabel()); - boxBankAcct.appendChild(fBankAccount_ID.getComponent()); - // 5296 - C_CashLine.C_Charge_ID // 5291 - C_CashLine.C_Cash_ID cbAbsolute.setLabel(Msg.translate(Env.getCtx(), "AbsoluteAmt")); cbAbsolute.addEventListener(Events.ON_CHECK, this); - Hbox boxDateFrom = new Hbox(); - boxDateFrom.setWidth("100%"); - boxDateFrom.setWidths("40%, 60%"); - boxDateFrom.appendChild(lDateFrom); - boxDateFrom.appendChild(fDateFrom); - - Hbox boxDateTo = new Hbox(); - boxDateTo.setWidth("100%"); - boxDateTo.setWidths("10%, 90%"); - boxDateTo.appendChild(lDateTo); - boxDateTo.appendChild(fDateTo); - - Hbox boxAmtFrom = new Hbox(); - boxAmtFrom.setWidth("100%"); - boxAmtFrom.setWidths("40%, 60%"); - boxAmtFrom.appendChild(lAmtFrom); - boxAmtFrom.appendChild(fAmtFrom); - - Hbox boxAmtTo = new Hbox(); - boxAmtTo.setWidth("100%"); - boxAmtTo.setWidths("10%, 90%"); - boxAmtTo.appendChild(lAmtTo); - boxAmtTo.appendChild(fAmtTo); - - VerticalBox boxCol1 = new VerticalBox(); - boxCol1.appendChild(boxCashBook); - boxCol1.appendChild(new Separator()); - boxCol1.appendChild(boxInvoice); - boxCol1.appendChild(new Separator()); - boxCol1.appendChild(boxBankAcct); + Grid grid = GridFactory.newGridLayout(); - VerticalBox boxCol2 = new VerticalBox(); - boxCol2.appendChild(boxName); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxDateFrom); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxAmtFrom); + Rows rows = new Rows(); + grid.appendChild(rows); - VerticalBox boxCol3 = new VerticalBox(); - boxCol3.appendChild(cbAbsolute); - boxCol3.appendChild(new Separator()); - boxCol3.appendChild(boxDateTo); - boxCol3.appendChild(new Separator()); - boxCol3.appendChild(boxAmtTo); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(fCashBook_ID.getLabel().rightAlign()); + row.appendChild(fCashBook_ID.getComponent()); + row.appendChild(lName.rightAlign()); + row.appendChild(fName); + row.appendChild(cbAbsolute); - // parameterPanel.add(lOrg_ID, null); - // parameterPanel.add(fOrg_ID, null); + row = new Row(); + row.setSpans("1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(fInvoice_ID.getLabel().rightAlign()); + row.appendChild(fInvoice_ID.getComponent()); + row.appendChild(lDateFrom.rightAlign()); + Hbox hbox = new Hbox(); + hbox.appendChild(fDateFrom); + hbox.appendChild(lDateTo); + hbox.appendChild(fDateTo); + row.appendChild(hbox); - Hbox mainBox = new Hbox(); - mainBox.setWidth("100%"); - mainBox.setWidths("40%, 50%, 10%"); - mainBox.appendChild(boxCol1); - mainBox.appendChild(boxCol2); - mainBox.appendChild(boxCol3); + row = new Row(); + row.setSpans("1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(fBankAccount_ID.getLabel().rightAlign()); + row.appendChild(fBankAccount_ID.getComponent()); + row.appendChild(lAmtFrom.rightAlign()); + hbox = new Hbox(); + hbox.appendChild(fAmtFrom); + hbox.appendChild(lAmtTo); + hbox.appendChild(fAmtTo); + row.appendChild(hbox); + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); + this.setWidth("850px"); -// this.setTitle("CashLine Info"); this.setClosable(true); this.setBorder("normal"); - this.appendChild(mainBox); + this.appendChild(grid); this.appendChild(new Separator()); this.appendChild(contentPanel); this.appendChild(new Separator()); diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java index d312a5b415..df34e09b6c 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoGeneralPanel.java @@ -25,10 +25,13 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.logging.Level; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Panel; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.WListbox; import org.adempiere.webui.event.WTableModelEvent; import org.adempiere.webui.window.FDialog; import org.compiere.minigrid.ColumnInfo; @@ -38,9 +41,13 @@ import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Msg; import org.zkoss.zk.ui.event.EventListener; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; +/** + * Zk Port + * @author Elaine + * @version InfoGeneral.java Adempiere Swing UI 3.4.1 + */ public class InfoGeneralPanel extends InfoPanel implements EventListener { private static final long serialVersionUID = 1L; @@ -67,16 +74,26 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener public InfoGeneralPanel(String queryValue, int windowNo,String tableName,String keyColumn, boolean isSOTrx, String whereClause) { super(windowNo, tableName, keyColumn, false,whereClause); - - //log.info(tableName + " - " + keyColumn + " - " + whereClause); setTitle(Msg.getMsg(Env.getCtx(), "Info")); - init(); - initComponents(); - - p_loadedOK = initInfo (); - + try + { + init(); + initComponents(); + + p_loadedOK = initInfo (); + } + catch (Exception e) + { + return; + } + + // Elaine 2008/12/15 + int no = contentPanel.getRowCount(); + setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); + setStatusDB(Integer.toString(no)); + // if (queryValue != null && queryValue.length() > 0) { @@ -88,34 +105,39 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener private void initComponents() { - Hbox parameterPanel = new Hbox(); - parameterPanel.setWidth("100%"); - parameterPanel.appendChild(lbl1); - parameterPanel.appendChild(txt1); - parameterPanel.appendChild(lbl2); - parameterPanel.appendChild(txt2); - parameterPanel.appendChild(lbl3); - parameterPanel.appendChild(txt3); - parameterPanel.appendChild(lbl4); - parameterPanel.appendChild(txt4); + Grid grid = GridFactory.newGridLayout(); + + Rows rows = new Rows(); + grid.appendChild(rows); + + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lbl1.rightAlign()); + row.appendChild(txt1); + row.appendChild(lbl2.rightAlign()); + row.appendChild(txt2); + row.appendChild(lbl3.rightAlign()); + row.appendChild(txt3); + row.appendChild(lbl4.rightAlign()); + row.appendChild(txt4); Panel mainPanel = new Panel(); mainPanel.setWidth("100%"); - mainPanel.appendChild(parameterPanel); + mainPanel.appendChild(grid); - contentPanel.setWidth("99%"); - contentPanel.setHeight("400px"); - contentPanel.setVflex(true); - mainPanel.appendChild(new Separator()); mainPanel.appendChild(contentPanel); mainPanel.appendChild(new Separator()); mainPanel.appendChild(confirmPanel); + // Elaine 2008/12/15 + mainPanel.appendChild(new Separator()); + mainPanel.appendChild(statusBar); + // this.appendChild(mainPanel); - this.setBorder("normal"); + this.setClosable(true); + this.setBorder("normal"); this.setWidth("900px"); - //this.setHeight("500px"); } private void init() @@ -129,9 +151,10 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener lbl2 = new Label(); lbl3 = new Label(); lbl4 = new Label(); - - contentPanel = new WListbox(); - contentPanel.setWidth("100%"); + + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); } private boolean initInfo () @@ -150,12 +173,10 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener // Set & enable Fields lbl1.setValue(Msg.translate(Env.getCtx(), m_queryColumns.get(0).toString()).substring(1)); - //txt1.addActionListener(this); if (m_queryColumns.size() > 1) { lbl2.setValue(Msg.translate(Env.getCtx(), m_queryColumns.get(1).toString())); - //txt2.addActionListener(this); } else { @@ -166,7 +187,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener if (m_queryColumns.size() > 2) { lbl3.setValue(Msg.translate(Env.getCtx(), m_queryColumns.get(2).toString())); - //txt3.addActionListener(this); } else { @@ -177,7 +197,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener if (m_queryColumns.size() > 3) { lbl4.setValue(Msg.translate(Env.getCtx(), m_queryColumns.get(3).toString())); - //txt4.addActionListener(this); } else { @@ -271,7 +290,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener + " INNER JOIN AD_Field f ON (tab.AD_Tab_ID=f.AD_Tab_ID AND f.AD_Column_ID=c.AD_Column_ID) " + "WHERE t.AD_Table_ID=? " + " AND (c.IsKey='Y' OR " - // + " (f.IsDisplayed='Y' AND f.IsEncrypted='N' AND f.ObscureType IS NULL)) " + " (f.IsEncrypted='N' AND f.ObscureType IS NULL)) " + "ORDER BY c.IsKey DESC, f.SeqNo"; @@ -313,9 +331,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener else if (DisplayType.isDate(displayType)) colClass = Timestamp.class; // ignore Binary, Button, ID, RowID - // else if (displayType == DisplayType.Account) - // else if (displayType == DisplayType.Location) - // else if (displayType == DisplayType.Locator) else if (displayType == DisplayType.List) { if (Env.isBaseLanguage(Env.getCtx(), "AD_Ref_List")) @@ -330,8 +345,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener .append("') AS ").append(columnName); colClass = String.class; } - // else if (displayType == DisplayType.Table) - // else if (displayType == DisplayType.TableDir || displayType == DisplayType.Search) if (colClass != null) { @@ -393,7 +406,6 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener @Override protected void setParameters(PreparedStatement pstmt, boolean forCount) throws SQLException { - int index = 1; } public void tableChanged(WTableModelEvent event) diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInOutPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInOutPanel.java index 038283407c..026545fad0 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInOutPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInOutPanel.java @@ -20,14 +20,17 @@ package org.adempiere.webui.panel; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.Date; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Datebox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.VerticalBox; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; @@ -36,6 +39,7 @@ import org.adempiere.webui.event.WTableModelEvent; import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MLookupFactory; +import org.compiere.model.MQuery; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Msg; @@ -50,24 +54,16 @@ import org.zkoss.zul.Separator; * * @author Niraj Sohun * Aug 03, 2007 +* +* Zk Port +* @author Elaine +* @version InfoInOut.java Adempiere Swing UI 3.4.1 */ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, EventListener { private static final long serialVersionUID = 1L; - /** String Array of Column Info */ - private ColumnInfo[] m_generalLayout; - - /** list of query columns */ - private ArrayList m_queryColumns = new ArrayList(); - - /** Table Name */ - private String m_tableName; - - /** Key Column Name */ - private String m_keyColumn; - private Textbox fDocumentNo = new Textbox(); private WEditor fBPartner_ID; @@ -133,11 +129,6 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev fDocumentNo.setValue(value); executeQuery(); } - - //pack(); - - // Focus - //fDocumentNo.requestFocus(); } // InfoInOutPanel /** @@ -147,94 +138,65 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev private void statInit() throws Exception { - Hbox boxDocumentNo = new Hbox(); - + fDocumentNo.setWidth("100%"); + fDescription.setWidth("100%"); + fPOReference.setWidth("100%"); + fDateFrom.setWidth("165px"); + fDateTo.setWidth("165px"); + fDocumentNo.addEventListener(Events.ON_CHANGE, this); - - boxDocumentNo.setWidth("100%"); - boxDocumentNo.setWidths("40%, 60%"); - boxDocumentNo.appendChild(lDocumentNo); - boxDocumentNo.appendChild(fDocumentNo); - - Hbox boxDescription = new Hbox(); - fDescription.addEventListener(Events.ON_CHANGE, this); - - boxDescription.setWidth("100%"); - boxDescription.setWidths("40%, 60%"); - boxDescription.appendChild(lDescription); - boxDescription.appendChild(fDescription); - - Hbox boxPORef = new Hbox(); - fPOReference.addEventListener(Events.ON_CHANGE, this); - - boxPORef.setWidth("100%"); - boxPORef.setWidths("40%, 60%"); - boxPORef.appendChild(lPOReference); - boxPORef.appendChild(fPOReference); fIsSOTrx.setLabel(Msg.translate(Env.getCtx(), "IsSOTrx")); fIsSOTrx.setChecked(!"N".equals(Env.getContext(Env.getCtx(), p_WindowNo, "IsSOTrx"))); fIsSOTrx.addEventListener(Events.ON_CHECK, this); - - // fOrg_ID = new VLookup("AD_Org_ID", false, false, true, - // MLookupFactory.create(Env.getCtx(), 3486, m_WindowNo, DisplayType.TableDir, false), - // DisplayType.TableDir, m_WindowNo); - // lOrg_ID.setLabelFor(fOrg_ID); - // fOrg_ID.setBackground(AdempierePLAF.getInfoBackground()); - - Hbox boxBPartner = new Hbox(); fBPartner_ID = new WSearchEditor( MLookupFactory.get (Env.getCtx(), p_WindowNo, 0, 3499, DisplayType.Search), Msg.translate(Env.getCtx(), "BPartner"), "", false, false, true); fBPartner_ID.addValueChangeListener(this); - - boxBPartner.appendChild(fBPartner_ID.getLabel()); - boxBPartner.appendChild(fBPartner_ID.getComponent()); - Hbox boxDateFrom = new Hbox(); - boxDateFrom.setWidth("100%"); - boxDateFrom.setWidths("40%, 60%"); - boxDateFrom.appendChild(lDateFrom); - boxDateFrom.appendChild(fDateFrom); + Grid grid = GridFactory.newGridLayout(); - Hbox boxDateTo = new Hbox(); - boxDateTo.setWidth("100%"); - boxDateTo.setWidths("10%, 90%"); - boxDateTo.appendChild(lDateTo); - boxDateTo.appendChild(fDateTo); - - VerticalBox boxCol1 = new VerticalBox(); - boxCol1.appendChild(boxDocumentNo); - boxCol1.appendChild(new Separator()); - boxCol1.appendChild(boxDescription); - boxCol1.appendChild(new Separator()); - boxCol1.appendChild(boxPORef); + Rows rows = new Rows(); + grid.appendChild(rows); - VerticalBox boxCol2 = new VerticalBox(); - boxCol2.appendChild(boxBPartner); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxDateFrom); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lDocumentNo.rightAlign()); + row.appendChild(fDocumentNo); + row.appendChild(fBPartner_ID.getLabel().rightAlign()); + row.appendChild(fBPartner_ID.getComponent()); + row.appendChild(fIsSOTrx); - VerticalBox boxCol3 = new VerticalBox(); - boxCol3.appendChild(fIsSOTrx); - boxCol3.appendChild(new Separator()); - boxCol3.appendChild(boxDateTo); + row = new Row(); + row.setSpans("1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(lDescription.rightAlign()); + row.appendChild(fDescription); + row.appendChild(lDateFrom.rightAlign()); + Hbox hbox = new Hbox(); + hbox.appendChild(fDateFrom); + hbox.appendChild(lDateTo); + hbox.appendChild(fDateTo); + row.appendChild(hbox); - Hbox mainBox = new Hbox(); - mainBox.setWidth("100%"); - mainBox.setWidths("40%, 50%, 10%"); - mainBox.appendChild(boxCol1); - mainBox.appendChild(boxCol2); - mainBox.appendChild(boxCol3); + row = new Row(); + row.setSpans("1, 1, 3"); + rows.appendChild(row); + row.appendChild(lPOReference.rightAlign()); + row.appendChild(fPOReference); + row.appendChild(new Label()); + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); + this.setWidth("850px"); -// this.setTitle("InOut Info"); this.setClosable(true); this.setBorder("normal"); - this.appendChild(mainBox); + this.appendChild(grid); this.appendChild(new Separator()); this.appendChild(contentPanel); this.appendChild(new Separator()); @@ -310,7 +272,6 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev } sql.append(" AND i.IsSOTrx=?"); - // log.fine( "InfoInOut.setWhereClause", sql.toString()); return sql.toString(); } // getSQLWhere @@ -382,6 +343,24 @@ public class InfoInOutPanel extends InfoPanel implements ValueChangeListener, Ev return s; } // getSQLText + // Elaine 2008/12/16 + /** + * Zoom + */ + public void zoom() + { + log.info( "InfoInOut.zoom"); + Integer M_InOut_ID = getSelectedRowKey(); + if (M_InOut_ID == null) + return; + MQuery query = new MQuery("M_InOut"); + query.addRestriction("M_InOut_ID", MQuery.EQUAL, M_InOut_ID); + query.setRecordCount(1); + int AD_WindowNo = getAD_Window_ID("M_InOut", fIsSOTrx.isSelected()); + AEnv.zoom (AD_WindowNo, query); + } // zoom + // + /** * Has Zoom * @return true diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInvoicePanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInvoicePanel.java index f782674602..8ef219b246 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInvoicePanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoInvoicePanel.java @@ -23,13 +23,17 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Datebox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.NumberBox; import org.adempiere.webui.component.Panel; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.WListbox; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeListener; @@ -38,6 +42,7 @@ import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MLookup; import org.compiere.model.MLookupFactory; +import org.compiere.model.MQuery; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; @@ -46,13 +51,16 @@ import org.compiere.util.Util; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; -import org.zkoss.zul.Vbox; /** * Search Invoice and return selection * Based on InfoInvoice by Jorg Janke * @author Sendy Yagambrum * @date July 30, 2007 + * + * Zk Port + * @author Elaine + * @version InfoInvoice.java Adempiere Swing UI 3.4.1 **/ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener { @@ -89,10 +97,6 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener private Label lblDocumentNo; private Label lblDescription; - private Label lblBPartner; - private Label lblOrder; - private Label lblIsSOTrx; - private Label lblIsPaid; private Label lblDateInvoiced; private Label lblGrandTotal; @@ -134,32 +138,25 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener private void initComponents() { - lblDocumentNo = new Label(Msg.translate(Env.getCtx(), "DocumentNo").substring(1)); lblDescription = new Label(Msg.translate(Env.getCtx(), "Description")); - lblBPartner = new Label(Msg.translate(Env.getCtx(), "BPartner").substring(1)); - lblIsSOTrx = new Label(Msg.translate(Env.getCtx(), "IsSOTrx")); - lblIsPaid = new Label(Msg.translate(Env.getCtx(), "IsPaid")); lblDateInvoiced = new Label(Msg.translate(Env.getCtx(), "DateInvoiced")); - lblOrder = new Label(Msg.translate(Env.getCtx(), "POReference")); lblGrandTotal = new Label(Msg.translate(Env.getCtx(), "GrandTotal")); txtDocumentNo = new Textbox(); txtDescription = new Textbox(); dateFrom = new Datebox(); - dateFrom.setWidth("180px"); dateTo= new Datebox(); - dateTo.setWidth("180px"); amountFrom = new NumberBox(false); - amountFrom.setWidth("180px"); amountTo = new NumberBox(false); - amountTo.setWidth("180px"); isPaid = new Checkbox(); + isPaid.setLabel(Msg.translate(Env.getCtx(), "IsPaid")); isPaid.setChecked(false); isSoTrx = new Checkbox(); + isSoTrx.setLabel(Msg.translate(Env.getCtx(), "IsSOTrx")); isSoTrx.setChecked(!"N".equals(Env.getContext(Env.getCtx(), p_WindowNo, "IsSOTrx"))); MLookup lookupBP = MLookupFactory.get(Env.getCtx(), p_WindowNo, 0, 3499, DisplayType.Search); @@ -173,7 +170,6 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener Env.getCtx(), "C_Order_ID"), "", false, false, true); editorOrder.addValueChangeListener(this); - contentPanel = new WListbox(); contentPanel.setWidth("99%"); contentPanel.setHeight("400px"); contentPanel.setVflex(true); @@ -181,94 +177,54 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener private void init() { - Hbox pnlDocumentNo = new Hbox(); - pnlDocumentNo.appendChild(lblDocumentNo); - pnlDocumentNo.appendChild(txtDocumentNo); - pnlDocumentNo.setStyle("text-align:right"); - - Hbox pnlDescription = new Hbox(); - pnlDescription.appendChild(lblDescription); - pnlDescription.appendChild(txtDescription); - pnlDescription.setStyle("text-align:right"); - pnlDescription.setWidth("100%"); - - Hbox pnlOrder = new Hbox(); - pnlOrder.appendChild(editorOrder.getLabel()); - pnlOrder.appendChild(editorOrder.getComponent()); - pnlOrder.setStyle("text-align:right"); - pnlOrder.setWidth("100%"); - - Hbox pnlBPartner = new Hbox(); - pnlBPartner.appendChild(lblBPartner); - pnlBPartner.appendChild(editorBPartner.getComponent()); - pnlBPartner.setStyle("text-align:right"); - pnlBPartner.setWidth("100%"); - - Hbox hboxDateOrdered = new Hbox(); - Panel pnlDateOrdered = new Panel(); - pnlDateOrdered.appendChild(lblDateInvoiced); - pnlDateOrdered.appendChild(dateFrom); - pnlDateOrdered.setAlign("right"); - hboxDateOrdered.appendChild(pnlDateOrdered); - hboxDateOrdered.setStyle("text-align:right"); - hboxDateOrdered.setWidth("100%"); - - Hbox pnlGrandTotal = new Hbox(); - pnlGrandTotal.appendChild(lblGrandTotal); - pnlGrandTotal.appendChild(amountFrom); - pnlGrandTotal.setStyle("text-align:right"); - pnlGrandTotal.setWidth("100%"); - - Hbox pnlCheckbox = new Hbox(); - Panel pnlIsSoTrx = new Panel(); - pnlIsSoTrx.appendChild(isSoTrx); - pnlIsSoTrx.appendChild(lblIsSOTrx); - pnlIsSoTrx.setAlign("left"); - - Panel pnlIsPaid = new Panel(); - pnlIsPaid.appendChild(isPaid); - pnlIsPaid.appendChild(lblIsPaid); - pnlIsPaid.setAlign("left"); - - pnlCheckbox.appendChild(pnlIsSoTrx); - pnlCheckbox.appendChild(pnlIsPaid); - - - Panel pnlDateTo = new Panel(); - pnlDateTo.appendChild(dateTo); - pnlDateTo.setAlign("left"); - - Panel pnlAmountTo = new Panel(); - pnlAmountTo.appendChild(amountTo); - pnlAmountTo.setAlign("left"); - - Vbox vbox1 = new Vbox(); - vbox1.setWidth("100%"); - vbox1.appendChild(pnlDocumentNo); - vbox1.appendChild(pnlDescription); - vbox1.appendChild(pnlOrder); - - Vbox vbox2 = new Vbox(); - vbox2.setWidth("100%"); - vbox2.appendChild(pnlBPartner); - vbox2.appendChild(pnlDateOrdered); - vbox2.appendChild(pnlGrandTotal); - - Vbox vbox3 = new Vbox(); - vbox3.setWidth("100%"); - vbox3.appendChild(pnlCheckbox); - vbox3.appendChild(pnlDateTo); - vbox3.appendChild(pnlAmountTo); - - Hbox parameterPanel = new Hbox(); - parameterPanel.appendChild(vbox1); - parameterPanel.appendChild(vbox2); - parameterPanel.appendChild(vbox3); - parameterPanel.setWidth("100%"); - + txtDocumentNo.setWidth("100%"); + txtDescription.setWidth("100%"); + dateFrom.setWidth("165px"); + dateTo.setWidth("165px"); + amountFrom.getDecimalbox().setWidth("155px"); + amountTo.getDecimalbox().setWidth("155px"); + + Grid grid = GridFactory.newGridLayout(); + + Rows rows = new Rows(); + grid.appendChild(rows); + + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lblDocumentNo.rightAlign()); + row.appendChild(txtDocumentNo); + row.appendChild(editorBPartner.getLabel().rightAlign()); + row.appendChild(editorBPartner.getComponent()); + row.appendChild(isSoTrx); + row.appendChild(isPaid); + + row = new Row(); + row.setSpans("1, 1, 1, 3"); + rows.appendChild(row); + row.appendChild(lblDescription.rightAlign()); + row.appendChild(txtDescription); + row.appendChild(lblDateInvoiced.rightAlign()); + Hbox hbox = new Hbox(); + hbox.appendChild(dateFrom); + hbox.appendChild(new Label("-")); + hbox.appendChild(dateTo); + row.appendChild(hbox); + + row = new Row(); + row.setSpans("1, 1, 1, 3"); + rows.appendChild(row); + row.appendChild(editorOrder.getLabel().rightAlign()); + row.appendChild(editorOrder.getComponent()); + row.appendChild(lblGrandTotal.rightAlign()); + hbox = new Hbox(); + hbox.appendChild(amountFrom); + hbox.appendChild(new Label("-")); + hbox.appendChild(amountTo); + row.appendChild(hbox); + Panel mainPanel = new Panel(); mainPanel.setWidth("100%"); - mainPanel.appendChild(parameterPanel); + mainPanel.appendChild(grid); mainPanel.appendChild(new Separator()); mainPanel.appendChild(contentPanel); mainPanel.appendChild(new Separator()); @@ -277,7 +233,8 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener mainPanel.appendChild(statusBar); this.appendChild(mainPanel); - this.setBorder("normal"); + this.setClosable(true); + this.setBorder("normal"); this.setWidth("850px"); } @@ -301,7 +258,6 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener where.toString(), "2,3,4"); // - // MAllocationLine.setIsPaid(Env.getCtx(), 0, null); return true; } // initInfo @@ -313,8 +269,6 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener sql.append(" AND UPPER(i.DocumentNo) LIKE ?"); if (txtDescription.getText().length() > 0) sql.append(" AND UPPER(i.Description) LIKE ?"); - // if (fPOReference.getText().length() > 0) - // sql.append(" AND UPPER(i.POReference) LIKE ?"); // if (editorBPartner.getValue() != null) sql.append(" AND i.C_BPartner_ID=?"); @@ -525,6 +479,33 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener return s; } // getSQLText + // Elaine 2008/12/16 + /** + * Zoom + */ + public void zoom() + { + log.info( "InfoInvoice.zoom"); + Integer C_Invoice_ID = getSelectedRowKey(); + if (C_Invoice_ID == null) + return; + MQuery query = new MQuery("C_Invoice"); + query.addRestriction("C_Invoice_ID", MQuery.EQUAL, C_Invoice_ID); + query.setRecordCount(1); + int AD_WindowNo = getAD_Window_ID("C_Invoice", isSoTrx.isSelected()); + AEnv.zoom (AD_WindowNo, query); + } // zoom + + /** + * Has Zoom + * @return true + */ + protected boolean hasZoom() + { + return true; + } // hasZoom + // + public void tableChanged(WTableModelEvent event) { @@ -560,7 +541,4 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener else Env.setContext(Env.getCtx(), p_WindowNo, Env.TAB_INFO, "C_InvoicePaySchedule_ID", String.valueOf(C_InvoicePaySchedule_ID)); } - - - } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoOrderPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoOrderPanel.java index bf441ac494..8788eecbf9 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoOrderPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoOrderPanel.java @@ -23,6 +23,7 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Datebox; import org.adempiere.webui.component.Grid; @@ -33,7 +34,6 @@ import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.Row; import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.WListbox; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeListener; @@ -42,11 +42,13 @@ import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MLookup; import org.compiere.model.MLookupFactory; +import org.compiere.model.MQuery; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; /** @@ -55,16 +57,17 @@ import org.zkoss.zul.Separator; * * @author Sendy Yagambrum * @date July 27, 2007 + * + * Zk Port + * @author Elaine + * @version InfoOrder.java Adempiere Swing UI 3.4.1 **/ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener { - private static final long serialVersionUID = 1L; private Label lblDocumentNo; private Label lblDescription; - private Label lblBPartner; - private Label lblSalesTransaction; private Label lblDateOrdered; private Label lblOrderRef; private Label lblGrandTotal; @@ -100,33 +103,38 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener protected InfoOrderPanel(int WindowNo, String value, boolean multiSelection, String whereClause) { - super ( WindowNo, "o", "C_Order_ID", multiSelection, whereClause); - log.info( "InfoOrder"); - setTitle(Msg.getMsg(Env.getCtx(), "InfoOrder")); - // - initComponents(); - init(); - - p_loadedOK = initInfo (); - int no = contentPanel.getRowCount(); - setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); - setStatusDB(Integer.toString(no)); - // - if (value != null && value.length() > 0) - { - String values[] = value.split("_"); - txtDocumentNo.setText(values[0]); - executeQuery(); - renderItems(); - } + super ( WindowNo, "o", "C_Order_ID", multiSelection, whereClause); + log.info( "InfoOrder"); + setTitle(Msg.getMsg(Env.getCtx(), "InfoOrder")); + // + + try + { + initComponents(); + init(); + p_loadedOK = initInfo (); + } + catch (Exception e) + { + return; + } + + int no = contentPanel.getRowCount(); + setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); + setStatusDB(Integer.toString(no)); + // + if (value != null && value.length() > 0) + { + String values[] = value.split("_"); + txtDocumentNo.setText(values[0]); + executeQuery(); + renderItems(); + } } public void initComponents() { - lblDocumentNo = new Label(Msg.translate(Env.getCtx(), "DocumentNo").substring(1)); lblDescription = new Label(Msg.translate(Env.getCtx(), "Description")); - lblBPartner = new Label(Msg.translate(Env.getCtx(), "BPartner").substring(1)); - lblSalesTransaction = new Label(Msg.translate(Env.getCtx(), "IsSOTrx")); lblDateOrdered = new Label(Msg.translate(Env.getCtx(), "DateOrdered")); lblOrderRef = new Label(Msg.translate(Env.getCtx(), "POReference")); lblGrandTotal = new Label(Msg.translate(Env.getCtx(), "GrandTotal")); @@ -142,67 +150,69 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener amountTo = new NumberBox(false); isSoTrx = new Checkbox(); + isSoTrx.setLabel(Msg.translate(Env.getCtx(), "IsSOTrx")); isSoTrx.setChecked(!"N".equals(Env.getContext(Env.getCtx(), p_WindowNo, "IsSOTrx"))); MLookup lookupBP = MLookupFactory.get(Env.getCtx(), p_WindowNo, 0, 3499, DisplayType.Search); editorBPartner = new WSearchEditor(lookupBP, Msg.translate( Env.getCtx(), "C_BPartner_ID"), "", true, false, true); editorBPartner.addValueChangeListener(this); - contentPanel = new WListbox(); + contentPanel.setWidth("99%"); contentPanel.setHeight("400px"); contentPanel.setVflex(true); - contentPanel.setFixedLayout(true); } public void init() { - Grid parameterPanel = GridFactory.newGridLayout(); - Rows rows = parameterPanel.newRows(); - Row row = rows.newRow(); - row.appendChild(lblDocumentNo.rightAlign()); - row.appendChild(txtDocumentNo); - row.appendChild(lblBPartner.rightAlign()); - row.appendChild(editorBPartner.getComponent()); - Panel pnlSalesTrx = new Panel(); - pnlSalesTrx.appendChild(isSoTrx); - isSoTrx.setStyle("margin-left: 5px"); - pnlSalesTrx.appendChild(lblSalesTransaction); - lblSalesTransaction.setStyle("margin-left: 2px"); - row.appendChild(pnlSalesTrx); - - row = rows.newRow(); - row.appendChild(lblDescription.rightAlign()); - row.appendChild(txtDescription); - row.appendChild(lblDateOrdered.rightAlign()); - Panel pnlDate = new Panel(); - pnlDate.appendChild(dateFrom); - Label symbol = new Label("-"); - symbol.setStyle("margin-left: 5px; margin-right: 5px"); - pnlDate.appendChild(symbol); - pnlDate.appendChild(dateTo); - row.appendChild(pnlDate); - row.setSpans("1,1,1,2"); - - row = rows.newRow(); - row.appendChild(lblOrderRef.rightAlign()); - row.appendChild(txtOrderRef); - row.appendChild(lblGrandTotal.rightAlign()); - Panel pnlamt = new Panel(); - pnlamt.appendChild(amountFrom); - symbol = new Label("-"); - symbol.setStyle("margin-left: 5px; margin-right: 5px"); - pnlamt.appendChild(symbol); - pnlamt.appendChild(amountTo); - row.appendChild(pnlamt); - row.setSpans("1,1,1,2"); - - parameterPanel.setWidth("100%"); - parameterPanel.setInnerWidth("auto"); + txtDocumentNo.setWidth("100%"); + txtDescription.setWidth("100%"); + txtOrderRef.setWidth("100%"); + dateFrom.setWidth("165px"); + dateTo.setWidth("165px"); + amountFrom.getDecimalbox().setWidth("155px"); + amountTo.getDecimalbox().setWidth("155px"); + + Grid grid = GridFactory.newGridLayout(); + + Rows rows = new Rows(); + grid.appendChild(rows); + + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lblDocumentNo.rightAlign()); + row.appendChild(txtDocumentNo); + row.appendChild(editorBPartner.getLabel().rightAlign()); + row.appendChild(editorBPartner.getComponent()); + row.appendChild(isSoTrx); + + row = new Row(); + row.setSpans("1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(lblDescription.rightAlign()); + row.appendChild(txtDescription); + row.appendChild(lblDateOrdered.rightAlign()); + Hbox hbox = new Hbox(); + hbox.appendChild(dateFrom); + hbox.appendChild(new Label("-")); + hbox.appendChild(dateTo); + row.appendChild(hbox); + + row = new Row(); + row.setSpans("1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(lblOrderRef.rightAlign()); + row.appendChild(txtOrderRef); + row.appendChild(lblGrandTotal.rightAlign()); + hbox = new Hbox(); + hbox.appendChild(amountFrom); + hbox.appendChild(new Label("-")); + hbox.appendChild(amountTo); + row.appendChild(hbox); Panel mainPanel = new Panel(); mainPanel.setWidth("100%"); - mainPanel.appendChild(parameterPanel); + mainPanel.appendChild(grid); mainPanel.appendChild(new Separator()); mainPanel.appendChild(contentPanel); mainPanel.appendChild(new Separator()); @@ -211,7 +221,8 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener mainPanel.appendChild(statusBar); this.appendChild(mainPanel); - this.setBorder("normal"); + this.setClosable(true); + this.setBorder("normal"); this.setWidth("850px"); } @@ -450,10 +461,35 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener return s; } // getSQLText + // Elaine 2008/12/16 + /** + * Zoom + */ + public void zoom() + { + log.info(""); + Integer C_Order_ID = getSelectedRowKey(); + if (C_Order_ID == null) + return; + MQuery query = new MQuery("C_Order"); + query.addRestriction("C_Order_ID", MQuery.EQUAL, C_Order_ID); + query.setRecordCount(1); + int AD_WindowNo = getAD_Window_ID("C_Order", isSoTrx.isSelected()); + AEnv.zoom (AD_WindowNo, query); + } // zoom + + /** + * Has Zoom + * @return true + */ + protected boolean hasZoom() + { + return true; + } // hasZoom + // public void tableChanged(WTableModelEvent event) { - // TODO Auto-generated method stub } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 8af0d8076a..ec2b16f0e6 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -56,6 +56,10 @@ import org.zkoss.zul.event.ZulEvents; * Based on Info written by Jorg Janke * * @author Sendy Yagambrum + * + * Zk Port + * @author Elaine + * @version Info.java Adempiere Swing UI 3.4.1 */ public abstract class InfoPanel extends Window implements EventListener, WTableModelListener { @@ -250,10 +254,16 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM private void init() { - confirmPanel = new ConfirmPanel(true,true,false,false,true,true); + confirmPanel = new ConfirmPanel(true, true, false, true, true, true); // Elaine 2008/12/16 confirmPanel.addActionListener(Events.ON_CLICK, this); confirmPanel.setStyle("border-top: 2px groove #444; padding-top: 4px"); + // Elaine 2008/12/16 + confirmPanel.getButton(ConfirmPanel.A_CUSTOMIZE).setVisible(hasCustomize()); + confirmPanel.getButton(ConfirmPanel.A_HISTORY).setVisible(hasHistory()); + confirmPanel.getButton(ConfirmPanel.A_ZOOM).setVisible(hasZoom()); + // + this.setSizable(true); this.addEventListener(Events.ON_OK, this); @@ -488,10 +498,7 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM int no = line.size(); setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); setStatusDB(Integer.toString(no)); - - //better performance -// contentPanel.setFixedLayout(true); - + //workaround for scrollbar position problem contentPanel.renderAll(); } @@ -822,24 +829,40 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM { if (event!=null) { - if (event.getTarget().equals(confirmPanel.getButton("Ok"))) + if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_OK))) { if (!contentPanel.getChildren().isEmpty() && contentPanel.getSelectedRowKey()!=null) { dispose(true); } } - else if (event.getTarget().equals(confirmPanel.getButton("Refresh"))) + else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_REFRESH))) { executeQuery(); renderItems(); } - else if (event.getTarget().equals(confirmPanel.getButton("Cancel"))) + else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_CANCEL))) { m_cancel = true; dispose(false); } - else if (event.getTarget().equals(confirmPanel.getButton("Zoom"))) + // Elaine 2008/12/16 + else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_HISTORY))) + { + if (!contentPanel.getChildren().isEmpty() && contentPanel.getSelectedRowKey()!=null) + { + showHistory(); + } + } + else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_CUSTOMIZE))) + { + if (!contentPanel.getChildren().isEmpty() && contentPanel.getSelectedRowKey()!=null) + { + customize(); + } + } + // + else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_ZOOM))) { if (!contentPanel.getChildren().isEmpty() && contentPanel.getSelectedRowKey()!=null) { diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPaymentPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPaymentPanel.java index 6c91a13f76..30f1fcd840 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPaymentPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPaymentPanel.java @@ -21,14 +21,17 @@ import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.Date; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Datebox; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; -import org.adempiere.webui.component.VerticalBox; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.event.ValueChangeEvent; @@ -37,6 +40,7 @@ import org.adempiere.webui.event.WTableModelEvent; import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MLookupFactory; +import org.compiere.model.MQuery; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Msg; @@ -51,26 +55,16 @@ import org.zkoss.zul.Separator; * * @author Niraj Sohun * Aug, 02, 2007 +* +* Zk Port +* @author Elaine +* @version InfoPayment.java Adempiere Swing UI 3.4.1 */ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, EventListener { private static final long serialVersionUID = 1L; - /** String Array of Column Info */ - private ColumnInfo[] m_generalLayout; - - /** list of query columns */ - private ArrayList m_queryColumns = new ArrayList(); - - /** Table Name */ - private String m_tableName; - - /** Key Column Name */ - private String m_keyColumn; - - //private WListbox p_table = new WListbox(); - private Textbox fDocumentNo = new Textbox(); private Textbox fAmtTo = new Textbox(); private Textbox fAmtFrom = new Textbox(); @@ -153,11 +147,6 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, fDocumentNo .setValue(value); executeQuery(); } - - //pack(); - - // Focus - //fDocumentNo.requestFocus(); } // InfoPaymentPanel /** @@ -167,91 +156,64 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, private void statInit() throws Exception { - Hbox boxDocumentNo = new Hbox(); + fDocumentNo.setWidth("100%"); + fDateFrom.setWidth("165px"); + fDateTo.setWidth("165px"); + fAmtFrom.setWidth("180px"); + fAmtTo.setWidth("180px"); fDocumentNo.addEventListener(Events.ON_CHANGE, this); - boxDocumentNo.setWidth("100%"); - boxDocumentNo.setWidths("40%, 60%"); - boxDocumentNo.appendChild(lDocumentNo); - boxDocumentNo.appendChild(fDocumentNo); - fIsReceipt.setLabel(Msg.translate(Env.getCtx(), "IsReceipt")); fIsReceipt.addEventListener(Events.ON_CHECK, this); fIsReceipt.setChecked(!"N".equals(Env.getContext(Env.getCtx(), p_WindowNo, "IsSOTrx"))); - Hbox boxBPartner = new Hbox(); - fBPartner_ID = new WSearchEditor( MLookupFactory.get(Env.getCtx(), p_WindowNo, 0, 3499, DisplayType.Search), Msg.translate(Env.getCtx(), "C_BPartner_ID"), "", false, false, true); fBPartner_ID.addValueChangeListener(this); - boxBPartner.appendChild(fBPartner_ID.getLabel()); - boxBPartner.appendChild(fBPartner_ID.getComponent()); + Grid grid = GridFactory.newGridLayout(); - Hbox boxDateFrom = new Hbox(); + Rows rows = new Rows(); + grid.appendChild(rows); - //fDateFrom.setValue(new Date(System.currentTimeMillis())); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lDocumentNo.rightAlign()); + row.appendChild(fDocumentNo); + row.appendChild(fBPartner_ID.getLabel().rightAlign()); + row.appendChild(fBPartner_ID.getComponent()); + row.appendChild(fIsReceipt); - boxDateFrom.setWidth("100%"); - boxDateFrom.setWidths("40%, 60%"); - boxDateFrom.appendChild(lDateFrom); - boxDateFrom.appendChild(fDateFrom); + row = new Row(); + row.setSpans("3, 2"); + rows.appendChild(row); + row.appendChild(lDateFrom.rightAlign()); + Hbox hbox = new Hbox(); + hbox.appendChild(fDateFrom); + hbox.appendChild(lDateTo); + hbox.appendChild(fDateTo); + row.appendChild(hbox); - Hbox boxDateTo = new Hbox(); - - //fDateTo.setValue(new Date(System.currentTimeMillis())); - - boxDateTo.setWidth("100%"); - boxDateTo.setWidths("10%, 90%"); - boxDateTo.appendChild(lDateTo); - boxDateTo.appendChild(fDateTo); - - Hbox boxAmtFrom = new Hbox(); - boxAmtFrom.setWidth("100%"); - boxAmtFrom.setWidths("40%, 60%"); - boxAmtFrom.appendChild(lAmtFrom); - boxAmtFrom.appendChild(fAmtFrom); - - Hbox boxAmtTo = new Hbox(); - boxAmtTo.setWidth("100%"); - boxAmtTo.setWidths("10%, 90%"); - boxAmtTo.appendChild(lAmtTo); - boxAmtTo.appendChild(fAmtTo); - - VerticalBox boxCol1 = new VerticalBox(); - //boxCol1.setWidth("100%"); - boxCol1.appendChild(boxDocumentNo); - - VerticalBox boxCol2 = new VerticalBox(); - //boxCol2.setWidth("100%"); - boxCol2.appendChild(boxBPartner); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxDateFrom); - boxCol2.appendChild(new Separator()); - boxCol2.appendChild(boxAmtFrom); - - VerticalBox boxCol3 = new VerticalBox(); - //boxCol3.setWidth("100%"); - boxCol3.appendChild(fIsReceipt); - boxCol3.appendChild(new Separator()); - boxCol3.appendChild(boxDateTo); - boxCol3.appendChild(new Separator()); - boxCol3.appendChild(boxAmtTo); - - Hbox mainBox = new Hbox(); - mainBox.setWidth("100%"); - mainBox.setWidths("42%, 50%, 8%"); - mainBox.appendChild(boxCol1); - mainBox.appendChild(boxCol2); - mainBox.appendChild(boxCol3); + row = new Row(); + row.setSpans("3, 2"); + rows.appendChild(row); + row.appendChild(lAmtFrom.rightAlign()); + hbox = new Hbox(); + hbox.appendChild(fAmtFrom); + hbox.appendChild(lAmtTo); + hbox.appendChild(fAmtTo); + row.appendChild(hbox); + contentPanel.setWidth("99%"); + contentPanel.setHeight("400px"); + contentPanel.setVflex(true); + this.setWidth("850px"); -// this.setTitle("Payment Info"); this.setClosable(true); this.setBorder("normal"); - this.appendChild(mainBox); + this.appendChild(grid); this.appendChild(new Separator()); this.appendChild(contentPanel); this.appendChild(new Separator()); @@ -281,8 +243,6 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, prepareTable(s_paymentLayout, " C_Payment_v p", where.toString(), "2,3,4"); - // MPayment.setIsAllocated(Env.getCtx(), 0, null); - return true; } // initInfo @@ -420,11 +380,11 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, return s; } // getSQLText + // Elaine 2008/12/16 /** * Zoom */ - -/* void zoom() + public void zoom() { log.info( "InfoPayment.zoom"); Integer C_Payment_ID = getSelectedRowKey(); @@ -434,9 +394,10 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, query.addRestriction("C_Payment_ID", MQuery.EQUAL, C_Payment_ID); query.setRecordCount(1); int AD_WindowNo = getAD_Window_ID("C_Payment", fIsReceipt.isSelected()); - zoom (AD_WindowNo, query); + AEnv.zoom (AD_WindowNo, query); } // zoom -*/ + // + /** * Has Zoom * @return true @@ -456,7 +417,6 @@ public class InfoPaymentPanel extends InfoPanel implements ValueChangeListener, } public void tableChanged(WTableModelEvent event) { - // TODO Auto-generated method stub } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoProductPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoProductPanel.java index 0048faf147..fbd6aec8d7 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoProductPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoProductPanel.java @@ -42,13 +42,19 @@ import java.util.ArrayList; import java.util.Vector; import java.util.logging.Level; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.ListItem; +import org.adempiere.webui.component.ListModelTable; import org.adempiere.webui.component.Listbox; import org.adempiere.webui.component.ListboxFactory; import org.adempiere.webui.component.Panel; +import org.adempiere.webui.component.Row; +import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Tab; import org.adempiere.webui.component.Tabbox; import org.adempiere.webui.component.Tabpanel; @@ -60,6 +66,7 @@ import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MClient; import org.compiere.model.MDocType; +import org.compiere.model.MQuery; import org.compiere.model.MRole; import org.compiere.util.CLogMgt; import org.compiere.util.DB; @@ -75,15 +82,16 @@ import org.zkoss.zkex.zul.Borderlayout; import org.zkoss.zkex.zul.Center; import org.zkoss.zkex.zul.South; import org.zkoss.zul.Div; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; -import org.zkoss.zul.Vbox; /** * Search Product and return selection * This class is based on org.compiere.apps.search.InfoPAttribute written by Jorg Janke * @author Elaine - * + * + * Zk Port + * @author Elaine + * @version InfoPayment.java Adempiere Swing UI 3.4.1 */ public final class InfoProductPanel extends InfoPanel implements EventListener { @@ -184,6 +192,11 @@ public final class InfoProductPanel extends InfoPanel implements EventListener tabbedPane.setSelectedIndex(0); p_loadedOK = true; + + //Begin - fer_luck @ centuryon + mWindowNo = windowNo; // Elaine 2008/12/16 + //End - fer_luck @ centuryon + } // InfoProductPanel /** @@ -248,84 +261,41 @@ public final class InfoProductPanel extends InfoPanel implements EventListener fieldVendor = new Textbox(); fieldVendor.setMaxlength(40); - contentPanel = new WListbox(); contentPanel.setWidth("99%"); contentPanel.setVflex(true); } // initComponents private void init() { - Panel pnlValue = new Panel(); - pnlValue.appendChild(lblValue); - pnlValue.appendChild(fieldValue); - pnlValue.setAlign("right"); + Grid grid = GridFactory.newGridLayout(); - Panel pnlName = new Panel(); - pnlName.appendChild(lblName); - pnlName.appendChild(fieldName); - pnlName.setAlign("right"); + Rows rows = new Rows(); + grid.appendChild(rows); - Panel pnlUPC = new Panel(); - pnlUPC.appendChild(lblUPC); - pnlUPC.appendChild(fieldUPC); - pnlUPC.setAlign("right"); + Row row = new Row(); + rows.appendChild(row); + row.appendChild(lblValue.rightAlign()); + row.appendChild(fieldValue); + row.appendChild(lblUPC.rightAlign()); + row.appendChild(fieldUPC); + row.appendChild(lblWarehouse.rightAlign()); + row.appendChild(pickWarehouse); + row.appendChild(lblPriceList.rightAlign()); + row.appendChild(pickPriceList); + row.appendChild(m_InfoPAttributeButton); - Panel pnlSKU = new Panel(); - pnlSKU.appendChild(lblSKU); - pnlSKU.appendChild(fieldSKU); - pnlSKU.setAlign("right"); - - Panel pnlPriceList = new Panel(); - pnlPriceList.appendChild(lblPriceList); - pnlPriceList.appendChild(pickPriceList); - pnlPriceList.setAlign("right"); - - // Elaine 2008/11/21 - Panel pnlProductCategory = new Panel(); - pnlProductCategory.appendChild(lblProductCategory); - pnlProductCategory.appendChild(pickProductCategory); - pnlProductCategory.setAlign("right"); + row = new Row(); + row.setSpans("1, 1, 1, 1, 1, 1, 1, 2"); + rows.appendChild(row); + row.appendChild(lblName.rightAlign()); + row.appendChild(fieldName); + row.appendChild(lblSKU.rightAlign()); + row.appendChild(fieldSKU); + row.appendChild(lblVendor.rightAlign()); + row.appendChild(fieldVendor); + row.appendChild(lblProductCategory.rightAlign()); + row.appendChild(pickProductCategory); // - - Panel pnlWarehouse = new Panel(); - pnlWarehouse.appendChild(lblWarehouse); - pnlWarehouse.appendChild(pickWarehouse); - pnlWarehouse.setAlign("right"); - - Panel pnlVendor = new Panel(); - pnlVendor.appendChild(lblVendor); - pnlVendor.appendChild(fieldVendor); - pnlVendor.setAlign("right"); - - Panel pnlButton = new Panel(); - pnlButton.appendChild(m_InfoPAttributeButton); - pnlButton.setAlign("left"); - - Vbox vbox1 = new Vbox(); - vbox1.appendChild(pnlValue); - vbox1.appendChild(pnlName); - - Vbox vbox2 = new Vbox(); - vbox2.appendChild(pnlUPC); - vbox2.appendChild(pnlSKU); - - Vbox vbox3 = new Vbox(); - vbox3.appendChild(pnlWarehouse); - vbox3.appendChild(pnlVendor); - - Vbox vbox4 = new Vbox(); - vbox4.appendChild(pnlPriceList); - vbox4.appendChild(pnlProductCategory); // Elaine 2008/11/21 - - Vbox vbox5 = new Vbox(); - vbox5.appendChild(pnlButton); - - Hbox parameterPanel = new Hbox(); - parameterPanel.appendChild(vbox1); - parameterPanel.appendChild(vbox2); - parameterPanel.appendChild(vbox3); - parameterPanel.appendChild(vbox4); - parameterPanel.appendChild(vbox5); // Product Attribute Instance m_PAttributeButton = confirmPanel.createButton(ConfirmPanel.A_PATTRIBUTE); @@ -458,13 +428,14 @@ public final class InfoProductPanel extends InfoPanel implements EventListener Panel mainPanel = new Panel(); mainPanel.setWidth("100%"); - mainPanel.appendChild(parameterPanel); + mainPanel.appendChild(grid); mainPanel.appendChild(new Separator()); mainPanel.appendChild(borderlayout); mainPanel.appendChild(new Separator()); mainPanel.appendChild(confirmPanel); this.appendChild(mainPanel); + this.setClosable(true); this.setBorder("normal"); this.setWidth("1000px"); @@ -651,7 +622,6 @@ public final class InfoProductPanel extends InfoPanel implements EventListener ResultSet rs = pstmt.executeQuery(); while (rs.next()) { - KeyNamePair kn = new KeyNamePair (rs.getInt(1), rs.getString(2)); pickPriceList.appendItem(rs.getString(2),new Integer(rs.getInt(1))); } rs.close(); @@ -669,8 +639,6 @@ public final class InfoProductPanel extends InfoPanel implements EventListener rs = pstmt.executeQuery(); while (rs.next()) { - KeyNamePair kn = new KeyNamePair - (rs.getInt("M_Warehouse_ID"), rs.getString("ValueName")); pickWarehouse.appendItem(rs.getString("ValueName"), new Integer(rs.getInt("M_Warehouse_ID"))); } rs.close(); @@ -841,7 +809,7 @@ public final class InfoProductPanel extends InfoPanel implements EventListener // => Vendor String vendor = fieldVendor.getText().toUpperCase(); if (!(vendor.equals("") || vendor.equals("%"))) - where.append(" AND UPPER(bp.Name) LIKE ?"); + where.append(" AND UPPER(bp.Name) LIKE ? AND ppo.IsCurrentVendor='Y'"); // Elaine 2008/12/16 return where.toString(); } // getSQLWhere @@ -967,12 +935,14 @@ public final class InfoProductPanel extends InfoPanel implements EventListener */ protected void showHistory() { - /*log.info(""); + log.info(""); Integer M_Product_ID = getSelectedRowKey(); if (M_Product_ID == null) return; - KeyNamePair kn = (KeyNamePair)pickWarehouse.getSelectedItem(); - int M_Warehouse_ID = kn.getKey(); + int M_Warehouse_ID = 0; + ListItem listitem = pickWarehouse.getSelectedItem(); + if (listitem != null) + M_Warehouse_ID = (Integer)listitem.getValue(); int M_AttributeSetInstance_ID = m_M_AttributeSetInstance_ID; if (m_M_AttributeSetInstance_ID < -1) // not selected M_AttributeSetInstance_ID = 0; @@ -980,7 +950,7 @@ public final class InfoProductPanel extends InfoPanel implements EventListener InvoiceHistory ih = new InvoiceHistory (this, 0, M_Product_ID.intValue(), M_Warehouse_ID, M_AttributeSetInstance_ID); ih.setVisible(true); - ih = null;*/ + ih = null; } // showHistory /** @@ -993,6 +963,25 @@ public final class InfoProductPanel extends InfoPanel implements EventListener return true; } // hasHistory + // Elaine 2008/12/16 + /** + * Zoom + */ + public void zoom() + { + log.info(""); + Integer M_Product_ID = getSelectedRowKey(); + if (M_Product_ID == null) + return; + + MQuery query = new MQuery("M_Product"); + query.addRestriction("M_Product_ID", MQuery.EQUAL, M_Product_ID); + query.setRecordCount(1); + int AD_WindowNo = getAD_Window_ID("M_Product", true); // SO + AEnv.zoom (AD_WindowNo, query); + } // zoom + // + /** * Has Zoom * @return (has zoom) @@ -1067,7 +1056,6 @@ public final class InfoProductPanel extends InfoPanel implements EventListener { final ColumnInfo[] frieLayout = { new ColumnInfo(" ", "p.M_Product_ID", IDColumn.class), - // new Info_Column(Msg.translate(Env.getCtx(), "Value"), "p.Value", String.class), new ColumnInfo(Msg.translate(Env.getCtx(), "Name"), "p.Name", String.class), new ColumnInfo(Msg.translate(Env.getCtx(), "QtyAvailable"), "bomQtyAvailable(p.M_Product_ID,?,0) AS QtyAvailable", Double.class, true, true, null), new ColumnInfo(Msg.translate(Env.getCtx(), "PriceList"), "bomPriceList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList", BigDecimal.class), @@ -1140,6 +1128,13 @@ public final class InfoProductPanel extends InfoPanel implements EventListener { Component component = e.getTarget(); + // Elaine 2008/12/16 + // don't requery if fieldValue and fieldName are empty + if ((e.getTarget() == pickWarehouse || e.getTarget() == pickPriceList) + && (fieldValue.getText().length() == 0 && fieldName.getText().length() == 0)) + return; + // + if(component == m_InfoPAttributeButton) { cmd_InfoPAttribute(); @@ -1343,13 +1338,9 @@ public final class InfoProductPanel extends InfoPanel implements EventListener rs = null; pstmt = null; } - // Table - m_tableAtp = ListboxFactory.newDataTable(); - m_tableAtp.setMultiSelection(false); - - m_tableAtp.getModel().setNoColumns(columnNames.size()); - for(int i = 0; i < columnNames.size(); i++) - m_tableAtp.addColumn(columnNames.get(i)); + // Table + ListModelTable model = new ListModelTable(data); + m_tableAtp.setData(model, columnNames); // m_tableAtp.setColumnClass(0, Timestamp.class, true); // Date m_tableAtp.setColumnClass(1, Double.class, true); // Quantity @@ -1362,17 +1353,6 @@ public final class InfoProductPanel extends InfoPanel implements EventListener m_tableAtp.setColumnClass(8, String.class, true); // Warehouse // m_tableAtp.autoSize(); - - m_tableAtp.setRowCount(data.size()); - for(int i = 0; i < data.size(); i++) - { - Vector record = data.get(i); - for(int j = 0; j < record.size(); j++) - { - Object value = record.get(j); - m_tableAtp.getModel().setDataAt(value, i, j); - } - } } // initAtpTab // diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InvoiceHistory.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InvoiceHistory.java new file mode 100644 index 0000000000..3fc7e098eb --- /dev/null +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InvoiceHistory.java @@ -0,0 +1,736 @@ +/****************************************************************************** + * Copyright (C) 2008 Elaine Tan + * Copyright (C) 2008 Idalica * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + *****************************************************************************/ +package org.adempiere.webui.panel; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Vector; +import java.util.logging.Level; + +import org.adempiere.webui.apps.AEnv; +import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.ListModelTable; +import org.adempiere.webui.component.ListboxFactory; +import org.adempiere.webui.component.Tab; +import org.adempiere.webui.component.Tabbox; +import org.adempiere.webui.component.Tabpanel; +import org.adempiere.webui.component.Tabpanels; +import org.adempiere.webui.component.Tabs; +import org.adempiere.webui.component.WListbox; +import org.adempiere.webui.component.Window; +import org.compiere.model.MDocType; +import org.compiere.model.MPriceList; +import org.compiere.util.CLogMgt; +import org.compiere.util.CLogger; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zkex.zul.Borderlayout; +import org.zkoss.zkex.zul.Center; +import org.zkoss.zkex.zul.North; +import org.zkoss.zkex.zul.South; + +/** + * Price History for BPartner/Product + * This class is based on org.compiere.apps.search.InvoiceHistory written by Jorg Janke + * @author Elaine + */ +public class InvoiceHistory extends Window implements EventListener +{ + private static final long serialVersionUID = 1L; + + /** + * Show History + * @param C_BPartner_ID partner + * @param M_Product_ID product + * @param M_Warehouse_ID warehouse + * @param M_AttributeSetInstance_ID ASI + */ + public InvoiceHistory (Window parent, + int C_BPartner_ID, int M_Product_ID, int M_Warehouse_ID, int M_AttributeSetInstance_ID) + { + super(); + setTitle(Msg.getMsg(Env.getCtx(), "PriceHistory")); + log.config("C_BPartner_ID=" + C_BPartner_ID + + ", M_Product_ID=" + M_Product_ID + + ", M_Warehouse_ID=" + M_Warehouse_ID + + ", M_AttributeSetInstance_ID=" + M_AttributeSetInstance_ID); + m_C_BPartner_ID = C_BPartner_ID; + m_M_Product_ID = M_Product_ID; + m_M_Warehouse_ID = M_Warehouse_ID; + m_M_AttributeSetInstance_ID = M_AttributeSetInstance_ID; + try + { + jbInit(); + dynInit(); + } + catch(Exception ex) + { + log.log(Level.SEVERE, "", ex); + } + + AEnv.showCenterWindow(parent, this); + } // InvoiceHistory + + private int m_C_BPartner_ID; + private int m_M_Product_ID; + private int m_M_Warehouse_ID; + private int m_M_AttributeSetInstance_ID; + + /** Logger */ + private static CLogger log = CLogger.getCLogger(InvoiceHistory.class); + + private Label label = new Label(); + // + private ConfirmPanel confirmPanel = new ConfirmPanel(); + private Tabbox tabbox = new Tabbox(); + // + private Tabpanel pricePane = new Tabpanel(); + private WListbox m_tablePrice = ListboxFactory.newDataTable(); + private ListModelTable m_modelPrice = null; + + private Tabpanel reservedPane = new Tabpanel(); + private WListbox m_tableReserved = ListboxFactory.newDataTable(); + private ListModelTable m_modelReserved = null; + + private Tabpanel orderedPane = new Tabpanel(); + private WListbox m_tableOrdered = ListboxFactory.newDataTable(); + private ListModelTable m_modelOrdered = null; + + private Tabpanel unconfirmedPane = new Tabpanel(); + private WListbox m_tableUnconfirmed = ListboxFactory.newDataTable(); + private ListModelTable m_modelUnconfirmed = null; + + private Tabpanel atpPane = new Tabpanel(); + private WListbox m_tableAtp = ListboxFactory.newDataTable(); + private ListModelTable m_modelAtp = null; + + /** + * Ststic Init + */ + void jbInit() throws Exception + { + label.setText("Label"); + + Tabs tabs = new Tabs(); + tabbox.appendChild(tabs); + + Tabpanels tabpanels = new Tabpanels(); + tabbox.appendChild(tabpanels); + + tabs.appendChild(new Tab(Msg.getMsg(Env.getCtx(), "PriceHistory"))); + tabs.appendChild(new Tab(Msg.translate(Env.getCtx(), "QtyReserved"))); + tabs.appendChild(new Tab(Msg.translate(Env.getCtx(), "QtyOrdered"))); + tabs.appendChild(new Tab(Msg.getMsg(Env.getCtx(), "QtyUnconfirmed"))); + + if (m_M_Product_ID != 0) + tabs.appendChild(new Tab(Msg.getMsg(Env.getCtx(), "ATP"))); + + pricePane.setHeight("100%"); + pricePane.appendChild(m_tablePrice); + tabpanels.appendChild(pricePane); + + reservedPane.setHeight("100%"); + reservedPane.appendChild(m_tableReserved); + tabpanels.appendChild(reservedPane); + + orderedPane.setHeight("100%"); + orderedPane.appendChild(m_tableOrdered); + tabpanels.appendChild(orderedPane); + + unconfirmedPane.setHeight("100%"); + unconfirmedPane.appendChild(m_tableUnconfirmed); + tabpanels.appendChild(unconfirmedPane); + + if (m_M_Product_ID != 0) + { + atpPane.setHeight("100%"); + atpPane.appendChild(m_tableAtp); + tabpanels.appendChild(atpPane); + } + + tabbox.setSelectedIndex(0); + tabbox.addEventListener(Events.ON_SELECT, this); + confirmPanel.addActionListener(this); + + Borderlayout borderlayout = new Borderlayout(); + borderlayout.setWidth("700px"); + borderlayout.setHeight("400px"); + borderlayout.setStyle("border: none; position: relative"); + this.appendChild(borderlayout); + + North north = new North(); + north.setStyle("border: none"); + borderlayout.appendChild(north); + north.appendChild(label); + + Center center = new Center(); + center.setStyle("border: none"); + center.setAutoscroll(true); + center.setFlex(true); + borderlayout.appendChild(center); + center.appendChild(tabbox); + + South south = new South(); + south.setStyle("border: none"); + borderlayout.appendChild(south); + south.appendChild(confirmPanel); + } // jbInit + + /** + * Dynamic Init for Price Tab + */ + private boolean dynInit() + { + // Header + Vector columnNames = new Vector(); + columnNames.add(Msg.translate(Env.getCtx(), m_C_BPartner_ID == 0 ? "C_BPartner_ID" : "M_Product_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "PriceActual")); + columnNames.add(Msg.translate(Env.getCtx(), "QtyInvoiced")); + columnNames.add(Msg.translate(Env.getCtx(), "Discount")); + columnNames.add(Msg.translate(Env.getCtx(), "DocumentNo")); + columnNames.add(Msg.translate(Env.getCtx(), "DateInvoiced")); + columnNames.add(Msg.translate(Env.getCtx(), "AD_Org_ID")); + + // Fill Data + Vector> data = null; + if (m_C_BPartner_ID == 0) + data = queryBPartner(); // BPartner of Product + else + data = queryProduct(); // Product of BPartner + + // Table + m_modelPrice = new ListModelTable(data); + m_tablePrice.setData(m_modelPrice, columnNames); + // + m_tablePrice.setColumnClass(0, String.class, true); // Product/Partner + m_tablePrice.setColumnClass(1, Double.class, true); // Price + m_tablePrice.setColumnClass(2, Double.class, true); // Quantity + m_tablePrice.setColumnClass(3, BigDecimal.class, true); // Discount (%) to limit precision + m_tablePrice.setColumnClass(4, String.class, true); // DocNo + m_tablePrice.setColumnClass(5, Timestamp.class, true); // Date + m_tablePrice.setColumnClass(6, String.class, true); // Org + // + m_tablePrice.autoSize(); + // + + return data.size() != 0; + } // dynInit + + + /** + * Get Info for Product for given Business Parner + */ + private Vector> queryProduct () + { + String sql = "SELECT p.Name,l.PriceActual,l.PriceList,l.QtyInvoiced," // 1,2,3,4 + + "i.DateInvoiced,dt.PrintName || ' ' || i.DocumentNo As DocumentNo," // 5,6 + + "o.Name, " // 7 + + "NULL, i.M_PriceList_ID " // 8,9 + + "FROM C_Invoice i" + + " INNER JOIN C_InvoiceLine l ON (i.C_Invoice_ID=l.C_Invoice_ID)" + + " INNER JOIN C_DocType dt ON (i.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN AD_Org o ON (i.AD_Org_ID=o.AD_Org_ID)" + + " INNER JOIN M_Product p ON (l.M_Product_ID=p.M_Product_ID) " + + "WHERE i.C_BPartner_ID=? " + + "ORDER BY i.DateInvoiced DESC"; + + Vector> data = fillTable (sql, m_C_BPartner_ID); + + sql = "SELECT Name from C_BPartner WHERE C_BPartner_ID=?"; + fillLabel (sql, m_C_BPartner_ID); + return data; + } // queryProduct + + /** + * Get Info for Business Partners for given Product + */ + private Vector> queryBPartner () + { + String sql = "SELECT bp.Name,l.PriceActual,l.PriceList,l.QtyInvoiced," // 1,2,3,4 + + "i.DateInvoiced,dt.PrintName || ' ' || i.DocumentNo As DocumentNo," // 5,6 + + "o.Name," // 7 + + "NULL, i.M_PriceList_ID" // 8,9 + + " FROM C_Invoice i" + + " INNER JOIN C_InvoiceLine l ON (i.C_Invoice_ID=l.C_Invoice_ID)" + + " INNER JOIN C_DocType dt ON (i.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN AD_Org o ON (i.AD_Org_ID=o.AD_Org_ID)" + + " INNER JOIN C_BPartner bp ON (i.C_BPartner_ID=bp.C_BPartner_ID) " + + "WHERE l.M_Product_ID=? " + + "ORDER BY i.DateInvoiced DESC"; + + Vector> data = fillTable (sql, m_M_Product_ID); + + sql = "SELECT Name from M_Product WHERE M_Product_ID=?"; + fillLabel (sql, m_M_Product_ID); + return data; + } // qyeryBPartner + + /** + * Fill Table + */ + private Vector> fillTable (String sql, int parameter) + { + log.fine(sql + "; Parameter=" + parameter); + Vector> data = new Vector>(); + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, parameter); + rs = pstmt.executeQuery(); + while (rs.next()) + { + Vector line = new Vector(6); + // 0-Name, 1-PriceActual, 2-QtyInvoiced, 3-Discount, 4-DocumentNo, 5-DateInvoiced + line.add(rs.getString(1)); // Name + line.add(rs.getBigDecimal(2)); // Price + line.add(new Double(rs.getDouble(4))); // Qty + BigDecimal discountBD = rs.getBigDecimal(8); + if (discountBD == null) { + double priceList = rs.getDouble(3); + double priceActual = rs.getDouble(2); + if (priceList != 0) { + discountBD = new BigDecimal((priceList - priceActual)/priceList * 100); + // Rounding: + int precision = MPriceList.getStandardPrecision(Env.getCtx(), rs.getInt(9)); + if (discountBD.scale() > precision) + discountBD = discountBD.setScale(precision, RoundingMode.HALF_UP); + } + else + discountBD = Env.ZERO; + } + line.add(discountBD); // Discount + line.add(rs.getString(6)); // DocNo + line.add(rs.getTimestamp(5)); // Date + line.add(rs.getString(7)); // Org/Warehouse + data.add(line); + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + finally { + DB.close(rs, pstmt); + rs = null; pstmt = null; + } + log.fine("#" + data.size()); + return data; + } // fillTable + + /** + * Set Label + * to product or bp name + */ + private void fillLabel (String sql, int parameter) + { + log.fine(sql + "; Parameter=" + parameter); + String retValue = DB.getSQLValueString(null, sql, parameter); + if (retValue != null) + label.setText(retValue); + } // fillLabel + + + public void onEvent(Event e) throws Exception { + Component component = e.getTarget(); + + if (component.equals(confirmPanel.getButton(ConfirmPanel.A_OK))) + dispose(); + else if(component instanceof Tab) + { + if (tabbox.getSelectedIndex() == 1) + initReservedOrderedTab(true); + else if (tabbox.getSelectedIndex() == 2) + initReservedOrderedTab(false); + else if (tabbox.getSelectedIndex() == 3) + initUnconfirmedTab(); + else if (tabbox.getSelectedIndex() == 4) + initAtpTab(); + } + } + + /** + * Query Reserved/Ordered + * @param reserved po/so + */ + private void initReservedOrderedTab (boolean reserved) + { + // Done already + if (reserved && m_modelReserved != null) + return; + if (!reserved && m_modelOrdered != null) + return; + + // Header + Vector columnNames = new Vector(); + columnNames.add(Msg.translate(Env.getCtx(), m_C_BPartner_ID == 0 ? "C_BPartner_ID" : "M_Product_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "PriceActual")); + columnNames.add(Msg.translate(Env.getCtx(), reserved ? "QtyReserved" : "QtyOrdered")); + columnNames.add(Msg.translate(Env.getCtx(), "Discount")); + columnNames.add(Msg.translate(Env.getCtx(), "DocumentNo")); + columnNames.add(Msg.translate(Env.getCtx(), "DateOrdered")); + columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); + + // Fill Data + Vector> data = null; + if (m_C_BPartner_ID == 0) + { + String sql = "SELECT bp.Name, ol.PriceActual,ol.PriceList,ol.QtyReserved," + + "o.DateOrdered,dt.PrintName || ' ' || o.DocumentNo As DocumentNo, " + + "w.Name," + + "ol.Discount, 0 " // 8,9=M_PriceList_ID + + "FROM C_Order o" + + " INNER JOIN C_OrderLine ol ON (o.C_Order_ID=ol.C_Order_ID)" + + " INNER JOIN C_DocType dt ON (o.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN M_Warehouse w ON (ol.M_Warehouse_ID=w.M_Warehouse_ID)" + + " INNER JOIN C_BPartner bp ON (o.C_BPartner_ID=bp.C_BPartner_ID) " + + "WHERE ol.QtyReserved<>0" + + " AND ol.M_Product_ID=?" + + " AND o.IsSOTrx=" + (reserved ? "'Y'" : "'N'") + + " ORDER BY o.DateOrdered"; + data = fillTable (sql, m_M_Product_ID); // Product By BPartner + } + else + { + String sql = "SELECT p.Name, ol.PriceActual,ol.PriceList,ol.QtyReserved," + + "o.DateOrdered,dt.PrintName || ' ' || o.DocumentNo As DocumentNo, " + + "w.Name," + + "ol.Discount, 0 " // 8,9=M_PriceList_ID + + "FROM C_Order o" + + " INNER JOIN C_OrderLine ol ON (o.C_Order_ID=ol.C_Order_ID)" + + " INNER JOIN C_DocType dt ON (o.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN M_Warehouse w ON (ol.M_Warehouse_ID=w.M_Warehouse_ID)" + + " INNER JOIN M_Product p ON (ol.M_Product_ID=p.M_Product_ID) " + + "WHERE ol.QtyReserved<>0" + + " AND o.C_BPartner_ID=?" + + " AND o.IsSOTrx=" + (reserved ? "'Y'" : "'N'") + + " ORDER BY o.DateOrdered"; + data = fillTable (sql, m_C_BPartner_ID);// Product of BP + } + + // Table + if (reserved) + { + m_modelReserved = new ListModelTable(data); + m_tableReserved.setData(m_modelReserved, columnNames); + // + m_tableReserved.setColumnClass(0, String.class, true); // Product/Partner + m_tableReserved.setColumnClass(1, BigDecimal.class, true); // Price + m_tableReserved.setColumnClass(2, Double.class, true); // Quantity + m_tableReserved.setColumnClass(3, BigDecimal.class, true); // Discount (%) + m_tableReserved.setColumnClass(4, String.class, true); // DocNo + m_tableReserved.setColumnClass(5, Timestamp.class, true); // Date + m_tableReserved.setColumnClass(6, String.class, true); // Warehouse + // + m_tableReserved.autoSize(); + } + else + { + m_modelOrdered = new ListModelTable(data); + m_tableOrdered.setData(m_modelOrdered, columnNames); + // + m_tableOrdered.setColumnClass(0, String.class, true); // Product/Partner + m_tableOrdered.setColumnClass(1, BigDecimal.class, true); // Price + m_tableOrdered.setColumnClass(2, Double.class, true); // Quantity + m_tableOrdered.setColumnClass(3, BigDecimal.class, true); // Discount (%) + m_tableOrdered.setColumnClass(4, String.class, true); // DocNo + m_tableOrdered.setColumnClass(5, Timestamp.class, true); // Date + m_tableOrdered.setColumnClass(6, String.class, true); // Warehouse + // + m_tableOrdered.autoSize(); + } + + } // initReservedOrderedTab + + + /** + * Query Unconfirmed + */ + private void initUnconfirmedTab () + { + // Done already + if (m_modelUnconfirmed != null) + return; + + // Header + Vector columnNames = new Vector(); + columnNames.add(Msg.translate(Env.getCtx(), m_C_BPartner_ID == 0 ? "C_BPartner_ID" : "M_Product_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "MovementQty")); + columnNames.add(Msg.translate(Env.getCtx(), "MovementDate")); + columnNames.add(Msg.translate(Env.getCtx(), "IsSOTrx")); + columnNames.add(Msg.translate(Env.getCtx(), "DocumentNo")); + columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); + + // Fill Data + String sql = null; + int parameter = 0; + if (m_C_BPartner_ID == 0) + { + sql = "SELECT bp.Name," + + " CASE WHEN io.IsSOTrx='Y' THEN iol.MovementQty*-1 ELSE iol.MovementQty END AS MovementQty," + + " io.MovementDate,io.IsSOTrx," + + " dt.PrintName || ' ' || io.DocumentNo As DocumentNo," + + " w.Name " + + "FROM M_InOutLine iol" + + " INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)" + + " INNER JOIN C_BPartner bp ON (io.C_BPartner_ID=bp.C_BPartner_ID)" + + " INNER JOIN C_DocType dt ON (io.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN M_Warehouse w ON (io.M_Warehouse_ID=w.M_Warehouse_ID)" + + " INNER JOIN M_InOutLineConfirm lc ON (iol.M_InOutLine_ID=lc.M_InOutLine_ID) " + + "WHERE iol.M_Product_ID=?" + + " AND lc.Processed='N' " + + "ORDER BY io.MovementDate,io.IsSOTrx"; + parameter = m_M_Product_ID; + } + else + { + sql = "SELECT p.Name," + + " CASE WHEN io.IsSOTrx='Y' THEN iol.MovementQty*-1 ELSE iol.MovementQty END AS MovementQty," + + " io.MovementDate,io.IsSOTrx," + + " dt.PrintName || ' ' || io.DocumentNo As DocumentNo," + + " w.Name " + + "FROM M_InOutLine iol" + + " INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID)" + + " INNER JOIN M_Product p ON (iol.M_Product_ID=p.M_Product_ID)" + + " INNER JOIN C_DocType dt ON (io.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN M_Warehouse w ON (io.M_Warehouse_ID=w.M_Warehouse_ID)" + + " INNER JOIN M_InOutLineConfirm lc ON (iol.M_InOutLine_ID=lc.M_InOutLine_ID) " + + "WHERE io.C_BPartner_ID=?" + + " AND lc.Processed='N' " + + "ORDER BY io.MovementDate,io.IsSOTrx"; + parameter = m_C_BPartner_ID; + } + Vector> data = new Vector>(); + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, parameter); + rs = pstmt.executeQuery(); + while (rs.next()) + { + Vector line = new Vector(6); + // 1-Name, 2-MovementQty, 3-MovementDate, 4-IsSOTrx, 5-DocumentNo + line.add(rs.getString(1)); // Name + line.add(new Double(rs.getDouble(2))); // Qty + line.add(rs.getTimestamp(3)); // Date + line.add(new Boolean("Y".equals(rs.getString(4)))); // IsSOTrx + line.add(rs.getString(5)); // DocNo + line.add(rs.getString(6)); // Warehouse + data.add(line); + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + finally { + DB.close(rs, pstmt); + rs = null; pstmt = null; + } + log.fine("#" + data.size()); + + // Table + m_modelUnconfirmed = new ListModelTable(data); + m_tableUnconfirmed.setData(m_modelUnconfirmed, columnNames); + // + m_tableUnconfirmed.setColumnClass(0, String.class, true); // Product/Partner + m_tableUnconfirmed.setColumnClass(1, Double.class, true); // MovementQty + m_tableUnconfirmed.setColumnClass(2, Timestamp.class, true); // MovementDate + m_tableUnconfirmed.setColumnClass(3, Boolean.class, true); // IsSOTrx + m_tableUnconfirmed.setColumnClass(4, String.class, true); // DocNo + // + m_tableUnconfirmed.autoSize(); + } // initUnconfirmedTab + + /** + * Query ATP + */ + private void initAtpTab () + { + // Done already + if (m_modelAtp != null) + return; + + // Header + Vector columnNames = new Vector(); + columnNames.add(Msg.translate(Env.getCtx(), "Date")); + columnNames.add(Msg.translate(Env.getCtx(), "QtyOnHand")); + columnNames.add(Msg.translate(Env.getCtx(), "C_BPartner_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "QtyOrdered")); + columnNames.add(Msg.translate(Env.getCtx(), "QtyReserved")); + columnNames.add(Msg.translate(Env.getCtx(), "M_Locator_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "M_AttributeSetInstance_ID")); + columnNames.add(Msg.translate(Env.getCtx(), "DocumentNo")); + columnNames.add(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); + + // Fill Storage Data + boolean showDetail = CLogMgt.isLevelFine(); + String sql = "SELECT s.QtyOnHand, s.QtyReserved, s.QtyOrdered," + + " productAttribute(s.M_AttributeSetInstance_ID), s.M_AttributeSetInstance_ID,"; + if (!showDetail) + sql = "SELECT SUM(s.QtyOnHand), SUM(s.QtyReserved), SUM(s.QtyOrdered)," + + " productAttribute(s.M_AttributeSetInstance_ID), 0,"; + sql += " w.Name, l.Value " + + "FROM M_Storage s" + + " INNER JOIN M_Locator l ON (s.M_Locator_ID=l.M_Locator_ID)" + + " INNER JOIN M_Warehouse w ON (l.M_Warehouse_ID=w.M_Warehouse_ID) " + + "WHERE M_Product_ID=?"; + if (m_M_Warehouse_ID != 0) + sql += " AND l.M_Warehouse_ID=?"; + if (m_M_AttributeSetInstance_ID > 0) + sql += " AND s.M_AttributeSetInstance_ID=?"; + sql += " AND (s.QtyOnHand<>0 OR s.QtyReserved<>0 OR s.QtyOrdered<>0)"; + if (!showDetail) + sql += " GROUP BY productAttribute(s.M_AttributeSetInstance_ID), w.Name, l.Value"; + sql += " ORDER BY l.Value"; + + Vector> data = new Vector>(); + double qty = 0; + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, m_M_Product_ID); + if (m_M_Warehouse_ID != 0) + pstmt.setInt(2, m_M_Warehouse_ID); + if (m_M_AttributeSetInstance_ID > 0) + pstmt.setInt(3, m_M_AttributeSetInstance_ID); + rs = pstmt.executeQuery(); + while (rs.next()) + { + Vector line = new Vector(9); + line.add(null); // Date + double qtyOnHand = rs.getDouble(1); + qty += qtyOnHand; + line.add(new Double(qtyOnHand)); // Qty + line.add(null); // BPartner + line.add(new Double(rs.getDouble(3))); // QtyOrdered + line.add(new Double(rs.getDouble(2))); // QtyReserved + line.add(rs.getString(7)); // Locator + String asi = rs.getString(4); + if (showDetail && (asi == null || asi.length() == 0)) + asi = "{" + rs.getInt(5) + "}"; + line.add(asi); // ASI + line.add(null); // DocumentNo + line.add(rs.getString(6)); // Warehouse + data.add(line); + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + finally { + DB.close(rs, pstmt); + rs = null; pstmt = null; + } + + // Orders + sql = "SELECT o.DatePromised, ol.QtyReserved," + + " productAttribute(ol.M_AttributeSetInstance_ID), ol.M_AttributeSetInstance_ID," + + " dt.DocBaseType, bp.Name," + + " dt.PrintName || ' ' || o.DocumentNo As DocumentNo, w.Name " + + "FROM C_Order o" + + " INNER JOIN C_OrderLine ol ON (o.C_Order_ID=ol.C_Order_ID)" + + " INNER JOIN C_DocType dt ON (o.C_DocType_ID=dt.C_DocType_ID)" + + " INNER JOIN M_Warehouse w ON (ol.M_Warehouse_ID=w.M_Warehouse_ID)" + + " INNER JOIN C_BPartner bp ON (o.C_BPartner_ID=bp.C_BPartner_ID) " + + "WHERE ol.QtyReserved<>0" + + " AND ol.M_Product_ID=?"; + if (m_M_Warehouse_ID != 0) + sql += " AND ol.M_Warehouse_ID=?"; + if (m_M_AttributeSetInstance_ID > 0) + sql += " AND ol.M_AttributeSetInstance_ID=?"; + sql += " ORDER BY o.DatePromised"; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, m_M_Product_ID); + if (m_M_Warehouse_ID != 0) + pstmt.setInt(2, m_M_Warehouse_ID); + if (m_M_AttributeSetInstance_ID > 0) + pstmt.setInt(3, m_M_AttributeSetInstance_ID); + rs = pstmt.executeQuery(); + while (rs.next()) + { + Vector line = new Vector(9); + line.add(rs.getTimestamp(1)); // Date + double oq = rs.getDouble(2); + String DocBaseType = rs.getString(5); + Double qtyReserved = null; + Double qtyOrdered = null; + if (MDocType.DOCBASETYPE_PurchaseOrder.equals(DocBaseType)) + { + qtyOrdered = new Double(oq); + qty += oq; + } + else + { + qtyReserved = new Double(oq); + qty -= oq; + } + line.add(new Double(qty)); // Qty + line.add(rs.getString(6)); // BPartner + line.add(qtyOrdered); // QtyOrdered + line.add(qtyReserved); // QtyReserved + line.add(null); // Locator + String asi = rs.getString(3); + if (showDetail && (asi == null || asi.length() == 0)) + asi = "{" + rs.getInt(4) + "}"; + line.add(asi); // ASI + line.add(rs.getString(7)); // DocumentNo + line.add(rs.getString(8)); // Warehouse + data.add(line); + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + finally { + DB.close(rs, pstmt); + rs = null; pstmt = null; + } + + // Table + m_modelAtp = new ListModelTable(data); + m_tableAtp.setData(m_modelAtp, columnNames); + // + m_tableAtp.setColumnClass(0, Timestamp.class, true); // Date + m_tableAtp.setColumnClass(1, Double.class, true); // Quantity + m_tableAtp.setColumnClass(2, String.class, true); // Partner + m_tableAtp.setColumnClass(3, Double.class, true); // Quantity + m_tableAtp.setColumnClass(4, Double.class, true); // Quantity + m_tableAtp.setColumnClass(5, String.class, true); // Locator + m_tableAtp.setColumnClass(6, String.class, true); // ASI + m_tableAtp.setColumnClass(7, String.class, true); // DocNo + m_tableAtp.setColumnClass(8, String.class, true); // Warehouse + // + m_tableAtp.autoSize(); + } // initAtpTab +} // InvoiceHistory diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java index 6acecee30d..5c1ba25064 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java @@ -17,15 +17,17 @@ package org.adempiere.webui.panel; import java.text.DateFormat; -import java.util.*; -import java.util.logging.*; +import java.util.Date; +import java.util.TimeZone; +import java.util.logging.Level; import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.ToolBarButton; import org.adempiere.webui.window.InfoSchedule; import org.adempiere.webui.window.WAssignmentDialog; import org.compiere.model.MResourceAssignment; -import org.compiere.util.*; +import org.compiere.util.CLogger; +import org.compiere.util.Env; import org.zkforge.timeline.Bandinfo; import org.zkforge.timeline.Timeline; import org.zkforge.timeline.event.BandScrollEvent; @@ -153,8 +155,12 @@ public class WSchedule extends Panel implements EventListener public void recreate (int S_Resource_ID, Date date) { hourBand.setDate(date); - if (m_center == null || date.getTime() != m_center.getTime()) - hourBand.scrollToCenter(date); + // Elaine 2008/12/12 + dayBand.setDate(date); + mthBand.setDate(date); +// if (m_center == null || date.getTime() != m_center.getTime()) +// hourBand.scrollToCenter(date); + // String feedUrl = "timeline?S_Resource_ID=" + S_Resource_ID + "&date=" + DateFormat.getInstance().format(date) + "&uuid=" + button.getUuid() + "&tlid=" + timeLine.getUuid(); diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java b/zkwebui/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java index 2fe746e220..942fdcf434 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java @@ -17,15 +17,21 @@ package org.adempiere.webui.window; import java.math.BigDecimal; -import java.sql.*; -import java.util.*; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Calendar; import java.util.Date; -import java.util.logging.*; +import java.util.GregorianCalendar; +import java.util.logging.Level; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.ConfirmPanel; +import org.adempiere.webui.component.DatetimeBox; import org.adempiere.webui.component.Grid; +import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.ListItem; import org.adempiere.webui.component.Listbox; @@ -34,12 +40,21 @@ import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Window; import org.adempiere.webui.panel.StatusBarPanel; import org.adempiere.webui.panel.WSchedule; -import org.compiere.model.*; -import org.compiere.util.*; +import org.compiere.model.MAssignmentSlot; +import org.compiere.model.MResourceAssignment; +import org.compiere.model.MRole; +import org.compiere.model.ScheduleUtil; +import org.compiere.util.CLogger; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.KeyNamePair; +import org.compiere.util.Msg; +import org.compiere.util.TimeUtil; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Div; +import org.zkoss.zul.Hbox; import org.zkoss.zul.Vbox; @@ -51,8 +66,12 @@ import org.zkoss.zul.Vbox; * * Zk Port * @author Low Heng Sin + * + * Zk Port + * @author Elaine + * @version InfoSchedule.java Adempiere Swing UI 3.4.1 */ -public class InfoSchedule extends Window implements EventListener //, ChangeListener +public class InfoSchedule extends Window implements EventListener { /** * Constructor @@ -68,7 +87,8 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList else setAttribute("mode", "overlapped"); this.setWidth("600px"); - this.setHeight("600px"); +// this.setHeight("600px"); + this.setClosable(true); this.setBorder("normal"); this.setStyle("position: absolute"); if (mAssignment == null) @@ -113,12 +133,17 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList private static CLogger log = CLogger.getCLogger(InfoSchedule.class); private Vbox mainLayout = new Vbox(); - private Grid parameterPanel = new Grid(); + private Grid parameterPanel = GridFactory.newGridLayout(); private Label labelResourceType = new Label(); private Listbox fieldResourceType = new Listbox(); private Label labelResource = new Label(); private Listbox fieldResource = new Listbox(); + // Elaine 2008/12/12 + private Button bPrevious = new Button(); private Label labelDate = new Label(); + private DatetimeBox fieldDate = new DatetimeBox(); + private Button bNext = new Button(); + // private WSchedule schedulePane = new WSchedule(this); private StatusBarPanel statusBar = new StatusBarPanel(); private ConfirmPanel confirmPanel = new ConfirmPanel(true); @@ -137,6 +162,11 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList labelResource.setValue(Msg.translate(Env.getCtx(), "S_Resource_ID")); labelDate.setValue(Msg.translate(Env.getCtx(), "Date")); + // Elaine 2008/12/12 + bPrevious.setLabel("<"); + bNext.setLabel(">"); + // + mainLayout.appendChild(parameterPanel); Rows rows = new Rows(); @@ -151,6 +181,16 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList rows.appendChild(row); row.appendChild(labelResource); row.appendChild(fieldResource); + + // Elaine 2008/12/12 + row = new Row(); + rows.appendChild(row); + row.appendChild(labelDate); + Hbox hbox = new Hbox(); + hbox.appendChild(bPrevious); + hbox.appendChild(fieldDate); + hbox.appendChild(bNext); + row.appendChild(hbox); // mainLayout.appendChild(schedulePane); @@ -178,6 +218,15 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList fieldResourceType.addEventListener(Events.ON_SELECT, this); fieldResource.addEventListener(Events.ON_SELECT, this); + // Date - Elaine 2008/12/12 + fieldDate.setValue(m_dateFrom); + fieldDate.getDatebox().addEventListener(Events.ON_BLUR, this); + fieldDate.getTimebox().addEventListener(Events.ON_BLUR, this); +// fieldDate.addEventListener(Events.ON_BLUR, this); + bPrevious.addEventListener(Events.ON_CLICK, this); + bNext.addEventListener(Events.ON_CLICK, this); + // + // confirmPanel.addActionListener(Events.ON_CLICK, this); if (createNew) { @@ -322,8 +371,12 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList KeyNamePair pp = new KeyNamePair((Integer)listItem.getValue(), listItem.getLabel()); int S_Resource_ID = pp.getKey(); m_mAssignment.setS_Resource_ID(S_Resource_ID); -// Date date = fieldDate.getValue(); - Date date = m_dateFrom; + + // Elaine 2008/12/12 + Date date = fieldDate.getValue(); + if (date == null) date = new Timestamp(System.currentTimeMillis()); +// Date date = m_dateFrom; + // // Set Info m_loading = true; @@ -379,12 +432,45 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList fillResource(); displayCalendar(); } + // Elaine 2008/12/12 + else if (event.getTarget()== fieldResource + || event.getTarget() == fieldDate.getDatebox() + || event.getTarget() == fieldDate.getTimebox()) + displayCalendar(); + // + else if (event.getTarget() == bPrevious) + adjustDate(-1); + else if (event.getTarget() == bNext) + adjustDate(+1); // else if (event.getTarget().getId().equals("New")) doAdd(); // } + + // Elaine 2008/12/12 + /** + * Adjust Date + * @param diff difference + */ + private void adjustDate (int diff) + { + Date date = fieldDate.getValue(); + GregorianCalendar cal = new GregorianCalendar(); + cal.setTime(date); + +// if (timePane.getSelectedIndex() == 0) + cal.add(java.util.Calendar.DAY_OF_YEAR, diff); +// else if (timePane.getSelectedIndex() == 1) +// cal.add(java.util.Calendar.WEEK_OF_YEAR, diff); +// else +// cal.add(java.util.Calendar.MONTH, diff); + // + fieldDate.setValue(new Timestamp(cal.getTimeInMillis())); + displayCalendar (); + } // adjustDate + // private void doAdd() { ListItem listItem = fieldResource.getSelectedItem(); @@ -461,6 +547,7 @@ public class InfoSchedule extends Window implements EventListener //, ChangeList */ public void dateCallback(Date date) { m_dateFrom = new Timestamp(date.getTime()); + fieldDate.setValue(m_dateFrom); // Elaine 2008/12/15 }