IDEMPIERE-2305 Cash/Check Payment button is ignoring amount entered

This commit is contained in:
Carlos Ruiz 2014-11-08 13:11:07 -05:00
parent 3be24c717b
commit 0e03505f52
6 changed files with 41 additions and 7 deletions

View File

@ -83,7 +83,7 @@ public class MPayment extends X_C_Payment
/** /**
* *
*/ */
private static final long serialVersionUID = -3426445843281140181L; private static final long serialVersionUID = -7646717328867858897L;
/** /**
* Get Payments Of BPartner * Get Payments Of BPartner
@ -654,6 +654,22 @@ public class MPayment extends X_C_Payment
*/ */
protected boolean beforeSave (boolean newRecord) protected boolean beforeSave (boolean newRecord)
{ {
if (isComplete() &&
( is_ValueChanged(COLUMNNAME_C_BankAccount_ID)
|| is_ValueChanged(COLUMNNAME_C_BPartner_ID)
|| is_ValueChanged(COLUMNNAME_C_Charge_ID)
|| is_ValueChanged(COLUMNNAME_C_Currency_ID)
|| is_ValueChanged(COLUMNNAME_C_DocType_ID)
|| is_ValueChanged(COLUMNNAME_C_Invoice_ID)
|| is_ValueChanged(COLUMNNAME_C_Order_ID)
|| is_ValueChanged(COLUMNNAME_DateAcct)
|| is_ValueChanged(COLUMNNAME_DateTrx)
|| is_ValueChanged(COLUMNNAME_DiscountAmt)
|| is_ValueChanged(COLUMNNAME_PayAmt)
|| is_ValueChanged(COLUMNNAME_WriteOffAmt))) {
log.saveError("PaymentAlreadyProcessed", Msg.translate(getCtx(), "C_Payment_ID"));
return false;
}
// @Trifon - CashPayments // @Trifon - CashPayments
//if ( getTenderType().equals("X") ) { //if ( getTenderType().equals("X") ) {
if ( isCashbookTrx()) { if ( isCashbookTrx()) {
@ -782,6 +798,18 @@ public class MPayment extends X_C_Payment
return true; return true;
} // beforeSave } // beforeSave
/**
* Document Status is Complete or Closed
* @return true if CO, CL or RE
*/
public boolean isComplete()
{
String ds = getDocStatus();
return DOCSTATUS_Completed.equals(ds)
|| DOCSTATUS_Closed.equals(ds)
|| DOCSTATUS_Reversed.equals(ds);
} // isComplete
/** /**
* Get Allocated Amt in Payment Currency * Get Allocated Amt in Payment Currency
* @return amount or null * @return amount or null

View File

@ -39,10 +39,10 @@ import org.compiere.util.DisplayType;
*/ */
public class MSysConfig extends X_AD_SysConfig public class MSysConfig extends X_AD_SysConfig
{ {
/** /**
* *
*/ */
private static final long serialVersionUID = -5043918406658386237L; private static final long serialVersionUID = 8965976274227777648L;
public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION"; public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION";
public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS"; public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS";
@ -78,6 +78,7 @@ public class MSysConfig extends X_AD_SysConfig
public static final String DOCACTIONBUTTON_SHOWACTIONNAME = "DOCACTIONBUTTON_SHOWACTIONNAME"; public static final String DOCACTIONBUTTON_SHOWACTIONNAME = "DOCACTIONBUTTON_SHOWACTIONNAME";
public static final String DPVIEWS_SHOWINFOACCOUNT = "DPViews_ShowInfoAccount"; public static final String DPVIEWS_SHOWINFOACCOUNT = "DPViews_ShowInfoAccount";
public static final String DPVIEWS_SHOWINFOSCHEDULE = "DPViews_ShowInfoSchedule"; public static final String DPVIEWS_SHOWINFOSCHEDULE = "DPViews_ShowInfoSchedule";
public static final String ENABLE_PAYMENTBOX_BUTTON = "ENABLE_PAYMENTBOX_BUTTON";
public static final String GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS = "GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS"; public static final String GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS = "GRIDTABLE_LOAD_TIMEOUT_IN_SECONDS";
public static final String Invoice_ReverseUseNewNumber = "Invoice_ReverseUseNewNumber"; public static final String Invoice_ReverseUseNewNumber = "Invoice_ReverseUseNewNumber";
public static final String JASPER_SWAP_MAX_PAGES = "JASPER_SWAP_MAX_PAGES"; public static final String JASPER_SWAP_MAX_PAGES = "JASPER_SWAP_MAX_PAGES";

View File

@ -34,7 +34,6 @@ import org.adempiere.webui.window.FDialog;
import org.compiere.grid.PaymentFormCash; import org.compiere.grid.PaymentFormCash;
import org.compiere.model.GridTab; import org.compiere.model.GridTab;
import org.compiere.model.MConversionRate; import org.compiere.model.MConversionRate;
import org.compiere.model.MInvoice;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.KeyNamePair; import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg; import org.compiere.util.Msg;

View File

@ -17,6 +17,8 @@ import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport; import java.beans.PropertyChangeSupport;
import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.LayoutUtils;
import org.compiere.model.MSysConfig;
import org.compiere.util.Env;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Comboitem; import org.zkoss.zul.Comboitem;
@ -77,6 +79,8 @@ public class Paymentbox extends Div {
} }
public void setEnabled(boolean isComboEnabled, boolean isBtnEnabled) { public void setEnabled(boolean isComboEnabled, boolean isBtnEnabled) {
if (! MSysConfig.getBooleanValue(MSysConfig.ENABLE_PAYMENTBOX_BUTTON, true, Env.getAD_Client_ID(Env.getCtx())))
isBtnEnabled = false;
combo.setEnabled(isComboEnabled); combo.setEnabled(isComboEnabled);
combo.setButtonVisible(isComboEnabled); combo.setButtonVisible(isComboEnabled);
btn.setEnabled(isBtnEnabled); btn.setEnabled(isBtnEnabled);

View File

@ -181,6 +181,8 @@ public class WPaymentEditor extends WEditor implements ListDataListener {
if (!m_onlyRule // Only order has Warehouse if (!m_onlyRule // Only order has Warehouse
&& !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null) && !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null)
m_onlyRule = true; m_onlyRule = true;
if (!m_onlyRule && m_mTab.needSave(true, false)) // don't show button until change on payment rule is saved
m_onlyRule = true;
} }
getComponent().setEnabled(readWrite, readWrite && !m_onlyRule); getComponent().setEnabled(readWrite, readWrite && !m_onlyRule);

View File

@ -208,11 +208,11 @@ public abstract class PaymentFormCheck extends PaymentForm {
if (invoice == null && C_Order_ID != 0) if (invoice == null && C_Order_ID != 0)
order = new MOrder (Env.getCtx(), C_Order_ID, null); order = new MOrder (Env.getCtx(), C_Order_ID, null);
BigDecimal payAmount = m_Amount; BigDecimal payAmount = amount;
if (negateAmt) if (negateAmt)
payAmount = m_Amount.negate(); payAmount = amount.negate();
// Info // Info
if (log.isLoggable(Level.CONFIG)) log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt); if (log.isLoggable(Level.CONFIG)) log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt);