001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.endow.businessobject.inquiry; 017 018 import java.math.BigDecimal; 019 import java.util.HashMap; 020 import java.util.Map; 021 import java.util.Properties; 022 023 import org.kuali.kfs.module.endow.EndowPropertyConstants; 024 import org.kuali.kfs.module.endow.businessobject.KEMIDCurrentBalanceDetail; 025 import org.kuali.kfs.module.endow.businessobject.KEMIDCurrentReportingGroup; 026 import org.kuali.kfs.sys.KFSConstants; 027 import org.kuali.kfs.sys.businessobject.inquiry.KfsInquirableImpl; 028 import org.kuali.kfs.sys.context.SpringContext; 029 import org.kuali.rice.kns.bo.BusinessObject; 030 import org.kuali.rice.kns.lookup.HtmlData; 031 import org.kuali.rice.kns.lookup.HtmlData.AnchorHtmlData; 032 import org.kuali.rice.kns.service.DateTimeService; 033 import org.kuali.rice.kns.service.KualiConfigurationService; 034 import org.kuali.rice.kns.util.KNSConstants; 035 import org.kuali.rice.kns.util.ObjectUtils; 036 import org.kuali.rice.kns.util.UrlFactory; 037 038 public class KEMIDCurrentBalanceDetailInquirable extends KfsInquirableImpl { 039 040 041 /** 042 * @see org.kuali.kfs.sys.businessobject.inquiry.KfsInquirableImpl#getInquiryUrl(org.kuali.rice.kns.bo.BusinessObject, 043 * java.lang.String, boolean) 044 */ 045 @Override 046 public HtmlData getInquiryUrl(BusinessObject businessObject, String attributeName, boolean forceInquiry) { 047 KEMIDCurrentBalanceDetail currentBalanceDetail = (KEMIDCurrentBalanceDetail) businessObject; 048 boolean isIncome = EndowPropertyConstants.KEMID_CRNT_BAL_DET_INC_AT_MARKET.equals(attributeName); 049 boolean isIncomeNotNullOrZero = ObjectUtils.isNotNull(currentBalanceDetail.getIncomeAtMarket()) && (currentBalanceDetail.getIncomeAtMarket().compareTo(BigDecimal.ZERO) != 0); 050 boolean isPrincipal = EndowPropertyConstants.KEMID_CRNT_BAL_DET_PRIN_AT_MARKET.equals(attributeName); 051 boolean isPrincipalNotNullOrZero = ObjectUtils.isNotNull(currentBalanceDetail.getPrincipalAtMarket()) && (currentBalanceDetail.getPrincipalAtMarket().compareTo(BigDecimal.ZERO) != 0); 052 053 if (!currentBalanceDetail.isNoDrillDownOnMarketVal() && ((isIncome && isIncomeNotNullOrZero) || (isPrincipal && isPrincipalNotNullOrZero))) { 054 055 Properties params = new Properties(); 056 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, KFSConstants.SEARCH_METHOD); 057 params.put(KFSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, KEMIDCurrentReportingGroup.class.getName()); 058 params.put(KNSConstants.DOC_FORM_KEY, "88888888"); 059 params.put(KFSConstants.HIDE_LOOKUP_RETURN_LINK, "true"); 060 params.put(KFSConstants.BACK_LOCATION, SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KNSConstants.APPLICATION_URL_KEY) + "/" + KFSConstants.MAPPING_PORTAL + ".do"); 061 params.put(KFSConstants.LOOKUP_READ_ONLY_FIELDS, EndowPropertyConstants.KEMID + "," + EndowPropertyConstants.CURRENT_BAL_PURPOSE_CD + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_CD + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND + "," + EndowPropertyConstants.CURRENT_BAL_KEMID_BALANCE_DATE + "," + EndowPropertyConstants.CURRENT_BAL_CLOSED_INDICATOR + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_KEMID_SHORT_TTL + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_PURPOSE_DESC + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_DESC + "," + EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND_DESC); 062 params.put(EndowPropertyConstants.KEMID, UrlFactory.encode(String.valueOf(currentBalanceDetail.getKemid()))); 063 params.put(EndowPropertyConstants.CURRENT_BAL_PURPOSE_CD, UrlFactory.encode(currentBalanceDetail.getKemidObj().getPurposeCode())); 064 DateTimeService dateTimeService = SpringContext.getBean(DateTimeService.class); 065 params.put(EndowPropertyConstants.CURRENT_TAX_LOT_BALANCE_DATE, dateTimeService.toDateString(currentBalanceDetail.getBalanceDate())); 066 params.put(EndowPropertyConstants.CURRENT_BAL_CLOSED_INDICATOR, currentBalanceDetail.getKemidObj().isClose() ? "Yes" : "No"); 067 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND, currentBalanceDetail.getIncomePrincipalIndicator()); 068 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_CD, currentBalanceDetail.getReportingGroupCode()); 069 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_KEMID_SHORT_TTL, currentBalanceDetail.getKemidObj().getShortTitle()); 070 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_PURPOSE_DESC, currentBalanceDetail.getKemidObj().getPurpose().getName()); 071 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_DESC, currentBalanceDetail.getReportingGroup().getName()); 072 params.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND_DESC, currentBalanceDetail.getIpIndicator().getName()); 073 String url = UrlFactory.parameterizeUrl(KNSConstants.LOOKUP_ACTION, params); 074 075 Map<String, String> fieldList = new HashMap<String, String>(); 076 fieldList.put(EndowPropertyConstants.KEMID, currentBalanceDetail.getKemid().toString()); 077 fieldList.put(EndowPropertyConstants.CURRENT_BAL_PURPOSE_CD, currentBalanceDetail.getKemidObj().getPurposeCode()); 078 fieldList.put(EndowPropertyConstants.CURRENT_TAX_LOT_BALANCE_DATE, dateTimeService.toDateString(currentBalanceDetail.getBalanceDate())); 079 fieldList.put(EndowPropertyConstants.CURRENT_BAL_CLOSED_INDICATOR, currentBalanceDetail.getKemidObj().isClose() ? "Yes" : "No"); 080 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND, currentBalanceDetail.getIncomePrincipalIndicator()); 081 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_CD, currentBalanceDetail.getReportingGroupCode()); 082 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_KEMID_SHORT_TTL, currentBalanceDetail.getKemidObj().getShortTitle()); 083 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_PURPOSE_DESC, currentBalanceDetail.getKemidObj().getPurpose().getName()); 084 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_DESC, currentBalanceDetail.getReportingGroup().getName()); 085 fieldList.put(EndowPropertyConstants.KEMID_CRNT_REP_GRP_IP_IND_DESC, currentBalanceDetail.getIpIndicator().getName()); 086 087 return getHyperLink(KEMIDCurrentReportingGroup.class, fieldList, url); 088 } 089 else 090 return super.getInquiryUrl(businessObject, attributeName, forceInquiry); 091 } 092 }