diff --git a/fineract-investor/src/main/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStep.java b/fineract-investor/src/main/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStep.java index 634f0ed63..c629fd12f 100644 --- a/fineract-investor/src/main/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStep.java +++ b/fineract-investor/src/main/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStep.java @@ -95,7 +95,9 @@ public class LoanAccountOwnerTransferBusinessStep implements LoanCOBBusinessStep private void handleSale(final Loan loan, final LocalDate settlementDate, final ExternalAssetOwnerTransfer externalAssetOwnerTransfer) { ExternalAssetOwnerTransfer newExternalAssetOwnerTransfer = sellAsset(loan, settlementDate, externalAssetOwnerTransfer); businessEventNotifierService.notifyPostBusinessEvent(new LoanOwnershipTransferBusinessEvent(newExternalAssetOwnerTransfer, loan)); - businessEventNotifierService.notifyPostBusinessEvent(new LoanAccountSnapshotBusinessEvent(loan)); + if (!ExternalTransferStatus.DECLINED.equals(newExternalAssetOwnerTransfer.getStatus())) { + businessEventNotifierService.notifyPostBusinessEvent(new LoanAccountSnapshotBusinessEvent(loan)); + } } private void handleBuyback(final Loan loan, final LocalDate settlementDate, @@ -179,7 +181,6 @@ public class LoanAccountOwnerTransferBusinessStep implements LoanCOBBusinessStep ExternalAssetOwnerTransfer cancelledBuybackTransfer = cancelTransfer(settlementDate, transferDataList.get(1)); businessEventNotifierService.notifyPostBusinessEvent(new LoanOwnershipTransferBusinessEvent(cancelledPendingTransfer, loan)); businessEventNotifierService.notifyPostBusinessEvent(new LoanOwnershipTransferBusinessEvent(cancelledBuybackTransfer, loan)); - businessEventNotifierService.notifyPostBusinessEvent(new LoanAccountSnapshotBusinessEvent(loan)); } private ExternalAssetOwnerTransfer cancelTransfer(final LocalDate settlementDate, diff --git a/fineract-investor/src/test/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStepTest.java b/fineract-investor/src/test/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStepTest.java index 60cef35a5..bd1eab0fc 100644 --- a/fineract-investor/src/test/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStepTest.java +++ b/fineract-investor/src/test/java/org/apache/fineract/investor/cob/loan/LoanAccountOwnerTransferBusinessStepTest.java @@ -186,10 +186,9 @@ public class LoanAccountOwnerTransferBusinessStepTest { assertEquals(processedLoan, loanForProcessing); - ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(3); + ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(2); verifyLoanTransferBusinessEvent(businessEventArgumentCaptor, 0, loanForProcessing, secondSaveResult); verifyLoanTransferBusinessEvent(businessEventArgumentCaptor, 1, loanForProcessing, fourthSaveResult); - verifyLoanAccountSnapshotBusinessEvent(businessEventArgumentCaptor, 2, loanForProcessing); } @Test @@ -245,6 +244,7 @@ public class LoanAccountOwnerTransferBusinessStepTest { LoanSummary loanSummary = Mockito.mock(LoanSummary.class); when(loanForProcessing.getLoanSummary()).thenReturn(loanSummary); when(loanSummary.getTotalOutstanding()).thenReturn(BigDecimal.ONE); + when(newTransfer.getStatus()).thenReturn(ExternalTransferStatus.ACTIVE); // when final Loan processedLoan = underTest.execute(loanForProcessing); // then @@ -293,6 +293,7 @@ public class LoanAccountOwnerTransferBusinessStepTest { when(loanForProcessing.getLoanSummary()).thenReturn(loanSummary); when(loanSummary.getTotalOutstanding()).thenReturn(BigDecimal.ZERO); when(loanForProcessing.getTotalOverpaid()).thenReturn(BigDecimal.ZERO); + when(newTransfer.getStatus()).thenReturn(ExternalTransferStatus.DECLINED); // when final Loan processedLoan = underTest.execute(loanForProcessing); // then @@ -314,9 +315,8 @@ public class LoanAccountOwnerTransferBusinessStepTest { assertEquals(actualDate, externalAssetOwnerTransferArgumentCaptor.getAllValues().get(1).getEffectiveDateTo()); assertEquals(processedLoan, loanForProcessing); - ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(2); + ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(1); verifyLoanTransferBusinessEvent(businessEventArgumentCaptor, 0, loanForProcessing, newTransfer); - verifyLoanAccountSnapshotBusinessEvent(businessEventArgumentCaptor, 1, loanForProcessing); } @Test @@ -337,6 +337,7 @@ public class LoanAccountOwnerTransferBusinessStepTest { when(loanForProcessing.getLoanSummary()).thenReturn(loanSummary); when(loanSummary.getTotalOutstanding()).thenReturn(BigDecimal.ONE.negate()); when(loanForProcessing.getTotalOverpaid()).thenReturn(BigDecimal.ONE.negate()); + when(newTransfer.getStatus()).thenReturn(ExternalTransferStatus.DECLINED); // when final Loan processedLoan = underTest.execute(loanForProcessing); // then @@ -358,9 +359,8 @@ public class LoanAccountOwnerTransferBusinessStepTest { assertEquals(actualDate, externalAssetOwnerTransferArgumentCaptor.getAllValues().get(1).getEffectiveDateTo()); assertEquals(processedLoan, loanForProcessing); - ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(2); + ArgumentCaptor> businessEventArgumentCaptor = verifyBusinessEvents(1); verifyLoanTransferBusinessEvent(businessEventArgumentCaptor, 0, loanForProcessing, newTransfer); - verifyLoanAccountSnapshotBusinessEvent(businessEventArgumentCaptor, 1, loanForProcessing); } @Test