details:   https://code.openbravo.com/erp/devel/pi/rev/0c6559f88e5a
changeset: 21343:0c6559f88e5a
user:      Víctor Martínez Romanos <victor.martinez <at> openbravo.com>
date:      Mon Oct 21 12:26:36 2013 +0530
summary:   Fixes Issue 24778, Fixes Issue 24768

Payment Monitor doesn't udpate invoice status when voiding a payment
Payment Monitor NullPointer Exception in method calculateAmounts()

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
 |  33 ++++++---
 1 files changed, 20 insertions(+), 13 deletions(-)

diffs (80 lines):

diff -r c4d4ca9a75dc -r 0c6559f88e5a 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
      Mon Oct 21 17:37:49 2013 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
      Mon Oct 21 12:26:36 2013 +0530
@@ -22,10 +22,11 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
@@ -87,10 +88,11 @@
 
       StringBuilder whereClause = new StringBuilder();
       whereClause.append(" as i");
-      whereClause.append("   left join i.fINPaymentScheduleList fps");
+      whereClause.append("   left join i.fINPaymentScheduleList fps ");
       whereClause.append(" where i.processed=true");
-      whereClause.append(" and (i.paymentComplete=false");
-      whereClause.append(" or i.outstandingAmount <> 0");
+      whereClause.append(" and (i.paymentComplete=false ");
+      whereClause.append("      or fps.updated >= i.lastCalculatedOnDate ");
+      whereClause.append("      or i.outstandingAmount <> 0");
       if (migration != null) {
         whereClause.append("  or (i.finalSettlementDate is null");
         whereClause.append(" and fps.id is not null");
@@ -107,7 +109,7 @@
         obc.setFilterOnReadableClients(false);
         obc.setFilterOnReadableOrganization(false);
       }
-      final List<String> invoiceIds = new ArrayList<String>();
+      final Set<String> invoiceIds = new HashSet<String>();
       for (Invoice invoice : obc.list()) {
         invoiceIds.add(invoice.getId());
       }
@@ -179,6 +181,7 @@
 
       OBDal.getInstance().save(invoice);
       OBDal.getInstance().flush();
+    } catch (Exception e) {
     } finally {
       OBContext.restorePreviousMode();
     }
@@ -257,19 +260,23 @@
       }
 
       if (paymentSchedule.getPaidAmount().compareTo(paid) != 0) {
-        logger.log("ERROR Invoice " + invoice.getDocumentNo()
-            + ": wrong payment plan info, paid amount is "
-            + paymentSchedule.getPaidAmount().toPlainString() + " when it 
should be "
-            + paid.toPlainString());
+        if (logger != null) {
+          logger.log("ERROR Invoice " + invoice.getDocumentNo()
+              + ": wrong payment plan info, paid amount is "
+              + paymentSchedule.getPaidAmount().toPlainString() + " when it 
should be "
+              + paid.toPlainString());
+        }
         paymentSchedule.setPaidAmount(paid);
         OBDal.getInstance().save(paymentSchedule);
       }
       if (paymentSchedule.getOutstandingAmount().compareTo(
           paymentSchedule.getAmount().subtract(paid)) != 0) {
-        logger.log("ERROR Invoice " + invoice.getDocumentNo()
-            + ": wrong payment plan info, outstanding amount is "
-            + paymentSchedule.getOutstandingAmount().toPlainString() + " when 
it should be "
-            + paymentSchedule.getAmount().subtract(paid).toPlainString());
+        if (logger != null) {
+          logger.log("ERROR Invoice " + invoice.getDocumentNo()
+              + ": wrong payment plan info, outstanding amount is "
+              + paymentSchedule.getOutstandingAmount().toPlainString() + " 
when it should be "
+              + paymentSchedule.getAmount().subtract(paid).toPlainString());
+        }
         
paymentSchedule.setOutstandingAmount(paymentSchedule.getAmount().subtract(paid));
         OBDal.getInstance().save(paymentSchedule);
       }

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to