details: /erp/devel/pi/rev/716689278cd4
changeset: 11728:716689278cd4
user: Mikel Irurita <mikel.irurita <at> openbravo.com>
date: Wed Apr 27 13:14:49 2011 +0200
summary: [APRM] Include amount validation when updating the payment plan.
Rollback statement has been moved to the last position in when catching the
exception
diffstat:
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
| 11 +++
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
| 30 +++++++---
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
| 2 +-
3 files changed, 33 insertions(+), 10 deletions(-)
diffs (79 lines):
diff -r ea278bfac87d -r 716689278cd4
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
---
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
Wed Apr 27 13:00:21 2011 +0200
+++
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
Wed Apr 27 13:14:49 2011 +0200
@@ -660,4 +660,15 @@
<!--FF8080812F5805CF012F5843BD3A005B-->
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
<!--FF8080812F5805CF012F5843BD3A005B--></AD_MESSAGE>
+<!--FF8080812F967128012F969D366A0046--><AD_MESSAGE>
+<!--FF8080812F967128012F969D366A0046-->
<AD_MESSAGE_ID><![CDATA[FF8080812F967128012F969D366A0046]]></AD_MESSAGE_ID>
+<!--FF8080812F967128012F969D366A0046-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FF8080812F967128012F969D366A0046--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FF8080812F967128012F969D366A0046--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FF8080812F967128012F969D366A0046-->
<VALUE><![CDATA[APRM_AmountOutOfRange]]></VALUE>
+<!--FF8080812F967128012F969D366A0046--> <MSGTEXT><![CDATA[Amount out of
range: %s cannot be used as outstanding amount is %s]]></MSGTEXT>
+<!--FF8080812F967128012F969D366A0046--> <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--FF8080812F967128012F969D366A0046-->
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
+<!--FF8080812F967128012F969D366A0046--></AD_MESSAGE>
+
</data>
diff -r ea278bfac87d -r 716689278cd4
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
---
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
Wed Apr 27 13:00:21 2011 +0200
+++
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
Wed Apr 27 13:14:49 2011 +0200
@@ -589,17 +589,29 @@
*/
public static void updatePaymentScheduleAmounts(FIN_PaymentSchedule
paymentSchedule,
BigDecimal amount, BigDecimal writeOffAmount) {
- paymentSchedule.setPaidAmount(paymentSchedule.getPaidAmount().add(amount));
-
paymentSchedule.setOutstandingAmount(paymentSchedule.getOutstandingAmount().subtract(amount));
+ BigDecimal totalPaid = amount;
+ BigDecimal outstanding = paymentSchedule.getOutstandingAmount();
if (writeOffAmount != null && writeOffAmount.compareTo(BigDecimal.ZERO) !=
0) {
-
paymentSchedule.setPaidAmount(paymentSchedule.getPaidAmount().add(writeOffAmount));
-
paymentSchedule.setOutstandingAmount(paymentSchedule.getOutstandingAmount().subtract(
- writeOffAmount));
+ totalPaid = amount.add(writeOffAmount);
}
- OBDal.getInstance().save(paymentSchedule);
- if (paymentSchedule.getInvoice() != null) {
- updateInvoicePaymentMonitor(paymentSchedule.getInvoice(),
paymentSchedule.getDueDate(),
- amount, 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)) {
+
paymentSchedule.setPaidAmount(paymentSchedule.getPaidAmount().add(amount));
+
paymentSchedule.setOutstandingAmount(paymentSchedule.getOutstandingAmount().subtract(amount));
+ if (writeOffAmount != null && writeOffAmount.compareTo(BigDecimal.ZERO)
!= 0) {
+
paymentSchedule.setPaidAmount(paymentSchedule.getPaidAmount().add(writeOffAmount));
+
paymentSchedule.setOutstandingAmount(paymentSchedule.getOutstandingAmount().subtract(
+ writeOffAmount));
+ }
+ OBDal.getInstance().save(paymentSchedule);
+ if (paymentSchedule.getInvoice() != null) {
+ updateInvoicePaymentMonitor(paymentSchedule.getInvoice(),
paymentSchedule.getDueDate(),
+ amount, writeOffAmount);
+ }
+ } else {
+ throw new
OBException(String.format(FIN_Utility.messageBD("APRM_AmountOutOfRange"),
totalPaid
+ .toString(), paymentSchedule.getOutstandingAmount().toString()));
}
}
diff -r ea278bfac87d -r 716689278cd4
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
Wed Apr 27 13:00:21 2011 +0200
+++
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
Wed Apr 27 13:14:49 2011 +0200
@@ -344,13 +344,13 @@
bundle.setResult(msg);
} catch (final Exception e) {
- OBDal.getInstance().rollbackAndClose();
e.printStackTrace(System.err);
msg.setType("Error");
msg.setTitle(Utility.messageBD(bundle.getConnection(), "Error",
bundle.getContext()
.getLanguage()));
msg.setMessage(FIN_Utility.getExceptionMessage(e));
bundle.setResult(msg);
+ OBDal.getInstance().rollbackAndClose();
}
}
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits