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