From 3c97fccee80b18eb143be3b42746b4c1f66ca635 Mon Sep 17 00:00:00 2001 From: CieyouRaoul Date: Wed, 2 Jul 2014 10:39:49 +0200 Subject: [PATCH] allow null value for loanProduct principal --- ..._Allow_nullValue_For_principal_on_lonProduct.sql | 1 + .../domain/LoanProductRelatedDetail.java | 2 +- .../serialization/LoanProductDataValidator.java | 13 +++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 mifosng-db/migrations/core_db/V160_2__Allow_nullValue_For_principal_on_lonProduct.sql diff --git a/mifosng-db/migrations/core_db/V160_2__Allow_nullValue_For_principal_on_lonProduct.sql b/mifosng-db/migrations/core_db/V160_2__Allow_nullValue_For_principal_on_lonProduct.sql new file mode 100644 index 000000000..e839015fe --- /dev/null +++ b/mifosng-db/migrations/core_db/V160_2__Allow_nullValue_For_principal_on_lonProduct.sql @@ -0,0 +1 @@ +ALTER TABLE `m_product_loan` CHANGE `principal_amount` `principal_amount` DECIMAL( 19, 6 ) NULL ; \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/domain/LoanProductRelatedDetail.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/domain/LoanProductRelatedDetail.java index ad21feb91..e799bdd46 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/domain/LoanProductRelatedDetail.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/domain/LoanProductRelatedDetail.java @@ -38,7 +38,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche @Embedded private MonetaryCurrency currency; - @Column(name = "principal_amount", scale = 6, precision = 19, nullable = false) + @Column(name = "principal_amount", scale = 6, precision = 19, nullable = true) private BigDecimal principal; @Column(name = "nominal_interest_rate_per_period", scale = 6, precision = 19, nullable = false) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/serialization/LoanProductDataValidator.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/serialization/LoanProductDataValidator.java index c5ddddb84..5724417ab 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/serialization/LoanProductDataValidator.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/serialization/LoanProductDataValidator.java @@ -110,7 +110,7 @@ public final class LoanProductDataValidator { baseDataValidator.reset().parameter("inMultiplesOf").value(inMultiplesOf).ignoreIfNull().integerZeroOrGreater(); final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("principal", element); - baseDataValidator.reset().parameter("principal").value(principal).notNull().positiveAmount(); + baseDataValidator.reset().parameter("principal").value(principal).positiveAmount(); final String minPrincipalParameterName = "minPrincipal"; BigDecimal minPrincipalAmount = null; @@ -126,17 +126,18 @@ public final class LoanProductDataValidator { baseDataValidator.reset().parameter(maxPrincipalParameterName).value(maxPrincipalAmount).ignoreIfNull().positiveAmount(); } - if (maxPrincipalAmount != null && maxPrincipalAmount.compareTo(BigDecimal.ZERO) != -1) { + if (maxPrincipalAmount != null && maxPrincipalAmount.compareTo(BigDecimal.ZERO) != -1 ) { + if (minPrincipalAmount != null && minPrincipalAmount.compareTo(BigDecimal.ZERO) != -1) { baseDataValidator.reset().parameter(maxPrincipalParameterName).value(maxPrincipalAmount).notLessThanMin(minPrincipalAmount); - if (minPrincipalAmount.compareTo(maxPrincipalAmount) <= 0) { + if (minPrincipalAmount.compareTo(maxPrincipalAmount) <= 0 && principal != null ) { baseDataValidator.reset().parameter("principal").value(principal) .inMinAndMaxAmountRange(minPrincipalAmount, maxPrincipalAmount); } - } else { + } else if(principal != null) { baseDataValidator.reset().parameter("principal").value(principal).notGreaterThanMax(maxPrincipalAmount); } - } else if (minPrincipalAmount != null && minPrincipalAmount.compareTo(BigDecimal.ZERO) != -1) { + } else if (minPrincipalAmount != null && minPrincipalAmount.compareTo(BigDecimal.ZERO) != -1 && principal !=null) { baseDataValidator.reset().parameter("principal").value(principal).notLessThanMin(minPrincipalAmount); } @@ -447,7 +448,7 @@ public final class LoanProductDataValidator { if (this.fromApiJsonHelper.parameterExists("principal", element)) { final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("principal", element); - baseDataValidator.reset().parameter("principal").value(principal).notNull().positiveAmount(); + baseDataValidator.reset().parameter("principal").value(principal).positiveAmount(); } if (this.fromApiJsonHelper.parameterExists("inArrearsTolerance", element)) {