use of org.mifos.accounts.fees.business.FeeDto in project head by mifos.
the class LoanPrdAction method getFeeViewList.
private List<FeeDto> getFeeViewList(UserContext userContext, List<FeeBO> fees) {
logger.debug("start getFeeViewList method of Loan Product Action ");
List<FeeDto> feeDtos = new ArrayList<FeeDto>();
if (fees != null && fees.size() > 0) {
for (FeeBO fee : fees) {
feeDtos.add(new FeeDto(userContext, fee));
}
}
logger.debug("getFeeViewList method of Loan Product Action called");
return feeDtos.size() > 0 ? feeDtos : null;
}
use of org.mifos.accounts.fees.business.FeeDto in project head by mifos.
the class LoanAccountActionForm method validateAdditionalFee.
protected void validateAdditionalFee(ActionErrors errors, Locale locale, MifosCurrency currency, HttpServletRequest request) throws PageExpiredException {
Map<String, Boolean> addedFees = new HashMap<String, Boolean>();
List<FeeDto> additionalFeeList = (List<FeeDto>) SessionUtils.getAttribute(LoanConstants.ADDITIONAL_FEES_LIST, request);
for (FeeDto additionalFee : additionalFees) {
if (additionalFee.getAmount() != null && !additionalFee.getAmount().equals("")) {
FeeDto additionalFeeDetails = getAdditionalFeeType(additionalFeeList, additionalFee.getFeeId());
if (additionalFeeDetails.getFeeType().equals(RateAmountFlag.AMOUNT)) {
DoubleConversionResult conversionResult = validateAmount(additionalFee.getAmount(), currency, LoanConstants.LOAN_ADDITIONAL_FEE_KEY, errors, "");
if (validPositiveValue(errors, locale, conversionResult)) {
validateFeeTypeIfVariableInstallmentLoanType(errors, additionalFeeDetails);
}
} else {
DoubleConversionResult conversionResult = validateInterest(additionalFee.getAmount(), LoanConstants.LOAN_ADDITIONAL_FEE_KEY, errors);
if (validPositiveValue(errors, locale, conversionResult)) {
validateFeeTypeIfVariableInstallmentLoanType(errors, additionalFeeDetails);
}
}
if (!additionalFeeDetails.isPeriodic() && addedFees.get(additionalFeeDetails.getFeeId()) != null) {
addError(errors, "AdditionalFee", ProductDefinitionConstants.MULTIPLE_ONE_TIME_FEES_NOT_ALLOWED);
}
addedFees.put(additionalFeeDetails.getFeeId(), true);
}
}
}
use of org.mifos.accounts.fees.business.FeeDto in project head by mifos.
the class LoanPrdActionStrutsTest method testManage.
@Test
public void testManage() throws Exception {
loanOffering = createLoanOfferingBO("Loan Offering", "LOAN");
setRequestPathInfo("/loanproductaction.do");
addRequestParameter("method", "manage");
addRequestParameter("prdOfferingId", loanOffering.getPrdOfferingId().toString());
addRequestParameter(Constants.CURRENTFLOWKEY, flowKey);
performNoErrors();
verifyForward(ActionForwards.manage_success.toString());
List<ProductCategoryBO> productCategories = (List<ProductCategoryBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRODUCTCATEGORYLIST, request);
Assert.assertEquals("The size of master data for categories", 1, productCategories.size());
for (ProductCategoryBO productCategory : productCategories) {
Assert.assertNotNull(productCategory.getProductType());
}
Assert.assertEquals("The size of applicable list", 2, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANAPPLFORLIST, request)).size());
Assert.assertEquals("The size of grace period types list", 3, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANGRACEPERIODTYPELIST, request)).size());
Assert.assertEquals("The size of interest types list", 4, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.INTERESTTYPESLIST, request)).size());
Assert.assertEquals("The size of applicable list", 10, ((List<GLCodeEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRICIPALGLCODELIST, request)).size());
Assert.assertEquals("The size of applicable list", 3, ((List<GLCodeEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANINTERESTGLCODELIST, request)).size());
List<FundBO> funds = (List<FundBO>) SessionUtils.getAttribute(ProductDefinitionConstants.SRCFUNDSLIST, request);
Assert.assertNotNull(funds);
List<FeeDto> fees = (List<FeeDto>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANFEESLIST, request);
Assert.assertNull(fees);
List<FeeBO> productFees = (List<FeeBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFEE, request);
Assert.assertNotNull(productFees);
List<FeeDto> selectedFees = (List<FeeDto>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFEESELECTEDLIST, request);
Assert.assertNotNull(selectedFees);
List<FundBO> selectedFunds = (List<FundBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFUNDSELECTEDLIST, request);
Assert.assertNotNull(selectedFunds);
Assert.assertEquals("The size of applicable status list", 2, ((List<PrdStatusEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDSTATUSLIST, request)).size());
LoanPrdActionForm loanPrdActionForm = (LoanPrdActionForm) request.getSession().getAttribute(ProductDefinitionConstants.LOANPRODUCTACTIONFORM);
Assert.assertNotNull(loanPrdActionForm);
Assert.assertEquals(loanOffering.getPrdOfferingId().toString(), loanPrdActionForm.getPrdOfferingId());
Assert.assertEquals(loanOffering.getPrdOfferingName(), loanPrdActionForm.getPrdOfferingName());
Assert.assertEquals(loanOffering.getPrdOfferingShortName(), loanPrdActionForm.getPrdOfferingShortName());
Assert.assertEquals(loanOffering.getPrdCategory().getProductCategoryID().toString(), loanPrdActionForm.getPrdCategory());
Assert.assertEquals(loanOffering.getStatus().getValue().toString(), loanPrdActionForm.getPrdStatus());
Assert.assertEquals(loanOffering.getPrdApplicableMasterEnum(), loanPrdActionForm.getPrdApplicableMasterEnum());
Assert.assertEquals(DateUtils.getUserLocaleDate(TestObjectFactory.getContext().getPreferredLocale(), DateUtils.toDatabaseFormat(loanOffering.getStartDate())), loanPrdActionForm.getStartDate());
if (loanOffering.getEndDate() != null) {
Assert.assertEquals(DateUtils.getUserLocaleDate(TestObjectFactory.getContext().getPreferredLocale(), DateUtils.toDatabaseFormat(loanOffering.getEndDate())), loanPrdActionForm.getEndDate());
} else {
Assert.assertNull(loanPrdActionForm.getEndDate());
}
Assert.assertEquals(loanOffering.getDescription(), loanPrdActionForm.getDescription());
Assert.assertEquals(loanOffering.getGracePeriodType().getId().toString(), loanPrdActionForm.getGracePeriodType());
Assert.assertEquals(loanOffering.getGracePeriodDuration().toString(), loanPrdActionForm.getGracePeriodDuration());
Assert.assertEquals(loanOffering.getInterestTypes().getId().toString(), loanPrdActionForm.getInterestTypes());
Set<LoanAmountSameForAllLoanBO> loanAmountSameForAllLoan = loanOffering.getLoanAmountSameForAllLoan();
Assert.assertNotNull(loanAmountSameForAllLoan);
Set<NoOfInstallSameForAllLoanBO> noOfInstallSameForAllLoan = loanOffering.getNoOfInstallSameForAllLoan();
Assert.assertNotNull(noOfInstallSameForAllLoan);
Assert.assertEquals(loanOffering.getMaxInterestRate().toString(), loanPrdActionForm.getMaxInterestRate());
Assert.assertEquals(loanOffering.getMinInterestRate().toString(), loanPrdActionForm.getMinInterestRate());
Assert.assertEquals(loanOffering.getDefInterestRate().toString(), loanPrdActionForm.getDefInterestRate());
Assert.assertEquals(loanOffering.isIntDedDisbursement(), loanPrdActionForm.isIntDedAtDisbValue());
Assert.assertEquals(loanOffering.isPrinDueLastInst(), loanPrdActionForm.isPrinDueLastInstValue());
Assert.assertEquals(loanOffering.isIncludeInLoanCounter(), loanPrdActionForm.isLoanCounterValue());
Assert.assertEquals(loanOffering.getLoanOfferingMeeting().getMeeting().getMeetingDetails().getRecurAfter().toString(), loanPrdActionForm.getRecurAfter());
Assert.assertEquals(loanOffering.getLoanOfferingMeeting().getMeeting().getMeetingDetails().getRecurrenceType().getRecurrenceId().toString(), loanPrdActionForm.getFreqOfInstallments());
Assert.assertEquals(loanOffering.getPrincipalGLcode().getGlcodeId().toString(), loanPrdActionForm.getPrincipalGLCode());
Assert.assertEquals(loanOffering.getInterestGLcode().getGlcodeId().toString(), loanPrdActionForm.getInterestGLCode());
Assert.assertEquals(loanOffering.getLoanOfferingFees().size(), (selectedFees).size());
Assert.assertEquals(loanOffering.getLoanOfferingFunds().size(), (selectedFunds).size());
}
use of org.mifos.accounts.fees.business.FeeDto in project head by mifos.
the class LoanPrdActionStrutsTest method testLoad.
@Test
public void testLoad() throws Exception {
setRequestPathInfo("/loanproductaction.do");
addRequestParameter("method", "load");
actionPerform();
verifyNoActionErrors();
verifyNoActionMessages();
verifyForward(ActionForwards.load_success.toString());
List<ProductCategoryBO> productCategories = (List<ProductCategoryBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRODUCTCATEGORYLIST, request);
Assert.assertEquals("The size of master data for categories", 1, productCategories.size());
for (ProductCategoryBO productCategory : productCategories) {
Assert.assertNotNull(productCategory.getProductType());
}
Assert.assertEquals("The size of applicable list", 2, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANAPPLFORLIST, request)).size());
Assert.assertEquals("The size of grace period types list", 3, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANGRACEPERIODTYPELIST, request)).size());
Assert.assertEquals("The size of interest types list", 4, ((List<MasterDataEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.INTERESTTYPESLIST, request)).size());
Assert.assertEquals("The size of applicable list", 10, ((List<GLCodeEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRICIPALGLCODELIST, request)).size());
Assert.assertEquals("The size of applicable list", 3, ((List<GLCodeEntity>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANINTERESTGLCODELIST, request)).size());
List<FundBO> funds = (List<FundBO>) SessionUtils.getAttribute(ProductDefinitionConstants.SRCFUNDSLIST, request);
Assert.assertNotNull(funds);
List<FeeDto> loanFees = (List<FeeDto>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANFEESLIST, request);
Assert.assertNull(loanFees);
List<FeeBO> productFees = (List<FeeBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFEE, request);
Assert.assertNotNull(productFees);
List<FeeDto> selectedFees = (List<FeeDto>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFEESELECTEDLIST, request);
Assert.assertNotNull(selectedFees);
List<FundBO> selectedFunds = (List<FundBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFUNDSELECTEDLIST, request);
Assert.assertNotNull(selectedFunds);
Assert.assertEquals(0, (selectedFees).size());
Assert.assertEquals(0, (selectedFunds).size());
}
use of org.mifos.accounts.fees.business.FeeDto in project head by mifos.
the class LoanPrdActionForm method validateSelectedFeeForVariableInstallment.
@SuppressWarnings("unchecked")
//made default access to assist testing
void validateSelectedFeeForVariableInstallment(HttpServletRequest request, ActionErrors errors) {
request.setAttribute(Constants.CURRENTFLOWKEY, request.getParameter(Constants.CURRENTFLOWKEY));
List<FeeDto> feeDtos = new ArrayList<FeeDto>();
try {
if (getPrdOfferinFees() != null && getPrdOfferinFees().length > 0) {
List<FeeBO> fees = (List<FeeBO>) SessionUtils.getAttribute(ProductDefinitionConstants.LOANPRDFEE, request);
for (String selectedFee : getPrdOfferinFees()) {
FeeBO fee = getFeeFromList(fees, selectedFee);
if (fee != null) {
if (canConfigureVariableInstallments()) {
if (validateIfFeeTypeNonPeriodic(fee, errors) && validateFeeIsNotDependentOnPercentOfInterest(fee, errors)) {
feeDtos.add(getFeeDto(request, fee));
}
} else {
feeDtos.add(getFeeDto(request, fee));
}
}
}
}
setSelectedFeeDtoOnSession(request, feeDtos);
} catch (PageExpiredException e) {
}
}
Aggregations