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.pdp.businessobject.lookup; 017 018 import java.util.ArrayList; 019 import java.util.Collections; 020 import java.util.Comparator; 021 import java.util.Iterator; 022 import java.util.List; 023 import java.util.Map; 024 import java.util.Properties; 025 026 import org.apache.commons.lang.StringUtils; 027 import org.kuali.kfs.pdp.PdpConstants; 028 import org.kuali.kfs.pdp.PdpKeyConstants; 029 import org.kuali.kfs.pdp.PdpParameterConstants; 030 import org.kuali.kfs.pdp.PdpPropertyConstants; 031 import org.kuali.kfs.pdp.businessobject.PaymentDetail; 032 import org.kuali.kfs.pdp.businessobject.PaymentGroupHistory; 033 import org.kuali.kfs.pdp.service.PdpAuthorizationService; 034 import org.kuali.kfs.sys.KFSConstants; 035 import org.kuali.rice.kim.bo.Person; 036 import org.kuali.rice.kns.bo.BusinessObject; 037 import org.kuali.rice.kns.exception.ValidationException; 038 import org.kuali.rice.kns.lookup.HtmlData; 039 import org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl; 040 import org.kuali.rice.kns.lookup.HtmlData.AnchorHtmlData; 041 import org.kuali.rice.kns.service.KualiConfigurationService; 042 import org.kuali.rice.kns.util.GlobalVariables; 043 import org.kuali.rice.kns.util.KNSConstants; 044 import org.kuali.rice.kns.util.UrlFactory; 045 import org.kuali.rice.kns.web.format.BooleanFormatter; 046 047 public class PaymentDetailLookupableHelperService extends KualiLookupableHelperServiceImpl { 048 private KualiConfigurationService kualiConfigurationService; 049 private PdpAuthorizationService pdpAuthorizationService; 050 051 /** 052 * @see org.kuali.rice.kns.lookup.KualiLookupableHelperServiceImpl#getSearchResults(java.util.Map) 053 */ 054 @Override 055 public List<? extends BusinessObject> getSearchResults(Map<String, String> fieldValues) { 056 Map parameters = super.getParameters(); 057 String errorList; 058 059 if (parameters.containsKey(PdpParameterConstants.ACTION_SUCCESSFUL_PARAM)) { 060 String[] actionSuccessRequestParm = (String[]) parameters.get(PdpParameterConstants.ACTION_SUCCESSFUL_PARAM); 061 Boolean actionSuccess = (Boolean) (new BooleanFormatter()).convertFromPresentationFormat(actionSuccessRequestParm[0]); 062 063 if (actionSuccess != null) { 064 065 if (!actionSuccess) { 066 067 // if the action performed on payment was not successful we get the error message list and add them to 068 // GlobalVariables errorMap 069 if (parameters.containsKey(PdpParameterConstants.ERROR_KEY_LIST_PARAM)) { 070 String[] errorListParam = (String[]) parameters.get(PdpParameterConstants.ERROR_KEY_LIST_PARAM); 071 errorList = errorListParam[0]; 072 if (StringUtils.isNotEmpty(errorList)) { 073 String[] errorMsgs = StringUtils.split(errorList, PdpParameterConstants.ERROR_KEY_LIST_SEPARATOR); 074 for (String error : errorMsgs) { 075 if (StringUtils.isNotEmpty(error)) { 076 GlobalVariables.getMessageMap().putError(KNSConstants.GLOBAL_ERRORS, error); 077 } 078 } 079 } 080 } 081 } 082 else { 083 if (parameters.containsKey(PdpParameterConstants.MESSAGE_PARAM)) { 084 String[] messageRequestParm = (String[]) parameters.get(PdpParameterConstants.MESSAGE_PARAM); 085 String message = messageRequestParm[0]; 086 GlobalVariables.getMessageList().add(message); 087 } 088 } 089 } 090 } 091 092 List paymentDetailsFromPaymentGroupHistoryList = new ArrayList(); 093 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_NUMBER)) { 094 String disbursementNumberValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_NUMBER); 095 if (!StringUtils.isEmpty(disbursementNumberValue)) { 096 List resultsForPaymentGroupHistory = searchForPaymentGroupHistory(fieldValues); 097 paymentDetailsFromPaymentGroupHistoryList = getPaymentDetailsFromPaymentGroupHistoryList(resultsForPaymentGroupHistory); 098 } 099 } 100 101 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE)) { 102 String paymentStatusCodeValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE); 103 if (!StringUtils.isEmpty(paymentStatusCodeValue) && paymentStatusCodeValue.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_ALL)) { 104 paymentStatusCodeValue = PdpConstants.PaymentStatusCodes.HELD_TAX_ALL_FOR_SEARCH; 105 fieldValues.put(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE, paymentStatusCodeValue); 106 } 107 } 108 109 List searchResults = super.getSearchResults(fieldValues); 110 111 searchResults.addAll(paymentDetailsFromPaymentGroupHistoryList); 112 113 sortResultListByPayeeName(searchResults); 114 115 return searchResults; 116 } 117 118 /** 119 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#validateSearchParameters(java.util.Map) 120 */ 121 @Override 122 public void validateSearchParameters(Map fieldValues) { 123 super.validateSearchParameters(fieldValues); 124 125 // get field values 126 String custPaymentDocNbrValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CUSTOMER_DOC_NUMBER); 127 String invoiceNbrValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_INVOICE_NUMBER); 128 String purchaseOrderNbrValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PURCHASE_ORDER_NUMBER); 129 String processIdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PROCESS_ID); 130 String paymentIdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_ID); 131 String payeeNameValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_NAME); 132 String payeeIdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID); 133 String payeeIdTypeCdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID_TYPE_CODE); 134 String disbursementTypeCodeValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_TYPE_CODE); 135 String paymentStatusCodeValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE); 136 String netPaymentAmountValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_NET_AMOUNT); 137 String disbursementDateValueLower = (String) fieldValues.get(KNSConstants.LOOKUP_RANGE_LOWER_BOUND_PROPERTY_PREFIX + PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_DATE); 138 String disbursementDateValueUpper = (String) fieldValues.get(KNSConstants.LOOKUP_DEFAULT_RANGE_SEARCH_UPPER_BOUND_LABEL + PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_DATE); 139 String paymentDateValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DATE); 140 String disbursementNbrValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_NUMBER); 141 String chartCodeValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CHART_CODE); 142 String orgCodeValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_UNIT_CODE); 143 String subUnitCodeValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_SUBUNIT_CODE); 144 String requisitionNbrValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_REQUISITION_NUMBER); 145 String customerInstitutionNumberValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CUSTOMER_INSTITUTION_NUMBER); 146 String pymtAttachmentValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_ATTACHMENT); 147 String processImmediateValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CUSTOMER_INSTITUTION_NUMBER); 148 String pymtSpecialHandlingValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_SPECIAL_HANDLING); 149 String batchIdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_GROUP_BATCH_ID); 150 String paymentGroupIdValue = (String) fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DETAIL_PAYMENT_GROUP_ID); 151 152 if ((StringUtils.isEmpty(custPaymentDocNbrValue)) && (StringUtils.isEmpty(invoiceNbrValue)) && (StringUtils.isEmpty(purchaseOrderNbrValue)) && (StringUtils.isEmpty(processIdValue)) && (StringUtils.isEmpty(paymentIdValue)) && (StringUtils.isEmpty(payeeNameValue)) && (StringUtils.isEmpty(payeeIdValue)) && (StringUtils.isEmpty(payeeIdTypeCdValue)) && (StringUtils.isEmpty(disbursementTypeCodeValue)) && (StringUtils.isEmpty(paymentStatusCodeValue)) && (StringUtils.isEmpty(netPaymentAmountValue)) && 153 (StringUtils.isEmpty(disbursementDateValueLower)) && (StringUtils.isEmpty(disbursementDateValueUpper)) && (StringUtils.isEmpty(paymentDateValue)) && (StringUtils.isEmpty(disbursementNbrValue)) && (StringUtils.isEmpty(chartCodeValue)) && (StringUtils.isEmpty(orgCodeValue)) && (StringUtils.isEmpty(subUnitCodeValue)) && (StringUtils.isEmpty(requisitionNbrValue)) && (StringUtils.isEmpty(customerInstitutionNumberValue)) && (StringUtils.isEmpty(pymtAttachmentValue)) && (StringUtils.isEmpty(processImmediateValue)) 154 && (StringUtils.isEmpty(pymtSpecialHandlingValue)) && (StringUtils.isEmpty(batchIdValue)) && (StringUtils.isEmpty(paymentGroupIdValue))) { 155 156 GlobalVariables.getMessageMap().putError(KFSConstants.DOCUMENT_HEADER_ERRORS, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_DETAIL_CRITERIA_NOT_ENTERED); 157 } 158 else { 159 if ((StringUtils.isNotEmpty(payeeIdValue)) && (StringUtils.isEmpty(payeeIdTypeCdValue))) { 160 GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID_TYPE_CODE, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_DETAIL_PAYEE_ID_TYPE_CODE_NULL_WITH_PAYEE_ID); 161 } 162 if ((StringUtils.isEmpty(payeeIdValue)) && (StringUtils.isNotEmpty(payeeIdTypeCdValue))) { 163 GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_DETAIL_PAYEE_ID_NULL_WITH_PAYEE_ID_TYPE_CODE); 164 } 165 } 166 167 if (GlobalVariables.getMessageMap().hasErrors()) { 168 throw new ValidationException("errors in search criteria"); 169 } 170 171 } 172 173 /** 174 * @see org.kuali.rice.kns.lookup.AbstractLookupableHelperServiceImpl#getCustomActionUrls(org.kuali.rice.kns.bo.BusinessObject, 175 * java.util.List) 176 */ 177 @Override 178 public List<HtmlData> getCustomActionUrls(BusinessObject businessObject, List pkNames) { 179 if (businessObject instanceof PaymentDetail) { 180 Person person = GlobalVariables.getUserSession().getPerson(); 181 PaymentDetail paymentDetail = (PaymentDetail) businessObject; 182 Integer paymentDetailId = paymentDetail.getId().intValue(); 183 String paymentDetailStatus = paymentDetail.getPaymentGroup().getPaymentStatusCode(); 184 List<HtmlData> anchorHtmlDataList = new ArrayList<HtmlData>(); 185 String linkText = KFSConstants.EMPTY_STRING; 186 String url = KFSConstants.EMPTY_STRING; 187 String basePath = kualiConfigurationService.getPropertyString(KFSConstants.APPLICATION_URL_KEY) + "/" + PdpConstants.Actions.PAYMENT_DETAIL_ACTION; 188 189 boolean showCancel = paymentDetailStatus != null && ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.OPEN) && pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId())) || (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_CD) && pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId())) || ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_EMPLOYEE_CD) || paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_NRA_CD) || paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_NRA_EMPL_CD)) && pdpAuthorizationService.hasRemovePaymentTaxHoldPermission(person.getPrincipalId()))); 190 191 if (showCancel) { 192 193 Properties params = new Properties(); 194 195 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_CANCEL_ACTION); 196 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 197 198 url = UrlFactory.parameterizeUrl(basePath, params); 199 200 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.CANCEL_PAYMENT); 201 202 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_CANCEL_ACTION, linkText); 203 anchorHtmlDataList.add(anchorHtmlData); 204 } 205 206 boolean showHold = paymentDetailStatus != null && (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.OPEN) && pdpAuthorizationService.hasHoldPaymentPermission(person.getPrincipalId())); 207 if (showHold) { 208 209 Properties params = new Properties(); 210 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_HOLD_ACTION); 211 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 212 url = UrlFactory.parameterizeUrl(basePath, params); 213 214 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.HOLD_PAYMENT); 215 216 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_HOLD_ACTION, linkText); 217 anchorHtmlDataList.add(anchorHtmlData); 218 219 } 220 221 boolean showRemoveImmediatePrint = paymentDetailStatus != null && (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.OPEN) && pdpAuthorizationService.hasSetAsImmediatePayPermission(person.getPrincipalId()) && paymentDetail.getPaymentGroup().getProcessImmediate()); 222 223 if (showRemoveImmediatePrint) { 224 225 Properties params = new Properties(); 226 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_REMOVE_IMMEDIATE_PRINT_ACTION); 227 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 228 url = UrlFactory.parameterizeUrl(basePath, params); 229 230 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.REMOVE_IMMEDIATE_PRINT); 231 232 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_REMOVE_IMMEDIATE_PRINT_ACTION, linkText); 233 anchorHtmlDataList.add(anchorHtmlData); 234 235 } 236 237 boolean showSetImmediatePrint = paymentDetailStatus != null && (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.OPEN) && pdpAuthorizationService.hasSetAsImmediatePayPermission(person.getPrincipalId()) && !paymentDetail.getPaymentGroup().getProcessImmediate()); 238 239 if (showSetImmediatePrint) { 240 241 Properties params = new Properties(); 242 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_SET_IMMEDIATE_PRINT_ACTION); 243 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 244 url = UrlFactory.parameterizeUrl(basePath, params); 245 246 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.SET_IMMEDIATE_PRINT); 247 248 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_SET_IMMEDIATE_PRINT_ACTION, linkText); 249 anchorHtmlDataList.add(anchorHtmlData); 250 251 } 252 253 boolean showRemoveHold = paymentDetailStatus != null && ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_CD) && pdpAuthorizationService.hasHoldPaymentPermission(person.getPrincipalId())) || ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_EMPLOYEE_CD) || paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.HELD_TAX_NRA_EMPL_CD)) && pdpAuthorizationService.hasRemovePaymentTaxHoldPermission(person.getPrincipalId()))); 254 255 if (showRemoveHold) { 256 257 Properties params = new Properties(); 258 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_REMOVE_HOLD_ACTION); 259 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 260 url = UrlFactory.parameterizeUrl(basePath, params); 261 262 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.REMOVE_PAYMENT_HOLD); 263 264 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_REMOVE_HOLD_ACTION, linkText); 265 anchorHtmlDataList.add(anchorHtmlData); 266 267 } 268 269 boolean showDisbursementCancel = paymentDetailStatus != null && ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.PENDING_ACH) && (pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId()))) || (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.EXTRACTED) && pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId()) && paymentDetail.getPaymentGroup().getDisbursementDate() != null && paymentDetail.isDisbursementActionAllowed())); 270 271 if (showDisbursementCancel) { 272 273 Properties params = new Properties(); 274 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_DISBURSEMENT_CANCEL_ACTION); 275 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 276 url = UrlFactory.parameterizeUrl(basePath, params); 277 278 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.CANCEL_DISBURSEMENT); 279 280 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_DISBURSEMENT_CANCEL_ACTION, linkText); 281 anchorHtmlDataList.add(anchorHtmlData); 282 283 } 284 285 boolean showReissueCancel = paymentDetailStatus != null && ((paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.PENDING_ACH) && (pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId()))) || (paymentDetailStatus.equalsIgnoreCase(PdpConstants.PaymentStatusCodes.EXTRACTED) && pdpAuthorizationService.hasCancelPaymentPermission(person.getPrincipalId()) && paymentDetail.getPaymentGroup().getDisbursementDate() != null && paymentDetail.isDisbursementActionAllowed())); 286 287 if (showReissueCancel) { 288 289 Properties params = new Properties(); 290 params.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, PdpConstants.ActionMethods.CONFIRM_REISSUE_CANCEL_ACTION); 291 params.put(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM, UrlFactory.encode(String.valueOf(paymentDetailId))); 292 url = UrlFactory.parameterizeUrl(basePath, params); 293 294 linkText = kualiConfigurationService.getPropertyString(PdpKeyConstants.PaymentDetail.LinkText.REISSUE_CANCEL); 295 296 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(url, PdpConstants.ActionMethods.CONFIRM_REISSUE_CANCEL_ACTION, linkText); 297 anchorHtmlDataList.add(anchorHtmlData); 298 299 } 300 301 if (anchorHtmlDataList.isEmpty()) { 302 AnchorHtmlData anchorHtmlData = new AnchorHtmlData(" ", "", ""); 303 anchorHtmlDataList.add(anchorHtmlData); 304 } 305 306 return anchorHtmlDataList; 307 } 308 return super.getEmptyActionUrls(); 309 } 310 311 /** 312 * This method builds the search fields for PaymentGroupHistory. 313 * 314 * @param fieldValues entry fields from PaymentDetail 315 * @return the fields map 316 */ 317 private Map<String, String> buildSearchFieldsMapForPaymentGroupHistory(Map<String, String> fieldValues) { 318 Map resultMap = new Properties(); 319 String fieldValue = KFSConstants.EMPTY_STRING; 320 321 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_CUSTOMER_INSTITUTION_NUMBER)) { 322 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CUSTOMER_INSTITUTION_NUMBER); 323 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_CUSTOMER_INSTITUTION_NUMBER, fieldValue); 324 } 325 326 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_NAME)) { 327 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_NAME); 328 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_PAYEE_NAME, fieldValue); 329 } 330 331 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID)) { 332 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PAYEE_ID); 333 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_PAYEE_ID, fieldValue); 334 } 335 336 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_ATTACHMENT)) { 337 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_ATTACHMENT); 338 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_PAYMENT_ATTACHMENT, fieldValue); 339 } 340 341 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_SPECIAL_HANDLING)) { 342 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_SPECIAL_HANDLING); 343 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_PAYMENT_SPECIAL_HANDLING, fieldValue); 344 } 345 346 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_PROCESS_IMEDIATE)) { 347 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PROCESS_IMEDIATE); 348 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_PROCESS_IMMEDIATE, fieldValue); 349 } 350 351 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_NUMBER)) { 352 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_NUMBER); 353 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_DISBURSEMENT_NUMBER, fieldValue); 354 } 355 356 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_PROCESS_ID)) { 357 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_PROCESS_ID); 358 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_PAYMENT_PROCESS_ID, fieldValue); 359 } 360 361 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_NET_AMOUNT)) { 362 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_NET_AMOUNT); 363 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_PAYMENT_DETAILS_NET_AMOUNT, fieldValue); 364 } 365 366 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_DATE)) { 367 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_DATE); 368 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_DISBURSE_DATE, fieldValue); 369 } 370 371 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_DATE)) { 372 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DATE); 373 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_PAYMENT_DATE, fieldValue); 374 } 375 376 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE)) { 377 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_STATUS_CODE); 378 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORIGIN_PAYMENT_STATUS_CODE, fieldValue); 379 } 380 381 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_TYPE_CODE)) { 382 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_DISBURSEMENT_TYPE_CODE); 383 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_DISBURSEMENT_TYPE_CODE, fieldValue); 384 } 385 386 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_CHART_CODE)) { 387 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_CHART_CODE); 388 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_CHART_CODE, fieldValue); 389 } 390 391 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_UNIT_CODE)) { 392 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_UNIT_CODE); 393 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_ORG_CODE, fieldValue); 394 } 395 396 if (fieldValues.containsKey(PdpPropertyConstants.PaymentDetail.PAYMENT_SUBUNIT_CODE)) { 397 fieldValue = fieldValues.get(PdpPropertyConstants.PaymentDetail.PAYMENT_SUBUNIT_CODE); 398 resultMap.put(PdpPropertyConstants.PaymentGroupHistory.PAYMENT_GROUP_SUB_UNIT_CODE, fieldValue); 399 } 400 401 return resultMap; 402 403 } 404 405 /** 406 * This method searches for PaymentGroupHistory 407 * 408 * @param fieldValues search field values 409 * @return the list of PaymentGroupHistory 410 */ 411 private List searchForPaymentGroupHistory(Map<String, String> fieldValues) { 412 List resultsForPaymentGroupHistory = new ArrayList(); 413 Map fieldsForPaymentGroupHistory = buildSearchFieldsMapForPaymentGroupHistory(fieldValues); 414 resultsForPaymentGroupHistory = (List) getLookupService().findCollectionBySearchHelper(PaymentGroupHistory.class, fieldsForPaymentGroupHistory, false); 415 return resultsForPaymentGroupHistory; 416 } 417 418 /** 419 * This method gets the PaymentDetails for the given list og PaymentGroupHistory 420 * 421 * @param resultsForPaymentGroupHistory the list of PaymentGoupHistory objects 422 * @return the list of PaymentDetails 423 */ 424 private List getPaymentDetailsFromPaymentGroupHistoryList(List resultsForPaymentGroupHistory) { 425 List finalResults = new ArrayList(); 426 for (Iterator iter = resultsForPaymentGroupHistory.iterator(); iter.hasNext();) { 427 PaymentGroupHistory pgh = (PaymentGroupHistory) iter.next(); 428 finalResults.addAll(pgh.getPaymentGroup().getPaymentDetails()); 429 } 430 return finalResults; 431 } 432 433 /** 434 * This method sorts the given list by payee name 435 * 436 * @param searchResults the list to be sorted 437 */ 438 protected void sortResultListByPayeeName(List searchResults) { 439 Collections.sort(searchResults, new Comparator() { 440 public int compare(Object o1, Object o2) { 441 PaymentDetail detail1 = (org.kuali.kfs.pdp.businessobject.PaymentDetail) o1; 442 PaymentDetail detail2 = (org.kuali.kfs.pdp.businessobject.PaymentDetail) o2; 443 444 if (detail1 == null || detail1.getPaymentGroup() == null || detail1.getPaymentGroup().getPayeeName() == null) { 445 return -1; 446 } 447 448 if (detail2 == null || detail2.getPaymentGroup() == null || detail2.getPaymentGroup().getPayeeName() == null) { 449 return 1; 450 } 451 452 return detail1.getPaymentGroup().getPayeeName().compareTo(detail2.getPaymentGroup().getPayeeName()); 453 } 454 }); 455 } 456 457 /** 458 * Sets the kualiConfigurationService attribute value. 459 * 460 * @param kualiConfigurationService The kualiConfigurationService to set. 461 */ 462 public void setKualiConfigurationService(KualiConfigurationService kualiConfigurationService) { 463 this.kualiConfigurationService = kualiConfigurationService; 464 } 465 466 /** 467 * This method sets the pdpAuthorizationService attribute valuse 468 * 469 * @param pdpAuthorizationService The pdpAuthorizationService to set. 470 */ 471 public void setPdpAuthorizationService(PdpAuthorizationService pdpAuthorizationService) { 472 this.pdpAuthorizationService = pdpAuthorizationService; 473 } 474 475 }