2800319 Payment completion doesn't set BP open balance.

https://sourceforge.net/tracker/?func=detail&aid=2800319&group_id=176962&atid=879332
This commit is contained in:
phib 2009-06-03 05:18:36 +00:00
parent 5654cfbffe
commit 2457108af3
1 changed files with 21 additions and 2 deletions

View File

@ -1770,10 +1770,29 @@ public final class MPayment extends X_C_Payment
// MProject project = new MProject(getCtx(), getC_Project_ID());
}
// Update BP for Prepayments
if (getC_BPartner_ID() != 0 && getC_Invoice_ID() == 0)
if (getC_BPartner_ID() != 0 && getC_Invoice_ID() == 0 && getC_Charge_ID() == 0)
{
MBPartner bp = new MBPartner (getCtx(), getC_BPartner_ID(), get_TrxName());
bp.setTotalOpenBalance();
// Update total balance to include this payment
BigDecimal payAmt = MConversionRate.convertBase(getCtx(), getPayAmt(),
getC_Currency_ID(), getDateAcct(), getC_ConversionType_ID(), getAD_Client_ID(), getAD_Org_ID());
if (payAmt == null)
{
m_processMsg = "Could not convert C_Currency_ID=" + getC_Currency_ID()
+ " to base C_Currency_ID=" + MClient.get(Env.getCtx()).getC_Currency_ID();
return DocAction.STATUS_Invalid;
}
// Total Balance
BigDecimal newBalance = bp.getTotalOpenBalance(false);
if (newBalance == null)
newBalance = Env.ZERO;
if (isReceipt())
newBalance = newBalance.subtract(payAmt);
else
newBalance = newBalance.add(payAmt);
bp.setTotalOpenBalance(newBalance);
bp.setSOCreditStatus();
bp.save();
}