Search in sources :

Example 6 with ProductDetailsDto

use of org.mifos.dto.domain.ProductDetailsDto in project head by mifos.

the class LoanProductAssembler method fromDto.

public LoanOfferingBO fromDto(MifosUser user, LoanProductRequest loanProductRequest) {
    try {
        Integer userId = user.getUserId();
        ProductDetailsDto productDetails = loanProductRequest.getProductDetails();
        String name = productDetails.getName();
        String shortName = productDetails.getShortName();
        String description = productDetails.getDescription();
        Integer category = productDetails.getCategory();
        boolean loanCycleCounter = loanProductRequest.isIncludeInLoanCycleCounter();
        boolean waiverInterest = loanProductRequest.isWaiverInterest();
        PrdStatusEntity activeStatus = new PrdOfferingPersistence().getPrdStatus(PrdStatus.LOAN_ACTIVE);
        PrdStatusEntity inActiveStatus = new PrdOfferingPersistence().getPrdStatus(PrdStatus.LOAN_INACTIVE);
        PrdStatusEntity selectedStatus = activeStatus;
        if (productDetails.getStatus() != null && inActiveStatus.getOfferingStatusId().equals(productDetails.getStatus().shortValue())) {
            selectedStatus = inActiveStatus;
        }
        MifosCurrency currency = Money.getDefaultCurrency();
        if (AccountingRules.isMultiCurrencyEnabled()) {
            currency = AccountingRules.getCurrencyByCurrencyId(loanProductRequest.getCurrencyId().shortValue());
        }
        ProductCategoryBO productCategory = this.loanProductDao.findActiveProductCategoryById(category);
        DateTime startDate = productDetails.getStartDate();
        DateTime endDate = productDetails.getEndDate();
        ApplicableTo applicableTo = ApplicableTo.fromInt(productDetails.getApplicableFor());
        PrdApplicableMasterEntity applicableToEntity = this.loanProductDao.findApplicableProductType(applicableTo);
        LoanAmountCalculation loanAmountCalculation = this.loanProductCaluclationTypeAssembler.assembleLoanAmountCalculationFromDto(loanProductRequest.getLoanAmountDetails());
        InterestType interestType = InterestType.fromInt(loanProductRequest.getInterestRateType());
        Double minRate = loanProductRequest.getInterestRateRange().getMin().doubleValue();
        Double maxRate = loanProductRequest.getInterestRateRange().getMax().doubleValue();
        Double defaultRate = loanProductRequest.getInterestRateRange().getTheDefault().doubleValue();
        InterestTypesEntity interestTypeEntity = this.loanProductDao.findInterestType(interestType);
        RecurrenceType recurrence = RecurrenceType.fromInt(loanProductRequest.getRepaymentDetails().getFrequencyType().shortValue());
        Integer recurEvery = loanProductRequest.getRepaymentDetails().getRecurs();
        LoanInstallmentCalculation loanInstallmentCalculation = this.loanProductCaluclationTypeAssembler.assembleLoanInstallmentCalculationFromDto(loanProductRequest.getRepaymentDetails().getInstallmentCalculationDetails());
        GraceType gracePeriodType = GraceType.fromInt(loanProductRequest.getRepaymentDetails().getGracePeriodType());
        GracePeriodTypeEntity gracePeriodTypeEntity = this.loanProductDao.findGracePeriodType(gracePeriodType);
        Integer gracePeriodDuration = loanProductRequest.getRepaymentDetails().getGracePeriodDuration();
        List<FeeBO> applicableFees = new ArrayList<FeeBO>();
        List<Integer> applicableFeeIds = loanProductRequest.getApplicableFees();
        for (Integer feeId : applicableFeeIds) {
            FeeBO fee = ApplicationContextProvider.getBean(FeeDao.class).findById(feeId.shortValue());
            applicableFees.add(fee);
        }
        List<FundBO> applicableFunds = new ArrayList<FundBO>();
        List<Integer> applicableFundIds = loanProductRequest.getAccountDetails().getApplicableFunds();
        for (Integer fundId : applicableFundIds) {
            FundBO fund = this.fundDao.findById(fundId.shortValue());
            applicableFunds.add(fund);
        }
        List<PenaltyBO> applicablePenalties = new ArrayList<PenaltyBO>();
        List<Integer> applicablePenaltyIds = loanProductRequest.getApplicablePenalties();
        for (Integer penaltyId : applicablePenaltyIds) {
            PenaltyBO penalty = this.penaltyDao.findPenaltyById(penaltyId);
            applicablePenalties.add(penalty);
        }
        GLCodeEntity interestGlCode = this.generalLedgerDao.findGlCodeById(loanProductRequest.getAccountDetails().getInterestGlCodeId().shortValue());
        GLCodeEntity principalGlCode = this.generalLedgerDao.findGlCodeById(loanProductRequest.getAccountDetails().getPrincipalClCodeId().shortValue());
        String globalProductId = generateProductGlobalNum(user);
        LoanOfferingBO loanProduct = LoanOfferingBO.createNew(userId, globalProductId, name, shortName, description, productCategory, startDate, endDate, applicableToEntity, currency, interestTypeEntity, minRate, maxRate, defaultRate, recurrence, recurEvery, interestGlCode, principalGlCode, activeStatus, inActiveStatus, gracePeriodTypeEntity, gracePeriodDuration, waiverInterest, loanCycleCounter, loanAmountCalculation, loanInstallmentCalculation, applicableFees, applicableFunds, applicablePenalties);
        loanProduct.updateStatus(selectedStatus);
        return loanProduct;
    } catch (PersistenceException e) {
        throw new MifosRuntimeException(e);
    }
}
Also used : InterestTypesEntity(org.mifos.application.master.business.InterestTypesEntity) PrdOfferingPersistence(org.mifos.accounts.productdefinition.persistence.PrdOfferingPersistence) LoanInstallmentCalculation(org.mifos.accounts.productdefinition.LoanInstallmentCalculation) ArrayList(java.util.ArrayList) ProductDetailsDto(org.mifos.dto.domain.ProductDetailsDto) DateTime(org.joda.time.DateTime) GraceType(org.mifos.accounts.productdefinition.util.helpers.GraceType) GracePeriodTypeEntity(org.mifos.accounts.productdefinition.business.GracePeriodTypeEntity) MifosCurrency(org.mifos.application.master.business.MifosCurrency) PenaltyBO(org.mifos.accounts.penalties.business.PenaltyBO) ProductCategoryBO(org.mifos.accounts.productdefinition.business.ProductCategoryBO) FundBO(org.mifos.accounts.fund.business.FundBO) RecurrenceType(org.mifos.application.meeting.util.helpers.RecurrenceType) GLCodeEntity(org.mifos.accounts.financial.business.GLCodeEntity) LoanAmountCalculation(org.mifos.accounts.productdefinition.LoanAmountCalculation) ApplicableTo(org.mifos.accounts.productdefinition.util.helpers.ApplicableTo) InterestType(org.mifos.accounts.productdefinition.util.helpers.InterestType) LoanOfferingBO(org.mifos.accounts.productdefinition.business.LoanOfferingBO) PersistenceException(org.mifos.framework.exceptions.PersistenceException) FeeBO(org.mifos.accounts.fees.business.FeeBO) PrdStatusEntity(org.mifos.accounts.productdefinition.business.PrdStatusEntity) PrdApplicableMasterEntity(org.mifos.accounts.productdefinition.business.PrdApplicableMasterEntity) FeeDao(org.mifos.accounts.fees.persistence.FeeDao) MifosRuntimeException(org.mifos.core.MifosRuntimeException)

Example 7 with ProductDetailsDto

use of org.mifos.dto.domain.ProductDetailsDto in project head by mifos.

the class PrdOfferingBO method toDetailsDto.

public ProductDetailsDto toDetailsDto() {
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
    DateTime startDateTime = new DateTime(this.startDate);
    String startDateFormatted = format.format(this.startDate);
    String endDateFormatted = "";
    DateTime endDateTime = null;
    if (this.endDate != null) {
        endDateTime = new DateTime(this.endDate);
        endDateFormatted = format.format(this.endDate);
    }
    ProductDetailsDto detailsDto = new ProductDetailsDto(this.prdOfferingName, this.prdOfferingShortName, this.description, this.prdCategory.getProductCategoryID().intValue(), startDateTime, endDateTime, this.prdApplicableMaster.getId().intValue());
    detailsDto.setId(this.prdOfferingId.intValue());
    detailsDto.setGlobalNumber(this.globalPrdOfferingNum);
    detailsDto.setStatus(this.prdStatus.getOfferingStatusId().intValue());
    detailsDto.setCategoryName(this.prdCategory.getProductCategoryName());
    detailsDto.setStartDateFormatted(startDateFormatted);
    detailsDto.setEndDateFormatted(endDateFormatted);
    detailsDto.setCreatedDate(new DateTime(this.getCreatedDate()));
    detailsDto.setCreatedDateFormatted(format.format(this.getCreatedDate()));
    return detailsDto;
}
Also used : ProductDetailsDto(org.mifos.dto.domain.ProductDetailsDto) SimpleDateFormat(java.text.SimpleDateFormat) DateTime(org.joda.time.DateTime)

Example 8 with ProductDetailsDto

use of org.mifos.dto.domain.ProductDetailsDto in project head by mifos.

the class SavingsOfferingBO method toFullDto.

