FINERACT-2473: Add available balance to group accounts endpoint (#5468)

This commit is contained in:
Ralph Hopman
2026-02-14 16:15:34 -06:00
committed by GitHub
parent 0ea65d820d
commit 05662e64d5
4 changed files with 311 additions and 10 deletions
@@ -311,6 +311,8 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
accountsSummary.append("sa.id as id, sa.account_no as accountNo, sa.external_id as externalId, sa.status_enum as statusEnum, ");
accountsSummary.append("sa.account_type_enum as accountType, ");
accountsSummary.append("sa.account_balance_derived as accountBalance, ");
accountsSummary.append("sa.on_hold_funds_derived as onHoldFunds, ");
accountsSummary.append("sa.total_savings_amount_on_hold as onHoldAmount, ");
accountsSummary.append("sa.submittedon_date as submittedOnDate,");
accountsSummary.append("sbu.username as submittedByUsername,");
@@ -377,6 +379,18 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
final String shortProductName = rs.getString("shortProductName");
final Integer statusId = JdbcSupport.getInteger(rs, "statusEnum");
final BigDecimal accountBalance = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "accountBalance");
final BigDecimal onHoldFunds = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "onHoldFunds");
final BigDecimal onHoldAmount = JdbcSupport.getBigDecimalDefaultToNullIfZero(rs, "onHoldAmount");
BigDecimal availableBalance = accountBalance;
if (availableBalance != null && onHoldFunds != null) {
availableBalance = availableBalance.subtract(onHoldFunds);
}
if (availableBalance != null && onHoldAmount != null) {
availableBalance = availableBalance.subtract(onHoldAmount);
}
final SavingsAccountStatusEnumData status = SavingsEnumerations.status(statusId);
final Integer accountType = JdbcSupport.getInteger(rs, "accountType");
final EnumOptionData accountTypeData = AccountEnumerations.loanType(accountType);
@@ -433,7 +447,8 @@ public class AccountDetailsReadPlatformServiceJpaRepositoryImpl implements Accou
activatedByLastname, closedOnDate, closedByUsername, closedByFirstname, closedByLastname);
return new SavingsAccountSummaryData(id, accountNo, externalId, productId, productName, shortProductName, status, currency,
accountBalance, accountTypeData, timeline, depositTypeData, subStatus, lastActiveTransactionDate);
accountBalance, onHoldFunds, onHoldAmount, availableBalance, accountTypeData, timeline, depositTypeData, subStatus,
lastActiveTransactionDate);
}
}
@@ -415,6 +415,14 @@ final class GroupsApiResourceSwagger {
public String productName;
public GetGroupsGroupIdAccountsSavingStatus status;
public GetGroupsGroupIdAccountsSavingCurrency currency;
@Schema(example = "5000.00")
public java.math.BigDecimal accountBalance;
@Schema(example = "300.00")
public java.math.BigDecimal onHoldFunds;
@Schema(example = "200.00")
public java.math.BigDecimal savingsAmountOnHold;
@Schema(example = "4500.00")
public java.math.BigDecimal availableBalance;
public GetGroupsGroupIdAccountsSavingAccountType accountType;
}