Search in sources :

Example 6 with FeePaymentEntity

use of org.mifos.accounts.fees.business.FeePaymentEntity in project head by mifos.

the class TestObjectFactory method createOneTimeRateFee.

/**
     * createOneTimeRateFee.
     * <p/>
     * Changing TestObjectFactory#getUserContext() to {@link TestUtils#makeUserWithLocales()} caused a failure in
     * {@link LoanBOIntegrationTest#testApplyUpfrontFee} (and other tests).
     *
     * @param categoryTypeName TODO
     */
public static FeeBO createOneTimeRateFee(final String feeName, final FeeCategory feeCategory, final Double rate, final FeeFormula feeFormula, final FeePayment feePayment, String categoryTypeName) {
    GLCodeEntity glCode = (GLCodeEntity) StaticHibernateUtil.getSessionTL().get(GLCodeEntity.class, TestGeneralLedgerCode.FEES);
    FeeBO fee;
    try {
        LookUpValueEntity lookUpValue = new LookUpValueEntity();
        lookUpValue.setLookUpName(categoryTypeName);
        CategoryTypeEntity categoryType = new CategoryTypeEntity(feeCategory);
        categoryType.setLookUpValue(lookUpValue);
        fee = new RateFeeBO(getUserContext(), feeName, categoryType, new FeeFrequencyTypeEntity(FeeFrequencyType.ONETIME), glCode, rate, new FeeFormulaEntity(feeFormula), false, new FeePaymentEntity(feePayment));
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return testObjectPersistence.createFee(fee);
}
Also used : RateFeeBO(org.mifos.accounts.fees.business.RateFeeBO) FeeFormulaEntity(org.mifos.accounts.fees.business.FeeFormulaEntity) MifosRuntimeException(org.mifos.core.MifosRuntimeException) FeeFrequencyTypeEntity(org.mifos.accounts.fees.business.FeeFrequencyTypeEntity) GLCodeEntity(org.mifos.accounts.financial.business.GLCodeEntity) CategoryTypeEntity(org.mifos.accounts.fees.business.CategoryTypeEntity) FeePaymentEntity(org.mifos.accounts.fees.business.FeePaymentEntity) FeeBO(org.mifos.accounts.fees.business.FeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) RateFeeBO(org.mifos.accounts.fees.business.RateFeeBO) SystemException(org.mifos.framework.exceptions.SystemException) MifosRuntimeException(org.mifos.core.MifosRuntimeException) ProductDefinitionException(org.mifos.accounts.productdefinition.exceptions.ProductDefinitionException) ApplicationException(org.mifos.framework.exceptions.ApplicationException) CustomerException(org.mifos.customers.exceptions.CustomerException) PersistenceException(org.mifos.framework.exceptions.PersistenceException) MeetingException(org.mifos.application.meeting.exceptions.MeetingException) OfficeException(org.mifos.customers.office.exceptions.OfficeException) LookUpValueEntity(org.mifos.application.master.business.LookUpValueEntity)

Example 7 with FeePaymentEntity

use of org.mifos.accounts.fees.business.FeePaymentEntity in project head by mifos.

the class FeeServiceImpl method createOneTimeFee.

private FeeBO createOneTimeFee(FeeCreateRequest feeCreateRequest, FeeFrequencyTypeEntity feeFrequencyType, CategoryTypeEntity feeCategoryType, GLCodeEntity glCodeEntity, UserContext userContext) throws FeeException {
    FeePaymentEntity feePaymentEntity = this.feeDao.findFeePaymentEntityByType(feeCreateRequest.getFeePaymentType());
    FeeBO feeBO = null;
    if (feeCreateRequest.isRateFee()) {
        FeeFormulaEntity feeFormulaEntity = this.feeDao.findFeeFormulaEntityByType(feeCreateRequest.getFeeFormula());
        feeBO = new RateFeeBO(userContext, feeCreateRequest.getFeeName(), feeCategoryType, feeFrequencyType, glCodeEntity, feeCreateRequest.getRate(), feeFormulaEntity, feeCreateRequest.isCustomerDefaultFee(), feePaymentEntity);
    } else {
        Money feeMoney = new Money(getCurrency(feeCreateRequest.getCurrencyId()), feeCreateRequest.getAmount());
        feeBO = new AmountFeeBO(userContext, feeCreateRequest.getFeeName(), feeCategoryType, feeFrequencyType, glCodeEntity, feeMoney, feeCreateRequest.isCustomerDefaultFee(), feePaymentEntity);
    }
    return feeBO;
}
Also used : RateFeeBO(org.mifos.accounts.fees.business.RateFeeBO) Money(org.mifos.framework.util.helpers.Money) FeeFormulaEntity(org.mifos.accounts.fees.business.FeeFormulaEntity) FeePaymentEntity(org.mifos.accounts.fees.business.FeePaymentEntity) FeeBO(org.mifos.accounts.fees.business.FeeBO) RateFeeBO(org.mifos.accounts.fees.business.RateFeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO)

Example 8 with FeePaymentEntity

use of org.mifos.accounts.fees.business.FeePaymentEntity in project head by mifos.

the class AccountBusinessService method filterTimeOfFirstRepaymentFee.

private void filterTimeOfFirstRepaymentFee(List<FeeBO> feeList, LoanBO loanBO) {
    for (Iterator<FeeBO> iter = feeList.iterator(); iter.hasNext(); ) {
        FeeBO fee = iter.next();
        FeePaymentEntity feePaymentEntity = fee.getFeeFrequency().getFeePayment();
        if (feePaymentEntity != null) {
            Short paymentType = feePaymentEntity.getId();
            if (paymentType.equals(FeePayment.TIME_OF_FIRSTLOANREPAYMENT.getValue()) && loanBO.isCurrentDateGreaterThanFirstInstallment()) {
                iter.remove();
            }
        }
    }
}
Also used : FeePaymentEntity(org.mifos.accounts.fees.business.FeePaymentEntity) FeeBO(org.mifos.accounts.fees.business.FeeBO) RateFeeBO(org.mifos.accounts.fees.business.RateFeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO)

Example 9 with FeePaymentEntity

use of org.mifos.accounts.fees.business.FeePaymentEntity in project head by mifos.

the class LoanOfferingBOIntegrationTest method testUpdateWithFundsAndOneTimeFee.

@Test
public void testUpdateWithFundsAndOneTimeFee() throws ProductDefinitionException, FeeException {
    createIntitalObjects();
    GracePeriodTypeEntity gracePeriodType = new GracePeriodTypeEntity(GraceType.GRACEONALLREPAYMENTS);
    Date startDate = offSetCurrentDate(0);
    Date endDate = offSetCurrentDate(2);
    FeeBO fee = new AmountFeeBO(TestObjectFactory.getContext(), "Loan Periodic", new CategoryTypeEntity(FeeCategory.LOAN), new FeeFrequencyTypeEntity(FeeFrequencyType.PERIODIC), intglCodeEntity, new Money(getCurrency(), "100"), false, TestObjectFactory.createMeeting(TestObjectFactory.getTypicalMeeting()));
    FeeBO fee1 = new AmountFeeBO(TestObjectFactory.getContext(), "Loan Periodic", new CategoryTypeEntity(FeeCategory.LOAN), new FeeFrequencyTypeEntity(FeeFrequencyType.ONETIME), intglCodeEntity, new Money(getCurrency(), "100"), false, new FeePaymentEntity(FeePayment.UPFRONT));
    List<FeeBO> fees = new ArrayList<FeeBO>();
    fees.add(fee);
    fees.add(fee1);
    List<FundBO> funds = new ArrayList<FundBO>();
    funds.add(null);
    product = createLoanOfferingBO("Loan Product", "LOAP");
    product.update((short) 1, "Loan Product", "LOAN", productCategory, prdApplicableMaster, startDate, endDate, "Loan Product updated", PrdStatus.LOAN_ACTIVE, gracePeriodType, interestTypes, (short) 0, new Money(getCurrency(), "3000"), new Money(getCurrency(), "1000"), new Money(getCurrency(), "1000"), 12.0, 2.0, 12.0, (short) 12, (short) 1, (short) 2, false, true, false, funds, fees, null, (short) 2, RecurrenceType.WEEKLY, waiverInterest);
    Assert.assertEquals(2, product.getLoanOfferingFees().size());
    Assert.assertEquals(1, product.getLoanOfferingFunds().size());
}
Also used : Money(org.mifos.framework.util.helpers.Money) FeeFrequencyTypeEntity(org.mifos.accounts.fees.business.FeeFrequencyTypeEntity) FundBO(org.mifos.accounts.fund.business.FundBO) ArrayList(java.util.ArrayList) CategoryTypeEntity(org.mifos.accounts.fees.business.CategoryTypeEntity) FeePaymentEntity(org.mifos.accounts.fees.business.FeePaymentEntity) FeeBO(org.mifos.accounts.fees.business.FeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) Date(java.sql.Date) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) Test(org.junit.Test)

