FINERACT-2142: Journal entries are created for accrual disbursement fees

This commit is contained in:
Arnold Galovics
2024-10-18 20:13:10 +02:00
committed by Arnold Gálovics
parent 66f5633ed8
commit 482983f23d
6 changed files with 14 additions and 52 deletions
@@ -650,7 +650,8 @@ public abstract class BaseLoanIntegrationTest {
// not all journal entries have been validated - since there might be duplicates
protected void verifyJournalEntries(Long loanId, Journal... entries) {
GetJournalEntriesTransactionIdResponse journalEntriesForLoan = journalEntryHelper.getJournalEntriesForLoan(loanId);
Assertions.assertEquals(entries.length, journalEntriesForLoan.getPageItems().size());
Assertions.assertEquals(entries.length, journalEntriesForLoan.getPageItems().size(),
"Actual is: " + lineSeparator() + journalEntriesForLoan.getPageItems().toString());
Arrays.stream(entries).forEach(journalEntry -> {
boolean found = journalEntriesForLoan.getPageItems().stream()
.anyMatch(item -> Objects.equals(item.getAmount(), journalEntry.amount)
@@ -48,7 +48,6 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -2617,7 +2616,6 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
ArrayList<HashMap> loanTransactionDetails = LOAN_TRANSACTION_HELPER.getLoanTransactionDetails(REQUEST_SPEC, RESPONSE_SPEC,
loanID);
validateAccrualTransactionForDisbursementCharge(loanTransactionDetails);
final JournalEntry[] assetAccountInitialEntry = {
new JournalEntry(Float.parseFloat("120.00"), JournalEntry.TransactionType.DEBIT),
new JournalEntry(Float.parseFloat("12000.00"), JournalEntry.TransactionType.CREDIT),
@@ -7600,17 +7598,6 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
}
private void validateAccrualTransactionForDisbursementCharge(ArrayList<HashMap> loanTransactionDetails) {
List<HashMap> disbursementTransactions = loanTransactionDetails.stream()
.filter(transactionDetail -> (Boolean) ((LinkedHashMap) transactionDetail.get("type")).get("repaymentAtDisbursement"))
.toList();
List<HashMap> accrualTransactions = loanTransactionDetails.stream()
.filter(transactionDetail -> (Boolean) ((LinkedHashMap) transactionDetail.get("type")).get("accrual")).toList();
assertEquals(disbursementTransactions.size(), accrualTransactions.size(), 1);
assertEquals((Float) disbursementTransactions.get(0).get("amount"), (Float) accrualTransactions.get(0).get("amount"));
assertTrue(StringUtils.isNotBlank((String) accrualTransactions.get(0).get("externalId")));
}
private void addRepaymentValues(List<Map<String, Object>> expectedvalues, Calendar todaysDate, int addPeriod, boolean isAddDays,
String principalDue, String interestDue, String feeChargesDue, String penaltyChargesDue) {
Map<String, Object> values = new HashMap<>(3);
@@ -102,9 +102,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
// verify transactions
verifyTransactions(loanId, //
transaction(1000.0, "Disbursement", "01 January 2023"), //
transaction(25.0, "Repayment (at time of disbursement)", "01 January 2023"), //
transaction(10.0, "Accrual", "01 January 2023"), //
transaction(15.0, "Accrual", "01 January 2023") //
transaction(25.0, "Repayment (at time of disbursement)", "01 January 2023") //
);
// verify journal entries
@@ -112,11 +110,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
journalEntry(1000.0, loansReceivableAccount, "DEBIT"), //
journalEntry(1000.0, fundSource, "CREDIT"), //
journalEntry(25.0, feeIncomeAccount, "CREDIT"), //
journalEntry(25.0, fundSource, "DEBIT"), //
journalEntry(10.0, feeReceivableAccount, "DEBIT"), //
journalEntry(10.0, feeIncomeAccount, "CREDIT"), //
journalEntry(15.0, feeReceivableAccount, "DEBIT"), //
journalEntry(15.0, feeIncomeAccount, "CREDIT") //
journalEntry(25.0, fundSource, "DEBIT") //
);
// repay 500
@@ -128,6 +122,16 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
transaction(25.0, "Repayment (at time of disbursement)", "01 January 2023"), //
transaction(500.0, "Repayment", "01 January 2023") //
);
// verify journal entries
verifyJournalEntries(loanId, //
journalEntry(1000.0, loansReceivableAccount, "DEBIT"), //
journalEntry(1000.0, fundSource, "CREDIT"), //
journalEntry(25.0, feeIncomeAccount, "CREDIT"), //
journalEntry(25.0, fundSource, "DEBIT"), //
journalEntry(500.0, loansReceivableAccount, "CREDIT"), //
journalEntry(500.0, fundSource, "DEBIT") //
);
});
}
}