From e0beb43f6f4ccebfa1ac9d3d67c0c1fe2f96e706 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Thu, 31 May 2012 17:39:44 +0100 Subject: [PATCH] tidy up loan account data being returned breaking up into basic details, permissions, derived loan data and repayments. --- .../org/mifosng/data/LoanAccountData.java | 592 ------------------ .../views/client/viewClientAccount.jsp | 8 +- .../webapp/WEB-INF/views/view-templates.jsp | 57 +- .../platform/ClosedLoanComparator.java | 15 - .../platform/api/ClientApiResource.java | 2 +- .../platform/api/LoansApiResource.java | 6 +- .../SubmitLoanApplicationCommand.java | 2 +- ...lientLoanAccountSummaryCollectionData.java | 2 +- .../data/ClientLoanAccountSummaryData.java | 2 +- .../platform/api/data/ConfigurationData.java | 1 - .../platform/api}/data/CurrencyData.java | 2 +- .../platform/api}/data/DerivedLoanData.java | 2 +- .../platform/api/data/LoanAccountData.java | 55 ++ .../api}/data/LoanAccountSummaryData.java | 2 +- .../api/data/LoanBasicDetailsData.java | 363 +++++++++++ .../platform/api/data/LoanPermissionData.java | 110 ++++ .../platform/api/data/LoanProductData.java | 2 - .../platform/api}/data/LoanRepaymentData.java | 2 +- .../api}/data/LoanRepaymentPeriodData.java | 2 +- .../api}/data/LoanRepaymentScheduleData.java | 2 +- .../platform/api}/data/LoanSchedule.java | 2 +- .../mifosng/platform/api}/data/MoneyData.java | 2 +- .../platform/api/data/NewLoanData.java | 1 - .../api}/data/ScheduledLoanInstallment.java | 2 +- .../service/ClientReadPlatformService.java | 2 +- .../ClientReadPlatformServiceImpl.java | 4 +- .../ConfigurationReadPlatformServiceImpl.java | 2 +- .../service/CurrencyReadPlatformService.java | 2 +- .../CurrencyReadPlatformServiceImpl.java | 2 +- .../loan/domain/DerivedLoanDataProcessor.java | 14 +- .../mifosng/platform/loan/domain/Loan.java | 66 +- .../domain/LoanRepaymentDataComparator.java | 2 +- .../service/CalculationPlatformService.java | 2 +- .../CalculationPlatformServiceImpl.java | 6 +- .../platform/loan/service/LoanAssembler.java | 6 +- .../loan/service/LoanPayoffReadModel.java | 2 +- .../loan/service/LoanReadPlatformService.java | 4 +- .../service/LoanReadPlatformServiceImpl.java | 137 ++-- .../LoanStateTransitionCommandValidator.java | 2 +- .../LoanTransactionCommandValidator.java | 26 +- ...WritePlatformServiceJpaRepositoryImpl.java | 6 +- ...SubmitLoanApplicationCommandValidator.java | 2 +- .../LoanProductReadPlatformServiceImpl.java | 4 +- ...ingBalanceMethodLoanScheduleGenerator.java | 8 +- .../domain/FlatLoanScheduleGenerator.java | 8 +- .../domain/LoanScheduleGenerator.java | 4 +- .../domain/DerivedLoanDataProcessorTest.java | 12 +- 47 files changed, 743 insertions(+), 816 deletions(-) delete mode 100644 mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java delete mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/ClosedLoanComparator.java rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/ClientLoanAccountSummaryCollectionData.java (98%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/ClientLoanAccountSummaryData.java (98%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/CurrencyData.java (97%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/DerivedLoanData.java (96%) create mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/LoanAccountSummaryData.java (98%) create mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanBasicDetailsData.java create mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanPermissionData.java rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/LoanRepaymentData.java (98%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/LoanRepaymentPeriodData.java (99%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/LoanRepaymentScheduleData.java (93%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/LoanSchedule.java (98%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/MoneyData.java (99%) rename {mifosng-data/src/main/java/org/mifosng => mifosng-provider/src/main/java/org/mifosng/platform/api}/data/ScheduledLoanInstallment.java (98%) diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java b/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java deleted file mode 100644 index 9d32908b5..000000000 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountData.java +++ /dev/null @@ -1,592 +0,0 @@ -package org.mifosng.data; - -import java.math.BigDecimal; - -import javax.xml.bind.annotation.XmlRootElement; - -import org.codehaus.jackson.map.annotate.JsonFilter; -import org.joda.time.DateTime; -import org.joda.time.Days; -import org.joda.time.LocalDate; -import org.joda.time.Months; - -@XmlRootElement(name = "loan") -@JsonFilter("loanFilter") -public class LoanAccountData { - - private boolean open; - private boolean openWithRepaymentMade; - private boolean closed; - private boolean interestRebateOutstanding; - private boolean pendingApproval; - private boolean waitingForDisbursal; - private String lifeCycleStatusText; - private LocalDate lifeCycleStatusDate; - - private Long id; - private String externalId; - private String loanProductName; - - private LocalDate submittedOnDate; - private LocalDate approvedOnDate; - - private LocalDate expectedDisbursementDate; - private LocalDate actualDisbursementDate; - private boolean undoDisbursalAllowed; - - private LocalDate expectedFirstRepaymentOnDate; - private LocalDate interestCalculatedFromDate; - - private LocalDate closedOnDate; - - private LocalDate expectedMaturityDate; - - private MoneyData principal; - private BigDecimal interestRatePerYear; - private BigDecimal interestRatePerPeriod; - private Integer interestPeriodFrequencyType; - private String interestPeriodFrequencyText; - private Integer interestMethodType; - private String interestMethodText; - private Integer amortizationMethodValue; - private String amortizationMethodText; - private Integer numberOfRepayments; - - private Integer repaymentFrequencyNumber; - private Integer repaymentFrequencyTypeEnumOrdinal; - private String repaymentFrequencyTypeText; - - private MoneyData interestRebateOwed; - - private DerivedLoanData loanData; - private MoneyData arrearsTolerance; - - // permissions on actions against loan based on the user who request loan data. - private boolean waiveAllowed; - private boolean makeRepaymentAllowed; - private boolean rejectAllowed; - private boolean withdrawnByApplicantAllowed; - private boolean undoApprovalAllowed; - private boolean disbursalAllowed; - - public LoanAccountData() { - // - } - - public LoanAccountData( - final boolean closed, - final boolean open, - final boolean openWithRepaymentMade, - final boolean interestRebateOutstanding, - final boolean pendingApproval, - final boolean waitingForDisbursal, - final boolean undoDisbursalAllowed, - final boolean makeRepaymentAllowed, - final boolean rejectAllowed, - final boolean withdrawnByApplicantAllowed, final boolean undoApprovalAllowed, final boolean disbursalAllowed, - final String lifeCycleStatusText, - final LocalDate lifeCycleStatusDate, - final Long id, String externalId, - final String loanProductName, final LocalDate closedOnDate, - final LocalDate submittedOnDate, - final LocalDate approvedOnDate, - final LocalDate expectedDisbursementDate, - final LocalDate actualDisbursementDate, - final LocalDate expectedMaturityDate, - final LocalDate expectedFirstRepaymentOnDate, - final LocalDate interestCalculatedFromDate, - final MoneyData principal, final BigDecimal interestRatePerYear, - final BigDecimal interestRatePerPeriod, - final Integer interestPeriodFrequencyType, - final String interestPeriodFrequencyText, - final Integer interestMethodType, - final String interestMethodText, - final Integer amortizationMethodValue, - final String amortizationMethodText, - final Integer numberOfRepayments, - final Integer repayEvery, - final Integer repaymentFrequencyValue, - final String repaymentFrequencyText, - final MoneyData arrearsTolerance, final DerivedLoanData derivedLoanData, - boolean waiveAllowed, final MoneyData interestRebateOwed) { - this.closed = closed; - this.open = open; - this.openWithRepaymentMade = openWithRepaymentMade; - this.makeRepaymentAllowed = makeRepaymentAllowed; - this.rejectAllowed = rejectAllowed; - this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; - this.undoApprovalAllowed = undoApprovalAllowed; - this.disbursalAllowed = disbursalAllowed; - this.lifeCycleStatusDate = lifeCycleStatusDate; - this.externalId = externalId; - this.undoDisbursalAllowed = undoDisbursalAllowed; - this.interestRebateOutstanding = interestRebateOutstanding; - this.pendingApproval = pendingApproval; - this.waitingForDisbursal = waitingForDisbursal; - this.lifeCycleStatusText = lifeCycleStatusText; - this.id = id; - this.loanProductName = loanProductName; - this.closedOnDate = closedOnDate; - this.submittedOnDate = submittedOnDate; - this.approvedOnDate = approvedOnDate; - this.expectedDisbursementDate = expectedDisbursementDate; - this.actualDisbursementDate = actualDisbursementDate; - this.expectedMaturityDate = expectedMaturityDate; - this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; - this.interestCalculatedFromDate = interestCalculatedFromDate; - this.principal = principal; - this.interestRatePerYear = interestRatePerYear; - - this.interestRatePerPeriod = interestRatePerPeriod; - this.interestPeriodFrequencyType = interestPeriodFrequencyType; - this.interestPeriodFrequencyText = interestPeriodFrequencyText; - this.interestMethodType = interestMethodType; - this.interestMethodText = interestMethodText; - this.amortizationMethodValue = amortizationMethodValue; - this.amortizationMethodText = amortizationMethodText; - this.numberOfRepayments = numberOfRepayments; - - this.repaymentFrequencyNumber = repayEvery; - this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyValue; - this.repaymentFrequencyTypeText = repaymentFrequencyText; - this.arrearsTolerance = arrearsTolerance; - this.waiveAllowed = waiveAllowed; - - this.loanData = derivedLoanData; - this.interestRebateOwed = interestRebateOwed; - } - - public boolean isAnyActionOnLoanAllowed() { - return isRejectAllowed() || isWithdrawnByApplicantAllowed() || isPendingApproval() || isUndoDisbursalAllowed() || isMakeRepaymentAllowed(); - } - - public int getMaxSubmittedOnOffsetFromToday() { - return Days.daysBetween(new DateTime(), - this.getSubmittedOnDate().toDateMidnight().toDateTime()) - .getDays(); - } - - public int getMaxApprovedOnOffsetFromToday() { - - int offset = 0; - if (this.getApprovedOnDate() != null) { - offset = Days.daysBetween(new DateTime(), - this.getApprovedOnDate().toDateMidnight().toDateTime()) - .getDays(); - } - - return offset; - } - - public int getMaxDisbursedOnOffsetFromToday() { - - int offset = 0; - if (this.getActualDisbursementDate() != null) { - offset = Days.daysBetween(new DateTime(), - this.getActualDisbursementDate().toDateMidnight().toDateTime()) - .getDays(); - } - - return offset; - } - - public int getActualLoanTermInDays() { - - LocalDate dateToUse = getExpectedDisbursementDate(); - if (getActualDisbursementDate() != null) { - dateToUse = getActualDisbursementDate(); - } - - LocalDate closingDateToUse = getExpectedMaturityDate(); - if (getClosedOnDate() != null) { - closingDateToUse = getClosedOnDate(); - } - - return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); - } - - public int getActualLoanTermInMonths() { - - LocalDate dateToUse = getExpectedDisbursementDate(); - if (getActualDisbursementDate() != null) { - dateToUse = getActualDisbursementDate(); - } - - LocalDate closingDateToUse = getExpectedMaturityDate(); - if (getClosedOnDate() != null) { - closingDateToUse = getClosedOnDate(); - } - - return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); - } - - public int getLoanTermInDays() { - - LocalDate dateToUse = getExpectedDisbursementDate(); - if (getActualDisbursementDate() != null) { - dateToUse = getActualDisbursementDate(); - } - - LocalDate closingDateToUse = getExpectedMaturityDate(); - - return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); - } - - public int getLoanTermInMonths() { - - LocalDate dateToUse = getExpectedDisbursementDate(); - if (getActualDisbursementDate() != null) { - dateToUse = getActualDisbursementDate(); - } - - LocalDate closingDateToUse = getExpectedMaturityDate(); - - return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); - } - - public boolean isOpen() { - return this.open; - } - - public void setOpen(final boolean open) { - this.open = open; - } - - public boolean isClosed() { - return this.closed; - } - - public void setClosed(final boolean closed) { - this.closed = closed; - } - - public boolean isInterestRebateOutstanding() { - return this.interestRebateOutstanding; - } - - public void setInterestRebateOutstanding( - final boolean interestRebateOutstanding) { - this.interestRebateOutstanding = interestRebateOutstanding; - } - - public boolean isPendingApproval() { - return this.pendingApproval; - } - - public void setPendingApproval(final boolean pendingApproval) { - this.pendingApproval = pendingApproval; - } - - public boolean isWaitingForDisbursal() { - return this.waitingForDisbursal; - } - - public void setWaitingForDisbursal(final boolean waitingForDisbursal) { - this.waitingForDisbursal = waitingForDisbursal; - } - - public LocalDate getClosedOnDate() { - return this.closedOnDate; - } - - public void setClosedOnDate(final LocalDate closedOnDate) { - this.closedOnDate = closedOnDate; - } - - public LocalDate getSubmittedOnDate() { - return this.submittedOnDate; - } - - public void setSubmittedOnDate(final LocalDate submittedOnDate) { - this.submittedOnDate = submittedOnDate; - } - - public Long getId() { - return this.id; - } - - public void setId(final Long id) { - this.id = id; - } - - public LocalDate getExpectedDisbursementDate() { - return this.expectedDisbursementDate; - } - - public void setExpectedDisbursementDate( - final LocalDate expectedDisbursementDate) { - this.expectedDisbursementDate = expectedDisbursementDate; - } - - public LocalDate getActualDisbursementDate() { - return this.actualDisbursementDate; - } - - public void setActualDisbursementDate(final LocalDate actualDisbursementDate) { - this.actualDisbursementDate = actualDisbursementDate; - } - - public MoneyData getPrincipal() { - return this.principal; - } - - public void setPrincipal(final MoneyData principal) { - this.principal = principal; - } - - public BigDecimal getInterestRatePerYear() { - return this.interestRatePerYear; - } - - public void setInterestRatePerYear(final BigDecimal interestRatePerYear) { - this.interestRatePerYear = interestRatePerYear; - } - - public Integer getRepaymentFrequencyNumber() { - return this.repaymentFrequencyNumber; - } - - public void setRepaymentFrequencyNumber( - final Integer repaymentFrequencyNumber) { - this.repaymentFrequencyNumber = repaymentFrequencyNumber; - } - - public Integer getRepaymentFrequencyTypeEnumOrdinal() { - return this.repaymentFrequencyTypeEnumOrdinal; - } - - public void setRepaymentFrequencyTypeEnumOrdinal( - final Integer repaymentFrequencyTypeEnumOrdinal) { - this.repaymentFrequencyTypeEnumOrdinal = repaymentFrequencyTypeEnumOrdinal; - } - - public String getRepaymentFrequencyTypeText() { - return this.repaymentFrequencyTypeText; - } - - public void setRepaymentFrequencyTypeText( - final String repaymentFrequencyTypeText) { - this.repaymentFrequencyTypeText = repaymentFrequencyTypeText; - } - - public String getLoanProductName() { - return this.loanProductName; - } - - public void setLoanProductName(final String loanProductName) { - this.loanProductName = loanProductName; - } - - public LocalDate getApprovedOnDate() { - return this.approvedOnDate; - } - - public void setApprovedOnDate(final LocalDate approvedOnDate) { - this.approvedOnDate = approvedOnDate; - } - - public MoneyData getInterestRebateOwed() { - return this.interestRebateOwed; - } - - public void setInterestRebateOwed(final MoneyData interestRebateOwed) { - this.interestRebateOwed = interestRebateOwed; - } - - public String getLifeCycleStatusText() { - return this.lifeCycleStatusText; - } - - public void setLifeCycleStatusText(final String lifeCycleStatusText) { - this.lifeCycleStatusText = lifeCycleStatusText; - } - - public LocalDate getExpectedMaturityDate() { - return this.expectedMaturityDate; - } - - public void setMaturityDate(final LocalDate maturityDate) { - this.expectedMaturityDate = maturityDate; - } - - public boolean isOpenWithRepaymentMade() { - return this.openWithRepaymentMade; - } - - public void setOpenWithRepaymentMade(final boolean openWithRepaymentMade) { - this.openWithRepaymentMade = openWithRepaymentMade; - } - - public boolean isUndoDisbursalAllowed() { - return this.undoDisbursalAllowed; - } - - public void setUndoDisbursalAllowed(final boolean undoDisbursalAllowed) { - this.undoDisbursalAllowed = undoDisbursalAllowed; - } - - public String getExternalId() { - return externalId; - } - - public void setExternalId(String externalId) { - this.externalId = externalId; - } - - public BigDecimal getInterestRatePerPeriod() { - return interestRatePerPeriod; - } - - public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { - this.interestRatePerPeriod = interestRatePerPeriod; - } - - public Integer getInterestPeriodFrequencyType() { - return interestPeriodFrequencyType; - } - - public void setInterestPeriodFrequencyType(Integer interestPeriodFrequencyType) { - this.interestPeriodFrequencyType = interestPeriodFrequencyType; - } - - public String getInterestPeriodFrequencyText() { - return interestPeriodFrequencyText; - } - - public void setInterestPeriodFrequencyText(String interestPeriodFrequencyText) { - this.interestPeriodFrequencyText = interestPeriodFrequencyText; - } - - public Integer getInterestMethodType() { - return interestMethodType; - } - - public void setInterestMethodType(Integer interestMethodType) { - this.interestMethodType = interestMethodType; - } - - public String getInterestMethodText() { - return interestMethodText; - } - - public void setInterestMethodText(String interestMethodText) { - this.interestMethodText = interestMethodText; - } - - public Integer getAmortizationMethodValue() { - return amortizationMethodValue; - } - - public void setAmortizationMethodValue(Integer amortizationMethodValue) { - this.amortizationMethodValue = amortizationMethodValue; - } - - public String getAmortizationMethodText() { - return amortizationMethodText; - } - - public void setAmortizationMethodText(String amortizationMethodText) { - this.amortizationMethodText = amortizationMethodText; - } - - public Integer getNumberOfRepayments() { - return numberOfRepayments; - } - - public void setNumberOfRepayments(Integer numberOfRepayments) { - this.numberOfRepayments = numberOfRepayments; - } - - public DerivedLoanData getLoanData() { - return loanData; - } - - public void setLoanData(DerivedLoanData loanData) { - this.loanData = loanData; - } - - public MoneyData getArrearsTolerance() { - return arrearsTolerance; - } - - public void setArrearsTolerance(MoneyData arrearsTolerance) { - this.arrearsTolerance = arrearsTolerance; - } - - public boolean isWaiveAllowed() { - return waiveAllowed; - } - - public void setWaiveAllowed(boolean waiveAllowed) { - this.waiveAllowed = waiveAllowed; - } - - public boolean isMakeRepaymentAllowed() { - return makeRepaymentAllowed; - } - - public void setMakeRepaymentAllowed(boolean makeRepaymentAllowed) { - this.makeRepaymentAllowed = makeRepaymentAllowed; - } - - public LocalDate getLifeCycleStatusDate() { - return lifeCycleStatusDate; - } - - public void setLifeCycleStatusDate(LocalDate lifeCycleStatusDate) { - this.lifeCycleStatusDate = lifeCycleStatusDate; - } - - public boolean isRejectAllowed() { - return rejectAllowed; - } - - public void setRejectAllowed(boolean rejectAllowed) { - this.rejectAllowed = rejectAllowed; - } - - public boolean isWithdrawnByApplicantAllowed() { - return withdrawnByApplicantAllowed; - } - - public void setWithdrawnByApplicantAllowed(boolean withdrawnByApplicantAllowed) { - this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; - } - - public boolean isUndoApprovalAllowed() { - return undoApprovalAllowed; - } - - public void setUndoApprovalAllowed(boolean undoApprovalAllowed) { - this.undoApprovalAllowed = undoApprovalAllowed; - } - - public boolean isDisbursalAllowed() { - return disbursalAllowed; - } - - public void setDisbursalAllowed(boolean disbursalAllowed) { - this.disbursalAllowed = disbursalAllowed; - } - - public LocalDate getExpectedFirstRepaymentOnDate() { - return expectedFirstRepaymentOnDate; - } - - public void setExpectedFirstRepaymentOnDate( - LocalDate expectedFirstRepaymentOnDate) { - this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; - } - - public LocalDate getInterestCalculatedFromDate() { - return interestCalculatedFromDate; - } - - public void setInterestCalculatedFromDate(LocalDate interestCalculatedFromDate) { - this.interestCalculatedFromDate = interestCalculatedFromDate; - } - - public void setExpectedMaturityDate(LocalDate expectedMaturityDate) { - this.expectedMaturityDate = expectedMaturityDate; - } -} \ No newline at end of file diff --git a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp index 2bb2a6d45..9414a3ae1 100644 --- a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp +++ b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp @@ -532,9 +532,9 @@ $(document).ready(function() { var curTabID = currentTab.prop("id") - offsetToSubmittedDate = data.maxSubmittedOnOffsetFromToday; - offsetToApprovalDate = data.maxApprovedOnOffsetFromToday; - offsetToDisbursalDate = data.maxDisbursedOnOffsetFromToday; + offsetToSubmittedDate = data.basicDetails.maxSubmittedOnOffsetFromToday; + offsetToApprovalDate = data.basicDetails.maxApprovedOnOffsetFromToday; + offsetToDisbursalDate = data.basicDetails.maxDisbursedOnOffsetFromToday; var $loantabs = $(".loantabs").tabs({ "show": function(event, ui) { @@ -715,7 +715,7 @@ $(document).ready(function() { basicAuthKey: base64, datasetType: "portfolio_loan", datasetPKValue: data.id, - datasetTypeDiv: "loanadditionaldata" + data.id, + datasetTypeDiv: "loanadditionaldata" + data.basicDetails.id, headingPrefix: "", headingClass: "", labelClass: "longrowlabel", diff --git a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp index 22e6537f9..ec5a91a4d 100644 --- a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp +++ b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp @@ -466,64 +466,66 @@ 'CAN_REJECT_LOAN_ROLE', 'CAN_REJECT_LOAN_IN_THE_PAST_ROLE', 'CAN_WITHDRAW_LOAN_ROLE', 'CAN_WITHDRAW_LOAN_IN_THE_PAST_ROLE', 'CAN_DELETE_LOAN_THAT_IS_SUBMITTED_AND_NOT_APPROVED', 'CAN_UNDO_LOAN_APPROVAL_ROLE', 'CAN_MAKE_LOAN_REPAYMENT_ROLE', 'CAN_MAKE_LOAN_REPAYMENT_IN_THE_PAST_ROLE')"> +{{#each permissions}} {{#if anyActionOnLoanAllowed}}
{{#if rejectAllowed}} - + {{/if}} {{#if withdrawnByApplicantAllowed}} - + {{/if}} {{#if pendingApproval}} - + {{/if}} {{#if pendingApproval}} - + {{/if}} {{#if undoApprovalAllowed}} - + {{/if}} {{#if disbursalAllowed}} - + {{/if}} - {{#if undoDisbursalAllowed}} - - {{/if}} + {{#if undoDisbursalAllowed}} + + {{/if}} {{#if makeRepaymentAllowed}} - + {{/if}} {{#if waiveAllowed}} - + {{/if}}
{{/if}} +{{/each}}
+ + {{#each basicDetails}}
- {{=lifeCycleStatusText}} ( {{=$ctx.globalDate(lifeCycleStatusDate)}}) - {{#if $ctx.numberGreaterThanZero(loanData.summary.totalInArrears.amount)}} - {{#if open}} - - {{=$ctx.moneyWithCurrency(loanData.summary.totalInArrears)}} - {{/if}} - {{/if}} + {{=lifeCycleStatusText}} ( {{=$ctx.globalDate(lifeCycleStatusDate)}}) +{{#if $ctx.numberGreaterThanZero($parent.data.loanData.summary.totalInArrears.amount)}} + {{#if actualDisbursementDate !== null}} + - {{=$ctx.moneyWithCurrency($parent.parent.parent.data.loanData.summary.totalInArrears)}} + {{/if}} +{{/if}}
@@ -581,14 +585,14 @@
{{/if}} - {{#if interestCalculatedFromDate !== null}} + {{#if interestChargedFromDate !== null}}
- {{=$ctx.globalDate(interestCalculatedFromDate)}} + {{=$ctx.globalDate(interestChargedFromDate)}}
{{/if}} - {{#if open}} + {{#if actualDisbursementDate !== null}}
{{=$ctx.globalDate(expectedMaturityDate)}} @@ -634,23 +638,24 @@
- {{=numberOfRepayments}} every {{=repaymentFrequencyNumber}} {{=repaymentFrequencyTypeText}} + {{=numberOfRepayments}} every {{=repaymentEvery}} {{=repaymentFrequencyType.value}}
- {{=amortizationMethodText}} + {{=amortizationType.value}}
- {{=$ctx.decimal(interestRatePerYear, 4)}}% per annum ({{=$ctx.decimal(interestRatePerPeriod, 4)}}%  per {{=interestPeriodFrequencyText}}) - {{=interestMethodText}} + {{=$ctx.decimal(annualInterestRate, 4)}}% per annum ({{=$ctx.decimal(interestRatePerPeriod, 4)}}%  {{=interestRateFrequencyType.value}}) - {{=interestType.value}}
+ {{/each}} -
- +
+
@@ -690,7 +695,7 @@
-
+
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ClosedLoanComparator.java b/mifosng-provider/src/main/java/org/mifosng/platform/ClosedLoanComparator.java deleted file mode 100644 index f56900ec8..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ClosedLoanComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.mifosng.platform; - -import java.util.Comparator; - -import org.mifosng.data.LoanAccountData; - -public class ClosedLoanComparator implements Comparator { - - @Override - public int compare(final LoanAccountData o1, - final LoanAccountData o2) { - return o1.getClosedOnDate().compareTo(o2.getClosedOnDate()); - } - -} diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientApiResource.java index 8d698917c..8be7c33e6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientApiResource.java @@ -17,10 +17,10 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.joda.time.LocalDate; -import org.mifosng.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.commands.ClientCommand; import org.mifosng.platform.api.commands.NoteCommand; import org.mifosng.platform.api.data.ClientData; +import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.NoteData; import org.mifosng.platform.api.data.OfficeLookup; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java index b1116f1a2..4ccb1efed 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java @@ -18,9 +18,6 @@ import javax.ws.rs.core.UriInfo; import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; -import org.mifosng.data.LoanAccountData; -import org.mifosng.data.LoanRepaymentData; -import org.mifosng.data.LoanSchedule; import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; import org.mifosng.platform.api.commands.LoanStateTransitionCommand; @@ -28,6 +25,9 @@ import org.mifosng.platform.api.commands.LoanTransactionCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UndoStateTransitionCommand; import org.mifosng.platform.api.data.EntityIdentifier; +import org.mifosng.platform.api.data.LoanAccountData; +import org.mifosng.platform.api.data.LoanRepaymentData; +import org.mifosng.platform.api.data.LoanSchedule; import org.mifosng.platform.api.data.NewLoanData; import org.mifosng.platform.api.infrastructure.ApiDataConversionService; import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/SubmitLoanApplicationCommand.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/SubmitLoanApplicationCommand.java index 6665459ae..c1f5f6d1f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/SubmitLoanApplicationCommand.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/commands/SubmitLoanApplicationCommand.java @@ -5,7 +5,7 @@ import java.math.BigDecimal; import javax.xml.bind.annotation.XmlRootElement; import org.joda.time.LocalDate; -import org.mifosng.data.LoanSchedule; +import org.mifosng.platform.api.data.LoanSchedule; @XmlRootElement public class SubmitLoanApplicationCommand { diff --git a/mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryCollectionData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryCollectionData.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryCollectionData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryCollectionData.java index 3050b8bf0..d2059ebbc 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryCollectionData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryCollectionData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.util.ArrayList; import java.util.List; diff --git a/mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java index 6287c85b2..0aa0aacc6 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/ClientLoanAccountSummaryData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.io.Serializable; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ConfigurationData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ConfigurationData.java index 9da380973..9e922029a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ConfigurationData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ConfigurationData.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.map.annotate.JsonFilter; -import org.mifosng.data.CurrencyData; @JsonFilter("myFilter") public class ConfigurationData implements Serializable { diff --git a/mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java similarity index 97% rename from mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java index 96b524328..e3b002b06 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/CurrencyData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.io.Serializable; diff --git a/mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java similarity index 96% rename from mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java index efe35b4a2..88ccb7cb3 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/DerivedLoanData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.util.List; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java new file mode 100644 index 000000000..540437be6 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java @@ -0,0 +1,55 @@ +package org.mifosng.platform.api.data; + +import org.codehaus.jackson.map.annotate.JsonFilter; + +@JsonFilter("loanFilter") +public class LoanAccountData { + + private Long id; + private LoanBasicDetailsData basicDetails; + private DerivedLoanData loanData; + private LoanPermissionData permissions; + + protected LoanAccountData() { + // + } + + public LoanAccountData(Long id, LoanBasicDetailsData basicDetails, DerivedLoanData loanData, LoanPermissionData permissions) { + this.id = id; + this.basicDetails = basicDetails; + this.loanData = loanData; + this.permissions = permissions; + } + + public LoanPermissionData getPermissions() { + return permissions; + } + + public void setPermissions(LoanPermissionData permissions) { + this.permissions = permissions; + } + + public LoanBasicDetailsData getBasicDetails() { + return basicDetails; + } + + public void setBasicDetails(LoanBasicDetailsData basicDetails) { + this.basicDetails = basicDetails; + } + + public DerivedLoanData getLoanData() { + return loanData; + } + + public void setLoanData(DerivedLoanData loanData) { + this.loanData = loanData; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} \ No newline at end of file diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java index 1021c6ca6..133652201 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanAccountSummaryData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import javax.xml.bind.annotation.XmlRootElement; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanBasicDetailsData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanBasicDetailsData.java new file mode 100644 index 000000000..30e30456b --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanBasicDetailsData.java @@ -0,0 +1,363 @@ +package org.mifosng.platform.api.data; + +import java.math.BigDecimal; + +import org.joda.time.DateTime; +import org.joda.time.Days; +import org.joda.time.LocalDate; +import org.joda.time.Months; + +public class LoanBasicDetailsData { + + private Long id; + private String externalId; + private String loanProductName; + + private LocalDate submittedOnDate; + private LocalDate approvedOnDate; + private LocalDate expectedDisbursementDate; + private LocalDate actualDisbursementDate; + private LocalDate expectedFirstRepaymentOnDate; + private LocalDate interestChargedFromDate; + private LocalDate closedOnDate; + private LocalDate expectedMaturityDate; + + private MoneyData principal; + private MoneyData inArrearsTolerance; + + private Integer numberOfRepayments; + private Integer repaymentEvery; + private BigDecimal interestRatePerPeriod; + private BigDecimal annualInterestRate; + + private EnumOptionData repaymentFrequencyType; + private EnumOptionData interestRateFrequencyType; + private EnumOptionData amortizationType; + private EnumOptionData interestType; + private EnumOptionData interestCalculationPeriodType; + + private String lifeCycleStatusText; + private LocalDate lifeCycleStatusDate; + + protected LoanBasicDetailsData() { + // + } + + public LoanBasicDetailsData(Long id, String externalId, + String loanProductName, LocalDate closedOnDate, + LocalDate submittedOnDate, LocalDate approvedOnDate, + LocalDate expectedDisbursedOnLocalDate, + LocalDate acutalDisbursedOnLocalDate, + LocalDate expectedMaturityDate, + LocalDate expectedFirstRepaymentOnDate, + LocalDate interestChargedFromDate, + MoneyData principal, MoneyData inArrearsTolerance, Integer numberOfRepayments, Integer repaymentEvery, + BigDecimal interestRatePerPeriod, BigDecimal annualInterestRate, + EnumOptionData repaymentFrequencyType, EnumOptionData interestRateFrequencyType, EnumOptionData amortizationType, + EnumOptionData interestType, EnumOptionData interestCalculationPeriodType, + String lifeCycleStatusText, LocalDate lifeCycleStatusDate) { + this.id = id; + this.externalId = externalId; + this.loanProductName = loanProductName; + this.closedOnDate = closedOnDate; + this.submittedOnDate = submittedOnDate; + this.approvedOnDate = approvedOnDate; + this.expectedDisbursementDate = expectedDisbursedOnLocalDate; + actualDisbursementDate = acutalDisbursedOnLocalDate; + this.expectedMaturityDate = expectedMaturityDate; + this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; + this.interestChargedFromDate = interestChargedFromDate; + this.principal = principal; + this.inArrearsTolerance = inArrearsTolerance; + this.numberOfRepayments = numberOfRepayments; + this.repaymentEvery = repaymentEvery; + this.interestRatePerPeriod = interestRatePerPeriod; + this.annualInterestRate = annualInterestRate; + this.repaymentFrequencyType = repaymentFrequencyType; + this.interestRateFrequencyType = interestRateFrequencyType; + this.amortizationType = amortizationType; + this.interestType = interestType; + this.interestCalculationPeriodType = interestCalculationPeriodType; + this.lifeCycleStatusText = lifeCycleStatusText; + this.lifeCycleStatusDate = lifeCycleStatusDate; + } + + public int getMaxSubmittedOnOffsetFromToday() { + return Days.daysBetween(new DateTime(), + this.getSubmittedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + public int getMaxApprovedOnOffsetFromToday() { + + int offset = 0; + if (this.getApprovedOnDate() != null) { + offset = Days.daysBetween(new DateTime(), + this.getApprovedOnDate().toDateMidnight().toDateTime()) + .getDays(); + } + + return offset; + } + + public int getMaxDisbursedOnOffsetFromToday() { + + int offset = 0; + if (this.getActualDisbursementDate() != null) { + offset = Days.daysBetween(new DateTime(), + this.getActualDisbursementDate().toDateMidnight().toDateTime()) + .getDays(); + } + + return offset; + } + + public int getActualLoanTermInDays() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + if (getClosedOnDate() != null) { + closingDateToUse = getClosedOnDate(); + } + + return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); + } + + public int getActualLoanTermInMonths() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + if (getClosedOnDate() != null) { + closingDateToUse = getClosedOnDate(); + } + + return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); + } + + public int getLoanTermInDays() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + + return Days.daysBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getDays(); + } + + public int getLoanTermInMonths() { + + LocalDate dateToUse = getExpectedDisbursementDate(); + if (getActualDisbursementDate() != null) { + dateToUse = getActualDisbursementDate(); + } + + LocalDate closingDateToUse = getExpectedMaturityDate(); + + return Months.monthsBetween(dateToUse.toDateMidnight().toDateTime(), closingDateToUse.toDateMidnight().toDateTime()).getMonths(); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getLoanProductName() { + return loanProductName; + } + + public void setLoanProductName(String loanProductName) { + this.loanProductName = loanProductName; + } + + public LocalDate getSubmittedOnDate() { + return submittedOnDate; + } + + public void setSubmittedOnDate(LocalDate submittedOnDate) { + this.submittedOnDate = submittedOnDate; + } + + public LocalDate getApprovedOnDate() { + return approvedOnDate; + } + + public void setApprovedOnDate(LocalDate approvedOnDate) { + this.approvedOnDate = approvedOnDate; + } + + public LocalDate getExpectedDisbursementDate() { + return expectedDisbursementDate; + } + + public void setExpectedDisbursementDate(LocalDate expectedDisbursementDate) { + this.expectedDisbursementDate = expectedDisbursementDate; + } + + public LocalDate getActualDisbursementDate() { + return actualDisbursementDate; + } + + public void setActualDisbursementDate(LocalDate actualDisbursementDate) { + this.actualDisbursementDate = actualDisbursementDate; + } + + public LocalDate getExpectedFirstRepaymentOnDate() { + return expectedFirstRepaymentOnDate; + } + + public void setExpectedFirstRepaymentOnDate( + LocalDate expectedFirstRepaymentOnDate) { + this.expectedFirstRepaymentOnDate = expectedFirstRepaymentOnDate; + } + + public LocalDate getInterestChargedFromDate() { + return interestChargedFromDate; + } + + public void setInterestChargedFromDate(LocalDate interestChargedFromDate) { + this.interestChargedFromDate = interestChargedFromDate; + } + + public LocalDate getClosedOnDate() { + return closedOnDate; + } + + public void setClosedOnDate(LocalDate closedOnDate) { + this.closedOnDate = closedOnDate; + } + + public LocalDate getExpectedMaturityDate() { + return expectedMaturityDate; + } + + public void setExpectedMaturityDate(LocalDate expectedMaturityDate) { + this.expectedMaturityDate = expectedMaturityDate; + } + + public MoneyData getPrincipal() { + return principal; + } + + public void setPrincipal(MoneyData principal) { + this.principal = principal; + } + + public MoneyData getInArrearsTolerance() { + return inArrearsTolerance; + } + + public void setInArrearsTolerance(MoneyData inArrearsTolerance) { + this.inArrearsTolerance = inArrearsTolerance; + } + + public Integer getNumberOfRepayments() { + return numberOfRepayments; + } + + public void setNumberOfRepayments(Integer numberOfRepayments) { + this.numberOfRepayments = numberOfRepayments; + } + + public Integer getRepaymentEvery() { + return repaymentEvery; + } + + public void setRepaymentEvery(Integer repaymentEvery) { + this.repaymentEvery = repaymentEvery; + } + + public BigDecimal getInterestRatePerPeriod() { + return interestRatePerPeriod; + } + + public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) { + this.interestRatePerPeriod = interestRatePerPeriod; + } + + public BigDecimal getAnnualInterestRate() { + return annualInterestRate; + } + + public void setAnnualInterestRate(BigDecimal annualInterestRate) { + this.annualInterestRate = annualInterestRate; + } + + public EnumOptionData getRepaymentFrequencyType() { + return repaymentFrequencyType; + } + + public void setRepaymentFrequencyType(EnumOptionData repaymentFrequencyType) { + this.repaymentFrequencyType = repaymentFrequencyType; + } + + public EnumOptionData getInterestRateFrequencyType() { + return interestRateFrequencyType; + } + + public void setInterestRateFrequencyType( + EnumOptionData interestRateFrequencyType) { + this.interestRateFrequencyType = interestRateFrequencyType; + } + + public EnumOptionData getAmortizationType() { + return amortizationType; + } + + public void setAmortizationType(EnumOptionData amortizationType) { + this.amortizationType = amortizationType; + } + + public EnumOptionData getInterestType() { + return interestType; + } + + public void setInterestType(EnumOptionData interestType) { + this.interestType = interestType; + } + + public EnumOptionData getInterestCalculationPeriodType() { + return interestCalculationPeriodType; + } + + public void setInterestCalculationPeriodType( + EnumOptionData interestCalculationPeriodType) { + this.interestCalculationPeriodType = interestCalculationPeriodType; + } + + public String getLifeCycleStatusText() { + return lifeCycleStatusText; + } + + public void setLifeCycleStatusText(String lifeCycleStatusText) { + this.lifeCycleStatusText = lifeCycleStatusText; + } + + public LocalDate getLifeCycleStatusDate() { + return lifeCycleStatusDate; + } + + public void setLifeCycleStatusDate(LocalDate lifeCycleStatusDate) { + this.lifeCycleStatusDate = lifeCycleStatusDate; + } +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanPermissionData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanPermissionData.java new file mode 100644 index 000000000..00ff3355a --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanPermissionData.java @@ -0,0 +1,110 @@ +package org.mifosng.platform.api.data; + +public class LoanPermissionData { + + private boolean waiveAllowed; + private boolean makeRepaymentAllowed; + private boolean rejectAllowed; + private boolean withdrawnByApplicantAllowed; + private boolean undoApprovalAllowed; + private boolean disbursalAllowed; + private boolean undoDisbursalAllowed; + + private boolean pendingApproval; + private boolean waitingForDisbursal; + + protected LoanPermissionData() { + // + } + + public LoanPermissionData(boolean waiveAllowed, + boolean makeRepaymentAllowed, boolean rejectAllowed, + boolean withdrawnByApplicantAllowed, boolean undoApprovalAllowed, + boolean undoDisbursalAllowed, boolean disbursalAllowed, boolean pendingApproval, boolean waitingForDisbursal) { + this.waiveAllowed = waiveAllowed; + this.makeRepaymentAllowed = makeRepaymentAllowed; + this.rejectAllowed = rejectAllowed; + this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; + this.undoApprovalAllowed = undoApprovalAllowed; + this.undoDisbursalAllowed = undoDisbursalAllowed; + this.disbursalAllowed = disbursalAllowed; + this.pendingApproval = pendingApproval; + this.waitingForDisbursal = waitingForDisbursal; + } + + public boolean isAnyActionOnLoanAllowed() { + return isRejectAllowed() || isWithdrawnByApplicantAllowed() || isPendingApproval() || isUndoDisbursalAllowed() || isMakeRepaymentAllowed(); + } + + public boolean isWaiveAllowed() { + return waiveAllowed; + } + + public void setWaiveAllowed(boolean waiveAllowed) { + this.waiveAllowed = waiveAllowed; + } + + public boolean isMakeRepaymentAllowed() { + return makeRepaymentAllowed; + } + + public void setMakeRepaymentAllowed(boolean makeRepaymentAllowed) { + this.makeRepaymentAllowed = makeRepaymentAllowed; + } + + public boolean isRejectAllowed() { + return rejectAllowed; + } + + public void setRejectAllowed(boolean rejectAllowed) { + this.rejectAllowed = rejectAllowed; + } + + public boolean isWithdrawnByApplicantAllowed() { + return withdrawnByApplicantAllowed; + } + + public void setWithdrawnByApplicantAllowed(boolean withdrawnByApplicantAllowed) { + this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed; + } + + public boolean isUndoApprovalAllowed() { + return undoApprovalAllowed; + } + + public void setUndoApprovalAllowed(boolean undoApprovalAllowed) { + this.undoApprovalAllowed = undoApprovalAllowed; + } + + public boolean isDisbursalAllowed() { + return disbursalAllowed; + } + + public void setDisbursalAllowed(boolean disbursalAllowed) { + this.disbursalAllowed = disbursalAllowed; + } + + public boolean isPendingApproval() { + return pendingApproval; + } + + public void setPendingApproval(boolean pendingApproval) { + this.pendingApproval = pendingApproval; + } + + public boolean isWaitingForDisbursal() { + return waitingForDisbursal; + } + + public void setWaitingForDisbursal(boolean waitingForDisbursal) { + this.waitingForDisbursal = waitingForDisbursal; + } + + public boolean isUndoDisbursalAllowed() { + return undoDisbursalAllowed; + } + + public void setUndoDisbursalAllowed(boolean undoDisbursalAllowed) { + this.undoDisbursalAllowed = undoDisbursalAllowed; + } +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java index 85f3eeb0b..4ce9100c3 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java @@ -7,8 +7,6 @@ import java.util.List; import org.codehaus.jackson.map.annotate.JsonFilter; import org.joda.time.DateTime; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.MoneyData; @JsonFilter("myFilter") public class LoanProductData implements Serializable { diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java index 5362b20d9..d4d8995ab 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import javax.xml.bind.annotation.XmlRootElement; diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java similarity index 99% rename from mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java index 7f894dd23..f1631f567 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentPeriodData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import javax.xml.bind.annotation.XmlRootElement; diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java similarity index 93% rename from mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java index 93c8d4250..953ec5fbf 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanRepaymentScheduleData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.util.ArrayList; import java.util.List; diff --git a/mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java index be93a2a80..00435797b 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/LoanSchedule.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.io.Serializable; import java.util.ArrayList; diff --git a/mifosng-data/src/main/java/org/mifosng/data/MoneyData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java similarity index 99% rename from mifosng-data/src/main/java/org/mifosng/data/MoneyData.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java index d6faaa99c..121795ae6 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/MoneyData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.io.Serializable; import java.math.BigDecimal; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/NewLoanData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/NewLoanData.java index 0b2f09d69..f18b580d8 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/NewLoanData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/NewLoanData.java @@ -6,7 +6,6 @@ import java.util.List; import org.codehaus.jackson.map.annotate.JsonFilter; import org.joda.time.LocalDate; -import org.mifosng.data.LoanSchedule; @JsonFilter("myFilter") public class NewLoanData implements Serializable { diff --git a/mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java similarity index 98% rename from mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java index 7525bd66b..f251e771e 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/ScheduledLoanInstallment.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java @@ -1,4 +1,4 @@ -package org.mifosng.data; +package org.mifosng.platform.api.data; import java.io.Serializable; import java.math.BigDecimal; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformService.java index fee62e6c6..5556582c0 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformService.java @@ -2,8 +2,8 @@ package org.mifosng.platform.client.service; import java.util.Collection; -import org.mifosng.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.ClientData; +import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.NoteData; public interface ClientReadPlatformService { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java index e0f29e90b..e714aeb70 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java @@ -11,10 +11,10 @@ import javax.sql.DataSource; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; import org.joda.time.LocalDate; -import org.mifosng.data.ClientLoanAccountSummaryCollectionData; -import org.mifosng.data.ClientLoanAccountSummaryData; import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.ClientData; +import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; +import org.mifosng.platform.api.data.ClientLoanAccountSummaryData; import org.mifosng.platform.api.data.NoteData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeLookup; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationReadPlatformServiceImpl.java index 566c8bac0..9d702606d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/configuration/service/ConfigurationReadPlatformServiceImpl.java @@ -3,8 +3,8 @@ package org.mifosng.platform.configuration.service; import java.util.ArrayList; import java.util.List; -import org.mifosng.data.CurrencyData; import org.mifosng.platform.api.data.ConfigurationData; +import org.mifosng.platform.api.data.CurrencyData; import org.mifosng.platform.currency.service.CurrencyReadPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformService.java index 9604ebf7b..670d422f6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformService.java @@ -2,7 +2,7 @@ package org.mifosng.platform.currency.service; import java.util.List; -import org.mifosng.data.CurrencyData; +import org.mifosng.platform.api.data.CurrencyData; public interface CurrencyReadPlatformService { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java index aefca2788..7595c8321 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/currency/service/CurrencyReadPlatformServiceImpl.java @@ -6,7 +6,7 @@ import java.util.List; import javax.sql.DataSource; -import org.mifosng.data.CurrencyData; +import org.mifosng.platform.api.data.CurrencyData; import org.mifosng.platform.infrastructure.JdbcSupport; import org.mifosng.platform.security.PlatformSecurityContext; import org.mifosng.platform.user.domain.AppUser; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java index b7dccdfe2..d99bd6208 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java @@ -5,13 +5,13 @@ import java.util.Collections; import java.util.List; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.DerivedLoanData; -import org.mifosng.data.LoanAccountSummaryData; -import org.mifosng.data.LoanRepaymentData; -import org.mifosng.data.LoanRepaymentPeriodData; -import org.mifosng.data.LoanRepaymentScheduleData; -import org.mifosng.data.MoneyData; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.DerivedLoanData; +import org.mifosng.platform.api.data.LoanAccountSummaryData; +import org.mifosng.platform.api.data.LoanRepaymentData; +import org.mifosng.platform.api.data.LoanRepaymentPeriodData; +import org.mifosng.platform.api.data.LoanRepaymentScheduleData; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java index b3bebc158..fc73d63dd 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java @@ -25,12 +25,16 @@ import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption; import org.joda.time.DateTime; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.DerivedLoanData; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.DerivedLoanData; +import org.mifosng.platform.api.data.EnumOptionData; +import org.mifosng.platform.api.data.LoanBasicDetailsData; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.client.domain.Client; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; import org.mifosng.platform.infrastructure.AbstractAuditableCustom; +import org.mifosng.platform.loanproduct.service.LoanEnumerations; import org.mifosng.platform.organisation.domain.Organisation; import org.mifosng.platform.user.domain.AppUser; @@ -86,7 +90,7 @@ public class Loan extends AbstractAuditableCustom { @Temporal(TemporalType.DATE) @Column(name = "interest_calculated_from_date") - private Date interestCalculatedFromDate; + private Date interestChargedFromDate; @Temporal(TemporalType.DATE) @Column(name = "disbursedon_date") @@ -173,7 +177,7 @@ public class Loan extends AbstractAuditableCustom { } public void submitApplication(final LocalDate submittedOn, final LocalDate expectedDisbursementDate, - LocalDate repaymentsStartingFromDate, LocalDate interestCalculatedFromDate, LoanLifecycleStateMachine lifecycleStateMachine) { + LocalDate repaymentsStartingFromDate, LocalDate interestChargedFromDate, LoanLifecycleStateMachine lifecycleStateMachine) { this.loanStatus = lifecycleStateMachine.transition(LoanEvent.LOAN_CREATED, this.loanStatus); @@ -191,8 +195,8 @@ public class Loan extends AbstractAuditableCustom { this.expectedFirstRepaymentOnDate = repaymentsStartingFromDate.toDateMidnight().toDate(); } - if (interestCalculatedFromDate != null) { - this.interestCalculatedFromDate = interestCalculatedFromDate.toDateMidnight().toDate(); + if (interestChargedFromDate != null) { + this.interestChargedFromDate = interestChargedFromDate.toDateMidnight().toDate(); } if (new LocalDate(this.submittedOnDate).isAfter(new LocalDate())) { @@ -724,6 +728,14 @@ public class Loan extends AbstractAuditableCustom { public Date getExpectedDisbursedOnDate() { return this.expectedDisbursedOnDate; } + + public LocalDate getExpectedDisbursedOnLocalDate() { + LocalDate expectedDisbursementDate = null; + if (this.expectedDisbursedOnDate != null) { + expectedDisbursementDate = new LocalDate(this.expectedDisbursedOnDate); + } + return expectedDisbursementDate; + } public LocalDate getExpectedFirstRepaymentOnDate() { LocalDate firstRepaymentDate = null; @@ -734,7 +746,7 @@ public class Loan extends AbstractAuditableCustom { } public LocalDate getDisbursementDate() { - LocalDate disbursementDate = new LocalDate(this.expectedDisbursedOnDate); + LocalDate disbursementDate = getExpectedDisbursedOnLocalDate(); if (this.disbursedOnDate != null) { disbursementDate = new LocalDate(this.disbursedOnDate); } @@ -923,19 +935,17 @@ public class Loan extends AbstractAuditableCustom { return this.loanRepaymentScheduleDetail.getCurrency(); } - public LocalDate getInterestCalculatedFromDate() { - - LocalDate interestCalculatedFrom = null; - if (this.interestCalculatedFromDate != null) { - interestCalculatedFrom = new LocalDate(this.interestCalculatedFromDate); + public LocalDate getInterestChargedFromDate() { + LocalDate interestChargedFrom = null; + if (this.interestChargedFromDate != null) { + interestChargedFrom = new LocalDate(this.interestChargedFromDate); } - - return interestCalculatedFrom; + return interestChargedFrom; } public LocalDate getLoanStatusSinceDate() { - LocalDate statusSinceDate = new LocalDate(this.submittedOnDate); + LocalDate statusSinceDate = getSubmittedOnDate(); if (isApproved()) { statusSinceDate = new LocalDate(this.approvedOnDate); } @@ -950,4 +960,30 @@ public class Loan extends AbstractAuditableCustom { return statusSinceDate; } + + public LoanBasicDetailsData toBasicDetailsData(CurrencyData currencyData) { + + Money loanPrincipal = this.loanRepaymentScheduleDetail.getPrincipal(); + MoneyData principal = MoneyData.of(currencyData, loanPrincipal.getAmount()); + + Money loanArrearsTolerance = this.loanRepaymentScheduleDetail.getInArrearsTolerance(); + MoneyData tolerance = MoneyData.of(currencyData, loanArrearsTolerance.getAmount()); + + EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(this.loanRepaymentScheduleDetail.getRepaymentPeriodFrequencyType()); + EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(this.loanRepaymentScheduleDetail.getInterestPeriodFrequencyType()); + EnumOptionData amortizationType = LoanEnumerations.amortizationType(this.loanRepaymentScheduleDetail.getAmortizationMethod()); + EnumOptionData interestType = LoanEnumerations.interestType(this.loanRepaymentScheduleDetail.getInterestMethod()); + EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(this.loanRepaymentScheduleDetail.getInterestCalculationPeriodMethod()); + + return new LoanBasicDetailsData(getId(), this.externalId, this.loanProduct.getName(), + getClosedOnDate(), getSubmittedOnDate(), getApprovedOnDate(), getExpectedDisbursedOnLocalDate(), getDisbursedOnDate(), + getExpectedMaturityDate(), getExpectedFirstRepaymentOnDate(), getInterestChargedFromDate(), principal, tolerance, + this.loanRepaymentScheduleDetail.getNumberOfRepayments(), this.loanRepaymentScheduleDetail.getRepayEvery(), + this.loanRepaymentScheduleDetail.getNominalInterestRatePerPeriod(), this.loanRepaymentScheduleDetail.getAnnualNominalInterestRate(), + repaymentFrequencyType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, getLoanStatusDisplayName(), getLoanStatusSinceDate()); + } + + public String getCurrencyCode() { + return this.loanRepaymentScheduleDetail.getPrincipal().getCurrencyCode(); + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentDataComparator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentDataComparator.java index 8df7366cb..81f738234 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentDataComparator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentDataComparator.java @@ -2,7 +2,7 @@ package org.mifosng.platform.loan.domain; import java.util.Comparator; -import org.mifosng.data.LoanRepaymentData; +import org.mifosng.platform.api.data.LoanRepaymentData; public class LoanRepaymentDataComparator implements Comparator { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformService.java index bc3d4a681..d2d75845f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformService.java @@ -1,8 +1,8 @@ package org.mifosng.platform.loan.service; import org.joda.time.LocalDate; -import org.mifosng.data.LoanSchedule; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; +import org.mifosng.platform.api.data.LoanSchedule; public interface CalculationPlatformService { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java index e3081837f..cea320311 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/CalculationPlatformServiceImpl.java @@ -3,10 +3,10 @@ package org.mifosng.platform.loan.service; import java.math.BigDecimal; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.LoanSchedule; -import org.mifosng.data.MoneyData; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.LoanSchedule; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.currency.domain.ApplicationCurrency; import org.mifosng.platform.currency.domain.ApplicationCurrencyRepository; import org.mifosng.platform.currency.domain.MonetaryCurrency; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java index bbb5043b7..2aaa0c4e3 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanAssembler.java @@ -6,10 +6,10 @@ import static org.mifosng.platform.Specifications.productThatMatches; import java.math.BigDecimal; import java.util.List; -import org.mifosng.data.LoanSchedule; -import org.mifosng.data.MoneyData; -import org.mifosng.data.ScheduledLoanInstallment; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; +import org.mifosng.platform.api.data.LoanSchedule; +import org.mifosng.platform.api.data.MoneyData; +import org.mifosng.platform.api.data.ScheduledLoanInstallment; import org.mifosng.platform.client.domain.Client; import org.mifosng.platform.client.domain.ClientRepository; import org.mifosng.platform.currency.domain.MonetaryCurrency; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanPayoffReadModel.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanPayoffReadModel.java index 46b99e86a..4b1a8efb4 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanPayoffReadModel.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanPayoffReadModel.java @@ -2,7 +2,7 @@ package org.mifosng.platform.loan.service; import org.joda.time.LocalDate; import org.joda.time.format.DateTimeFormatter; -import org.mifosng.data.MoneyData; +import org.mifosng.platform.api.data.MoneyData; /** * diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformService.java index 4f7a0105f..b28b9c2c7 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformService.java @@ -1,7 +1,7 @@ package org.mifosng.platform.loan.service; -import org.mifosng.data.LoanAccountData; -import org.mifosng.data.LoanRepaymentData; +import org.mifosng.platform.api.data.LoanAccountData; +import org.mifosng.platform.api.data.LoanRepaymentData; import org.mifosng.platform.api.data.NewLoanData; public interface LoanReadPlatformService { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java index cb8dbed30..5e8f66f89 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java @@ -7,14 +7,16 @@ import java.util.ArrayList; import java.util.Collection; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.DerivedLoanData; -import org.mifosng.data.LoanAccountData; -import org.mifosng.data.LoanRepaymentData; -import org.mifosng.data.MoneyData; import org.mifosng.platform.api.data.ClientData; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.DerivedLoanData; +import org.mifosng.platform.api.data.LoanAccountData; +import org.mifosng.platform.api.data.LoanBasicDetailsData; +import org.mifosng.platform.api.data.LoanPermissionData; import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanProductLookup; +import org.mifosng.platform.api.data.LoanRepaymentData; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.api.data.NewLoanData; import org.mifosng.platform.client.service.ClientReadPlatformService; import org.mifosng.platform.currency.domain.ApplicationCurrency; @@ -66,16 +68,13 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { // need of loan information. AppUser currentUser = context.authenticatedUser(); - Loan loan = this.loanRepository.findOne(loansThatMatch( - currentUser.getOrganisation(), loanId)); + Loan loan = this.loanRepository.findOne(loansThatMatch(currentUser.getOrganisation(), loanId)); if (loan == null) { throw new LoanNotFoundException(loanId); } - final String currencyCode = loan.getLoanRepaymentScheduleDetail() - .getPrincipal().getCurrencyCode(); - ApplicationCurrency currency = this.applicationCurrencyRepository - .findOneByCode(currencyCode); + final String currencyCode = loan.getCurrencyCode(); + ApplicationCurrency currency = this.applicationCurrencyRepository.findOneByCode(currencyCode); if (currency == null) { throw new CurrencyNotFoundException(currencyCode); } @@ -84,47 +83,23 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { currency.getName(), currency.getDecimalPlaces(), currency.getDisplaySymbol(), currency.getNameCode()); - LoanAccountData loanData = convertToData(loan, currencyData); - - return loanData; + return convertToData(loan, currencyData); } - private LoanAccountData convertToData(final Loan realLoan, - CurrencyData currencyData) { + private LoanAccountData convertToData(final Loan realLoan, CurrencyData currencyData) { DerivedLoanData loanData = realLoan.deriveLoanData(currencyData); - LocalDate expectedDisbursementDate = null; - if (realLoan.getExpectedDisbursedOnDate() != null) { - expectedDisbursementDate = new LocalDate( - realLoan.getExpectedDisbursedOnDate()); - } - - Money loanPrincipal = realLoan.getLoanRepaymentScheduleDetail() - .getPrincipal(); - MoneyData principal = MoneyData.of(currencyData, - loanPrincipal.getAmount()); - - Money loanArrearsTolerance = realLoan.getInArrearsTolerance(); - MoneyData tolerance = MoneyData.of(currencyData, - loanArrearsTolerance.getAmount()); - - Money interestRebate = realLoan.getInterestRebateOwed(); - MoneyData interestRebateOwed = MoneyData.of(currencyData, - interestRebate.getAmount()); - - boolean interestRebateOutstanding = false; // realLoan.isInterestRebateOutstanding(), - + LoanBasicDetailsData basicDetails = realLoan.toBasicDetailsData(currencyData); + // permissions - boolean waiveAllowed = loanData.getSummary().isWaiveAllowed(tolerance) + boolean waiveAllowed = loanData.getSummary().isWaiveAllowed(basicDetails.getInArrearsTolerance()) && realLoan.isNotClosed(); boolean undoDisbursalAllowed = realLoan.isDisbursed() && realLoan.isOpenWithNoRepaymentMade(); boolean makeRepaymentAllowed = realLoan.isDisbursed() && realLoan.isNotClosed(); - LocalDate loanStatusDate = realLoan.getLoanStatusSinceDate(); - boolean rejectAllowed = realLoan.isNotApproved() && realLoan.isNotDisbursed() && realLoan.isNotClosed(); boolean withdrawnByApplicantAllowed = realLoan.isNotDisbursed() @@ -133,45 +108,51 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { && realLoan.isNotClosed(); boolean disbursalAllowed = realLoan.isApproved() && realLoan.isNotDisbursed() && realLoan.isNotClosed(); + + LoanPermissionData permissions = new LoanPermissionData(waiveAllowed, makeRepaymentAllowed, rejectAllowed, withdrawnByApplicantAllowed, + undoApprovalAllowed, undoDisbursalAllowed, disbursalAllowed, realLoan.isSubmittedAndPendingApproval(), + realLoan.isWaitingForDisbursal()); + + return new LoanAccountData(realLoan.getId(), basicDetails, loanData, permissions); - return new LoanAccountData(realLoan.isClosed(), realLoan.isOpen(), - realLoan.isOpenWithRepaymentMade(), interestRebateOutstanding, - realLoan.isSubmittedAndPendingApproval(), - realLoan.isWaitingForDisbursal(), undoDisbursalAllowed, - makeRepaymentAllowed, rejectAllowed, - withdrawnByApplicantAllowed, undoApprovalAllowed, - disbursalAllowed, realLoan.getLoanStatusDisplayName(), - loanStatusDate, realLoan.getId(), realLoan.getExternalId(), - realLoan.getLoanProduct().getName(), - realLoan.getClosedOnDate(), realLoan.getSubmittedOnDate(), - realLoan.getApprovedOnDate(), expectedDisbursementDate, - realLoan.getDisbursedOnDate(), - realLoan.getExpectedMaturityDate(), - realLoan.getExpectedFirstRepaymentOnDate(), - realLoan.getInterestCalculatedFromDate(), principal, realLoan - .getLoanRepaymentScheduleDetail() - .getAnnualNominalInterestRate(), realLoan - .getLoanRepaymentScheduleDetail() - .getNominalInterestRatePerPeriod(), realLoan - .getLoanRepaymentScheduleDetail() - .getInterestPeriodFrequencyType().getValue(), realLoan - .getLoanRepaymentScheduleDetail() - .getInterestPeriodFrequencyType().toString(), realLoan - .getLoanRepaymentScheduleDetail().getInterestMethod() - .getValue(), realLoan.getLoanRepaymentScheduleDetail() - .getInterestMethod().toString(), realLoan - .getLoanRepaymentScheduleDetail() - .getAmortizationMethod().getValue(), realLoan - .getLoanRepaymentScheduleDetail() - .getAmortizationMethod().toString(), realLoan - .getLoanRepaymentScheduleDetail() - .getNumberOfRepayments(), realLoan - .getLoanRepaymentScheduleDetail().getRepayEvery(), - realLoan.getLoanRepaymentScheduleDetail() - .getRepaymentPeriodFrequencyType().getValue(), realLoan - .getLoanRepaymentScheduleDetail() - .getRepaymentPeriodFrequencyType().toString(), - tolerance, loanData, waiveAllowed, interestRebateOwed); +// return new LoanAccountData(realLoan.isClosed(), realLoan.isOpen(), +// realLoan.isOpenWithRepaymentMade(), interestRebateOutstanding, +// realLoan.isSubmittedAndPendingApproval(), +// realLoan.isWaitingForDisbursal(), undoDisbursalAllowed, +// makeRepaymentAllowed, rejectAllowed, +// withdrawnByApplicantAllowed, undoApprovalAllowed, +// disbursalAllowed, realLoan.getLoanStatusDisplayName(), +// loanStatusDate, realLoan.getId(), realLoan.getExternalId(), +// realLoan.getLoanProduct().getName(), +// realLoan.getClosedOnDate(), realLoan.getSubmittedOnDate(), +// realLoan.getApprovedOnDate(), expectedDisbursementDate, +// realLoan.getDisbursedOnDate(), +// realLoan.getExpectedMaturityDate(), +// realLoan.getExpectedFirstRepaymentOnDate(), +// realLoan.getInterestCalculatedFromDate(), principal, realLoan +// .getLoanRepaymentScheduleDetail() +// .getAnnualNominalInterestRate(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getNominalInterestRatePerPeriod(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getInterestPeriodFrequencyType().getValue(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getInterestPeriodFrequencyType().toString(), realLoan +// .getLoanRepaymentScheduleDetail().getInterestMethod() +// .getValue(), realLoan.getLoanRepaymentScheduleDetail() +// .getInterestMethod().toString(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getAmortizationMethod().getValue(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getAmortizationMethod().toString(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getNumberOfRepayments(), realLoan +// .getLoanRepaymentScheduleDetail().getRepayEvery(), +// realLoan.getLoanRepaymentScheduleDetail() +// .getRepaymentPeriodFrequencyType().getValue(), realLoan +// .getLoanRepaymentScheduleDetail() +// .getRepaymentPeriodFrequencyType().toString(), +// tolerance, loanData, waiveAllowed, interestRebateOwed); } @Override diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanStateTransitionCommandValidator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanStateTransitionCommandValidator.java index 891807a6d..f0b70bd5e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanStateTransitionCommandValidator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanStateTransitionCommandValidator.java @@ -21,7 +21,7 @@ public class LoanStateTransitionCommandValidator { DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("loan.transition"); - baseDataValidator.reset().parameter("loanId").value(command.getLoanId()).notNull(); + baseDataValidator.reset().parameter("loanId").value(command.getLoanId()).notNull().greaterThanZero(); baseDataValidator.reset().parameter("eventDate").value(command.getEventLocalDate()).notNull(); baseDataValidator.reset().parameter("note").value(command.getNote()).notExceedingLengthOf(1000); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanTransactionCommandValidator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanTransactionCommandValidator.java index 6d2e46178..02aa0849f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanTransactionCommandValidator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanTransactionCommandValidator.java @@ -3,7 +3,7 @@ package org.mifosng.platform.loan.service; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang.StringUtils; +import org.mifosng.platform.DataValidatorBuilder; import org.mifosng.platform.api.commands.LoanTransactionCommand; import org.mifosng.platform.api.data.ApiParameterError; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; @@ -17,27 +17,15 @@ public class LoanTransactionCommandValidator { } public void validate() { + List dataValidationErrors = new ArrayList(); - if (command.getLoanId() == null || command.getLoanId().doubleValue() <= 0) { - ApiParameterError error = ApiParameterError.parameterError("validation.msg.loan.id.is.invalid", "The parameter loanId is invalid.", "loanId", command.getLoanId()); - dataValidationErrors.add(error); - } + DataValidatorBuilder baseDataValidator = new DataValidatorBuilder(dataValidationErrors).resource("role"); - if (command.getTransactionLocalDate() == null) { - ApiParameterError error = ApiParameterError.parameterError("validation.msg.loan.repayment.date.cannot.be.blank", "The parameter transactionDateFormatted cannot be blank.", "transactionDateFormatted"); - dataValidationErrors.add(error); - } - - if (command.getTransactionAmount() == null || command.getTransactionAmountValue().doubleValue() <= 0) { - ApiParameterError error = ApiParameterError.parameterError("validation.msg.loan.repayment.must.be.greater.than.zero", "The parameter transactionAmountFormatted less than zero.", "transactionAmountFormatted", command.getTransactionAmountValue()); - dataValidationErrors.add(error); - } - - if (StringUtils.isNotBlank(command.getNote()) && command.getNote().length() > 1000) { - ApiParameterError error = ApiParameterError.parameterError("validation.msg.note.exceeds.max.length", "The parameter comment exceeds max allowed size of {0}", "comment", 1000); - dataValidationErrors.add(error); - } + baseDataValidator.reset().parameter("loanid").value(command.getLoanId()).notNull().greaterThanZero(); + baseDataValidator.reset().parameter("transactionDate").value(command.getTransactionLocalDate()).notNull(); + baseDataValidator.reset().parameter("transactionAmount").value(command.getTransactionAmount()).notNull().positiveAmount(); + baseDataValidator.reset().parameter("note").value(command.getNote()).notExceedingLengthOf(1000); if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java index 96344aa9b..e15703702 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -7,8 +7,6 @@ import java.util.List; import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; -import org.mifosng.data.LoanSchedule; -import org.mifosng.data.ScheduledLoanInstallment; import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand; import org.mifosng.platform.api.commands.CalculateLoanScheduleCommand; import org.mifosng.platform.api.commands.LoanStateTransitionCommand; @@ -16,6 +14,8 @@ import org.mifosng.platform.api.commands.LoanTransactionCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UndoStateTransitionCommand; import org.mifosng.platform.api.data.EntityIdentifier; +import org.mifosng.platform.api.data.LoanSchedule; +import org.mifosng.platform.api.data.ScheduledLoanInstallment; import org.mifosng.platform.client.domain.Note; import org.mifosng.platform.client.domain.NoteRepository; import org.mifosng.platform.currency.domain.MonetaryCurrency; @@ -263,7 +263,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf if (loan.isRepaymentScheduleRegenerationRequiredForDisbursement(actualDisbursementDate)) { LocalDate repaymentsStartingFromDate = loan.getExpectedFirstRepaymentOnDate(); - LocalDate interestCalculatedFromDate = loan.getInterestCalculatedFromDate(); + LocalDate interestCalculatedFromDate = loan.getInterestChargedFromDate(); Number principalAsDecimal = loan.getLoanRepaymentScheduleDetail().getPrincipal().getAmount(); String currencyCode = loan.getLoanRepaymentScheduleDetail().getPrincipal().getCurrencyCode(); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/SubmitLoanApplicationCommandValidator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/SubmitLoanApplicationCommandValidator.java index ea81f4d8c..c3c38a96b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/SubmitLoanApplicationCommandValidator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/SubmitLoanApplicationCommandValidator.java @@ -27,7 +27,7 @@ public class SubmitLoanApplicationCommandValidator { if (command.getSubmittedOnLocalDate() == null) { ApiParameterError error = ApiParameterError.parameterError("validation.msg.loan.submitted.on.date.cannot.be.blank", - "The parameter submittedOnDate cannot be empty.", "submittedOnDateFormatted"); + "The parameter submittedOnDate cannot be empty.", "submittedOnDate"); dataValidationErrors.add(error); } else { if (command.getSubmittedOnLocalDate().isAfter(command.getExpectedDisbursementLocalDate())) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 1a317526f..60b22b7e1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -9,11 +9,11 @@ import java.util.List; import javax.sql.DataSource; import org.joda.time.DateTime; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.MoneyData; +import org.mifosng.platform.api.data.CurrencyData; import org.mifosng.platform.api.data.EnumOptionData; import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanProductLookup; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.currency.service.CurrencyReadPlatformService; import org.mifosng.platform.exceptions.LoanProductNotFoundException; import org.mifosng.platform.infrastructure.JdbcSupport; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java index 979de88d3..f1cf01dbf 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/DecliningBalanceMethodLoanScheduleGenerator.java @@ -6,10 +6,10 @@ import java.util.List; import org.joda.time.Days; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.LoanSchedule; -import org.mifosng.data.MoneyData; -import org.mifosng.data.ScheduledLoanInstallment; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.LoanSchedule; +import org.mifosng.platform.api.data.MoneyData; +import org.mifosng.platform.api.data.ScheduledLoanInstallment; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; import org.mifosng.platform.loan.domain.AmortizationMethod; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatLoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatLoanScheduleGenerator.java index dd1ab412d..cf85de1b4 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatLoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/FlatLoanScheduleGenerator.java @@ -7,10 +7,10 @@ import java.util.ArrayList; import java.util.List; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.LoanSchedule; -import org.mifosng.data.MoneyData; -import org.mifosng.data.ScheduledLoanInstallment; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.LoanSchedule; +import org.mifosng.platform.api.data.MoneyData; +import org.mifosng.platform.api.data.ScheduledLoanInstallment; import org.mifosng.platform.currency.domain.Money; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java index 46b65f93a..1846d61fa 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanschedule/domain/LoanScheduleGenerator.java @@ -1,8 +1,8 @@ package org.mifosng.platform.loanschedule.domain; import org.joda.time.LocalDate; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.LoanSchedule; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.LoanSchedule; import org.mifosng.platform.loan.domain.LoanProductRelatedDetail; public interface LoanScheduleGenerator { diff --git a/mifosng-provider/src/test/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessorTest.java b/mifosng-provider/src/test/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessorTest.java index 0377248fe..b5c2d9557 100644 --- a/mifosng-provider/src/test/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessorTest.java +++ b/mifosng-provider/src/test/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessorTest.java @@ -10,12 +10,12 @@ import java.util.List; import org.joda.time.LocalDate; import org.junit.Test; import org.junit.runner.RunWith; -import org.mifosng.data.CurrencyData; -import org.mifosng.data.DerivedLoanData; -import org.mifosng.data.LoanRepaymentData; -import org.mifosng.data.LoanRepaymentPeriodData; -import org.mifosng.data.LoanRepaymentScheduleData; -import org.mifosng.data.MoneyData; +import org.mifosng.platform.api.data.CurrencyData; +import org.mifosng.platform.api.data.DerivedLoanData; +import org.mifosng.platform.api.data.LoanRepaymentData; +import org.mifosng.platform.api.data.LoanRepaymentPeriodData; +import org.mifosng.platform.api.data.LoanRepaymentScheduleData; +import org.mifosng.platform.api.data.MoneyData; import org.mifosng.platform.currency.domain.MonetaryCurrency; import org.mifosng.platform.currency.domain.Money; import org.mockito.runners.MockitoJUnitRunner;