use of org.mifos.accounts.exceptions.AccountException in project head by mifos.
the class LoanBO method waiveFeeAmountOverDue.
private void waiveFeeAmountOverDue() throws AccountException {
Money chargeWaived = new Money(getCurrency());
Money principal = new Money(getCurrency());
Money interest = new Money(getCurrency());
Money penalty = new Money(getCurrency());
List<AccountActionDateEntity> accountActionDateList = getApplicableIdsForNextInstallmentAndArrears();
// installment.
if (getDetailsOfNextInstallment() != null) {
accountActionDateList.remove(accountActionDateList.size() - 1);
}
for (AccountActionDateEntity accountActionDateEntity : accountActionDateList) {
chargeWaived = chargeWaived.add(((LoanScheduleEntity) accountActionDateEntity).waiveFeeCharges());
}
if (chargeWaived != null && chargeWaived.isGreaterThanZero()) {
updateTotalFeeAmount(chargeWaived);
updateAccountActivity(principal, interest, chargeWaived, penalty, userContext.getId(), AccountConstants.AMOUNT + chargeWaived + AccountConstants.WAIVED);
waiveOverdueChargesFromMemberAccounts(LoanConstants.FEE_WAIVED);
}
try {
getlegacyLoanDao().createOrUpdate(this);
} catch (PersistenceException e) {
throw new AccountException(e);
}
}
use of org.mifos.accounts.exceptions.AccountException in project head by mifos.
the class LoanBO method save.
/**
* use service/dao for saving and creating loans
*/
@Deprecated
public void save() throws AccountException {
try {
this.addAccountStatusChangeHistory(new AccountStatusChangeHistoryEntity(this.getAccountState(), this.getAccountState(), legacyPersonnelDao.getPersonnel(userContext.getId()), this));
getlegacyLoanDao().createOrUpdate(this);
this.globalAccountNum = generateId(userContext.getBranchGlobalNum());
getlegacyLoanDao().createOrUpdate(this);
} catch (PersistenceException e) {
throw new AccountException(AccountExceptionConstants.CREATEEXCEPTION, e);
}
}
use of org.mifos.accounts.exceptions.AccountException in project head by mifos.
the class LoanBO method applyMifos4948FixPayment.
/*
* Mifos-4948 specific code
*/
public void applyMifos4948FixPayment(Money totalMissedPayment) throws AccountException {
String comment = "MIFOS-4948 - Loan: " + this.getGlobalAccountNum() + " - Adding payment: " + totalMissedPayment;
try {
PersonnelBO currentUser = legacyPersonnelDao.getPersonnel((short) 1);
Date transactionDate = new DateTimeService().getCurrentJavaDateTime();
AccountPaymentEntity accountPaymentEntity = new AccountPaymentEntity(this, totalMissedPayment, null, null, getPaymentTypeEntity(Short.valueOf("1")), transactionDate);
addAccountPayment(accountPaymentEntity);
accountPaymentEntity.setComment(comment);
AccountActionTypes accountActionTypes;
String accountConstants;
if (this.getAccountState().getId().equals(AccountState.LOAN_CLOSED_WRITTEN_OFF.getValue())) {
accountActionTypes = AccountActionTypes.WRITEOFF;
accountConstants = AccountConstants.LOAN_WRITTEN_OFF;
} else {
accountActionTypes = AccountActionTypes.LOAN_RESCHEDULED;
accountConstants = AccountConstants.LOAN_RESCHEDULED;
}
makeWriteOffOrReschedulePaymentForMifos4948(accountPaymentEntity, accountConstants, accountActionTypes, currentUser);
addLoanActivity(buildLoanActivity(accountPaymentEntity.getAccountTrxns(), currentUser, accountConstants, transactionDate));
buildFinancialEntries(accountPaymentEntity.getAccountTrxns());
} catch (PersistenceException e) {
throw new AccountException(e);
}
}
use of org.mifos.accounts.exceptions.AccountException in project head by mifos.
the class LoanBO method waivePenaltyAmountDue.
private void waivePenaltyAmountDue() throws AccountException {
List<AccountActionDateEntity> accountActionDateList = getApplicableIdsForNextInstallmentAndArrears();
LoanScheduleEntity accountActionDateEntity = (LoanScheduleEntity) accountActionDateList.get(accountActionDateList.size() - 1);
Money principal = new Money(getCurrency());
Money interest = new Money(getCurrency());
Money fee = new Money(getCurrency());
Money chargeWaived = accountActionDateEntity.waivePenaltyCharges();
if (chargeWaived != null && chargeWaived.isGreaterThanZero()) {
updateTotalPenaltyAmount(chargeWaived);
updateAccountActivity(principal, interest, fee, chargeWaived, userContext.getId(), LoanConstants.PENALTY_WAIVED);
waiveChargesFromMemberAccounts(LoanConstants.PENALTY_WAIVED);
}
try {
getlegacyLoanDao().createOrUpdate(this);
} catch (PersistenceException e) {
throw new AccountException(e);
}
}
use of org.mifos.accounts.exceptions.AccountException in project head by mifos.
the class CenterServiceFacadeWebTier method removeAccountFee.
@Override
public void removeAccountFee(Integer accountId, Short feeId) {
MifosUser user = (MifosUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserContext userContext = toUserContext(user);
try {
AccountBO account = new AccountBusinessService().getAccount(accountId);
if (account instanceof LoanBO) {
List<LoanBO> individualLoans = this.loanDao.findIndividualLoans(account.getAccountId());
if (individualLoans != null && individualLoans.size() > 0) {
for (LoanBO individual : individualLoans) {
individual.updateDetails(userContext);
individual.removeFeesAssociatedWithUpcomingAndAllKnownFutureInstallments(feeId, userContext.getId());
this.customerDao.save(individual);
}
}
}
account.updateDetails(userContext);
if (account.getPersonnel() != null) {
new AccountBusinessService().checkPermissionForRemoveFees(account.getType(), account.getCustomer().getLevel(), userContext, account.getOffice().getOfficeId(), account.getPersonnel().getPersonnelId());
} else {
new AccountBusinessService().checkPermissionForRemoveFees(account.getType(), account.getCustomer().getLevel(), userContext, account.getOffice().getOfficeId(), userContext.getId());
}
this.transactionHelper.startTransaction();
account.removeFeesAssociatedWithUpcomingAndAllKnownFutureInstallments(feeId, userContext.getId());
this.customerDao.save(account);
this.transactionHelper.commitTransaction();
} catch (ServiceException e) {
this.transactionHelper.rollbackTransaction();
throw new MifosRuntimeException(e);
} catch (AccountException e) {
this.transactionHelper.rollbackTransaction();
throw new BusinessRuleException(e.getKey(), e);
} catch (ApplicationException e) {
this.transactionHelper.rollbackTransaction();
throw new BusinessRuleException(e.getKey(), e);
} finally {
this.transactionHelper.closeSession();
}
}
Aggregations