/** * This method checks business rules related to Budget Expenses functionality * * @param budgetDocument * @return */ protected boolean processBudgetExpenseBusinessRules(BudgetDocument budgetDocument) { boolean valid = true; MessageMap errorMap = GlobalVariables.getMessageMap(); List<BudgetPeriod> budgetPeriods = budgetDocument.getBudget().getBudgetPeriods(); int i = 0; int j = 0; for (BudgetPeriod budgetPeriod : budgetPeriods) { j = 0; List<BudgetLineItem> budgetLineItems = budgetPeriod.getBudgetLineItems(); for (BudgetLineItem budgetLineItem : budgetLineItems) { if (budgetLineItem != null && budgetLineItem.getStartDate() != null && budgetLineItem.getStartDate().before(budgetPeriod.getStartDate())) { errorMap.putError( "budgetCategoryTypes[" + budgetLineItem.getBudgetCategory().getBudgetCategoryTypeCode() + "].budgetPeriods[" + i + "].budgetLineItems[" + j + "].startDate", KeyConstants.ERROR_LINEITEM_STARTDATE_BEFORE_PERIOD_STARTDATE); valid = false; } if (budgetLineItem != null && budgetLineItem.getEndDate() != null && budgetLineItem.getEndDate().after(budgetPeriod.getEndDate())) { errorMap.putError( "budgetCategoryTypes[" + budgetLineItem.getBudgetCategory().getBudgetCategoryTypeCode() + "].budgetPeriods[" + i + "].budgetLineItems[" + j + "].endDate", KeyConstants.ERROR_LINEITEM_ENDDATE_AFTER_PERIOD_ENDDATE); valid = false; } if (budgetLineItem != null && budgetLineItem.getQuantity() != null && budgetLineItem.getQuantity().intValue() < 0) { errorMap.putError( "budgetPeriod[" + i + "].budgetLineItem[" + j + "].quantity", KeyConstants.ERROR_NEGATIVE_AMOUNT, "Quantity"); valid = false; } j++; } i++; } return valid; }