FINERACT-1891 - Overdue calculation fix
- [x] Arrears event not called fix - [x] Integration test
This commit is contained in:
committed by
Arnold Gálovics
parent
5a1c3babcc
commit
89deb6d3b8
+26
@@ -42,7 +42,9 @@ import org.apache.fineract.infrastructure.event.business.domain.loan.charge.Loan
|
|||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanChargePaymentPostBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanChargePaymentPostBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanForeClosurePostBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanForeClosurePostBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanRefundPostBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanRefundPostBusinessEvent;
|
||||||
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanTransactionGoodwillCreditPostBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanTransactionMakeRepaymentPostBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanTransactionMakeRepaymentPostBusinessEvent;
|
||||||
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanTransactionPayoutRefundPostBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanUndoWrittenOffBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanUndoWrittenOffBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanWaiveInterestBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.transaction.LoanWaiveInterestBusinessEvent;
|
||||||
import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
|
import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
|
||||||
@@ -75,6 +77,10 @@ public class LoanArrearsAgingServiceImpl implements LoanArrearsAgingService {
|
|||||||
new AdjustTransactionBusinessEventEventListener());
|
new AdjustTransactionBusinessEventEventListener());
|
||||||
businessEventNotifierService.addPostBusinessEventListener(LoanTransactionMakeRepaymentPostBusinessEvent.class,
|
businessEventNotifierService.addPostBusinessEventListener(LoanTransactionMakeRepaymentPostBusinessEvent.class,
|
||||||
new MakeRepaymentEventListener());
|
new MakeRepaymentEventListener());
|
||||||
|
businessEventNotifierService.addPostBusinessEventListener(LoanTransactionGoodwillCreditPostBusinessEvent.class,
|
||||||
|
new GoodwillCreditEventListener());
|
||||||
|
businessEventNotifierService.addPostBusinessEventListener(LoanTransactionPayoutRefundPostBusinessEvent.class,
|
||||||
|
new PaymentRefundEventListener());
|
||||||
businessEventNotifierService.addPostBusinessEventListener(LoanUndoWrittenOffBusinessEvent.class, new UndoWrittenOffEventListener());
|
businessEventNotifierService.addPostBusinessEventListener(LoanUndoWrittenOffBusinessEvent.class, new UndoWrittenOffEventListener());
|
||||||
businessEventNotifierService.addPostBusinessEventListener(LoanWaiveInterestBusinessEvent.class, new WaiveInterestEventListener());
|
businessEventNotifierService.addPostBusinessEventListener(LoanWaiveInterestBusinessEvent.class, new WaiveInterestEventListener());
|
||||||
businessEventNotifierService.addPostBusinessEventListener(LoanAddChargeBusinessEvent.class, new AddChargeEventListener());
|
businessEventNotifierService.addPostBusinessEventListener(LoanAddChargeBusinessEvent.class, new AddChargeEventListener());
|
||||||
@@ -497,4 +503,24 @@ public class LoanArrearsAgingServiceImpl implements LoanArrearsAgingService {
|
|||||||
updateLoanArrearsAgeingDetails(loan);
|
updateLoanArrearsAgeingDetails(loan);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class GoodwillCreditEventListener implements BusinessEventListener<LoanTransactionGoodwillCreditPostBusinessEvent> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBusinessEvent(LoanTransactionGoodwillCreditPostBusinessEvent event) {
|
||||||
|
LoanTransaction loanTransaction = event.get();
|
||||||
|
Loan loan = loanTransaction.getLoan();
|
||||||
|
handleArrearsForLoan(loan);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PaymentRefundEventListener implements BusinessEventListener<LoanTransactionPayoutRefundPostBusinessEvent> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBusinessEvent(LoanTransactionPayoutRefundPostBusinessEvent event) {
|
||||||
|
LoanTransaction loanTransaction = event.get();
|
||||||
|
Loan loan = loanTransaction.getLoan();
|
||||||
|
handleArrearsForLoan(loan);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+39
@@ -27,6 +27,7 @@ import io.restassured.specification.RequestSpecification;
|
|||||||
import io.restassured.specification.ResponseSpecification;
|
import io.restassured.specification.ResponseSpecification;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
|
||||||
import org.apache.fineract.client.models.PostLoansLoanIdTransactionsResponse;
|
import org.apache.fineract.client.models.PostLoansLoanIdTransactionsResponse;
|
||||||
import org.apache.fineract.integrationtests.common.ClientHelper;
|
import org.apache.fineract.integrationtests.common.ClientHelper;
|
||||||
import org.apache.fineract.integrationtests.common.CommonConstants;
|
import org.apache.fineract.integrationtests.common.CommonConstants;
|
||||||
@@ -387,6 +388,44 @@ public class ClientLoanCreditBalanceRefundandRepaymentTypeIntegrationTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void goodWillCreditWillCloseTheLoanCorrectly() {
|
||||||
|
|
||||||
|
disburseLoanOfAccountingRule(ACCRUAL_PERIODIC);
|
||||||
|
HashMap loanSummaryMap = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, disbursedLoanID);
|
||||||
|
|
||||||
|
// pay off all of principal, interest (no fees or penalties)
|
||||||
|
final Float totalOutstanding = (Float) loanSummaryMap.get("totalOutstanding");
|
||||||
|
final Float goodwillAmount = totalOutstanding;
|
||||||
|
final String goodwillDate = "09 March 2022";
|
||||||
|
HashMap loanStatusHashMap = (HashMap) this.loanTransactionHelper.makeRepaymentTypePayment(GOODWILL_CREDIT, goodwillDate,
|
||||||
|
goodwillAmount, this.disbursedLoanID, "");
|
||||||
|
|
||||||
|
GetLoansLoanIdResponse details = this.loanTransactionHelper.getLoan(this.requestSpec, this.responseSpec, disbursedLoanID);
|
||||||
|
|
||||||
|
Assertions.assertNull(details.getSummary().getInArrears());
|
||||||
|
Assertions.assertTrue(details.getStatus().getClosedObligationsMet());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void paymentRefundWillCloseTheLoanCorrectly() {
|
||||||
|
|
||||||
|
disburseLoanOfAccountingRule(ACCRUAL_PERIODIC);
|
||||||
|
HashMap loanSummaryMap = this.loanTransactionHelper.getLoanSummary(this.requestSpec, this.responseSpec, disbursedLoanID);
|
||||||
|
|
||||||
|
// pay off all of principal, interest (no fees or penalties)
|
||||||
|
final Float totalOutstanding = (Float) loanSummaryMap.get("totalOutstanding");
|
||||||
|
final Float goodwillAmount = totalOutstanding;
|
||||||
|
final String goodwillDate = "09 March 2022";
|
||||||
|
HashMap loanStatusHashMap = (HashMap) this.loanTransactionHelper.makeRepaymentTypePayment(PAYOUT_REFUND, goodwillDate,
|
||||||
|
goodwillAmount, this.disbursedLoanID, "");
|
||||||
|
|
||||||
|
GetLoansLoanIdResponse details = this.loanTransactionHelper.getLoan(this.requestSpec, this.responseSpec, disbursedLoanID);
|
||||||
|
|
||||||
|
Assertions.assertNull(details.getSummary().getInArrears());
|
||||||
|
Assertions.assertTrue(details.getStatus().getClosedObligationsMet());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void newGoodwillCreditCreatesCorrectJournalEntriesForPeriodicAccrualsTest() {
|
public void newGoodwillCreditCreatesCorrectJournalEntriesForPeriodicAccrualsTest() {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user