use of org.mifos.accounts.productdefinition.business.PrdStatusEntity in project head by mifos.
the class TestObjectFactory method createSavingsProduct.
public static SavingsOfferingBO createSavingsProduct(final String name, final String shortName, final ApplicableTo applicableTo, final Date startDate, final PrdStatus status, final Double recommendedAmount, final RecommendedAmountUnit recommendedAmountUnit, final Double intRate, final Double maxAmtWithdrawl, final Double minAmtForInt, final SavingsType savingsType, final InterestCalcType interestCalculationType, final MeetingBO intCalcMeeting, final MeetingBO intPostMeeting, final Short depGLCode, final Short withGLCode) {
GLCodeEntity depglCodeEntity = (GLCodeEntity) StaticHibernateUtil.getSessionTL().get(GLCodeEntity.class, depGLCode);
GLCodeEntity intglCodeEntity = (GLCodeEntity) StaticHibernateUtil.getSessionTL().get(GLCodeEntity.class, withGLCode);
ProductCategoryBO productCategory = (ProductCategoryBO) TestObjectFactory.getObject(ProductCategoryBO.class, SAMPLE_CATEGORY);
PrdApplicableMasterEntity prdApplicableMaster = new PrdApplicableMasterEntity(applicableTo);
SavingsTypeEntity savingsTypeEntity = new SavingsTypeEntity(savingsType);
InterestCalcTypeEntity intCalType = new InterestCalcTypeEntity(interestCalculationType);
RecommendedAmntUnitEntity amountUnit = new RecommendedAmntUnitEntity(recommendedAmountUnit);
SavingsOfferingBO product;
try {
product = new SavingsOfferingBO(TestUtils.makeUserWithLocales(), name, shortName, productCategory, prdApplicableMaster, startDate, null, null, amountUnit, savingsTypeEntity, intCalType, intCalcMeeting, intPostMeeting, TestUtils.createMoney(recommendedAmount), TestUtils.createMoney(maxAmtWithdrawl), TestUtils.createMoney(minAmtForInt), intRate, depglCodeEntity, intglCodeEntity);
} catch (ProductDefinitionException e) {
throw new RuntimeException(e);
} catch (SystemException e) {
throw new RuntimeException(e);
}
PrdStatusEntity prdStatus = testObjectPersistence.retrievePrdStatus(status);
product.setPrdStatus(prdStatus);
return (SavingsOfferingBO) testObjectPersistence.persist(product);
}
use of org.mifos.accounts.productdefinition.business.PrdStatusEntity 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);
}
}
use of org.mifos.accounts.productdefinition.business.PrdStatusEntity in project head by mifos.
the class PrdOfferingPersistence method getApplicablePrdStatus.
@SuppressWarnings("cast")
public List<PrdStatusEntity> getApplicablePrdStatus(ProductType productType, Short localeId) throws PersistenceException {
logger.debug("getting the applicable product Status");
HashMap<String, Object> queryParameters = new HashMap<String, Object>();
queryParameters.put(ProductDefinitionConstants.PRODUCTTYPEID, productType.getValue());
List<PrdStatusEntity> prdStatusList = (List<PrdStatusEntity>) executeNamedQuery(NamedQueryConstants.PRODUCT_STATUS, queryParameters);
for (PrdStatusEntity prdStatus : prdStatusList) {
Hibernate.initialize(prdStatus);
Hibernate.initialize(prdStatus.getPrdState());
}
logger.debug("getting the applicable product Status Done and : " + prdStatusList);
return prdStatusList;
}
use of org.mifos.accounts.productdefinition.business.PrdStatusEntity in project head by mifos.
the class LoanPrdBusinessServiceIntegrationTest method testGetApplicablePrdStatus.
@Test
public void testGetApplicablePrdStatus() throws ServiceException {
List<PrdStatusEntity> prdStatusList = new LoanPrdBusinessService().getApplicablePrdStatus((short) 1);
StaticHibernateUtil.flushSession();
Assert.assertEquals(2, prdStatusList.size());
for (PrdStatusEntity prdStatus : prdStatusList) {
if (prdStatus.getPrdState().equals("1")) {
Assert.assertEquals("Active", prdStatus.getPrdState().getName());
}
if (prdStatus.getPrdState().equals("2")) {
Assert.assertEquals("InActive", prdStatus.getPrdState().getName());
}
}
}
use of org.mifos.accounts.productdefinition.business.PrdStatusEntity in project head by mifos.
the class SavingsPrdBusinessServiceIntegrationTest method testGetApplicablePrdStatus.
@Test
public void testGetApplicablePrdStatus() throws ServiceException {
List<PrdStatusEntity> prdStatusList = new SavingsPrdBusinessService().getApplicablePrdStatus((short) 1);
StaticHibernateUtil.flushSession();
Assert.assertEquals(2, prdStatusList.size());
for (PrdStatusEntity prdStatus : prdStatusList) {
if (prdStatus.getPrdState().equals("1")) {
Assert.assertEquals("Active", prdStatus.getPrdState().getName());
}
if (prdStatus.getPrdState().equals("2")) {
Assert.assertEquals("InActive", prdStatus.getPrdState().getName());
}
}
}
Aggregations