details: /erp/devel/pi/rev/72af0b46291b
changeset: 12204:72af0b46291b
user: Mikel Irurita <mikel.irurita <at> openbravo.com>
date: Tue May 17 17:56:05 2011 +0200
summary: Fixes amount validation when processing the payment.
Take negative amounts comparation as special case.
Validate amounts only when the payment plan is going to be updated.
Take amount from paymentScheduleDetail instead of paymentDetail
diffstat:
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
| 28 ++++++---
1 files changed, 19 insertions(+), 9 deletions(-)
diffs (68 lines):
diff -r 806f41767485 -r 72af0b46291b
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
---
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
Tue May 17 17:42:24 2011 +0200
+++
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
Tue May 17 17:56:05 2011 +0200
@@ -115,14 +115,10 @@
if (paymentScheduleDetail.getInvoicePaymentSchedule() != null) {
invoiceDocNos.add(paymentScheduleDetail.getInvoicePaymentSchedule().getInvoice()
.getDocumentNo());
-
validateAmount(paymentScheduleDetail.getInvoicePaymentSchedule(), paymentDetail
- .getAmount(), paymentDetail.getWriteoffAmount());
}
if (paymentScheduleDetail.getOrderPaymentSchedule() != null) {
orderDocNos.add(paymentScheduleDetail.getOrderPaymentSchedule().getOrder()
.getDocumentNo());
-
validateAmount(paymentScheduleDetail.getOrderPaymentSchedule(), paymentDetail
- .getAmount(), paymentDetail.getWriteoffAmount());
}
if (paymentScheduleDetail.getInvoicePaymentSchedule() == null
&& paymentScheduleDetail.getOrderPaymentSchedule() == null
@@ -241,8 +237,15 @@
}
}
for (FIN_PaymentDetail paymentDetail :
payment.getFINPaymentDetailList()) {
- for (FIN_PaymentScheduleDetail paymentScheduleDetail :
paymentDetail
- .getFINPaymentScheduleDetailList()) {
+ // Get payment schedule detail list ordered by amount asc.
+ // First negative if they exist and then positives
+ OBCriteria<FIN_PaymentScheduleDetail> obcPSD =
OBDal.getInstance().createCriteria(
+ FIN_PaymentScheduleDetail.class);
+
obcPSD.add(Restrictions.eq(FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS,
+ paymentDetail));
+ obcPSD.addOrderBy(FIN_PaymentScheduleDetail.PROPERTY_AMOUNT,
true);
+
+ for (FIN_PaymentScheduleDetail paymentScheduleDetail :
obcPSD.list()) {
BigDecimal amount = paymentScheduleDetail.getAmount().add(
paymentScheduleDetail.getWriteoffAmount());
if (paymentScheduleDetail.getInvoicePaymentSchedule() != null)
{
@@ -255,11 +258,15 @@
} else {
increaseCustomerCredit(businessPartner, amount);
}
+
validateAmount(paymentScheduleDetail.getInvoicePaymentSchedule(),
+ paymentScheduleDetail.getAmount(),
paymentScheduleDetail.getWriteoffAmount());
FIN_AddPayment.updatePaymentScheduleAmounts(paymentScheduleDetail
.getInvoicePaymentSchedule(),
paymentScheduleDetail.getAmount(),
paymentScheduleDetail.getWriteoffAmount());
}
if (paymentScheduleDetail.getOrderPaymentSchedule() != null) {
+
validateAmount(paymentScheduleDetail.getOrderPaymentSchedule(),
+ paymentScheduleDetail.getAmount(),
paymentScheduleDetail.getWriteoffAmount());
FIN_AddPayment.updatePaymentScheduleAmounts(paymentScheduleDetail
.getOrderPaymentSchedule(),
paymentScheduleDetail.getAmount(),
paymentScheduleDetail.getWriteoffAmount());
@@ -538,9 +545,12 @@
if (writeOffAmount != null && writeOffAmount.compareTo(BigDecimal.ZERO) !=
0) {
totalPaid = amount.add(writeOffAmount);
}
- // (totalPaid > 0 && totalPaid <= outstanding) || (totalPaid < 0 &&
totalPaid >= outstanding)
- if ((totalPaid.compareTo(BigDecimal.ZERO) == 1 &&
totalPaid.compareTo(outstanding) <= 0)
- || (totalPaid.compareTo(BigDecimal.ZERO) == -1 &&
totalPaid.compareTo(outstanding) >= 0)) {
+ // ((totalPaid > 0 || outstanding > 0) && totalPaid <= outstanding)
+ // || (totalPaid < 0 && outstanding < 0 && totalPaid >= outstanding)
+ if (((totalPaid.compareTo(BigDecimal.ZERO) == 1 ||
outstanding.compareTo(BigDecimal.ZERO) == 1) && totalPaid
+ .compareTo(outstanding) <= 0)
+ || (totalPaid.compareTo(BigDecimal.ZERO) == -1
+ && outstanding.compareTo(BigDecimal.ZERO) == -1 &&
totalPaid.compareTo(outstanding) >= 0)) {
return true;
} else {
throw new
OBException(String.format(FIN_Utility.messageBD("APRM_AmountOutOfRange"),
totalPaid
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits