001/* 002 * Copyright 2008 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 */ 016package org.kuali.ole.fp.document.service; 017 018import java.util.Collection; 019 020import org.kuali.ole.fp.businessobject.DisbursementPayee; 021import org.kuali.ole.fp.businessobject.PaymentReasonCode; 022import org.kuali.rice.kns.util.MessageList; 023 024/** 025 * define a set of service methods related to payment reason code 026 */ 027public interface DisbursementVoucherPaymentReasonService { 028 029 /** 030 * determine whether the given payee is qualified for the payment with the given reason code 031 * 032 * @param payee the given payee 033 * @param paymentReasonCode the givne payment reason code 034 * @return true if the given payee is qualified for the payment with the given reason code; otherwise, return false 035 */ 036 public boolean isPayeeQualifiedForPayment(DisbursementPayee payee, String paymentReasonCode); 037 038 /** 039 * determine whether the given payee is qualified for the payment with the given reason code and the payee type must be in the 040 * given payee type code list. 041 * 042 * @param payee the given payee 043 * @param paymentReasonCode the givne payment reason code 044 * @param payeeTypeCodes the given payee type codes 045 * @return true if the given payee is qualified for the payment with the given reason code; otherwise, return false 046 */ 047 public boolean isPayeeQualifiedForPayment(DisbursementPayee payee, String paymentReasonCode, Collection<String> payeeTypeCodes); 048 049 /** 050 * determine whether the given payment reason is a non-employee travel payment reason 051 * 052 * @param paymentReasonCode the givne payment reason code 053 * @return true if the given payment reason is a moving payment reason; otherwise, return false 054 */ 055 public boolean isNonEmployeeTravelPaymentReason(String paymentReasonCode); 056 057 /** 058 * determine whether the given payment reason is a moving payment reason 059 * 060 * @param paymentReasonCode the givne payment reason code 061 * @return true if the given payment reason is a moving payment reason; otherwise, return false 062 */ 063 public boolean isMovingPaymentReason(String paymentReasonCode); 064 065 /** 066 * determine whether the given payment reason is a prepaid travel payment reason 067 * 068 * @param paymentReasonCode the givne payment reason code 069 * @return true if the given payment reason is a prepaid travel payment reason; otherwise, return false 070 */ 071 public boolean isPrepaidTravelPaymentReason(String paymentReasonCode); 072 073 /** 074 * determine whether the given payment reason is a research payment reason 075 * 076 * @param paymentReasonCode the givne payment reason code 077 * @return true if the given payment reason is a research payment reason; otherwise, return false 078 */ 079 public boolean isResearchPaymentReason(String paymentReasonCode); 080 081 /** 082 * determine whether the given payment reason is a revolving fund payment reason 083 * 084 * @param paymentReasonCode the givne payment reason code 085 * @return true if the given payment reason is a revolving fund payment reason; otherwise, return false 086 */ 087 public boolean isRevolvingFundPaymentReason(String paymentReasonCode); 088 089 /** 090 * determine whether the given payment reason is a decedent compensation payment reason 091 * 092 * @param paymentReasonCode the givne payment reason code 093 * @return true if the given payment reason is a decedent compensation payment reason; otherwise, return false 094 */ 095 public boolean isDecedentCompensationPaymentReason(String paymentReasonCode); 096 097 /** 098 * determine whether the given payment reason is of type that is specified by the given type parameter name. The type parameter 099 * must be defined as an application parameter(@see org.kuali.rice.core.api.parameter.Parameter) 100 * 101 * @param typeParameterName the given type parameter name 102 * @param paymentReasonCode the given reason code 103 * @return true if the given payment reason is of type that is specified by typeParameterName; otherwise, false 104 */ 105 public boolean isPaymentReasonOfType(String typeParameterName, String paymentReasonCode); 106 107 /** 108 * get the payment limit to research non-vendor employee for research payment reason 109 * 110 * @return the payment limit to research non-vendor employee for research payment reason. 111 */ 112 public String getReserchNonVendorPayLimit(); 113 114 /** 115 * get the payee type codes valid for the given payment reason 116 * 117 * @param paymentReasonCode the given payment reason 118 * @return the payee type codes valid for the given payment reason 119 */ 120 public Collection<String> getPayeeTypesByPaymentReason(String paymentReasonCode); 121 122 /** 123 * get the payment reason with its primary key: the given payment reason code 124 * 125 * @param paymentReasonCode the given payment reason 126 * @return the payment reason with its primary key: the given payment reason code 127 */ 128 public PaymentReasonCode getPaymentReasonByPrimaryId(String paymentReasonCode); 129 130 /** 131 * post the usage of the given payment reason code into error map 132 * 133 * @param paymentReasonCode the given payment reason code 134 * @param messageList the message list that will hold the usage of the given payment reason 135 */ 136 public void postPaymentReasonCodeUsage(String paymentReasonCode, MessageList messageList); 137 138 /** 139 * determine whether the given payment reason is required for tax review 140 * 141 * @param paymentReasonCode the given payment reason 142 * @return true if the given payment reason is required for tax review; otherwise, false 143 */ 144 public boolean isTaxReviewRequired(String paymentReasonCode); 145 146 /** 147 * get the vendor owership type codes for the given payment reason code 148 * 149 * @param paymentReasonCode the given payment reason code 150 * @return the vendor owership type codes for the given payment reason code if any; otherwise, null 151 */ 152 public Collection<String> getVendorOwnershipTypesByPaymentReason(String paymentReasonCode); 153}