From 452d97cfb0cd6f02fe0bfba017b2b2af06e74b25 Mon Sep 17 00:00:00 2001 From: Vishwas Babu A J Date: Sun, 7 Dec 2014 13:59:10 -0800 Subject: [PATCH] updates to MIFOSX-1700 --- .../domain/DepositAccountRecurringDetail.java | 13 +++++++++++++ .../savings/domain/RecurringDepositAccount.java | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/DepositAccountRecurringDetail.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/DepositAccountRecurringDetail.java index 21936857b..66531d35a 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/DepositAccountRecurringDetail.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/DepositAccountRecurringDetail.java @@ -9,7 +9,9 @@ import static org.mifosplatform.portfolio.savings.DepositsApiConstants.mandatory import java.math.BigDecimal; import java.math.MathContext; +import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import javax.persistence.Column; @@ -21,8 +23,11 @@ import javax.persistence.Table; import org.joda.time.LocalDate; import org.mifosplatform.infrastructure.core.api.JsonCommand; +import org.mifosplatform.infrastructure.core.data.ApiParameterError; +import org.mifosplatform.infrastructure.core.exception.PlatformApiDataValidationException; import org.mifosplatform.infrastructure.core.service.DateUtils; import org.mifosplatform.organisation.monetary.domain.Money; +import org.mifosplatform.portfolio.savings.DepositsApiConstants; import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @@ -101,6 +106,14 @@ public class DepositAccountRecurringDetail extends AbstractPersistable { actualChanges.put(mandatoryRecommendedDepositAmountParamName, newMandatoryRecommendedDepositAmount); this.mandatoryRecommendedDepositAmount = newMandatoryRecommendedDepositAmount; RecurringDepositAccount depositAccount = (RecurringDepositAccount) this.account; + if (depositAccount.isNotActive()) { + final String defaultUserMessage = "Updates to the recommended deposit amount are allowed only when the underlying account is active."; + final ApiParameterError error = ApiParameterError.generalError("error.msg." + + DepositsApiConstants.RECURRING_DEPOSIT_ACCOUNT_RESOURCE_NAME + ".is.not.active", defaultUserMessage); + final List dataValidationErrors = new ArrayList<>(); + dataValidationErrors.add(error); + throw new PlatformApiDataValidationException(dataValidationErrors); + } depositAccount.updateScheduleInstallmentsWithNewRecommendedDepositAmount(newMandatoryRecommendedDepositAmount, effectiveDate); depositAccount.updateOverduePayments(DateUtils.getLocalDateOfTenant()); MathContext mc = MathContext.DECIMAL64; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/RecurringDepositAccount.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/RecurringDepositAccount.java index 7ed627f12..6ac60fdfe 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/RecurringDepositAccount.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/RecurringDepositAccount.java @@ -833,7 +833,8 @@ public class RecurringDepositAccount extends SavingsAccount { // reset all installments to process from the beginning, also update // deposit amount as necessary for (RecurringDepositScheduleInstallment currentInstallment : depositScheduleInstallments()) { - if (currentInstallment.dueDate().isAfter(depositAmountupdatedFromDate)) { + if (currentInstallment.dueDate().isAfter(depositAmountupdatedFromDate) + || currentInstallment.dueDate().isEqual(depositAmountupdatedFromDate)) { currentInstallment.updateDepositAmountAndResetDerivedFields(newDepositAmount); } else { currentInstallment.resetDerivedFields();