details:   https://code.openbravo.com/erp/devel/pi/rev/0520348593b2
changeset: 13481:0520348593b2
user:      Mikel Irurita <mikel.irurita <at> openbravo.com>
date:      Tue Aug 09 11:44:11 2011 +0200
summary:   Fixes issue 18196: Wrong deposited amount in Financial Account when 
refunding credit memo

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
         |   2 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
     |   2 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
 |   2 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
                       |  15 ++++++----
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
                    |   8 +++++
 5 files changed, 20 insertions(+), 9 deletions(-)

diffs (93 lines):

diff -r 34f2911c23a2 -r 0520348593b2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Tue Aug 09 11:36:49 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Tue Aug 09 11:44:11 2011 +0200
@@ -176,7 +176,7 @@
             if (strDifferenceAction.equals("refund")) {
               Boolean newPayment = 
!payment.getFINPaymentDetailList().isEmpty();
               FIN_Payment refundPayment = 
FIN_AddPayment.createRefundPayment(this, vars, payment,
-                  refundAmount.negate());
+                  refundAmount.negate(), exchangeRate);
               OBError auxMessage = FIN_AddPayment.processPayment(vars, this,
                   (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : 
"D", refundPayment);
               if (newPayment) {
diff -r 34f2911c23a2 -r 0520348593b2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
  Tue Aug 09 11:36:49 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java
  Tue Aug 09 11:44:11 2011 +0200
@@ -228,7 +228,7 @@
             if (strDifferenceAction.equals("refund")) {
               Boolean newPayment = 
!payment.getFINPaymentDetailList().isEmpty();
               FIN_Payment refundPayment = 
FIN_AddPayment.createRefundPayment(this, vars, payment,
-                  refundAmount.negate());
+                  refundAmount.negate(), exchangeRate);
               OBError auxMessage = FIN_AddPayment.processPayment(vars, this,
                   (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : 
"D", refundPayment);
               if (newPayment) {
diff -r 34f2911c23a2 -r 0520348593b2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
      Tue Aug 09 11:36:49 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java
      Tue Aug 09 11:44:11 2011 +0200
@@ -256,7 +256,7 @@
           if (strDifferenceAction.equals("refund")) {
             Boolean newPayment = !payment.getFINPaymentDetailList().isEmpty();
             FIN_Payment refundPayment = 
FIN_AddPayment.createRefundPayment(this, vars, payment,
-                refundAmount.negate());
+                refundAmount.negate(), exchangeRate);
             OBError auxMessage = FIN_AddPayment.processPayment(vars, this,
                 (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : 
"D", refundPayment);
             if (newPayment) {
diff -r 34f2911c23a2 -r 0520348593b2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
    Tue Aug 09 11:36:49 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
    Tue Aug 09 11:44:11 2011 +0200
@@ -26,6 +26,7 @@
 import java.util.List;
 
 import org.hibernate.criterion.Restrictions;
+import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.secureApp.VariablesSecureApp;
@@ -109,12 +110,14 @@
               payment.getDescription().length() > 254 ? 254 : 
payment.getDescription().length()));
       newTransaction.setClient(payment.getClient());
       newTransaction.setLineNo(getTransactionMaxLineNo(payment.getAccount()) + 
10);
-      newTransaction
-          
.setDepositAmount(payment.getDocumentType().getDocumentCategory().equals("ARR") 
? payment
-              .getFinancialTransactionAmount() : BigDecimal.ZERO);
-      newTransaction
-          
.setPaymentAmount(payment.getDocumentType().getDocumentCategory().equals("ARR") 
? BigDecimal.ZERO
-              : payment.getFinancialTransactionAmount());
+
+      BigDecimal depositAmt = 
FIN_Utility.getDepositAmount(payment.getDocumentType()
+          .getDocumentCategory().equals("ARR"), 
payment.getFinancialTransactionAmount());
+      BigDecimal paymentAmt = 
FIN_Utility.getPaymentAmount(payment.getDocumentType()
+          .getDocumentCategory().equals("ARR"), 
payment.getFinancialTransactionAmount());
+
+      newTransaction.setDepositAmount(depositAmt);
+      newTransaction.setPaymentAmount(paymentAmt);
       newTransaction.setStatus(newTransaction.getDepositAmount().compareTo(
           newTransaction.getPaymentAmount()) > 0 ? "RPR" : "PPM");
       if (!newTransaction.getCurrency().equals(payment.getCurrency())) {
diff -r 34f2911c23a2 -r 0520348593b2 
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
 Tue Aug 09 11:36:49 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
 Tue Aug 09 11:44:11 2011 +0200
@@ -227,6 +227,12 @@
 
   public static FIN_Payment createRefundPayment(ConnectionProvider conProvider,
       VariablesSecureApp vars, FIN_Payment payment, BigDecimal refundAmount) {
+    return createRefundPayment(conProvider, vars, payment, refundAmount, null);
+  }
+
+  public static FIN_Payment createRefundPayment(ConnectionProvider conProvider,
+      VariablesSecureApp vars, FIN_Payment payment, BigDecimal refundAmount,
+      BigDecimal conversionRate) {
     dao = new AdvPaymentMngtDao();
     FIN_Payment refundPayment;
     if (payment.getFINPaymentDetailList().isEmpty())
@@ -249,6 +255,8 @@
     refundPayment.setAmount(refundAmount);
     refundPayment.setUsedCredit(refundAmount.negate());
 
+    setFinancialTransactionAmountAndRate(refundPayment, conversionRate, null);
+
     FIN_PaymentScheduleDetail refundScheduleDetail = 
dao.getNewPaymentScheduleDetail(
         payment.getOrganization(), refundAmount);
     dao.getNewPaymentDetail(refundPayment, refundScheduleDetail, refundAmount, 
BigDecimal.ZERO,

------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to