/* * 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.vnd.businessobject.lookup; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.vnd.VendorConstants; import org.kuali.kfs.vnd.VendorPropertyConstants; import org.kuali.kfs.vnd.batch.service.VendorExcludeService; import org.kuali.kfs.vnd.businessobject.DebarredVendorMatch; import org.kuali.kfs.vnd.businessobject.VendorDetail; import org.kuali.kfs.vnd.document.service.VendorService; import org.kuali.rice.core.api.config.property.ConfigurationService; 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.util.KRADConstants; import org.kuali.rice.krad.util.UrlFactory; public class VendorExclusionLookupableHelperServiceImpl extends KualiLookupableHelperServiceImpl{ VendorExcludeService vendorExcludeService; VendorService vendorService; ConfigurationService kualiConfigurationService; private String confirmStatusFieldValue=""; /** * Custom action urls for Asset. * * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getCustomActionUrls(org.kuali.rice.kns.bo.BusinessObject, * List pkNames) */ @Override public List<HtmlData> getCustomActionUrls(BusinessObject bo, List pkNames) { List<HtmlData> anchorHtmlDataList = super.getCustomActionUrls(bo, pkNames); anchorHtmlDataList.add(getInquiryUrl(bo)); anchorHtmlDataList.add(getEditUrl(bo)); anchorHtmlDataList.add(getConfirmUrl(bo)); anchorHtmlDataList.add(getDenyUrl(bo)); return anchorHtmlDataList; } protected String getVendorInquiryUrl(DebarredVendorMatch match) { Properties properties = new Properties(); properties.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, KRADConstants.START_METHOD); properties.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, VendorDetail.class.getName()); properties.put("vendorDetailAssignedIdentifier", new Integer(match.getVendorDetailAssignedIdentifier()).toString()); properties.put("vendorHeaderGeneratedIdentifier", new Integer(match.getVendorHeaderGeneratedIdentifier()).toString()); return UrlFactory.parameterizeUrl(KRADConstants.INQUIRY_ACTION, properties); } protected HtmlData getInquiryUrl(BusinessObject bo){ Properties properties = new Properties(); properties.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, KRADConstants.START_METHOD); properties.put("debarredVendorId", new Integer(((DebarredVendorMatch)bo).getDebarredVendorId()).toString()); properties.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, DebarredVendorMatch.class.getName()); String href = UrlFactory.parameterizeUrl(KRADConstants.INQUIRY_ACTION, properties); AnchorHtmlData anchorHtmlData = new AnchorHtmlData(href, KRADConstants.START_METHOD, "Inquiry"); anchorHtmlData.setTarget(KFSConstants.NEW_WINDOW_URL_TARGET); return anchorHtmlData; } protected HtmlData getEditUrl(BusinessObject bo){ String label = "edit"; Integer vendorDetailAssignedIdentifier = ((DebarredVendorMatch)bo).getVendorDetailAssignedIdentifier(); Integer vendorHeaderGeneratedIdentifier = ((DebarredVendorMatch)bo).getVendorHeaderGeneratedIdentifier(); VendorDetail vendor = vendorService.getVendorDetail(vendorHeaderGeneratedIdentifier, vendorDetailAssignedIdentifier); VendorDetail parent; if (!vendor.isVendorParentIndicator()) { label = "edit parent"; parent = vendorService.getParentVendor(vendorHeaderGeneratedIdentifier); vendorDetailAssignedIdentifier = parent.getVendorDetailAssignedIdentifier(); vendorHeaderGeneratedIdentifier = parent.getVendorHeaderGeneratedIdentifier(); } Properties properties = new Properties(); properties.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, KRADConstants.MAINTENANCE_EDIT_METHOD_TO_CALL); properties.put(VendorPropertyConstants.VENDOR_HEADER_GENERATED_ID, vendorHeaderGeneratedIdentifier.toString()); properties.put(VendorPropertyConstants.VENDOR_DETAIL_ASSIGNED_ID, vendorDetailAssignedIdentifier.toString()); properties.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, VendorDetail.class.getName()); String href = UrlFactory.parameterizeUrl(KRADConstants.MAINTENANCE_ACTION, properties); AnchorHtmlData anchorHtmlData = new AnchorHtmlData(href, KRADConstants.MAINTENANCE_EDIT_METHOD_TO_CALL, label); anchorHtmlData.setTarget(KFSConstants.NEW_WINDOW_URL_TARGET); return anchorHtmlData; } protected HtmlData getConfirmUrl(BusinessObject bo){ Properties properties = new Properties(); properties.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, "confirmDebarredVendor"); properties.put(DebarredVendorMatch.CONFIRM_STATUS, confirmStatusFieldValue); properties.put(DebarredVendorMatch.DEBARRED_VENDOR_ID, String.valueOf(((DebarredVendorMatch)bo).getDebarredVendorId())); properties.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, DebarredVendorMatch.class.getName()); properties.put("returnLocation", kualiConfigurationService.getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY)+ "/kr/lookup.do"); properties.put(DebarredVendorMatch.EXCLUSION_STATUS, ((DebarredVendorMatch)bo).getVendorExclusionStatus()); String href = UrlFactory.parameterizeUrl("vendorExclusion.do", properties); href = kualiConfigurationService.getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY)+"/"+ href; AnchorHtmlData anchorHtmlData = new AnchorHtmlData(href, KRADConstants.START_METHOD, "confirm"); return anchorHtmlData; } protected HtmlData getDenyUrl(BusinessObject bo){ Properties properties = new Properties(); properties.put(KRADConstants.DISPATCH_REQUEST_PARAMETER, "denyDebarredVendor"); properties.put(DebarredVendorMatch.CONFIRM_STATUS, confirmStatusFieldValue); properties.put(DebarredVendorMatch.DEBARRED_VENDOR_ID, String.valueOf(((DebarredVendorMatch)bo).getDebarredVendorId())); properties.put(KRADConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, DebarredVendorMatch.class.getName()); properties.put("returnLocation", kualiConfigurationService.getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY)+ "/kr/lookup.do"); properties.put("formKey", "88888888"); String href = UrlFactory.parameterizeUrl("vendorExclusion.do", properties); href = kualiConfigurationService.getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY)+"/"+ href; AnchorHtmlData anchorHtmlData = new AnchorHtmlData(href, KRADConstants.START_METHOD, "deny"); return anchorHtmlData; } @Override public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { return getDebarredVendorSearchResults(fieldValues); } @Override public List<? extends BusinessObject> getSearchResultsUnbounded(Map<String, String> fieldValues) { return getDebarredVendorSearchResults(fieldValues); } protected List<? extends BusinessObject> getDebarredVendorSearchResults(Map<String, String> fieldValues) { List<DebarredVendorMatch> vendorResultList = new ArrayList<DebarredVendorMatch>(); String exclusionStatus = fieldValues.get(DebarredVendorMatch.EXCLUSION_STATUS); confirmStatusFieldValue = fieldValues.get(DebarredVendorMatch.CONFIRM_STATUS); fieldValues.remove(DebarredVendorMatch.EXCLUSION_STATUS); List<DebarredVendorMatch> searchResults = (List<DebarredVendorMatch>) super.getSearchResults(fieldValues); boolean status = exclusionStatus.equals(VendorConstants.EXCLUDED_MATCHED_VENDOR_STATUS) ? true : false; boolean debarred; for (DebarredVendorMatch match : searchResults) { debarred = match.getVendorHeader().getVendorDebarredIndicator() == null ? false : match.getVendorHeader().getVendorDebarredIndicator(); if ((status && debarred) || (!status && !debarred)) { match.setConcatenatedId("<a href=\"" + getVendorInquiryUrl(match) + "\">" + match.getVendorDetail().getVendorNumber() + "</a> / " + "<a href=\"http://www.epls.gov/epls/search.do?ssn=true&ssn_name=" + match.getName() + "&ssn_tin=" + match.getVendorHeader().getVendorTaxNumber() + "\">" + match.getDebarredVendorId() + "</a>"); match.setName(match.getVendorDetail().getVendorName() + " / " + match.getName()); match.setCity(match.getVendorAddress().getVendorCityName() + " / " + match.getCity()); match.setState(match.getVendorAddress().getVendorStateCode() == null ? match.getVendorAddress().getVendorCountryCode() : match.getVendorAddress().getVendorStateCode() + " / " + match.getState()); match.setVendorExclusionStatus(exclusionStatus); vendorResultList.add(match); } } return vendorResultList; } /** * Gets the vendorExcludeService attribute. * @return Returns the vendorExcludeService. */ public VendorExcludeService getVendorExcludeService() { return vendorExcludeService; } /** * Sets the vendorExcludeService attribute value. * @param vendorExcludeService The vendorExcludeService to set. */ public void setVendorExcludeService(VendorExcludeService vendorExcludeService) { this.vendorExcludeService = vendorExcludeService; } /** * Gets the vendorService attribute. * @return Returns the vendorService. */ public VendorService getVendorService() { return vendorService; } /** * Sets the vendorService attribute value. * @param vendorService The vendorService to set. */ public void setVendorService(VendorService vendorService) { this.vendorService = vendorService; } /** * Gets the kualiConfigurationService attribute. * @return Returns the kualiConfigurationService. */ @Override public ConfigurationService getKualiConfigurationService() { return kualiConfigurationService; } /** * Sets the kualiConfigurationService attribute value. * @param kualiConfigurationService The kualiConfigurationService to set. */ public void setKualiConfigurationService(ConfigurationService kualiConfigurationService) { this.kualiConfigurationService = kualiConfigurationService; } }