details:   https://code.openbravo.com/erp/devel/pi/rev/e5982f367e56
changeset: 13795:e5982f367e56
user:      Gorka Ion Damián <gorkaion.damian <at> openbravo.com>
date:      Mon Sep 19 17:08:19 2011 +0200
summary:   Fixed issue 18485.Forwardport fix on 2.50 branch.

diffstat:

 src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java |  69 ++++++++++---
 1 files changed, 51 insertions(+), 18 deletions(-)

diffs (104 lines):

diff -r 535838efebce -r e5982f367e56 
src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java
--- a/src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java        Mon Sep 
19 16:04:17 2011 +0200
+++ b/src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java        Mon Sep 
19 17:08:19 2011 +0200
@@ -174,16 +174,31 @@
       for (DebtPayment cancelledPayment : cancelledPayments) {
         if (!cancelledPayment.isPaymentComplete()) {
           cancelledNotPaidPayments.add(cancelledPayment);
-          cancelledNotPaidAmount = 
cancelledNotPaidAmount.add(getConvertedAmt(cancelledPayment
-              .getAmount(), cancelledPayment.getCurrency().getId(), 
strCurrencyTo, cancelledPayment
-              .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient().getId(),
-              cancelledPayment.getOrganization().getId()));
-          cancelledNotPaidWriteOffAmount = 
cancelledNotPaidWriteOffAmount.add(getConvertedAmt(
-              cancelledPayment.getWriteoffAmount(), 
cancelledPayment.getCurrency().getId(),
-              strCurrencyTo, 
cancelledPayment.getSettlementCancelled().getAccountingDate(),
-              cancelledPayment.getClient().getId(), 
cancelledPayment.getOrganization().getId()));
+          BigDecimal paymentCancelledAmt = 
getConvertedAmt(cancelledPayment.getAmount(),
+              cancelledPayment.getCurrency().getId(), strCurrencyTo, 
cancelledPayment
+                  .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient()
+                  .getId(), cancelledPayment.getOrganization().getId());
+          cancelledNotPaidAmount = cancelledNotPaidAmount
+              .add(payment.isReceipt() == cancelledPayment.isReceipt() ? 
paymentCancelledAmt
+                  : paymentCancelledAmt.negate());
+          BigDecimal paymentCancelledWOAmt = 
getConvertedAmt(cancelledPayment.getWriteoffAmount(),
+              cancelledPayment.getCurrency().getId(), strCurrencyTo, 
cancelledPayment
+                  .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient()
+                  .getId(), cancelledPayment.getOrganization().getId());
+          cancelledNotPaidWriteOffAmount = cancelledNotPaidWriteOffAmount
+              .add(payment.isReceipt() == cancelledPayment.isReceipt() ? 
paymentCancelledWOAmt
+                  : paymentCancelledWOAmt.negate());
         }
       }
+
+      if (cancelledNotPaidAmount.compareTo(BigDecimal.ZERO) == 0)
+        // The sum of all canceled not paid payments in the settlement is 
zero. This means that the
+        // payment has been paid completely, as it was canceled with some 
other pending payments
+        // (for example, the ones comming from a credit memo)
+        return getConvertedAmt(payment.getAmount().multiply(multiplier), 
payment.getCurrency()
+            .getId(), strCurrencyTo, conversionDate, 
payment.getClient().getId(), payment
+            .getOrganization().getId());
+
       List<DebtPayment> generatedPayments = payment.getSettlementCancelled()
           .getFinancialMgmtDebtPaymentCSettlementGenerateIDList();
       // Add the write-off amount
@@ -199,7 +214,9 @@
         generatedPaymentPaidAmount = calculatePaidAmount(generatedPayment, 
strCurrencyTo,
             generatedPayment.getSettlementGenerate().getAccountingDate(), 
payment.getAmount()
                 .divide(cancelledNotPaidAmount, 1000, 
BigDecimal.ROUND_HALF_UP));
-        paidAmount = paidAmount.add(generatedPaymentPaidAmount);
+        paidAmount = paidAmount
+            .add(payment.isReceipt() == generatedPayment.isReceipt() ? 
generatedPaymentPaidAmount
+                : generatedPaymentPaidAmount.negate());
       }
     }
     return paidAmount;
