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")
|
var curTabID = currentTab.prop("id")
|
||||||
|
|
||||||
offsetToSubmittedDate = data.basicDetails.maxSubmittedOnOffsetFromToday;
|
offsetToSubmittedDate = data.convenienceData.maxSubmittedOnOffsetFromToday;
|
||||||
offsetToApprovalDate = data.basicDetails.maxApprovedOnOffsetFromToday;
|
offsetToApprovalDate = data.convenienceData.maxApprovedOnOffsetFromToday;
|
||||||
offsetToDisbursalDate = data.basicDetails.maxDisbursedOnOffsetFromToday;
|
offsetToDisbursalDate = data.convenienceData.maxDisbursedOnOffsetFromToday;
|
||||||
|
|
||||||
var $loantabs = $(".loantabs").tabs({
|
var $loantabs = $(".loantabs").tabs({
|
||||||
"show": function(event, ui) {
|
"show": function(event, ui) {
|
||||||
@@ -715,7 +715,7 @@ $(document).ready(function() {
|
|||||||
basicAuthKey: base64,
|
basicAuthKey: base64,
|
||||||
datasetType: "portfolio_loan",
|
datasetType: "portfolio_loan",
|
||||||
datasetPKValue: data.id,
|
datasetPKValue: data.id,
|
||||||
datasetTypeDiv: "loanadditionaldata" + data.basicDetails.id,
|
datasetTypeDiv: "loanadditionaldata" + data.id,
|
||||||
headingPrefix: "",
|
headingPrefix: "",
|
||||||
headingClass: "",
|
headingClass: "",
|
||||||
labelClass: "longrowlabel",
|
labelClass: "longrowlabel",
|
||||||
|
|||||||
@@ -371,7 +371,7 @@
|
|||||||
<span class="longrowlabel"><spring:message code="label.client.account.pending.approval.loans"/> ({{=$ctx.number(pendingApprovalLoanCount)}}):</span>
|
<span class="longrowlabel"><spring:message code="label.client.account.pending.approval.loans"/> ({{=$ctx.number(pendingApprovalLoanCount)}}):</span>
|
||||||
<span class="rowvalue">
|
<span class="rowvalue">
|
||||||
{{#each pendingApprovalLoans}}
|
{{#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}}
|
{{/each}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -382,7 +382,7 @@
|
|||||||
<span class="longrowlabel"><spring:message code="label.client.account.pending.disbursal.loans"/> ({{=$ctx.number(awaitingDisbursalLoanCount)}}):</span>
|
<span class="longrowlabel"><spring:message code="label.client.account.pending.disbursal.loans"/> ({{=$ctx.number(awaitingDisbursalLoanCount)}}):</span>
|
||||||
<span class="rowvalue">
|
<span class="rowvalue">
|
||||||
{{#each awaitingDisbursalLoans}}
|
{{#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}}
|
{{/each}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -393,7 +393,7 @@
|
|||||||
<span class="longrowlabel"><spring:message code="label.client.account.active.loans"/> ({{=$ctx.number(activeLoanCount)}}):</span>
|
<span class="longrowlabel"><spring:message code="label.client.account.active.loans"/> ({{=$ctx.number(activeLoanCount)}}):</span>
|
||||||
<span class="rowvalue">
|
<span class="rowvalue">
|
||||||
{{#each openLoans}}
|
{{#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}}
|
{{/each}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -404,7 +404,7 @@
|
|||||||
<div class="longrowlabel"><spring:message code="label.client.account.closed.loans"/> ({{=$ctx.number(closedLoanCount)}}):</div>
|
<div class="longrowlabel"><spring:message code="label.client.account.closed.loans"/> ({{=$ctx.number(closedLoanCount)}}):</div>
|
||||||
<div class="rowvalue">
|
<div class="rowvalue">
|
||||||
{{#each closedLoans}}
|
{{#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}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -531,20 +531,19 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#details{{=id}}" title="details"><spring:message code="tab.client.account.loan.details"/></a></li>
|
<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>
|
<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>
|
<li><a href="#repayments{{=id}}" title="repayments"><spring:message code="tab.client.account.loan.repayments"/></a></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
<!-- first loan tab -->
|
<!-- first loan tab -->
|
||||||
|
|
||||||
{{#each basicDetails}}
|
|
||||||
<div id="details{{=id}}" style="margin-top: 5px;">
|
<div id="details{{=id}}" style="margin-top: 5px;">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span class="longrowlabel"><spring:message code="label.client.account.loan.status"/></span>
|
<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)}})
|
<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}}
|
{{#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}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
@@ -651,11 +650,10 @@
|
|||||||
|
|
||||||
<div id="loanadditionaldata{{=id}}"></div>
|
<div id="loanadditionaldata{{=id}}"></div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
|
||||||
|
|
||||||
<!-- second loan tab -->
|
<!-- second loan tab -->
|
||||||
<div id="schedule{{=basicDetails.id}}" style="margin-top: 5px;">
|
<div id="schedule{{=id}}" style="margin-top: 5px;">
|
||||||
<table id="summarytable{{=basicDetails.id}}" class="pretty displayschedule">
|
<table id="summarytable{{=id}}" class="pretty displayschedule">
|
||||||
<caption><spring:message code="tab.client.account.loan.schedule.table.summary.caption"/></caption>
|
<caption><spring:message code="tab.client.account.loan.schedule.table.summary.caption"/></caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -669,33 +667,33 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.principal"/></th>
|
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.principal"/></th>
|
||||||
<td>{{=$ctx.money(loanData.summary.originalPrincipal)}}</td>
|
<td>{{=$ctx.money(summary.originalPrincipal)}}</td>
|
||||||
<td>{{=$ctx.money(loanData.summary.principalPaid)}}</td>
|
<td>{{=$ctx.money(summary.principalPaid)}}</td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>{{=$ctx.money(loanData.summary.principalOutstanding)}}</td>
|
<td>{{=$ctx.money(summary.principalOutstanding)}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.interest"/></th>
|
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.interest"/></th>
|
||||||
<td>{{=$ctx.money(loanData.summary.originalInterest)}}</td>
|
<td>{{=$ctx.money(summary.originalInterest)}}</td>
|
||||||
<td>{{=$ctx.money(loanData.summary.interestPaid)}}</td>
|
<td>{{=$ctx.money(summary.interestPaid)}}</td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>{{=$ctx.money(loanData.summary.interestOutstanding)}}</td>
|
<td>{{=$ctx.money(summary.interestOutstanding)}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.total"/></th>
|
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.total"/></th>
|
||||||
<th>{{=$ctx.money(loanData.summary.originalTotal)}}</th>
|
<th>{{=$ctx.money(summary.originalTotal)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.totalPaid)}}</th>
|
<th>{{=$ctx.money(summary.totalPaid)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.totalWaived)}}</th>
|
<th>{{=$ctx.money(summary.totalWaived)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.totalOutstanding)}}</th>
|
<th>{{=$ctx.money(summary.totalOutstanding)}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<br/>
|
<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>
|
<caption><spring:message code="tab.client.account.loan.schedule.table.repaymentschedule.caption"/></caption>
|
||||||
<colgroup span="2"></colgroup>
|
<colgroup span="2"></colgroup>
|
||||||
<colgroup span="3">
|
<colgroup span="3">
|
||||||
@@ -735,7 +733,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#each loanData.repaymentSchedule.periods}}
|
{{#each repaymentSchedule.periods}}
|
||||||
<tr>
|
<tr>
|
||||||
<td scope="row">{{=$ctx.number(period)}}</td>
|
<td scope="row">{{=$ctx.number(period)}}</td>
|
||||||
<td>{{=$ctx.globalDate(date)}}</td>
|
<td>{{=$ctx.globalDate(date)}}</td>
|
||||||
@@ -754,20 +752,20 @@
|
|||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2"><spring:message code="tab.client.account.loan.schedule.table.column.heading.total"/></th>
|
<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 class="lefthighlightcolheader">{{=$ctx.money(summary.originalPrincipal)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.principalPaid)}}</th>
|
<th>{{=$ctx.money(summary.principalPaid)}}</th>
|
||||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.principalOutstanding)}}</th>
|
<th class="righthighlightcolheader">{{=$ctx.money(summary.principalOutstanding)}}</th>
|
||||||
<th class="lefthighlightcolheader">{{=$ctx.money(loanData.summary.originalInterest)}}</th>
|
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalInterest)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.interestPaid)}}</th>
|
<th>{{=$ctx.money(summary.interestPaid)}}</th>
|
||||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.interestOutstanding)}}</th>
|
<th class="righthighlightcolheader">{{=$ctx.money(summary.interestOutstanding)}}</th>
|
||||||
<th class="lefthighlightcolheader">{{=$ctx.money(loanData.summary.originalTotal)}}</th>
|
<th class="lefthighlightcolheader">{{=$ctx.money(summary.originalTotal)}}</th>
|
||||||
<th>{{=$ctx.money(loanData.summary.totalPaid)}}</th>
|
<th>{{=$ctx.money(summary.totalPaid)}}</th>
|
||||||
<th class="righthighlightcolheader">{{=$ctx.money(loanData.summary.totalOutstanding)}}</th>
|
<th class="righthighlightcolheader">{{=$ctx.money(summary.totalOutstanding)}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{{#if loanData.loanRepayments}}
|
{{#if loanRepayments}}
|
||||||
<!-- Third loan tab -->
|
<!-- Third loan tab -->
|
||||||
<div id="repayments{{=id}}" style="margin-top: 5px;">
|
<div id="repayments{{=id}}" style="margin-top: 5px;">
|
||||||
<table id="newrepaymentsactivity{{=id}}" class="pretty displaypayments">
|
<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.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.principal.portion"/></th>
|
||||||
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.interest.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>
|
<th><spring:message code="tab.client.account.loan.schedule.table.column.heading.action"/></th>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#each loanData.loanRepayments}}
|
{{#each loanRepayments}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{=$ctx.globalDate(date)}}</td>
|
<td>{{=$ctx.globalDate(date)}}</td>
|
||||||
<td>{{=$ctx.money(total)}}</td>
|
<td>{{=$ctx.money(total)}}</td>
|
||||||
<td>{{=$ctx.money(principal)}}</td>
|
<td>{{=$ctx.money(principal)}}</td>
|
||||||
<td>{{=$ctx.money(interest)}}</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>
|
<td><button id="adjustrepaymentbtn{{=$parent.parent.parent.data.id}}_{{=id}}" class="adjustloanrepayment">Adjust</button></td>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
+1
-78
@@ -2,54 +2,25 @@ package org.mifosng.platform.api.data;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
import org.joda.time.LocalDate;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "clientLoanAccountSummary")
|
|
||||||
public class ClientLoanAccountSummaryData implements Serializable {
|
public class ClientLoanAccountSummaryData implements Serializable {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
private String externalId;
|
private String externalId;
|
||||||
private Long loanProductId;
|
private Long loanProductId;
|
||||||
private String loanProductName;
|
private String loanProductName;
|
||||||
|
|
||||||
private Integer loanStatusId;
|
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() {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClientLoanAccountSummaryData(Long id, String externalId,
|
public ClientLoanAccountSummaryData(Long id, String externalId,
|
||||||
Long productId, String loanProductName, Integer loanStatusId,
|
Long productId, String loanProductName, Integer loanStatusId) {
|
||||||
String lifeCycleStatusText, boolean pendingApproval,
|
|
||||||
boolean waitingForDisbursal, boolean open, boolean closed) {
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.externalId = externalId;
|
this.externalId = externalId;
|
||||||
this.loanProductId = productId;
|
this.loanProductId = productId;
|
||||||
this.loanProductName = loanProductName;
|
this.loanProductName = loanProductName;
|
||||||
this.loanStatusId = loanStatusId;
|
this.loanStatusId = loanStatusId;
|
||||||
this.lifeCycleStatusText = lifeCycleStatusText;
|
|
||||||
this.pendingApproval = pendingApproval;
|
|
||||||
this.waitingForDisbursal = waitingForDisbursal;
|
|
||||||
this.open = open;
|
|
||||||
this.closed = closed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
@@ -76,54 +47,6 @@ public class ClientLoanAccountSummaryData implements Serializable {
|
|||||||
this.loanProductName = loanProductName;
|
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() {
|
public Long getLoanProductId() {
|
||||||
return loanProductId;
|
return loanProductId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package org.mifosng.platform.api.data;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "currency")
|
|
||||||
public class CurrencyData implements Serializable {
|
public class CurrencyData implements Serializable {
|
||||||
|
|
||||||
private String code;
|
private String code;
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package org.mifosng.platform.api.data;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
public class DerivedLoanData {
|
public class DerivedLoanData {
|
||||||
|
|
||||||
private LoanRepaymentScheduleData repaymentSchedule;
|
private LoanRepaymentScheduleData repaymentSchedule;
|
||||||
|
|||||||
+294
-14
@@ -1,24 +1,109 @@
|
|||||||
package org.mifosng.platform.api.data;
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||||
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
@JsonFilter("loanFilter")
|
@JsonFilter("loanFilter")
|
||||||
public class LoanAccountData {
|
public class LoanAccountData {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
private LoanBasicDetailsData basicDetails;
|
private String externalId;
|
||||||
private DerivedLoanData loanData;
|
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 LoanPermissionData permissions;
|
||||||
|
|
||||||
|
private LoanConvenienceData convenienceData;
|
||||||
|
|
||||||
|
|
||||||
protected LoanAccountData() {
|
protected LoanAccountData() {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
public LoanAccountData(Long id, LoanBasicDetailsData basicDetails, DerivedLoanData loanData, LoanPermissionData permissions) {
|
public LoanAccountData(LoanBasicDetailsData basicDetails,
|
||||||
this.id = id;
|
LoanAccountSummaryData summary,
|
||||||
this.basicDetails = basicDetails;
|
LoanRepaymentScheduleData repaymentSchedule,
|
||||||
this.loanData = loanData;
|
List<LoanRepaymentData> loanRepayments, LoanPermissionData permissions) {
|
||||||
|
this.summary = summary;
|
||||||
|
this.repaymentSchedule = repaymentSchedule;
|
||||||
|
this.loanRepayments = loanRepayments;
|
||||||
this.permissions = permissions;
|
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() {
|
public LoanPermissionData getPermissions() {
|
||||||
@@ -29,20 +114,28 @@ public class LoanAccountData {
|
|||||||
this.permissions = permissions;
|
this.permissions = permissions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LoanBasicDetailsData getBasicDetails() {
|
public LoanAccountSummaryData getSummary() {
|
||||||
return basicDetails;
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBasicDetails(LoanBasicDetailsData basicDetails) {
|
public void setSummary(LoanAccountSummaryData summary) {
|
||||||
this.basicDetails = basicDetails;
|
this.summary = summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DerivedLoanData getLoanData() {
|
public LoanRepaymentScheduleData getRepaymentSchedule() {
|
||||||
return loanData;
|
return repaymentSchedule;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLoanData(DerivedLoanData loanData) {
|
public void setRepaymentSchedule(LoanRepaymentScheduleData repaymentSchedule) {
|
||||||
this.loanData = loanData;
|
this.repaymentSchedule = repaymentSchedule;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LoanRepaymentData> getLoanRepayments() {
|
||||||
|
return loanRepayments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLoanRepayments(List<LoanRepaymentData> loanRepayments) {
|
||||||
|
this.loanRepayments = loanRepayments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
@@ -52,4 +145,191 @@ public class LoanAccountData {
|
|||||||
public void setId(Long id) {
|
public void setId(Long id) {
|
||||||
this.id = 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;
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
public class LoanAccountSummaryData {
|
public class LoanAccountSummaryData {
|
||||||
|
|
||||||
private MoneyData originalPrincipal;
|
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;
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||||
import org.joda.time.DateMidnight;
|
|
||||||
import org.joda.time.Days;
|
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
@JsonFilter("loanRepaymentFilter")
|
@JsonFilter("loanRepaymentFilter")
|
||||||
public class LoanRepaymentData {
|
public class LoanRepaymentData {
|
||||||
|
|
||||||
@@ -48,9 +43,9 @@ public class LoanRepaymentData {
|
|||||||
return date;
|
return date;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTransactionOffsetFromToday() {
|
// public int getTransactionOffsetFromToday() {
|
||||||
return Days.daysBetween(new DateMidnight().toDateTime(), this.date.toDateMidnight().toDateTime()).getDays();
|
// return Days.daysBetween(new DateMidnight().toDateTime(), this.date.toDateMidnight().toDateTime()).getDays();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public void setDate(LocalDate date) {
|
public void setDate(LocalDate date) {
|
||||||
this.date = date;
|
this.date = date;
|
||||||
|
|||||||
-3
@@ -1,10 +1,7 @@
|
|||||||
package org.mifosng.platform.api.data;
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
public class LoanRepaymentPeriodData {
|
public class LoanRepaymentPeriodData {
|
||||||
|
|
||||||
private Integer period;
|
private Integer period;
|
||||||
|
|||||||
-3
@@ -3,9 +3,6 @@ package org.mifosng.platform.api.data;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
public class LoanRepaymentScheduleData {
|
public class LoanRepaymentScheduleData {
|
||||||
|
|
||||||
private List<LoanRepaymentPeriodData> periods = new ArrayList<LoanRepaymentPeriodData>();
|
private List<LoanRepaymentPeriodData> periods = new ArrayList<LoanRepaymentPeriodData>();
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import java.io.Serializable;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "loanSchedule")
|
|
||||||
public class LoanSchedule implements Serializable {
|
public class LoanSchedule implements Serializable {
|
||||||
|
|
||||||
private List<ScheduledLoanInstallment> scheduledLoanInstallments = new ArrayList<ScheduledLoanInstallment>();
|
private List<ScheduledLoanInstallment> scheduledLoanInstallments = new ArrayList<ScheduledLoanInstallment>();
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import java.io.Serializable;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement
|
|
||||||
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
||||||
|
|
||||||
private String currencyCode;
|
private String currencyCode;
|
||||||
|
|||||||
-3
@@ -3,11 +3,8 @@ package org.mifosng.platform.api.data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
import org.joda.time.LocalDate;
|
import org.joda.time.LocalDate;
|
||||||
|
|
||||||
@XmlRootElement(name = "installment")
|
|
||||||
public class ScheduledLoanInstallment implements Serializable {
|
public class ScheduledLoanInstallment implements Serializable {
|
||||||
|
|
||||||
private Integer installmentNumber;
|
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()});
|
List<ClientLoanAccountSummaryData> results = this.jdbcTemplate.query(sql, rm, new Object[] {clientId, currentUser.getOrganisation().getId()});
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
for (ClientLoanAccountSummaryData row : results) {
|
for (ClientLoanAccountSummaryData row : results) {
|
||||||
if (row.isOpen()) {
|
|
||||||
|
LoanStatusMapper statusMapper = new LoanStatusMapper(row.getLoanStatusId());
|
||||||
|
|
||||||
|
if (statusMapper.isOpen()) {
|
||||||
openLoans.add(row);
|
openLoans.add(row);
|
||||||
} else if (row.isWaitingForDisbursal()) {
|
} else if (statusMapper.isAwaitingDisbursal()) {
|
||||||
awaitingDisbursalLoans.add(row);
|
awaitingDisbursalLoans.add(row);
|
||||||
} else if (row.isPendingApproval()) {
|
} else if (statusMapper.isPendingApproval()) {
|
||||||
pendingApprovalLoans.add(row);
|
pendingApprovalLoans.add(row);
|
||||||
} else {
|
} else {
|
||||||
closedLoans.add(row);
|
closedLoans.add(row);
|
||||||
@@ -226,16 +229,16 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
|
|||||||
Long productId = JdbcSupport.getLong(rs, "productId");
|
Long productId = JdbcSupport.getLong(rs, "productId");
|
||||||
String loanProductName = rs.getString("productName");
|
String loanProductName = rs.getString("productName");
|
||||||
Integer loanStatusId = JdbcSupport.getInteger(rs, "statusId");
|
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);
|
return new ClientLoanAccountSummaryData(id, externalId, productId, loanProductName, 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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-10
@@ -48,10 +48,7 @@ public class DerivedLoanDataProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (transaction.isWaiver()) {
|
if (transaction.isWaiver()) {
|
||||||
LoanRepaymentData repaymentData = processWaiver(
|
LoanRepaymentData repaymentData = processWaiver(transaction, scheduledRepaymentPeriod, currencyDetail);
|
||||||
transaction, scheduledRepaymentPeriod,
|
|
||||||
repaymentScheduleIndex, loanRepaymentPeriods,
|
|
||||||
arrearsTolerance, currencyDetail);
|
|
||||||
loanRepayments.add(repaymentData);
|
loanRepayments.add(repaymentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,10 +74,7 @@ public class DerivedLoanDataProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private LoanRepaymentData processWaiver(LoanTransaction transaction,
|
private LoanRepaymentData processWaiver(LoanTransaction transaction,
|
||||||
LoanRepaymentPeriodData scheduledRepaymentPeriod,
|
LoanRepaymentPeriodData scheduledRepaymentPeriod, CurrencyData currencyData) {
|
||||||
int repaymentScheduleIndex,
|
|
||||||
List<LoanRepaymentPeriodData> loanRepaymentPeriods,
|
|
||||||
Money arrearsTolerance, CurrencyData currencyData) {
|
|
||||||
|
|
||||||
MonetaryCurrency currency = new MonetaryCurrency(currencyData.getCode(), currencyData.getDecimalPlaces());
|
MonetaryCurrency currency = new MonetaryCurrency(currencyData.getCode(), currencyData.getDecimalPlaces());
|
||||||
Money totalToWaive = transaction.getAmount(currency);
|
Money totalToWaive = transaction.getAmount(currency);
|
||||||
@@ -152,7 +146,7 @@ public class DerivedLoanDataProcessor {
|
|||||||
|
|
||||||
LocalDate arrearsFrom = determineInArrearsFrom(currentRepaymentSchedule, loanRepaymentPeriods, repaymentIndex);
|
LocalDate arrearsFrom = determineInArrearsFrom(currentRepaymentSchedule, loanRepaymentPeriods, repaymentIndex);
|
||||||
|
|
||||||
LocalDate arrearsTo = determineInArrearsTo(currentRepaymentSchedule, loanRepaymentPeriods, repaymentIndex);
|
LocalDate arrearsTo = determineInArrearsTo(loanRepaymentPeriods, repaymentIndex);
|
||||||
|
|
||||||
currentRepaymentSchedule.setArrearsFrom(arrearsFrom);
|
currentRepaymentSchedule.setArrearsFrom(arrearsFrom);
|
||||||
currentRepaymentSchedule.setArrearsTo(arrearsTo);
|
currentRepaymentSchedule.setArrearsTo(arrearsTo);
|
||||||
@@ -165,7 +159,6 @@ public class DerivedLoanDataProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private LocalDate determineInArrearsTo(
|
private LocalDate determineInArrearsTo(
|
||||||
LoanRepaymentPeriodData currentRepaymentSchedule,
|
|
||||||
List<LoanRepaymentPeriodData> loanRepaymentPeriods,
|
List<LoanRepaymentPeriodData> loanRepaymentPeriods,
|
||||||
int repaymentIndex) {
|
int repaymentIndex) {
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,12 @@ import org.joda.time.LocalDate;
|
|||||||
import org.mifosng.platform.api.data.CurrencyData;
|
import org.mifosng.platform.api.data.CurrencyData;
|
||||||
import org.mifosng.platform.api.data.DerivedLoanData;
|
import org.mifosng.platform.api.data.DerivedLoanData;
|
||||||
import org.mifosng.platform.api.data.EnumOptionData;
|
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.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.api.data.MoneyData;
|
||||||
import org.mifosng.platform.client.domain.Client;
|
import org.mifosng.platform.client.domain.Client;
|
||||||
import org.mifosng.platform.currency.domain.MonetaryCurrency;
|
import org.mifosng.platform.currency.domain.MonetaryCurrency;
|
||||||
@@ -975,4 +980,34 @@ public class Loan extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
public String getCurrencyCode() {
|
public String getCurrencyCode() {
|
||||||
return this.loanRepaymentScheduleDetail.getPrincipal().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;
|
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) {
|
final LocalDate dueDate, final BigDecimal principal, final BigDecimal interest) {
|
||||||
this.loan = loan;
|
this.loan = loan;
|
||||||
this.installmentNumber = installmentNumber;
|
this.installmentNumber = installmentNumber;
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ public class LoanAssembler {
|
|||||||
|
|
||||||
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
||||||
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
||||||
scheduledLoanInstallment.getPeriodStart(),
|
// scheduledLoanInstallment.getPeriodStart(),
|
||||||
scheduledLoanInstallment.getPeriodEnd(), readPrincipalDue.getAmount(),
|
scheduledLoanInstallment.getPeriodEnd(), readPrincipalDue.getAmount(),
|
||||||
readInterestDue.getAmount());
|
readInterestDue.getAmount());
|
||||||
loan.addRepaymentScheduleInstallment(installment);
|
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.CurrencyData;
|
||||||
import org.mifosng.platform.api.data.DerivedLoanData;
|
import org.mifosng.platform.api.data.DerivedLoanData;
|
||||||
import org.mifosng.platform.api.data.LoanAccountData;
|
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.LoanProductData;
|
||||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||||
import org.mifosng.platform.api.data.LoanRepaymentData;
|
import org.mifosng.platform.api.data.LoanRepaymentData;
|
||||||
@@ -90,30 +88,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
|||||||
|
|
||||||
DerivedLoanData loanData = realLoan.deriveLoanData(currencyData);
|
DerivedLoanData loanData = realLoan.deriveLoanData(currencyData);
|
||||||
|
|
||||||
LoanBasicDetailsData basicDetails = realLoan.toBasicDetailsData(currencyData);
|
return realLoan.toLoanAccountData(loanData.getSummary(), loanData.getRepaymentSchedule(), loanData.getLoanRepayments(), 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -307,7 +307,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
|||||||
|
|
||||||
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
LoanRepaymentScheduleInstallment installment = new LoanRepaymentScheduleInstallment(
|
||||||
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
loan, scheduledLoanInstallment.getInstallmentNumber(),
|
||||||
scheduledLoanInstallment.getPeriodStart(),
|
// scheduledLoanInstallment.getPeriodStart(),
|
||||||
scheduledLoanInstallment.getPeriodEnd(), principal.getAmount(),
|
scheduledLoanInstallment.getPeriodEnd(), principal.getAmount(),
|
||||||
interest.getAmount());
|
interest.getAmount());
|
||||||
modifiedLoanRepaymentSchedule.add(installment);
|
modifiedLoanRepaymentSchedule.add(installment);
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ public class LoanRepaymentScheduleInstallmentBuilder {
|
|||||||
|
|
||||||
private Loan loan = null;
|
private Loan loan = null;
|
||||||
private Integer installmentNumber = Integer.valueOf(1);
|
private Integer installmentNumber = Integer.valueOf(1);
|
||||||
private LocalDate from = LocalDate.now();
|
// private LocalDate from = LocalDate.now();
|
||||||
private LocalDate dueDate = LocalDate.now();
|
private LocalDate dueDate = LocalDate.now();
|
||||||
private MonetaryCurrency currencyDetail = new MonetaryCurrencyBuilder().build();
|
private MonetaryCurrency currencyDetail = new MonetaryCurrencyBuilder().build();
|
||||||
private Money principal = new MoneyBuilder().build();
|
private Money principal = new MoneyBuilder().build();
|
||||||
@@ -21,7 +21,7 @@ public class LoanRepaymentScheduleInstallmentBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public LoanRepaymentScheduleInstallment build() {
|
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) {
|
public LoanRepaymentScheduleInstallmentBuilder withPrincipal(String withPrincipal) {
|
||||||
|
|||||||
Reference in New Issue
Block a user