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 16207ef FINERACT-984: More MySQL independence in native queries
16207ef is described below
commit 16207ef95259f0f1581eba2490eba3273a35e529
Author: Arnold Galovics <[email protected]>
AuthorDate: Mon Feb 21 08:59:13 2022 +0100
FINERACT-984: More MySQL independence in native queries
---
.../ClientChargeReadPlatformServiceImpl.java | 8 +-
...llateralManagementWritePlatformServiceImpl.java | 2 +-
.../CollectionSheetReadPlatformServiceImpl.java | 28 +++----
.../FloatingRatesReadPlatformServiceImpl.java | 22 ++---
.../service/CenterReadPlatformServiceImpl.java | 16 ++--
.../InterestRateChartReadPlatformServiceImpl.java | 8 +-
.../domain/LoanAccountDomainService.java | 2 +-
.../domain/LoanAccountDomainServiceJpa.java | 2 +-
.../domain/LoanCollateralManagement.java | 10 +--
.../service/GuarantorReadPlatformServiceImpl.java | 28 +++++--
.../GLIMAccountInfoReadPlatformServiceImpl.java | 4 +-
.../LoanAccrualWritePlatformServiceImpl.java | 2 +-
...ationWritePlatformServiceJpaRepositoryImpl.java | 4 +-
.../service/LoanArrearsAgingServiceImpl.java | 48 +++++------
.../service/LoanChargeReadPlatformServiceImpl.java | 26 +++---
.../service/LoanReadPlatformServiceImpl.java | 93 ++++++++++++----------
.../LoanWritePlatformServiceJpaRepositoryImpl.java | 6 +-
17 files changed, 163 insertions(+), 146 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
index 10148d3..16a772b 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientChargeReadPlatformServiceImpl.java
@@ -139,16 +139,16 @@ public class ClientChargeReadPlatformServiceImpl
implements ClientChargeReadPlat
// filter for active charges
if
(status.equalsIgnoreCase(ClientApiConstants.CLIENT_CHARGE_QUERY_PARAM_STATUS_VALUE_ACTIVE))
{
- sqlBuilder.append(" and cc.is_active = 1 ");
+ sqlBuilder.append(" and cc.is_active = true ");
} else if
(status.equalsIgnoreCase(ClientApiConstants.CLIENT_CHARGE_QUERY_PARAM_STATUS_VALUE_INACTIVE))
{
- sqlBuilder.append(" and cc.is_active = 0 ");
+ sqlBuilder.append(" and cc.is_active = false ");
}
// filter for paid charges
if (pendingPayment != null && pendingPayment) {
- sqlBuilder.append(" and ( cc.is_paid_derived = 0 and cc.waived =
0) ");
+ sqlBuilder.append(" and ( cc.is_paid_derived = false and cc.waived
= false) ");
} else if (pendingPayment != null && !pendingPayment) {
- sqlBuilder.append(" and (cc.is_paid_derived = 1 or cc.waived = 1)
");
+ sqlBuilder.append(" and (cc.is_paid_derived = true or cc.waived =
true) ");
}
sqlBuilder.append(" order by cc.charge_time_enum ASC,
cc.charge_due_date DESC, cc.is_penalty ASC ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
index 477034d..8170bfa 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateralmanagement/service/ClientCollateralManagementWritePlatformServiceImpl.java
@@ -169,7 +169,7 @@ public class
ClientCollateralManagementWritePlatformServiceImpl implements Clien
if (clientCollateralManagement.getLoanCollateralManagementSet().size()
> 0) {
for (LoanCollateralManagement loanCollateralManagement :
clientCollateralManagement.getLoanCollateralManagementSet()) {
- if (loanCollateralManagement.getIsReleased() == 0) {
+ if (!loanCollateralManagement.isReleased()) {
throw new ClientCollateralCannotBeDeletedException(
ClientCollateralCannotBeDeletedException.ClientCollateralCannotBeDeletedReason.CLIENT_COLLATERAL_IS_ALREADY_ATTACHED,
clientCollateralId);
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java
index 50bef40..1784822 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/service/CollectionSheetReadPlatformServiceImpl.java
@@ -224,12 +224,12 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
.append("ln.account_no As accountId,
").append("ln.loan_status_id As accountStatusId, ")
.append("pl.short_name As productShortName,
").append("ln.product_id As productId, ")
.append("ln.currency_code as currencyCode,
ln.currency_digits as currencyDigits, ln.currency_multiplesof as inMultiplesOf,
rc.`name` as currencyName, rc.display_symbol as currencyDisplaySymbol,
rc.internationalized_name_code as currencyNameCode, ")
- .append("if(ln.loan_status_id = 200 , ln.principal_amount
, null) As disbursementAmount, ")
- .append("sum(ifnull(if(ln.loan_status_id = 300,
ls.principal_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.principal_completed_derived, 0.0), 0.0)) As principalDue, ")
+ .append("(CASE WHEN ln.loan_status_id = 200 THEN
ln.principal_amount ELSE null END) As disbursementAmount, ")
+ .append("sum(COALESCE((CASE WHEN ln.loan_status_id = 300
THEN ls.principal_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN
ln.loan_status_id = 300 THEN ls.principal_completed_derived ELSE 0.0 END),
0.0)) As principalDue, ")
.append("ln.principal_repaid_derived As principalPaid, ")
- .append("sum(ifnull(if(ln.loan_status_id = 300,
ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.interest_completed_derived, 0.0), 0.0) - IFNULL(IF(ln.loan_status_id = 300,
ls.interest_waived_derived, 0.0), 0.0)) As interestDue, ")
+ .append("sum(COALESCE((CASE WHEN ln.loan_status_id = 300
THEN ls.interest_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN
ln.loan_status_id = 300 THEN ls.interest_completed_derived ELSE 0.0 END),
0.0) - COALESCE((CASE WHEN ln.loan_status_id = 300 THEN
ls.interest_waived_derived ELSE 0.0 END), 0.0)) As interestDue, ")
.append("ln.interest_repaid_derived As interestPaid, ")
- .append("sum(ifnull(if(ln.loan_status_id = 300,
ls.fee_charges_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.fee_charges_completed_derived, 0.0), 0.0)) As feeDue, ")
+ .append("sum(COALESCE((CASE WHEN ln.loan_status_id = 300
THEN ls.fee_charges_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN
ln.loan_status_id = 300 THEN ls.fee_charges_completed_derived ELSE 0.0 END),
0.0)) As feeDue, ")
.append("ln.fee_charges_repaid_derived As feePaid,
").append("ca.attendance_type_enum as attendanceTypeId ")
.append("FROM m_group gp ")
.append("LEFT JOIN m_office of ON of.id = gp.office_id AND
of.hierarchy like :officeHierarchy ")
@@ -253,7 +253,7 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
sql.append("and (gp.status_enum = 300 or (gp.status_enum = 600 and
gp.closedon_date >= :dueDate)) ")
.append("and (cl.status_enum = 300 or (cl.status_enum =
600 and cl.closedon_date >= :dueDate)) ")
.append("GROUP BY gp.id, cl.id, ln.id,
ca.attendance_type_enum ORDER BY gp.id , cl.id , ln.id ").append(") loandata ")
- .append("LEFT JOIN m_loan_charge lc ON lc.loan_id =
loandata.loanId AND lc.is_paid_derived = 0 AND lc.is_active = 1 ")
+ .append("LEFT JOIN m_loan_charge lc ON lc.loan_id =
loandata.loanId AND lc.is_paid_derived = false AND lc.is_active = true ")
.append("AND ( lc.due_for_collection_as_of_date <=
:dueDate OR lc.charge_time_enum = 1) ")
.append("GROUP BY loandata.groupId, loandata.clientId,
loandata.loanId ")
.append(", loandata.principalDue, loandata.interestDue,
loandata.feeDue, loandata.attendanceTypeId ")
@@ -499,9 +499,9 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
.append("sa.currency_code as currencyCode,
").append("sa.currency_digits as currencyDigits, ")
.append("sa.currency_multiplesof as inMultiplesOf,
").append("rc.`name` as currencyName, ")
.append("rc.display_symbol as currencyDisplaySymbol, ")
- .append("if(sa.deposit_type_enum=100,'Saving
Deposit',if(sa.deposit_type_enum=300,'Recurring Deposit','Current Deposit')) as
depositAccountType, ")
+ .append("(CASE WHEN sa.deposit_type_enum=100 THEN 'Saving
Deposit' ELSE (CASE WHEN sa.deposit_type_enum=300 THEN 'Recurring Deposit' ELSE
'Current Deposit' END) END) as depositAccountType, ")
.append("rc.internationalized_name_code as
currencyNameCode, ")
- .append("sum(ifnull(mss.deposit_amount,0) -
ifnull(mss.deposit_amount_completed_derived,0)) as dueAmount ")
+ .append("SUM(COALESCE(mss.deposit_amount,0) -
coalesce(mss.deposit_amount_completed_derived,0)) as dueAmount ")
.append("FROM m_group gp ")
.append("LEFT JOIN m_office of ON of.id = gp.office_id AND
of.hierarchy like :officeHierarchy ")
@@ -723,15 +723,15 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
sb.append("ln.currency_code as currencyCode, ln.currency_digits as
currencyDigits, ln.currency_multiplesof as inMultiplesOf, ");
sb.append(
"rc.`name` as currencyName, rc.display_symbol as
currencyDisplaySymbol, rc.internationalized_name_code as currencyNameCode, ");
- sb.append("if(ln.loan_status_id = 200 , ln.principal_amount ,
null) As disbursementAmount, ");
+ sb.append("(CASE WHEN ln.loan_status_id = 200 THEN
ln.principal_amount ELSE null END) As disbursementAmount, ");
sb.append(
- "sum(ifnull(if(ln.loan_status_id = 300,
ls.principal_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.principal_completed_derived, 0.0), 0.0)) As principalDue, ");
+ "sum(COALESCE((CASE WHEN ln.loan_status_id = 300 THEN
ls.principal_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN ln.loan_status_id
= 300 THEN ls.principal_completed_derived ELSE 0.0 END), 0.0)) As principalDue,
");
sb.append("ln.principal_repaid_derived As principalPaid, ");
sb.append(
- "sum(ifnull(if(ln.loan_status_id = 300,
ls.interest_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.interest_completed_derived, 0.0), 0.0)) As interestDue, ");
+ "sum(COALESCE((CASE WHEN ln.loan_status_id = 300 THEN
ls.interest_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN ln.loan_status_id
= 300 THEN ls.interest_completed_derived ELSE 0.0 END), 0.0)) As interestDue,
");
sb.append("ln.interest_repaid_derived As interestPaid, ");
sb.append(
- "sum(ifnull(if(ln.loan_status_id = 300,
ls.fee_charges_amount, 0.0), 0.0) - ifnull(if(ln.loan_status_id = 300,
ls.fee_charges_completed_derived, 0.0), 0.0)) As feeDue, ");
+ "sum(COALESCE((CASE WHEN ln.loan_status_id = 300 THEN
ls.fee_charges_amount ELSE 0.0 END), 0.0) - COALESCE((CASE WHEN
ln.loan_status_id = 300 THEN ls.fee_charges_completed_derived ELSE 0.0 END),
0.0)) As feeDue, ");
sb.append("ln.fee_charges_repaid_derived As feePaid ");
sb.append("FROM m_loan ln ");
sb.append("JOIN m_client cl ON cl.id = ln.client_id ");
@@ -749,7 +749,7 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
sb.append("(ln.loan_status_id = 300) ");
sb.append("and ln.group_id is null GROUP BY cl.id , ln.id ORDER BY
cl.id , ln.id ) loandata ");
sb.append(
- "LEFT JOIN m_loan_charge lc ON lc.loan_id =
loandata.loanId AND lc.is_paid_derived = 0 AND lc.is_active = 1 AND (
lc.due_for_collection_as_of_date <= :dueDate OR lc.charge_time_enum = 1) ");
+ "LEFT JOIN m_loan_charge lc ON lc.loan_id =
loandata.loanId AND lc.is_paid_derived = false AND lc.is_active = true AND (
lc.due_for_collection_as_of_date <= :dueDate OR lc.charge_time_enum = 1) ");
sb.append("GROUP BY loandata.clientId, loandata.loanId ORDER BY
loandata.clientId, loandata.loanId ");
sql = sb.toString();
@@ -808,13 +808,13 @@ public class CollectionSheetReadPlatformServiceImpl
implements CollectionSheetRe
final StringBuilder sb = new StringBuilder(400);
sb.append(
- "SELECT if(sa.deposit_type_enum=100,'Saving
Deposit',if(sa.deposit_type_enum=300,'Recurring Deposit','Current Deposit')) as
depositAccountType, cl.display_name As clientName, cl.id As clientId, ");
+ "SELECT (CASE WHEN sa.deposit_type_enum=100 THEN 'Saving
Deposit' ELSE (CASE WHEN sa.deposit_type_enum=300 THEN 'Recurring Deposit' ELSE
'Current Deposit' END) END) as depositAccountType, cl.display_name As
clientName, cl.id As clientId, ");
sb.append("sa.id As savingsId, sa.account_no As accountId,
sa.status_enum As accountStatusId, ");
sb.append("sp.short_name As productShortName, sp.id As productId,
");
sb.append("sa.currency_code as currencyCode, sa.currency_digits as
currencyDigits, sa.currency_multiplesof as inMultiplesOf, ");
sb.append(
"rc.`name` as currencyName, rc.display_symbol as
currencyDisplaySymbol, rc.internationalized_name_code as currencyNameCode, ");
- sb.append("sum(ifnull(mss.deposit_amount,0) -
ifnull(mss.deposit_amount_completed_derived,0)) as dueAmount ");
+ sb.append("SUM(COALESCE(mss.deposit_amount,0) -
coalesce(mss.deposit_amount_completed_derived,0)) as dueAmount ");
sb.append("FROM m_savings_account sa ");
sb.append("JOIN m_client cl ON cl.id = sa.client_id ");
sb.append("JOIN m_savings_product sp ON sa.product_id=sp.id ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java
index 9786af3..0d45a40 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/service/FloatingRatesReadPlatformServiceImpl.java
@@ -56,14 +56,14 @@ public class FloatingRatesReadPlatformServiceImpl
implements FloatingRatesReadPl
@Override
public List<FloatingRateData> retrieveAllActive() {
FloatingRateRowMapper rateMapper = new FloatingRateRowMapper(false);
- final String sql = "select " + rateMapper.schema() + " where
rate.is_active = 1 ";
+ final String sql = "select " + rateMapper.schema() + " where
rate.is_active = true ";
return this.jdbcTemplate.query(sql, rateMapper);
}
@Override
public List<FloatingRateData> retrieveLookupActive() {
FloatingRateLookupMapper rateMapper = new FloatingRateLookupMapper();
- final String sql = "select " + rateMapper.schema() + " where
rate.is_active = 1 ";
+ final String sql = "select " + rateMapper.schema() + " where
rate.is_active = true ";
return this.jdbcTemplate.query(sql, rateMapper);
}
@@ -92,7 +92,7 @@ public class FloatingRatesReadPlatformServiceImpl implements
FloatingRatesReadPl
public FloatingRateData retrieveBaseLendingRate() {
try {
FloatingRateRowMapper rateMapper = new FloatingRateRowMapper(true);
- final String sql = "select " + rateMapper.schema() + " where
rate.is_base_lending_rate = 1 and rate.is_active = 1";
+ final String sql = "select " + rateMapper.schema() + " where
rate.is_base_lending_rate = true and rate.is_active = true";
return this.jdbcTemplate.queryForObject(sql, rateMapper);
} catch (final EmptyResultDataAccessException e) {
throw new
FloatingRateNotFoundException("error.msg.floatingrate.base.lending.rate.not.found",
e);
@@ -127,8 +127,8 @@ public class FloatingRatesReadPlatformServiceImpl
implements FloatingRatesReadPl
List<FloatingRatePeriodData> ratePeriods = null;
if (addRatePeriods) {
FloatingRatePeriodRowMapper ratePeriodMapper = new
FloatingRatePeriodRowMapper();
- final String sql = "select " + ratePeriodMapper.schema() + "
where period.is_active = 1 and period.floating_rates_id = ? "
- + " order by period.from_date desc ";
+ final String sql = "select " + ratePeriodMapper.schema()
+ + " where period.is_active = true and
period.floating_rates_id = ? " + " order by period.from_date desc ";
ratePeriods = jdbcTemplate.query(sql, ratePeriodMapper, new
Object[] { id });
}
return new FloatingRateData(id, name, isBaseLendingRate, isActive,
createdBy, createdOn, modifiedBy, modifiedOn, ratePeriods,
@@ -199,19 +199,19 @@ public class FloatingRatesReadPlatformServiceImpl
implements FloatingRatesReadPl
.append(" from m_product_loan as lp ")
.append(" join m_product_loan_floating_rates as plfr on lp.id
= plfr.loan_product_id ")
.append(" join m_floating_rates as linkedrate on
linkedrate.id = plfr.floating_rates_id ")
- .append("left join m_floating_rates_periods as
linkedrateperiods on (linkedrate.id = linkedrateperiods.floating_rates_id and
linkedrateperiods.is_active = 1) ")
+ .append("left join m_floating_rates_periods as
linkedrateperiods on (linkedrate.id = linkedrateperiods.floating_rates_id and
linkedrateperiods.is_active = true) ")
.append("left join ( ").append(" select blr.name,
").append(" blr.is_base_lending_rate, ")
.append(" blr.is_active, ").append("
blrperiods.from_date, ").append(" blrperiods.interest_rate ")
.append(" from m_floating_rates as blr ")
- .append(" left join m_floating_rates_periods as blrperiods
on (blr.id = blrperiods.floating_rates_id and blrperiods.is_active = 1) ")
- .append(" where blr.is_base_lending_rate = 1 and
blr.is_active = 1 ")
- .append(") as baserate on
(linkedrateperiods.is_differential_to_base_lending_rate = 1 and
linkedrate.is_base_lending_rate = 0) ")
+ .append(" left join m_floating_rates_periods as blrperiods
on (blr.id = blrperiods.floating_rates_id and blrperiods.is_active = true) ")
+ .append(" where blr.is_base_lending_rate = true and
blr.is_active = true ")
+ .append(") as baserate on
(linkedrateperiods.is_differential_to_base_lending_rate = true and
linkedrate.is_base_lending_rate = false) ")
.append("where (baserate.from_date is null ").append(" or
baserate.from_date = (select MAX(b.from_date) ")
.append(" from (select blr.name, ").append("
blr.is_base_lending_rate, ")
.append(" blr.is_active, ").append("
blrperiods.from_date, ")
.append(" blrperiods.interest_rate ").append("
from m_floating_rates as blr ")
- .append(" left join m_floating_rates_periods as
blrperiods on (blr.id = blrperiods.floating_rates_id and blrperiods.is_active =
1) ")
- .append(" where blr.is_base_lending_rate = 1 and
blr.is_active = 1 ").append(" ) as b ")
+ .append(" left join m_floating_rates_periods as
blrperiods on (blr.id = blrperiods.floating_rates_id and blrperiods.is_active =
true) ")
+ .append(" where blr.is_base_lending_rate = true and
blr.is_active = true ").append(" ) as b ")
.append(" where b.from_date <=
linkedrateperiods.from_date)) ").append("and lp.id = ? ")
.append("order by linkedratePeriods_from_date desc ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java
index b99d4fe..3d952bc 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/service/CenterReadPlatformServiceImpl.java
@@ -212,14 +212,12 @@ public class CenterReadPlatformServiceImpl implements
CenterReadPlatformService
+ " g.hierarchy as hierarchy, c.id as calendarId, ci.id
as calendarInstanceId, ci.entity_id as entityId,"
+ " ci.entity_type_enum as entityTypeId, c.title as title,
c.description as description,"
+ "c.location as location, c.start_date as startDate,
c.end_date as endDate, c.recurrence as recurrence,c.meeting_time as
meetingTime,"
- + "sum(if(l.loan_status_id=300 and lrs.duedate = ?,"
- + "(ifnull(lrs.principal_amount,0)) +
(ifnull(lrs.interest_amount,0)),0)) as installmentDue,"
- + "sum(if(l.loan_status_id=300 and lrs.duedate = ?,"
- + "(ifnull(lrs.principal_completed_derived,0)) +
(ifnull(lrs.interest_completed_derived,0)),0)) as totalCollected,"
- + "sum(if(l.loan_status_id=300 and lrs.duedate <= ?,
(ifnull(lrs.principal_amount,0)) + (ifnull(lrs.interest_amount,0)),0))"
- + "- sum(if(l.loan_status_id=300 and lrs.duedate <= ?,
(ifnull(lrs.principal_completed_derived,0)) +
(ifnull(lrs.interest_completed_derived,0)),0)) as totaldue, "
- + "sum(if(l.loan_status_id=300 and lrs.duedate < ?,
(ifnull(lrs.principal_amount,0)) + (ifnull(lrs.interest_amount,0)),0))"
- + "- sum(if(l.loan_status_id=300 and lrs.duedate < ?,
(ifnull(lrs.principal_completed_derived,0)) +
(ifnull(lrs.interest_completed_derived,0)),0)) as totaloverdue"
+ + "sum(CASE WHEN l.loan_status_id=300 and lrs.duedate = ?
THEN COALESCE(lrs.principal_amount,0)) + (COALESCE(lrs.interest_amount,0) ELSE
0 END)) as installmentDue,"
+ + "sum(CASE WHEN l.loan_status_id=300 and lrs.duedate = ?
THEN COALESCE(lrs.principal_completed_derived,0) +
COALESCE(lrs.interest_completed_derived,0) ELSE 0 END) as totalCollected,"
+ + "sum(CASE WHEN l.loan_status_id=300 and lrs.duedate <= ?
THEN COALESCE(lrs.principal_amount,0) + COALESCE(lrs.interest_amount,0) ELSE 0
END)"
+ + "- sum(CASE WHEN l.loan_status_id=300 and lrs.duedate <=
? THEN COALESCE(lrs.principal_completed_derived,0) +
COALESCE(lrs.interest_completed_derived,0) ELSE 0 END) as totaldue, "
+ + "sum(CASE WHEN l.loan_status_id=300 and lrs.duedate < ?
THEN COALESCE(lrs.principal_amount,0) + COALESCE(lrs.interest_amount,0) ELSE 0
END)"
+ + "- sum(CASE WHEN l.loan_status_id=300 and lrs.duedate <
? THEN COALESCE(lrs.principal_completed_derived,0) +
COALESCE(lrs.interest_completed_derived,0) ELSE 0 END) as totaloverdue"
+ " from m_calendar c join m_calendar_instance ci on
ci.calendar_id=c.id and ci.entity_type_enum=4"
+ " join m_group ce on ce.id = ci.entity_id" + " join
m_group g on g.parent_id = ce.id"
+ " join m_group_client gc on gc.group_id=g.id" + " join
m_client cl on cl.id=gc.client_id"
@@ -500,7 +498,7 @@ public class CenterReadPlatformServiceImpl implements
CenterReadPlatformService
@Override
public Collection<GroupGeneralData> retrieveAssociatedGroups(final Long
centerId) {
- final String sql = "select " + this.groupDataMapper.schema() + " where
g.parent_id = ? ";
+ final String sql = "select " + this.groupDataMapper.schema() + " where
g.parent_id = ? order by g.id";
return this.jdbcTemplate.query(sql, this.groupDataMapper, new Object[]
{ centerId });
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java
index e490cd7..84877b2 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartReadPlatformServiceImpl.java
@@ -90,13 +90,13 @@ public class InterestRateChartReadPlatformServiceImpl
implements InterestRateCha
sql.append(this.chartExtractor.schema());
sql.append(" where sp.id = ? order by irc.id, ");
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");
return this.jdbcTemplate.query(
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java
index bb2879a..71db423 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java
@@ -51,7 +51,7 @@ public interface LoanAccountDomainService {
void updateLoanCollateralTransaction(Set<LoanCollateralManagement>
loanCollateralManagementList);
- void updateLoanCollateralStatus(Set<LoanCollateralManagement>
loanCollateralManagementSet, Integer isReleased);
+ void updateLoanCollateralStatus(Set<LoanCollateralManagement>
loanCollateralManagementSet, boolean isReleased);
/**
* This method is to recalculate and accrue the income till the last
accrued date. this method is used when the
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
index d20cd26..230d511 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
@@ -162,7 +162,7 @@ public class LoanAccountDomainServiceJpa implements
LoanAccountDomainService {
@Transactional
@Override
- public void updateLoanCollateralStatus(Set<LoanCollateralManagement>
loanCollateralManagementSet, Integer isReleased) {
+ public void updateLoanCollateralStatus(Set<LoanCollateralManagement>
loanCollateralManagementSet, boolean isReleased) {
for (LoanCollateralManagement loanCollateralManagement :
loanCollateralManagementSet) {
loanCollateralManagement.setIsReleased(isReleased);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
index f5d840c..94fbfa7 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCollateralManagement.java
@@ -43,8 +43,8 @@ public class LoanCollateralManagement extends
AbstractPersistableCustom {
@JoinColumn(name = "loan_id", referencedColumnName = "id", nullable =
false)
private Loan loan;
- @Column(name = "is_released", nullable = false, columnDefinition = "0")
- private Integer isReleased = Integer.valueOf(0);
+ @Column(name = "is_released", nullable = false)
+ private boolean isReleased = false;
@ManyToOne(optional = false)
@JoinColumn(name = "client_collateral_id", nullable = false)
@@ -54,7 +54,7 @@ public class LoanCollateralManagement extends
AbstractPersistableCustom {
}
- public LoanCollateralManagement(final BigDecimal quantity, final Integer
isReleased) {
+ public LoanCollateralManagement(final BigDecimal quantity, final boolean
isReleased) {
this.quantity = quantity;
this.isReleased = isReleased;
}
@@ -89,7 +89,7 @@ public class LoanCollateralManagement extends
AbstractPersistableCustom {
this.loanTransaction = loanTransaction;
}
- public void setIsReleased(final Integer isReleased) {
+ public void setIsReleased(final boolean isReleased) {
this.isReleased = isReleased;
}
@@ -113,7 +113,7 @@ public class LoanCollateralManagement extends
AbstractPersistableCustom {
return this.clientCollateralManagement;
}
- public Integer getIsReleased() {
+ public boolean isReleased() {
return this.isReleased;
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
index 492fe12..8a56002 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorReadPlatformServiceImpl.java
@@ -19,6 +19,7 @@
package org.apache.fineract.portfolio.loanaccount.guarantor.service;
import java.math.BigDecimal;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@@ -75,9 +76,15 @@ public class GuarantorReadPlatformServiceImpl implements
GuarantorReadPlatformSe
public List<GuarantorData> retrieveGuarantorsForLoan(final Long loanId) {
final GuarantorMapper rm = new GuarantorMapper();
String sql = "select " + rm.schema();
- sql += " where loan_id = ? group by g.id,gfd.id, gt.id";
- final List<GuarantorData> guarantorDatas =
this.jdbcTemplate.query(sql, rm,
- new Object[] {
AccountAssociationType.GUARANTOR_ACCOUNT_ASSOCIATION.getValue(), loanId });
+ sql += " where loan_id = ? group by g.id,gfd.id, gt.id, sa.id,
oht.id, cv.id";
+ String finalSql = sql;
+ final List<GuarantorData> guarantorDatas = this.jdbcTemplate.query(con
-> {
+ PreparedStatement preparedStatement =
con.prepareStatement(finalSql, ResultSet.TYPE_SCROLL_SENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ preparedStatement.setInt(1,
AccountAssociationType.GUARANTOR_ACCOUNT_ASSOCIATION.getValue());
+ preparedStatement.setLong(2, loanId);
+ return preparedStatement;
+ }, rm);
final List<GuarantorData> mergedGuarantorDatas = new ArrayList<>();
@@ -91,9 +98,16 @@ public class GuarantorReadPlatformServiceImpl implements
GuarantorReadPlatformSe
public GuarantorData retrieveGuarantor(final Long loanId, final Long
guarantorId) {
final GuarantorMapper rm = new GuarantorMapper();
String sql = "select " + rm.schema();
- sql += " where g.loan_id = ? and g.id = ? group by g.id, gfd.id,
gt.id";
- final GuarantorData guarantorData =
this.jdbcTemplate.queryForObject(sql, rm,
- new Object[] {
AccountAssociationType.GUARANTOR_ACCOUNT_ASSOCIATION.getValue(), loanId,
guarantorId });
+ sql += " where g.loan_id = ? and g.id = ? group by g.id, gfd.id,
gt.id, sa.id, oht.id, cv.id";
+ String finalSql = sql;
+ final GuarantorData guarantorData = this.jdbcTemplate.query(con -> {
+ PreparedStatement preparedStatement =
con.prepareStatement(finalSql, ResultSet.TYPE_SCROLL_SENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+ preparedStatement.setInt(1,
AccountAssociationType.GUARANTOR_ACCOUNT_ASSOCIATION.getValue());
+ preparedStatement.setLong(2, loanId);
+ preparedStatement.setLong(3, guarantorId);
+ return preparedStatement;
+ }, rm).get(0);
return mergeDetailsForClientOrStaffGuarantor(guarantorData);
}
@@ -114,7 +128,7 @@ public class GuarantorReadPlatformServiceImpl implements
GuarantorReadPlatformSe
.append(" FROM m_guarantor g") //
.append(" left JOIN m_code_value cv on
g.client_reln_cv_id = cv.id")//
.append(" left JOIN m_guarantor_funding_details gfd on
g.id = gfd.guarantor_id")//
- .append(" left JOIN m_portfolio_account_associations
aa on gfd.account_associations_id = aa.id and aa.is_active = 1 and
aa.association_type_enum = ?")//
+ .append(" left JOIN m_portfolio_account_associations
aa on gfd.account_associations_id = aa.id and aa.is_active = true and
aa.association_type_enum = ?")//
.append(" left JOIN m_savings_account sa on sa.id =
aa.linked_savings_account_id ")//
.append(" left join m_guarantor_transaction gt on
gt.guarantor_fund_detail_id = gfd.id") //
.append(" left join
m_deposit_account_on_hold_transaction oht on oht.id =
gt.deposit_on_hold_transaction_id");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
index 9f1ea50..cc5e265 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/GLIMAccountInfoReadPlatformServiceImpl.java
@@ -104,7 +104,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl
implements GLIMAccountInfoRe
final GLIMFieldsMapper rm = new GLIMFieldsMapper();
final String sql = "select " + rm.schema() + " and ln.group_id=?";
- return this.jdbcTemplate.query(sql, rm, new Object[] { groupId });
+ return this.jdbcTemplate.query(sql, rm, new Object[] {
Long.parseLong(groupId) });
}
@Override
@@ -115,7 +115,7 @@ public class GLIMAccountInfoReadPlatformServiceImpl
implements GLIMAccountInfoRe
final String sql = "select " + rm.schema() + " where glim.group_id=?";
- return this.jdbcTemplate.query(sql, rm, new Object[] { groupId });
+ return this.jdbcTemplate.query(sql, rm, new Object[] {
Long.parseLong(groupId) });
}
@Override
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
index 2db468a..dd3140a 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
@@ -269,7 +269,7 @@ public class LoanAccrualWritePlatformServiceImpl implements
LoanAccrualWritePlat
BigDecimal totalAccInterest, BigDecimal feeportion, BigDecimal
totalAccFee, BigDecimal penaltyportion,
BigDecimal totalAccPenalty, final LocalDate accruedTill) throws
DataAccessException {
String transactionSql = "INSERT INTO m_loan_transaction
(loan_id,office_id,is_reversed,transaction_type_enum,transaction_date,amount,interest_portion_derived,"
- +
"fee_charges_portion_derived,penalty_charges_portion_derived,
submitted_on_date) VALUES (?, ?, 0, ?, ?, ?, ?, ?, ?, ?)";
+ +
"fee_charges_portion_derived,penalty_charges_portion_derived,
submitted_on_date) VALUES (?, ?, false, ?, ?, ?, ?, ?, ?, ?)";
this.jdbcTemplate.update(transactionSql,
scheduleAccrualData.getLoanId(), scheduleAccrualData.getOfficeId(),
LoanTransactionType.ACCRUAL.getValue(),
Date.from(accruedTill.atStartOfDay(ZoneId.systemDefault()).toInstant()), amount,
interestportion, feeportion, penaltyportion,
DateUtils.getDateOfTenant());
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
index a0658d0..815d840 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
@@ -1303,7 +1303,7 @@ public class
LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
BigDecimal quantity = loanCollateralManagement.getQuantity();
ClientCollateralManagement clientCollateralManagement =
loanCollateralManagement.getClientCollateralManagement();
clientCollateralManagement.updateQuantityAfterLoanClosed(quantity);
- loanCollateralManagement.setIsReleased(Integer.valueOf(1));
+ loanCollateralManagement.setIsReleased(true);
loanCollateralManagement.setClientCollateralManagement(clientCollateralManagement);
}
@@ -1662,7 +1662,7 @@ public class
LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
clientCollateralManagement
.updateQuantity(clientCollateralManagement.getQuantity().add(loanCollateralManagement.getQuantity()));
loanCollateralManagement.setClientCollateralManagement(clientCollateralManagement);
- loanCollateralManagement.setIsReleased(Integer.valueOf(1));
+ loanCollateralManagement.setIsReleased(true);
}
loan.updateLoanCollateral(loanCollateralManagements);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
index 2673656..5c25c21 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
@@ -91,16 +91,16 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
this.jdbcTemplate.execute("truncate table m_loan_arrears_aging");
final StringBuilder updateSqlBuilder = new StringBuilder(900);
- final String principalOverdueCalculationSql =
"SUM(ifnull(mr.principal_amount, 0) - ifnull(mr.principal_completed_derived, 0)
- ifnull(mr.principal_writtenoff_derived, 0))";
- final String interestOverdueCalculationSql =
"SUM(ifnull(mr.interest_amount, 0) - ifnull(mr.interest_writtenoff_derived, 0)
- ifnull(mr.interest_waived_derived, 0) - "
- + "ifnull(mr.interest_completed_derived, 0))";
- final String feeChargesOverdueCalculationSql =
"SUM(ifnull(mr.fee_charges_amount, 0) -
ifnull(mr.fee_charges_writtenoff_derived, 0) - "
- + "ifnull(mr.fee_charges_waived_derived, 0) -
ifnull(mr.fee_charges_completed_derived, 0))";
- final String penaltyChargesOverdueCalculationSql =
"SUM(ifnull(mr.penalty_charges_amount, 0) -
ifnull(mr.penalty_charges_writtenoff_derived, 0) - "
- + "ifnull(mr.penalty_charges_waived_derived, 0) -
ifnull(mr.penalty_charges_completed_derived, 0))";
+ final String principalOverdueCalculationSql =
"SUM(COALESCE(mr.principal_amount, 0) -
coalesce(mr.principal_completed_derived, 0) -
coalesce(mr.principal_writtenoff_derived, 0))";
+ final String interestOverdueCalculationSql =
"SUM(COALESCE(mr.interest_amount, 0) - coalesce(mr.interest_writtenoff_derived,
0) - coalesce(mr.interest_waived_derived, 0) - "
+ + "coalesce(mr.interest_completed_derived, 0))";
+ final String feeChargesOverdueCalculationSql =
"SUM(COALESCE(mr.fee_charges_amount, 0) -
coalesce(mr.fee_charges_writtenoff_derived, 0) - "
+ + "coalesce(mr.fee_charges_waived_derived, 0) -
coalesce(mr.fee_charges_completed_derived, 0))";
+ final String penaltyChargesOverdueCalculationSql =
"SUM(COALESCE(mr.penalty_charges_amount, 0) -
coalesce(mr.penalty_charges_writtenoff_derived, 0) - "
+ + "coalesce(mr.penalty_charges_waived_derived, 0) -
coalesce(mr.penalty_charges_completed_derived, 0))";
updateSqlBuilder.append(
- "INSERT INTO
m_loan_arrears_aging(`loan_id`,`principal_overdue_derived`,`interest_overdue_derived`,`fee_charges_overdue_derived`,`penalty_charges_overdue_derived`,`total_overdue_derived`,`overdue_since_date_derived`)");
+ "INSERT INTO
m_loan_arrears_aging(loan_id,principal_overdue_derived,interest_overdue_derived,fee_charges_overdue_derived,penalty_charges_overdue_derived,total_overdue_derived,overdue_since_date_derived)");
updateSqlBuilder.append("select ml.id as loanId,");
updateSqlBuilder.append(principalOverdueCalculationSql + " as
principal_overdue_derived,");
updateSqlBuilder.append(interestOverdueCalculationSql + " as
interest_overdue_derived,");
@@ -114,8 +114,8 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
updateSqlBuilder.append(" left join
m_product_loan_recalculation_details prd on prd.product_id = ml.product_id ");
updateSqlBuilder.append(" WHERE ml.loan_status_id = 300 "); // active
updateSqlBuilder.append(" and mr.completed_derived is false ");
- updateSqlBuilder.append(" and mr.duedate < SUBDATE(CURDATE(),INTERVAL
ifnull(ml.grace_on_arrears_ageing,0) day) ");
- updateSqlBuilder.append(" and (prd.arrears_based_on_original_schedule
= 0 or prd.arrears_based_on_original_schedule is null) ");
+ updateSqlBuilder.append(" and mr.duedate < SUBDATE(CURDATE(),INTERVAL
COALESCE(ml.grace_on_arrears_ageing, 0) day) ");
+ updateSqlBuilder.append(" and (prd.arrears_based_on_original_schedule
= false or prd.arrears_based_on_original_schedule is null) ");
updateSqlBuilder.append(" GROUP BY ml.id");
List<String> insertStatements =
updateLoanArrearsAgeingDetailsWithOriginalSchedule();
@@ -144,7 +144,7 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
if (updateStatement.size() == 1) {
this.jdbcTemplate.update(updateStatement.get(0));
} else {
- String deletestatement = "DELETE FROM `m_loan_arrears_aging`
WHERE `loan_id`=" + loan.getId();
+ String deletestatement = "DELETE FROM m_loan_arrears_aging
WHERE loan_id=" + loan.getId();
this.jdbcTemplate.update(deletestatement);
}
}
@@ -156,7 +156,7 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
Integer.class, loan.getId());
String updateStatement = constructUpdateStatement(loan, count == 0);
if (updateStatement == null) {
- String deletestatement = "DELETE FROM `m_loan_arrears_aging` WHERE
`loan_id`=" + loan.getId();
+ String deletestatement = "DELETE FROM m_loan_arrears_aging WHERE
loan_id=" + loan.getId();
this.jdbcTemplate.update(deletestatement);
} else {
this.jdbcTemplate.update(updateStatement);
@@ -203,9 +203,9 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
loanIdentifier.append("select ml.id as loanId FROM m_loan ml ");
loanIdentifier.append("INNER JOIN m_loan_repayment_schedule mr on
mr.loan_id = ml.id ");
loanIdentifier.append(
- "inner join m_product_loan_recalculation_details prd on
prd.product_id = ml.product_id and prd.arrears_based_on_original_schedule = 1
");
+ "inner join m_product_loan_recalculation_details prd on
prd.product_id = ml.product_id and prd.arrears_based_on_original_schedule =
true ");
loanIdentifier.append(
- "WHERE ml.loan_status_id = 300 and mr.completed_derived is
false and mr.duedate < SUBDATE(CURDATE(),INTERVAL
ifnull(ml.grace_on_arrears_ageing,0) day) group by ml.id");
+ "WHERE ml.loan_status_id = 300 and mr.completed_derived is
false and mr.duedate < SUBDATE(CURDATE(),INTERVAL
COALESCE(ml.grace_on_arrears_ageing, 0) day) group by ml.id");
List<Long> loanIds =
this.jdbcTemplate.queryForList(loanIdentifier.toString(), Long.class);
if (!loanIds.isEmpty()) {
String loanIdsAsString = loanIds.toString();
@@ -300,8 +300,8 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
private String constructInsertStatement(final Long loanId, BigDecimal
principalOverdue, BigDecimal interestOverdue,
BigDecimal feeOverdue, BigDecimal penaltyOverdue, LocalDate
overDueSince) {
final StringBuilder insertStatementBuilder = new StringBuilder(900);
- insertStatementBuilder.append("INSERT INTO
m_loan_arrears_aging(`loan_id`,`principal_overdue_derived`,`interest_overdue_derived`,")
-
.append("`fee_charges_overdue_derived`,`penalty_charges_overdue_derived`,`total_overdue_derived`,`overdue_since_date_derived`)
VALUES(");
+ insertStatementBuilder.append("INSERT INTO
m_loan_arrears_aging(loan_id,principal_overdue_derived,interest_overdue_derived,")
+
.append("fee_charges_overdue_derived,penalty_charges_overdue_derived,total_overdue_derived,overdue_since_date_derived)
VALUES(");
insertStatementBuilder.append(loanId).append(",");
insertStatementBuilder.append(principalOverdue).append(",");
insertStatementBuilder.append(interestOverdue).append(",");
@@ -316,15 +316,15 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
private String constructUpdateStatement(final Long loanId, BigDecimal
principalOverdue, BigDecimal interestOverdue,
BigDecimal feeOverdue, BigDecimal penaltyOverdue, LocalDate
overDueSince) {
final StringBuilder insertStatementBuilder = new StringBuilder(900);
- insertStatementBuilder.append("UPDATE m_loan_arrears_aging mla SET
mla.principal_overdue_derived=");
- insertStatementBuilder.append(principalOverdue).append(",
mla.interest_overdue_derived=");
- insertStatementBuilder.append(interestOverdue).append(",
mla.fee_charges_overdue_derived=");
- insertStatementBuilder.append(feeOverdue).append(",
mla.penalty_charges_overdue_derived=");
- insertStatementBuilder.append(penaltyOverdue).append(",
mla.total_overdue_derived=");
+ insertStatementBuilder.append("UPDATE m_loan_arrears_aging SET
principal_overdue_derived=");
+ insertStatementBuilder.append(principalOverdue).append(",
interest_overdue_derived=");
+ insertStatementBuilder.append(interestOverdue).append(",
fee_charges_overdue_derived=");
+ insertStatementBuilder.append(feeOverdue).append(",
penalty_charges_overdue_derived=");
+ insertStatementBuilder.append(penaltyOverdue).append(",
total_overdue_derived=");
BigDecimal totalOverDue =
principalOverdue.add(interestOverdue).add(feeOverdue).add(penaltyOverdue);
-
insertStatementBuilder.append(totalOverDue).append(",mla.overdue_since_date_derived=
'");
+
insertStatementBuilder.append(totalOverDue).append(",overdue_since_date_derived=
'");
insertStatementBuilder.append(this.formatter.format(overDueSince)).append("' ");
- insertStatementBuilder.append("WHERE mla.loan_id=").append(loanId);
+ insertStatementBuilder.append("WHERE loan_id=").append(loanId);
return insertStatementBuilder.toString();
}
@@ -425,7 +425,7 @@ public class LoanArrearsAgingServiceImpl implements
LoanArrearsAgingService, Bus
scheduleDetail.append(
"mr.interest_amount as interestAmount,
mr.fee_charges_amount as feeAmount, mr.penalty_charges_amount as penaltyAmount
");
scheduleDetail.append("from m_loan ml INNER JOIN
m_loan_repayment_schedule_history mr on mr.loan_id = ml.id ");
- scheduleDetail.append("where mr.duedate <
SUBDATE(CURDATE(),INTERVAL ifnull(ml.grace_on_arrears_ageing,0) day) and ");
+ scheduleDetail.append("where mr.duedate <
SUBDATE(CURDATE(),INTERVAL COALESCE(ml.grace_on_arrears_ageing, 0) day) and ");
scheduleDetail.append("ml.id
IN(").append(loanIdsAsString).append(") and mr.version = (");
scheduleDetail.append("select max(lrs.version) from
m_loan_repayment_schedule_history lrs where mr.loan_id = lrs.loan_id");
scheduleDetail.append(") order by ml.id,mr.duedate");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
index 954f89e..fcded5b 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
@@ -77,7 +77,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
+ "lc.charge_payment_mode_enum as chargePaymentMode, " +
"lc.is_paid_derived as paid, " + "lc.waived as waied, "
+ "lc.min_cap as minCap, lc.max_cap as maxCap, " +
"lc.charge_amount_or_percentage as amountOrPercentage, "
+ "c.currency_code as currencyCode, oc.name as
currencyName, "
- +
"date(ifnull(dd.disbursedon_date,dd.expected_disburse_date)) as
disbursementDate, "
+ +
"date(coalesce(dd.disbursedon_date,dd.expected_disburse_date)) as
disbursementDate, "
+ "oc.decimal_places as currencyDecimalPlaces,
oc.currency_multiplesof as inMultiplesOf, oc.display_symbol as
currencyDisplaySymbol, "
+ "oc.internationalized_name_code as currencyNameCode from
m_charge c "
+ "join m_organisation_currency oc on c.currency_code =
oc.code " + "join m_loan_charge lc on lc.charge_id = c.id "
@@ -188,8 +188,8 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
final LoanChargeMapper rm = new LoanChargeMapper();
- final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = 1"
- + " order by
ifnull(lc.due_for_collection_as_of_date,date(ifnull(dd.disbursedon_date,dd.expected_disburse_date))),lc.charge_time_enum
ASC, lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
+ final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = true"
+ + " order by
coalesce(lc.due_for_collection_as_of_date,date(coalesce(dd.disbursedon_date,dd.expected_disburse_date))),lc.charge_time_enum
ASC, lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
return this.jdbcTemplate.query(sql, rm, new Object[] { loanId });
}
@@ -198,7 +198,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
public Collection<LoanChargeData> retrieveLoanChargesForFeePayment(final
Integer paymentMode, final Integer loanStatus) {
final LoanChargeMapperWithLoanId rm = new LoanChargeMapperWithLoanId();
final String sql = "select " + rm.schema()
- + "where loan.loan_status_id= ? and
lc.charge_payment_mode_enum=? and lc.waived =0 and lc.is_paid_derived=0 and
lc.is_active = 1";
+ + "where loan.loan_status_id= ? and
lc.charge_payment_mode_enum=? and lc.waived = false and
lc.is_paid_derived=false and lc.is_active = true";
return this.jdbcTemplate.query(sql, rm, new Object[] { loanStatus,
paymentMode });
}
@@ -229,7 +229,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
final LoanInstallmentChargeMapper rm = new
LoanInstallmentChargeMapper();
String sql = "select " + rm.schema() + "where lic.loan_charge_id= ? ";
if (onlyPaymentPendingCharges) {
- sql = sql + "and lic.waived =0 and lic.is_paid_derived=0";
+ sql = sql + "and lic.waived = false and lic.is_paid_derived=false";
}
sql = sql + " order by lsi.installment";
return this.jdbcTemplate.query(sql, rm, new Object[] { loanChargeId });
@@ -262,7 +262,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
public Collection<Integer>
retrieveOverdueInstallmentChargeFrequencyNumber(final Long loanId, final Long
chargeId,
final Integer periodNumber) {
String sql = "select oic.frequency_number from
m_loan_overdue_installment_charge oic inner join m_loan_charge lc on
lc.id=oic.loan_charge_id inner join m_loan_repayment_schedule rs on rs.id =
oic.loan_schedule_id inner join m_loan loan on loan.id=rs.loan_id "
- + "where lc.is_active = 1 and loan.id = ? and
rs.installment=?";
+ + "where lc.is_active = true and loan.id = ? and
rs.installment=?";
Object[] params = { loanId, periodNumber };
if (chargeId != null) {
sql += " and lc.charge_id = ? ";
@@ -276,7 +276,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
final LoanChargeAccrualMapper rm = new LoanChargeAccrualMapper();
- final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = 1 group by lc.id "
+ final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = true group by lc.id "
+ " order by lc.charge_time_enum ASC,
lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
Collection<LoanChargeData> charges = this.jdbcTemplate.query(sql, rm,
@@ -320,7 +320,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
sb.append("select lcp.loan_charge_id, lcp.amount");
sb.append(" from m_loan_charge_paid_by lcp ");
sb.append(
- "inner join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed = 0 and lt.transaction_type_enum = ?
and lt.loan_id = ?");
+ "inner join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed = false and lt.transaction_type_enum
= ? and lt.loan_id = ?");
sb.append(") cp on cp.loan_charge_id= lc.id ");
schemaSql = sb.toString();
@@ -354,7 +354,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
final LoanChargeUnRecognizedIncomeMapper rm = new
LoanChargeUnRecognizedIncomeMapper(loanChargeDatas);
- final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = 1 group by lc.id "
+ final String sql = "select " + rm.schema() + " where lc.loan_id=? AND
lc.is_active = true group by lc.id "
+ " order by lc.charge_time_enum ASC,
lc.due_for_collection_as_of_date ASC, lc.is_penalty ASC";
return this.jdbcTemplate.query(sql, rm, new Object[] {
LoanTransactionType.WAIVE_CHARGES.getValue(), loanId, loanId });
@@ -380,7 +380,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
sb.append("select cpb.loan_charge_id,
lt.unrecognized_income_portion");
sb.append(" from m_loan_charge_paid_by cpb ");
sb.append(
- "inner join m_loan_transaction lt on lt.id =
cpb.loan_transaction_id and lt.is_reversed = 0 and lt.transaction_type_enum = ?
and lt.loan_id = ? ");
+ "inner join m_loan_transaction lt on lt.id =
cpb.loan_transaction_id and lt.is_reversed = false and lt.transaction_type_enum
= ? and lt.loan_id = ? ");
sb.append(") wt on wt.loan_charge_id= lc.id ");
schemaSql = sb.toString();
@@ -438,7 +438,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
sb.append("select lcp.loan_charge_id, lcp.amount as amount,
lcp.installment_number ");
sb.append(" from m_loan_charge_paid_by lcp ");
sb.append(
- "inner join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed = 0 and lt.transaction_type_enum =
?");
+ "inner join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed = false and lt.transaction_type_enum
= ?");
sb.append(") cp on cp.loan_charge_id= lic.loan_charge_id and
cp.installment_number = lsi.installment ");
schemaSql = sb.toString();
}
@@ -482,7 +482,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
sb.append(" sum(lt.unrecognized_income_portion) as
amountUnrecognized ");
sb.append(" from m_loan_charge_paid_by cpb ");
sb.append(
- "inner join m_loan_transaction lt on lt.id =
cpb.loan_transaction_id and lt.is_reversed = 0 and lt.transaction_type_enum =
?");
+ "inner join m_loan_transaction lt on lt.id =
cpb.loan_transaction_id and lt.is_reversed = false and lt.transaction_type_enum
= ?");
schemaSql = sb.toString();
}
@@ -533,7 +533,7 @@ public class LoanChargeReadPlatformServiceImpl implements
LoanChargeReadPlatform
sb.append("lcp.loan_transaction_id as transactionId, ");
sb.append("lcp.installment_number as installmentNumber ");
sb.append(" from m_loan_charge_paid_by lcp ");
- sb.append(" join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed=0");
+ sb.append(" join m_loan_transaction lt on lt.id =
lcp.loan_transaction_id and lt.is_reversed=false");
schemaSql = sb.toString();
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
index 98233d0..5872fb2 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
@@ -281,7 +281,7 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
* TODO Vishwas: Remove references to "Contra" from the codebase
***/
final String sql = "select " + rm.loanPaymentsSchema()
- + " where tr.loan_id = ? and tr.transaction_type_enum not
in (0, 3) and (tr.is_reversed=0 or tr.manually_adjusted_or_reversed = 1) order
by tr.transaction_date ASC,id ";
+ + " where tr.loan_id = ? and tr.transaction_type_enum not
in (0, 3) and (tr.is_reversed=false or tr.manually_adjusted_or_reversed =
true) order by tr.transaction_date ASC,id ";
return this.jdbcTemplate.query(sql, rm, new Object[] { loanId });
} catch (final EmptyResultDataAccessException e) {
return null;
@@ -1530,8 +1530,8 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
final StringBuilder sqlBuilder = new StringBuilder(400);
sqlBuilder.append("select ").append(rm.schema()).append(" where
DATE_SUB(CURDATE(),INTERVAL ? DAY) > ls.duedate ")
- .append(" and ls.completed_derived <> 1 and
mc.charge_applies_to_enum =1 ")
- .append(" and ls.recalculated_interest_component <> 1 ")
+ .append(" and ls.completed_derived <> true and
mc.charge_applies_to_enum =1 ")
+ .append(" and ls.recalculated_interest_component <> true ")
.append(" and mc.charge_time_enum = 9 and ml.loan_status_id =
300 ");
if (backdatePenalties) {
@@ -1571,7 +1571,7 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
public String schema() {
return "dd.id as id,dd.expected_disburse_date as
expectedDisbursementdate, dd.disbursedon_date as
actualDisbursementdate,dd.principal as principal,dd.net_disbursal_amount as
netDisbursalAmount,sum(lc.amount) chargeAmount, lc.amount_waived_derived
waivedAmount,group_concat(lc.id) loanChargeId "
+ "from m_loan l inner join m_loan_disbursement_detail dd
on dd.loan_id = l.id left join m_loan_tranche_disbursement_charge tdc on
tdc.disbursement_detail_id=dd.id "
- + "left join m_loan_charge lc on lc.id=tdc.loan_charge_id
and lc.is_active=1";
+ + "left join m_loan_charge lc on lc.id=tdc.loan_charge_id
and lc.is_active=true";
}
@Override
@@ -1638,11 +1638,11 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
Date organisationStartDate =
this.configurationDomainService.retrieveOrganisationStartDate();
final StringBuilder sqlBuilder = new StringBuilder(400);
sqlBuilder.append("select ").append(mapper.schema()).append(
- " where (recaldet.is_compounding_to_be_posted_as_transaction
is null or recaldet.is_compounding_to_be_posted_as_transaction = 0) ")
- .append(" and (((ls.fee_charges_amount <>
if(ls.accrual_fee_charges_derived is null,0, ls.accrual_fee_charges_derived))")
- .append(" or ( ls.penalty_charges_amount <>
if(ls.accrual_penalty_charges_derived is
null,0,ls.accrual_penalty_charges_derived))")
- .append(" or ( ls.interest_amount <>
if(ls.accrual_interest_derived is null,0,ls.accrual_interest_derived)))")
- .append(" and loan.loan_status_id=:active and
mpl.accounting_type=:type and loan.is_npa=0 and ls.duedate <= CURDATE()) ");
+ " where (recaldet.is_compounding_to_be_posted_as_transaction
is null or recaldet.is_compounding_to_be_posted_as_transaction = false) ")
+ .append(" and (((ls.fee_charges_amount <>
COALESCE(ls.accrual_fee_charges_derived, 0))")
+ .append(" or ( ls.penalty_charges_amount <>
COALESCE(ls.accrual_penalty_charges_derived, 0))")
+ .append(" or ( ls.interest_amount <>
COALESCE(ls.accrual_interest_derived, 0)))")
+ .append(" and loan.loan_status_id=:active and
mpl.accounting_type=:type and loan.is_npa=false and ls.duedate <= CURDATE()) ");
if (organisationStartDate != null) {
sqlBuilder.append(" and ls.duedate > :organisationstartdate ");
}
@@ -1664,12 +1664,14 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
Date organisationStartDate =
this.configurationDomainService.retrieveOrganisationStartDate();
final StringBuilder sqlBuilder = new StringBuilder(400);
sqlBuilder.append("select ").append(mapper.schema()).append(
- " where (recaldet.is_compounding_to_be_posted_as_transaction
is null or recaldet.is_compounding_to_be_posted_as_transaction = 0) ")
- .append(" and (((ls.fee_charges_amount <>
if(ls.accrual_fee_charges_derived is null,0, ls.accrual_fee_charges_derived))")
- .append(" or (ls.penalty_charges_amount <>
if(ls.accrual_penalty_charges_derived is
null,0,ls.accrual_penalty_charges_derived))")
- .append(" or (ls.interest_amount <>
if(ls.accrual_interest_derived is null,0,ls.accrual_interest_derived)))")
- .append(" and loan.loan_status_id=:active and
mpl.accounting_type=:type and (loan.closedon_date <= :tilldate or
loan.closedon_date is null)")
- .append(" and loan.is_npa=0 and (ls.duedate <= :tilldate or
(ls.duedate > :tilldate and ls.fromdate < :tilldate))) ");
+ " where (recaldet.is_compounding_to_be_posted_as_transaction
is null or recaldet.is_compounding_to_be_posted_as_transaction = false) ")
+ .append(" and (((ls.fee_charges_amount <>
COALESCE(ls.accrual_fee_charges_derived, 0))")
+ .append(" or (ls.penalty_charges_amount <>
COALESCE(ls.accrual_penalty_charges_derived, 0))")
+ .append(" or (ls.interest_amount <>
COALESCE(ls.accrual_interest_derived, 0)))")
+ .append(" and loan.loan_status_id=:active and
mpl.accounting_type=:type and (loan.closedon_date <= :tilldate"
+ + " or loan.closedon_date is null)")
+ .append(" and loan.is_npa=false and (ls.duedate <= :tilldate
or (ls.duedate > :tilldate"
+ + " and ls.fromdate < :tilldate))) ");
if (organisationStartDate != null) {
sqlBuilder.append(" and ls.duedate > :organisationstartdate ");
}
@@ -1689,7 +1691,7 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
public String schema() {
final StringBuilder sqlBuilder = new StringBuilder(400);
- sqlBuilder.append("loan.id as loanId ,if(loan.client_id is
null,mg.office_id,mc.office_id) as officeId,")
+ sqlBuilder.append("loan.id as loanId , (CASE WHEN loan.client_id
is null THEN mg.office_id ELSE mc.office_id END) as officeId,")
.append("loan.accrued_till as accruedTill,
loan.repayment_period_frequency_enum as frequencyEnum, ")
.append("loan.interest_calculated_from_date as
interestCalculatedFrom, ").append("loan.repay_every as repayEvery,")
.append("ls.installment as installmentNumber, ")
@@ -1751,7 +1753,7 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
public String schema() {
final StringBuilder sqlBuilder = new StringBuilder(400);
- sqlBuilder.append("loan.id as loanId ,if(loan.client_id is
null,mg.office_id,mc.office_id) as officeId,")
+ sqlBuilder.append("loan.id as loanId, (CASE WHEN loan.client_id is
null THEN mg.office_id ELSE mc.office_id END) as officeId,")
.append("ls.duedate as duedate,ls.fromdate as
fromdate,ls.id as scheduleId,loan.product_id as productId,")
.append("ls.installment as installmentNumber, ")
.append("ls.interest_amount as interest,
ls.interest_waived_derived as interestWaived,")
@@ -1840,15 +1842,15 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
sqlBuilder.append(" LEFT JOIN m_loan_disbursement_detail dd on
dd.loan_id=ml.id and dd.disbursedon_date is null ");
// For Floating rate changes
sqlBuilder.append(
- " left join m_product_loan_floating_rates pfr on ml.product_id
= pfr.loan_product_id and ml.is_floating_interest_rate = 1");
+ " left join m_product_loan_floating_rates pfr on ml.product_id
= pfr.loan_product_id and ml.is_floating_interest_rate = true");
sqlBuilder.append(" left join m_floating_rates fr on
pfr.floating_rates_id = fr.id");
sqlBuilder.append(" left join m_floating_rates_periods frp on fr.id =
frp.floating_rates_id ");
sqlBuilder.append(" left join m_loan_reschedule_request lrr on
lrr.loan_id = ml.id");
// this is to identify the applicable rates when base rate is changed
- sqlBuilder.append(" left join m_floating_rates bfr on
bfr.is_base_lending_rate = 1");
+ sqlBuilder.append(" left join m_floating_rates bfr on
bfr.is_base_lending_rate = true");
sqlBuilder.append(" left join m_floating_rates_periods bfrp on
bfr.id = bfrp.floating_rates_id and bfrp.created_date >= ?");
sqlBuilder.append(" WHERE ml.loan_status_id = ? ");
- sqlBuilder.append(" and ml.is_npa = 0 ");
+ sqlBuilder.append(" and ml.is_npa = false ");
sqlBuilder.append(" and ((");
sqlBuilder.append("ml.interest_recalculation_enabled = 1 ");
sqlBuilder.append(" and (ml.interest_recalcualated_on is null or
ml.interest_recalcualated_on <> ?)");
@@ -1857,9 +1859,10 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
sqlBuilder.append(" and mr.duedate < ? )");
sqlBuilder.append(" or dd.expected_disburse_date < ? )) ");
sqlBuilder.append(" or (");
- sqlBuilder.append(" fr.is_active = 1 and frp.is_active = 1");
+ sqlBuilder.append(" fr.is_active = true and frp.is_active = true");
sqlBuilder.append(" and (frp.created_date >= ? or ");
- sqlBuilder.append("(bfrp.id is not null and
frp.is_differential_to_base_lending_rate = 1 and frp.from_date >=
bfrp.from_date)) ");
+ sqlBuilder
+ .append("(bfrp.id is not null and
frp.is_differential_to_base_lending_rate = true and frp.from_date >=
bfrp.from_date)) ");
sqlBuilder.append("and lrr.loan_id is null");
sqlBuilder.append(" ))");
sqlBuilder.append(" group by ml.id");
@@ -1884,26 +1887,27 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
sqlBuilder.append(" LEFT JOIN m_loan_disbursement_detail dd on
dd.loan_id=ml.id and dd.disbursedon_date is null ");
// For Floating rate changes
sqlBuilder.append(
- " left join m_product_loan_floating_rates pfr on ml.product_id
= pfr.loan_product_id and ml.is_floating_interest_rate = 1");
+ " left join m_product_loan_floating_rates pfr on ml.product_id
= pfr.loan_product_id and ml.is_floating_interest_rate = true");
sqlBuilder.append(" left join m_floating_rates fr on
pfr.floating_rates_id = fr.id");
sqlBuilder.append(" left join m_floating_rates_periods frp on fr.id =
frp.floating_rates_id ");
sqlBuilder.append(" left join m_loan_reschedule_request lrr on
lrr.loan_id = ml.id");
// this is to identify the applicable rates when base rate is changed
- sqlBuilder.append(" left join m_floating_rates bfr on
bfr.is_base_lending_rate = 1");
+ sqlBuilder.append(" left join m_floating_rates bfr on
bfr.is_base_lending_rate = true");
sqlBuilder.append(" left join m_floating_rates_periods bfrp on
bfr.id = bfrp.floating_rates_id and bfrp.created_date >= ?");
sqlBuilder.append(" WHERE ml.loan_status_id = ? ");
- sqlBuilder.append(" and ml.is_npa = 0 ");
+ sqlBuilder.append(" and ml.is_npa = false ");
sqlBuilder.append(" and ((");
- sqlBuilder.append("ml.interest_recalculation_enabled = 1 ");
+ sqlBuilder.append("ml.interest_recalculation_enabled = true ");
sqlBuilder.append(" and (ml.interest_recalcualated_on is null or
ml.interest_recalcualated_on <> ?)");
sqlBuilder.append(" and ((");
sqlBuilder.append(" mr.completed_derived is false ");
sqlBuilder.append(" and mr.duedate < ? )");
sqlBuilder.append(" or dd.expected_disburse_date < ? )) ");
sqlBuilder.append(" or (");
- sqlBuilder.append(" fr.is_active = 1 and frp.is_active = 1");
+ sqlBuilder.append(" fr.is_active = true and frp.is_active = true");
sqlBuilder.append(" and (frp.created_date >= ? or ");
- sqlBuilder.append("(bfrp.id is not null and
frp.is_differential_to_base_lending_rate = 1 and frp.from_date >=
bfrp.from_date)) ");
+ sqlBuilder
+ .append("(bfrp.id is not null and
frp.is_differential_to_base_lending_rate = true and frp.from_date >=
bfrp.from_date)) ");
sqlBuilder.append("and lrr.loan_id is null");
sqlBuilder.append(" ))");
sqlBuilder.append(" and ml.id >= ? and o.hierarchy like ? ");
@@ -1928,7 +1932,7 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
final LoanTransactionDerivedComponentMapper rm = new
LoanTransactionDerivedComponentMapper();
final String sql = "select " + rm.schema()
- + " where tr.loan_id = ? and tr.transaction_type_enum = ?
and tr.is_reversed=0 order by tr.transaction_date ASC,id ";
+ + " where tr.loan_id = ? and tr.transaction_type_enum = ?
and tr.is_reversed=false order by tr.transaction_date ASC,id ";
return this.jdbcTemplate.query(sql, rm, new Object[] { loanId,
LoanTransactionType.WAIVE_INTEREST.getValue() });
} catch (final EmptyResultDataAccessException e) {
return null;
@@ -2068,14 +2072,14 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
public PaidInAdvanceData retrieveTotalPaidInAdvance(Long loanId) {
// TODO Auto-generated method stub
try {
- final String sql = " select
(SUM(ifnull(mr.principal_completed_derived, 0)) +"
- + " + SUM(ifnull(mr.interest_completed_derived, 0)) " + "
+ SUM(ifnull(mr.fee_charges_completed_derived, 0)) "
- + " + SUM(ifnull(mr.penalty_charges_completed_derived,
0))) as total_in_advance_derived "
+ final String sql = " select
(SUM(COALESCE(mr.principal_completed_derived, 0)) +"
+ + " + SUM(COALESCE(mr.interest_completed_derived, 0)) " +
" + SUM(COALESCE(mr.fee_charges_completed_derived, 0)) "
+ + " + SUM(COALESCE(mr.penalty_charges_completed_derived,
0))) as total_in_advance_derived "
+ " from m_loan ml INNER JOIN m_loan_repayment_schedule mr
on mr.loan_id = ml.id "
+ " where ml.id=? and mr.duedate >= CURDATE() group by
ml.id having "
- + " (SUM(ifnull(mr.principal_completed_derived, 0)) " + "
+ SUM(ifnull(mr.interest_completed_derived, 0)) "
- + " + SUM(ifnull(mr.fee_charges_completed_derived, 0)) "
- + "+ SUM(ifnull(mr.penalty_charges_completed_derived,
0))) > 0";
+ + " (SUM(COALESCE(mr.principal_completed_derived, 0)) " +
" + SUM(COALESCE(mr.interest_completed_derived, 0)) "
+ + " + SUM(COALESCE(mr.fee_charges_completed_derived, 0)) "
+ + "+ SUM(COALESCE(mr.penalty_charges_completed_derived,
0))) > 0";
BigDecimal bigDecimal = this.jdbcTemplate.queryForObject(sql,
BigDecimal.class, loanId);
return new PaidInAdvanceData(bigDecimal);
} catch (DataAccessException e) {
@@ -2155,11 +2159,11 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
@Override
public Collection<Long>
retrieveLoanIdsWithPendingIncomePostingTransactions() {
StringBuilder sqlBuilder = new StringBuilder().append(" select
distinct loan.id ").append(" from m_loan as loan ").append(
- " inner join m_loan_recalculation_details as recdet on
(recdet.loan_id = loan.id and recdet.is_compounding_to_be_posted_as_transaction
is not null and recdet.is_compounding_to_be_posted_as_transaction = 1) ")
+ " inner join m_loan_recalculation_details as recdet on
(recdet.loan_id = loan.id and recdet.is_compounding_to_be_posted_as_transaction
is not null and recdet.is_compounding_to_be_posted_as_transaction = true) ")
.append(" inner join m_loan_repayment_schedule as repsch on
repsch.loan_id = loan.id ")
.append(" inner join
m_loan_interest_recalculation_additional_details as adddet on
adddet.loan_repayment_schedule_id = repsch.id ")
- .append(" left join m_loan_transaction as trans on
(trans.is_reversed <> 1 and trans.transaction_type_enum = 19 and trans.loan_id
= loan.id and trans.transaction_date = adddet.effective_date) ")
- .append(" where loan.loan_status_id = 300 ").append(" and
loan.is_npa = 0 ")
+ .append(" left join m_loan_transaction as trans on
(trans.is_reversed <> true and trans.transaction_type_enum = 19 and
trans.loan_id = loan.id and trans.transaction_date = adddet.effective_date) ")
+ .append(" where loan.loan_status_id = 300 ").append(" and
loan.is_npa = false ")
.append(" and adddet.effective_date is not null ").append("
and trans.transaction_date is null ")
.append(" and adddet.effective_date < ? ");
try {
@@ -2223,21 +2227,22 @@ public class LoanReadPlatformServiceImpl implements
LoanReadPlatformService {
public String schema() {
StringBuilder sqlBuilder = new StringBuilder();
-
sqlBuilder.append("if(max(tr.transaction_date)>ls.dueDate,max(tr.transaction_date),ls.dueDate)
as transactionDate, ");
sqlBuilder.append(
- "ls.principal_amount -
IFNULL(ls.principal_writtenoff_derived,0) -
IFNULL(ls.principal_completed_derived,0) as principalDue, ");
+ "(CASE WHEN max(tr.transaction_date)>ls.dueDate THEN
max(tr.transaction_date) ELSE ls.dueDate END) as transactionDate, ");
+ sqlBuilder.append(
+ "ls.principal_amount -
coalesce(ls.principal_writtenoff_derived,0) -
coalesce(ls.principal_completed_derived,0) as principalDue, ");
sqlBuilder.append(
- "ls.interest_amount -
IFNULL(ls.interest_completed_derived,0) - IFNULL(ls.interest_waived_derived,0)
- IFNULL(ls.interest_writtenoff_derived,0) as interestDue, ");
+ "ls.interest_amount -
coalesce(ls.interest_completed_derived,0) -
coalesce(ls.interest_waived_derived,0) -
coalesce(ls.interest_writtenoff_derived,0) as interestDue, ");
sqlBuilder.append(
- "ls.fee_charges_amount -
IFNULL(ls.fee_charges_completed_derived,0) -
IFNULL(ls.fee_charges_writtenoff_derived,0) -
IFNULL(ls.fee_charges_waived_derived,0) as feeDue, ");
+ "ls.fee_charges_amount -
coalesce(ls.fee_charges_completed_derived,0) -
coalesce(ls.fee_charges_writtenoff_derived,0) -
coalesce(ls.fee_charges_waived_derived,0) as feeDue, ");
sqlBuilder.append(
- "ls.penalty_charges_amount -
IFNULL(ls.penalty_charges_completed_derived,0) -
IFNULL(ls.penalty_charges_writtenoff_derived,0) -
IFNULL(ls.penalty_charges_waived_derived,0) as penaltyDue, ");
+ "ls.penalty_charges_amount -
coalesce(ls.penalty_charges_completed_derived,0) -
coalesce(ls.penalty_charges_writtenoff_derived,0) -
coalesce(ls.penalty_charges_waived_derived,0) as penaltyDue, ");
sqlBuilder.append(
"l.currency_code as currencyCode, l.currency_digits as
currencyDigits, l.currency_multiplesof as inMultiplesOf, l.net_disbursal_amount
as netDisbursalAmount, rc.`name` as currencyName, ");
sqlBuilder.append("rc.display_symbol as currencyDisplaySymbol,
rc.internationalized_name_code as currencyNameCode ");
sqlBuilder.append("FROM m_loan l ");
sqlBuilder.append(
- "LEFT JOIN m_loan_transaction tr ON tr.loan_id = l.id AND
tr.transaction_type_enum = ? and tr.is_reversed = 0 ");
+ "LEFT JOIN m_loan_transaction tr ON tr.loan_id = l.id AND
tr.transaction_type_enum = ? and tr.is_reversed = false ");
sqlBuilder.append("join m_currency rc on rc.`code` =
l.currency_code ");
sqlBuilder.append("JOIN m_loan_repayment_schedule ls ON ls.loan_id
= l.id AND ls.completed_derived = 0 ");
sqlBuilder.append("join( ");
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
index 51cca57..7389c9d 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
@@ -987,7 +987,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl
implements LoanWritePlatf
ClientCollateralManagement clientCollateralManagement =
loanCollateralManagement.getClientCollateralManagement();
if (loan.status().isClosed()) {
- loanCollateralManagement.setIsReleased(Integer.valueOf(1));
+ loanCollateralManagement.setIsReleased(true);
BigDecimal quantity =
loanCollateralManagement.getQuantity();
clientCollateralManagement.updateQuantity(clientCollateralManagement.getQuantity().add(quantity));
loanCollateralManagement.setClientCollateralManagement(clientCollateralManagement);
@@ -1402,7 +1402,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl
implements LoanWritePlatf
ClientCollateralManagement clientCollateralManagement =
loanCollateralManagement.getClientCollateralManagement();
if (loan.status().isClosed()) {
- loanCollateralManagement.setIsReleased(Integer.valueOf(1));
+ loanCollateralManagement.setIsReleased(true);
BigDecimal quantity =
loanCollateralManagement.getQuantity();
clientCollateralManagement.updateQuantity(clientCollateralManagement.getQuantity().add(quantity));
loanCollateralManagement.setClientCollateralManagement(clientCollateralManagement);
@@ -1469,7 +1469,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl
implements LoanWritePlatf
ClientCollateralManagement clientCollateralManagement =
loanCollateralManagement.getClientCollateralManagement();
if (loan.status().isClosed()) {
- loanCollateralManagement.setIsReleased(Integer.valueOf(1));
+ loanCollateralManagement.setIsReleased(true);
BigDecimal quantity =
loanCollateralManagement.getQuantity();
clientCollateralManagement.updateQuantity(clientCollateralManagement.getQuantity().add(quantity));
loanCollateralManagement.setClientCollateralManagement(clientCollateralManagement);