allow null value for loanProduct principal

This commit is contained in:
CieyouRaoul
2014-07-02 10:39:49 +02:00
parent b4c3e8be64
commit 3c97fccee8
3 changed files with 9 additions and 7 deletions
@@ -0,0 +1 @@
ALTER TABLE `m_product_loan` CHANGE `principal_amount` `principal_amount` DECIMAL( 19, 6 ) NULL ;
@@ -38,7 +38,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
@Embedded @Embedded
private MonetaryCurrency currency; 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; private BigDecimal principal;
@Column(name = "nominal_interest_rate_per_period", scale = 6, precision = 19, nullable = false) @Column(name = "nominal_interest_rate_per_period", scale = 6, precision = 19, nullable = false)
@@ -110,7 +110,7 @@ public final class LoanProductDataValidator {
baseDataValidator.reset().parameter("inMultiplesOf").value(inMultiplesOf).ignoreIfNull().integerZeroOrGreater(); baseDataValidator.reset().parameter("inMultiplesOf").value(inMultiplesOf).ignoreIfNull().integerZeroOrGreater();
final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("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();
final String minPrincipalParameterName = "minPrincipal"; final String minPrincipalParameterName = "minPrincipal";
BigDecimal minPrincipalAmount = null; BigDecimal minPrincipalAmount = null;
@@ -126,17 +126,18 @@ public final class LoanProductDataValidator {
baseDataValidator.reset().parameter(maxPrincipalParameterName).value(maxPrincipalAmount).ignoreIfNull().positiveAmount(); 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) { if (minPrincipalAmount != null && minPrincipalAmount.compareTo(BigDecimal.ZERO) != -1) {
baseDataValidator.reset().parameter(maxPrincipalParameterName).value(maxPrincipalAmount).notLessThanMin(minPrincipalAmount); 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) baseDataValidator.reset().parameter("principal").value(principal)
.inMinAndMaxAmountRange(minPrincipalAmount, maxPrincipalAmount); .inMinAndMaxAmountRange(minPrincipalAmount, maxPrincipalAmount);
} }
} else { } else if(principal != null) {
baseDataValidator.reset().parameter("principal").value(principal).notGreaterThanMax(maxPrincipalAmount); 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); baseDataValidator.reset().parameter("principal").value(principal).notLessThanMin(minPrincipalAmount);
} }
@@ -447,7 +448,7 @@ public final class LoanProductDataValidator {
if (this.fromApiJsonHelper.parameterExists("principal", element)) { if (this.fromApiJsonHelper.parameterExists("principal", element)) {
final BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("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)) { if (this.fromApiJsonHelper.parameterExists("inArrearsTolerance", element)) {