diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java index 525fbb285..ee983f700 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupingTypesWritePlatformServiceJpaRepositoryImpl.java @@ -159,6 +159,11 @@ public class GroupingTypesWritePlatformServiceJpaRepositoryImpl implements Group rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser); } } + + if (!newGroup.isCenter() && newGroup.hasActiveClients()) { + final CommandWrapper commandWrapper = new CommandWrapperBuilder().associateClientsToGroup(newGroup.getId()).build(); + rollbackTransaction = this.commandProcessingService.validateCommand(commandWrapper, currentUser); + } // pre-save to generate id for use in group hierarchy this.groupRepository.save(newGroup); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/SavingsAccount.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/SavingsAccount.java index 3ce998ed8..e8e69665f 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/SavingsAccount.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/domain/SavingsAccount.java @@ -1164,6 +1164,10 @@ public class SavingsAccount extends AbstractPersistable { return this.client; } + public BigDecimal getNominalAnnualInterestRate() { + return this.nominalAnnualInterestRate; + } + public Map approveApplication(final AppUser currentUser, final JsonCommand command, final LocalDate tenantsTodayDate) { final Map actualChanges = new LinkedHashMap(); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 774115cd1..33a650574 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -309,25 +309,27 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi @Transactional private void postInterest(final SavingsAccount account) { - final Set existingTransactionIds = new HashSet(); - final Set existingReversedTransactionIds = new HashSet(); - updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); - final LocalDate today = DateUtils.getLocalDateOfTenant(); - final MathContext mc = new MathContext(10, RoundingMode.HALF_EVEN); + if (account.getNominalAnnualInterestRate().compareTo(BigDecimal.ZERO) == 1) { + final Set existingTransactionIds = new HashSet(); + final Set existingReversedTransactionIds = new HashSet(); + updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); + final LocalDate today = DateUtils.getLocalDateOfTenant(); + final MathContext mc = new MathContext(10, RoundingMode.HALF_EVEN); - account.postInterest(mc, today); + account.postInterest(mc, today); - // for generating transaction id's - List transactions = account.getTransactions(); - for (SavingsAccountTransaction accountTransaction : transactions) { - if (accountTransaction.getId() == null) { - this.savingsAccountTransactionRepository.save(accountTransaction); + // for generating transaction id's + List transactions = account.getTransactions(); + for (SavingsAccountTransaction accountTransaction : transactions) { + if (accountTransaction.getId() == null) { + this.savingsAccountTransactionRepository.save(accountTransaction); + } } + + this.savingAccountRepository.save(account); + + postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } - - this.savingAccountRepository.save(account); - - postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds); } @CronTarget(jobName = JobName.POST_INTEREST_FOR_SAVINGS)