/**
* 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.domain;
public enum LoanTransactionType {
INVALID(0, "loanTransactionType.invalid"), //
DISBURSEMENT(1, "loanTransactionType.disbursement"), //
REPAYMENT(2, "loanTransactionType.repayment"), //
CONTRA(3, "loanTransactionType.contra"), //
WAIVE_INTEREST(4, "loanTransactionType.waiver"), //
REPAYMENT_AT_DISBURSEMENT(5, "loanTransactionType.repaymentAtDisbursement"), //
WRITEOFF(6, "loanTransactionType.writeOff"), //
MARKED_FOR_RESCHEDULING(7, "loanTransactionType.marked.for.rescheduling"), //
/**
* This type of transactions is allowed on written-off loans where mfi still
* attempts to recover payments from applicant after writing-off.
*/
RECOVERY_REPAYMENT(8, "loanTransactionType.recoveryRepayment"), //
WAIVE_CHARGES(9, "loanTransactionType.waiveCharges"), //
/**
* Transaction represents an Accrual (For either interest, charge or a
* penalty
**/
ACCRUAL(10, "loanTransactionType.accrual"), //
/***
* A Loan Transfer involves two steps, first a "initiate" Loan transfer
* transaction done by the Source branch followed by a "complete" loan
* transaction initiated by the destination branch
**/
INITIATE_TRANSFER(12, "loanTransactionType.initiateTransfer"), //
APPROVE_TRANSFER(13, "loanTransactionType.approveTransfer"), //
WITHDRAW_TRANSFER(14, "loanTransactionType.withdrawTransfer"), //
REJECT_TRANSFER(15, "loanTransactionType.rejectTransfer"), //
REFUND(16, "loanTransactionType.refund"), //
CHARGE_PAYMENT(17, "loanTransactionType.chargePayment"), //
REFUND_FOR_ACTIVE_LOAN(18, "loanTransactionType.refund");
private final Integer value;
private final String code;
private LoanTransactionType(final Integer value, final String code) {
this.value = value;
this.code = code;
}
public Integer getValue() {
return this.value;
}
public String getCode() {
return this.code;
}
public static LoanTransactionType fromInt(final Integer transactionType) {
if (transactionType == null) { return LoanTransactionType.INVALID; }
LoanTransactionType loanTransactionType = null;
switch (transactionType) {
case 1:
loanTransactionType = LoanTransactionType.DISBURSEMENT;
break;
case 2:
loanTransactionType = LoanTransactionType.REPAYMENT;
break;
case 3:
loanTransactionType = LoanTransactionType.CONTRA;
break;
case 4:
loanTransactionType = LoanTransactionType.WAIVE_INTEREST;
break;
case 5:
loanTransactionType = LoanTransactionType.REPAYMENT_AT_DISBURSEMENT;
break;
case 6:
loanTransactionType = LoanTransactionType.WRITEOFF;
break;
case 7:
loanTransactionType = LoanTransactionType.MARKED_FOR_RESCHEDULING;
break;
case 8:
loanTransactionType = LoanTransactionType.RECOVERY_REPAYMENT;
break;
case 9:
loanTransactionType = LoanTransactionType.WAIVE_CHARGES;
break;
case 10:
loanTransactionType = LoanTransactionType.ACCRUAL;
break;
case 12:
loanTransactionType = LoanTransactionType.INITIATE_TRANSFER;
break;
case 13:
loanTransactionType = LoanTransactionType.APPROVE_TRANSFER;
break;
case 14:
loanTransactionType = LoanTransactionType.WITHDRAW_TRANSFER;
break;
case 15:
loanTransactionType = LoanTransactionType.REJECT_TRANSFER;
break;
case 16:
loanTransactionType = LoanTransactionType.REFUND;
break;
case 17:
loanTransactionType = LoanTransactionType.CHARGE_PAYMENT;
break;
case 18:
loanTransactionType = LoanTransactionType.REFUND_FOR_ACTIVE_LOAN;
break;
default:
loanTransactionType = LoanTransactionType.INVALID;
break;
}
return loanTransactionType;
}
public boolean isDisbursement() {
return this.value.equals(LoanTransactionType.DISBURSEMENT.getValue());
}
public boolean isRepaymentAtDisbursement() {
return this.value.equals(LoanTransactionType.REPAYMENT_AT_DISBURSEMENT.getValue());
}
public boolean isRepayment() {
return this.value.equals(LoanTransactionType.REPAYMENT.getValue());
}
public boolean isRecoveryRepayment() {
return this.value.equals(LoanTransactionType.RECOVERY_REPAYMENT.getValue());
}
public boolean isWaiveInterest() {
return this.value.equals(LoanTransactionType.WAIVE_INTEREST.getValue());
}
public boolean isWaiveCharges() {
return this.value.equals(LoanTransactionType.WAIVE_CHARGES.getValue());
}
public boolean isAccrual() {
return this.value.equals(LoanTransactionType.ACCRUAL.getValue());
}
public boolean isWriteOff() {
return this.value.equals(LoanTransactionType.WRITEOFF.getValue());
}
public boolean isChargePayment() {
return this.value.equals(LoanTransactionType.CHARGE_PAYMENT.getValue());
}
public boolean isRefundForActiveLoan() {
return this.value.equals(LoanTransactionType.REFUND_FOR_ACTIVE_LOAN.getValue());
}
}