/****************************************************************************** * Copyright (C) 2009 Low Heng Sin * * Copyright (C) 2009 Idalica Corporation * * 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.apps.form; import java.util.ArrayList; import java.util.logging.Level; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Listbox; import org.adempiere.webui.component.ListboxFactory; import org.adempiere.webui.component.Row; import org.adempiere.webui.editor.WSearchEditor; import org.adempiere.webui.editor.WTableDirEditor; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.panel.ADForm; import org.adempiere.webui.panel.IFormController; import org.compiere.apps.form.InOutGen; import org.compiere.model.MLookup; import org.compiere.model.MLookupFactory; import org.compiere.model.MOrder; import org.compiere.model.MRMA; import org.compiere.process.DocAction; import org.compiere.util.CLogger; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zul.Space; /** * Generate Shipment (manual) view class * */ public class WInOutGen extends InOutGen implements IFormController, EventListener, ValueChangeListener { private static WGenForm form; /** Logger */ private static CLogger log = CLogger.getCLogger(WInOutGen.class); // private Label lWarehouse = new Label(); private WTableDirEditor fWarehouse; private Label lBPartner = new Label(); private WSearchEditor fBPartner; private Label lDocType = new Label(); private Listbox cmbDocType = ListboxFactory.newDropdownListbox(); private Label lDocAction = new Label(); private WTableDirEditor docAction; public WInOutGen() { log.info(""); form = new WGenForm(this); Env.setContext(Env.getCtx(), form.getWindowNo(), "IsSOTrx", "Y"); try { super.dynInit(); dynInit(); zkInit(); form.postQueryEvent(); } catch(Exception ex) { log.log(Level.SEVERE, "init", ex); } } // init /** * Static Init. * <pre> * selPanel (tabbed) * fOrg, fBPartner * scrollPane & miniTable * genPanel * info * </pre> * @throws Exception */ void zkInit() throws Exception { lBPartner.setText("BPartner"); Row row = form.getParameterPanel().newRows().newRow(); row.appendChild(lWarehouse.rightAlign()); row.appendChild(fWarehouse.getComponent()); row.appendChild(new Space()); row.appendChild(lBPartner.rightAlign()); row.appendChild(fBPartner.getComponent()); row.appendChild(new Space()); row = new Row(); form.getParameterPanel().getRows().appendChild(row); row.appendChild(lDocType.rightAlign()); row.appendChild(cmbDocType); row.appendChild(new Space()); row.appendChild(lDocAction.rightAlign()); row.appendChild(docAction.getComponent()); row.appendChild(new Space()); } // jbInit /** * Fill Picks. * Column_ID from C_Order * @throws Exception if Lookups cannot be initialized */ public void dynInit() throws Exception { // C_OrderLine.M_Warehouse_ID MLookup orgL = MLookupFactory.get (Env.getCtx(), form.getWindowNo(), 0, 2223, DisplayType.TableDir); fWarehouse = new WTableDirEditor ("M_Warehouse_ID", true, false, true, orgL); lWarehouse.setText(Msg.translate(Env.getCtx(), "M_Warehouse_ID")); fWarehouse.addValueChangeListener(this); fWarehouse.setValue(Env.getContextAsInt(Env.getCtx(), "#M_Warehouse_ID")); setM_Warehouse_ID(fWarehouse.getValue()); // Document Action Prepared/ Completed lDocAction.setText(Msg.translate(Env.getCtx(), "DocAction")); MLookup docActionL = MLookupFactory.get(Env.getCtx(), form.getWindowNo(), 4324 /* M_InOut.DocAction */, DisplayType.List, Env.getLanguage(Env.getCtx()), "DocAction", 135 /* _Document Action */, false, "AD_Ref_List.Value IN ('CO','PR')"); docAction = new WTableDirEditor("DocAction", true, false, true,docActionL); docAction.setValue(DocAction.ACTION_Complete); docAction.addValueChangeListener(this); // C_Order.C_BPartner_ID MLookup bpL = MLookupFactory.get (Env.getCtx(), form.getWindowNo(), 0, 2762, DisplayType.Search); fBPartner = new WSearchEditor("C_BPartner_ID", false, false, true, bpL); lBPartner.setText(Msg.translate(Env.getCtx(), "C_BPartner_ID")); fBPartner.addValueChangeListener(this); //Document Type Sales Order/Vendor RMA lDocType.setText(Msg.translate(Env.getCtx(), "C_DocType_ID")); cmbDocType.addItem(new KeyNamePair(MOrder.Table_ID, Msg.translate(Env.getCtx(), "Order"))); cmbDocType.addItem(new KeyNamePair(MRMA.Table_ID, Msg.translate(Env.getCtx(), "VendorRMA"))); cmbDocType.addActionListener(this); cmbDocType.setSelectedIndex(0); form.getStatusBar().setStatusLine(Msg.getMsg(Env.getCtx(), "InOutGenerateSel"));//@@ } // fillPicks /** * Query Info */ public void executeQuery() { KeyNamePair docTypeKNPair = cmbDocType.getSelectedItem().toKeyNamePair(); executeQuery(docTypeKNPair, form.getMiniTable()); form.getMiniTable().repaint(); form.invalidate(); } // executeQuery /** * Action Listener * @param e event */ public void onEvent(Event e) { log.info("Cmd=" + e.getTarget().getId()); // if(cmbDocType.equals(e.getTarget())) { form.postQueryEvent(); return; } // validate(); } // actionPerformed public void validate() { if (isSelectionActive() && getM_Warehouse_ID() <= 0) { throw new WrongValueException(fWarehouse.getComponent(), Msg.translate(Env.getCtx(), "FillMandatory")); } form.saveSelection(); ArrayList<Integer> selection = getSelection(); if (selection != null && selection.size() > 0 && isSelectionActive() ) // on selection tab { form.generate(); } else { form.dispose(); } } /** * Value Change Listener - requery * @param e event */ public void valueChange(ValueChangeEvent e) { log.info(e.getPropertyName() + "=" + e.getNewValue()); if (e.getPropertyName().equals("M_Warehouse_ID")) setM_Warehouse_ID(e.getNewValue()); if (e.getPropertyName().equals("C_BPartner_ID")) { m_C_BPartner_ID = e.getNewValue(); fBPartner.setValue(m_C_BPartner_ID); // display value } form.postQueryEvent(); } // vetoableChange /************************************************************************** * Generate Shipments */ public String generate() { KeyNamePair docTypeKNPair = (KeyNamePair)cmbDocType.getSelectedItem().toKeyNamePair(); String docActionSelected = (String)docAction.getValue(); return generate(form.getStatusBar(), docTypeKNPair, docActionSelected); } // generateShipments public ADForm getForm() { return form; } }