This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 9ba17bf79a FINERACT-2326: Delinquent section in loan details using 
associations
9ba17bf79a is described below

commit 9ba17bf79a284c9c9ebf480240bc92fc450b43c2
Author: Jose Alberto Hernandez <[email protected]>
AuthorDate: Fri Aug 29 22:29:22 2025 -0500

    FINERACT-2326: Delinquent section in loan details using associations
---
 .../test/messaging/event/EventCheckHelper.java         |  2 +-
 .../test/stepdef/loan/LoanDelinquencyStepDef.java      | 18 +++++++++---------
 .../apache/fineract/test/stepdef/loan/LoanStepDef.java |  4 ++--
 .../portfolio/loanaccount/api/LoansApiResource.java    |  7 ++++++-
 4 files changed, 18 insertions(+), 13 deletions(-)

diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
index 7109585595..ec1e1fcef8 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
@@ -499,7 +499,7 @@ public class EventCheckHelper {
     }
 
     public void loanAccountDelinquencyPauseChangedBusinessEventCheck(Long 
loanId) throws IOException {
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "all", "", "").execute();
         List<GetLoansLoanIdDelinquencyPausePeriod> 
delinquencyPausePeriodsActual = loanDetails.body().getDelinquent()
                 .getDelinquencyPausePeriods();
 
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanDelinquencyStepDef.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanDelinquencyStepDef.java
index 504633f829..65d186c6e3 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanDelinquencyStepDef.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanDelinquencyStepDef.java
@@ -94,7 +94,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef {
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
         Integer loanStatus = loanDetails.body().getStatus().getId();
 
@@ -517,7 +517,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
         List<GetLoansLoanIdLoanInstallmentLevelDelinquency> 
installmentLevelDelinquency = loanDetails.body().getDelinquent()
                 .getInstallmentLevelDelinquency() == null ? null : 
loanDetails.body().getDelinquent().getInstallmentLevelDelinquency();
@@ -534,7 +534,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         String expectedDelinquencyRangeValue = 
expectedDelinquencyRange.getValue();
         expectedValuesList.set(0, expectedDelinquencyRangeValue);
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
         String actualDelinquencyRangeValue = 
loanDetails.body().getDelinquencyRange() == null ? "NO_DELINQUENCY"
                 : loanDetails.body().getDelinquencyRange().getClassification();
@@ -559,7 +559,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         String expectedDelinquencyRangeValue = 
expectedDelinquencyRange.getValue();
         expectedValuesList.set(0, expectedDelinquencyRangeValue);
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
 
         String actualDelinquencyRangeValue = 
loanDetails.body().getDelinquencyRange() == null ? "NO_DELINQUENCY"
@@ -581,7 +581,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
         List<GetLoansLoanIdLoanInstallmentLevelDelinquency> 
installmentLevelDelinquency = loanDetails.body().getDelinquent()
                 .getInstallmentLevelDelinquency();
@@ -612,7 +612,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         long loanId = loanResponse.body().getLoanId();
 
         List<List<String>> expectedData = table.asLists();
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
 
         List<GetLoansLoanIdDelinquencyPausePeriod> delinquencyPausePeriods = 
loanDetails.body().getDelinquent()
@@ -639,7 +639,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
         String actualDate = 
FORMATTER.format(loanDetails.body().getDelinquent().getNextPaymentDueDate());
 
@@ -669,7 +669,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         DelinquencyRangeData delinquencyRange = 
loanDetails.body().getDelinquencyRange();
         GetLoansLoanIdDelinquencySummary delinquent = 
loanDetails.body().getDelinquent();
 
@@ -741,7 +741,7 @@ public class LoanDelinquencyStepDef extends AbstractStepDef 
{
         Response<PostLoansResponse> loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
 
         Double expectedLastRepaymentAmount1 = 
Double.valueOf(expectedLastRepaymentAmount);
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
index 9b715b1d8d..9193440837 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
@@ -2210,7 +2210,7 @@ public class LoanStepDef extends AbstractStepDef {
         Response<PostLoansResponse> loanCreateResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanCreateResponse.body().getLoanId();
 
-        Response<GetLoansLoanIdResponse> loanDetailsResponse = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        Response<GetLoansLoanIdResponse> loanDetailsResponse = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse);
         testContext().set(TestContextKey.LOAN_RESPONSE, loanDetailsResponse);
 
@@ -3299,7 +3299,7 @@ public class LoanStepDef extends AbstractStepDef {
         assert loanResponse.body() != null;
         final long loanId = loanResponse.body().getLoanId();
 
-        final Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "", "", "").execute();
+        final Response<GetLoansLoanIdResponse> loanDetails = 
loansApi.retrieveLoan(loanId, false, "collection", "", "").execute();
         ErrorHelper.checkSuccessfulApiCall(loanDetails);
 
         assert loanDetails.body() != null;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java
index 5861a8d7ab..7e9ca5252c 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoansApiResource.java
@@ -1037,7 +1037,7 @@ public class LoansApiResource {
         List<LoanTermVariationsData> loanTermVariations = null;
         Collection<LoanCollateralResponseData> loanCollateralManagements;
         Collection<LoanCollateralManagementData> loanCollateralManagementData 
= new ArrayList<>();
-        CollectionData collectionData = 
this.delinquencyReadPlatformService.calculateLoanCollectionData(resolvedLoanId);
+        CollectionData collectionData = null;
 
         final Set<String> mandatoryResponseParameters = new HashSet<>();
         final Set<String> associationParameters = 
ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters());
@@ -1062,6 +1062,11 @@ public class LoansApiResource {
                 }
             }
 
+            if 
(associationParameters.contains(DataTableApiConstant.collectionAssociateParamName))
 {
+                
mandatoryResponseParameters.add(DataTableApiConstant.collectionAssociateParamName);
+                collectionData = 
this.delinquencyReadPlatformService.calculateLoanCollectionData(resolvedLoanId);
+            }
+
             if 
(associationParameters.contains(DataTableApiConstant.transactionsAssociateParamName))
 {
                 
mandatoryResponseParameters.add(DataTableApiConstant.transactionsAssociateParamName);
                 loanRepayments = 
this.loanReadPlatformService.retrieveLoanTransactions(resolvedLoanId);

Reply via email to