details:   https://code.openbravo.com/erp/devel/pi/rev/2f8dba119a61
changeset: 32125:2f8dba119a61
user:      Atul Gaware <atul.gaware <at> openbravo.com>
date:      Mon May 15 00:24:10 2017 +0530
summary:   Fixes issue 35896: Wrong Trial Balance at "Account" level
and without checking "Opening Entry Amount to Initial Balance"

select is modified to get all account tree elements and their respective dr and 
cr in fact
acct other than fact acct type R (Income Statement), C (Closing) and
O (Opening) in between date from and date to filters. Select Initial Balance 
Method
is modified to just get the initial balance of the account tree element upto 
from date
filter or the opening type fact acct register on from date filter.

Using the Opening Entry Amount to Initial Balance flag and initial balance sign 
it is
decided to add to either dr or cr column respectively. +ve value added to 
debits and
-ve value added to credits.

diffstat:

 src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance.java      |  20 +++--
 src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance_data.xsql |  32 
++-------
 2 files changed, 18 insertions(+), 34 deletions(-)

diffs (130 lines):

diff -r f2ce1dbf54a3 -r 2f8dba119a61 
src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance.java
--- a/src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance.java    Tue May 
16 17:16:27 2017 +0200
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance.java    Mon May 
15 00:24:10 2017 +0530
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2016 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2017 Openbravo SLU 
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -757,9 +757,7 @@
         DateTimeData.nDaysAfter(this, strDateTo, "1"), "", "");
     ReportTrialBalanceData[] dataInitialBalance = 
ReportTrialBalanceData.selectInitialBalance(this,
         strDateFrom, strcAcctSchemaId, "", "", "", strOrgFamily,
-        Utility.getContext(this, vars, "#User_Client", "ReportTrialBalance"),
-        strNotInitialBalance.equals("Y") ? "initial" : "notinitial",
-        strNotInitialBalance.equals("Y") ? "initial" : "notinitial");
+        Utility.getContext(this, vars, "#User_Client", "ReportTrialBalance"));
 
     log4j.debug("Calculating tree...");
     dataAux = calculateTree(dataAux, null, new Vector<Object>(), 
dataInitialBalance,
@@ -829,6 +827,7 @@
         vecParcial.addElement("0");
         ReportTrialBalanceData[] dataChilds = calculateTree(data, data[i].id, 
vecParcial, dataIB,
             strNotInitialBalance);
+
         BigDecimal parcialDR = new BigDecimal((String) 
vecParcial.elementAt(0));
         BigDecimal parcialCR = new BigDecimal((String) 
vecParcial.elementAt(1));
         BigDecimal parcialInicial = new BigDecimal((String) 
vecParcial.elementAt(2));
@@ -846,17 +845,20 @@
             if (strNotInitialBalance.equals("Y")) {
               data[i].saldoInicial = (new 
BigDecimal(dataIB[k].saldoInicial).add(parcialInicial))
                   .toPlainString();
+
             } else {
-              data[i].amtacctdr = (new 
BigDecimal(dataIB[k].amtacctdr).add(parcialDR)
-                  .add(new BigDecimal(data[i].amtacctdr))).toPlainString();
-              data[i].amtacctcr = (new 
BigDecimal(dataIB[k].amtacctcr).add(parcialCR)
-                  .add(new BigDecimal(data[i].amtacctcr))).toPlainString();
+              if (new 
BigDecimal(dataIB[k].saldoInicial).compareTo(BigDecimal.ZERO) > 0) {
+                data[i].amtacctdr = (new 
BigDecimal(dataIB[k].saldoInicial).add(parcialDR)
+                    .add(new BigDecimal(data[i].amtacctdr))).toPlainString();
+              } else {
+                data[i].amtacctcr = (new 
BigDecimal(dataIB[k].saldoInicial).negate().add(parcialCR)
+                    .add(new BigDecimal(data[i].amtacctcr))).toPlainString();
+              }
             }
             data[i].saldoFinal = (new 
BigDecimal(dataIB[k].saldoInicial).add(parcialDR)
                 .subtract(parcialCR)).toPlainString();
           }
         }
-
         totalDR = totalDR.add(new BigDecimal(data[i].amtacctdr));
         totalCR = totalCR.add(new BigDecimal(data[i].amtacctcr));
         totalInicial = totalInicial.add(new BigDecimal(data[i].saldoInicial));
diff -r f2ce1dbf54a3 -r 2f8dba119a61 
src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance_data.xsql
--- a/src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance_data.xsql       
Tue May 16 17:16:27 2017 +0200
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportTrialBalance_data.xsql       
Mon May 15 00:24:10 2017 +0530
@@ -12,7 +12,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2001-2016 Openbravo SLU
+ * All portions are Copyright (C) 2001-2017 Openbravo SLU
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -51,6 +51,7 @@
       AND 1=1
       AND F.FACTACCTTYPE <> 'R'
       AND F.FACTACCTTYPE <> 'C'
