This is an automated email from the ASF dual-hosted git repository.
aleks 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 088df46 FINERACT-984: Query changes for database independence
088df46 is described below
commit 088df46a49bd148e577f49a6fbc69523d944b131
Author: Arnold Galovics <[email protected]>
AuthorDate: Sun Feb 20 15:16:44 2022 +0100
FINERACT-984: Query changes for database independence
---
...ntInterestRateChartReadPlatformServiceImpl.java | 25 ++++++++++-------
.../DepositAccountReadPlatformServiceImpl.java | 16 +++++------
.../service/GSIMReadPlatformServiceImpl.java | 6 ++---
...avingsAccountChargeReadPlatformServiceImpl.java | 6 ++---
.../SavingsAccountReadPlatformServiceImpl.java | 31 +++++++++-------------
.../service/SearchReadPlatformServiceImpl.java | 10 +++----
...elfBeneficiariesTPTReadPlatformServiceImpl.java | 8 +++---
.../PurchasedSharesReadPlatformServiceImpl.java | 2 +-
.../ShareAccountChargeReadPlatformServiceImpl.java | 4 +--
.../ShareAccountReadPlatformServiceImpl.java | 10 ++++++-
10 files changed, 62 insertions(+), 56 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java
index 639c374..1ecf513 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformServiceImpl.java
@@ -19,6 +19,7 @@
package org.apache.fineract.portfolio.savings.service;
import java.math.BigDecimal;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@@ -94,13 +95,13 @@ public class
DepositAccountInterestRateChartReadPlatformServiceImpl implements D
sql.append(this.chartExtractor.schema());
sql.append(" where irc.id = ? order by irc.id asc, ");
sql.append("CASE ");
- sql.append("WHEN isPrimaryGroupingByAmount then ircd.amount_range_from
");
- sql.append("WHEN isPrimaryGroupingByAmount then ircd.amount_range_to
");
+ sql.append("WHEN irc.is_primary_grouping_by_amount then
ircd.amount_range_from ");
+ sql.append("WHEN irc.is_primary_grouping_by_amount then
ircd.amount_range_to ");
sql.append("END,");
sql.append("ircd.from_period, ircd.to_period,");
sql.append("CASE ");
- sql.append("WHEN !isPrimaryGroupingByAmount then
ircd.amount_range_from ");
- sql.append("WHEN !isPrimaryGroupingByAmount then ircd.amount_range_to
");
+ sql.append("WHEN NOT irc.is_primary_grouping_by_amount then
ircd.amount_range_from ");
+ sql.append("WHEN NOT irc.is_primary_grouping_by_amount then
ircd.amount_range_to ");
sql.append("END");
Collection<DepositAccountInterestRateChartData> chartDatas =
this.jdbcTemplate.query(sql.toString(), this.chartExtractor,
new Object[] { chartId });
@@ -140,17 +141,21 @@ public class
DepositAccountInterestRateChartReadPlatformServiceImpl implements D
sql.append(this.chartExtractor.schema());
sql.append(" where irc.savings_account_id = ? order by irc.id asc, ");
sql.append("CASE ");
- sql.append("WHEN isPrimaryGroupingByAmount then ircd.amount_range_from
");
- sql.append("WHEN isPrimaryGroupingByAmount then ircd.amount_range_to
");
+ sql.append("WHEN irc.is_primary_grouping_by_amount then
ircd.amount_range_from ");
+ sql.append("WHEN irc.is_primary_grouping_by_amount then
ircd.amount_range_to ");
sql.append("END,");
sql.append("ircd.from_period, ircd.to_period,");
sql.append("CASE ");
- sql.append("WHEN !isPrimaryGroupingByAmount then
ircd.amount_range_from ");
- sql.append("WHEN !isPrimaryGroupingByAmount then ircd.amount_range_to
");
+ sql.append("WHEN NOT irc.is_primary_grouping_by_amount then
ircd.amount_range_from ");
+ sql.append("WHEN NOT irc.is_primary_grouping_by_amount then
ircd.amount_range_to ");
sql.append("END");
- Collection<DepositAccountInterestRateChartData> chartDatas =
this.jdbcTemplate.query(sql.toString(), this.chartExtractor,
- new Object[] { accountId });
+ Collection<DepositAccountInterestRateChartData> chartDatas =
this.jdbcTemplate.query(con -> {
+ PreparedStatement preparedStatement =
con.prepareStatement(sql.toString(), ResultSet.TYPE_SCROLL_SENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ preparedStatement.setLong(1, accountId);
+ return preparedStatement;
+ }, this.chartExtractor);
if (chartDatas == null || chartDatas.isEmpty()) {
throw new
DepositAccountInterestRateChartNotFoundException(accountId);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java
index 59bafad..4018a7c 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountReadPlatformServiceImpl.java
@@ -507,11 +507,11 @@ public class DepositAccountReadPlatformServiceImpl
implements DepositAccountRead
AccountTransferMapper mapper = new AccountTransferMapper();
sqlBuilder.append("SELECT ");
sqlBuilder.append(mapper.schema());
- sqlBuilder.append(" where da.transfer_interest_to_linked_account = 1
and ");
+ sqlBuilder.append(" where da.transfer_interest_to_linked_account =
true and ");
sqlBuilder.append(
- "st.transaction_date > (select
IFNULL(max(sat.transaction_date),sa.activatedon_date) from
m_savings_account_transaction sat where sat.transaction_type_enum = ? and
sat.savings_account_id = sa.id and sat.is_reversed=0) ");
+ "st.transaction_date > (select
coalesce(max(sat.transaction_date),sa.activatedon_date) from
m_savings_account_transaction sat where sat.transaction_type_enum = ? and
sat.savings_account_id = sa.id and sat.is_reversed=false) ");
sqlBuilder.append(
- "and st.transaction_type_enum = ? and sa.status_enum = ? and
st.is_reversed=0 and st.transaction_date >
IFNULL(sa.lockedin_until_date_derived,sa.activatedon_date)");
+ "and st.transaction_type_enum = ? and sa.status_enum = ? and
st.is_reversed=false and st.transaction_date >
coalesce(sa.lockedin_until_date_derived,sa.activatedon_date)");
return this.jdbcTemplate.query(sqlBuilder.toString(), mapper, new
Object[] { SavingsAccountTransactionType.WITHDRAWAL.getValue(),
SavingsAccountTransactionType.INTEREST_POSTING.getValue(),
SavingsAccountStatusType.ACTIVE.getValue() });
@@ -531,7 +531,7 @@ public class DepositAccountReadPlatformServiceImpl
implements DepositAccountRead
sb.append(" inner join m_calendar mc on mc.id = mci.calendar_id and
mc.calendar_type_enum = ?");
sb.append(" inner join m_mandatory_savings_schedule ms on
ms.savings_account_id = dat.savings_account_id and ms.duedate > ?");
sb.append(" where dat.deposit_period is null");
- sb.append(" group by ms.savings_account_id,
rd.mandatory_recommended_deposit_amount, mc.recurrence");
+ sb.append(" group by ms.savings_account_id,
rd.mandatory_recommended_deposit_amount, mc.recurrence, rd.savings_account_id");
return this.jdbcTemplate.queryForList(sb.toString(),
SavingsAccountStatusType.ACTIVE.getValue(),
CalendarEntityType.SAVINGS.getValue(),
CalendarType.COLLECTION.getValue(),
@@ -1425,14 +1425,14 @@ public class DepositAccountReadPlatformServiceImpl
implements DepositAccountRead
sqlBuilder.append("curr.name as currencyName,
curr.internationalized_name_code as currencyNameCode, ");
sqlBuilder.append("curr.display_symbol as currencyDisplaySymbol,
");
sqlBuilder.append("sa.account_balance_derived as runningBalance,
");
- sqlBuilder
- .append("mss.duedate as duedate, (mss.deposit_amount -
ifnull(mss.deposit_amount_completed_derived,0)) as dueamount, ");
- sqlBuilder.append("IFNULL(sac.amount_outstanding_derived,0.0) AS
outstandingChargeAmount ");
+ sqlBuilder.append(
+ "mss.duedate as duedate, (mss.deposit_amount -
coalesce(mss.deposit_amount_completed_derived,0)) as dueamount, ");
+ sqlBuilder.append("coalesce(sac.amount_outstanding_derived,0.0) AS
outstandingChargeAmount ");
sqlBuilder.append("from m_savings_account sa ");
sqlBuilder.append("join m_mandatory_savings_schedule mss on
mss.savings_account_id=sa.id and mss.completed_derived = false ");
sqlBuilder.append("join m_currency curr on curr.code =
sa.currency_code ");
sqlBuilder.append("LEFT JOIN(SELECT s.savings_account_id AS
savings_account_id ");
- sqlBuilder.append(",SUM(IFNULL(s.amount_outstanding_derived,0.0))
AS amount_outstanding_derived ");
+
sqlBuilder.append(",SUM(COALESCE(s.amount_outstanding_derived,0.0)) AS
amount_outstanding_derived ");
sqlBuilder.append("FROM m_savings_account_charge s ");
sqlBuilder.append("JOIN m_charge c ON c.id = s.charge_id AND
c.charge_time_enum = 3 ");
sqlBuilder.append("WHERE s.savings_account_id = ? ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
index f6421d8..72ea8ae 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
@@ -210,7 +210,7 @@ public class GSIMReadPlatformServiceImpl implements
GSIMReadPlatformService {
final GSIMMapper rm = new GSIMMapper();
final String sql = "select " + rm.schema() + " where gsim.group_id=?";
- return this.jdbcTemplate.query(sql, rm, new Object[] { groupId });
+ return this.jdbcTemplate.query(sql, rm, new Object[] {
Long.parseLong(groupId) });
}
@Override
@@ -273,9 +273,9 @@ public class GSIMReadPlatformServiceImpl implements
GSIMReadPlatformService {
accountsSummary.append("avbu.firstname as activatedByFirstname,
avbu.lastname as activatedByLastname,");
accountsSummary.append("sa.sub_status_enum as subStatusEnum, ");
- accountsSummary.append("(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ accountsSummary.append("(select
coalesce(max(sat.transaction_date),sa.activatedon_date) ");
accountsSummary.append("from m_savings_account_transaction as sat
");
- accountsSummary.append("where sat.is_reversed = 0 ");
+ accountsSummary.append("where sat.is_reversed = false ");
accountsSummary.append("and sat.transaction_type_enum in (1,2) ");
accountsSummary.append("and sat.savings_account_id = sa.id) as
lastActiveTransactionDate, ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java
index 0d68fc0..c921455 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformServiceImpl.java
@@ -206,9 +206,9 @@ public class SavingsAccountChargeReadPlatformServiceImpl
implements SavingsAccou
final StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("select ").append(rm.schema()).append(" where
sc.savings_account_id=? ");
if (status.equalsIgnoreCase("active")) {
- sqlBuilder.append(" and sc.is_active = 1 ");
+ sqlBuilder.append(" and sc.is_active = true ");
} else if (status.equalsIgnoreCase("inactive")) {
- sqlBuilder.append(" and sc.is_active = 0 ");
+ sqlBuilder.append(" and sc.is_active = false ");
}
sqlBuilder.append(" order by sc.charge_time_enum ASC,
sc.charge_due_date ASC, sc.is_penalty ASC");
@@ -259,7 +259,7 @@ public class SavingsAccountChargeReadPlatformServiceImpl
implements SavingsAccou
@Override
public Collection<SavingsAccountAnnualFeeData> retrieveChargesWithDue() {
final String sql = "select " + this.chargeDueMapper.schema()
- + " where sac.charge_due_date is not null and
sac.charge_due_date <= NOW() and sac.waived = 0 and sac.is_paid_derived=0 and
sac.is_active=1 and sa.status_enum = ? "
+ + " where sac.charge_due_date is not null and
sac.charge_due_date <= NOW() and sac.waived = false and
sac.is_paid_derived=false and sac.is_active=true and sa.status_enum = ? "
+ " order by sac.charge_due_date ";
return this.jdbcTemplate.query(sql, this.chargeDueMapper, new Object[]
{ SavingsAccountStatusType.ACTIVE.getValue() });
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
index 26e041d..14504c9 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
@@ -268,7 +268,7 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
+ "join (select a.id from m_savings_account a where a.id > ?
and a.status_enum = ? limit ?) b on b.id = sa.id ";
if (backdatedTxnsAllowedTill) {
sql = sql
- + "where if (sa.interest_posted_till_date is not null,
tr.transaction_date >= sa.interest_posted_till_date, tr.transaction_date >=
sa.activatedon_date) ";
+ + "where (CASE WHEN sa.interest_posted_till_date is not
null THEN tr.transaction_date >= sa.interest_posted_till_date ELSE
tr.transaction_date >= sa.activatedon_date END) ";
}
sql = sql + "and apm.product_type=2 and sa.interest_posted_till_date<"
+ java.sql.Date.valueOf(currentDate);
@@ -295,20 +295,13 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
sqlBuilder.append("sa.status_enum as statusEnum, ");
sqlBuilder.append("sa.sub_status_enum as subStatusEnum, ");
sqlBuilder.append("sa.submittedon_date as submittedOnDate,");
-
sqlBuilder.append("sa.rejectedon_date as rejectedOnDate,");
-
sqlBuilder.append("sa.withdrawnon_date as withdrawnOnDate,");
-
sqlBuilder.append("sa.approvedon_date as approvedOnDate,");
-
sqlBuilder.append("sa.activatedon_date as activatedOnDate,");
-
sqlBuilder.append("sa.closedon_date as closedOnDate,");
-
sqlBuilder.append(
"sa.currency_code as currencyCode, sa.currency_digits as
currencyDigits, sa.currency_multiplesof as inMultiplesOf, ");
-
sqlBuilder.append("sa.nominal_annual_interest_rate as
nominalAnnualInterestRate, ");
sqlBuilder.append("sa.interest_compounding_period_enum as
interestCompoundingPeriodType, ");
sqlBuilder.append("sa.interest_posting_period_enum as
interestPostingPeriodType, ");
@@ -342,9 +335,9 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
sqlBuilder.append("sa.total_savings_amount_on_hold as
onHoldAmount, ");
sqlBuilder.append("sa.interest_posted_till_date as
interestPostedTillDate, ");
sqlBuilder.append("tg.id as taxGroupId, ");
- sqlBuilder.append("(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ sqlBuilder.append("(select
COALESCE(max(sat.transaction_date),sa.activatedon_date) ");
sqlBuilder.append("from m_savings_account_transaction as sat ");
- sqlBuilder.append("where sat.is_reversed = 0 ");
+ sqlBuilder.append("where sat.is_reversed = false ");
sqlBuilder.append("and sat.transaction_type_enum in (1,2) ");
sqlBuilder.append("and sat.savings_account_id = sa.id) as
lastActiveTransactionDate, ");
sqlBuilder.append("sp.id as productId, ");
@@ -821,9 +814,9 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
sqlBuilder.append("sa.total_savings_amount_on_hold as
onHoldAmount, ");
sqlBuilder.append("sa.withdrawal_fee_for_transfer as
withdrawalFeeForTransfers, ");
sqlBuilder.append("tg.id as taxGroupId, tg.name as taxGroupName,
");
- sqlBuilder.append("(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ sqlBuilder.append("(select
COALESCE(max(sat.transaction_date),sa.activatedon_date) ");
sqlBuilder.append("from m_savings_account_transaction as sat ");
- sqlBuilder.append("where sat.is_reversed = 0 ");
+ sqlBuilder.append("where sat.is_reversed = false ");
sqlBuilder.append("and sat.transaction_type_enum in (1,2) ");
sqlBuilder.append("and sat.savings_account_id = sa.id) as
lastActiveTransactionDate, ");
sqlBuilder.append("sp.is_dormancy_tracking_active as
isDormancyTrackingActive, ");
@@ -1663,9 +1656,9 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
sql.append(" inner join m_savings_product as sp on (sa.product_id =
sp.id and sp.is_dormancy_tracking_active = 1) ");
sql.append(" where sa.status_enum = 300 ");
sql.append(" and sa.sub_status_enum = 0 ");
- sql.append(" and DATEDIFF(?,(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ sql.append(" and DATEDIFF(?,(select
COALESCE(max(sat.transaction_date), sa.activatedon_date) ");
sql.append(" from m_savings_account_transaction as sat ");
- sql.append(" where sat.is_reversed = 0 ");
+ sql.append(" where sat.is_reversed = false ");
sql.append(" and sat.transaction_type_enum in (1,2) ");
sql.append(" and sat.savings_account_id = sa.id)) >=
sp.days_to_inactive ");
@@ -1688,9 +1681,9 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
sql.append(" inner join m_savings_product as sp on (sa.product_id =
sp.id and sp.is_dormancy_tracking_active = 1) ");
sql.append(" where sa.status_enum = 300 ");
sql.append(" and sa.sub_status_enum = 100 ");
- sql.append(" and DATEDIFF(?,(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ sql.append(" and DATEDIFF(?,(select
COALESCE(max(sat.transaction_date),sa.activatedon_date) ");
sql.append(" from m_savings_account_transaction as sat ");
- sql.append(" where sat.is_reversed = 0 ");
+ sql.append(" where sat.is_reversed = false ");
sql.append(" and sat.transaction_type_enum in (1,2) ");
sql.append(" and sat.savings_account_id = sa.id)) >=
sp.days_to_dormancy ");
@@ -1710,12 +1703,12 @@ public class SavingsAccountReadPlatformServiceImpl
implements SavingsAccountRead
List<Long> ret = null;
StringBuilder sql = new StringBuilder("select sa.id ");
sql.append(" from m_savings_account as sa ");
- sql.append(" inner join m_savings_product as sp on (sa.product_id =
sp.id and sp.is_dormancy_tracking_active = 1) ");
+ sql.append(" inner join m_savings_product as sp on (sa.product_id =
sp.id and sp.is_dormancy_tracking_active = true) ");
sql.append(" where sa.status_enum = 300 ");
sql.append(" and sa.sub_status_enum = 200 ");
- sql.append(" and DATEDIFF(?,(select
IFNULL(max(sat.transaction_date),sa.activatedon_date) ");
+ sql.append(" and DATEDIFF(?,(select
COALESCE(max(sat.transaction_date),sa.activatedon_date) ");
sql.append(" from m_savings_account_transaction as sat ");
- sql.append(" where sat.is_reversed = 0 ");
+ sql.append(" where sat.is_reversed = false ");
sql.append(" and sat.transaction_type_enum in (1,2) ");
sql.append(" and sat.savings_account_id = sa.id)) >=
sp.days_to_escheat ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java
index a298dde..f0bf5b3 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformServiceImpl.java
@@ -96,11 +96,11 @@ public class SearchReadPlatformServiceImpl implements
SearchReadPlatformService
+ " from m_client c join m_office o on o.id = c.office_id
where o.hierarchy like :hierarchy and (c.account_no like :search or
c.display_name like :search or c.external_id like :search or c.mobile_no like
:search)) ";
final String loanMatchSql = " (select 'LOAN' as entityType, l.id
as entityId, pl.name as entityName, l.external_id as entityExternalId,
l.account_no as entityAccountNo "
- + " , IFNULL(c.id,g.id) as parentId,
IFNULL(c.display_name,g.display_name) as parentName, null as entityMobileNo,
l.loan_status_id as entityStatusEnum, null as subEntityType, IF(g.id is null,
'client', 'group') as parentType "
+ + " , coalesce(c.id,g.id) as parentId,
coalesce(c.display_name,g.display_name) as parentName, null as entityMobileNo,
l.loan_status_id as entityStatusEnum, null as subEntityType, CASE WHEN g.id is
null THEN 'client' ELSE 'group' END as parentType "
+ " from m_loan l left join m_client c on l.client_id =
c.id left join m_group g ON l.group_id = g.id left join m_office o on o.id =
c.office_id left join m_product_loan pl on pl.id=l.product_id where
(o.hierarchy IS NULL OR o.hierarchy like :hierarchy) and (l.account_no like
:search or l.external_id like :search)) ";
final String savingMatchSql = " (select 'SAVING' as entityType,
s.id as entityId, sp.name as entityName, s.external_id as entityExternalId,
s.account_no as entityAccountNo "
- + " , IFNULL(c.id,g.id) as parentId,
IFNULL(c.display_name,g.display_name) as parentName, null as entityMobileNo,
s.status_enum as entityStatusEnum, s.deposit_type_enum as subEntityType,IF(g.id
is null, 'client', 'group') as parentType "
+ + " , coalesce(c.id,g.id) as parentId,
coalesce(c.display_name,g.display_name) as parentName, null as entityMobileNo,
s.status_enum as entityStatusEnum, s.deposit_type_enum as subEntityType, CASE
WHEN g.id is null THEN 'client' ELSE 'group' END as parentType "
+ " from m_savings_account s left join m_client c on
s.client_id = c.id left join m_group g ON s.group_id = g.id left join m_office
o on o.id = c.office_id left join m_savings_product sp on sp.id=s.product_id "
+ " where (o.hierarchy IS NULL OR o.hierarchy like
:hierarchy) and (s.account_no like :search or s.external_id like :search)) ";
@@ -217,9 +217,9 @@ public class SearchReadPlatformServiceImpl implements
SearchReadPlatformService
final StringBuilder sql = new StringBuilder();
sql.append(
"Select a.name as officeName, a.Product as productName,
a.cnt as 'count', a.outstandingAmt as outstanding, a.percentOut as percentOut
")
- .append("from (select mo.name, mp.name Product,
sum(ifnull(ml.total_expected_repayment_derived,0.0)) TotalAmt, count(*) cnt, ")
- .append("sum(ifnull(ml.total_outstanding_derived,0.0))
outstandingAmt, ")
- .append("(sum(ifnull(ml.total_outstanding_derived,0.0)) *
100 / sum(ifnull(ml.total_expected_repayment_derived,0.0))) percentOut ")
+ .append("from (select mo.name, mp.name Product,
SUM(COALESCE(ml.total_expected_repayment_derived,0.0)) TotalAmt, count(*) cnt,
")
+ .append("SUM(COALESCE(ml.total_outstanding_derived,0.0))
outstandingAmt, ")
+ .append("(SUM(COALESCE(ml.total_outstanding_derived,0.0))
* 100 / SUM(COALESCE(ml.total_expected_repayment_derived,0.0))) percentOut ")
.append("from m_loan ml inner join m_product_loan mp on
mp.id=ml.product_id ")
.append("inner join m_client mc on mc.id=ml.client_id
").append("inner join m_office mo on mo.id=mc.office_id ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java
index aeddb14..fd9b8c7 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/service/SelfBeneficiariesTPTReadPlatformServiceImpl.java
@@ -78,7 +78,7 @@ public class SelfBeneficiariesTPTReadPlatformServiceImpl
implements SelfBenefici
sqlBuilder.append(" inner join m_office as o on b.office_id = o.id
");
sqlBuilder.append(" inner join m_client as c on b.client_id = c.id
");
sqlBuilder.append(" inner join m_savings_account as s on
b.account_id = s.id ");
- sqlBuilder.append(" where b.is_active = 1 ");
+ sqlBuilder.append(" where b.is_active = true ");
sqlBuilder.append(" and b.account_type = 2 ");
sqlBuilder.append(" and b.app_user_id = ?) ");
sqlBuilder.append(" union all ");
@@ -93,7 +93,7 @@ public class SelfBeneficiariesTPTReadPlatformServiceImpl
implements SelfBenefici
sqlBuilder.append(" inner join m_office as o on b.office_id = o.id
");
sqlBuilder.append(" inner join m_client as c on b.client_id = c.id
");
sqlBuilder.append(" inner join m_loan as l on b.account_id = l.id
");
- sqlBuilder.append(" where b.is_active = 1 ");
+ sqlBuilder.append(" where b.is_active = true ");
sqlBuilder.append(" and b.account_type = 1 ");
sqlBuilder.append(" and b.app_user_id = ?) ");
@@ -136,7 +136,7 @@ public class SelfBeneficiariesTPTReadPlatformServiceImpl
implements SelfBenefici
sqlBuilder.append(" inner join m_office as o on b.office_id = o.id
");
sqlBuilder.append(" inner join m_client as c on b.client_id = c.id
");
sqlBuilder.append(" inner join m_savings_account as s on
b.account_id = s.id ");
- sqlBuilder.append(" where b.is_active = 1 ");
+ sqlBuilder.append(" where b.is_active = true ");
sqlBuilder.append(" and b.account_type = 2 ");
sqlBuilder.append(" and b.app_user_id = ?) ");
sqlBuilder.append(" union all ");
@@ -151,7 +151,7 @@ public class SelfBeneficiariesTPTReadPlatformServiceImpl
implements SelfBenefici
sqlBuilder.append(" inner join m_office as o on b.office_id = o.id
");
sqlBuilder.append(" inner join m_client as c on b.client_id = c.id
");
sqlBuilder.append(" inner join m_loan as l on b.account_id = l.id
");
- sqlBuilder.append(" where b.is_active = 1 ");
+ sqlBuilder.append(" where b.is_active = true ");
sqlBuilder.append(" and b.account_type = 1 ");
sqlBuilder.append(" and b.app_user_id = ?) ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
index 2730104..b1e29b1 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/PurchasedSharesReadPlatformServiceImpl.java
@@ -45,7 +45,7 @@ public class PurchasedSharesReadPlatformServiceImpl
implements PurchasedSharesRe
@Override
public Collection<ShareAccountTransactionData>
retrievePurchasedShares(Long accountId) {
PurchasedSharesDataRowMapper mapper = new
PurchasedSharesDataRowMapper();
- final String sql = "select " + mapper.schema() + " where
saps.account_id=? and saps.is_active = 1";
+ final String sql = "select " + mapper.schema() + " where
saps.account_id=? and saps.is_active = true";
return this.jdbcTemplate.query(sql, mapper, new Object[] { accountId
});
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
index 8de0cf6..76cb4da 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountChargeReadPlatformServiceImpl.java
@@ -50,9 +50,9 @@ public class ShareAccountChargeReadPlatformServiceImpl
implements ShareAccountCh
final StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append("select ").append(rm.schema()).append(" where
sc.account_id=? ");
if (status.equalsIgnoreCase("active")) {
- sqlBuilder.append(" and sc.is_active = 1 ");
+ sqlBuilder.append(" and sc.is_active = true ");
} else if (status.equalsIgnoreCase("inactive")) {
- sqlBuilder.append(" and sc.is_active = 0 ");
+ sqlBuilder.append(" and sc.is_active = false ");
}
sqlBuilder.append(" order by sc.charge_time_enum ASC");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
index eee0cf4..5b42f6a 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/service/ShareAccountReadPlatformServiceImpl.java
@@ -19,6 +19,7 @@
package org.apache.fineract.portfolio.shareaccounts.service;
import java.math.BigDecimal;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@@ -232,7 +233,14 @@ public class ShareAccountReadPlatformServiceImpl
implements ShareAccountReadPlat
sb.append(" and saps.status_enum = ?");
params.add(PurchasedSharesStatusType.APPROVED.getValue());
Object[] whereClauseItems = params.toArray();
- return this.jdbcTemplate.query(sb.toString(), mapper,
whereClauseItems);
+ return this.jdbcTemplate.query(con -> {
+ PreparedStatement preparedStatement =
con.prepareStatement(sb.toString(), ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ for (int i = 0; i < whereClauseItems.length; i++) {
+ preparedStatement.setObject(i + 1, whereClauseItems[i]);
+ }
+ return preparedStatement;
+ }, mapper);
}
public Collection<ShareAccountChargeData>
convertChargesToShareAccountCharges(Collection<ChargeData> productCharges) {