[FINERACT-1842] Wrong entityId is returned upon disbursing a loan
This commit is contained in:
+8
-7
@@ -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()) //
|
||||||
|
|||||||
+1
-1
@@ -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);
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user