/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.gl.businessobject.lookup; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.gl.businessobject.TrialBalanceReport; import org.kuali.kfs.gl.service.TrialBalanceService; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.KFSKeyConstants; import org.kuali.kfs.sys.KFSPropertyConstants; import org.kuali.rice.kns.lookup.HtmlData; import org.kuali.rice.kns.lookup.HtmlData.AnchorHtmlData; import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; import org.kuali.rice.krad.bo.BusinessObject; import org.kuali.rice.krad.exception.ValidationException; import org.kuali.rice.krad.util.GlobalVariables; import org.kuali.rice.krad.util.KRADConstants; /** * An extension of KualiLookupableImpl to support balance lookups */ public class TrialBalanceLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl { private Map fieldValues; private TrialBalanceService trialBalanceService; private static final String TOTAL = "Total"; /** * ASR-1212: append the rice prefix for inquiry url * * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getInquiryUrl(org.kuali.rice.kns.bo.BusinessObject, * java.lang.String) */ @Override public HtmlData getInquiryUrl(BusinessObject bo, String propertyName) { HtmlData inquiryUrl = super.getInquiryUrl(bo, propertyName); if (StringUtils.isNotBlank(((AnchorHtmlData) inquiryUrl).getHref())) { ((AnchorHtmlData) inquiryUrl).setHref(KFSConstants.RICE_PATH_PREFIX + ((AnchorHtmlData) inquiryUrl).getHref()); } // setting up url should exclude total debit/credit entry if ((KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE.equals(propertyName)) && (TOTAL.equals(((TrialBalanceReport) bo).getChartOfAccountsCode()))) { ((AnchorHtmlData) inquiryUrl).setHref(""); } return inquiryUrl; } /** * ASR-1212: trial balance report lookup result * * @see org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl#getSearchResults(java.util.Map) */ @Override public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { setBackLocation(fieldValues.get(KRADConstants.BACK_LOCATION)); setDocFormKey(fieldValues.get(KRADConstants.DOC_FORM_KEY)); String selectedFiscalYear = fieldValues.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR); String chartCode = fieldValues.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE); String periodCode = fieldValues.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE); return trialBalanceService.findTrialBalance(selectedFiscalYear, chartCode, periodCode); } /** * Validate trial balance search params: university fiscal year and period code * * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#validateSearchParameters(java.util.Map) */ @Override public void validateSearchParameters(Map fieldValues) { super.validateSearchParameters(fieldValues); String selectedFiscalYear = (String) fieldValues.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR); if (StringUtils.isNotBlank(selectedFiscalYear)) { try { int year = Integer.parseInt(selectedFiscalYear); } catch (NumberFormatException e) { GlobalVariables.getMessageMap().putError("universityFiscalYear", KFSKeyConstants.ERROR_CUSTOM, new String[] { "Fiscal Year must be a four-digit number" }); throw new ValidationException("errors in search criteria"); } } String selectedPeriodCode = (String) fieldValues.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE); if (StringUtils.isNotBlank(selectedPeriodCode)) { try { int period = Integer.parseInt(selectedPeriodCode); if (period <=0 || period > 13) { GlobalVariables.getMessageMap().putError("universityFiscalPeriodCode", KFSKeyConstants.ERROR_CUSTOM, new String[] { "Fiscal Period Code must be a number in the range of 01 to 13" }); throw new ValidationException("errors in search criteria"); } } catch (NumberFormatException e) { GlobalVariables.getMessageMap().putError("universityFiscalPeriodCode", KFSKeyConstants.ERROR_CUSTOM, new String[] { "Fiscal Period Code must be a number in the range of 01 to 13" }); throw new ValidationException("errors in search criteria"); } } } /** * Gets the trialBalanceService attribute. * * @return Returns the trialBalanceService. */ public TrialBalanceService getTrialBalanceService() { return trialBalanceService; } /** * Sets the trialBalanceService attribute value. * * @param trialBalanceService The trialBalanceService to set. */ public void setTrialBalanceService(TrialBalanceService trialBalanceService) { this.trialBalanceService = trialBalanceService; } }