diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java index de97846fb..d9fdaa4ee 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java @@ -1747,8 +1747,7 @@ public class Loan extends AbstractPersistable { } public ChangedTransactionDetail disburse(final LoanScheduleGeneratorFactory loanScheduleFactory, final AppUser currentUser, - final JsonCommand command, final ApplicationCurrency currency, final List existingTransactionIds, - final List existingReversedTransactionIds, final Map actualChanges, + final JsonCommand command, final ApplicationCurrency currency, final Map actualChanges, final LocalDate calculatedRepaymentsStartingFromDate, final boolean isHolidayEnabled, final List holidays, final WorkingDays workingDays, final boolean allowTransactionsOnHoliday, final boolean allowTransactionsOnNonWorkingDay, final boolean recalculateSchedule, final CalendarInstance calendarInstanceForInterestRecalculation) { @@ -1758,9 +1757,6 @@ public class Loan extends AbstractPersistable { final LocalDate actualDisbursementDate = command.localDateValueOfParameterNamed("actualDisbursementDate"); - existingTransactionIds.addAll(findExistingTransactionIds()); - existingReversedTransactionIds.addAll(findExistingReversedTransactionIds()); - this.loanStatus = statusEnum.getValue(); actualChanges.put("status", LoanEnumerations.status(this.loanStatus)); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java index a929b9f52..43380cced 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -278,7 +278,11 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final String txnExternalId = command.stringValueOfParameterNamedAllowingNull("externalId"); if (isAccountTransfer) { disburseLoanToSavings(loan, command, disburseAmount, paymentDetail); + existingTransactionIds.addAll(loan.findExistingTransactionIds()); + existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); } else { + existingTransactionIds.addAll(loan.findExistingTransactionIds()); + existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); LoanTransaction disbursementTransaction = LoanTransaction.disbursement(loan.getOffice(), disburseAmount, paymentDetail, actualDisbursementDate, txnExternalId); disbursementTransaction.updateLoan(loan); @@ -291,10 +295,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf CalendarEntityType.LOAN_RECALCULATION_DETAIL.getValue()); } - changedTransactionDetail = loan.disburse(this.loanScheduleFactory, currentUser, command, applicationCurrency, - existingTransactionIds, existingReversedTransactionIds, changes, calculatedRepaymentsStartingFromDate, - isHolidayEnabled, holidays, workingDays, allowTransactionsOnHoliday, allowTransactionsOnNonWorkingDay, - recalcualteSchedule, restCalendarInstance); + changedTransactionDetail = loan.disburse(this.loanScheduleFactory, currentUser, command, applicationCurrency, changes, + calculatedRepaymentsStartingFromDate, isHolidayEnabled, holidays, workingDays, allowTransactionsOnHoliday, + allowTransactionsOnNonWorkingDay, recalcualteSchedule, restCalendarInstance); } if (!changes.isEmpty()) { saveAndFlushLoanWithDataIntegrityViolationChecks(loan); @@ -467,7 +470,12 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final String txnExternalId = command.stringValueOfParameterNamedAllowingNull("externalId"); if (isAccountTransfer) { disburseLoanToSavings(loan, command, disburseAmount, paymentDetail); + existingTransactionIds.addAll(loan.findExistingTransactionIds()); + existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + } else { + existingTransactionIds.addAll(loan.findExistingTransactionIds()); + existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); LoanTransaction disbursementTransaction = LoanTransaction.disbursement(loan.getOffice(), disburseAmount, paymentDetail, actualDisbursementDate, txnExternalId); disbursementTransaction.updateLoan(loan); @@ -479,10 +487,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf loan.loanInterestRecalculationDetailId(), CalendarEntityType.LOAN_RECALCULATION_DETAIL.getValue()); } - changedTransactionDetail = loan.disburse(this.loanScheduleFactory, currentUser, command, applicationCurrency, - existingTransactionIds, existingReversedTransactionIds, changes, firstRepaymentOnDate, isHolidayEnabled, holidays, - workingDays, allowTransactionsOnHoliday, allowTransactionsOnNonWorkingDay, recalcualteSchedule, - restCalendarInstance); + changedTransactionDetail = loan.disburse(this.loanScheduleFactory, currentUser, command, applicationCurrency, changes, + firstRepaymentOnDate, isHolidayEnabled, holidays, workingDays, allowTransactionsOnHoliday, + allowTransactionsOnNonWorkingDay, recalcualteSchedule, restCalendarInstance); } if (!changes.isEmpty()) {