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

Reply via email to