Example 10 with FeePaymentEntity

use of org.mifos.accounts.fees.business.FeePaymentEntity in project head by mifos.

the class LoanOfferingBOIntegrationTest method testWithFundsAndOneTimeFee.

@Test
public void testWithFundsAndOneTimeFee() throws ProductDefinitionException, FeeException {
    createIntitalObjects();
    GracePeriodTypeEntity gracePeriodType = new GracePeriodTypeEntity(GraceType.GRACEONALLREPAYMENTS);
    Date startDate = offSetCurrentDate(0);
    Date endDate = offSetCurrentDate(2);
    FeeBO fee = new AmountFeeBO(TestObjectFactory.getContext(), "Loan Periodic", new CategoryTypeEntity(FeeCategory.LOAN), new FeeFrequencyTypeEntity(FeeFrequencyType.PERIODIC), intglCodeEntity, new Money(getCurrency(), "100"), false, TestObjectFactory.createMeeting(TestObjectFactory.getTypicalMeeting()));
    FeeBO fee1 = new AmountFeeBO(TestObjectFactory.getContext(), "Loan Periodic", new CategoryTypeEntity(FeeCategory.LOAN), new FeeFrequencyTypeEntity(FeeFrequencyType.ONETIME), intglCodeEntity, new Money(getCurrency(), "100"), false, new FeePaymentEntity(FeePayment.UPFRONT));
    List<FeeBO> fees = new ArrayList<FeeBO>();
    fees.add(fee);
    fees.add(fee1);
    List<FundBO> funds = new ArrayList<FundBO>();
    funds.add(null);
    LoanOfferingBO loanOffering = new LoanOfferingBO(TestObjectFactory.getContext(), "Loan Offering", "LOAP", productCategory, prdApplicableMaster, startDate, endDate, null, gracePeriodType, (short) 2, interestTypes, new Money(getCurrency(), "1000"), new Money(getCurrency(), "3000"), new Money(getCurrency(), "2000.0"), 12.0, 2.0, 3.0, (short) 20, (short) 11, (short) 17, false, false, false, funds, fees, null, frequency, principalglCodeEntity, intglCodeEntity, waiverInterest);
    Assert.assertEquals(2, loanOffering.getLoanOfferingFees().size());
    Assert.assertEquals(1, loanOffering.getLoanOfferingFunds().size());
}
Also used : FundBO(org.mifos.accounts.fund.business.FundBO) ArrayList(java.util.ArrayList) FeePaymentEntity(org.mifos.accounts.fees.business.FeePaymentEntity) Date(java.sql.Date) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) Money(org.mifos.framework.util.helpers.Money) FeeFrequencyTypeEntity(org.mifos.accounts.fees.business.FeeFrequencyTypeEntity) CategoryTypeEntity(org.mifos.accounts.fees.business.CategoryTypeEntity) FeeBO(org.mifos.accounts.fees.business.FeeBO) AmountFeeBO(org.mifos.accounts.fees.business.AmountFeeBO) Test(org.junit.Test)

