| /** |
| * 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.savings; |
| |
| import org.mifosplatform.portfolio.savings.domain.SavingsAccount; |
| |
| /** |
| * An enumeration of different transactions that can occur on a |
| * {@link SavingsAccount}. |
| */ |
| public enum SavingsAccountTransactionType { |
| |
| INVALID(0, "savingsAccountTransactionType.invalid"), // |
| DEPOSIT(1, "savingsAccountTransactionType.deposit"), // |
| WITHDRAWAL(2, "savingsAccountTransactionType.withdrawal"), // |
| INTEREST_POSTING(3, "savingsAccountTransactionType.interestPosting"), // |
| WITHDRAWAL_FEE(4, "savingsAccountTransactionType.withdrawalFee"), // |
| ANNUAL_FEE(5, "savingsAccountTransactionType.annualFee"), // |
| WAIVE_CHARGES(6, "savingsAccountTransactionType.waiveCharge"), // |
| PAY_CHARGE(7, "savingsAccountTransactionType.payCharge"), // |
| INITIATE_TRANSFER(12, "savingsAccountTransactionType.initiateTransfer"), // |
| APPROVE_TRANSFER(13, "savingsAccountTransactionType.approveTransfer"), // |
| WITHDRAW_TRANSFER(14, "savingsAccountTransactionType.withdrawTransfer"), // |
| REJECT_TRANSFER(15, "savingsAccountTransactionType.rejectTransfer"), WRITTEN_OFF(16, "savingsAccountTransactionType.writtenoff"), // |
| OVERDRAFT_INTEREST(17, "savingsAccountTransactionType.overdraftInterest"); // |
| |
| private final Integer value; |
| private final String code; |
| |
| private SavingsAccountTransactionType(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 SavingsAccountTransactionType fromInt(final Integer transactionType) { |
| |
| if (transactionType == null) { return SavingsAccountTransactionType.INVALID; } |
| |
| SavingsAccountTransactionType savingsAccountTransactionType = SavingsAccountTransactionType.INVALID; |
| switch (transactionType) { |
| case 1: |
| savingsAccountTransactionType = SavingsAccountTransactionType.DEPOSIT; |
| break; |
| case 2: |
| savingsAccountTransactionType = SavingsAccountTransactionType.WITHDRAWAL; |
| break; |
| case 3: |
| savingsAccountTransactionType = SavingsAccountTransactionType.INTEREST_POSTING; |
| break; |
| case 4: |
| savingsAccountTransactionType = SavingsAccountTransactionType.WITHDRAWAL_FEE; |
| break; |
| case 5: |
| savingsAccountTransactionType = SavingsAccountTransactionType.ANNUAL_FEE; |
| break; |
| case 6: |
| savingsAccountTransactionType = SavingsAccountTransactionType.WAIVE_CHARGES; |
| break; |
| case 7: |
| savingsAccountTransactionType = SavingsAccountTransactionType.PAY_CHARGE; |
| break; |
| case 12: |
| savingsAccountTransactionType = SavingsAccountTransactionType.INITIATE_TRANSFER; |
| break; |
| case 13: |
| savingsAccountTransactionType = SavingsAccountTransactionType.APPROVE_TRANSFER; |
| break; |
| case 14: |
| savingsAccountTransactionType = SavingsAccountTransactionType.WITHDRAW_TRANSFER; |
| break; |
| case 15: |
| savingsAccountTransactionType = SavingsAccountTransactionType.REJECT_TRANSFER; |
| break; |
| case 16: |
| savingsAccountTransactionType = SavingsAccountTransactionType.WRITTEN_OFF; |
| break; |
| case 17: |
| savingsAccountTransactionType = SavingsAccountTransactionType.OVERDRAFT_INTEREST; |
| break; |
| } |
| return savingsAccountTransactionType; |
| } |
| |
| public boolean isDeposit() { |
| return this.value.equals(SavingsAccountTransactionType.DEPOSIT.getValue()); |
| } |
| |
| public boolean isWithdrawal() { |
| return this.value.equals(SavingsAccountTransactionType.WITHDRAWAL.getValue()); |
| } |
| |
| public boolean isInterestPosting() { |
| return this.value.equals(SavingsAccountTransactionType.INTEREST_POSTING.getValue()); |
| } |
| |
| public boolean isWithdrawalFee() { |
| return this.value.equals(SavingsAccountTransactionType.WITHDRAWAL_FEE.getValue()); |
| } |
| |
| public boolean isAnnualFee() { |
| return this.value.equals(SavingsAccountTransactionType.ANNUAL_FEE.getValue()); |
| } |
| |
| public boolean isPayCharge() { |
| return this.value.equals(SavingsAccountTransactionType.PAY_CHARGE.getValue()); |
| } |
| |
| public boolean isChargeTransaction() { |
| return isPayCharge() || isWithdrawalFee() || isAnnualFee(); |
| } |
| |
| public boolean isWaiveCharge() { |
| return this.value.equals(SavingsAccountTransactionType.WAIVE_CHARGES.getValue()); |
| } |
| |
| public boolean isTransferInitiation() { |
| return this.value.equals(SavingsAccountTransactionType.INITIATE_TRANSFER.getValue()); |
| } |
| |
| public boolean isTransferApproval() { |
| return this.value.equals(SavingsAccountTransactionType.APPROVE_TRANSFER.getValue()); |
| } |
| |
| public boolean isTransferRejection() { |
| return this.value.equals(SavingsAccountTransactionType.REJECT_TRANSFER.getValue()); |
| } |
| |
| public boolean isTransferWithdrawal() { |
| return this.value.equals(SavingsAccountTransactionType.WITHDRAW_TRANSFER.getValue()); |
| } |
| |
| public boolean isWrittenoff() { |
| return this.value.equals(SavingsAccountTransactionType.WRITTEN_OFF.getValue()); |
| } |
| |
| public boolean isIncomeFromInterest() { |
| return this.value.equals(SavingsAccountTransactionType.OVERDRAFT_INTEREST.getValue()); |
| } |
| |
| public boolean isDebit() { |
| return isWithdrawal() || isWithdrawalFee() || isAnnualFee() || isPayCharge() || isIncomeFromInterest(); |
| } |
| |
| public boolean isCredit() { |
| return isDeposit() || isInterestPosting(); |
| } |
| } |