Repository: incubator-fineract Updated Branches: refs/heads/develop f3f6f4bf8 -> d2b853561
[FINERACT-152][FINERACT-153][FINERACT-154] - Dormant savings issues Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/b3f66660 Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/b3f66660 Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/b3f66660 Branch: refs/heads/develop Commit: b3f6666087eb5ab781db2fb7a19002f69d159899 Parents: d1067e5 Author: Adi Narayana Raju <adi.r...@confluxtechnologies.com> Authored: Tue May 10 14:17:53 2016 +0530 Committer: Adi Narayana Raju <adi.r...@confluxtechnologies.com> Committed: Tue May 10 14:17:53 2016 +0530 ---------------------------------------------------------------------- .../savings/domain/SavingsAccountCharge.java | 6 +++++- ...AccountWritePlatformServiceJpaRepositoryImpl.java | 15 +++++++++++++-- ...06__add_domancy_tracking_job_to_savings_group.sql | 3 +++ 3 files changed, 21 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/b3f66660/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java index fe40f3b..f7c048d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java @@ -225,7 +225,11 @@ public class SavingsAccountCharge extends AbstractPersistable<Long> { populateDerivedFields(transactionAmount, chargeAmount); - if (this.isWithdrawalFee()) { + if (this.isWithdrawalFee() + || this.isOverdraftFee() + || this.isSavingsActivation() + || this.isSavingsClosure() + || this.isSavingsNoActivity()) { this.amountOutstanding = BigDecimal.ZERO; } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/b3f66660/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 6612c88..7bc0311 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -45,6 +45,7 @@ import org.apache.fineract.portfolio.account.service.AccountAssociationsReadPlat import org.apache.fineract.portfolio.account.service.AccountTransfersReadPlatformService; import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper; +import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; import org.apache.fineract.portfolio.client.domain.Client; import org.apache.fineract.portfolio.client.exception.ClientNotActiveException; import org.apache.fineract.portfolio.group.domain.Group; @@ -785,6 +786,17 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi final Long chargeDefinitionId = command.longValueOfParameterNamed(chargeIdParamName); final Charge chargeDefinition = this.chargeRepository.findOneWithNotFoundDetection(chargeDefinitionId); + Integer chargeTimeType = chargeDefinition.getChargeTimeType(); + LocalDate dueAsOfDateParam = command.localDateValueOfParameterNamed(dueAsOfDateParamName); + if((chargeTimeType.equals(ChargeTimeType.WITHDRAWAL_FEE.getValue()) + || chargeTimeType.equals(ChargeTimeType.OVERDRAFT_FEE.getValue()) + || chargeTimeType.equals(ChargeTimeType.SAVINGS_ACTIVATION.getValue()) + || chargeTimeType.equals(ChargeTimeType.SAVINGS_NOACTIVITY_FEE.getValue()) + || chargeTimeType.equals(ChargeTimeType.SAVINGS_CLOSURE.getValue())) + && dueAsOfDateParam != null){ + baseDataValidator.reset().parameter(dueAsOfDateParamName).value(dueAsOfDateParam.toString(fmt)) + .failWithCodeNoParameterAddedToErrorCode("charge.due.date.is.invalid.for." + ChargeTimeType.fromInt(chargeTimeType).getCode()); + } final SavingsAccountCharge savingsAccountCharge = SavingsAccountCharge.createNewFromJson(savingsAccount, chargeDefinition, command); if (savingsAccountCharge.getDueLocalDate() != null) { @@ -793,16 +805,15 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi && this.holidayRepository.isHoliday(savingsAccount.officeId(), savingsAccountCharge.getDueLocalDate())) { baseDataValidator.reset().parameter(dueAsOfDateParamName).value(savingsAccountCharge.getDueLocalDate().toString(fmt)) .failWithCodeNoParameterAddedToErrorCode("charge.due.date.is.on.holiday"); - if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } if (!this.configurationDomainService.allowTransactionsOnNonWorkingDayEnabled() && !this.workingDaysRepository.isWorkingDay(savingsAccountCharge.getDueLocalDate())) { baseDataValidator.reset().parameter(dueAsOfDateParamName).value(savingsAccountCharge.getDueLocalDate().toString(fmt)) .failWithCodeNoParameterAddedToErrorCode("charge.due.date.is.a.nonworking.day"); - if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } } } + if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); } savingsAccount.addCharge(fmt, savingsAccountCharge, chargeDefinition); http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/b3f66660/fineract-provider/src/main/resources/sql/migrations/core_db/V306__add_domancy_tracking_job_to_savings_group.sql ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/resources/sql/migrations/core_db/V306__add_domancy_tracking_job_to_savings_group.sql b/fineract-provider/src/main/resources/sql/migrations/core_db/V306__add_domancy_tracking_job_to_savings_group.sql new file mode 100644 index 0000000..ff7e468 --- /dev/null +++ b/fineract-provider/src/main/resources/sql/migrations/core_db/V306__add_domancy_tracking_job_to_savings_group.sql @@ -0,0 +1,3 @@ +UPDATE `job` +SET `task_priority`=3, `scheduler_group`=1 +WHERE `name`='Update Savings Dormant Accounts'; \ No newline at end of file