Repository: incubator-fineract Updated Branches: refs/heads/develop c49956c15 -> cdbcf7501
FINERACT-365 : The 'Transactions' tab showing wrong balance in RD account Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/652059c2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/652059c2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/652059c2 Branch: refs/heads/develop Commit: 652059c24693f9c10ddcc025de49e45f4cf18fbc Parents: b36ba8e Author: satish-conflux <[email protected]> Authored: Fri Feb 24 15:51:56 2017 +0530 Committer: satish-conflux <[email protected]> Committed: Fri Feb 24 15:51:56 2017 +0530 ---------------------------------------------------------------------- .../domain/DepositAccountDomainServiceJpa.java | 21 ++++++++++++++++---- .../savings/domain/RecurringDepositAccount.java | 12 ++++++++++- .../domain/SavingsAccountDomainServiceJpa.java | 2 +- 3 files changed, 29 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/652059c2/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java index 32d12be..ac277fb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountDomainServiceJpa.java @@ -149,16 +149,29 @@ public class DepositAccountDomainServiceJpa implements DepositAccountDomainServi transactionAmount, paymentDetail, isAccountTransfer, isRegularTransaction); final Set<Long> existingTransactionIds = new HashSet<>(); final Set<Long> existingReversedTransactionIds = new HashSet<>(); - updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); - account.processAccountUponActivation(isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth, user); - this.savingsAccountRepository.saveAndFlush(account); + final boolean isAnyActivationChargesDue = isAnyActivationChargesDue(account); + if(isAnyActivationChargesDue){ + updateExistingTransactionsDetails(account, existingTransactionIds, existingReversedTransactionIds); + account.processAccountUponActivation(isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth, user); + this.savingsAccountRepository.saveAndFlush(account); + } account.handleScheduleInstallments(deposit); account.updateMaturityDateAndAmount(mc, isPreMatureClosure, isSavingsInterestPostingAtCurrentPeriodEnd, financialYearBeginningMonth); account.updateOverduePayments(DateUtils.getLocalDateOfTenant()); - postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); + if(isAnyActivationChargesDue){ + postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); + } return deposit; } + private boolean isAnyActivationChargesDue(final RecurringDepositAccount account) { + for (final SavingsAccountCharge savingsAccountCharge : account.charges()) { + if (savingsAccountCharge.isSavingsActivation() && savingsAccountCharge.amoutOutstanding() != null + && savingsAccountCharge.amoutOutstanding().compareTo(BigDecimal.ZERO) > 0) { return true; } + } + return false; + } + @Transactional @Override public Long handleFDAccountClosure(final FixedDepositAccount account, final PaymentDetail paymentDetail, final AppUser user, http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/652059c2/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java index 76668a4..9b02027 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositAccount.java @@ -370,11 +370,21 @@ public class RecurringDepositAccount extends SavingsAccount { List<SavingsAccountTransaction> allTransactions = new ArrayList<>(); // add existing transactions allTransactions.addAll(retreiveOrderedNonInterestPostingTransactions()); + LocalDate latestTransactionDate = null; + for (final SavingsAccountTransaction installment : allTransactions) { + if(latestTransactionDate == null || latestTransactionDate.isBefore(installment.getTransactionLocalDate())){ + latestTransactionDate = installment.getTransactionLocalDate(); + } + } if (generateFutureTransactions) { for (RecurringDepositScheduleInstallment installment : depositScheduleInstallments()) { if (installment.isPrincipalNotCompleted(getCurrency())) { + LocalDate dueDate = installment.dueDate(); + if(latestTransactionDate != null && dueDate.isBefore(latestTransactionDate)){ + dueDate = latestTransactionDate; + } final SavingsAccountTransaction transaction = SavingsAccountTransaction.deposit(null, office(), null, - installment.dueDate(), installment.getDepositAmountOutstanding(getCurrency()), installment.dueDate().toDate(), + dueDate, installment.getDepositAmountOutstanding(getCurrency()), installment.dueDate().toDate(), null); allTransactions.add(transaction); } http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/652059c2/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java index 5646d73..dd72aea 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java @@ -174,7 +174,7 @@ public class SavingsAccountDomainServiceJpa implements SavingsAccountDomainServi saveTransactionToGenerateTransactionId(deposit); - this.savingsAccountRepository.save(account); + this.savingsAccountRepository.saveAndFlush(account); postJournalEntries(account, existingTransactionIds, existingReversedTransactionIds, isAccountTransfer); this.businessEventNotifierService.notifyBusinessEventWasExecuted(BUSINESS_EVENTS.SAVINGS_DEPOSIT,
