rename matured_on column and rename status and types associated with deposit accounts.
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
alter table m_deposit_account drop column `matured_on`;
|
||||||
|
alter table `m_deposit_account` add column `matures_on_date` datetime NULL DEFAULT NULL after actual_commencement_date;
|
||||||
+18
-20
@@ -76,8 +76,8 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Temporal(TemporalType.DATE)
|
@Temporal(TemporalType.DATE)
|
||||||
@Column(name = "matured_on")
|
@Column(name = "matures_on_date")
|
||||||
private Date maturedOn;
|
private Date maturesOnDate;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Column(name = "projected_interest_accrued_on_maturity", scale = 6, precision = 19, nullable = false)
|
@Column(name = "projected_interest_accrued_on_maturity", scale = 6, precision = 19, nullable = false)
|
||||||
@@ -151,12 +151,12 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
maturityInterestRate, interestCompoundedEvery, interestCompoundedFrequencyPeriodType);
|
maturityInterestRate, interestCompoundedEvery, interestCompoundedFrequencyPeriodType);
|
||||||
|
|
||||||
|
|
||||||
DepositStatus from = null;
|
DepositAccountStatus from = null;
|
||||||
if (depositStatus != null) {
|
if (depositStatus != null) {
|
||||||
from = DepositStatus.fromInt(depositStatus);
|
from = DepositAccountStatus.fromInt(depositStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
DepositStatus statusEnum = depositLifecycleStateMachine.transition(DepositEvent.DEPOSIT_CREATED, from);
|
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_CREATED, from);
|
||||||
depositStatus = statusEnum.getValue();
|
depositStatus = statusEnum.getValue();
|
||||||
|
|
||||||
return new DepositAccount(client, product, externalId, deposit, maturityInterestRate, tenureInMonths,
|
return new DepositAccount(client, product, externalId, deposit, maturityInterestRate, tenureInMonths,
|
||||||
@@ -191,7 +191,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
this.interestCompoundedFrequencyType = interestCompoundedFrequencyPeriodType.getValue();
|
this.interestCompoundedFrequencyType = interestCompoundedFrequencyPeriodType.getValue();
|
||||||
if (commencementDate != null) {
|
if (commencementDate != null) {
|
||||||
this.projectedCommencementDate = commencementDate.toDate();
|
this.projectedCommencementDate = commencementDate.toDate();
|
||||||
this.maturedOn = commencementDate.plusMonths(this.tenureInMonths).toDate();
|
this.maturesOnDate = commencementDate.plusMonths(this.tenureInMonths).toDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renewalAllowed = renewalAllowed;
|
this.renewalAllowed = renewalAllowed;
|
||||||
@@ -225,7 +225,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
final DepositStateTransitionApprovalCommand command,
|
final DepositStateTransitionApprovalCommand command,
|
||||||
final FixedTermDepositInterestCalculator calculator) {
|
final FixedTermDepositInterestCalculator calculator) {
|
||||||
|
|
||||||
DepositStatus statusEnum = depositLifecycleStateMachine.transition(DepositEvent.DEPOSIT_APPROVED, DepositStatus.fromInt(this.depositStatus));
|
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_APPROVED, DepositAccountStatus.fromInt(this.depositStatus));
|
||||||
this.depositStatus = statusEnum.getValue();
|
this.depositStatus = statusEnum.getValue();
|
||||||
|
|
||||||
if (command.getTenureInMonths() != null) {
|
if (command.getTenureInMonths() != null) {
|
||||||
@@ -241,9 +241,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.actualCommencementDate = actualCommencementDate.toDate();
|
this.actualCommencementDate = actualCommencementDate.toDate();
|
||||||
|
this.maturesOnDate = getActualCommencementDate().plusMonths(this.tenureInMonths).toDate();
|
||||||
// TODO - KW - there was probably no need for 'projected' and 'actual' maturity dates - a single 'matures_on' attribute is sufficient
|
|
||||||
this.maturedOn = getActualCommencementDate().plusMonths(this.tenureInMonths).toDate();
|
|
||||||
|
|
||||||
Money futureValueOnMaturity = calculator.calculateInterestOnMaturityFor(getDeposit(), this.tenureInMonths,
|
Money futureValueOnMaturity = calculator.calculateInterestOnMaturityFor(getDeposit(), this.tenureInMonths,
|
||||||
this.interestRate, this.interestCompoundedEvery, getInterestCompoundedFrequencyType());
|
this.interestRate, this.interestCompoundedEvery, getInterestCompoundedFrequencyType());
|
||||||
@@ -286,9 +284,9 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
public void reject(final LocalDate rejectedOn,
|
public void reject(final LocalDate rejectedOn,
|
||||||
final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||||
|
|
||||||
DepositStatus statusEnum = depositLifecycleStateMachine.transition(
|
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(
|
||||||
DepositEvent.DEPOSIT_REJECTED,
|
DepositAccountEvent.DEPOSIT_REJECTED,
|
||||||
DepositStatus.fromInt(this.depositStatus));
|
DepositAccountStatus.fromInt(this.depositStatus));
|
||||||
this.depositStatus = statusEnum.getValue();
|
this.depositStatus = statusEnum.getValue();
|
||||||
|
|
||||||
this.rejectedOnDate = rejectedOn.toDateTimeAtCurrentTime().toDate();
|
this.rejectedOnDate = rejectedOn.toDateTimeAtCurrentTime().toDate();
|
||||||
@@ -316,9 +314,9 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
public void withdrawnByApplicant(final LocalDate withdrawnOn,
|
public void withdrawnByApplicant(final LocalDate withdrawnOn,
|
||||||
final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||||
|
|
||||||
DepositStatus statusEnum = depositLifecycleStateMachine.transition(
|
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(
|
||||||
DepositEvent.DEPOSIT_WITHDRAWN,
|
DepositAccountEvent.DEPOSIT_WITHDRAWN,
|
||||||
DepositStatus.fromInt(this.depositStatus));
|
DepositAccountStatus.fromInt(this.depositStatus));
|
||||||
this.depositStatus = statusEnum.getValue();
|
this.depositStatus = statusEnum.getValue();
|
||||||
|
|
||||||
this.withdrawnOnDate = withdrawnOn.toDateTimeAtCurrentTime().toDate();
|
this.withdrawnOnDate = withdrawnOn.toDateTimeAtCurrentTime().toDate();
|
||||||
@@ -343,13 +341,13 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
|||||||
|
|
||||||
public void undoDepositApproval(final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
public void undoDepositApproval(final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||||
|
|
||||||
DepositStatus statusEnum = depositLifecycleStateMachine.transition(
|
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(
|
||||||
DepositEvent.DEPOSIT_APPROVAL_UNDO,
|
DepositAccountEvent.DEPOSIT_APPROVAL_UNDO,
|
||||||
DepositStatus.fromInt(this.depositStatus));
|
DepositAccountStatus.fromInt(this.depositStatus));
|
||||||
this.depositStatus = statusEnum.getValue();
|
this.depositStatus = statusEnum.getValue();
|
||||||
|
|
||||||
this.actualCommencementDate = null;
|
this.actualCommencementDate = null;
|
||||||
this.maturedOn = getProjectedCommencementDate().plusMonths(this.tenureInMonths).toDate();
|
this.maturesOnDate = getProjectedCommencementDate().plusMonths(this.tenureInMonths).toDate();
|
||||||
this.total=null;
|
this.total=null;
|
||||||
this.interestAccrued=null;
|
this.interestAccrued=null;
|
||||||
this.depositaccountTransactions.clear();
|
this.depositaccountTransactions.clear();
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
package org.mifosng.platform.saving.domain;
|
package org.mifosng.platform.saving.domain;
|
||||||
|
|
||||||
public enum DepositEvent {
|
public enum DepositAccountEvent {
|
||||||
|
|
||||||
DEPOSIT_CREATED, DEPOSIT_REJECTED, DEPOSIT_APPROVED, DEPOSIT_APPROVAL_UNDO, DEPOSIT_WITHDRAWN, DEPOSIT_MATURED;
|
DEPOSIT_CREATED, DEPOSIT_REJECTED, DEPOSIT_APPROVED, DEPOSIT_APPROVAL_UNDO, DEPOSIT_WITHDRAWN, DEPOSIT_MATURED;
|
||||||
|
|
||||||
+18
-18
@@ -1,6 +1,6 @@
|
|||||||
package org.mifosng.platform.saving.domain;
|
package org.mifosng.platform.saving.domain;
|
||||||
|
|
||||||
public enum DepositStatus {
|
public enum DepositAccountStatus {
|
||||||
|
|
||||||
INVALID(0, "depositStatusType.invalid"), //
|
INVALID(0, "depositStatusType.invalid"), //
|
||||||
SUBMITED_AND_PENDING_APPROVAL(100, "depositStatusType.submitted.and.pending.approval"), //
|
SUBMITED_AND_PENDING_APPROVAL(100, "depositStatusType.submitted.and.pending.approval"), //
|
||||||
@@ -14,12 +14,12 @@ public enum DepositStatus {
|
|||||||
private final Integer value;
|
private final Integer value;
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|
||||||
private DepositStatus(final Integer value, final String code) {
|
private DepositAccountStatus(final Integer value, final String code) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.code = code;
|
this.code = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasStateOf(final DepositStatus state) {
|
public boolean hasStateOf(final DepositAccountStatus state) {
|
||||||
return this.value.equals(state.getValue());
|
return this.value.equals(state.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,53 +32,53 @@ public enum DepositStatus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSubmittedAndPendingApproval() {
|
public boolean isSubmittedAndPendingApproval() {
|
||||||
return this.value.equals(DepositStatus.SUBMITED_AND_PENDING_APPROVAL.getValue());
|
return this.value.equals(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isApproved() {
|
public boolean isApproved() {
|
||||||
return this.value.equals(DepositStatus.APPROVED.getValue());
|
return this.value.equals(DepositAccountStatus.APPROVED.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isActive() {
|
public boolean isActive() {
|
||||||
return this.value.equals(DepositStatus.ACTIVE.getValue());
|
return this.value.equals(DepositAccountStatus.ACTIVE.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isClosed() {
|
public boolean isClosed() {
|
||||||
return this.value.equals(DepositStatus.CLOSED.getValue());
|
return this.value.equals(DepositAccountStatus.CLOSED.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWithdrawnByClient() {
|
public boolean isWithdrawnByClient() {
|
||||||
return this.value.equals(DepositStatus.WITHDRAWN_BY_CLIENT.getValue());
|
return this.value.equals(DepositAccountStatus.WITHDRAWN_BY_CLIENT.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRejected() {
|
public boolean isRejected() {
|
||||||
return this.value.equals(DepositStatus.REJECTED.getValue());
|
return this.value.equals(DepositAccountStatus.REJECTED.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DepositStatus fromInt(final Integer statusValue) {
|
public static DepositAccountStatus fromInt(final Integer statusValue) {
|
||||||
|
|
||||||
DepositStatus enumeration = DepositStatus.INVALID;
|
DepositAccountStatus enumeration = DepositAccountStatus.INVALID;
|
||||||
switch (statusValue) {
|
switch (statusValue) {
|
||||||
case 100:
|
case 100:
|
||||||
enumeration = DepositStatus.SUBMITED_AND_PENDING_APPROVAL;
|
enumeration = DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL;
|
||||||
break;
|
break;
|
||||||
case 200:
|
case 200:
|
||||||
enumeration = DepositStatus.APPROVED;
|
enumeration = DepositAccountStatus.APPROVED;
|
||||||
break;
|
break;
|
||||||
case 300:
|
case 300:
|
||||||
enumeration = DepositStatus.ACTIVE;
|
enumeration = DepositAccountStatus.ACTIVE;
|
||||||
break;
|
break;
|
||||||
case 400:
|
case 400:
|
||||||
enumeration = DepositStatus.WITHDRAWN_BY_CLIENT;
|
enumeration = DepositAccountStatus.WITHDRAWN_BY_CLIENT;
|
||||||
break;
|
break;
|
||||||
case 500:
|
case 500:
|
||||||
enumeration = DepositStatus.REJECTED;
|
enumeration = DepositAccountStatus.REJECTED;
|
||||||
break;
|
break;
|
||||||
case 600:
|
case 600:
|
||||||
enumeration = DepositStatus.CLOSED;
|
enumeration = DepositAccountStatus.CLOSED;
|
||||||
break;
|
break;
|
||||||
case 700:
|
case 700:
|
||||||
enumeration = DepositStatus.MATURED;
|
enumeration = DepositAccountStatus.MATURED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return enumeration;
|
return enumeration;
|
||||||
+7
-7
@@ -31,7 +31,7 @@ public class DepositAccountTransaction extends AbstractPersistable<Long> {
|
|||||||
|
|
||||||
@Enumerated(EnumType.ORDINAL)
|
@Enumerated(EnumType.ORDINAL)
|
||||||
@Column(name = "transaction_type_enum", nullable = false)
|
@Column(name = "transaction_type_enum", nullable = false)
|
||||||
private DepositTransactionType typeOf;
|
private DepositAccountTransactionType typeOf;
|
||||||
|
|
||||||
@OneToOne(optional=true, cascade={CascadeType.PERSIST})
|
@OneToOne(optional=true, cascade={CascadeType.PERSIST})
|
||||||
@JoinColumn(name="contra_id")
|
@JoinColumn(name="contra_id")
|
||||||
@@ -53,7 +53,7 @@ public class DepositAccountTransaction extends AbstractPersistable<Long> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DepositAccountTransaction(DepositTransactionType type, final BigDecimal amount, final LocalDate date) {
|
private DepositAccountTransaction(DepositAccountTransactionType type, final BigDecimal amount, final LocalDate date) {
|
||||||
|
|
||||||
this.typeOf = type;
|
this.typeOf = type;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
@@ -69,7 +69,7 @@ public class DepositAccountTransaction extends AbstractPersistable<Long> {
|
|||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DepositTransactionType getTypeOf() {
|
public DepositAccountTransactionType getTypeOf() {
|
||||||
return typeOf;
|
return typeOf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,20 +94,20 @@ public class DepositAccountTransaction extends AbstractPersistable<Long> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDeposit(){
|
public boolean isDeposit(){
|
||||||
return DepositTransactionType.DEPOSIT.equals(typeOf) && isNotContra();
|
return DepositAccountTransactionType.DEPOSIT.equals(typeOf) && isNotContra();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DepositAccountTransaction deposit(Money amount, LocalDate paymentDate) {
|
public static DepositAccountTransaction deposit(Money amount, LocalDate paymentDate) {
|
||||||
return new DepositAccountTransaction(DepositTransactionType.DEPOSIT, amount.getAmount(), paymentDate);
|
return new DepositAccountTransaction(DepositAccountTransactionType.DEPOSIT, amount.getAmount(), paymentDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DepositAccountTransaction withdraw(Money amount, LocalDate paymentDate) {
|
public static DepositAccountTransaction withdraw(Money amount, LocalDate paymentDate) {
|
||||||
return new DepositAccountTransaction(DepositTransactionType.WITHDRAW, amount.getAmount(), paymentDate);
|
return new DepositAccountTransaction(DepositAccountTransactionType.WITHDRAW, amount.getAmount(), paymentDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DepositAccountTransaction contra(DepositAccountTransaction originalTransaction) {
|
private static DepositAccountTransaction contra(DepositAccountTransaction originalTransaction) {
|
||||||
|
|
||||||
DepositAccountTransaction contra = new DepositAccountTransaction(DepositTransactionType.REVERSAL, originalTransaction.getAmount().negate(), new LocalDate(originalTransaction.getDateOf()));
|
DepositAccountTransaction contra = new DepositAccountTransaction(DepositAccountTransactionType.REVERSAL, originalTransaction.getAmount().negate(), new LocalDate(originalTransaction.getDateOf()));
|
||||||
contra.updateContra(originalTransaction);
|
contra.updateContra(originalTransaction);
|
||||||
|
|
||||||
return contra;
|
return contra;
|
||||||
|
|||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
package org.mifosng.platform.saving.domain;
|
||||||
|
|
||||||
|
public enum DepositAccountTransactionType {
|
||||||
|
|
||||||
|
INVALID(0, "depositTransactionType.invalid"), //
|
||||||
|
DEPOSIT(1, "depositTransactionType.deposit"), //
|
||||||
|
WITHDRAW(2, "depositTransactionType.withdraw"), //
|
||||||
|
REVERSAL(3, "depositTransactionType.reversal");
|
||||||
|
|
||||||
|
private final Integer value;
|
||||||
|
private final String code;
|
||||||
|
|
||||||
|
private DepositAccountTransactionType(final Integer value, final String code) {
|
||||||
|
this.value=value;
|
||||||
|
this.code=code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DepositAccountTransactionType fromInt(final Integer transactionType){
|
||||||
|
|
||||||
|
if (transactionType == null) {
|
||||||
|
return DepositAccountTransactionType.INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
DepositAccountTransactionType depositTransactionType=null;
|
||||||
|
switch (transactionType) {
|
||||||
|
case 1:
|
||||||
|
depositTransactionType=DepositAccountTransactionType.DEPOSIT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
depositTransactionType=DepositAccountTransactionType.WITHDRAW;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
depositTransactionType=DepositAccountTransactionType.REVERSAL;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
depositTransactionType=DepositAccountTransactionType.INVALID;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return depositTransactionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+1
-1
@@ -3,6 +3,6 @@ package org.mifosng.platform.saving.domain;
|
|||||||
|
|
||||||
public interface DepositLifecycleStateMachine {
|
public interface DepositLifecycleStateMachine {
|
||||||
|
|
||||||
DepositStatus transition(DepositEvent loanEvent, DepositStatus from);
|
DepositAccountStatus transition(DepositAccountEvent loanEvent, DepositAccountStatus from);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-20
@@ -7,26 +7,26 @@ import org.mifosng.platform.exceptions.InvalidDepositStateTransitionException;
|
|||||||
public class DepositLifecycleStateMachineImpl implements
|
public class DepositLifecycleStateMachineImpl implements
|
||||||
DepositLifecycleStateMachine {
|
DepositLifecycleStateMachine {
|
||||||
|
|
||||||
private final List<DepositStatus> allowedDepositStatuses;
|
private final List<DepositAccountStatus> allowedDepositStatuses;
|
||||||
|
|
||||||
public DepositLifecycleStateMachineImpl(List<DepositStatus> allowedDepositStatuses) {
|
public DepositLifecycleStateMachineImpl(List<DepositAccountStatus> allowedDepositStatuses) {
|
||||||
this.allowedDepositStatuses=allowedDepositStatuses;
|
this.allowedDepositStatuses=allowedDepositStatuses;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DepositStatus transition(DepositEvent depositEvent, DepositStatus from) {
|
public DepositAccountStatus transition(DepositAccountEvent depositEvent, DepositAccountStatus from) {
|
||||||
|
|
||||||
DepositStatus newState = null;
|
DepositAccountStatus newState = null;
|
||||||
|
|
||||||
switch (depositEvent) {
|
switch (depositEvent) {
|
||||||
case DEPOSIT_CREATED:
|
case DEPOSIT_CREATED:
|
||||||
if (from == null) {
|
if (from == null) {
|
||||||
newState = stateOf(DepositStatus.SUBMITED_AND_PENDING_APPROVAL, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DEPOSIT_REJECTED:
|
case DEPOSIT_REJECTED:
|
||||||
if (from.hasStateOf(DepositStatus.SUBMITED_AND_PENDING_APPROVAL)) {
|
if (from.hasStateOf(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL)) {
|
||||||
newState = stateOf(DepositStatus.REJECTED, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.REJECTED, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
final String errorMessage = "The DepositApplication can not be rejected from "+from.getCode() ;
|
final String errorMessage = "The DepositApplication can not be rejected from "+from.getCode() ;
|
||||||
@@ -34,8 +34,8 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DEPOSIT_APPROVED:
|
case DEPOSIT_APPROVED:
|
||||||
if (from.hasStateOf(DepositStatus.SUBMITED_AND_PENDING_APPROVAL)) {
|
if (from.hasStateOf(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL)) {
|
||||||
newState = stateOf(DepositStatus.APPROVED, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.APPROVED, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
final String errorMessage = "The DepositApplication can not be approved from "+from.getCode() ;
|
final String errorMessage = "The DepositApplication can not be approved from "+from.getCode() ;
|
||||||
@@ -43,8 +43,8 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DEPOSIT_WITHDRAWN:
|
case DEPOSIT_WITHDRAWN:
|
||||||
if (this.anyOfAllowedWhenComingFrom(from, DepositStatus.SUBMITED_AND_PENDING_APPROVAL, DepositStatus.APPROVED)) {
|
if (this.anyOfAllowedWhenComingFrom(from, DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL, DepositAccountStatus.APPROVED)) {
|
||||||
newState = stateOf(DepositStatus.WITHDRAWN_BY_CLIENT, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.WITHDRAWN_BY_CLIENT, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
final String errorMessage = "The DepositApplication can not be withdrawn from "+from.getCode() ;
|
final String errorMessage = "The DepositApplication can not be withdrawn from "+from.getCode() ;
|
||||||
@@ -52,8 +52,8 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DEPOSIT_APPROVAL_UNDO:
|
case DEPOSIT_APPROVAL_UNDO:
|
||||||
if (from.hasStateOf(DepositStatus.APPROVED)) {
|
if (from.hasStateOf(DepositAccountStatus.APPROVED)) {
|
||||||
newState = stateOf(DepositStatus.SUBMITED_AND_PENDING_APPROVAL, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
final String errorMessage = "The DepositApplication can not be unapproved from "+from.getCode() ;
|
final String errorMessage = "The DepositApplication can not be unapproved from "+from.getCode() ;
|
||||||
@@ -61,8 +61,8 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DEPOSIT_MATURED:
|
case DEPOSIT_MATURED:
|
||||||
if (from.hasStateOf(DepositStatus.APPROVED) ){
|
if (from.hasStateOf(DepositAccountStatus.APPROVED) ){
|
||||||
newState = stateOf(DepositStatus.MATURED, allowedDepositStatuses);
|
newState = stateOf(DepositAccountStatus.MATURED, allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
final String errorMessage = "The DepositApplication can not be matured from "+from.getCode() ;
|
final String errorMessage = "The DepositApplication can not be matured from "+from.getCode() ;
|
||||||
@@ -74,9 +74,9 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
return newState;
|
return newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DepositStatus stateOf(DepositStatus state, List<DepositStatus> allowedLoanStatuses) {
|
private DepositAccountStatus stateOf(DepositAccountStatus state, List<DepositAccountStatus> allowedLoanStatuses) {
|
||||||
DepositStatus match = null;
|
DepositAccountStatus match = null;
|
||||||
for (DepositStatus depositStatus : allowedLoanStatuses) {
|
for (DepositAccountStatus depositStatus : allowedLoanStatuses) {
|
||||||
if (depositStatus.hasStateOf(state)) {
|
if (depositStatus.hasStateOf(state)) {
|
||||||
match = depositStatus;
|
match = depositStatus;
|
||||||
break;
|
break;
|
||||||
@@ -85,10 +85,10 @@ public class DepositLifecycleStateMachineImpl implements
|
|||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean anyOfAllowedWhenComingFrom(final DepositStatus state, final DepositStatus... allowedStates) {
|
private boolean anyOfAllowedWhenComingFrom(final DepositAccountStatus state, final DepositAccountStatus... allowedStates) {
|
||||||
boolean allowed = false;
|
boolean allowed = false;
|
||||||
|
|
||||||
for (DepositStatus allowedState : allowedStates) {
|
for (DepositAccountStatus allowedState : allowedStates) {
|
||||||
if (state.hasStateOf(allowedState)) {
|
if (state.hasStateOf(allowedState)) {
|
||||||
allowed = true;
|
allowed = true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
-53
@@ -1,53 +0,0 @@
|
|||||||
package org.mifosng.platform.saving.domain;
|
|
||||||
|
|
||||||
|
|
||||||
public enum DepositTransactionType {
|
|
||||||
|
|
||||||
INVALID(0, "depositTransactionType.invalid"), DEPOSIT(1, "depositTransactionType.deposit"), WITHDRAW(2, "depositTransactionType.withdraw"), REVERSAL(3, "depositTransactionType.reversal");
|
|
||||||
|
|
||||||
private final Integer value;
|
|
||||||
private final String code;
|
|
||||||
|
|
||||||
private DepositTransactionType(final Integer value, final String code) {
|
|
||||||
this.value=value;
|
|
||||||
this.code=code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DepositTransactionType fromInt(final Integer transactionType){
|
|
||||||
|
|
||||||
if (transactionType == null) {
|
|
||||||
return DepositTransactionType.INVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
DepositTransactionType depositTransactionType=null;
|
|
||||||
switch (transactionType) {
|
|
||||||
case 1:
|
|
||||||
depositTransactionType=DepositTransactionType.DEPOSIT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
depositTransactionType=DepositTransactionType.WITHDRAW;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
depositTransactionType=DepositTransactionType.REVERSAL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default :
|
|
||||||
depositTransactionType=DepositTransactionType.INVALID;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return depositTransactionType;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+2
-2
@@ -14,7 +14,7 @@ import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
|||||||
import org.mifosng.platform.saving.domain.DepositAccount;
|
import org.mifosng.platform.saving.domain.DepositAccount;
|
||||||
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachine;
|
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachine;
|
||||||
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachineImpl;
|
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachineImpl;
|
||||||
import org.mifosng.platform.saving.domain.DepositStatus;
|
import org.mifosng.platform.saving.domain.DepositAccountStatus;
|
||||||
import org.mifosng.platform.saving.domain.FixedTermDepositInterestCalculator;
|
import org.mifosng.platform.saving.domain.FixedTermDepositInterestCalculator;
|
||||||
import org.mifosng.platform.savingproduct.domain.DepositProduct;
|
import org.mifosng.platform.savingproduct.domain.DepositProduct;
|
||||||
import org.mifosng.platform.savingproduct.domain.DepositProductRepository;
|
import org.mifosng.platform.savingproduct.domain.DepositProductRepository;
|
||||||
@@ -96,7 +96,7 @@ public class DepositAccountAssembler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DepositLifecycleStateMachine defaultDepositLifecycleStateMachine() {
|
private DepositLifecycleStateMachine defaultDepositLifecycleStateMachine() {
|
||||||
List<DepositStatus> allowedDepositStatuses = Arrays.asList(DepositStatus.values());
|
List<DepositAccountStatus> allowedDepositStatuses = Arrays.asList(DepositAccountStatus.values());
|
||||||
return new DepositLifecycleStateMachineImpl(allowedDepositStatuses);
|
return new DepositLifecycleStateMachineImpl(allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+11
-11
@@ -1,40 +1,40 @@
|
|||||||
package org.mifosng.platform.saving.service;
|
package org.mifosng.platform.saving.service;
|
||||||
|
|
||||||
import org.mifosng.platform.api.data.EnumOptionData;
|
import org.mifosng.platform.api.data.EnumOptionData;
|
||||||
import org.mifosng.platform.saving.domain.DepositStatus;
|
import org.mifosng.platform.saving.domain.DepositAccountStatus;
|
||||||
|
|
||||||
public class DepositAccountEnumerations {
|
public class DepositAccountEnumerations {
|
||||||
|
|
||||||
public static EnumOptionData status(final Integer statusId) {
|
public static EnumOptionData status(final Integer statusId) {
|
||||||
return status(DepositStatus.fromInt(statusId));
|
return status(DepositAccountStatus.fromInt(statusId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EnumOptionData status(final DepositStatus status) {
|
public static EnumOptionData status(final DepositAccountStatus status) {
|
||||||
EnumOptionData optionData = null;
|
EnumOptionData optionData = null;
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case SUBMITED_AND_PENDING_APPROVAL:
|
case SUBMITED_AND_PENDING_APPROVAL:
|
||||||
optionData = new EnumOptionData(DepositStatus.SUBMITED_AND_PENDING_APPROVAL.getValue().longValue(), DepositStatus.SUBMITED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval");
|
optionData = new EnumOptionData(DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL.getValue().longValue(), DepositAccountStatus.SUBMITED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval");
|
||||||
break;
|
break;
|
||||||
case APPROVED:
|
case APPROVED:
|
||||||
optionData = new EnumOptionData(DepositStatus.APPROVED.getValue().longValue(), DepositStatus.APPROVED.getCode(), "Approved");
|
optionData = new EnumOptionData(DepositAccountStatus.APPROVED.getValue().longValue(), DepositAccountStatus.APPROVED.getCode(), "Approved");
|
||||||
break;
|
break;
|
||||||
case ACTIVE:
|
case ACTIVE:
|
||||||
optionData = new EnumOptionData(DepositStatus.ACTIVE.getValue().longValue(), DepositStatus.ACTIVE.getCode(), "Active");
|
optionData = new EnumOptionData(DepositAccountStatus.ACTIVE.getValue().longValue(), DepositAccountStatus.ACTIVE.getCode(), "Active");
|
||||||
break;
|
break;
|
||||||
case REJECTED:
|
case REJECTED:
|
||||||
optionData = new EnumOptionData(DepositStatus.REJECTED.getValue().longValue(), DepositStatus.REJECTED.getCode(), "Rejected");
|
optionData = new EnumOptionData(DepositAccountStatus.REJECTED.getValue().longValue(), DepositAccountStatus.REJECTED.getCode(), "Rejected");
|
||||||
break;
|
break;
|
||||||
case WITHDRAWN_BY_CLIENT:
|
case WITHDRAWN_BY_CLIENT:
|
||||||
optionData = new EnumOptionData(DepositStatus.WITHDRAWN_BY_CLIENT.getValue().longValue(), DepositStatus.WITHDRAWN_BY_CLIENT.getCode(), "Withdrawn by applicant");
|
optionData = new EnumOptionData(DepositAccountStatus.WITHDRAWN_BY_CLIENT.getValue().longValue(), DepositAccountStatus.WITHDRAWN_BY_CLIENT.getCode(), "Withdrawn by applicant");
|
||||||
break;
|
break;
|
||||||
case MATURED:
|
case MATURED:
|
||||||
optionData = new EnumOptionData(DepositStatus.MATURED.getValue().longValue(), DepositStatus.MATURED.getCode(), "Matured");
|
optionData = new EnumOptionData(DepositAccountStatus.MATURED.getValue().longValue(), DepositAccountStatus.MATURED.getCode(), "Matured");
|
||||||
break;
|
break;
|
||||||
case CLOSED:
|
case CLOSED:
|
||||||
optionData = new EnumOptionData(DepositStatus.CLOSED.getValue().longValue(), DepositStatus.CLOSED.getCode(), "Closed");
|
optionData = new EnumOptionData(DepositAccountStatus.CLOSED.getValue().longValue(), DepositAccountStatus.CLOSED.getCode(), "Closed");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
optionData = new EnumOptionData(DepositStatus.INVALID.getValue().longValue(), DepositStatus.INVALID.getCode(), "Invalid");
|
optionData = new EnumOptionData(DepositAccountStatus.INVALID.getValue().longValue(), DepositAccountStatus.INVALID.getCode(), "Invalid");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return optionData;
|
return optionData;
|
||||||
|
|||||||
+7
-7
@@ -1,31 +1,31 @@
|
|||||||
package org.mifosng.platform.saving.service;
|
package org.mifosng.platform.saving.service;
|
||||||
|
|
||||||
import org.mifosng.platform.api.data.EnumOptionData;
|
import org.mifosng.platform.api.data.EnumOptionData;
|
||||||
import org.mifosng.platform.saving.domain.DepositTransactionType;
|
import org.mifosng.platform.saving.domain.DepositAccountTransactionType;
|
||||||
|
|
||||||
public class DepositAccountTransactionEnumerations {
|
public class DepositAccountTransactionEnumerations {
|
||||||
|
|
||||||
public static EnumOptionData depositType(final Integer statusId) {
|
public static EnumOptionData depositType(final Integer statusId) {
|
||||||
return depositType(DepositTransactionType.fromInt(statusId));
|
return depositType(DepositAccountTransactionType.fromInt(statusId));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static EnumOptionData depositType(DepositTransactionType transactionType) {
|
private static EnumOptionData depositType(DepositAccountTransactionType transactionType) {
|
||||||
|
|
||||||
EnumOptionData optionData=null;
|
EnumOptionData optionData=null;
|
||||||
switch (transactionType) {
|
switch (transactionType) {
|
||||||
case DEPOSIT:
|
case DEPOSIT:
|
||||||
optionData=new EnumOptionData(DepositTransactionType.DEPOSIT.getValue().longValue(), DepositTransactionType.DEPOSIT.getCode(), "Deposit");
|
optionData=new EnumOptionData(DepositAccountTransactionType.DEPOSIT.getValue().longValue(), DepositAccountTransactionType.DEPOSIT.getCode(), "Deposit");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WITHDRAW:
|
case WITHDRAW:
|
||||||
optionData=new EnumOptionData(DepositTransactionType.WITHDRAW.getValue().longValue(), DepositTransactionType.WITHDRAW.getCode(), "Withdraw");
|
optionData=new EnumOptionData(DepositAccountTransactionType.WITHDRAW.getValue().longValue(), DepositAccountTransactionType.WITHDRAW.getCode(), "Withdraw");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case REVERSAL:
|
case REVERSAL:
|
||||||
optionData=new EnumOptionData(DepositTransactionType.REVERSAL.getValue().longValue(), DepositTransactionType.REVERSAL.getCode(), "Revarsal");
|
optionData=new EnumOptionData(DepositAccountTransactionType.REVERSAL.getValue().longValue(), DepositAccountTransactionType.REVERSAL.getCode(), "Revarsal");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
optionData=new EnumOptionData(DepositTransactionType.INVALID.getValue().longValue(), DepositTransactionType.INVALID.getCode(), "Invalid Transaction");
|
optionData=new EnumOptionData(DepositAccountTransactionType.INVALID.getValue().longValue(), DepositAccountTransactionType.INVALID.getCode(), "Invalid Transaction");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return optionData;
|
return optionData;
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ import org.mifosng.platform.saving.domain.DepositAccount;
|
|||||||
import org.mifosng.platform.saving.domain.DepositAccountRepository;
|
import org.mifosng.platform.saving.domain.DepositAccountRepository;
|
||||||
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachine;
|
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachine;
|
||||||
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachineImpl;
|
import org.mifosng.platform.saving.domain.DepositLifecycleStateMachineImpl;
|
||||||
import org.mifosng.platform.saving.domain.DepositStatus;
|
import org.mifosng.platform.saving.domain.DepositAccountStatus;
|
||||||
import org.mifosng.platform.saving.domain.FixedTermDepositInterestCalculator;
|
import org.mifosng.platform.saving.domain.FixedTermDepositInterestCalculator;
|
||||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||||
import org.mifosng.platform.user.domain.AppUser;
|
import org.mifosng.platform.user.domain.AppUser;
|
||||||
@@ -135,7 +135,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo
|
|||||||
return date.isBefore(new LocalDate());
|
return date.isBefore(new LocalDate());
|
||||||
}
|
}
|
||||||
private DepositLifecycleStateMachine defaultDepositLifecycleStateMachine() {
|
private DepositLifecycleStateMachine defaultDepositLifecycleStateMachine() {
|
||||||
List<DepositStatus> allowedDepositStatuses = Arrays.asList(DepositStatus.values());
|
List<DepositAccountStatus> allowedDepositStatuses = Arrays.asList(DepositAccountStatus.values());
|
||||||
return new DepositLifecycleStateMachineImpl(allowedDepositStatuses);
|
return new DepositLifecycleStateMachineImpl(allowedDepositStatuses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user