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
@ -654,6 +654,22 @@ public class MPayment extends X_C_Payment
*/
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
//if ( getTenderType().equals("X") ) {
if ( isCashbookTrx()) {
@ -782,6 +798,18 @@ public class MPayment extends X_C_Payment
return true;
} // 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
* @return amount or null

View File

@ -39,10 +39,10 @@ import org.compiere.util.DisplayType;
*/
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 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 DPVIEWS_SHOWINFOACCOUNT = "DPViews_ShowInfoAccount";
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 Invoice_ReverseUseNewNumber = "Invoice_ReverseUseNewNumber";
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.model.GridTab;
import org.compiere.model.MConversionRate;
import org.compiere.model.MInvoice;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;

View File

@ -17,6 +17,8 @@ import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
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.Events;
import org.zkoss.zul.Comboitem;
@ -77,6 +79,8 @@ public class Paymentbox extends Div {
}
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.setButtonVisible(isComboEnabled);
btn.setEnabled(isBtnEnabled);

View File

@ -181,6 +181,8 @@ public class WPaymentEditor extends WEditor implements ListDataListener {
if (!m_onlyRule // Only order has Warehouse
&& !m_isSOTrx && m_mTab.getValue("M_Warehouse_ID") != null)
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);

View File

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