public SavingsProductDto toFullDto() {
    ProductDetailsDto details = super.toDetailsDto();
    Integer groupSavingsType = Integer.valueOf(0);
    boolean groupSavingsAccount = false;
    if (this.recommendedAmntUnit != null) {
        groupSavingsType = this.recommendedAmntUnit.getId().intValue();
        groupSavingsAccount = true;
    }
    PrdOfferingMeetingEntity interestCalculationPeriod = getTimePerForInstcalc();
    PrdOfferingMeetingEntity interestPosting = getFreqOfPostIntcalc();
    SavingsProductDto savingsProductDto = new SavingsProductDto(details, groupSavingsAccount, this.savingsType.getId().intValue(), groupSavingsType, this.recommendedAmount.getAmountDoubleValue(), this.maxAmntWithdrawl.getAmountDoubleValue(), BigDecimal.valueOf(this.interestRate), this.interestCalcType.getId().intValue(), interestCalculationPeriod.getMeeting().getRecurAfter().intValue(), interestCalculationPeriod.getMeeting().getRecurrenceType().getValue().intValue(), interestPosting.getMeeting().getRecurAfter().intValue(), this.minAmntForInt.getAmount(), this.depositGLCode.getGlcodeId().intValue(), this.interestGLCode.getGlcodeId().intValue(), interestPosting.getMeeting().isDaily());
    savingsProductDto.setDepositGlCodeValue(this.depositGLCode.getGlcode());
    savingsProductDto.setInterestGlCodeValue(this.interestGLCode.getGlcode());
    savingsProductDto.setDepositGlCodeName(this.depositGLCode.getAssociatedCOA().getAccountName());
    savingsProductDto.setInterestGlCodeName(this.interestGLCode.getAssociatedCOA().getAccountName());
    return savingsProductDto;
}
Also used : SavingsProductDto(org.mifos.dto.domain.SavingsProductDto) ProductDetailsDto(org.mifos.dto.domain.ProductDetailsDto)

Example 9 with ProductDetailsDto

use of org.mifos.dto.domain.ProductDetailsDto in project head by mifos.

the class CreateSavingsAccountControllerTest method testLoadProduct.

@SuppressWarnings("unchecked")
@Test
public void testLoadProduct() {
    Integer productId = 1;
    List<ListElement> interestCalculationOptions = new ArrayList<ListElement>();
    boolean groupSavingsAccount = false;
    Integer depositType = 1;
    Integer groupSavingsType = 1;
    Double amountForDeposit = 10.0;
    Double maxWithdrawal = 100.0;
    BigDecimal interestRate = new BigDecimal("5.0");
    Integer interestCalculationType = 1;
    Integer interestCalculationFrequency = 1;
    Integer interestCalculationFrequencyPeriod = 1;
    Integer interestPostingMonthlyFrequency = 1;
    BigDecimal minBalanceForInterestCalculation = new BigDecimal("1.0");
    Integer depositGlCode = 1;
    Integer interestGlCode = 1;
    ProductDetailsDto productsDetailDto = null;
    SavingsProductDto savingsProductDetails = new SavingsProductDto(productsDetailDto, groupSavingsAccount, depositType, groupSavingsType, amountForDeposit, maxWithdrawal, interestRate, interestCalculationType, interestCalculationFrequency, interestCalculationFrequencyPeriod, interestPostingMonthlyFrequency, minBalanceForInterestCalculation, depositGlCode, interestGlCode, false);
    SavingsProductReferenceDto savingsProductReference = new SavingsProductReferenceDto(interestCalculationOptions, savingsProductDetails, true);
    when(savingsServiceFacade.retrieveSavingsProductReferenceData(productId)).thenReturn(savingsProductReference);
    controller.loadProduct(productId, formBean);
    verify(formBean).setProductId(productId);
    verify(formBean).setProduct(savingsProductReference);
    verify(formBean).setMandatoryDepositAmount(any(String.class));
    verify(formBean).setSavingsTypes(any(Map.class));
    verify(formBean).setRecurrenceTypes(any(Map.class));
    verify(formBean).setRecurrenceFrequencies(any(Map.class));
}
Also used : ArrayList(java.util.ArrayList) ListElement(org.mifos.dto.screen.ListElement) SavingsProductDto(org.mifos.dto.domain.SavingsProductDto) SavingsProductReferenceDto(org.mifos.dto.screen.SavingsProductReferenceDto) ProductDetailsDto(org.mifos.dto.domain.ProductDetailsDto) HashMap(java.util.HashMap) Map(java.util.Map) BigDecimal(java.math.BigDecimal) Test(org.junit.Test)

Example 10 with ProductDetailsDto

use of org.mifos.dto.domain.ProductDetailsDto in project head by mifos.

the class EditSavingsProductsFormController method showPopulatedForm.

