tidy up response for client account summary and retrieval of individual loan information.
This commit is contained in:
+4
-4
@@ -532,9 +532,9 @@ $(document).ready(function() {
|
||||
|
||||
var curTabID = currentTab.prop("id")
|
||||
|
||||
offsetToSubmittedDate = data.basicDetails.maxSubmittedOnOffsetFromToday;
|
||||
offsetToApprovalDate = data.basicDetails.maxApprovedOnOffsetFromToday;
|
||||
offsetToDisbursalDate = data.basicDetails.maxDisbursedOnOffsetFromToday;
|
||||
offsetToSubmittedDate = data.convenienceData.maxSubmittedOnOffsetFromToday;
|
||||
offsetToApprovalDate = data.convenienceData.maxApprovedOnOffsetFromToday;
|
||||
offsetToDisbursalDate = data.convenienceData.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.basicDetails.id,
|
||||
datasetTypeDiv: "loanadditionaldata" + data.id,
|
||||
headingPrefix: "",
|
||||
headingClass: "",
|
||||
labelClass: "longrowlabel",
|
||||
|
||||
@@ -371,7 +371,7 @@
|
||||
<span class="longrowlabel"><spring:message code="label.client.account.pending.approval.loans"/> ({{=$ctx.number(pendingApprovalLoanCount)}}):</span>
|
||||
<span class="rowvalue">
|
||||
{{#each pendingApprovalLoans}}
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}?association=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
{{/each}}
|
||||
</span>
|
||||
</div>
|
||||
@@ -382,7 +382,7 @@
|
||||
<span class="longrowlabel"><spring:message code="label.client.account.pending.disbursal.loans"/> ({{=$ctx.number(awaitingDisbursalLoanCount)}}):</span>
|
||||
<span class="rowvalue">
|
||||
{{#each awaitingDisbursalLoans}}
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}?association=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
{{/each}}
|
||||
</span>
|
||||
</div>
|
||||
@@ -393,7 +393,7 @@
|
||||
<span class="longrowlabel"><spring:message code="label.client.account.active.loans"/> ({{=$ctx.number(activeLoanCount)}}):</span>
|
||||
<span class="rowvalue">
|
||||
{{#each openLoans}}
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}?association=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
{{/each}}
|
||||
</span>
|
||||
</div>
|
||||
@@ -404,7 +404,7 @@
|
||||
<div class="longrowlabel"><spring:message code="label.client.account.closed.loans"/> ({{=$ctx.number(closedLoanCount)}}):</div>
|
||||
<div class="rowvalue">
|
||||
{{#each closedLoans}}
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
<span class="loanaccount"><a href="${baseApiUrl}loans/{{=id}}?association=ALL" id="loan{{=id}}" class="openloanaccount" title="{{=loanProductName}}: #{{=id}}">{{=loanProductName}}: #{{=id}}</a></span>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -531,20 +531,19 @@
|
||||
<ul>
|
||||
<li><a href="#details{{=id}}" title="details"><spring:message code="tab.client.account.loan.details"/></a></li>
|
||||
<li><a href="#schedule{{=id}}" title="schedule"><spring:message code="tab.client.account.loan.schedule"/></a></li>
|
||||
{{#if loanData.loanRepayments}}
|
||||
{{#if loanRepayments}}
|
||||
<li><a href="#repayments{{=id}}" title="repayments"><spring:message code="tab.client.account.loan.repayments"/></a></li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
<!-- first loan tab -->
|
||||
|
||||
{{#each basicDetails}}
|
||||
<div id="details{{=id}}" style="margin-top: 5px;">
|
||||
<div class="row">
|
||||
<span class="longrowlabel"><spring:message code="label.client.account.loan.status"/></span>
|
||||
<span class="rowvalue">{{=lifeCycleStatusText}} (<spring:message code="label.client.account.loan.status.since"/> {{=$ctx.globalDate(lifeCycleStatusDate)}})
|
||||
{{#if $ctx.numberGreaterThanZero($parent.data.loanData.summary.totalInArrears.amount)}}
|
||||
{{#if $ctx.numberGreaterThanZero(summary.totalInArrears.amount)}}
|
||||
{{#if actualDisbursementDate !== null}}
|
||||
- <spring:message code="label.client.account.loan.status.arrears"/> {{=$ctx.moneyWithCurrency($parent.parent.parent.data.loanData.summary.totalInArrears)}}
|
||||
- <spring:message code="label.client.account.loan.status.arrears"/> {{=$ctx.moneyWithCurrency($parent.parent.data.summary.totalInArrears)}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</span>
|
||||
@@ -651,11 +650,10 @@
|
||||
|
||||
<div id="loanadditionaldata{{=id}}"></div>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
<!-- second loan tab -->
|
||||
<div id="schedule{{=basicDetails.id}}" style="margin-top: 5px;">
|
||||
<table id="summarytable{{=basicDetails.id}}" class="pretty displayschedule">
|
||||
<div id="schedule{{=id}}" style="margin-top: 5px;">
|
||||
<table id="summarytable{{=id}}" class="pretty displayschedule">
|
||||
<caption><spring:message code="tab.client.account.loan.schedule.table.summary.caption"/></caption>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -669,33 +667,33 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.principal"/></th>
|
||||
<td>{{=$ctx.money(loanData.summary.originalPrincipal)}}</td>
|
||||
<td>{{=$ctx.money(loanData.summary.principalPaid)}}</td>
|
||||
<td>{{=$ctx.money(summary.originalPrincipal)}}</td>
|
||||
<td>{{=$ctx.money(summary.principalPaid)}}</td>
|
||||
<td> </td>
|
||||
<td>{{=$ctx.money(loanData.summary.principalOutstanding)}}</td>
|
||||
<td>{{=$ctx.money(summary.principalOutstanding)}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.interest"/></th>
|
||||
<td>{{=$ctx.money(loanData.summary.originalInterest)}}</td>
|
||||
<td>{{=$ctx.money(loanData.summary.interestPaid)}}</td>
|
||||
<td>{{=$ctx.money(summary.originalInterest)}}</td>
|
||||
<td>{{=$ctx.money(summary.interestPaid)}}</td>
|
||||
<td> </td>
|
||||
<td>{{=$ctx.money(loanData.summary.interestOutstanding)}}</td>
|
||||
<td>{{=$ctx.money(summary.interestOutstanding)}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.total"/></th>
|
||||
<th>{{=$ctx.money(loanData.summary.originalTotal)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.totalPaid)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.totalWaived)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.totalOutstanding)}}</th>
|
||||
<th>{{=$ctx.money(summary.originalTotal)}}</th>
|
||||
<th>{{=$ctx.money(summary.totalPaid)}}</th>
|
||||
<th>{{=$ctx.money(summary.totalWaived)}}</th>
|
||||
<th>{{=$ctx.money(summary.totalOutstanding)}}</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
<br/>
|
||||
|
||||
<table id="repaymentschedule_todate{{=basicDetails.id}}" class="pretty displayschedule">
|
||||
<table id="repaymentschedule_todate{{=id}}" class="pretty displayschedule">
|
||||
<caption><spring:message code="tab.client.account.loan.schedule.table.repaymentschedule.caption"/></caption>
|
||||
<colgroup span="2"></colgroup>
|
||||
<colgroup span="3">
|
||||
@@ -735,7 +733,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each loanData.repaymentSchedule.periods}}
|
||||
{{#each repaymentSchedule.periods}}
|
||||
<tr>
|
||||
<td scope="row">{{=$ctx.number(period)}}</td>
|
||||
<td>{{=$ctx.globalDate(date)}}</td>
|
||||
@@ -754,20 +752,20 @@
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th colspan="2"><spring:message code="tab.client.account.loan.schedule.table.column.heading.total"/></th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(loanData.summary.originalPrincipal)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.principalPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.principalOutstanding)}}</th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(loanData.summary.originalInterest)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.interestPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.interestOutstanding)}}</th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(loanData.summary.originalTotal)}}</th>
|
||||
<th>{{=$ctx.money(loanData.summary.totalPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.totalOutstanding)}}</th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalPrincipal)}}</th>
|
||||
<th>{{=$ctx.money(summary.principalPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(summary.principalOutstanding)}}</th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalInterest)}}</th>
|
||||
<th>{{=$ctx.money(summary.interestPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(summary.interestOutstanding)}}</th>
|
||||
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalTotal)}}</th>
|
||||
<th>{{=$ctx.money(summary.totalPaid)}}</th>
|
||||
<th class="righthighlightcolheader">{{=$ctx.money(summary.totalOutstanding)}}</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
{{#if loanData.loanRepayments}}
|
||||
{{#if loanRepayments}}
|
||||
<!-- Third loan tab -->
|
||||
<div id="repayments{{=id}}" style="margin-top: 5px;">
|
||||
<table id="newrepaymentsactivity{{=id}}" class="pretty displaypayments">
|
||||
@@ -778,19 +776,19 @@
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.amountpaid"/></th>
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.principal.portion"/></th>
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.interest.portion"/></th>
|
||||
{{#if open}}
|
||||
{{#if actualDisbursementDate !== null}}
|
||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.action"/></th>
|
||||
{{/if}}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each loanData.loanRepayments}}
|
||||
{{#each loanRepayments}}
|
||||
<tr>
|
||||
<td>{{=$ctx.globalDate(date)}}</td>
|
||||
<td>{{=$ctx.money(total)}}</td>
|
||||
<td>{{=$ctx.money(principal)}}</td>
|
||||
<td>{{=$ctx.money(interest)}}</td>
|
||||
{{#if $parent.parent.data.open}}
|
||||
{{#if $parent.parent.data.actualDisbursementDate !== null}}
|
||||
<td><button id="adjustrepaymentbtn{{=$parent.parent.parent.data.id}}_{{=id}}" class="adjustloanrepayment">Adjust</button></td>
|
||||
{{/if}}
|
||||
</tr>
|
||||
|
||||
+1
-78
@@ -2,54 +2,25 @@ package org.mifosng.platform.api.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@XmlRootElement(name = "clientLoanAccountSummary")
|
||||
public class ClientLoanAccountSummaryData implements Serializable {
|
||||
|
||||
private Long id;
|
||||
private String externalId;
|
||||
private Long loanProductId;
|
||||
private String loanProductName;
|
||||
|
||||
private Integer loanStatusId;
|
||||
private boolean pendingApproval;
|
||||
private boolean waitingForDisbursal;
|
||||
private boolean open;
|
||||
private boolean closed;
|
||||
|
||||
private String lifeCycleStatusText;
|
||||
private LocalDate lifeCycleStatusDate;
|
||||
|
||||
// private LocalDate submittedOnDate;
|
||||
// private LocalDate approvedOnDate;
|
||||
// private LocalDate expectedDisbursementDate;
|
||||
// private LocalDate actualDisbursementDate;
|
||||
// private LocalDate expectedFirstRepaymentOnDate;
|
||||
// private LocalDate interestCalculatedFromDate;
|
||||
// private LocalDate expectedMaturityDate;
|
||||
// private LocalDate closedOnDate;
|
||||
|
||||
public ClientLoanAccountSummaryData() {
|
||||
//
|
||||
}
|
||||
|
||||
public ClientLoanAccountSummaryData(Long id, String externalId,
|
||||
Long productId, String loanProductName, Integer loanStatusId,
|
||||
String lifeCycleStatusText, boolean pendingApproval,
|
||||
boolean waitingForDisbursal, boolean open, boolean closed) {
|
||||
Long productId, String loanProductName, Integer loanStatusId) {
|
||||
this.id = id;
|
||||
this.externalId = externalId;
|
||||
this.loanProductId = productId;
|
||||
this.loanProductName = loanProductName;
|
||||
this.loanStatusId = loanStatusId;
|
||||
this.lifeCycleStatusText = lifeCycleStatusText;
|
||||
this.pendingApproval = pendingApproval;
|
||||
this.waitingForDisbursal = waitingForDisbursal;
|
||||
this.open = open;
|
||||
this.closed = closed;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
@@ -76,54 +47,6 @@ public class ClientLoanAccountSummaryData implements Serializable {
|
||||
this.loanProductName = loanProductName;
|
||||
}
|
||||
|
||||
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 isOpen() {
|
||||
return open;
|
||||
}
|
||||
|
||||
public void setOpen(boolean open) {
|
||||
this.open = open;
|
||||
}
|
||||
|
||||
public boolean isClosed() {
|
||||
return closed;
|
||||
}
|
||||
|
||||
public void setClosed(boolean closed) {
|
||||
this.closed = closed;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public Long getLoanProductId() {
|
||||
return loanProductId;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,6 @@ package org.mifosng.platform.api.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "currency")
|
||||
public class CurrencyData implements Serializable {
|
||||
|
||||
private String code;
|
||||
|
||||
@@ -2,9 +2,6 @@ package org.mifosng.platform.api.data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class DerivedLoanData {
|
||||
|
||||
private LoanRepaymentScheduleData repaymentSchedule;
|
||||
|
||||
+295
-15
@@ -1,24 +1,109 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@JsonFilter("loanFilter")
|
||||
public class LoanAccountData {
|
||||
|
||||
private Long id;
|
||||
private LoanBasicDetailsData basicDetails;
|
||||
private DerivedLoanData loanData;
|
||||
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;
|
||||
|
||||
private LoanAccountSummaryData summary;
|
||||
private LoanRepaymentScheduleData repaymentSchedule;
|
||||
private List<LoanRepaymentData> loanRepayments;
|
||||
|
||||
private LoanPermissionData permissions;
|
||||
|
||||
private LoanConvenienceData convenienceData;
|
||||
|
||||
|
||||
protected LoanAccountData() {
|
||||
//
|
||||
}
|
||||
|
||||
public LoanAccountData(Long id, LoanBasicDetailsData basicDetails, DerivedLoanData loanData, LoanPermissionData permissions) {
|
||||
this.id = id;
|
||||
this.basicDetails = basicDetails;
|
||||
this.loanData = loanData;
|
||||
public LoanAccountData(LoanBasicDetailsData basicDetails,
|
||||
LoanAccountSummaryData summary,
|
||||
LoanRepaymentScheduleData repaymentSchedule,
|
||||
List<LoanRepaymentData> loanRepayments, LoanPermissionData permissions) {
|
||||
this.summary = summary;
|
||||
this.repaymentSchedule = repaymentSchedule;
|
||||
this.loanRepayments = loanRepayments;
|
||||
this.permissions = permissions;
|
||||
|
||||
int maxSubmittedOnOffsetFromToday = basicDetails.getMaxSubmittedOnOffsetFromToday();
|
||||
int maxApprovedOnOffsetFromToday = basicDetails.getMaxApprovedOnOffsetFromToday();
|
||||
int maxDisbursedOnOffsetFromToday = basicDetails.getMaxDisbursedOnOffsetFromToday();
|
||||
int expectedLoanTermInDays = basicDetails.getLoanTermInDays();
|
||||
int expectedLoanTermInMonths = basicDetails.getLoanTermInMonths();
|
||||
int actualLoanTermInDays = basicDetails.getActualLoanTermInDays();
|
||||
int actualLoanTermInMonths = basicDetails.getActualLoanTermInMonths();
|
||||
|
||||
this.convenienceData = new LoanConvenienceData(maxSubmittedOnOffsetFromToday, maxApprovedOnOffsetFromToday, maxDisbursedOnOffsetFromToday,
|
||||
expectedLoanTermInDays, actualLoanTermInDays, expectedLoanTermInMonths, actualLoanTermInMonths);
|
||||
|
||||
this.id = basicDetails.getId();
|
||||
this.externalId = basicDetails.getExternalId();
|
||||
this.loanProductName = basicDetails.getLoanProductName();
|
||||
this.submittedOnDate = basicDetails.getSubmittedOnDate();
|
||||
this.approvedOnDate = basicDetails.getApprovedOnDate();
|
||||
this.expectedDisbursementDate = basicDetails.getExpectedDisbursementDate();
|
||||
this.actualDisbursementDate = basicDetails.getActualDisbursementDate();
|
||||
this.closedOnDate = basicDetails.getClosedOnDate();
|
||||
this.expectedMaturityDate = basicDetails.getExpectedMaturityDate();
|
||||
this.expectedFirstRepaymentOnDate = basicDetails.getExpectedFirstRepaymentOnDate();
|
||||
this.interestChargedFromDate = basicDetails.getInterestChargedFromDate();
|
||||
this.principal = basicDetails.getPrincipal();
|
||||
this.inArrearsTolerance = basicDetails.getInArrearsTolerance();
|
||||
this.numberOfRepayments = basicDetails.getNumberOfRepayments();
|
||||
this.repaymentEvery = basicDetails.getRepaymentEvery();
|
||||
this.interestRatePerPeriod = basicDetails.getInterestRatePerPeriod();
|
||||
this.annualInterestRate = basicDetails.getAnnualInterestRate();
|
||||
this.repaymentFrequencyType = basicDetails.getRepaymentFrequencyType();
|
||||
this.interestRateFrequencyType = basicDetails.getInterestRateFrequencyType();
|
||||
this.amortizationType = basicDetails.getAmortizationType();
|
||||
this.interestType = basicDetails.getInterestType();
|
||||
this.interestCalculationPeriodType = basicDetails.getInterestCalculationPeriodType();
|
||||
this.lifeCycleStatusText = basicDetails.getLifeCycleStatusText();
|
||||
this.lifeCycleStatusDate = basicDetails.getLifeCycleStatusDate();
|
||||
}
|
||||
|
||||
public LoanConvenienceData getConvenienceData() {
|
||||
return convenienceData;
|
||||
}
|
||||
|
||||
public void setConvenienceData(LoanConvenienceData convenienceData) {
|
||||
this.convenienceData = convenienceData;
|
||||
}
|
||||
|
||||
public LoanPermissionData getPermissions() {
|
||||
@@ -28,21 +113,29 @@ public class LoanAccountData {
|
||||
public void setPermissions(LoanPermissionData permissions) {
|
||||
this.permissions = permissions;
|
||||
}
|
||||
|
||||
public LoanBasicDetailsData getBasicDetails() {
|
||||
return basicDetails;
|
||||
|
||||
public LoanAccountSummaryData getSummary() {
|
||||
return summary;
|
||||
}
|
||||
|
||||
public void setBasicDetails(LoanBasicDetailsData basicDetails) {
|
||||
this.basicDetails = basicDetails;
|
||||
public void setSummary(LoanAccountSummaryData summary) {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public DerivedLoanData getLoanData() {
|
||||
return loanData;
|
||||
public LoanRepaymentScheduleData getRepaymentSchedule() {
|
||||
return repaymentSchedule;
|
||||
}
|
||||
|
||||
public void setLoanData(DerivedLoanData loanData) {
|
||||
this.loanData = loanData;
|
||||
public void setRepaymentSchedule(LoanRepaymentScheduleData repaymentSchedule) {
|
||||
this.repaymentSchedule = repaymentSchedule;
|
||||
}
|
||||
|
||||
public List<LoanRepaymentData> getLoanRepayments() {
|
||||
return loanRepayments;
|
||||
}
|
||||
|
||||
public void setLoanRepayments(List<LoanRepaymentData> loanRepayments) {
|
||||
this.loanRepayments = loanRepayments;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
@@ -52,4 +145,191 @@ public class LoanAccountData {
|
||||
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;
|
||||
}
|
||||
}
|
||||
-2
@@ -1,8 +1,6 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class LoanAccountSummaryData {
|
||||
|
||||
private MoneyData originalPrincipal;
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
public class LoanConvenienceData {
|
||||
|
||||
private final int maxSubmittedOnOffsetFromToday;
|
||||
private final int maxApprovedOnOffsetFromToday;
|
||||
private final int maxDisbursedOnOffsetFromToday;
|
||||
private final int expectedLoanTermInDays;
|
||||
private final int actualLoanTermInDays;
|
||||
private final int expectedLoanTermInMonths;
|
||||
private final int actualLoanTermInMonths;
|
||||
|
||||
public LoanConvenienceData(int maxSubmittedOnOffsetFromToday,
|
||||
int maxApprovedOnOffsetFromToday,
|
||||
int maxDisbursedOnOffsetFromToday, int expectedLoanTermInDays,
|
||||
int actualLoanTermInDays, int expectedLoanTermInMonths,
|
||||
int actualLoanTermInMonths) {
|
||||
this.maxSubmittedOnOffsetFromToday = maxSubmittedOnOffsetFromToday;
|
||||
this.maxApprovedOnOffsetFromToday = maxApprovedOnOffsetFromToday;
|
||||
this.maxDisbursedOnOffsetFromToday = maxDisbursedOnOffsetFromToday;
|
||||
this.expectedLoanTermInDays = expectedLoanTermInDays;
|
||||
this.actualLoanTermInDays = actualLoanTermInDays;
|
||||
this.expectedLoanTermInMonths = expectedLoanTermInMonths;
|
||||
this.actualLoanTermInMonths = actualLoanTermInMonths;
|
||||
}
|
||||
|
||||
public int getMaxSubmittedOnOffsetFromToday() {
|
||||
return maxSubmittedOnOffsetFromToday;
|
||||
}
|
||||
|
||||
public int getMaxApprovedOnOffsetFromToday() {
|
||||
return maxApprovedOnOffsetFromToday;
|
||||
}
|
||||
|
||||
public int getMaxDisbursedOnOffsetFromToday() {
|
||||
return maxDisbursedOnOffsetFromToday;
|
||||
}
|
||||
|
||||
public int getExpectedLoanTermInDays() {
|
||||
return expectedLoanTermInDays;
|
||||
}
|
||||
|
||||
public int getActualLoanTermInDays() {
|
||||
return actualLoanTermInDays;
|
||||
}
|
||||
|
||||
public int getExpectedLoanTermInMonths() {
|
||||
return expectedLoanTermInMonths;
|
||||
}
|
||||
|
||||
public int getActualLoanTermInMonths() {
|
||||
return actualLoanTermInMonths;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,8 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||
import org.joda.time.DateMidnight;
|
||||
import org.joda.time.Days;
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@XmlRootElement
|
||||
@JsonFilter("loanRepaymentFilter")
|
||||
public class LoanRepaymentData {
|
||||
|
||||
@@ -48,9 +43,9 @@ public class LoanRepaymentData {
|
||||
return date;
|
||||
}
|
||||
|
||||
public int getTransactionOffsetFromToday() {
|
||||
return Days.daysBetween(new DateMidnight().toDateTime(), this.date.toDateMidnight().toDateTime()).getDays();
|
||||
}
|
||||
// public int getTransactionOffsetFromToday() {
|
||||
// return Days.daysBetween(new DateMidnight().toDateTime(), this.date.toDateMidnight().toDateTime()).getDays();
|
||||
// }
|
||||
|
||||
public void setDate(LocalDate date) {
|
||||
this.date = date;
|
||||
|
||||
-3
@@ -1,10 +1,7 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@XmlRootElement
|
||||
public class LoanRepaymentPeriodData {
|
||||
|
||||
private Integer period;
|
||||
|
||||
-3
@@ -3,9 +3,6 @@ package org.mifosng.platform.api.data;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class LoanRepaymentScheduleData {
|
||||
|
||||
private List<LoanRepaymentPeriodData> periods = new ArrayList<LoanRepaymentPeriodData>();
|
||||
|
||||
@@ -4,9 +4,6 @@ import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement(name = "loanSchedule")
|
||||
public class LoanSchedule implements Serializable {
|
||||
|
||||
private List<ScheduledLoanInstallment> scheduledLoanInstallments = new ArrayList<ScheduledLoanInstallment>();
|
||||
|
||||
@@ -4,9 +4,6 @@ import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
||||
|
||||
private String currencyCode;
|
||||
|
||||
-3
@@ -3,11 +3,8 @@ package org.mifosng.platform.api.data;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@XmlRootElement(name = "installment")
|
||||
public class ScheduledLoanInstallment implements Serializable {
|
||||
|
||||
private Integer installmentNumber;
|
||||
|
||||
+15
-12
@@ -185,11 +185,14 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
||||
List<ClientLoanAccountSummaryData> results = this.jdbcTemplate.query(sql, rm, new Object[] {clientId, currentUser.getOrganisation().getId()});
|
||||
if (results != null) {
|
||||
for (ClientLoanAccountSummaryData row : results) {
|
||||
if (row.isOpen()) {
|
||||
|
||||
LoanStatusMapper statusMapper = new LoanStatusMapper(row.getLoanStatusId());
|
||||
|
||||
if (statusMapper.isOpen()) {
|
||||
openLoans.add(row);
|
||||
} else if (row.isWaitingForDisbursal()) {
|
||||
} else if (statusMapper.isAwaitingDisbursal()) {
|
||||
awaitingDisbursalLoans.add(row);
|
||||
} else if (row.isPendingApproval()) {
|
||||
} else if (statusMapper.isPendingApproval()) {
|
||||
pendingApprovalLoans.add(row);
|
||||
} else {
|
||||
closedLoans.add(row);
|
||||
@@ -226,16 +229,16 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
||||
Long productId = JdbcSupport.getLong(rs, "productId");
|
||||
String loanProductName = rs.getString("productName");
|
||||
Integer loanStatusId = JdbcSupport.getInteger(rs, "statusId");
|
||||
String lifeCycleStatusText = rs.getString("statusName");
|
||||
// String lifeCycleStatusText = rs.getString("statusName");
|
||||
//
|
||||
// LoanStatusMapper statusMapper = new LoanStatusMapper(loanStatusId);
|
||||
//
|
||||
// boolean pendingApproval = statusMapper.isPendingApproval();
|
||||
// boolean waitingForDisbursal = statusMapper.isAwaitingDisbursal();
|
||||
// boolean open = statusMapper.isOpen();
|
||||
// boolean closed = statusMapper.isClosed();
|
||||
|
||||
LoanStatusMapper statusMapper = new LoanStatusMapper(loanStatusId);
|
||||
|
||||
boolean pendingApproval = statusMapper.isPendingApproval();
|
||||
boolean waitingForDisbursal = statusMapper.isAwaitingDisbursal();
|
||||
boolean open = statusMapper.isOpen();
|
||||
boolean closed = statusMapper.isClosed();
|
||||
|
||||
return new ClientLoanAccountSummaryData(id, externalId, productId, loanProductName, loanStatusId, lifeCycleStatusText, pendingApproval, waitingForDisbursal, open, closed);
|
||||
return new ClientLoanAccountSummaryData(id, externalId, productId, loanProductName, loanStatusId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-10
@@ -48,10 +48,7 @@ public class DerivedLoanDataProcessor {
|
||||
}
|
||||
|
||||
if (transaction.isWaiver()) {
|
||||
LoanRepaymentData repaymentData = processWaiver(
|
||||
transaction, scheduledRepaymentPeriod,
|
||||
repaymentScheduleIndex, loanRepaymentPeriods,
|
||||
arrearsTolerance, currencyDetail);
|
||||
LoanRepaymentData repaymentData = processWaiver(transaction, scheduledRepaymentPeriod, currencyDetail);
|
||||
loanRepayments.add(repaymentData);
|
||||
}
|
||||
|
||||
@@ -77,10 +74,7 @@ public class DerivedLoanDataProcessor {
|
||||
}
|
||||
|
||||
private LoanRepaymentData processWaiver(LoanTransaction transaction,
|
||||
LoanRepaymentPeriodData scheduledRepaymentPeriod,
|
||||
int repaymentScheduleIndex,
|
||||
List<LoanRepaymentPeriodData> loanRepaymentPeriods,
|
||||
Money arrearsTolerance, CurrencyData currencyData) {
|
||||
LoanRepaymentPeriodData scheduledRepaymentPeriod, CurrencyData currencyData) {
|
||||
|
||||
MonetaryCurrency currency = new MonetaryCurrency(currencyData.getCode(), currencyData.getDecimalPlaces());
|
||||
Money totalToWaive = transaction.getAmount(currency);
|
||||
@@ -152,7 +146,7 @@ public class DerivedLoanDataProcessor {
|
||||
|
||||
LocalDate arrearsFrom = determineInArrearsFrom(currentRepaymentSchedule, loanRepaymentPeriods, repaymentIndex);
|
||||
|
||||
LocalDate arrearsTo = determineInArrearsTo(currentRepaymentSchedule, loanRepaymentPeriods, repaymentIndex);
|
||||
LocalDate arrearsTo = determineInArrearsTo(loanRepaymentPeriods, repaymentIndex);
|
||||
|
||||
currentRepaymentSchedule.setArrearsFrom(arrearsFrom);
|
||||
currentRepaymentSchedule.setArrearsTo(arrearsTo);
|
||||
@@ -165,7 +159,6 @@ public class DerivedLoanDataProcessor {
|
||||
}
|
||||
|
||||
private LocalDate determineInArrearsTo(
|
||||
LoanRepaymentPeriodData currentRepaymentSchedule,
|
||||
List<LoanRepaymentPeriodData> loanRepaymentPeriods,
|
||||
int repaymentIndex) {
|
||||
|
||||
|
||||
@@ -28,7 +28,12 @@ import org.joda.time.LocalDate;
|
||||
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.LoanAccountData;
|
||||
import org.mifosng.platform.api.data.LoanAccountSummaryData;
|
||||
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
||||
import org.mifosng.platform.api.data.LoanPermissionData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentScheduleData;
|
||||
import org.mifosng.platform.api.data.MoneyData;
|
||||
import org.mifosng.platform.client.domain.Client;
|
||||
import org.mifosng.platform.currency.domain.MonetaryCurrency;
|
||||
@@ -975,4 +980,34 @@ public class Loan extends AbstractAuditableCustom<AppUser, Long> {
|
||||
public String getCurrencyCode() {
|
||||
return this.loanRepaymentScheduleDetail.getPrincipal().getCurrencyCode();
|
||||
}
|
||||
|
||||
public LoanAccountData toLoanAccountData(LoanAccountSummaryData summary, LoanRepaymentScheduleData repaymentSchedule,
|
||||
List<LoanRepaymentData> loanRepayments,
|
||||
CurrencyData currencyData) {
|
||||
|
||||
LoanBasicDetailsData basicDetails = toBasicDetailsData(currencyData);
|
||||
|
||||
// permissions
|
||||
boolean waiveAllowed = summary.isWaiveAllowed(basicDetails.getInArrearsTolerance())
|
||||
&& isNotClosed();
|
||||
boolean undoDisbursalAllowed = isDisbursed()
|
||||
&& isOpenWithNoRepaymentMade();
|
||||
boolean makeRepaymentAllowed = isDisbursed()
|
||||
&& isNotClosed();
|
||||
|
||||
boolean rejectAllowed = isNotApproved()
|
||||
&& isNotDisbursed() && isNotClosed();
|
||||
boolean withdrawnByApplicantAllowed = isNotDisbursed()
|
||||
&& isNotClosed();
|
||||
boolean undoApprovalAllowed = isApproved()
|
||||
&& isNotClosed();
|
||||
boolean disbursalAllowed = isApproved()
|
||||
&& isNotDisbursed() && isNotClosed();
|
||||
|
||||
LoanPermissionData permissions = new LoanPermissionData(waiveAllowed, makeRepaymentAllowed, rejectAllowed, withdrawnByApplicantAllowed,
|
||||
undoApprovalAllowed, undoDisbursalAllowed, disbursalAllowed, isSubmittedAndPendingApproval(),
|
||||
isWaitingForDisbursal());
|
||||
|
||||
return new LoanAccountData(basicDetails, summary, repaymentSchedule, loanRepayments, permissions);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -65,7 +65,7 @@ public class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom<Ap
|
||||
this.completed = false;
|
||||
}
|
||||
|
||||
public LoanRepaymentScheduleInstallment(final Loan loan, final Integer installmentNumber, final LocalDate from,
|
||||
public LoanRepaymentScheduleInstallment(final Loan loan, final Integer installmentNumber,
|
||||
final LocalDate dueDate, final BigDecimal principal, final BigDecimal interest) {
|
||||
this.loan = loan;
|
||||
this.installmentNumber = installmentNumber;
|
||||
|
||||
@@ -94,7 +94,7 @@ public class LoanAssembler {
|
||||
|
||||
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
||||
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
||||
scheduledLoanInstallment.getPeriodStart(),
|
||||
// scheduledLoanInstallment.getPeriodStart(),
|
||||
scheduledLoanInstallment.getPeriodEnd(), readPrincipalDue.getAmount(),
|
||||
readInterestDue.getAmount());
|
||||
loan.addRepaymentScheduleInstallment(installment);
|
||||
|
||||
+1
-26
@@ -11,8 +11,6 @@ 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;
|
||||
@@ -89,31 +87,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
private LoanAccountData convertToData(final Loan realLoan, CurrencyData currencyData) {
|
||||
|
||||
DerivedLoanData loanData = realLoan.deriveLoanData(currencyData);
|
||||
|
||||
LoanBasicDetailsData basicDetails = realLoan.toBasicDetailsData(currencyData);
|
||||
|
||||
// permissions
|
||||
boolean waiveAllowed = loanData.getSummary().isWaiveAllowed(basicDetails.getInArrearsTolerance())
|
||||
&& realLoan.isNotClosed();
|
||||
boolean undoDisbursalAllowed = realLoan.isDisbursed()
|
||||
&& realLoan.isOpenWithNoRepaymentMade();
|
||||
boolean makeRepaymentAllowed = realLoan.isDisbursed()
|
||||
&& realLoan.isNotClosed();
|
||||
|
||||
boolean rejectAllowed = realLoan.isNotApproved()
|
||||
&& realLoan.isNotDisbursed() && realLoan.isNotClosed();
|
||||
boolean withdrawnByApplicantAllowed = realLoan.isNotDisbursed()
|
||||
&& realLoan.isNotClosed();
|
||||
boolean undoApprovalAllowed = realLoan.isApproved()
|
||||
&& 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 realLoan.toLoanAccountData(loanData.getSummary(), loanData.getRepaymentSchedule(), loanData.getLoanRepayments(), currencyData);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -307,7 +307,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
||||
|
||||
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
||||
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
||||
scheduledLoanInstallment.getPeriodStart(),
|
||||
// scheduledLoanInstallment.getPeriodStart(),
|
||||
scheduledLoanInstallment.getPeriodEnd(), principal.getAmount(),
|
||||
interest.getAmount());
|
||||
modifiedLoanRepaymentSchedule.add(installment);
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ public class LoanRepaymentScheduleInstallmentBuilder {
|
||||
|
||||
private Loan loan = null;
|
||||
private Integer installmentNumber = Integer.valueOf(1);
|
||||
private LocalDate from = LocalDate.now();
|
||||
// private LocalDate from = LocalDate.now();
|
||||
private LocalDate dueDate = LocalDate.now();
|
||||
private MonetaryCurrency currencyDetail = new MonetaryCurrencyBuilder().build();
|
||||
private Money principal = new MoneyBuilder().build();
|
||||
@@ -21,7 +21,7 @@ public class LoanRepaymentScheduleInstallmentBuilder {
|
||||
}
|
||||
|
||||
public LoanRepaymentScheduleInstallment build() {
|
||||
return new LoanRepaymentScheduleInstallment(loan, installmentNumber, from, dueDate, principal.getAmount(), interest.getAmount());
|
||||
return new LoanRepaymentScheduleInstallment(loan, installmentNumber, dueDate, principal.getAmount(), interest.getAmount());
|
||||
}
|
||||
|
||||
public LoanRepaymentScheduleInstallmentBuilder withPrincipal(String withPrincipal) {
|
||||
|
||||
Reference in New Issue
Block a user