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 fc9525f96 FINERACT-1926: Asset externalization of non-active loans
fc9525f96 is described below
commit fc9525f966a3c769abd6c6f1bcd3a4f6d1aed26a
Author: Adam Saghy <[email protected]>
AuthorDate: Tue Jul 25 12:44:28 2023 +0200
FINERACT-1926: Asset externalization of non-active loans
---
.../investor/data/ExternalTransferSubStatus.java | 2 +-
.../LoanAccountOwnerTransferServiceImpl.java | 32 ++++++++++------------
.../InitiateExternalAssetOwnerTransferTest.java | 5 ++--
3 files changed, 19 insertions(+), 20 deletions(-)
diff --git
a/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferSubStatus.java
b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferSubStatus.java
index 7899b49a8..76743d866 100644
---
a/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferSubStatus.java
+++
b/fineract-investor/src/main/java/org/apache/fineract/investor/data/ExternalTransferSubStatus.java
@@ -19,5 +19,5 @@
package org.apache.fineract.investor.data;
public enum ExternalTransferSubStatus {
- BALANCE_ZERO, BALANCE_NEGATIVE, SAMEDAY_TRANSFERS, USER_REQUESTED
+ BALANCE_ZERO, BALANCE_NEGATIVE, SAMEDAY_TRANSFERS, USER_REQUESTED, UNSOLD
}
diff --git
a/fineract-investor/src/main/java/org/apache/fineract/investor/service/LoanAccountOwnerTransferServiceImpl.java
b/fineract-investor/src/main/java/org/apache/fineract/investor/service/LoanAccountOwnerTransferServiceImpl.java
index b87625126..69aa5da5a 100644
---
a/fineract-investor/src/main/java/org/apache/fineract/investor/service/LoanAccountOwnerTransferServiceImpl.java
+++
b/fineract-investor/src/main/java/org/apache/fineract/investor/service/LoanAccountOwnerTransferServiceImpl.java
@@ -26,6 +26,7 @@ import static
org.apache.fineract.investor.data.ExternalTransferStatus.PENDING;
import static
org.apache.fineract.investor.data.ExternalTransferSubStatus.BALANCE_NEGATIVE;
import static
org.apache.fineract.investor.data.ExternalTransferSubStatus.BALANCE_ZERO;
import static
org.apache.fineract.investor.data.ExternalTransferSubStatus.SAMEDAY_TRANSFERS;
+import static
org.apache.fineract.investor.data.ExternalTransferSubStatus.UNSOLD;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -67,39 +68,36 @@ public class LoanAccountOwnerTransferServiceImpl implements
LoanAccountOwnerTran
if (transferDataList.size() == 2) {
ExternalTransferSubStatus subStatus;
+ ExternalAssetOwnerTransfer pendingSaleTransfer =
transferDataList.get(0);
+ ExternalAssetOwnerTransfer pendingBuybackTransfer =
transferDataList.get(1);
if (isSameDayTransfers(transferDataList)) {
subStatus = SAMEDAY_TRANSFERS;
+ cancelTransfer(loan, pendingSaleTransfer, subStatus);
+ cancelTransfer(loan, pendingBuybackTransfer, subStatus);
} else {
- subStatus = isBiggerThanZero(loan.getTotalOverpaid()) ?
BALANCE_NEGATIVE : BALANCE_ZERO;
+ declineTransfer(loan, pendingSaleTransfer);
+ cancelTransfer(loan, pendingBuybackTransfer, UNSOLD);
}
- cancelPendingSaleAndBuybackTransfer(loan, transferDataList,
subStatus);
} else if (transferDataList.size() == 1) {
ExternalAssetOwnerTransfer transfer = transferDataList.get(0);
if (PENDING.equals(transfer.getStatus())) {
- declinePendingSaleTransfer(loan, transfer);
+ declineTransfer(loan, transfer);
} else if (BUYBACK.equals(transfer.getStatus())) {
executePendingBuybackTransfer(loan, transfer);
}
}
}
- private void cancelPendingSaleAndBuybackTransfer(Loan loan,
List<ExternalAssetOwnerTransfer> transferDataList,
- ExternalTransferSubStatus subStatus) {
- ExternalAssetOwnerTransfer pendingSaleTransfer =
transferDataList.get(0);
- updatePendingTransfer(pendingSaleTransfer);
- ExternalAssetOwnerTransfer cancelledSaleTransfer =
createCancelledTransfer(pendingSaleTransfer, subStatus);
-
- ExternalAssetOwnerTransfer pendingBuybackTransfer =
transferDataList.get(1);
- updatePendingTransfer(pendingBuybackTransfer);
- ExternalAssetOwnerTransfer cancelledBuybackTransfer =
createCancelledTransfer(pendingBuybackTransfer, subStatus);
+ private void cancelTransfer(Loan loan, ExternalAssetOwnerTransfer
pendingTransfer, ExternalTransferSubStatus subStatus) {
+ updatePendingTransfer(pendingTransfer);
+ ExternalAssetOwnerTransfer cancelledTransfer =
createCancelledTransfer(pendingTransfer, subStatus);
- businessEventNotifierService.notifyPostBusinessEvent(new
LoanOwnershipTransferBusinessEvent(cancelledSaleTransfer, loan));
- businessEventNotifierService.notifyPostBusinessEvent(new
LoanOwnershipTransferBusinessEvent(cancelledBuybackTransfer, loan));
+ businessEventNotifierService.notifyPostBusinessEvent(new
LoanOwnershipTransferBusinessEvent(cancelledTransfer, loan));
}
- private void declinePendingSaleTransfer(Loan loan,
ExternalAssetOwnerTransfer pendingSaleTransfer) {
- ExternalAssetOwnerTransfer declinedSaleTransfer =
createDeclinedTransfer(pendingSaleTransfer, loan);
- updatePendingTransfer(pendingSaleTransfer);
+ private void declineTransfer(Loan loan, ExternalAssetOwnerTransfer
pendingTransfer) {
+ ExternalAssetOwnerTransfer declinedSaleTransfer =
createDeclinedTransfer(pendingTransfer, loan);
+ updatePendingTransfer(pendingTransfer);
businessEventNotifierService.notifyPostBusinessEvent(new
LoanOwnershipTransferBusinessEvent(declinedSaleTransfer, loan));
}
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/investor/externalassetowner/InitiateExternalAssetOwnerTransferTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/investor/externalassetowner/InitiateExternalAssetOwnerTransferTest.java
index bb745e5bb..646d455ce 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/investor/externalassetowner/InitiateExternalAssetOwnerTransferTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/investor/externalassetowner/InitiateExternalAssetOwnerTransferTest.java
@@ -25,6 +25,7 @@ import static
org.apache.fineract.client.models.ExternalTransferData.StatusEnum.
import static
org.apache.fineract.client.models.ExternalTransferData.StatusEnum.PENDING;
import static
org.apache.fineract.client.models.ExternalTransferData.SubStatusEnum.BALANCE_ZERO;
import static
org.apache.fineract.client.models.ExternalTransferData.SubStatusEnum.SAMEDAY_TRANSFERS;
+import static
org.apache.fineract.client.models.ExternalTransferData.SubStatusEnum.UNSOLD;
import static
org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType.BUSINESS_DATE;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -575,8 +576,8 @@ public class InitiateExternalAssetOwnerTransferTest {
ExpectedExternalTransferData.expected(BUYBACK,
buybackTransferResponse.getResourceExternalId(), "2020-03-06",
"2020-03-02", "2020-03-02"),
ExpectedExternalTransferData.expected(CANCELLED,
buybackTransferResponse.getResourceExternalId(), "2020-03-06",
- "2020-03-02", "2020-03-02", BALANCE_ZERO),
- ExpectedExternalTransferData.expected(CANCELLED,
saleTransferResponse.getResourceExternalId(), "2020-03-04",
+ "2020-03-02", "2020-03-02", UNSOLD),
+ ExpectedExternalTransferData.expected(DECLINED,
saleTransferResponse.getResourceExternalId(), "2020-03-04",
"2020-03-02", "2020-03-02", BALANCE_ZERO));
} finally {
cleanUpAndRestoreBusinessDate();