use of org.mifos.accounts.loan.business.LoanBO in project head by mifos.
the class AccountStatusAction method update.
@TransactionDemarcate(validateAndResetToken = true)
public ActionForward update(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, @SuppressWarnings("unused") final HttpServletResponse httpservletresponse) throws Exception {
AccountStatusActionForm accountStatusActionForm = (AccountStatusActionForm) form;
List<AccountUpdateStatus> accountsForUpdate = new ArrayList<AccountUpdateStatus>();
List<AccountUpdateStatus> individualAccountsForUpdate = new ArrayList<AccountUpdateStatus>();
for (String accountId : accountStatusActionForm.getAccountRecords()) {
if (StringUtils.isNotBlank(accountId)) {
Long accountIdValue = Long.parseLong(accountId);
//GLIM
List<LoanBO> individualLoans = this.loanDao.findIndividualLoans(Integer.valueOf(accountId));
for (LoanBO indivdual : individualLoans) {
Short newStatusId = getShortValue(accountStatusActionForm.getNewStatus());
individualAccountsForUpdate.add(new AccountUpdateStatus(indivdual.getAccountId().longValue(), newStatusId, null, accountStatusActionForm.getComments()));
}
this.loanAccountServiceFacade.updateSeveralLoanAccountStatuses(individualAccountsForUpdate, null);
Short newStatusId = getShortValue(accountStatusActionForm.getNewStatus());
Short flagId = null;
String comment = accountStatusActionForm.getComments();
accountsForUpdate.add(new AccountUpdateStatus(accountIdValue, newStatusId, flagId, comment));
}
}
List<String> accountNumbers = this.loanAccountServiceFacade.updateSeveralLoanAccountStatuses(accountsForUpdate, null);
request.setAttribute(LoanConstants.ACCOUNTS_LIST, accountNumbers);
return mapping.findForward(ActionForwards.changeAccountStatusConfirmation_success.toString());
}
use of org.mifos.accounts.loan.business.LoanBO in project head by mifos.
the class ApplicationInitializer method applyMifos4948Fix.
@SuppressWarnings("unchecked")
private void applyMifos4948Fix() throws AccountException {
Session session = StaticHibernateUtil.getSessionTL();
List<LoanBO> fixLoans;
Query query = session.getNamedQuery("fetchMissingInstalmentsForWriteOffsAndReschedules");
fixLoans = query.list();
if (fixLoans != null && fixLoans.size() > 0) {
for (LoanBO fixLoan : fixLoans) {
Set<AccountActionDateEntity> fixLoanSchedules = fixLoan.getAccountActionDates();
Money totalMissedPayment = new Money(fixLoan.getCurrency());
if (fixLoanSchedules != null && fixLoanSchedules.size() > 0) {
for (AccountActionDateEntity fixLoanSchedule : fixLoanSchedules) {
LoanScheduleEntity loanInstallment = (LoanScheduleEntity) fixLoanSchedule;
totalMissedPayment = totalMissedPayment.add(loanInstallment.getPrincipalDue());
}
}
logger.info("MIFOS-4948 - Loan: " + fixLoan.getGlobalAccountNum() + " - Adding payment: " + totalMissedPayment + " to fix instalments that should have been written-off or rescheduled.");
fixLoan.applyMifos4948FixPayment(totalMissedPayment);
}
logger.info(fixLoans.size() + " Account Payments created to fix data related to MIFOS-4948");
}
}
use of org.mifos.accounts.loan.business.LoanBO in project head by mifos.
the class AccountBOIntegrationTest method testAdjustmentForClosedAccnt.
@Test
public void testAdjustmentForClosedAccnt() throws Exception {
Date currentDate = new Date(System.currentTimeMillis());
LoanBO loan = groupLoan;
loan.setUserContext(TestUtils.makeUser());
List<AccountActionDateEntity> accntActionDates = new ArrayList<AccountActionDateEntity>();
accntActionDates.addAll(loan.getAccountActionDates());
PaymentData accountPaymentDataView = TestObjectFactory.getLoanAccountPaymentData(accntActionDates, TestUtils.createMoney(712), null, loan.getPersonnel(), "receiptNum", Short.valueOf("1"), currentDate, currentDate);
IntegrationTestObjectMother.applyAccountPayment(loan, accountPaymentDataView);
loan.setAccountState(new AccountStateEntity(AccountState.LOAN_CLOSED_OBLIGATIONS_MET));
TestObjectFactory.updateObject(loan);
try {
PersonnelBO loggedInUser = IntegrationTestObjectMother.testUser();
loan.adjustPmnt("loan account has been adjusted by test code", loggedInUser);
} catch (AccountException e) {
Assert.assertEquals("exception.accounts.ApplicationException.CannotAdjust", e.getKey());
}
}
use of org.mifos.accounts.loan.business.LoanBO in project head by mifos.
the class AccountBOIntegrationTest method testGetTransactionHistoryViewByOtherUser.
@Test
public void testGetTransactionHistoryViewByOtherUser() throws Exception {
Date currentDate = new Date(System.currentTimeMillis());
LoanBO loan = groupLoan;
loan.setUserContext(TestUtils.makeUser());
List<AccountActionDateEntity> accntActionDates = new ArrayList<AccountActionDateEntity>();
accntActionDates.addAll(loan.getAccountActionDates());
PersonnelBO personnel = legacyPersonnelDao.getPersonnel(Short.valueOf("2"));
PaymentData accountPaymentDataView = TestObjectFactory.getLoanAccountPaymentData(accntActionDates, TestUtils.createMoney(100), null, personnel, "receiptNum", Short.valueOf("1"), currentDate, currentDate);
IntegrationTestObjectMother.applyAccountPayment(loan, accountPaymentDataView);
loan = TestObjectFactory.getObject(LoanBO.class, loan.getAccountId());
loan.setUserContext(TestUtils.makeUser());
List<TransactionHistoryDto> trxnHistlist = loan.getTransactionHistoryView();
Assert.assertNotNull("Account TrxnHistoryView list object should not be null", trxnHistlist);
Assert.assertTrue("Account TrxnHistoryView list object Size should be greater than zero", trxnHistlist.size() > 0);
for (TransactionHistoryDto transactionHistoryDto : trxnHistlist) {
Assert.assertEquals(transactionHistoryDto.getPostedBy(), personnel.getDisplayName());
}
StaticHibernateUtil.flushSession();
groupLoan = TestObjectFactory.getObject(LoanBO.class, loan.getAccountId());
}
use of org.mifos.accounts.loan.business.LoanBO in project head by mifos.
the class AccountBOIntegrationTest method testUpdatePerformanceHistoryOnAdjustment.
@Test
public void testUpdatePerformanceHistoryOnAdjustment() throws Exception {
Date currentDate = new Date(System.currentTimeMillis());
List<AccountActionDateEntity> accntActionDates = new ArrayList<AccountActionDateEntity>();
PaymentData paymentData1 = TestObjectFactory.getLoanAccountPaymentData(accntActionDates, TestUtils.createMoney(212), null, groupLoan.getPersonnel(), "receiptNum", Short.valueOf("1"), currentDate, currentDate);
IntegrationTestObjectMother.applyAccountPayment(groupLoan, paymentData1);
IntegrationTestObjectMother.saveLoanAccount(groupLoan);
LoanBO loan = IntegrationTestObjectMother.findLoanBySystemId(groupLoan.getGlobalAccountNum());
PaymentData paymentData2 = TestObjectFactory.getLoanAccountPaymentData(null, TestUtils.createMoney(600), null, loan.getPersonnel(), "receiptNum", Short.valueOf("1"), currentDate, currentDate);
IntegrationTestObjectMother.applyAccountPayment(loan, paymentData2);
IntegrationTestObjectMother.saveLoanAccount(groupLoan);
groupLoan = IntegrationTestObjectMother.findLoanBySystemId(groupLoan.getGlobalAccountNum());
groupLoan.setUserContext(TestUtils.makeUser());
PersonnelBO loggedInUser = IntegrationTestObjectMother.testUser();
groupLoan.adjustPmnt("loan account has been adjusted by test code", loggedInUser);
IntegrationTestObjectMother.saveLoanAccount(groupLoan);
}
Aggregations