private RateType createAwardRateType(BudgetRate rate) { FandaRateType awardRateType = getBusinesssObjectService() .findBySinglePrimaryKey(FandaRateType.class, rate.getRateTypeCode()); RateType newRateType = new RateType(); newRateType.setRateClassCode(rate.getRateClassCode()); newRateType.setRateTypeCode(awardRateType.getFandaRateTypeCode().toString()); newRateType.setDescription(awardRateType.getDescription()); return newRateType; }
private void populateBudgetRateTypes(Budget budget, List<BudgetRate> budgetRates) { for (BudgetRate budgetRate : budgetRates) { if (RateClassType.OVERHEAD.getRateClassType().equals(budgetRate.getRateClassType())) { budgetRate.setBudget(budget); if (budgetRate.getNonEditableRateFlag()) { budgetRate.setRateType(createAwardRateType(budgetRate)); } } } }
/** * Validate budget rates. Applicable rates are mandatory * * @param budgetDocument * @return */ protected boolean processBudgetRatesBusinessRule(BudgetDocument budgetDocument) { boolean valid = true; final int APPLICABLE_RATE_LENGTH_EXCEEDED = 1; final int APPLICABLE_RATE_NEGATIVE = -1; MessageMap errorMap = GlobalVariables.getMessageMap(); int i = 0; for (BudgetRate budgetRate : budgetDocument.getBudget().getBudgetRates()) { String rateClassType = budgetRate.getRateClass().getRateClassTypeT().getDescription(); String errorPath = "budgetProposalRate[" + rateClassType + "][" + i + "]"; errorMap.addToErrorPath(errorPath); /* look for applicable rate */ if (budgetRate.isApplicableRateNull()) { valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_REQUIRED_APPLICABLE_RATE); } else if (!ScaleTwoDecimal.isNumeric(budgetRate.getApplicableRate().toString())) { valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_NOT_NUMERIC); } else { switch (verifyApplicableRate(budgetRate.getApplicableRate())) { case APPLICABLE_RATE_LENGTH_EXCEEDED: valid = false; errorMap.putError( "applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_LIMIT, Constants.APPLICABLE_RATE_LIMIT); break; case APPLICABLE_RATE_NEGATIVE: valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_NEGATIVE); break; } } errorMap.removeFromErrorPath(errorPath); i++; } i = 0; for (BudgetLaRate budgetLaRate : budgetDocument.getBudget().getBudgetLaRates()) { String rateClassType = ""; if (ObjectUtils.isNotNull(budgetLaRate.getRateClass()) && ObjectUtils.isNotNull(budgetLaRate.getRateClass().getRateClassTypeT())) { rateClassType = budgetLaRate.getRateClass().getRateClassTypeT().getDescription(); } String errorPath = "budgetRate[" + rateClassType + "][" + i + "]"; errorMap.addToErrorPath(errorPath); /* look for applicable rate */ if (budgetLaRate.isApplicableRateNull()) { valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_REQUIRED_APPLICABLE_RATE); } else if (!ScaleTwoDecimal.isNumeric(budgetLaRate.getApplicableRate().toString())) { valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_NOT_NUMERIC); } else { switch (verifyApplicableRate(budgetLaRate.getApplicableRate())) { case APPLICABLE_RATE_LENGTH_EXCEEDED: valid = false; errorMap.putError( "applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_LIMIT, Constants.APPLICABLE_RATE_LIMIT); break; case APPLICABLE_RATE_NEGATIVE: valid = false; errorMap.putError("applicableRate", KeyConstants.ERROR_APPLICABLE_RATE_NEGATIVE); break; } } errorMap.removeFromErrorPath(errorPath); i++; } return valid; }