fixing test case failures due to work on tranche loans improvement
This commit is contained in:
+82
-140
@@ -17,7 +17,6 @@ import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
||||
import org.mifosplatform.infrastructure.core.data.ApiParameterError;
|
||||
import org.mifosplatform.infrastructure.core.data.DataValidatorBuilder;
|
||||
import org.mifosplatform.infrastructure.core.exception.InvalidJsonException;
|
||||
@@ -832,154 +831,97 @@ public final class LoanApplicationCommandFromApiJsonHelper {
|
||||
"Validation errors exist.", dataValidationErrors); }
|
||||
}
|
||||
|
||||
private void validateDisbursementsAreDatewiseOrdered(JsonElement element, final DataValidatorBuilder baseDataValidator) {
|
||||
final JsonObject topLevelJsonElement = element.getAsJsonObject();
|
||||
final Locale locale = this.fromApiJsonHelper
|
||||
.extractLocaleParameter(topLevelJsonElement);
|
||||
final String dateFormat = this.fromApiJsonHelper
|
||||
.extractDateFormatParameter(topLevelJsonElement);
|
||||
final JsonArray variationArray = this.fromApiJsonHelper
|
||||
.extractJsonArrayNamed(
|
||||
LoanApiConstants.disbursementDataParameterName,
|
||||
element);
|
||||
for(int i=0 ; i< variationArray.size();i++){
|
||||
final JsonObject jsonObject1 = variationArray.get(i)
|
||||
.getAsJsonObject();
|
||||
LocalDate date1 = this.fromApiJsonHelper
|
||||
.extractLocalDateNamed(
|
||||
LoanApiConstants.disbursementDateParameterName,
|
||||
jsonObject1, dateFormat, locale);
|
||||
|
||||
for(int j=i+1;j<variationArray.size();j++){
|
||||
final JsonObject jsonObject2 = variationArray.get(j)
|
||||
.getAsJsonObject();
|
||||
LocalDate date2 = this.fromApiJsonHelper
|
||||
.extractLocalDateNamed(
|
||||
LoanApiConstants.disbursementDateParameterName,
|
||||
jsonObject2, dateFormat, locale);
|
||||
if(date1.isAfter(date2)){
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDataParameterName)
|
||||
.failWithCode(
|
||||
LoanApiConstants.DISBURSEMENT_DATES_NOT_IN_ORDER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void validateDisbursementsAreDatewiseOrdered(JsonElement element, final DataValidatorBuilder baseDataValidator) {
|
||||
final JsonObject topLevelJsonElement = element.getAsJsonObject();
|
||||
final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(topLevelJsonElement);
|
||||
final String dateFormat = this.fromApiJsonHelper.extractDateFormatParameter(topLevelJsonElement);
|
||||
final JsonArray variationArray = this.fromApiJsonHelper.extractJsonArrayNamed(LoanApiConstants.disbursementDataParameterName,
|
||||
element);
|
||||
if (variationArray != null) {
|
||||
for (int i = 0; i < variationArray.size(); i++) {
|
||||
final JsonObject jsonObject1 = variationArray.get(i).getAsJsonObject();
|
||||
LocalDate date1 = this.fromApiJsonHelper.extractLocalDateNamed(LoanApiConstants.disbursementDateParameterName, jsonObject1,
|
||||
dateFormat, locale);
|
||||
|
||||
for (int j = i + 1; j < variationArray.size(); j++) {
|
||||
final JsonObject jsonObject2 = variationArray.get(j).getAsJsonObject();
|
||||
LocalDate date2 = this.fromApiJsonHelper.extractLocalDateNamed(LoanApiConstants.disbursementDateParameterName,
|
||||
jsonObject2, dateFormat, locale);
|
||||
if (date1.isAfter(date2)) {
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDataParameterName)
|
||||
.failWithCode(LoanApiConstants.DISBURSEMENT_DATES_NOT_IN_ORDER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void validateLoanMultiDisbursementdate(final JsonElement element, final DataValidatorBuilder baseDataValidator,
|
||||
LocalDate expectedDisbursement, BigDecimal totalPrincipal) {
|
||||
|
||||
public void validateLoanMultiDisbursementdate(final JsonElement element,
|
||||
final DataValidatorBuilder baseDataValidator,
|
||||
LocalDate expectedDisbursement, BigDecimal totalPrincipal) {
|
||||
|
||||
this.validateDisbursementsAreDatewiseOrdered(element, baseDataValidator);
|
||||
|
||||
final JsonObject topLevelJsonElement = element.getAsJsonObject();
|
||||
final Locale locale = this.fromApiJsonHelper
|
||||
.extractLocaleParameter(topLevelJsonElement);
|
||||
final String dateFormat = this.fromApiJsonHelper
|
||||
.extractDateFormatParameter(topLevelJsonElement);
|
||||
if (this.fromApiJsonHelper.parameterExists(
|
||||
LoanApiConstants.disbursementDataParameterName, element)
|
||||
&& expectedDisbursement != null && totalPrincipal != null) {
|
||||
BigDecimal tatalDisbursement = BigDecimal.ZERO;
|
||||
boolean isFirstinstallmentOnExpectedDisbursementDate = false;
|
||||
final JsonArray variationArray = this.fromApiJsonHelper
|
||||
.extractJsonArrayNamed(
|
||||
LoanApiConstants.disbursementDataParameterName,
|
||||
element);
|
||||
List<LocalDate> expectedDisbursementDates = new ArrayList<>();
|
||||
if (variationArray != null && variationArray.size() > 0) {
|
||||
int i = 0;
|
||||
do {
|
||||
final JsonObject jsonObject = variationArray.get(i)
|
||||
.getAsJsonObject();
|
||||
LocalDate expectedDisbursementDate = this.fromApiJsonHelper
|
||||
.extractLocalDateNamed(
|
||||
LoanApiConstants.disbursementDateParameterName,
|
||||
jsonObject, dateFormat, locale);
|
||||
if (expectedDisbursementDates
|
||||
.contains(expectedDisbursementDate)) {
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDateParameterName)
|
||||
.failWithCode(
|
||||
LoanApiConstants.DISBURSEMENT_DATE_UNIQUE_ERROR);
|
||||
}
|
||||
if(expectedDisbursementDate.isBefore(expectedDisbursement)){
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDataParameterName)
|
||||
.failWithCode(
|
||||
LoanApiConstants.DISBURSEMENT_DATE_BEFORE_ERROR);
|
||||
}
|
||||
expectedDisbursementDates.add(expectedDisbursementDate);
|
||||
BigDecimal principal = this.fromApiJsonHelper
|
||||
.extractBigDecimalNamed(
|
||||
LoanApiConstants.disbursementPrincipalParameterName,
|
||||
jsonObject, locale);
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDataParameterName)
|
||||
.parameterAtIndexArray(
|
||||
LoanApiConstants.disbursementPrincipalParameterName,
|
||||
i).value(principal).notBlank();
|
||||
if (principal != null) {
|
||||
tatalDisbursement = tatalDisbursement.add(principal);
|
||||
}
|
||||
final JsonObject topLevelJsonElement = element.getAsJsonObject();
|
||||
final Locale locale = this.fromApiJsonHelper.extractLocaleParameter(topLevelJsonElement);
|
||||
final String dateFormat = this.fromApiJsonHelper.extractDateFormatParameter(topLevelJsonElement);
|
||||
if (this.fromApiJsonHelper.parameterExists(LoanApiConstants.disbursementDataParameterName, element) && expectedDisbursement != null
|
||||
&& totalPrincipal != null) {
|
||||
BigDecimal tatalDisbursement = BigDecimal.ZERO;
|
||||
boolean isFirstinstallmentOnExpectedDisbursementDate = false;
|
||||
final JsonArray variationArray = this.fromApiJsonHelper.extractJsonArrayNamed(LoanApiConstants.disbursementDataParameterName,
|
||||
element);
|
||||
List<LocalDate> expectedDisbursementDates = new ArrayList<>();
|
||||
if (variationArray != null && variationArray.size() > 0) {
|
||||
int i = 0;
|
||||
do {
|
||||
final JsonObject jsonObject = variationArray.get(i).getAsJsonObject();
|
||||
LocalDate expectedDisbursementDate = this.fromApiJsonHelper.extractLocalDateNamed(
|
||||
LoanApiConstants.disbursementDateParameterName, jsonObject, dateFormat, locale);
|
||||
if (expectedDisbursementDates.contains(expectedDisbursementDate)) {
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDateParameterName)
|
||||
.failWithCode(LoanApiConstants.DISBURSEMENT_DATE_UNIQUE_ERROR);
|
||||
}
|
||||
if (expectedDisbursementDate.isBefore(expectedDisbursement)) {
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDataParameterName)
|
||||
.failWithCode(LoanApiConstants.DISBURSEMENT_DATE_BEFORE_ERROR);
|
||||
}
|
||||
expectedDisbursementDates.add(expectedDisbursementDate);
|
||||
BigDecimal principal = this.fromApiJsonHelper.extractBigDecimalNamed(
|
||||
LoanApiConstants.disbursementPrincipalParameterName, jsonObject, locale);
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDataParameterName)
|
||||
.parameterAtIndexArray(LoanApiConstants.disbursementPrincipalParameterName, i).value(principal).notBlank();
|
||||
if (principal != null) {
|
||||
tatalDisbursement = tatalDisbursement.add(principal);
|
||||
}
|
||||
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDataParameterName)
|
||||
.parameterAtIndexArray(
|
||||
LoanApiConstants.disbursementDateParameterName,
|
||||
i).value(expectedDisbursementDate)
|
||||
.notNull();
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDataParameterName)
|
||||
.parameterAtIndexArray(LoanApiConstants.disbursementDateParameterName, i).value(expectedDisbursementDate)
|
||||
.notNull();
|
||||
|
||||
if (expectedDisbursement.equals(expectedDisbursementDate)) {
|
||||
isFirstinstallmentOnExpectedDisbursementDate = true;
|
||||
}
|
||||
i++;
|
||||
} while (i < variationArray.size());
|
||||
if (!isFirstinstallmentOnExpectedDisbursementDate) {
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementDateParameterName)
|
||||
.failWithCode(
|
||||
LoanApiConstants.DISBURSEMENT_DATE_START_WITH_ERROR);
|
||||
}
|
||||
if (expectedDisbursement.equals(expectedDisbursementDate)) {
|
||||
isFirstinstallmentOnExpectedDisbursementDate = true;
|
||||
}
|
||||
i++;
|
||||
} while (i < variationArray.size());
|
||||
if (!isFirstinstallmentOnExpectedDisbursementDate) {
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementDateParameterName)
|
||||
.failWithCode(LoanApiConstants.DISBURSEMENT_DATE_START_WITH_ERROR);
|
||||
}
|
||||
|
||||
if (tatalDisbursement.compareTo(totalPrincipal) == 1) {
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(
|
||||
LoanApiConstants.disbursementPrincipalParameterName)
|
||||
.failWithCode(
|
||||
LoanApiConstants.APPROVED_AMOUNT_IS_LESS_THAN_SUM_OF_TRANCHES);
|
||||
}
|
||||
final String interestTypeParameterName = "interestType";
|
||||
final Integer interestType = this.fromApiJsonHelper
|
||||
.extractIntegerSansLocaleNamed(
|
||||
interestTypeParameterName, element);
|
||||
baseDataValidator
|
||||
.reset()
|
||||
.parameter(interestTypeParameterName)
|
||||
.value(interestType)
|
||||
.ignoreIfNull()
|
||||
.integerSameAsNumber(
|
||||
InterestMethod.DECLINING_BALANCE.getValue());
|
||||
if (tatalDisbursement.compareTo(totalPrincipal) == 1) {
|
||||
baseDataValidator.reset().parameter(LoanApiConstants.disbursementPrincipalParameterName)
|
||||
.failWithCode(LoanApiConstants.APPROVED_AMOUNT_IS_LESS_THAN_SUM_OF_TRANCHES);
|
||||
}
|
||||
final String interestTypeParameterName = "interestType";
|
||||
final Integer interestType = this.fromApiJsonHelper.extractIntegerSansLocaleNamed(interestTypeParameterName, element);
|
||||
baseDataValidator.reset().parameter(interestTypeParameterName).value(interestType).ignoreIfNull()
|
||||
.integerSameAsNumber(InterestMethod.DECLINING_BALANCE.getValue());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void validateRecalcuationFrequency(final LocalDate recalculationFrequencyDate, final LocalDate expectedDisbursementDate,
|
||||
final List<ApiParameterError> dataValidationErrors) {
|
||||
|
||||
Reference in New Issue
Block a user