Aggregations

FeePaymentEntity (org.mifos.accounts.fees.business.FeePaymentEntity)11 AmountFeeBO (org.mifos.accounts.fees.business.AmountFeeBO)8 FeeBO (org.mifos.accounts.fees.business.FeeBO)8 FeeFrequencyTypeEntity (org.mifos.accounts.fees.business.FeeFrequencyTypeEntity)6 CategoryTypeEntity (org.mifos.accounts.fees.business.CategoryTypeEntity)5 RateFeeBO (org.mifos.accounts.fees.business.RateFeeBO)5 ArrayList (java.util.ArrayList)4 Test (org.junit.Test)3 FeeFormulaEntity (org.mifos.accounts.fees.business.FeeFormulaEntity)3 GLCodeEntity (org.mifos.accounts.financial.business.GLCodeEntity)3 FundBO (org.mifos.accounts.fund.business.FundBO)3 MeetingException (org.mifos.application.meeting.exceptions.MeetingException)3 MifosRuntimeException (org.mifos.core.MifosRuntimeException)3 PersistenceException (org.mifos.framework.exceptions.PersistenceException)3 SystemException (org.mifos.framework.exceptions.SystemException)3 Money (org.mifos.framework.util.helpers.Money)3 Date (java.sql.Date)2 ProductDefinitionException (org.mifos.accounts.productdefinition.exceptions.ProductDefinitionException)2 LookUpValueEntity (org.mifos.application.master.business.LookUpValueEntity)2 BusinessRuleException (org.mifos.service.BusinessRuleException)2