This is an automated email from the ASF dual-hosted git repository.
avikg 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 8f444be Made loan collateral optional while creating loan
account-FINERACT-1405 (#1889)
8f444be is described below
commit 8f444bed5c04725a83060e2935d77a8c4bd47cc2
Author: Shreyas S Kumar <[email protected]>
AuthorDate: Mon Oct 11 19:38:07 2021 +0530
Made loan collateral optional while creating loan account-FINERACT-1405
(#1889)
---
.../LoanApplicationCommandFromApiJsonHelper.java | 66 +++++++++++-----------
.../loanaccount/service/LoanAssembler.java | 28 +++++----
2 files changed, 47 insertions(+), 47 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java
index 26d216d..a3e0f14 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationCommandFromApiJsonHelper.java
@@ -918,39 +918,41 @@ public final class
LoanApplicationCommandFromApiJsonHelper {
final Type collateralParameterTypeOfMap = new
TypeToken<Map<String, Object>>() {}.getType();
final Set<String> supportedParameters = new
HashSet<>(Arrays.asList("id", "clientCollateralId", "quantity"));
final JsonArray array =
topLevelJsonElement.get("collateral").getAsJsonArray();
- BigDecimal totalAmount = BigDecimal.ZERO;
- for (int i = 1; i <= array.size(); i++) {
- final JsonObject collateralItemElement =
array.get(i - 1).getAsJsonObject();
-
- final String collateralJson =
this.fromApiJsonHelper.toJson(collateralItemElement);
-
this.fromApiJsonHelper.checkForUnsupportedParameters(collateralParameterTypeOfMap,
collateralJson,
- supportedParameters);
-
- final Long id =
this.fromApiJsonHelper.extractLongNamed("id", collateralItemElement);
-
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("id",
i).value(id).ignoreIfNull();
-
- final Long clientCollateralId =
this.fromApiJsonHelper.extractLongNamed("clientCollateralId",
- collateralItemElement);
-
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("clientCollateralId",
i)
-
.value(clientCollateralId).notNull().integerGreaterThanZero();
-
- final BigDecimal quantity =
this.fromApiJsonHelper.extractBigDecimalNamed("quantity", collateralItemElement,
- locale);
-
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("quantity",
i).value(quantity).notNull()
- .positiveAmount();
-
- if (clientCollateralId != null || quantity !=
null) {
- BigDecimal baseAmount =
this.clientCollateralManagementRepositoryWrapper.getCollateral(clientCollateralId)
- .getCollaterals().getBasePrice();
- BigDecimal pctToBase =
this.clientCollateralManagementRepositoryWrapper.getCollateral(clientCollateralId)
- .getCollaterals().getPctToBase();
- BigDecimal total =
baseAmount.multiply(pctToBase).multiply(quantity);
- totalAmount = totalAmount.add(total);
+ if (array.size() > 0) {
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ for (int i = 1; i <= array.size(); i++) {
+ final JsonObject collateralItemElement =
array.get(i - 1).getAsJsonObject();
+
+ final String collateralJson =
this.fromApiJsonHelper.toJson(collateralItemElement);
+
this.fromApiJsonHelper.checkForUnsupportedParameters(collateralParameterTypeOfMap,
collateralJson,
+ supportedParameters);
+
+ final Long id =
this.fromApiJsonHelper.extractLongNamed("id", collateralItemElement);
+
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("id",
i).value(id).ignoreIfNull();
+
+ final Long clientCollateralId =
this.fromApiJsonHelper.extractLongNamed("clientCollateralId",
+ collateralItemElement);
+
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("clientCollateralId",
i)
+
.value(clientCollateralId).notNull().integerGreaterThanZero();
+
+ final BigDecimal quantity =
this.fromApiJsonHelper.extractBigDecimalNamed("quantity", collateralItemElement,
+ locale);
+
baseDataValidator.reset().parameter("collateral").parameterAtIndexArray("quantity",
i).value(quantity)
+ .notNull().positiveAmount();
+
+ if (clientCollateralId != null || quantity !=
null) {
+ BigDecimal baseAmount =
this.clientCollateralManagementRepositoryWrapper
+
.getCollateral(clientCollateralId).getCollaterals().getBasePrice();
+ BigDecimal pctToBase =
this.clientCollateralManagementRepositoryWrapper
+
.getCollateral(clientCollateralId).getCollaterals().getPctToBase();
+ BigDecimal total =
baseAmount.multiply(pctToBase).multiply(quantity);
+ totalAmount = totalAmount.add(total);
+ }
}
- }
- if (principal != null) {
- if (principal.compareTo(totalAmount) > 0 ||
array.size() == 0) {
- throw new
InvalidAmountOfCollaterals(totalAmount);
+ if (principal != null) {
+ if (principal.compareTo(totalAmount) > 0) {
+ throw new
InvalidAmountOfCollaterals(totalAmount);
+ }
}
}
} else {
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
index 06514eb..ffaa632 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
@@ -227,21 +227,19 @@ public class LoanAssembler {
if (loanAccountType.isIndividualAccount()) {
collateral = this.collateralAssembler.fromParsedJson(element);
- if (collateral.size() == 0) {
- throw new InvalidAmountOfCollaterals(BigDecimal.ZERO);
- }
-
- BigDecimal totalValue = BigDecimal.ZERO;
- for (LoanCollateralManagement collateralManagement :
collateral) {
- final CollateralManagementDomain
collateralManagementDomain =
collateralManagement.getClientCollateralManagement()
- .getCollaterals();
- BigDecimal totalCollateral =
collateralManagement.getQuantity().multiply(collateralManagementDomain.getBasePrice())
-
.multiply(collateralManagementDomain.getPctToBase()).divide(BigDecimal.valueOf(100));
- totalValue = totalValue.add(totalCollateral);
- }
-
- if (amount.compareTo(totalValue) > 0) {
- throw new InvalidAmountOfCollaterals(totalValue);
+ if (collateral.size() > 0) {
+ BigDecimal totalValue = BigDecimal.ZERO;
+ for (LoanCollateralManagement collateralManagement :
collateral) {
+ final CollateralManagementDomain
collateralManagementDomain =
collateralManagement.getClientCollateralManagement()
+ .getCollaterals();
+ BigDecimal totalCollateral =
collateralManagement.getQuantity().multiply(collateralManagementDomain.getBasePrice())
+
.multiply(collateralManagementDomain.getPctToBase()).divide(BigDecimal.valueOf(100));
+ totalValue = totalValue.add(totalCollateral);
+ }
+
+ if (amount.compareTo(totalValue) > 0) {
+ throw new InvalidAmountOfCollaterals(totalValue);
+ }
}
}
}