+      AND F.FACTACCTTYPE <> 'O'
       AND F.ISACTIVE = 'Y'
       GROUP BY ACCOUNT_ID,EV.NAME, EV.VALUE, EV.ELEMENTLEVEL) A
       GROUP BY ID, NAME, ACCOUNT_ID, ELEMENTLEVEL
@@ -293,47 +294,28 @@
       SELECT ACCOUNT_ID, COALESCE(SUM(AMTACCTDR),0) AS AMTACCTDR, 
COALESCE(SUM(AMTACCTCR),0) AS AMTACCTCR,
              COALESCE(SUM(AMTACCTDR-AMTACCTCR), 0) AS SALDO_INICIAL
       FROM (
-           (SELECT F.ACCOUNT_ID AS ACCOUNT_ID, F.AMTACCTDR AS AMTACCTDR, 
F.AMTACCTCR AS AMTACCTCR,
+            SELECT F.ACCOUNT_ID AS ACCOUNT_ID, F.AMTACCTDR AS AMTACCTDR, 
F.AMTACCTCR AS AMTACCTCR,
                    F.DATEACCT, F.FACTACCTTYPE
             FROM FACT_ACCT F
             WHERE 1=1
-                  AND F.DATEACCT < TO_DATE(?)
+                  AND (F.DATEACCT < TO_DATE(?) OR (F.DATEACCT = TO_DATE(?) AND 
F.FACTACCTTYPE = 'O'))
                   AND F.C_ACCTSCHEMA_ID = ?
                   AND F.AD_ORG_ID IN ('1')
                   AND F.AD_CLIENT_ID IN ('1')
-                  AND F.ISACTIVE = 'Y')
-            UNION ALL
-            (SELECT F.ACCOUNT_ID AS ACCOUNT_ID, F.AMTACCTDR AS AMTACCTDR, 
F.AMTACCTCR AS AMTACCTCR,
-                    F.DATEACCT, F.FACTACCTTYPE
-             FROM FACT_ACCT F
-             WHERE 2=2
-                   AND F.DATEACCT = TO_DATE(?)
-                   AND F.C_ACCTSCHEMA_ID = ?
-                   AND  F.AD_ORG_ID IN ('1')
-                   AND  F.AD_CLIENT_ID IN ('1')
-                   AND F.ISACTIVE = 'Y'
-                  AND 3=3)) A
+                  AND F.ISACTIVE = 'Y'
+           ) A
       GROUP BY ACCOUNT_ID
       HAVING SUM(AMTACCTDR) - SUM(AMTACCTCR) <> 0
       ORDER BY ACCOUNT_ID
       ]]></Sql>
       <Parameter name="dateFrom"/>
+      <Parameter name="dateFrom"/>
       <Parameter name="acctschema"/>
       <Parameter name="bpartner" optional="true" type="argument" 
after="1=1"><![CDATA[ AND F.C_BPARTNER_ID IN]]></Parameter>
       <Parameter name="product" optional="true" type="argument" 
after="1=1"><![CDATA[ AND F.M_PRODUCT_ID IN]]></Parameter>
       <Parameter name="project" optional="true" type="argument" 
after="1=1"><![CDATA[ AND F.C_PROJECT_ID IN]]></Parameter>
       <Parameter name="orgFamily" type="replace" optional="true" after="AND 
F.AD_ORG_ID IN (" text="'1'"/>
       <Parameter name="clientFamily" type="replace" optional="true" after="AND 
F.AD_CLIENT_ID IN (" text="'1'"/>
-      <!--  -->
-      <Parameter name="dateFrom"/>
-      <Parameter name="acctschema"/>
-      <Parameter name="bpartner" optional="true" type="argument" 
after="2=2"><![CDATA[ AND F.C_BPARTNER_ID IN]]></Parameter>
-      <Parameter name="product" optional="true" type="argument" 
after="2=2"><![CDATA[ AND F.M_PRODUCT_ID IN]]></Parameter>
-      <Parameter name="project" optional="true" type="argument" 
after="2=2"><![CDATA[ AND F.C_PROJECT_ID IN]]></Parameter>
-      <Parameter name="orgFamily" type="replace" optional="true" after="AND  
F.AD_ORG_ID IN (" text="'1'"/>
-      <Parameter name="clientFamily" type="replace" optional="true" after="AND 
 F.AD_CLIENT_ID IN (" text="'1'"/>
-      <Parameter name="initial" type="none" optional="true" after="AND 
3=3"><![CDATA[ AND F.FACTACCTTYPE = 'O']]></Parameter>
-      <Parameter name="notinitial" type="none" optional="true" after="AND 
3=3"><![CDATA[ AND F.FACTACCTTYPE <> 'O']]></Parameter>
   </SqlMethod>
   
   <SqlMethod name="treeAccount" type="preparedStatement" return="string">

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to