details:   https://code.openbravo.com/erp/devel/pi/rev/7ea21b334c48
changeset: 21102:7ea21b334c48
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Mon Sep 09 13:11:02 2013 +0200
summary:   Fixes issue 24716: mixing reconciliations error

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
 |  43 +++++++++-
 1 files changed, 39 insertions(+), 4 deletions(-)

diffs (67 lines):

diff -r 9f4f2629b7ff -r 7ea21b334c48 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Mon Sep 09 16:35:02 2013 +0530
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Mon Sep 09 13:11:02 2013 +0200
@@ -115,7 +115,28 @@
             wait(strReconciliationId);
           }
           runingReconciliations.add(reconciliation.getId());
-          if (isManualReconciliation(reconciliation)) {
+          List<FIN_FinaccTransaction> mixedLines = 
getManualReconciliationLines(reconciliation);
+          if (mixedLines.size() > 0) {
+            // Fix mixing Reconciliation and log the issue
+            log4j
+                .warn("Mixing Reconciliations: An error occured which left an 
inconsistent status for the current reconciliation: "
+                    + reconciliation.getIdentifier());
+            OBContext.setAdminMode(false);
+            try {
+              for (FIN_FinaccTransaction mixedLine : mixedLines) {
+                fixMixedLine(mixedLine);
+                log4j
+                    .warn("Fixing Mixed Line (transaction appears as cleared 
but no bank statement line is linked to it): "
+                        + mixedLine.getLineNo() + " - " + 
mixedLine.getIdentifier());
+              }
+              OBDal.getInstance().flush();
+            } finally {
+              OBContext.restorePreviousMode();
+            }
+          }
+          // Check if problem remains
+          mixedLines = getManualReconciliationLines(reconciliation);
+          if (mixedLines.size() > 0) {
             OBDal.getInstance().rollbackAndClose();
             OBError message = Utility.translateError(this, vars, 
vars.getLanguage(), Utility
                 .parseTranslation(this, vars, vars.getLanguage(), 
"@APRM_ReconciliationMixed@"));
@@ -709,7 +730,19 @@
     }
   }
 
-  private boolean isManualReconciliation(FIN_Reconciliation reconciliation) {
+  private void fixMixedLine(FIN_FinaccTransaction mixedLine) {
+    boolean isReceipt = 
mixedLine.getDepositAmount().compareTo(BigDecimal.ZERO) != 0;
+    mixedLine.setStatus(isReceipt ? "RDNC" : "PWNC");
+    mixedLine.setReconciliation(null);
+    OBDal.getInstance().save(mixedLine);
+    if (mixedLine.getFinPayment() != null) {
+      mixedLine.getFinPayment().setStatus(isReceipt ? "RDNC" : "PWNC");
+      OBDal.getInstance().save(mixedLine.getFinPayment());
+    }
+  }
+
+  private List<FIN_FinaccTransaction> 
getManualReconciliationLines(FIN_Reconciliation reconciliation) {
+    List<FIN_FinaccTransaction> result = new 
ArrayList<FIN_FinaccTransaction>();
     OBContext.setAdminMode();
     try {
       final OBCriteria<FIN_ReconciliationLine_v> obc = 
OBDal.getInstance().createCriteria(
@@ -717,8 +750,10 @@
       
obc.add(Restrictions.eq(FIN_ReconciliationLine_v.PROPERTY_RECONCILIATION, 
reconciliation));
       
obc.add(Restrictions.isNull(FIN_ReconciliationLine_v.PROPERTY_BANKSTATEMENTLINE));
       obc.setMaxResults(1);
-      final List<FIN_ReconciliationLine_v> rec = obc.list();
-      return (rec.size() != 0);
+      for (FIN_ReconciliationLine_v line : obc.list()) {
+        result.add(line.getFinancialAccountTransaction());
+      }
+      return result;
     } finally {
       OBContext.restorePreviousMode();
     }

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to