diff --git a/base/src/org/compiere/model/MBankStatementLine.java b/base/src/org/compiere/model/MBankStatementLine.java
index 450ee8b1b3..c12ecf68de 100644
--- a/base/src/org/compiere/model/MBankStatementLine.java
+++ b/base/src/org/compiere/model/MBankStatementLine.java
@@ -30,6 +30,9 @@ import org.compiere.util.*;
*
* Carlos Ruiz - globalqss - integrate bug fixing from Teo Sarca
* [ 1619076 ] Bank statement's StatementDifference becames NULL
+ *
+ * @author Teo Sarca, SC ARHIPAC SERVICE SRL
+ *
BF [ 1896885 ] BS Line: don't update header if after save/delete fails
*/
public class MBankStatementLine extends X_C_BankStatementLine
{
@@ -188,8 +191,9 @@ import org.compiere.util.*;
*/
protected boolean afterSave (boolean newRecord, boolean success)
{
- updateHeader();
- return success;
+ if (!success)
+ return success;
+ return updateHeader();
} // afterSave
/**
@@ -199,24 +203,34 @@ import org.compiere.util.*;
*/
protected boolean afterDelete (boolean success)
{
- updateHeader();
- return success;
+ if (!success)
+ return success;
+ return updateHeader();
} // afterSave
/**
* Update Header
*/
- private void updateHeader()
+ private boolean updateHeader()
{
String sql = "UPDATE C_BankStatement bs"
+ " SET StatementDifference=(SELECT COALESCE(SUM(StmtAmt),0) FROM C_BankStatementLine bsl "
+ "WHERE bsl.C_BankStatement_ID=bs.C_BankStatement_ID AND bsl.IsActive='Y') "
+ "WHERE C_BankStatement_ID=" + getC_BankStatement_ID();
- DB.executeUpdate(sql, get_TrxName());
+ int no = DB.executeUpdate(sql, get_TrxName());
+ if (no != 1) {
+ log.warning("StatementDifference #" + no);
+ return false;
+ }
sql = "UPDATE C_BankStatement bs"
+ " SET EndingBalance=BeginningBalance+StatementDifference "
+ "WHERE C_BankStatement_ID=" + getC_BankStatement_ID();
- DB.executeUpdate(sql, get_TrxName());
+ no = DB.executeUpdate(sql, get_TrxName());
+ if (no != 1) {
+ log.warning("Balance #" + no);
+ return false;
+ }
+ return true;
} // updateHeader
} // MBankStatementLine