diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index cc9577fd5..9cd6d310c 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -1052,6 +1052,14 @@ + + + + loans/{loanId}/transactions?command=prepayLoan + Loan Pre-Closure transaction template + + + @@ -9531,7 +9539,39 @@ Request Body: + + +   +
+
+

Pre-Close template

+

This Api retrieves pre closure details of loan

+
+
+ + POST https://DomainName/api/v1/loans/{loanId}/transactions?command=prepayLoan or
+ + https://DomainName/api/v1/loans/{loanId}/transactions?command=prepayLoan&dateFormat=dd+MMMM+yyyy&locale=en&transactionDate=02+April+2015 +
+ + POST loans/70/transactions?command=prepayLoan + Content-Type: application/json + Request Body: + { } + + + { + "amount":7765.28, + "principalPortion":7573.76, + "interestPortion":191.52, + "feeChargesPortion":0.00, + "penaltyChargesPortion":0.00 + } + +
+
+  
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoanTransactionsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoanTransactionsApiResource.java index 5e5c50622..8031af137 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoanTransactionsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoanTransactionsApiResource.java @@ -22,6 +22,8 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; import org.apache.commons.lang.StringUtils; +import org.joda.time.LocalDate; +import org.mifosplatform.accounting.journalentry.api.DateParam; import org.mifosplatform.commands.domain.CommandWrapper; import org.mifosplatform.commands.service.CommandWrapperBuilder; import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService; @@ -30,6 +32,7 @@ import org.mifosplatform.infrastructure.core.data.CommandProcessingResult; import org.mifosplatform.infrastructure.core.exception.UnrecognizedQueryParamException; import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.mifosplatform.infrastructure.core.service.DateUtils; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData; import org.mifosplatform.portfolio.loanaccount.service.LoanReadPlatformService; @@ -79,7 +82,8 @@ public class LoanTransactionsApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String retrieveTransactionTemplate(@PathParam("loanId") final Long loanId, @QueryParam("command") final String commandParam, - @Context final UriInfo uriInfo) { + @Context final UriInfo uriInfo, @QueryParam("dateFormat") final String dateFormat, + @QueryParam("transactionDate") final DateParam transactionDateParam, @QueryParam("locale") final String locale) { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); @@ -101,7 +105,13 @@ public class LoanTransactionsApiResource { } else if (is(commandParam, "recoverypayment")) { transactionData = this.loanReadPlatformService.retrieveRecoveryPaymentTemplate(loanId); } else if (is(commandParam, "prepayLoan")) { - transactionData = this.loanReadPlatformService.retrieveLoanPrePaymentTemplate(loanId); + LocalDate transactionDate = null; + if (transactionDateParam == null) { + transactionDate = DateUtils.getLocalDateOfTenant(); + } else { + transactionDate = LocalDate.fromDateFields(transactionDateParam.getDate("transactionDate", dateFormat, locale)); + } + transactionData = this.loanReadPlatformService.retrieveLoanPrePaymentTemplate(loanId, transactionDate); } else if (is(commandParam, "refundbycash")) { transactionData = this.loanReadPlatformService.retrieveRefundByCashTemplate(loanId); } else if (is(commandParam, "refundbytransfer")) { 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 f55ca52bc..da21d5b9f 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 @@ -4737,7 +4737,7 @@ public class Loan extends AbstractPersistable { } public LoanRepaymentScheduleInstallment fetchPrepaymentDetail(final LoanScheduleGeneratorFactory loanScheduleFactory, - CalendarInstance restCalendarInstance, HolidayDetailDTO holidayDetailDTO) { + CalendarInstance restCalendarInstance, HolidayDetailDTO holidayDetailDTO, LocalDate onDate) { LoanRepaymentScheduleInstallment installment = null; if (this.loanRepaymentScheduleDetail.isInterestRecalculationEnabled()) { @@ -4790,7 +4790,7 @@ public class Loan extends AbstractPersistable { this.loanProduct.preCloseInterestCalculationStrategy()); installment = loanScheduleGenerator.calculatePrepaymentAmount(this.repaymentScheduleInstallments, getCurrency(), - DateUtils.getLocalDateOfTenant(), loanApplicationTerms, mc, charges(), holidayDetailDTO); + onDate, loanApplicationTerms, mc, charges(), holidayDetailDTO); } else { installment = this.getTotalOutstandingOnLoan(); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java index ed5927d43..35e0c66ce 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java @@ -96,7 +96,7 @@ public interface LoanReadPlatformService { Collection fetchArrearLoans(); - LoanTransactionData retrieveLoanPrePaymentTemplate(Long loanId); + LoanTransactionData retrieveLoanPrePaymentTemplate(Long loanId, LocalDate onDate); Collection retrieveWaiverLoanTransactions(Long loanId); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index b8cd1ee64..0a2e9b0b5 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -398,7 +398,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } @Override - public LoanTransactionData retrieveLoanPrePaymentTemplate(final Long loanId) { + public LoanTransactionData retrieveLoanPrePaymentTemplate(final Long loanId, LocalDate onDate) { this.context.authenticatedUser(); @@ -425,7 +425,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { } final LoanRepaymentScheduleInstallment loanRepaymentScheduleInstallment = loan.fetchPrepaymentDetail(this.loanScheduleFactory, - restCalendarInstance, holidayDetailDTO); + restCalendarInstance, holidayDetailDTO, onDate); final LoanTransactionEnumData transactionType = LoanEnumerations.transactionType(LoanTransactionType.REPAYMENT); final Collection paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes(); final BigDecimal outstandingLoanBalance = loanRepaymentScheduleInstallment.getPrincipalOutstanding(currency).getAmount();