adamsaghy commented on code in PR #5462:
URL: https://github.com/apache/fineract/pull/5462#discussion_r2797930149
##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java:
##########
@@ -2125,33 +2124,21 @@ private static final class
RepaymentTransactionTemplateMapper implements RowMapp
public String schema() {
// TODO: investigate whether it can be refactored to be more
efficient
- StringBuilder sqlBuilder = new StringBuilder();
- sqlBuilder.append("(CASE ");
- sqlBuilder.append(
- "WHEN (select max(tr.transaction_date) as transaction_date
from m_loan_transaction tr where tr.loan_id = l.id AND tr.transaction_type_enum
in (?,?) AND tr.is_reversed = false) > ls.dueDate ");
- sqlBuilder.append(
- "THEN (select max(tr.transaction_date) as transaction_date
from m_loan_transaction tr where tr.loan_id = l.id AND tr.transaction_type_enum
in (?,?) AND tr.is_reversed = false) ");
- sqlBuilder.append("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 -
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 -
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 -
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, ");
- sqlBuilder.append("rc." + sqlGenerator.escape("name")
- + " as currencyName, rc.display_symbol as
currencyDisplaySymbol, rc.internationalized_name_code as currencyNameCode ");
- sqlBuilder.append("FROM m_loan l ");
- sqlBuilder.append("JOIN m_currency rc on rc." +
sqlGenerator.escape("code") + " = l.currency_code ");
- sqlBuilder.append("JOIN m_loan_repayment_schedule ls ON ls.loan_id
= l.id AND ls.completed_derived = false ");
- sqlBuilder.append(
- "JOIN((SELECT ls.loan_id, ls.duedate as datedue FROM
m_loan_repayment_schedule ls WHERE ls.loan_id = ? and ls.completed_derived =
false ORDER BY ls.duedate LIMIT 1)) asq on asq.loan_id = ls.loan_id ");
- sqlBuilder.append("AND asq.datedue = ls.duedate ");
- sqlBuilder.append("WHERE l.id = ? LIMIT 1");
- return sqlBuilder.toString();
+ return " GREATEST(loan_transaction.transaction_date, ls.dueDate)
as transactionDate,"
+ + " coalesce(ls.principal_amount, 0) -
coalesce(ls.principal_writtenoff_derived, 0) -
coalesce(ls.principal_completed_derived, 0) as principalDue,"
+ + " coalesce(ls.interest_amount, 0) -
coalesce(ls.interest_completed_derived, 0) -
coalesce(ls.interest_waived_derived, 0) -
coalesce(ls.interest_writtenoff_derived, 0) as interestDue,"
+ + " coalesce(ls.fee_charges_amount, 0) -
coalesce(ls.fee_charges_completed_derived, 0) -
coalesce(ls.fee_charges_writtenoff_derived, 0) -
coalesce(ls.fee_charges_waived_derived, 0) as feeDue,"
+ + " coalesce(ls.penalty_charges_amount, 0) -
coalesce(ls.penalty_charges_completed_derived, 0) -
coalesce(ls.penalty_charges_writtenoff_derived, 0) -
coalesce(ls.penalty_charges_waived_derived, 0) as penaltyDue,"
+ + " l.currency_code as currencyCode," + "
l.currency_digits as currencyDigits,"
+ + " l.currency_multiplesof as inMultiplesOf," + "
l.net_disbursal_amount as netDisbursalAmount," + " rc."
+ + sqlGenerator.escape("name") + " as currencyName," + "
rc.display_symbol as currencyDisplaySymbol,"
+ + " rc.internationalized_name_code as currencyNameCode" +
" FROM" + " m_loan l" + " JOIN m_currency rc on rc."
+ + sqlGenerator.escape("code") + " = l.currency_code"
+ + " JOIN m_loan_repayment_schedule ls ON ls.loan_id = l.id
AND (l.loan_status_id >= 600 OR ls.completed_derived = false)"
Review Comment:
I think it would be easier to remove:
`(l.loan_status_id >= 600 OR ls.completed_derived = false)`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]