diff --git a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp
index 9414a3ae1..a6cc4075b 100644
--- a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp
+++ b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/client/viewClientAccount.jsp
@@ -532,9 +532,9 @@ $(document).ready(function() {
var curTabID = currentTab.prop("id")
- offsetToSubmittedDate = data.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",
diff --git a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp
index ec5a91a4d..bd440c3e3 100644
--- a/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp
+++ b/mifosng-individual-lending-app/src/main/webapp/WEB-INF/views/view-templates.jsp
@@ -371,7 +371,7 @@
({{=$ctx.number(pendingApprovalLoanCount)}}):
{{#each pendingApprovalLoans}}
- {{=loanProductName}}: #{{=id}}
+ {{=loanProductName}}: #{{=id}}
{{/each}}
@@ -382,7 +382,7 @@
({{=$ctx.number(awaitingDisbursalLoanCount)}}):
{{#each awaitingDisbursalLoans}}
- {{=loanProductName}}: #{{=id}}
+ {{=loanProductName}}: #{{=id}}
{{/each}}
@@ -393,7 +393,7 @@
({{=$ctx.number(activeLoanCount)}}):
{{#each openLoans}}
- {{=loanProductName}}: #{{=id}}
+ {{=loanProductName}}: #{{=id}}
{{/each}}
@@ -404,7 +404,7 @@
({{=$ctx.number(closedLoanCount)}}):
@@ -531,20 +531,19 @@
- {{#if loanData.loanRepayments}}
+ {{#if loanRepayments}}
{{/if}}
- {{#each basicDetails}}
{{=lifeCycleStatusText}} ( {{=$ctx.globalDate(lifeCycleStatusDate)}})
-{{#if $ctx.numberGreaterThanZero($parent.data.loanData.summary.totalInArrears.amount)}}
+{{#if $ctx.numberGreaterThanZero(summary.totalInArrears.amount)}}
{{#if actualDisbursementDate !== null}}
- - {{=$ctx.moneyWithCurrency($parent.parent.parent.data.loanData.summary.totalInArrears)}}
+ - {{=$ctx.moneyWithCurrency($parent.parent.data.summary.totalInArrears)}}
{{/if}}
{{/if}}
@@ -651,11 +650,10 @@
- {{/each}}
-
-
+
+
@@ -669,33 +667,33 @@
|
- {{=$ctx.money(loanData.summary.originalPrincipal)}} |
- {{=$ctx.money(loanData.summary.principalPaid)}} |
+ {{=$ctx.money(summary.originalPrincipal)}} |
+ {{=$ctx.money(summary.principalPaid)}} |
|
- {{=$ctx.money(loanData.summary.principalOutstanding)}} |
+ {{=$ctx.money(summary.principalOutstanding)}} |
|
- {{=$ctx.money(loanData.summary.originalInterest)}} |
- {{=$ctx.money(loanData.summary.interestPaid)}} |
+ {{=$ctx.money(summary.originalInterest)}} |
+ {{=$ctx.money(summary.interestPaid)}} |
|
- {{=$ctx.money(loanData.summary.interestOutstanding)}} |
+ {{=$ctx.money(summary.interestOutstanding)}} |
|
- {{=$ctx.money(loanData.summary.originalTotal)}} |
- {{=$ctx.money(loanData.summary.totalPaid)}} |
- {{=$ctx.money(loanData.summary.totalWaived)}} |
- {{=$ctx.money(loanData.summary.totalOutstanding)}} |
+ {{=$ctx.money(summary.originalTotal)}} |
+ {{=$ctx.money(summary.totalPaid)}} |
+ {{=$ctx.money(summary.totalWaived)}} |
+ {{=$ctx.money(summary.totalOutstanding)}} |
-
+
@@ -735,7 +733,7 @@
- {{#each loanData.repaymentSchedule.periods}}
+ {{#each repaymentSchedule.periods}}
| {{=$ctx.number(period)}} |
{{=$ctx.globalDate(date)}} |
@@ -754,20 +752,20 @@
|
-
- {{=$ctx.money(loanData.summary.principalPaid)}} |
-
-
- {{=$ctx.money(loanData.summary.interestPaid)}} |
-
-
- {{=$ctx.money(loanData.summary.totalPaid)}} |
-
+
+ {{=$ctx.money(summary.principalPaid)}} |
+
+
+ {{=$ctx.money(summary.interestPaid)}} |
+
+
+ {{=$ctx.money(summary.totalPaid)}} |
+
- {{#if loanData.loanRepayments}}
+ {{#if loanRepayments}}
@@ -778,19 +776,19 @@
|
|
|
- {{#if open}}
+ {{#if actualDisbursementDate !== null}}
|
{{/if}}
- {{#each loanData.loanRepayments}}
+ {{#each loanRepayments}}
| {{=$ctx.globalDate(date)}} |
{{=$ctx.money(total)}} |
{{=$ctx.money(principal)}} |
{{=$ctx.money(interest)}} |
- {{#if $parent.parent.data.open}}
+ {{#if $parent.parent.data.actualDisbursementDate !== null}}
|
{{/if}}
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java
index 0aa0aacc6..9ad8b1774 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ClientLoanAccountSummaryData.java
@@ -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;
}
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java
index e3b002b06..92aa83eda 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/CurrencyData.java
@@ -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;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java
index 88ccb7cb3..d33cf0abb 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/DerivedLoanData.java
@@ -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;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java
index 540437be6..b3b9c0f05 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountData.java
@@ -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 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 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 getLoanRepayments() {
+ return loanRepayments;
+ }
+
+ public void setLoanRepayments(List 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;
+ }
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java
index 133652201..59168a66c 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanAccountSummaryData.java
@@ -1,8 +1,6 @@
package org.mifosng.platform.api.data;
-import javax.xml.bind.annotation.XmlRootElement;
-@XmlRootElement
public class LoanAccountSummaryData {
private MoneyData originalPrincipal;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanConvenienceData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanConvenienceData.java
new file mode 100644
index 000000000..d0c372649
--- /dev/null
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanConvenienceData.java
@@ -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;
+ }
+}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java
index d4d8995ab..24252d747 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentData.java
@@ -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;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java
index f1631f567..ffaf8c34a 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentPeriodData.java
@@ -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;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java
index 953ec5fbf..0e5eba9b5 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanRepaymentScheduleData.java
@@ -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 periods = new ArrayList();
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java
index 00435797b..3557ee652 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanSchedule.java
@@ -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 scheduledLoanInstallments = new ArrayList();
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java
index 121795ae6..e012b830d 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/MoneyData.java
@@ -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 {
private String currencyCode;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java
index f251e771e..277721ceb 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/ScheduledLoanInstallment.java
@@ -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;
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java
index e714aeb70..cb44a54ef 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/client/service/ClientReadPlatformServiceImpl.java
@@ -185,11 +185,14 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
List 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);
}
}
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java
index d99bd6208..5db86c7c4 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/DerivedLoanDataProcessor.java
@@ -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 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 loanRepaymentPeriods,
int repaymentIndex) {
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java
index d8d5ba846..e5b57600c 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/Loan.java
@@ -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 {
public String getCurrencyCode() {
return this.loanRepaymentScheduleDetail.getPrincipal().getCurrencyCode();
}
+
+ public LoanAccountData toLoanAccountData(LoanAccountSummaryData summary, LoanRepaymentScheduleData repaymentSchedule,
+ List 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);
+ }
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java
index 9d05d814a..0f5451762 100644
--- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java
+++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/LoanRepaymentScheduleInstallment.java
@@ -65,7 +65,7 @@ public class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom