diff --git a/mifosng-db/0001a-mifosplatform-core-ddl-latest.sql b/mifosng-db/0001a-mifosplatform-core-ddl-latest.sql
index c754f4ecd..2f353ee5f 100644
--- a/mifosng-db/0001a-mifosplatform-core-ddl-latest.sql
+++ b/mifosng-db/0001a-mifosplatform-core-ddl-latest.sql
@@ -501,7 +501,6 @@ CREATE TABLE `m_loan` (
`product_id` bigint(20) DEFAULT NULL,
`fund_id` bigint(20) DEFAULT NULL,
`loan_officer_id` bigint(20) DEFAULT NULL,
- `guarantor_id` bigint(20) DEFAULT NULL,
`loanpurpose_cv_id` INT(11) DEFAULT NULL,
`loan_status_id` smallint(5) NOT NULL,
`currency_code` varchar(3) NOT NULL,
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/EnumOptionData.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/EnumOptionData.java
index 30930aef9..502751c3c 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/EnumOptionData.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/EnumOptionData.java
@@ -5,6 +5,12 @@
*/
package org.mifosplatform.infrastructure.core.data;
+/**
+ *
+ * Immutable data object represent generic enumeration value.
+ *
+ */
+@SuppressWarnings("unused")
public class EnumOptionData {
private final Long id;
@@ -20,12 +26,4 @@ public class EnumOptionData {
public Long getId() {
return id;
}
-
- public String getCode() {
- return code;
- }
-
- public String getValue() {
- return value;
- }
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java
index dd1eaf883..6bf022033 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java
@@ -5,7 +5,7 @@
*/
package org.mifosplatform.portfolio.client.data;
-import org.mifosplatform.infrastructure.core.data.EnumOptionData;
+import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData;
/**
* Immutable data object for client loan accounts.
@@ -24,7 +24,7 @@ public class ClientAccountSummaryData {
private final String productName;
private final Integer accountStatusId;
- private final EnumOptionData status;
+ private final LoanStatusEnumData status;
public ClientAccountSummaryData(final Long id, final String externalId, final Long productId, final String loanProductName,
final Integer loanStatusId) {
@@ -37,8 +37,8 @@ public class ClientAccountSummaryData {
this.status = null;
}
- public ClientAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId, final String loanProductName,
- final EnumOptionData loanStatus) {
+ public ClientAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId,
+ final String loanProductName, final LoanStatusEnumData loanStatus) {
this.id = id;
this.accountNo = accountNo;
this.externalId = externalId;
@@ -51,7 +51,7 @@ public class ClientAccountSummaryData {
public Integer accountStatusId() {
Integer accountStatus = this.accountStatusId;
if (accountStatus == null && this.status != null) {
- accountStatus = this.status.getId().intValue();
+ accountStatus = this.status.id().intValue();
}
return accountStatus;
}
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java
index fb3540cf1..d94b797ae 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java
@@ -30,6 +30,7 @@ import org.mifosplatform.portfolio.client.domain.NoteEnumerations;
import org.mifosplatform.portfolio.client.exception.ClientIdentifierNotFoundException;
import org.mifosplatform.portfolio.client.exception.ClientNotFoundException;
import org.mifosplatform.portfolio.client.exception.NoteNotFoundException;
+import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData;
import org.mifosplatform.portfolio.loanproduct.service.LoanEnumerations;
import org.mifosplatform.useradministration.data.AppUserData;
import org.mifosplatform.useradministration.domain.AppUser;
@@ -325,7 +326,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService
final Long productId = JdbcSupport.getLong(rs, "productId");
final String loanProductName = rs.getString("productName");
final Integer loanStatusId = JdbcSupport.getInteger(rs, "statusId");
- final EnumOptionData loanStatus = LoanEnumerations.status(loanStatusId);
+ final LoanStatusEnumData loanStatus = LoanEnumerations.status(loanStatusId);
return new ClientAccountSummaryData(id, accountNo, externalId, productId, loanProductName, loanStatus);
}
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java
index 865e15569..153816db3 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/api/LoansApiResource.java
@@ -40,8 +40,6 @@ import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSeriali
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
-import org.mifosplatform.organisation.monetary.domain.MonetaryCurrency;
-import org.mifosplatform.organisation.monetary.domain.Money;
import org.mifosplatform.organisation.staff.data.BulkTransferLoanOfficerData;
import org.mifosplatform.organisation.staff.data.StaffData;
import org.mifosplatform.organisation.staff.service.StaffReadPlatformService;
@@ -54,7 +52,6 @@ import org.mifosplatform.portfolio.loanaccount.data.LoanAccountData;
import org.mifosplatform.portfolio.loanaccount.data.LoanBasicDetailsData;
import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData;
import org.mifosplatform.portfolio.loanaccount.data.LoanCollateralData;
-import org.mifosplatform.portfolio.loanaccount.data.LoanPermissionData;
import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData;
import org.mifosplatform.portfolio.loanaccount.guarantor.data.GuarantorData;
import org.mifosplatform.portfolio.loanaccount.guarantor.service.GuarantorReadPlatformService;
@@ -86,11 +83,11 @@ public class LoansApiResource {
"interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType", "submittedOnDate",
"approvedOnDate", "expectedDisbursementDate", "actualDisbursementDate", "expectedFirstRepaymentOnDate",
"interestChargedFromDate", "closedOnDate", "expectedMaturityDate", "status", "lifeCycleStatusDate", "repaymentSchedule",
- "transactions", "permissions", "convenienceData", "charges", "guarantor", "collateral", "productOptions",
- "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions", "repaymentFrequencyTypeOptions",
- "termFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "repaymentStrategyOptions", "chargeOptions",
- "loanOfficerOptions", "chargeTemplate", "transactionProcessingStrategyId", "termFrequency", "termPeriodFrequencyType",
- "loanPurposeOptions", "loanCollateralOptions"));
+ "transactions", "convenienceData", "charges", "guarantor", "collateral", "productOptions", "amortizationTypeOptions",
+ "interestTypeOptions", "interestCalculationPeriodTypeOptions", "repaymentFrequencyTypeOptions", "termFrequencyTypeOptions",
+ "interestRateFrequencyTypeOptions", "fundOptions", "repaymentStrategyOptions", "chargeOptions", "loanOfficerOptions",
+ "chargeTemplate", "transactionProcessingStrategyId", "termFrequency", "termPeriodFrequencyType", "loanPurposeOptions",
+ "loanCollateralOptions"));
private final String resourceNameForPermissions = "LOAN";
@@ -198,7 +195,7 @@ public class LoansApiResource {
.retrieveCodeValuesByCode("LoanCollateral");
final boolean convenienceDataRequired = false;
- final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, null, charges,
+ final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, charges,
collateral, guarantors, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
repaymentStrategyOptions, interestRateFrequencyTypeOptions, amortizationTypeOptions, interestTypeOptions,
interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers, loanPurposeOptions,
@@ -218,10 +215,8 @@ public class LoansApiResource {
final LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveLoanAccountDetails(loanId);
- int loanRepaymentsCount = 0;
Collection loanRepayments = null;
LoanScheduleData repaymentSchedule = null;
- LoanPermissionData permissions = null;
Collection charges = null;
Collection guarantors = null;
Collection collateral = null;
@@ -265,32 +260,6 @@ public class LoansApiResource {
convenienceDataRequired = true;
}
- if (associationParameters.contains("permissions")) {
-
- if (repaymentSchedule == null) { throw new IllegalStateException(); }
- mandatoryResponseParameters.add("permissions");
-
- // FIXME - KW - Waive feature was changed to waive interest at
- // anytime so this permission checking is probably not needed -
- // look into.
- final MonetaryCurrency currency = new MonetaryCurrency(loanBasicDetails.getCurrency().code(), loanBasicDetails
- .getCurrency().decimalPlaces());
- final Money tolerance = Money.of(currency, loanBasicDetails.getInArrearsTolerance());
-
- final Money totalOutstandingMoney = Money.of(currency, repaymentSchedule.totalOutstanding());
-
- boolean isWaiveAllowed = totalOutstandingMoney.isGreaterThanZero()
- && (tolerance.isGreaterThan(totalOutstandingMoney) || tolerance.isEqualTo(totalOutstandingMoney));
-
- loanRepaymentsCount = retrieveNonDisbursementTransactions(loanRepayments);
- permissions = this.loanReadPlatformService.retrieveLoanPermissions(loanBasicDetails, isWaiveAllowed, loanRepaymentsCount);
-
- // clear parent data which wasn't requested
- if (!associationParameters.contains("repaymentSchedule")) {
- repaymentSchedule = null;
- }
- }
-
if (associationParameters.contains("charges")) {
mandatoryResponseParameters.add("charges");
charges = this.loanChargeReadPlatformService.retrieveLoanCharges(loanId);
@@ -345,7 +314,7 @@ public class LoansApiResource {
}
final LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, repaymentSchedule,
- loanRepayments, permissions, charges, collateral, guarantors, productOptions, loanTermFrequencyTypeOptions,
+ loanRepayments, charges, collateral, guarantors, productOptions, loanTermFrequencyTypeOptions,
repaymentFrequencyTypeOptions, repaymentStrategyOptions, interestRateFrequencyTypeOptions, amortizationTypeOptions,
interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers,
loanPurposeOptions, loanCollateralOptions);
@@ -355,20 +324,6 @@ public class LoansApiResource {
return this.toApiJsonSerializer.serialize(settings, loanAccount, LOAN_DATA_PARAMETERS);
}
- private int retrieveNonDisbursementTransactions(final Collection loanRepayments) {
- int loanRepaymentsCount = 0;
- if (!CollectionUtils.isEmpty(loanRepayments)) {
- for (LoanTransactionData transaction : loanRepayments) {
- if (transaction.isNotDisbursement()) {
- // use this to decide if undo disbural should permission
- // should be set to true.
- loanRepaymentsCount++;
- }
- }
- }
- return loanRepaymentsCount;
- }
-
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanAccountData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanAccountData.java
index b9a4d3175..342e634c8 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanAccountData.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanAccountData.java
@@ -37,7 +37,7 @@ public class LoanAccountData {
private final Long loanProductId;
private final String loanProductName;
private final String loanProductDescription;
- private final EnumOptionData status;
+ private final LoanStatusEnumData status;
private final Long fundId;
private final String fundName;
private final Long loanPurposeId;
@@ -53,7 +53,7 @@ public class LoanAccountData {
private final Integer numberOfRepayments;
private final Integer repaymentEvery;
private final EnumOptionData repaymentFrequencyType;
- private final Integer transactionProcessingStrategyId;
+ private final Long transactionProcessingStrategyId;
private final EnumOptionData amortizationType;
private final BigDecimal interestRatePerPeriod;
private final EnumOptionData interestRateFrequencyType;
@@ -69,7 +69,6 @@ public class LoanAccountData {
private final LocalDate interestChargedFromDate;
private final LocalDate closedOnDate;
private final LocalDate expectedMaturityDate;
- private final LocalDate lifeCycleStatusDate;
// associations
private final LoanScheduleData repaymentSchedule;
@@ -77,7 +76,6 @@ public class LoanAccountData {
private final Collection charges;
private final Collection collateral;
private final Collection guarantors;
- private final LoanPermissionData permissions;
private final LoanConvenienceData convenienceData;
// template
@@ -98,10 +96,9 @@ public class LoanAccountData {
public LoanAccountData(final LoanBasicDetailsData basicDetails, final boolean convenienceDataRequired,
final LoanScheduleData repaymentSchedule, final Collection transactions,
- final LoanPermissionData permissions, final Collection charges,
- final Collection collateral, final Collection guarantors,
- final Collection productOptions, final Collection termFrequencyTypeOptions,
- final Collection repaymentFrequencyTypeOptions,
+ final Collection charges, final Collection collateral,
+ final Collection guarantors, final Collection productOptions,
+ final Collection termFrequencyTypeOptions, final Collection repaymentFrequencyTypeOptions,
final Collection repaymentStrategyOptions,
final Collection interestRateFrequencyTypeOptions, final Collection amortizationTypeOptions,
final Collection interestTypeOptions, final Collection interestCalculationPeriodTypeOptions,
@@ -110,7 +107,6 @@ public class LoanAccountData {
final Collection loanCollateralOptions) {
this.repaymentSchedule = repaymentSchedule;
this.transactions = transactions;
- this.permissions = permissions;
this.charges = charges;
this.collateral = collateral;
this.guarantors = guarantors;
@@ -190,7 +186,7 @@ public class LoanAccountData {
this.interestCalculationPeriodType = basicDetails.getInterestCalculationPeriodType();
this.status = basicDetails.getStatus();
- this.lifeCycleStatusDate = basicDetails.getLifeCycleStatusDate();
+
} else {
this.id = null;
this.accountNo = null;
@@ -236,7 +232,6 @@ public class LoanAccountData {
this.interestCalculationPeriodType = null;
this.status = null;
- this.lifeCycleStatusDate = null;
}
}
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanBasicDetailsData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanBasicDetailsData.java
index aa364037f..a86dc4a0f 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanBasicDetailsData.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanBasicDetailsData.java
@@ -36,7 +36,7 @@ public class LoanBasicDetailsData {
private final Long loanProductId;
private final String loanProductName;
private final String loanProductDescription;
- private final EnumOptionData status;
+ private final LoanStatusEnumData status;
private final Long fundId;
private final String fundName;
private final Long loanPurposeId;
@@ -52,7 +52,7 @@ public class LoanBasicDetailsData {
private final Integer numberOfRepayments;
private final Integer repaymentEvery;
private final EnumOptionData repaymentFrequencyType;
- private final Integer transactionProcessingStrategyId;
+ private final Long transactionProcessingStrategyId;
private final EnumOptionData amortizationType;
private final BigDecimal interestRatePerPeriod;
private final EnumOptionData interestRateFrequencyType;
@@ -68,7 +68,6 @@ public class LoanBasicDetailsData {
private final LocalDate interestChargedFromDate;
private final LocalDate closedOnDate;
private final LocalDate expectedMaturityDate;
- private final LocalDate lifeCycleStatusDate;
private final BigDecimal totalDisbursementCharges;
private final Collection charges;
@@ -140,14 +139,7 @@ public class LoanBasicDetailsData {
this.numberOfRepayments = numberOfRepayments;
this.repaymentEvery = repaymentEvery;
this.repaymentFrequencyType = repaymentFrequencyType;
-
- // FIXME - kw - settle on using either long or integer for this
- // throughout product and account fields for loan.
- if (transactionStrategyId != null) {
- this.transactionProcessingStrategyId = transactionStrategyId.intValue();
- } else {
- this.transactionProcessingStrategyId = null;
- }
+ this.transactionProcessingStrategyId = transactionStrategyId;
this.amortizationType = amortizationType;
this.interestRatePerPeriod = interestRatePerPeriod;
@@ -165,7 +157,6 @@ public class LoanBasicDetailsData {
this.expectedMaturityDate = null;
this.repaymentsStartingFromDate = null;
this.interestChargedFromDate = null;
- this.lifeCycleStatusDate = null;
this.charges = charges;
this.totalDisbursementCharges = BigDecimal.ZERO;
@@ -208,8 +199,6 @@ public class LoanBasicDetailsData {
this.interestType = null;
this.interestCalculationPeriodType = null;
- this.lifeCycleStatusDate = null;
-
this.submittedOnDate = null;
this.approvedOnDate = null;
this.expectedDisbursementDate = expectedDisbursementDate;
@@ -234,10 +223,9 @@ public class LoanBasicDetailsData {
final BigDecimal inArrearsTolerance, final Integer numberOfRepayments, final Integer repaymentEvery,
final BigDecimal interestRatePerPeriod, final BigDecimal annualInterestRate, final EnumOptionData repaymentFrequencyType,
final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final EnumOptionData interestType,
- final EnumOptionData interestCalculationPeriodType, final EnumOptionData status, final LocalDate lifeCycleStatusDate,
- final Integer termFrequency, final EnumOptionData termPeriodFrequencyType, final Integer transactionStrategyId,
- final Collection charges, final Long loanOfficerId, String loanOfficerName,
- final BigDecimal totalDisbursementCharges) {
+ final EnumOptionData interestCalculationPeriodType, final LoanStatusEnumData status, final Integer termFrequency,
+ final EnumOptionData termPeriodFrequencyType, final Long transactionStrategyId, final Collection charges,
+ final Long loanOfficerId, String loanOfficerName, final BigDecimal totalDisbursementCharges) {
this.id = id;
this.accountNo = accountNo;
this.externalId = externalId;
@@ -277,7 +265,6 @@ public class LoanBasicDetailsData {
this.interestType = interestType;
this.interestCalculationPeriodType = interestCalculationPeriodType;
this.status = status;
- this.lifeCycleStatusDate = lifeCycleStatusDate;
this.termFrequency = termFrequency;
this.termPeriodFrequencyType = termPeriodFrequencyType;
this.transactionProcessingStrategyId = transactionStrategyId;
@@ -427,7 +414,7 @@ public class LoanBasicDetailsData {
return loanProductDescription;
}
- public EnumOptionData getStatus() {
+ public LoanStatusEnumData getStatus() {
return status;
}
@@ -519,11 +506,7 @@ public class LoanBasicDetailsData {
return interestCalculationPeriodType;
}
- public LocalDate getLifeCycleStatusDate() {
- return lifeCycleStatusDate;
- }
-
- public Integer getTransactionStrategyId() {
+ public Long getTransactionStrategyId() {
return this.transactionProcessingStrategyId;
}
@@ -556,5 +539,4 @@ public class LoanBasicDetailsData {
return officeId;
}
-
}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanPermissionData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanPermissionData.java
deleted file mode 100644
index 3d17b411b..000000000
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanPermissionData.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-package org.mifosplatform.portfolio.loanaccount.data;
-
-/**
- * Immutable data object containing information on permissions allowed on a given loan.
- */
-@SuppressWarnings("unused")
-public class LoanPermissionData {
-
- // permission for actions on loan
- private final boolean closeLoanAllowed;
- private final boolean closeLoanAsRescheduledAllowed;
- private final boolean addLoanChargeAllowed;
- private final boolean waiveAllowed;
- private final boolean makeRepaymentAllowed;
- private final boolean rejectAllowed;
- private final boolean withdrawnByApplicantAllowed;
- private final boolean undoApprovalAllowed;
- private final boolean disbursalAllowed;
- private final boolean undoDisbursalAllowed;
- private final boolean anyActionOnLoanAllowed;
-
- //permissions for setting/removing guarantors for Loans
- private final boolean setGuarantorAllowed;
- private final boolean editGuarantorAllowed;
-
- // status of loan
- private final boolean pendingApproval;
- private final boolean waitingForDisbursal;
- private final boolean closedObligationsMet;
-
- public LoanPermissionData(
- final boolean closeLoanAllowed,
- final boolean closeLoanAsRescheduledAllowed,
- final boolean addLoanChargeAllowed,
- final boolean waiveAllowed,
- final boolean makeRepaymentAllowed,
- final boolean rejectAllowed,
- final boolean withdrawnByApplicantAllowed,
- final boolean undoApprovalAllowed,
- final boolean undoDisbursalAllowed,
- final boolean disbursalAllowed,
- final boolean setGuarantorAllowed,
- final boolean editGuarantorAllowed,
- final boolean pendingApproval,
- final boolean waitingForDisbursal,
- final boolean closedObligationsMet) {
- this.closeLoanAllowed = closeLoanAllowed;
- this.closeLoanAsRescheduledAllowed = closeLoanAsRescheduledAllowed;
- this.addLoanChargeAllowed = addLoanChargeAllowed;
- this.waiveAllowed = waiveAllowed;
- this.makeRepaymentAllowed = makeRepaymentAllowed;
- this.rejectAllowed = rejectAllowed;
- this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed;
- this.undoApprovalAllowed = undoApprovalAllowed;
- this.undoDisbursalAllowed = undoDisbursalAllowed;
- this.disbursalAllowed = disbursalAllowed;
- this.pendingApproval = pendingApproval;
- this.setGuarantorAllowed = setGuarantorAllowed;
- this.editGuarantorAllowed = editGuarantorAllowed;
- this.waitingForDisbursal = waitingForDisbursal;
- this.closedObligationsMet = closedObligationsMet;
- this.anyActionOnLoanAllowed = closeLoanAllowed || closeLoanAsRescheduledAllowed || rejectAllowed || withdrawnByApplicantAllowed || pendingApproval || undoDisbursalAllowed || makeRepaymentAllowed;
- }
-}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanStatusEnumData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanStatusEnumData.java
new file mode 100644
index 000000000..f84e8b8d6
--- /dev/null
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/data/LoanStatusEnumData.java
@@ -0,0 +1,43 @@
+/**
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+package org.mifosplatform.portfolio.loanaccount.data;
+
+/**
+ * Immutable data object represent loan status enumerations.
+ */
+@SuppressWarnings("unused")
+public class LoanStatusEnumData {
+
+ private final Long id;
+ private final String code;
+ private final String value;
+ private boolean pendingApproval;
+ private boolean waitingForDisbursal;
+ private boolean active;
+ private boolean closedObligationsMet;
+ private boolean closedWrittenOff;
+ private boolean closedRescheduled;
+ private boolean closed;
+ private boolean overpaid;
+
+ public LoanStatusEnumData(final Long id, final String code, final String value) {
+ this.id = id;
+ this.code = code;
+ this.value = value;
+ this.pendingApproval = Long.valueOf(100).equals(this.id);
+ this.waitingForDisbursal = Long.valueOf(200).equals(this.id);
+ this.active = Long.valueOf(300).equals(this.id);
+ this.closedObligationsMet = Long.valueOf(600).equals(this.id);
+ this.closedWrittenOff = Long.valueOf(601).equals(this.id);
+ this.closedRescheduled = Long.valueOf(602).equals(this.id);
+ this.closed = this.closedObligationsMet || this.closedWrittenOff || this.closedRescheduled;
+ this.overpaid = Long.valueOf(700).equals(this.id);
+ }
+
+ public Long id() {
+ return this.id;
+ }
+}
\ No newline at end of file
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java
index 1e990bd0e..f7885ee8b 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/domain/Loan.java
@@ -1189,7 +1189,7 @@ public class Loan extends AbstractAuditableCustom {
this.loanStatus = statusEnum.getValue();
actualChanges.put("status", LoanEnumerations.status(this.loanStatus));
- this.approvedOnDate = null;
+ this.disbursedOnDate = null;
actualChanges.put("disbursedOnDate", "");
updateLoanToPreDisbursalState();
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java
index e42d4cde5..86c1fd952 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformService.java
@@ -11,7 +11,6 @@ import java.util.Collection;
import org.mifosplatform.organisation.monetary.data.CurrencyData;
import org.mifosplatform.portfolio.loanaccount.data.DisbursementData;
import org.mifosplatform.portfolio.loanaccount.data.LoanBasicDetailsData;
-import org.mifosplatform.portfolio.loanaccount.data.LoanPermissionData;
import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData;
import org.mifosplatform.portfolio.loanaccount.loanschedule.data.LoanScheduleData;
@@ -24,8 +23,6 @@ public interface LoanReadPlatformService {
Collection retrieveLoanTransactions(Long loanId);
- LoanPermissionData retrieveLoanPermissions(LoanBasicDetailsData loanBasicDetails, boolean isWaiverAllowed, int repaymentAndWaiveCount);
-
LoanBasicDetailsData retrieveClientAndProductDetails(Long clientId, Long productId);
LoanBasicDetailsData retrieveGroupAndProductDetails(Long groupId, Long productId);
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
index 1ebb45cc0..3c656b6fe 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
@@ -29,7 +29,7 @@ import org.mifosplatform.portfolio.group.service.GroupReadPlatformService;
import org.mifosplatform.portfolio.loanaccount.data.DisbursementData;
import org.mifosplatform.portfolio.loanaccount.data.LoanBasicDetailsData;
import org.mifosplatform.portfolio.loanaccount.data.LoanChargeData;
-import org.mifosplatform.portfolio.loanaccount.data.LoanPermissionData;
+import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData;
import org.mifosplatform.portfolio.loanaccount.data.LoanTransactionData;
import org.mifosplatform.portfolio.loanaccount.domain.Loan;
import org.mifosplatform.portfolio.loanaccount.domain.LoanRepository;
@@ -200,48 +200,6 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
}
}
- @Override
- public LoanPermissionData retrieveLoanPermissions(final LoanBasicDetailsData loanBasicDetails, final boolean isWaiverAllowed,
- final int repaymentAndWaiveCount) {
-
- final boolean pendingApproval = (loanBasicDetails.getStatus().getId().equals(100L));
- final boolean waitingForDisbursal = (loanBasicDetails.getStatus().getId().equals(200L));
- final boolean isActive = (loanBasicDetails.getStatus().getId().equals(300L));
- final boolean closedObligationsMet = (loanBasicDetails.getStatus().getId().equals(600L));
- final boolean closedWrittenOff = (loanBasicDetails.getStatus().getId().equals(602L));
- final boolean closedRescheduled = (loanBasicDetails.getStatus().getId().equals(602L));
-
- final boolean closed = closedObligationsMet || closedWrittenOff || closedRescheduled;
-
- final boolean isOverpaid = (loanBasicDetails.getStatus().getId().equals(700L));
- boolean addLoanChargeAllowed = true;
- boolean setGuarantorAllowed = true;
- boolean editGuarantorAllowed = true;
- if (closed || isOverpaid) {
- addLoanChargeAllowed = false;
- setGuarantorAllowed = false;
- editGuarantorAllowed = false;
- }
-
- final boolean waiveAllowed = isWaiverAllowed && isActive;
- final boolean makeRepaymentAllowed = isActive;
- final boolean closeLoanAllowed = !closed && isActive;
- final boolean closeLoanAsRescheduledAllowed = !closed && !isOverpaid && isActive;
-
- final boolean rejectAllowed = pendingApproval;
- final boolean withdrawnByApplicantAllowed = waitingForDisbursal || pendingApproval;
-
- final boolean undoApprovalAllowed = waitingForDisbursal;
-
- final boolean undoDisbursalAllowed = isActive && (repaymentAndWaiveCount == 0);
-
- final boolean disbursalAllowed = waitingForDisbursal;
-
- return new LoanPermissionData(closeLoanAllowed, closeLoanAsRescheduledAllowed, addLoanChargeAllowed, waiveAllowed,
- makeRepaymentAllowed, rejectAllowed, withdrawnByApplicantAllowed, undoApprovalAllowed, undoDisbursalAllowed,
- disbursalAllowed, setGuarantorAllowed, editGuarantorAllowed, pendingApproval, waitingForDisbursal, closedObligationsMet);
- }
-
@Override
public LoanBasicDetailsData retrieveClientAndProductDetails(final Long clientId, final Long productId) {
@@ -454,7 +412,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
final int interestRateFrequencyTypeInt = JdbcSupport.getInteger(rs, "interestRateFrequencyType");
final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeInt);
- final Integer transactionStrategyId = JdbcSupport.getInteger(rs, "transactionStrategyId");
+ final Long transactionStrategyId = JdbcSupport.getLong(rs, "transactionStrategyId");
final int amortizationTypeInt = JdbcSupport.getInteger(rs, "amortizationType");
final int interestTypeInt = JdbcSupport.getInteger(rs, "interestType");
@@ -466,18 +424,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
.interestCalculationPeriodType(interestCalculationPeriodTypeInt);
final Integer lifeCycleStatusId = JdbcSupport.getInteger(rs, "lifeCycleStatusId");
- final EnumOptionData status = LoanEnumerations.status(lifeCycleStatusId);
-
- LocalDate lifeCycleStatusDate = submittedOnDate;
- if (approvedOnDate != null) {
- lifeCycleStatusDate = approvedOnDate;
- }
- if (actualDisbursementDate != null) {
- lifeCycleStatusDate = actualDisbursementDate;
- }
- if (closedOnDate != null) {
- lifeCycleStatusDate = closedOnDate;
- }
+ final LoanStatusEnumData status = LoanEnumerations.status(lifeCycleStatusId);
Collection charges = null;
return new LoanBasicDetailsData(id, accountNo, externalId, clientId, clientName, clientOfficeId, groupId, groupName,
@@ -486,8 +433,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
expectedMaturityDate, expectedFirstRepaymentOnDate, interestChargedFromDate, currencyData, principal,
inArrearsTolerance, numberOfRepayments, repaymentEvery, interestRatePerPeriod, annualInterestRate,
repaymentFrequencyType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType,
- status, lifeCycleStatusDate, termFrequency, termPeriodFrequencyType, transactionStrategyId, charges, loanOfficerId,
- loanOfficerName, totalDisbursementCharges);
+ status, termFrequency, termPeriodFrequencyType, transactionStrategyId, charges, loanOfficerId, loanOfficerName,
+ totalDisbursementCharges);
}
}
diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/service/LoanEnumerations.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/service/LoanEnumerations.java
index 2298297c7..2b12001b8 100644
--- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/service/LoanEnumerations.java
+++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanproduct/service/LoanEnumerations.java
@@ -6,6 +6,7 @@
package org.mifosplatform.portfolio.loanproduct.service;
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
+import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData;
import org.mifosplatform.portfolio.loanaccount.domain.LoanStatus;
import org.mifosplatform.portfolio.loanaccount.domain.LoanTransactionType;
import org.mifosplatform.portfolio.loanproduct.domain.AccountingRuleType;
@@ -16,245 +17,284 @@ import org.mifosplatform.portfolio.loanproduct.domain.PeriodFrequencyType;
public class LoanEnumerations {
- public static EnumOptionData loanTermFrequencyType(final int id) {
- return loanTermFrequencyType(PeriodFrequencyType.fromInt(id));
- }
-
- public static EnumOptionData loanTermFrequencyType(final PeriodFrequencyType type) {
- final String codePrefix = "loanTermFrequency.";
- EnumOptionData optionData = null;
- switch (type) {
- case DAYS:
- optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix + PeriodFrequencyType.DAYS.getCode(), "Days");
- break;
- case WEEKS:
- optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
- break;
- case MONTHS:
- optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix + PeriodFrequencyType.MONTHS.getCode(), "Months");
- break;
- case YEARS:
- optionData = new EnumOptionData(PeriodFrequencyType.YEARS.getValue().longValue(), codePrefix + PeriodFrequencyType.YEARS.getCode(), "Years");
- break;
- default:
- optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData termFrequencyType(final int id) {
- return termFrequencyType(PeriodFrequencyType.fromInt(id));
- }
-
- public static EnumOptionData termFrequencyType(final PeriodFrequencyType type) {
- final String codePrefix = "termFrequency.";
- EnumOptionData optionData = null;
- switch (type) {
- case DAYS:
- optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix + PeriodFrequencyType.DAYS.getCode(), "Days");
- break;
- case WEEKS:
- optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
- break;
- case MONTHS:
- optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix + PeriodFrequencyType.MONTHS.getCode(), "Months");
- break;
- default:
- optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData repaymentFrequencyType(final int id) {
- return repaymentFrequencyType(PeriodFrequencyType.fromInt(id));
- }
-
- public static EnumOptionData repaymentFrequencyType(final PeriodFrequencyType type) {
- final String codePrefix = "repaymentFrequency.";
- EnumOptionData optionData = null;
- switch (type) {
- case DAYS:
- optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix + PeriodFrequencyType.DAYS.getCode(), "Days");
- break;
- case WEEKS:
- optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
- break;
- case MONTHS:
- optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix + PeriodFrequencyType.MONTHS.getCode(), "Months");
- break;
- default:
- optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData interestRateFrequencyType(final int id) {
- return interestRateFrequencyType(PeriodFrequencyType.fromInt(id));
- }
-
- public static EnumOptionData interestRateFrequencyType(final PeriodFrequencyType type) {
- final String codePrefix = "interestRateFrequency.";
- EnumOptionData optionData = null;
- switch (type) {
- case MONTHS:
- optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix + PeriodFrequencyType.MONTHS.getCode(), "Per month");
- break;
- case YEARS:
- optionData = new EnumOptionData(PeriodFrequencyType.YEARS.getValue().longValue(), codePrefix + PeriodFrequencyType.YEARS.getCode(), "Per year");
- break;
- default:
- optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData amortizationType(Integer id) {
- return amortizationType(AmortizationMethod.fromInt(id));
- }
-
- public static EnumOptionData amortizationType(AmortizationMethod amortizationMethod) {
- EnumOptionData optionData = null;
- switch (amortizationMethod) {
- case EQUAL_INSTALLMENTS:
- optionData = new EnumOptionData(AmortizationMethod.EQUAL_INSTALLMENTS.getValue().longValue(), AmortizationMethod.EQUAL_INSTALLMENTS.getCode(), "Equal installments");
- break;
- case EQUAL_PRINCIPAL:
- optionData = new EnumOptionData(AmortizationMethod.EQUAL_PRINCIPAL.getValue().longValue(), AmortizationMethod.EQUAL_PRINCIPAL.getCode(), "Equal principle payments");
- break;
- default:
- optionData = new EnumOptionData(AmortizationMethod.INVALID.getValue().longValue(), AmortizationMethod.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData interestType(Integer id) {
- return interestType(InterestMethod.fromInt(id));
- }
-
- public static EnumOptionData interestType(InterestMethod type) {
- EnumOptionData optionData = null;
- switch (type) {
- case FLAT:
- optionData = new EnumOptionData(InterestMethod.FLAT.getValue().longValue(), InterestMethod.FLAT.getCode(), "Flat");
- break;
- case DECLINING_BALANCE:
- optionData = new EnumOptionData(InterestMethod.DECLINING_BALANCE.getValue().longValue(), InterestMethod.DECLINING_BALANCE.getCode(), "Declining Balance");
- break;
- default:
- optionData = new EnumOptionData(InterestMethod.INVALID.getValue().longValue(), InterestMethod.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData interestCalculationPeriodType(Integer id) {
- return interestCalculationPeriodType(InterestCalculationPeriodMethod.fromInt(id));
- }
-
- public static EnumOptionData interestCalculationPeriodType(InterestCalculationPeriodMethod type) {
- EnumOptionData optionData = null;
- switch (type) {
- case DAILY:
- optionData= new EnumOptionData(InterestCalculationPeriodMethod.DAILY.getValue().longValue(), InterestCalculationPeriodMethod.DAILY.getCode(), "Daily");
- break;
- case SAME_AS_REPAYMENT_PERIOD:
- optionData = new EnumOptionData(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD.getValue().longValue(), InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD.getCode(), "Same as repayment period");
- break;
- default:
- optionData = new EnumOptionData(InterestCalculationPeriodMethod.INVALID.getValue().longValue(), InterestCalculationPeriodMethod.INVALID.getCode(), "Invalid");
- break;
- }
- return optionData;
- }
-
- public static EnumOptionData transactionType(final Integer id) {
- return transactionType(LoanTransactionType.fromInt(id));
- }
-
- public static EnumOptionData transactionType(final LoanTransactionType type) {
- EnumOptionData optionData = null;
- switch (type) {
- case INVALID:
- optionData = new EnumOptionData(LoanTransactionType.INVALID.getValue().longValue(), LoanTransactionType.INVALID.getCode(), "Invalid");
- break;
- case DISBURSEMENT:
- optionData= new EnumOptionData(LoanTransactionType.DISBURSEMENT.getValue().longValue(), LoanTransactionType.DISBURSEMENT.getCode(), "Dibursement");
- break;
- case REPAYMENT:
- optionData = new EnumOptionData(LoanTransactionType.REPAYMENT.getValue().longValue(), LoanTransactionType.REPAYMENT.getCode(), "Repayment");
- break;
- case REPAYMENT_AT_DISBURSEMENT:
- optionData = new EnumOptionData(LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.getValue().longValue(), LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.getCode(), "Repayment (at time of disbursement)");
- break;
- case CONTRA:
- optionData = new EnumOptionData(LoanTransactionType.CONTRA.getValue().longValue(), LoanTransactionType.CONTRA.getCode(), "Reversal");
- break;
- case WAIVE_INTEREST:
- optionData = new EnumOptionData(LoanTransactionType.WAIVE_INTEREST.getValue().longValue(), LoanTransactionType.WAIVE_INTEREST.getCode(), "Waive interest");
- break;
- case MARKED_FOR_RESCHEDULING:
- optionData = new EnumOptionData(LoanTransactionType.MARKED_FOR_RESCHEDULING.getValue().longValue(), LoanTransactionType.MARKED_FOR_RESCHEDULING.getCode(), "Close (as rescheduled)");
- break;
- case WRITEOFF:
- optionData = new EnumOptionData(LoanTransactionType.WRITEOFF.getValue().longValue(), LoanTransactionType.WRITEOFF.getCode(), "Close (as written-off)");
- break;
- case RECOVERY_REPAYMENT:
- optionData = new EnumOptionData(LoanTransactionType.RECOVERY_REPAYMENT.getValue().longValue(), LoanTransactionType.RECOVERY_REPAYMENT.getCode(), "Repayment (after write-off)");
- break;
- case WAIVE_CHARGES:
- optionData = new EnumOptionData(LoanTransactionType.WAIVE_CHARGES.getValue().longValue(), LoanTransactionType.WAIVE_CHARGES.getCode(), "Waive loan charges");
- break;
- }
- return optionData;
- }
+ public static EnumOptionData loanTermFrequencyType(final int id) {
+ return loanTermFrequencyType(PeriodFrequencyType.fromInt(id));
+ }
+
+ public static EnumOptionData loanTermFrequencyType(final PeriodFrequencyType type) {
+ final String codePrefix = "loanTermFrequency.";
+ EnumOptionData optionData = null;
+ switch (type) {
+ case DAYS:
+ optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.DAYS.getCode(), "Days");
+ break;
+ case WEEKS:
+ optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
+ break;
+ case MONTHS:
+ optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.MONTHS.getCode(), "Months");
+ break;
+ case YEARS:
+ optionData = new EnumOptionData(PeriodFrequencyType.YEARS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.YEARS.getCode(), "Years");
+ break;
+ default:
+ optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(),
+ "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData termFrequencyType(final int id) {
+ return termFrequencyType(PeriodFrequencyType.fromInt(id));
+ }
+
+ public static EnumOptionData termFrequencyType(final PeriodFrequencyType type) {
+ final String codePrefix = "termFrequency.";
+ EnumOptionData optionData = null;
+ switch (type) {
+ case DAYS:
+ optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.DAYS.getCode(), "Days");
+ break;
+ case WEEKS:
+ optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
+ break;
+ case MONTHS:
+ optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.MONTHS.getCode(), "Months");
+ break;
+ default:
+ optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(),
+ "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData repaymentFrequencyType(final int id) {
+ return repaymentFrequencyType(PeriodFrequencyType.fromInt(id));
+ }
+
+ public static EnumOptionData repaymentFrequencyType(final PeriodFrequencyType type) {
+ final String codePrefix = "repaymentFrequency.";
+ EnumOptionData optionData = null;
+ switch (type) {
+ case DAYS:
+ optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.DAYS.getCode(), "Days");
+ break;
+ case WEEKS:
+ optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
+ break;
+ case MONTHS:
+ optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.MONTHS.getCode(), "Months");
+ break;
+ default:
+ optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(),
+ "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData interestRateFrequencyType(final int id) {
+ return interestRateFrequencyType(PeriodFrequencyType.fromInt(id));
+ }
+
+ public static EnumOptionData interestRateFrequencyType(final PeriodFrequencyType type) {
+ final String codePrefix = "interestRateFrequency.";
+ EnumOptionData optionData = null;
+ switch (type) {
+ case MONTHS:
+ optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.MONTHS.getCode(), "Per month");
+ break;
+ case YEARS:
+ optionData = new EnumOptionData(PeriodFrequencyType.YEARS.getValue().longValue(), codePrefix
+ + PeriodFrequencyType.YEARS.getCode(), "Per year");
+ break;
+ default:
+ optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(),
+ "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData amortizationType(Integer id) {
+ return amortizationType(AmortizationMethod.fromInt(id));
+ }
+
+ public static EnumOptionData amortizationType(AmortizationMethod amortizationMethod) {
+ EnumOptionData optionData = null;
+ switch (amortizationMethod) {
+ case EQUAL_INSTALLMENTS:
+ optionData = new EnumOptionData(AmortizationMethod.EQUAL_INSTALLMENTS.getValue().longValue(),
+ AmortizationMethod.EQUAL_INSTALLMENTS.getCode(), "Equal installments");
+ break;
+ case EQUAL_PRINCIPAL:
+ optionData = new EnumOptionData(AmortizationMethod.EQUAL_PRINCIPAL.getValue().longValue(),
+ AmortizationMethod.EQUAL_PRINCIPAL.getCode(), "Equal principle payments");
+ break;
+ default:
+ optionData = new EnumOptionData(AmortizationMethod.INVALID.getValue().longValue(), AmortizationMethod.INVALID.getCode(),
+ "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData interestType(Integer id) {
+ return interestType(InterestMethod.fromInt(id));
+ }
+
+ public static EnumOptionData interestType(InterestMethod type) {
+ EnumOptionData optionData = null;
+ switch (type) {
+ case FLAT:
+ optionData = new EnumOptionData(InterestMethod.FLAT.getValue().longValue(), InterestMethod.FLAT.getCode(), "Flat");
+ break;
+ case DECLINING_BALANCE:
+ optionData = new EnumOptionData(InterestMethod.DECLINING_BALANCE.getValue().longValue(),
+ InterestMethod.DECLINING_BALANCE.getCode(), "Declining Balance");
+ break;
+ default:
+ optionData = new EnumOptionData(InterestMethod.INVALID.getValue().longValue(), InterestMethod.INVALID.getCode(), "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData interestCalculationPeriodType(Integer id) {
+ return interestCalculationPeriodType(InterestCalculationPeriodMethod.fromInt(id));
+ }
+
+ public static EnumOptionData interestCalculationPeriodType(InterestCalculationPeriodMethod type) {
+ EnumOptionData optionData = null;
+ switch (type) {
+ case DAILY:
+ optionData = new EnumOptionData(InterestCalculationPeriodMethod.DAILY.getValue().longValue(),
+ InterestCalculationPeriodMethod.DAILY.getCode(), "Daily");
+ break;
+ case SAME_AS_REPAYMENT_PERIOD:
+ optionData = new EnumOptionData(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD.getValue().longValue(),
+ InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD.getCode(), "Same as repayment period");
+ break;
+ default:
+ optionData = new EnumOptionData(InterestCalculationPeriodMethod.INVALID.getValue().longValue(),
+ InterestCalculationPeriodMethod.INVALID.getCode(), "Invalid");
+ break;
+ }
+ return optionData;
+ }
+
+ public static EnumOptionData transactionType(final Integer id) {
+ return transactionType(LoanTransactionType.fromInt(id));
+ }
+
+ public static EnumOptionData transactionType(final LoanTransactionType type) {
+ EnumOptionData optionData = null;
+ switch (type) {
+ case INVALID:
+ optionData = new EnumOptionData(LoanTransactionType.INVALID.getValue().longValue(), LoanTransactionType.INVALID.getCode(),
+ "Invalid");
+ break;
+ case DISBURSEMENT:
+ optionData = new EnumOptionData(LoanTransactionType.DISBURSEMENT.getValue().longValue(),
+ LoanTransactionType.DISBURSEMENT.getCode(), "Dibursement");
+ break;
+ case REPAYMENT:
+ optionData = new EnumOptionData(LoanTransactionType.REPAYMENT.getValue().longValue(),
+ LoanTransactionType.REPAYMENT.getCode(), "Repayment");
+ break;
+ case REPAYMENT_AT_DISBURSEMENT:
+ optionData = new EnumOptionData(LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.getValue().longValue(),
+ LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.getCode(), "Repayment (at time of disbursement)");
+ break;
+ case CONTRA:
+ optionData = new EnumOptionData(LoanTransactionType.CONTRA.getValue().longValue(), LoanTransactionType.CONTRA.getCode(),
+ "Reversal");
+ break;
+ case WAIVE_INTEREST:
+ optionData = new EnumOptionData(LoanTransactionType.WAIVE_INTEREST.getValue().longValue(),
+ LoanTransactionType.WAIVE_INTEREST.getCode(), "Waive interest");
+ break;
+ case MARKED_FOR_RESCHEDULING:
+ optionData = new EnumOptionData(LoanTransactionType.MARKED_FOR_RESCHEDULING.getValue().longValue(),
+ LoanTransactionType.MARKED_FOR_RESCHEDULING.getCode(), "Close (as rescheduled)");
+ break;
+ case WRITEOFF:
+ optionData = new EnumOptionData(LoanTransactionType.WRITEOFF.getValue().longValue(),
+ LoanTransactionType.WRITEOFF.getCode(), "Close (as written-off)");
+ break;
+ case RECOVERY_REPAYMENT:
+ optionData = new EnumOptionData(LoanTransactionType.RECOVERY_REPAYMENT.getValue().longValue(),
+ LoanTransactionType.RECOVERY_REPAYMENT.getCode(), "Repayment (after write-off)");
+ break;
+ case WAIVE_CHARGES:
+ optionData = new EnumOptionData(LoanTransactionType.WAIVE_CHARGES.getValue().longValue(),
+ LoanTransactionType.WAIVE_CHARGES.getCode(), "Waive loan charges");
+ break;
+ }
+ return optionData;
+ }
+
+ public static LoanStatusEnumData status(final Integer statusId) {
+ return status(LoanStatus.fromInt(statusId));
+ }
+
+ public static LoanStatusEnumData status(final LoanStatus status) {
+ LoanStatusEnumData optionData = new LoanStatusEnumData(LoanStatus.INVALID.getValue().longValue(), LoanStatus.INVALID.getCode(),
+ "Invalid");
+ switch (status) {
+ case INVALID:
+ optionData = new LoanStatusEnumData(LoanStatus.INVALID.getValue().longValue(), LoanStatus.INVALID.getCode(), "Invalid");
+ break;
+ case SUBMITED_AND_PENDING_APPROVAL:
+ optionData = new LoanStatusEnumData(LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getValue().longValue(),
+ LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval");
+ break;
+ case APPROVED:
+ optionData = new LoanStatusEnumData(LoanStatus.APPROVED.getValue().longValue(), LoanStatus.APPROVED.getCode(), "Approved");
+ break;
+ case ACTIVE:
+ optionData = new LoanStatusEnumData(LoanStatus.ACTIVE.getValue().longValue(), LoanStatus.ACTIVE.getCode(), "Active");
+ break;
+ case REJECTED:
+ optionData = new LoanStatusEnumData(LoanStatus.REJECTED.getValue().longValue(), LoanStatus.REJECTED.getCode(), "Rejected");
+ break;
+ case WITHDRAWN_BY_CLIENT:
+ optionData = new LoanStatusEnumData(LoanStatus.WITHDRAWN_BY_CLIENT.getValue().longValue(),
+ LoanStatus.WITHDRAWN_BY_CLIENT.getCode(), "Withdrawn by applicant");
+ break;
+ case CLOSED_OBLIGATIONS_MET:
+ optionData = new LoanStatusEnumData(LoanStatus.CLOSED_OBLIGATIONS_MET.getValue().longValue(),
+ LoanStatus.CLOSED_OBLIGATIONS_MET.getCode(), "Closed (obligations met)");
+ break;
+ case CLOSED_WRITTEN_OFF:
+ optionData = new LoanStatusEnumData(LoanStatus.CLOSED_WRITTEN_OFF.getValue().longValue(),
+ LoanStatus.CLOSED_WRITTEN_OFF.getCode(), "Closed (written off)");
+ break;
+ case CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT:
+ optionData = new LoanStatusEnumData(LoanStatus.CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT.getValue().longValue(),
+ LoanStatus.CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT.getCode(), "Closed (rescheduled)");
+ break;
+ case OVERPAID:
+ optionData = new LoanStatusEnumData(LoanStatus.OVERPAID.getValue().longValue(), LoanStatus.OVERPAID.getCode(), "Overpaid");
+ break;
+ }
+
+ return optionData;
+ }
- public static EnumOptionData status(final Integer statusId) {
- return status(LoanStatus.fromInt(statusId));
- }
-
- public static EnumOptionData status(final LoanStatus status) {
- EnumOptionData optionData = new EnumOptionData(LoanStatus.INVALID.getValue().longValue(), LoanStatus.INVALID.getCode(), "Invalid");
- switch (status) {
- case INVALID:
- optionData = new EnumOptionData(LoanStatus.INVALID.getValue().longValue(), LoanStatus.INVALID.getCode(), "Invalid");
- break;
- case SUBMITED_AND_PENDING_APPROVAL:
- optionData = new EnumOptionData(LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getValue().longValue(), LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval");
- break;
- case APPROVED:
- optionData = new EnumOptionData(LoanStatus.APPROVED.getValue().longValue(), LoanStatus.APPROVED.getCode(), "Approved");
- break;
- case ACTIVE:
- optionData = new EnumOptionData(LoanStatus.ACTIVE.getValue().longValue(), LoanStatus.ACTIVE.getCode(), "Active");
- break;
- case REJECTED:
- optionData = new EnumOptionData(LoanStatus.REJECTED.getValue().longValue(), LoanStatus.REJECTED.getCode(), "Rejected");
- break;
- case WITHDRAWN_BY_CLIENT:
- optionData = new EnumOptionData(LoanStatus.WITHDRAWN_BY_CLIENT.getValue().longValue(), LoanStatus.WITHDRAWN_BY_CLIENT.getCode(), "Withdrawn by applicant");
- break;
- case CLOSED_OBLIGATIONS_MET:
- optionData = new EnumOptionData(LoanStatus.CLOSED_OBLIGATIONS_MET.getValue().longValue(), LoanStatus.CLOSED_OBLIGATIONS_MET.getCode(), "Closed (obligations met)");
- break;
- case CLOSED_WRITTEN_OFF:
- optionData = new EnumOptionData(LoanStatus.CLOSED_WRITTEN_OFF.getValue().longValue(), LoanStatus.CLOSED_WRITTEN_OFF.getCode(), "Closed (written off)");
- break;
- case CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT:
- optionData = new EnumOptionData(LoanStatus.CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT.getValue().longValue(), LoanStatus.CLOSED_RESCHEDULE_OUTSTANDING_AMOUNT.getCode(), "Closed (rescheduled)");
- break;
- case OVERPAID:
- optionData = new EnumOptionData(LoanStatus.OVERPAID.getValue().longValue(), LoanStatus.OVERPAID.getCode(), "Overpaid");
- break;
- }
-
- return optionData;
- }
-
public static EnumOptionData accountingRuleType(final int id) {
return accountingRuleType(AccountingRuleType.fromInt(id));
}