@@ -226,16 +243,30 @@
       for (DebtPayment cancelledPayment : cancelledPayments) {
         if (!cancelledPayment.isPaymentComplete()) {
           cancelledNotPaidPayments.add(cancelledPayment);
-          cancelledNotPaidAmount = 
cancelledNotPaidAmount.add(getConvertedAmt(cancelledPayment
-              .getAmount(), cancelledPayment.getCurrency().getId(), 
strCurrencyTo, cancelledPayment
-              .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient().getId(),
-              cancelledPayment.getOrganization().getId()));
-          cancelledNotPaidWriteOffAmount = 
cancelledNotPaidWriteOffAmount.add(getConvertedAmt(
-              cancelledPayment.getWriteoffAmount(), 
cancelledPayment.getCurrency().getId(),
-              strCurrencyTo, 
cancelledPayment.getSettlementCancelled().getAccountingDate(),
-              cancelledPayment.getClient().getId(), 
cancelledPayment.getOrganization().getId()));
+          BigDecimal paymentCancelledAmt = 
getConvertedAmt(cancelledPayment.getAmount(),
+              cancelledPayment.getCurrency().getId(), strCurrencyTo, 
cancelledPayment
+                  .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient()
+                  .getId(), cancelledPayment.getOrganization().getId());
+          cancelledNotPaidAmount = cancelledNotPaidAmount
+              .add(payment.isReceipt() == cancelledPayment.isReceipt() ? 
paymentCancelledAmt
+                  : paymentCancelledAmt.negate());
+          BigDecimal paymentCancelledWOAmt = 
getConvertedAmt(cancelledPayment.getWriteoffAmount(),
+              cancelledPayment.getCurrency().getId(), strCurrencyTo, 
cancelledPayment
+                  .getSettlementCancelled().getAccountingDate(), 
cancelledPayment.getClient()
+                  .getId(), cancelledPayment.getOrganization().getId());
+          cancelledNotPaidWriteOffAmount = cancelledNotPaidWriteOffAmount
+              .add(payment.isReceipt() == cancelledPayment.isReceipt() ? 
paymentCancelledWOAmt
+                  : paymentCancelledWOAmt.negate());
+
         }
       }
+      if (cancelledNotPaidAmount.compareTo(BigDecimal.ZERO) == 0)
+        // The sum of all canceled not paid payments in the settlement is 
zero. This means that the
+        // payment has been paid completely, as it was canceled with some 
other pending payments
+        // (for example, the ones comming from a credit memo)
+        return getConvertedAmt(payment.getAmount().multiply(multiplier), 
payment.getCurrency()
+            .getId(), strCurrencyTo, conversionDate, 
payment.getClient().getId(), payment
+            .getOrganization().getId());
       List<DebtPayment> generatedPayments = payment.getSettlementCancelled()
           .getFinancialMgmtDebtPaymentCSettlementGenerateIDList();
       if (generatedPayments == null || generatedPayments.size() == 0)
@@ -246,7 +277,9 @@
           generatedPaymentOverdueAmount = 
calculateOverdueAmount(generatedPayment, strCurrencyTo,
               generatedPayment.getSettlementGenerate().getAccountingDate(), 
payment.getAmount()
                   .divide(cancelledNotPaidAmount, 1000, 
BigDecimal.ROUND_HALF_UP));
-        overdueAmount = overdueAmount.add(generatedPaymentOverdueAmount);
+        overdueAmount = overdueAmount
+            .add(payment.isReceipt() == generatedPayment.isReceipt() ? 
generatedPaymentOverdueAmount
+                : generatedPaymentOverdueAmount.negate());
       }
     }
     return overdueAmount;

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
Learn about the latest advances in developing for the 
BlackBerry&reg; mobile platform with sessions, labs & more.
See new tools and technologies. Register for BlackBerry&reg; DevCon today!
http://p.sf.net/sfu/rim-devcon-copy1 
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to