[FINERACT-1842] Wrong entityId is returned upon disbursing a loan

This commit is contained in:
taskain7
2023-01-10 00:56:50 -08:00
parent dafd4c3436
commit 8e597e46f7
3 changed files with 14 additions and 13 deletions
@@ -506,23 +506,24 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
businessEventNotifierService.notifyPostBusinessEvent(new LoanDisbursalBusinessEvent(loan)); businessEventNotifierService.notifyPostBusinessEvent(new LoanDisbursalBusinessEvent(loan));
Long entityId = loan.getId(); Long disbursalTransactionId = null;
ExternalId externalId = loan.getExternalId(); ExternalId disbursalTransactionExternalId = null;
// During a disbursement, the entityId should be the disbursement transaction id
if (!isAccountTransfer) { if (!isAccountTransfer) {
// If accounting is not periodic accrual, the last transaction might be the accrual not the disbursement // If accounting is not periodic accrual, the last transaction might be the accrual not the disbursement
LoanTransaction disbursalTransaction = Lists.reverse(loan.getLoanTransactions()).stream() LoanTransaction disbursalTransaction = Lists.reverse(loan.getLoanTransactions()).stream()
.filter(e -> LoanTransactionType.DISBURSEMENT.equals(e.getTypeOf())).findFirst().orElseThrow(); .filter(e -> LoanTransactionType.DISBURSEMENT.equals(e.getTypeOf())).findFirst().orElseThrow();
entityId = disbursalTransaction.getId(); disbursalTransactionId = disbursalTransaction.getId();
externalId = disbursalTransaction.getExternalId(); disbursalTransactionExternalId = disbursalTransaction.getExternalId();
businessEventNotifierService.notifyPostBusinessEvent(new LoanDisbursalTransactionBusinessEvent(disbursalTransaction)); businessEventNotifierService.notifyPostBusinessEvent(new LoanDisbursalTransactionBusinessEvent(disbursalTransaction));
} }
return new CommandProcessingResultBuilder() // return new CommandProcessingResultBuilder() //
.withCommandId(command.commandId()) // .withCommandId(command.commandId()) //
.withEntityId(entityId) // .withEntityId(loan.getId()) //
.withEntityExternalId(externalId) // .withEntityExternalId(loan.getExternalId()) //
.withSubEntityId(disbursalTransactionId) //
.withSubEntityExternalId(disbursalTransactionExternalId) //
.withOfficeId(loan.getOfficeId()) // .withOfficeId(loan.getOfficeId()) //
.withClientId(loan.getClientId()) // .withClientId(loan.getClientId()) //
.withGroupId(loan.getGroupId()) // .withGroupId(loan.getGroupId()) //
@@ -1034,7 +1034,7 @@ public class BatchApiTest {
final BatchRequest batchRequest3 = BatchHelper.disburseLoanRequest(disburseLoanRequestId, approveLoanRequestId); final BatchRequest batchRequest3 = BatchHelper.disburseLoanRequest(disburseLoanRequestId, approveLoanRequestId);
// Create a getTransaction Request // 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); final List<BatchRequest> batchRequests = Arrays.asList(batchRequest1, batchRequest2, batchRequest3, batchRequest4);
@@ -140,7 +140,7 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
final HashMap disbursedLoanResult = this.loanTransactionHelper.disburseLoan("03 September 2022", loanId, "1000", txnExternalIdStr); final HashMap disbursedLoanResult = this.loanTransactionHelper.disburseLoan("03 September 2022", loanId, "1000", txnExternalIdStr);
// Check whether the provided external id was retrieved // 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); LocalDate targetDate = LocalDate.of(2022, 9, 7);
final String penaltyCharge1AddedDate = dateFormatter.format(targetDate); final String penaltyCharge1AddedDate = dateFormatter.format(targetDate);
@@ -523,7 +523,7 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
final HashMap disbursedLoanWithInterestResult = this.loanTransactionHelper.disburseLoan(formattedDate, loanWithInterestId, "1000", final HashMap disbursedLoanWithInterestResult = this.loanTransactionHelper.disburseLoan(formattedDate, loanWithInterestId, "1000",
null); null);
// Check whether an external id was generated // Check whether an external id was generated
assertNotNull(disbursedLoanWithInterestResult.get("resourceExternalId")); assertNotNull(disbursedLoanWithInterestResult.get("subResourceExternalId"));
LocalDate aMonthBeforePlus3Days = aMonthBefore.plusDays(3); LocalDate aMonthBeforePlus3Days = aMonthBefore.plusDays(3);
formattedDate = dateFormatter.format(aMonthBeforePlus3Days); 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); final HashMap disbursedLoanResult = this.loanTransactionHelper.disburseLoan("03 September 2022", loanId, "1000", txnExternalIdStr);
// Check whether the provided external id was retrieved // Check whether the provided external id was retrieved
assertEquals(txnExternalIdStr, disbursedLoanResult.get("resourceExternalId")); assertEquals(txnExternalIdStr, disbursedLoanResult.get("subResourceExternalId"));
// Second loan // Second loan
final HashMap loan2 = applyForLoanApplication(client.getClientId().intValue(), loanProductID, null); final HashMap loan2 = applyForLoanApplication(client.getClientId().intValue(), loanProductID, null);
@@ -906,14 +906,14 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
txnExternalIdStr); txnExternalIdStr);
// Check whether the provided external id was retrieved // Check whether the provided external id was retrieved
assertEquals(txnExternalIdStr, disbursedLoanResult.get("resourceExternalId")); assertEquals(txnExternalIdStr, disbursedLoanResult.get("subResourceExternalId"));
String txnExternalIdStr2 = UUID.randomUUID().toString(); String txnExternalIdStr2 = UUID.randomUUID().toString();
final HashMap disbursedLoanResult2 = this.loanTransactionHelper.disburseLoan("04 September 2022", loanId, "1000", final HashMap disbursedLoanResult2 = this.loanTransactionHelper.disburseLoan("04 September 2022", loanId, "1000",
txnExternalIdStr2); txnExternalIdStr2);
// Check whether the provided external id was retrieved // Check whether the provided external id was retrieved
assertEquals(txnExternalIdStr2, disbursedLoanResult2.get("resourceExternalId")); assertEquals(txnExternalIdStr2, disbursedLoanResult2.get("subResourceExternalId"));
PutLoansLoanIdResponse markLoanAsFraudResult = this.loanTransactionHelper.modifyLoanApplication(loanExternalIdStr, PutLoansLoanIdResponse markLoanAsFraudResult = this.loanTransactionHelper.modifyLoanApplication(loanExternalIdStr,
"markAsFraud", new PutLoansLoanIdRequest().fraud(true)); "markAsFraud", new PutLoansLoanIdRequest().fraud(true));