IDEMPIERE-834 Zk: Improvement to payment Allocation form.

This commit is contained in:
Heng Sin Low 2013-04-08 15:39:05 +08:00
parent 0ac268c7da
commit 4f0c58a751
3 changed files with 64 additions and 16 deletions

View File

@ -43,6 +43,7 @@ import org.compiere.apps.StatusBar;
import org.compiere.grid.ed.VDate; import org.compiere.grid.ed.VDate;
import org.compiere.grid.ed.VLookup; import org.compiere.grid.ed.VLookup;
import org.compiere.minigrid.MiniTable; import org.compiere.minigrid.MiniTable;
import org.compiere.model.MAllocationHdr;
import org.compiere.model.MLookup; import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory; import org.compiere.model.MLookupFactory;
import static org.compiere.model.SystemIDs.*; import static org.compiere.model.SystemIDs.*;
@ -481,7 +482,9 @@ public class VAllocation extends Allocation
{ {
public void run(String trxName) public void run(String trxName)
{ {
statusBar.setStatusLine(saveData(m_WindowNo, dateField.getValue(), paymentTable, invoiceTable, trxName)); MAllocationHdr allocation = saveData(m_WindowNo, dateField.getValue(), paymentTable, invoiceTable, trxName);
if (allocation != null)
statusBar.setStatusLine(allocation.getDocumentNo());
} }
}); });
} }

View File

