details:   https://code.openbravo.com/erp/devel/pi/rev/2674db04cea8
changeset: 20209:2674db04cea8
user:      David Miguelez <david.miguelez <at> openbravo.com>
date:      Thu Apr 25 13:24:22 2013 +0200
summary:   Fixes Issue 23216: Fixes the getBalance method in 
DocFINFinAccTransaction.

diffstat:

 src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java |  38 
++++++---
 1 files changed, 23 insertions(+), 15 deletions(-)

diffs (50 lines):

diff -r f74f6987c503 -r 2674db04cea8 
src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Thu Apr 
25 12:23:10 2013 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Thu Apr 
25 13:24:22 2013 +0200
@@ -715,23 +715,31 @@
     sb.append(retValue);
     FIN_Payment payment = OBDal.getInstance().get(FIN_FinaccTransaction.class, 
Record_ID)
         .getFinPayment();
+    if (payment != null) {
+      retValue = retValue.add(payment.isReceipt() ? 
payment.getWriteoffAmount() : payment
+          .getWriteoffAmount().negate());
+    }
     // - Lines
-    for (int i = 0; i < p_lines.length; i++) {
-      if (payment == null) {
-        BigDecimal lineBalance = new BigDecimal(
-            ((DocLine_FINFinAccTransaction) p_lines[i]).DepositAmount);
-        lineBalance = lineBalance.subtract(new BigDecimal(
-            ((DocLine_FINFinAccTransaction) p_lines[i]).PaymentAmount));
-        retValue = retValue.subtract(lineBalance);
-      } else {
-        BigDecimal lineBalance = payment.isReceipt() ? new BigDecimal(
-            ((DocLine_FINFinAccTransaction) p_lines[i]).getAmount()) : new 
BigDecimal(
-            ((DocLine_FINFinAccTransaction) p_lines[i]).getAmount()).negate();
-        BigDecimal lineWriteoff = payment.isReceipt() ? new BigDecimal(
-            ((DocLine_FINFinAccTransaction) p_lines[i]).getWriteOffAmt()) : 
new BigDecimal(
-            ((DocLine_FINFinAccTransaction) 
p_lines[i]).getWriteOffAmt()).negate();
-        retValue = retValue.subtract(lineBalance).subtract(lineWriteoff);
+    OBContext.setAdminMode(false);
+    try {
+      for (int i = 0; i < p_lines.length; i++) {
+        if (payment == null) {
+          BigDecimal lineBalance = new BigDecimal(
+              ((DocLine_FINFinAccTransaction) p_lines[i]).DepositAmount);
+          lineBalance = lineBalance.subtract(new BigDecimal(
+              ((DocLine_FINFinAccTransaction) p_lines[i]).PaymentAmount));
+          retValue = retValue.subtract(lineBalance);
+        } else {
+          BigDecimal lineBalance = BigDecimal.ZERO;
+          for (FIN_PaymentDetail pd : payment.getFINPaymentDetailList()) {
+            lineBalance = lineBalance.add(payment.isReceipt() ? 
pd.getAmount().add(
+                pd.getWriteoffAmount()) : 
pd.getAmount().add(pd.getWriteoffAmount()).negate());
+          }
+          retValue = retValue.subtract(lineBalance);
+        }
       }
+    } finally {
+      OBContext.restorePreviousMode();
     }
     sb.append("]");
     //

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to