IDEMPIERE-365 Review credit limit check on Invoice, especially for Credit Memos
This commit is contained in:
parent
0625cd9fd9
commit
2f6dedf643
|
@ -1422,16 +1422,23 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
||||||
}
|
}
|
||||||
|
|
||||||
// Credit Status
|
// Credit Status
|
||||||
if (isSOTrx() && !isReversal())
|
if (isSOTrx())
|
||||||
{
|
{
|
||||||
MBPartner bp = new MBPartner (getCtx(), getC_BPartner_ID(), null);
|
MDocType doc = (MDocType) getC_DocTypeTarget();
|
||||||
if (MBPartner.SOCREDITSTATUS_CreditStop.equals(bp.getSOCreditStatus()))
|
// IDEMPIERE-365 - just check credit if is going to increase the debt
|
||||||
{
|
if ( (doc.getDocBaseType().equals(MDocType.DOCBASETYPE_ARCreditMemo) && getGrandTotal().signum() < 0 ) ||
|
||||||
m_processMsg = "@BPartnerCreditStop@ - @TotalOpenBalance@="
|
(doc.getDocBaseType().equals(MDocType.DOCBASETYPE_ARInvoice) && getGrandTotal().signum() > 0 )
|
||||||
+ bp.getTotalOpenBalance()
|
)
|
||||||
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
{
|
||||||
return DocAction.STATUS_Invalid;
|
MBPartner bp = new MBPartner (getCtx(), getC_BPartner_ID(), null);
|
||||||
}
|
if ( MBPartner.SOCREDITSTATUS_CreditStop.equals(bp.getSOCreditStatus()) )
|
||||||
|
{
|
||||||
|
m_processMsg = "@BPartnerCreditStop@ - @TotalOpenBalance@="
|
||||||
|
+ bp.getTotalOpenBalance()
|
||||||
|
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
||||||
|
return DocAction.STATUS_Invalid;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Landed Costs
|
// Landed Costs
|
||||||
|
|
|
@ -1333,31 +1333,35 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
} else {
|
} else {
|
||||||
MBPartner bp = new MBPartner (getCtx(), getBill_BPartner_ID(), get_TrxName()); // bill bp is guaranteed on beforeSave
|
MBPartner bp = new MBPartner (getCtx(), getBill_BPartner_ID(), get_TrxName()); // bill bp is guaranteed on beforeSave
|
||||||
|
|
||||||
if (MBPartner.SOCREDITSTATUS_CreditStop.equals(bp.getSOCreditStatus()))
|
if (getGrandTotal().signum() > 0) // IDEMPIERE-365 - just check credit if is going to increase the debt
|
||||||
{
|
{
|
||||||
m_processMsg = "@BPartnerCreditStop@ - @TotalOpenBalance@="
|
|
||||||
+ bp.getTotalOpenBalance()
|
if (MBPartner.SOCREDITSTATUS_CreditStop.equals(bp.getSOCreditStatus()))
|
||||||
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
{
|
||||||
return DocAction.STATUS_Invalid;
|
m_processMsg = "@BPartnerCreditStop@ - @TotalOpenBalance@="
|
||||||
|
+ bp.getTotalOpenBalance()
|
||||||
|
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
||||||
|
return DocAction.STATUS_Invalid;
|
||||||
|
}
|
||||||
|
if (MBPartner.SOCREDITSTATUS_CreditHold.equals(bp.getSOCreditStatus()))
|
||||||
|
{
|
||||||
|
m_processMsg = "@BPartnerCreditHold@ - @TotalOpenBalance@="
|
||||||
|
+ bp.getTotalOpenBalance()
|
||||||
|
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
||||||
|
return DocAction.STATUS_Invalid;
|
||||||
|
}
|
||||||
|
BigDecimal grandTotal = MConversionRate.convertBase(getCtx(),
|
||||||
|
getGrandTotal(), getC_Currency_ID(), getDateOrdered(),
|
||||||
|
getC_ConversionType_ID(), getAD_Client_ID(), getAD_Org_ID());
|
||||||
|
if (MBPartner.SOCREDITSTATUS_CreditHold.equals(bp.getSOCreditStatus(grandTotal)))
|
||||||
|
{
|
||||||
|
m_processMsg = "@BPartnerOverOCreditHold@ - @TotalOpenBalance@="
|
||||||
|
+ bp.getTotalOpenBalance() + ", @GrandTotal@=" + grandTotal
|
||||||
|
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
||||||
|
return DocAction.STATUS_Invalid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (MBPartner.SOCREDITSTATUS_CreditHold.equals(bp.getSOCreditStatus()))
|
}
|
||||||
{
|
|
||||||
m_processMsg = "@BPartnerCreditHold@ - @TotalOpenBalance@="
|
|
||||||
+ bp.getTotalOpenBalance()
|
|
||||||
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
BigDecimal grandTotal = MConversionRate.convertBase(getCtx(),
|
|
||||||
getGrandTotal(), getC_Currency_ID(), getDateOrdered(),
|
|
||||||
getC_ConversionType_ID(), getAD_Client_ID(), getAD_Org_ID());
|
|
||||||
if (MBPartner.SOCREDITSTATUS_CreditHold.equals(bp.getSOCreditStatus(grandTotal)))
|
|
||||||
{
|
|
||||||
m_processMsg = "@BPartnerOverOCreditHold@ - @TotalOpenBalance@="
|
|
||||||
+ bp.getTotalOpenBalance() + ", @GrandTotal@=" + grandTotal
|
|
||||||
+ ", @SO_CreditLimit@=" + bp.getSO_CreditLimit();
|
|
||||||
return DocAction.STATUS_Invalid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE);
|
m_processMsg = ModelValidationEngine.get().fireDocValidate(this, ModelValidator.TIMING_AFTER_PREPARE);
|
||||||
|
|
Loading…
Reference in New Issue