This is an automated email from the ASF dual-hosted git repository.

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 60b4a618a FINERACT-1926: Enhance performance of "Trial balance with 
Asset owner" report
60b4a618a is described below

commit 60b4a618af39e6072864ff6ebfee0a166991a7e9
Author: Adam Saghy <[email protected]>
AuthorDate: Wed Apr 3 10:24:44 2024 +0200

    FINERACT-1926: Enhance performance of "Trial balance with Asset owner" 
report
---
 .../db/changelog/tenant/changelog-tenant.xml       |  1 +
 ...40_trial_balance_with_asset_transfer_update.xml | 96 ++++++++++++++++++++++
 2 files changed, 97 insertions(+)

diff --git 
a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml 
b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
index 442d18553..43aa91ab8 100644
--- 
a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
+++ 
b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
@@ -159,4 +159,5 @@
     <include file="parts/0137_add_external_event_for_loan_reamortization.xml" 
relativeToChangelogFile="true" />
     <include 
file="parts/0138_add_external_event_for_loan_reaging_reamortization_2.xml" 
relativeToChangelogFile="true" />
     <include file="parts/0139_add_disburse_without_auto_payment_command.xml" 
relativeToChangelogFile="true" />
+    <include file="parts/0140_trial_balance_with_asset_transfer_update.xml" 
relativeToChangelogFile="true" />
 </databaseChangeLog>
diff --git 
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0140_trial_balance_with_asset_transfer_update.xml
 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0140_trial_balance_with_asset_transfer_update.xml
new file mode 100644
index 000000000..0453f49e1
--- /dev/null
+++ 
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0140_trial_balance_with_asset_transfer_update.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog";
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                   
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog 
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd";>
+    <!-- Transaction Balance With Asset Transfer Report -->
+    <changeSet author="fineract" id="1">
+        <update tableName="stretchy_report">
+            <column name="report_sql" value="select *
+from (SELECT distinct '${endDate}'                                             
    AS postingdate,
+                      loan.pname                                               
    AS product,
+                      loan.gl_code                                             
    AS glacct,
+                      loan.glname                                              
    AS description,
+                      COALESCE((select external_id from m_external_asset_owner 
where id = loan.assetowner),
+                               'self')                                         
    as assetowner,
+                      loan.openingbalance                                      
    AS beginningbalance,
+                      (loan.debitamount * 1)                                   
    AS debitmovement,
+                      (loan.creditamount * -1)                                 
    AS creditmovement,
+                      (loan.openingbalance + loan.debitamount - 
loan.creditamount) AS endingbalance
+      FROM (SELECT distinct COALESCE(g.pname, loanproduct.productname)         
                   pname,
+                            COALESCE(g.gl_code, loanproduct.glcode)            
                   gl_code,
+                            COALESCE(g.glname, loanproduct.glname)             
                   glname,
+                            COALESCE(debits.assetowner, 
loanproduct.assetowner)                   assetowner,
+                            COALESCE(debits.debitamount, 0) - 
COALESCE(debits.creditamount, 0) AS openingbalance,
+                            COALESCE(loanproduct.debitamount, 0)               
                AS debitamount,
+                            COALESCE(loanproduct.creditamount, 0)              
                AS creditamount
+            FROM (SELECT distinct ag.gl_code, ag.id, pl.NAME AS pname, ag.NAME 
AS glname
+                  FROM acc_gl_account ag
+                           JOIN acc_product_mapping am ON am.gl_account_id = 
ag.id AND am.product_type = 1
+                           JOIN m_product_loan pl ON pl.id = am.product_id) g
+                     LEFT JOIN (SELECT lp.NAME                                 
                                 AS productname,
+                                       acc_gl_account.gl_code                  
                                 AS glcode,
+                                       acc_gl_account.NAME                     
                                 AS glname,
+                                       case when aw.owner_id is null then 0 
else aw.owner_id end                   assetowner,
+                                       Sum(CASE WHEN 
acc_gl_journal_entry.type_enum = 2 THEN amount ELSE 0 END) AS debitamount,
+                                       Sum(CASE WHEN 
acc_gl_journal_entry.type_enum = 1 THEN amount ELSE 0 END) AS creditamount
+                                FROM acc_gl_account
+                                         JOIN acc_gl_journal_entry
+                                              ON acc_gl_account.id = 
acc_gl_journal_entry.account_id
+                                         JOIN m_loan m ON m.id = 
acc_gl_journal_entry.entity_id
+                                         JOIN m_product_loan lp ON lp.id = 
m.product_id
+                                         left join 
m_external_asset_owner_journal_entry_mapping aw
+                                                   on aw.journal_entry_id = 
acc_gl_journal_entry.id
+                                WHERE acc_gl_journal_entry.entity_type_enum = 1
+                                  AND acc_gl_journal_entry.manual_entry = false
+                                  AND acc_gl_journal_entry.submitted_on_date 
&lt; '${endDate}'
+                                  AND (acc_gl_journal_entry.office_id = 
${officeId})
+                                GROUP BY productname, glcode, glname, 
assetowner
+                                ORDER BY glcode) debits ON g.gl_code = 
debits.glcode AND debits.productname = g.pname
+                     full outer join (select lp.name                           
                                       as productname,
+                                             account_id,
+                                             acc_gl_account.gl_code            
                                       as glcode,
+                                             acc_gl_account.name               
                                       as glname,
+                                             case when aw.owner_id is null 
then 0 else aw.owner_id end                   assetowner,
+                                             sum(case when 
acc_gl_journal_entry.type_enum = 2 then amount else 0 end) as debitamount,
+                                             sum(case when 
acc_gl_journal_entry.type_enum = 1 then amount else 0 end) as creditamount
+                                      from acc_gl_journal_entry
+                                               join acc_gl_account on 
acc_gl_account.id = acc_gl_journal_entry.account_id
+                                               join m_loan m on m.id = 
acc_gl_journal_entry.entity_id
+                                               join m_product_loan lp on lp.id 
= m.product_id
+                                               left join 
m_external_asset_owner_journal_entry_mapping aw
+                                                         on 
aw.journal_entry_id = acc_gl_journal_entry.id
+                                      where 
acc_gl_journal_entry.entity_type_enum = 1
+                                        and acc_gl_journal_entry.manual_entry 
= false
+                                        and 
acc_gl_journal_entry.submitted_on_date = '${endDate}'
+                                        and (acc_gl_journal_entry.office_id = 
${officeId})
+                                      group by productname, account_id, 
glcode, glname, assetowner
+                                      order by glcode) loanproduct
+                                     on g.gl_code = loanproduct.glcode and 
loanproduct.productname = g.pname and
+                                        debits.assetowner = 
loanproduct.assetowner) loan) a
+where a.endingbalance != 0
+   or a.debitmovement != 0
+   or a.creditmovement != 0"/>
+            <where>report_name='Trial Balance Summary Report with Asset 
Owner'</where>
+        </update>
+    </changeSet>
+</databaseChangeLog>

Reply via email to