@ -24,6 +24,7 @@ import java.math.BigDecimal;
import java.util.Vector; import java.util.Vector;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Grid;
@ -46,9 +47,9 @@ import org.adempiere.webui.event.WTableModelListener;
import org.adempiere.webui.panel.ADForm; import org.adempiere.webui.panel.ADForm;
import org.adempiere.webui.panel.CustomForm; import org.adempiere.webui.panel.CustomForm;
import org.adempiere.webui.panel.IFormController; import org.adempiere.webui.panel.IFormController;
import org.adempiere.webui.panel.StatusBarPanel;
import org.adempiere.webui.window.FDialog; import org.adempiere.webui.window.FDialog;
import org.compiere.apps.form.Allocation; import org.compiere.apps.form.Allocation;
import org.compiere.model.MAllocationHdr;
import org.compiere.model.MLookup; import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory; import org.compiere.model.MLookupFactory;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
@ -56,10 +57,15 @@ import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trx; import org.compiere.util.Trx;
import org.compiere.util.TrxRunnable; import org.compiere.util.TrxRunnable;
import org.compiere.util.Util;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.A;
import org.zkoss.zul.Borderlayout; import org.zkoss.zul.Borderlayout;
import org.zkoss.zul.Center; import org.zkoss.zul.Center;
import org.zkoss.zul.Hlayout;
import org.zkoss.zul.North; import org.zkoss.zul.North;
import org.zkoss.zul.Separator; import org.zkoss.zul.Separator;
import org.zkoss.zul.South; import org.zkoss.zul.South;
@ -124,13 +130,14 @@ public class WAllocation extends Allocation
private Label differenceLabel = new Label(); private Label differenceLabel = new Label();
private Textbox differenceField = new Textbox(); private Textbox differenceField = new Textbox();
private Button allocateButton = new Button(); private Button allocateButton = new Button();
private Button refreshButton = new Button();
private Label currencyLabel = new Label(); private Label currencyLabel = new Label();
private WTableDirEditor currencyPick = null; private WTableDirEditor currencyPick = null;
private Checkbox multiCurrency = new Checkbox(); private Checkbox multiCurrency = new Checkbox();
private Label chargeLabel = new Label(); private Label chargeLabel = new Label();
private WTableDirEditor chargePick = null; private WTableDirEditor chargePick = null;
private Label allocCurrencyLabel = new Label(); private Label allocCurrencyLabel = new Label();
private StatusBarPanel statusBar = new StatusBarPanel(); private Hlayout statusBar = new Hlayout();
private Label dateLabel = new Label(); private Label dateLabel = new Label();
private WDateEditor dateField = new WDateEditor(); private WDateEditor dateField = new WDateEditor();
private Checkbox autoWriteOff = new Checkbox(); private Checkbox autoWriteOff = new Checkbox();
@ -166,8 +173,13 @@ public class WAllocation extends Allocation
chargeLabel.setText(" " + Msg.translate(Env.getCtx(), "C_Charge_ID")); chargeLabel.setText(" " + Msg.translate(Env.getCtx(), "C_Charge_ID"));
differenceLabel.setText(Msg.getMsg(Env.getCtx(), "Difference")); differenceLabel.setText(Msg.getMsg(Env.getCtx(), "Difference"));
differenceField.setText("0"); differenceField.setText("0");
allocateButton.setLabel(Msg.getMsg(Env.getCtx(), "Process")); differenceField.setReadonly(true);
differenceField.setStyle("text-align: right");
allocateButton.setLabel(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Process")));
allocateButton.addActionListener(this); allocateButton.addActionListener(this);
refreshButton.setLabel(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Refresh")));
refreshButton.addActionListener(this);
refreshButton.setAutodisable("self");
currencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID")); currencyLabel.setText(Msg.translate(Env.getCtx(), "C_Currency_ID"));
multiCurrency.setText(Msg.getMsg(Env.getCtx(), "MultiCurrency")); multiCurrency.setText(Msg.getMsg(Env.getCtx(), "MultiCurrency"));
multiCurrency.addActionListener(this); multiCurrency.addActionListener(this);
@ -217,7 +229,7 @@ public class WAllocation extends Allocation
south.appendChild(southPanel); south.appendChild(southPanel);
southPanel.appendChild(allocationPanel); southPanel.appendChild(allocationPanel);
allocationPanel.appendChild(allocationLayout); allocationPanel.appendChild(allocationLayout);
allocationLayout.setWidth("600px"); allocationLayout.setHflex("min");
rows = allocationLayout.newRows(); rows = allocationLayout.newRows();
row = rows.newRow(); row = rows.newRow();
row.appendCellChild(differenceLabel.rightAlign()); row.appendCellChild(differenceLabel.rightAlign());
@ -226,9 +238,10 @@ public class WAllocation extends Allocation
row.appendCellChild(differenceField); row.appendCellChild(differenceField);
row.appendCellChild(chargeLabel.rightAlign()); row.appendCellChild(chargeLabel.rightAlign());
chargePick.getComponent().setHflex("true"); chargePick.getComponent().setHflex("true");
row.appendCellChild(chargePick.getComponent(),2); row.appendCellChild(chargePick.getComponent());
allocateButton.setHflex("true"); allocateButton.setHflex("true");
row.appendCellChild(allocateButton); row.appendCellChild(allocateButton);
row.appendCellChild(refreshButton);
paymentPanel.appendChild(paymentLayout); paymentPanel.appendChild(paymentLayout);
paymentPanel.setWidth("100%"); paymentPanel.setWidth("100%");
@ -325,9 +338,9 @@ public class WAllocation extends Allocation
bpartnerSearch.addValueChangeListener(this); bpartnerSearch.addValueChangeListener(this);
// Translation // Translation
statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "AllocateStatus")); statusBar.appendChild(new Label(Msg.getMsg(Env.getCtx(), "AllocateStatus")));
statusBar.setStatusDB(""); statusBar.setVflex("min");
// Date set to Login Date // Date set to Login Date
dateField.setValue(Env.getContextAsDate(Env.getCtx(), "#Date")); dateField.setValue(Env.getContextAsDate(Env.getCtx(), "#Date"));
dateField.addValueChangeListener(this); dateField.addValueChangeListener(this);
@ -356,9 +369,34 @@ public class WAllocation extends Allocation
else if (e.getTarget().equals(allocateButton)) else if (e.getTarget().equals(allocateButton))
{ {
allocateButton.setEnabled(false); allocateButton.setEnabled(false);
saveData(); MAllocationHdr allocation = saveData();
loadBPartner(); loadBPartner();
allocateButton.setEnabled(true); allocateButton.setEnabled(true);
if (allocation != null)
{
A link = new A(allocation.getDocumentNo());
link.setAttribute("Record_ID", allocation.get_ID());
link.setAttribute("AD_Table_ID", allocation.get_Table_ID());
link.addEventListener(Events.ON_CLICK, new EventListener<Event>()
{
@Override
public void onEvent(Event event) throws Exception
{
Component comp = event.getTarget();
Integer Record_ID = (Integer) comp.getAttribute("Record_ID");
Integer AD_Table_ID = (Integer) comp.getAttribute("AD_Table_ID");
if (Record_ID != null && Record_ID > 0 && AD_Table_ID != null && AD_Table_ID > 0)
{
AEnv.zoom(AD_Table_ID, Record_ID);
}
}
});
statusBar.appendChild(link);
}
}
else if (e.getTarget().equals(refreshButton))
{
loadBPartner();
} }
} // actionPerformed } // actionPerformed
@ -506,6 +544,8 @@ public class WAllocation extends Allocation
// Calculate Totals // Calculate Totals
calculate(); calculate();
statusBar.getChildren().clear();
} // loadBPartner } // loadBPartner
public void calculate() public void calculate()
@ -530,7 +570,7 @@ public class WAllocation extends Allocation
/************************************************************************** /**************************************************************************
* Save Data * Save Data
*/ */
public void saveData() private MAllocationHdr saveData()
{ {
if (m_AD_Org_ID > 0) if (m_AD_Org_ID > 0)
Env.setContext(Env.getCtx(), form.getWindowNo(), "AD_Org_ID", m_AD_Org_ID); Env.setContext(Env.getCtx(), form.getWindowNo(), "AD_Org_ID", m_AD_Org_ID);
@ -538,18 +578,23 @@ public class WAllocation extends Allocation
Env.setContext(Env.getCtx(), form.getWindowNo(), "AD_Org_ID", ""); Env.setContext(Env.getCtx(), form.getWindowNo(), "AD_Org_ID", "");
try try
{ {
final MAllocationHdr[] allocation = new MAllocationHdr[1];
Trx.run(new TrxRunnable() Trx.run(new TrxRunnable()
{ {
public void run(String trxName) public void run(String trxName)
{ {
statusBar.setStatusLine(saveData(form.getWindowNo(), dateField.getValue(), paymentTable, invoiceTable, trxName)); statusBar.getChildren().clear();
allocation[0] = saveData(form.getWindowNo(), dateField.getValue(), paymentTable, invoiceTable, trxName);
} }
}); });
return allocation[0];
} }
catch (Exception e) catch (Exception e)
{ {
FDialog.error(form.getWindowNo(), form, "Error", e.getLocalizedMessage()); FDialog.error(form.getWindowNo(), form, "Error", e.getLocalizedMessage());
return; return null;
} }
} // saveData } // saveData

View File

@ -595,10 +595,10 @@ public class Allocation
/************************************************************************** /**************************************************************************
* Save Data * Save Data
*/ */
public String saveData(int m_WindowNo, Object date, IMiniTable payment, IMiniTable invoice, String trxName) public MAllocationHdr saveData(int m_WindowNo, Object date, IMiniTable payment, IMiniTable invoice, String trxName)
{ {
if (m_noInvoices + m_noPayments == 0) if (m_noInvoices + m_noPayments == 0)
return ""; return null;
// fixed fields // fixed fields
int AD_Client_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "AD_Client_ID"); int AD_Client_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "AD_Client_ID");
@ -801,6 +801,6 @@ public class Allocation
paymentList.clear(); paymentList.clear();
amountList.clear(); amountList.clear();
return alloc.getDocumentNo(); return alloc;
} // saveData } // saveData
} }