This is an automated email from the ASF dual-hosted git repository.
taskain 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 8e597e46f [FINERACT-1842] Wrong entityId is returned upon disbursing a
loan
8e597e46f is described below
commit 8e597e46f745f28b65152f9ede9d4e11a3c0fc61
Author: taskain7 <[email protected]>
AuthorDate: Mon Jan 9 11:34:03 2023 +0100
[FINERACT-1842] Wrong entityId is returned upon disbursing a loan
---
.../LoanWritePlatformServiceJpaRepositoryImpl.java | 15 ++++++++-------
.../apache/fineract/integrationtests/BatchApiTest.java | 2 +-
.../ExternalIdSupportIntegrationTest.java | 10 +++++-----
3 files changed, 14 insertions(+), 13 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
index 5ec677d5f..539a50d9f 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
@@ -506,23 +506,24 @@ public class LoanWritePlatformServiceJpaRepositoryImpl
implements LoanWritePlatf
businessEventNotifierService.notifyPostBusinessEvent(new
LoanDisbursalBusinessEvent(loan));
- Long entityId = loan.getId();
- ExternalId externalId = loan.getExternalId();
+ Long disbursalTransactionId = null;
+ ExternalId disbursalTransactionExternalId = null;
- // During a disbursement, the entityId should be the disbursement
transaction id
if (!isAccountTransfer) {
// If accounting is not periodic accrual, the last transaction
might be the accrual not the disbursement
LoanTransaction disbursalTransaction =
Lists.reverse(loan.getLoanTransactions()).stream()
.filter(e ->
LoanTransactionType.DISBURSEMENT.equals(e.getTypeOf())).findFirst().orElseThrow();
- entityId = disbursalTransaction.getId();
- externalId = disbursalTransaction.getExternalId();
+ disbursalTransactionId = disbursalTransaction.getId();
+ disbursalTransactionExternalId =
disbursalTransaction.getExternalId();
businessEventNotifierService.notifyPostBusinessEvent(new
LoanDisbursalTransactionBusinessEvent(disbursalTransaction));
}
return new CommandProcessingResultBuilder() //
.withCommandId(command.commandId()) //
- .withEntityId(entityId) //
- .withEntityExternalId(externalId) //
+ .withEntityId(loan.getId()) //
+ .withEntityExternalId(loan.getExternalId()) //
+ .withSubEntityId(disbursalTransactionId) //
+ .withSubEntityExternalId(disbursalTransactionExternalId) //
.withOfficeId(loan.getOfficeId()) //
.withClientId(loan.getClientId()) //
.withGroupId(loan.getGroupId()) //
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java
index 7b2ca1f65..ed9a788d8 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BatchApiTest.java
@@ -1034,7 +1034,7 @@ public class BatchApiTest {
final BatchRequest batchRequest3 =
BatchHelper.disburseLoanRequest(disburseLoanRequestId, approveLoanRequestId);
// Create a getTransaction Request
- final BatchRequest batchRequest4 =
BatchHelper.getTransactionByIdRequest(getTransactionRequestId,
disburseLoanRequestId, false);
+ final BatchRequest batchRequest4 =
BatchHelper.getTransactionByIdRequest(getTransactionRequestId,
disburseLoanRequestId, true);
final List<BatchRequest> batchRequests = Arrays.asList(batchRequest1,
batchRequest2, batchRequest3, batchRequest4);
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
index aca122f19..fefb1898a 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
@@ -140,7 +140,7 @@ public class ExternalIdSupportIntegrationTest extends
IntegrationTest {
final HashMap disbursedLoanResult =
this.loanTransactionHelper.disburseLoan("03 September 2022", loanId, "1000",
txnExternalIdStr);
// Check whether the provided external id was retrieved
- assertEquals(txnExternalIdStr,
disbursedLoanResult.get("resourceExternalId"));
+ assertEquals(txnExternalIdStr,
disbursedLoanResult.get("subResourceExternalId"));
LocalDate targetDate = LocalDate.of(2022, 9, 7);
final String penaltyCharge1AddedDate =
dateFormatter.format(targetDate);
@@ -523,7 +523,7 @@ public class ExternalIdSupportIntegrationTest extends
IntegrationTest {
final HashMap disbursedLoanWithInterestResult =
this.loanTransactionHelper.disburseLoan(formattedDate, loanWithInterestId,
"1000",
null);
// Check whether an external id was generated
-
assertNotNull(disbursedLoanWithInterestResult.get("resourceExternalId"));
+
assertNotNull(disbursedLoanWithInterestResult.get("subResourceExternalId"));
LocalDate aMonthBeforePlus3Days = aMonthBefore.plusDays(3);
formattedDate = dateFormatter.format(aMonthBeforePlus3Days);
@@ -718,7 +718,7 @@ public class ExternalIdSupportIntegrationTest extends
IntegrationTest {
final HashMap disbursedLoanResult =
this.loanTransactionHelper.disburseLoan("03 September 2022", loanId, "1000",
txnExternalIdStr);
// Check whether the provided external id was retrieved
- assertEquals(txnExternalIdStr,
disbursedLoanResult.get("resourceExternalId"));
+ assertEquals(txnExternalIdStr,
disbursedLoanResult.get("subResourceExternalId"));
// Second loan
final HashMap loan2 =
applyForLoanApplication(client.getClientId().intValue(), loanProductID, null);
@@ -906,14 +906,14 @@ public class ExternalIdSupportIntegrationTest extends
IntegrationTest {
txnExternalIdStr);
// Check whether the provided external id was retrieved
- assertEquals(txnExternalIdStr,
disbursedLoanResult.get("resourceExternalId"));
+ assertEquals(txnExternalIdStr,
disbursedLoanResult.get("subResourceExternalId"));
String txnExternalIdStr2 = UUID.randomUUID().toString();
final HashMap disbursedLoanResult2 =
this.loanTransactionHelper.disburseLoan("04 September 2022", loanId, "1000",
txnExternalIdStr2);
// Check whether the provided external id was retrieved
- assertEquals(txnExternalIdStr2,
disbursedLoanResult2.get("resourceExternalId"));
+ assertEquals(txnExternalIdStr2,
disbursedLoanResult2.get("subResourceExternalId"));
PutLoansLoanIdResponse markLoanAsFraudResult =
this.loanTransactionHelper.modifyLoanApplication(loanExternalIdStr,
"markAsFraud", new PutLoansLoanIdRequest().fraud(true));