FINERACT-2020:Added currency field to LoanAccountSummaryData, also added integration test and swagger documentation

This commit is contained in:
Udo Bassey
2024-04-09 20:07:47 +02:00
committed by Adam Saghy
parent 4c503fff0d
commit cf65d81ccc
4 changed files with 192 additions and 3 deletions
@@ -22,6 +22,7 @@ import java.math.BigDecimal;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
import org.apache.fineract.organisation.monetary.data.CurrencyData;
import org.apache.fineract.portfolio.loanaccount.data.LoanApplicationTimelineData;
import org.apache.fineract.portfolio.loanaccount.data.LoanStatusEnumData;
@@ -40,6 +41,7 @@ public class LoanAccountSummaryData {
private final String productName;
private final String shortProductName;
private final LoanStatusEnumData status;
private final CurrencyData currency;
private final EnumOptionData loanType;
private final Integer loanCycle;
private final LoanApplicationTimelineData timeline;
@@ -50,8 +52,8 @@ public class LoanAccountSummaryData {
public LoanAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId,
final String loanProductName, final String shortLoanProductName, final LoanStatusEnumData loanStatus,
final EnumOptionData loanType, final Integer loanCycle, final LoanApplicationTimelineData timeline, final Boolean inArrears,
final BigDecimal originalLoan, final BigDecimal loanBalance, final BigDecimal amountPaid) {
final CurrencyData currency, final EnumOptionData loanType, final Integer loanCycle, final LoanApplicationTimelineData timeline,
final Boolean inArrears, final BigDecimal originalLoan, final BigDecimal loanBalance, final BigDecimal amountPaid) {
this.id = id;
this.accountNo = accountNo;
this.parentAccountNumber = null;
@@ -60,6 +62,7 @@ public class LoanAccountSummaryData {
this.productName = loanProductName;
this.shortProductName = shortLoanProductName;
this.status = loanStatus;
this.currency = currency;
this.loanType = loanType;
this.loanCycle = loanCycle;
this.timeline = timeline;
@@ -452,6 +452,11 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
.append(" l.loan_product_counter as loanCycle,")
.append("l.currency_code as currencyCode, l.currency_digits as currencyDigits, l.currency_multiplesof as inMultiplesOf,")
.append("curr.name as currencyName, curr.internationalized_name_code as currencyNameCode,")
.append("curr.display_symbol as currencyDisplaySymbol,")
.append(" l.submittedon_date as submittedOnDate,")
.append(" sbu.username as submittedByUsername, sbu.firstname as submittedByFirstname, sbu.lastname as submittedByLastname,")
@@ -474,6 +479,7 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
.append(" l.charged_off_on_date as chargedOffOnDate, cobu.username as chargedOffByUsername, ")
.append(" cobu.firstname as chargedOffByFirstname, cobu.lastname as chargedOffByLastname ").append(" from m_loan l ")
.append("LEFT JOIN m_product_loan AS lp ON lp.id = l.product_id")
.append(" left join m_currency curr on curr.code = l.currency_code")
.append(" left join m_appuser sbu on sbu.id = l.created_by")
.append(" left join m_appuser rbu on rbu.id = l.rejectedon_userid")
.append(" left join m_appuser wbu on wbu.id = l.withdrawnon_userid")
@@ -503,6 +509,15 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
final EnumOptionData loanType = AccountEnumerations.loanType(loanTypeId);
final Integer loanCycle = JdbcSupport.getInteger(rs, "loanCycle");
final String currencyCode = rs.getString("currencyCode");
final String currencyName = rs.getString("currencyName");
final String currencyNameCode = rs.getString("currencyNameCode");
final String currencyDisplaySymbol = rs.getString("currencyDisplaySymbol");
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
final Integer inMultiplesOf = JdbcSupport.getInteger(rs, "inMultiplesOf");
final CurrencyData currency = new CurrencyData(currencyCode, currencyName, currencyDigits, inMultiplesOf, currencyDisplaySymbol,
currencyNameCode);
final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate");
final String submittedByUsername = rs.getString("submittedByUsername");
final String submittedByFirstname = rs.getString("submittedByFirstname");
@@ -561,7 +576,8 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
chargedOffOnDate, chargedOffByUsername, chargedOffByFirstname, chargedOffByLastname);
return new LoanAccountSummaryData(id, accountNo, parentAccountNumber, externalId, productId, loanProductName,
shortLoanProductName, loanStatus, loanType, loanCycle, timeline, inArrears, originalLoan, loanBalance, amountPaid);
shortLoanProductName, loanStatus, currency, loanType, loanCycle, timeline, inArrears, originalLoan, loanBalance,
amountPaid);
}
}
@@ -470,6 +470,24 @@ final class ClientsApiResourceSwagger {
private GetClientsLoanAccounts() {}
static final class GetClientsLoansAccountsCurrency {
private GetClientsLoansAccountsCurrency() {}
@Schema(example = "USD")
public String code;
@Schema(example = "US Dollar")
public String name;
@Schema(example = "2")
public Integer decimalPlaces;
@Schema(example = "$")
public String displaySymbol;
@Schema(example = "currency.USD")
public String nameCode;
@Schema(example = "US Dollar ($)")
public String displayLabel;
}
static final class GetClientsLoanAccountsStatus {
private GetClientsLoanAccountsStatus() {}
@@ -520,6 +538,7 @@ final class ClientsApiResourceSwagger {
public Long productId;
@Schema(example = "TestOne")
public String productName;
public GetClientsLoansAccountsCurrency currency;
public GetClientsLoanAccountsStatus status;
public GetClientsLoanAccountsType loanType;
@Schema(example = "1")