You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ta...@apache.org on 2023/04/26 12:12:18 UTC

[fineract] branch develop updated: FINERACT-1724 - Fraud set error when status is 100 or 200.

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 5f713be7e FINERACT-1724 - Fraud set error when status is 100 or 200.
5f713be7e is described below

commit 5f713be7ec775aea538d35f681d47fa6d611e19e
Author: Janos Haber <ja...@finesolution.hu>
AuthorDate: Tue Apr 25 12:12:28 2023 +0200

    FINERACT-1724 - Fraud set error when status is 100 or 200.
---
 .../service/LoanWritePlatformServiceJpaRepositoryImpl.java |  4 ++++
 .../fineract/integrationtests/LoanAccountFraudTest.java    | 14 ++++++--------
 2 files changed, 10 insertions(+), 8 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 fa0cee287..ac24bc47d 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
@@ -2521,6 +2521,10 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
         Loan loan = this.loanAssembler.assembleFrom(loanId);
         final Map<String, Object> changes = new LinkedHashMap<>();
 
+        if (loan.isApproved() || loan.isSubmittedAndPendingApproval()) {
+            throw new GeneralPlatformDomainRuleException("error.msg.loan.mark.as.fraud.not.allowed",
+                    "Loan Id: " + loanId + " mark as fraud is not allowed as loan status is not active", loan.getStatus().getCode());
+        }
         final boolean fraud = command.booleanPrimitiveValueOfParameterNamed(LoanApiConstants.FRAUD_ATTRIBUTE_NAME);
         if (loan.isFraud() != fraud) {
             loan.markAsFraud(fraud);
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java
index 5ddb0972e..771dafe2d 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountFraudTest.java
@@ -89,22 +89,25 @@ public class LoanAccountFraudTest {
             String payload = loanTransactionHelper.getLoanFraudPayloadAsJSON("fraud", "true");
             // Send the request, not expecting any errors (because only open loan restriction removed)
             PutLoansLoanIdResponse putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload,
-                    this.responseSpec);
+                    this.responseSpecError);
 
             String statusCode = getLoansLoanIdResponse.getStatus().getCode();
             log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode);
 
             // Approve the Loan active
-            approveAndDisburseLoan(loanId, this.operationDate, this.amountVal);
+            loanTransactionHelper.approveLoan(operationDate, this.amountVal, loanId, null);
+            putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpecError);
 
             // Default values Not Null and False
             getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
             assertNotNull(getLoansLoanIdResponse);
             assertNotNull(getLoansLoanIdResponse.getFraud());
-            assertEquals(Boolean.TRUE, getLoansLoanIdResponse.getFraud());
+            assertEquals(Boolean.FALSE, getLoansLoanIdResponse.getFraud());
             statusCode = getLoansLoanIdResponse.getStatus().getCode();
             log.info("Loan with Id {} is with Status {}", getLoansLoanIdResponse.getId(), statusCode);
 
+            loanTransactionHelper.disburseLoanWithNetDisbursalAmount(operationDate, loanId, this.amountVal);
+
             // Mark On the Fraud
             putLoansLoanIdResponse = loanTransactionHelper.modifyLoanCommand(loanId, command, payload, this.responseSpec);
             assertNotNull(putLoansLoanIdResponse);
@@ -161,9 +164,4 @@ public class LoanAccountFraudTest {
         return loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private void approveAndDisburseLoan(final Integer loanId, final String operationDate, final String principalAmount) {
-        loanTransactionHelper.approveLoan(operationDate, principalAmount, loanId, null);
-        loanTransactionHelper.disburseLoanWithNetDisbursalAmount(operationDate, loanId, principalAmount);
-    }
-
 }