@RequestMapping(method = RequestMethod.GET)
public ModelAndView showPopulatedForm(@RequestParam(value = "productId", required = true) Integer productId) {
    ModelAndView modelAndView = new ModelAndView("editSavingsProduct");
    configurationDto = this.configurationServiceFacade.getAccountingConfiguration();
    modelAndView.addObject("GLCodeMode", configurationDto.getGlCodeMode());
    SavingsProductFormDto referenceData = this.adminServiceFacade.retrieveSavingsProductFormReferenceData();
    SavingsProductDto savingsProductDto = adminServiceFacade.retrieveSavingsProductDetails(productId);
    SavingsProductFormBean savingsProductBean = new SavingsProductFormBeanAssembler().assembleReferenceData(referenceData);
    ProductDetailsDto productDto = savingsProductDto.getProductDetails();
    GeneralProductBean productBean = new GeneralProductBeanAssembler().assembleFrom(savingsProductBean.getGeneralDetails(), productDto);
    savingsProductBean.setGeneralDetails(productBean);
    savingsProductBean.setSelectedDepositType(savingsProductDto.getDepositType().toString());
    savingsProductBean.setAmountForDeposit(savingsProductDto.getAmountForDeposit());
    if (savingsProductDto.getGroupMandatorySavingsType() > 0) {
        savingsProductBean.setSelectedGroupSavingsApproach(savingsProductDto.getGroupMandatorySavingsType().toString());
    } else {
        savingsProductBean.setSelectedGroupSavingsApproach("");
    }
    savingsProductBean.setMaxWithdrawalAmount(savingsProductDto.getMaxWithdrawal());
    savingsProductBean.setInterestRate(savingsProductDto.getInterestRate());
    savingsProductBean.setSelectedInterestCalculation(savingsProductDto.getInterestCalculationType().toString());
    savingsProductBean.setInterestCalculationFrequency(savingsProductDto.getInterestCalculationFrequency());
    savingsProductBean.setSelectedFequencyPeriod(savingsProductDto.getInterestCalculationFrequencyPeriod().toString());
    savingsProductBean.setInterestPostingMonthlyFrequency(savingsProductDto.getInterestPostingFrequency());
    savingsProductBean.setMinBalanceRequiredForInterestCalculation(Long.toString(savingsProductDto.getMinBalanceForInterestCalculation().longValue()));
    savingsProductBean.setIsDaily(savingsProductDto.isDailyPosting());
    savingsProductBean.setSelectedPrincipalGlCode(savingsProductDto.getDepositGlCode().toString());
    savingsProductBean.setSelectedInterestGlCode(savingsProductDto.getInterestGlCode().toString());
    savingsProductBean.setNotUpdateable(savingsProductDto.isOpenSavingsAccountsExist());
    modelAndView.addObject("savingsProduct", savingsProductBean);
    return modelAndView;
}
Also used : SavingsProductFormDto(org.mifos.dto.screen.SavingsProductFormDto) ModelAndView(org.springframework.web.servlet.ModelAndView) SavingsProductDto(org.mifos.dto.domain.SavingsProductDto) ProductDetailsDto(org.mifos.dto.domain.ProductDetailsDto) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

ProductDetailsDto (org.mifos.dto.domain.ProductDetailsDto)12 ArrayList (java.util.ArrayList)5 DateTime (org.joda.time.DateTime)5 BigDecimal (java.math.BigDecimal)4 MifosRuntimeException (org.mifos.core.MifosRuntimeException)3 SavingsProductDto (org.mifos.dto.domain.SavingsProductDto)3 LoanAmountDetailsDto (org.mifos.dto.screen.LoanAmountDetailsDto)3 PersistenceException (org.mifos.framework.exceptions.PersistenceException)3 FeeBO (org.mifos.accounts.fees.business.FeeBO)2 GLCodeEntity (org.mifos.accounts.financial.business.GLCodeEntity)2 FundBO (org.mifos.accounts.fund.business.FundBO)2 PenaltyBO (org.mifos.accounts.penalties.business.PenaltyBO)2 LoanOfferingBO (org.mifos.accounts.productdefinition.business.LoanOfferingBO)2 PrdApplicableMasterEntity (org.mifos.accounts.productdefinition.business.PrdApplicableMasterEntity)2 PrdStatusEntity (org.mifos.accounts.productdefinition.business.PrdStatusEntity)2 ProductCategoryBO (org.mifos.accounts.productdefinition.business.ProductCategoryBO)2 PrdOfferingPersistence (org.mifos.accounts.productdefinition.persistence.PrdOfferingPersistence)2 ApplicableTo (org.mifos.accounts.productdefinition.util.helpers.ApplicableTo)2 InterestType (org.mifos.accounts.productdefinition.util.helpers.InterestType)2 MeetingBO (org.mifos.application.meeting.business.MeetingBO)2