FINERACT-2386: Update read query to support other products

This commit is contained in:
Adam Saghy
2025-10-06 11:24:30 +02:00
parent 334da61ed8
commit ceb9f0f783
3 changed files with 187 additions and 41 deletions
@@ -112,26 +112,6 @@
<addForeignKeyConstraint baseColumnNames="created_by" baseTableName="m_journal_entry_aggregation_tracking" constraintName="FK_GL_JOURNAL_ENTRY_AGGREGATION_TRACKING_ON_CREATED_BY" referencedColumnNames="id" referencedTableName="m_appuser"/>
<addForeignKeyConstraint baseColumnNames="last_modified_by" baseTableName="m_journal_entry_aggregation_tracking" constraintName="FK_GL_JOURNAL_ENTRY_AGGREGATION_TRACKING_ON_LAST_MODIFIED_BY" referencedColumnNames="id" referencedTableName="m_appuser"/>
</changeSet>
<changeSet id="4" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="submitted_on_date"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_journal_entry_aggregation_tracking on m_journal_entry_aggregation_tracking(submitted_on_date);
</sql>
</changeSet>
<changeSet id="5" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="aggregated_on_date_to"/>
</not>
</preConditions>
<sql>
create unique index concurrently idx2_m_journal_entry_aggregation_tracking on m_journal_entry_aggregation_tracking(aggregated_on_date_to);
</sql>
</changeSet>
<changeSet id="6" author="fineract" context="mysql">
<preConditions onFail="MARK_RAN">
@@ -223,6 +203,26 @@
<addForeignKeyConstraint baseColumnNames="created_by" baseTableName="m_journal_entry_aggregation_tracking" constraintName="FK_GL_JOURNAL_ENTRY_AGGREGATION_TRACKING_ON_CREATED_BY" referencedColumnNames="id" referencedTableName="m_appuser"/>
<addForeignKeyConstraint baseColumnNames="last_modified_by" baseTableName="m_journal_entry_aggregation_tracking" constraintName="FK_GL_JOURNAL_ENTRY_AGGREGATION_TRACKING_ON_LAST_MODIFIED_BY" referencedColumnNames="id" referencedTableName="m_appuser"/>
</changeSet>
<changeSet id="4" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="submitted_on_date"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_journal_entry_aggregation_tracking on m_journal_entry_aggregation_tracking(submitted_on_date);
</sql>
</changeSet>
<changeSet id="5" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="aggregated_on_date_to"/>
</not>
</preConditions>
<sql>
create unique index concurrently idx2_m_journal_entry_aggregation_tracking on m_journal_entry_aggregation_tracking(aggregated_on_date_to);
</sql>
</changeSet>
<changeSet id="9" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
@@ -243,4 +243,104 @@
create unique index idx2_m_journal_entry_aggregation_tracking on m_journal_entry_aggregation_tracking(aggregated_on_date_to);
</sql>
</changeSet>
<changeSet id="11" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="job_execution_id"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_jour_ent_aggr_trac_job_exec_id on m_journal_entry_aggregation_tracking(job_execution_id);
</sql>
</changeSet>
<changeSet id="12" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_tracking" columnNames="job_execution_id"/>
</not>
</preConditions>
<sql>
create index idx_m_jour_ent_aggr_trac_job_exec_id on m_journal_entry_aggregation_tracking(job_execution_id);
</sql>
</changeSet>
<changeSet id="13" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="job_execution_id"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_jour_ent_aggr_sum_job_exec_id on m_journal_entry_aggregation_summary(job_execution_id);
</sql>
</changeSet>
<changeSet id="14" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="job_execution_id"/>
</not>
</preConditions>
<sql>
create index idx_m_jour_ent_aggr_sum_job_exec_id on m_journal_entry_aggregation_summary(job_execution_id);
</sql>
</changeSet>
<changeSet id="15" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="product_id,entity_type_enum"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_jour_ent_aggr_sum_prod_id_entity_type on m_journal_entry_aggregation_summary(product_id, entity_type_enum);
</sql>
</changeSet>
<changeSet id="16" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="product_id,entity_type_enum"/>
</not>
</preConditions>
<sql>
create index idx_m_jour_ent_aggr_sum_prod_id_entity_type on m_journal_entry_aggregation_summary(product_id, entity_type_enum);
</sql>
</changeSet>
<changeSet id="17" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="aggregated_on_date"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_jour_ent_aggr_sum_aggr_date on m_journal_entry_aggregation_summary(aggregated_on_date);
</sql>
</changeSet>
<changeSet id="18" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="aggregated_on_date"/>
</not>
</preConditions>
<sql>
create index idx_m_jour_ent_aggr_sum_aggr_date on m_journal_entry_aggregation_summary(aggregated_on_date);
</sql>
</changeSet>
<changeSet id="19" author="fineract" runInTransaction="false" context="postgresql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="office_id"/>
</not>
</preConditions>
<sql>
create index concurrently idx_m_jour_ent_aggr_sum_office_id on m_journal_entry_aggregation_summary(office_id);
</sql>
</changeSet>
<changeSet id="20" author="fineract" runInTransaction="false" context="mysql">
<preConditions onFail="MARK_RAN">
<not>
<indexExists tableName="m_journal_entry_aggregation_summary" columnNames="office_id"/>
</not>
</preConditions>
<sql>
create index idx_m_jour_ent_aggr_sum_office_id on m_journal_entry_aggregation_summary(office_id);
</sql>
</changeSet>
</databaseChangeLog>
@@ -23,7 +23,7 @@
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">
<changeSet author="fineract" id="trial-balance-summary-with-asset-owner-update-1">
<changeSet author="fineract" id="trial-balance-summary-with-asset-owner-update-2">
<update tableName="stretchy_report">
<column name="report_sql" value="WITH retained_earning AS (
SELECT DISTINCT '${endDate}' AS postingdate,
@@ -46,7 +46,6 @@
FROM m_journal_entry_aggregation_tracking
),
summary_snapshot_baseline_data AS (
--using m_journal_entry_aggregation_summary to fetch aggregated journal entry data
SELECT lp.NAME AS productname,
acc_gl_account.gl_code AS glcode,
acc_gl_account.NAME AS glname,
@@ -63,7 +62,6 @@
GROUP BY productname, glcode, glname, assetowner
),
post_snapshot_delta_data AS (
-- still using acc_gl_journal_entry for dates after last aggregated data and before the cob date
SELECT lp.NAME AS productname,
acc_gl_account.gl_code AS glcode,
acc_gl_account.NAME AS glname,
@@ -82,7 +80,6 @@
AND (acc_gl_journal_entry.office_id = ${officeId})
GROUP BY productname, glcode, glname, assetowner
),
-- fetch all data before cob date
merged_historical_data AS (
SELECT summary_snapshot_baseline_data.productname,
summary_snapshot_baseline_data.glcode,
@@ -95,7 +92,6 @@
AND summary_snapshot_baseline_data.productname = post_snapshot_delta_data.productname
AND summary_snapshot_baseline_data.assetowner = post_snapshot_delta_data.assetowner
),
-- fetch data for cob date
current_cob_data AS (
SELECT lp.name AS productname,
account_id,