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.bc.document.service;
017
018 import java.util.List;
019
020 import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionAppointmentFunding;
021 import org.kuali.rice.kns.util.ErrorMap;
022 import org.kuali.rice.kns.util.MessageMap;
023
024 /**
025 * define a set of validations methods for salary setting
026 */
027 public interface SalarySettingRuleHelperService {
028
029 /**
030 * determine whether the salary amount of the given appointment funding can be adjusted
031 *
032 * @param appointmentFunding the given appointment funding
033 * @param errorMap the given error map that can hold the error message if any
034 * @return true if the salary amount of the given appointment funding can be adjusted; otherwise, false
035 */
036 public boolean canBeAdjusted(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
037
038 /**
039 * determine whether the given appointment funding is associated with an active job
040 *
041 * @param appointmentFunding the given appointment funding
042 * @param errorMap the given error map that can hold the error message if any
043 * @return true if the given appointment funding is associated with an active job; otherwise, false
044 */
045 public boolean hasActiveJob(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
046
047 /**
048 * determine whether the object code of the given appointment funding matches the position default object code
049 *
050 * @param appointmentFunding the given appointment funding
051 * @param errorMap the given error map that can hold the error message if any
052 * @return true if the object code of the given appointment funding matches the position default object code; otherwise, false
053 */
054 public boolean hasObjectCodeMatchingDefaultOfPosition(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
055
056 /**
057 * request salary amount must be zero for full year leave
058 *
059 * @param appointmentFunding the given appointment funding
060 * @param errorMap the given error map that can hold the error message if any
061 * @return true if request salary amount is zero for full year leave; otherwise, false
062 */
063 public boolean hasRequestedAmountZeroWhenFullYearLeave(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
064
065 /**
066 * request fte quantity must be zero for full year leave
067 *
068 * @param appointmentFunding the given appointment funding
069 * @param errorMap the given error map that can hold the error message if any
070 * @return true if the request fte quantity is zero for full year leave; otherwise, false
071 */
072 public boolean hasRequestedFteQuantityZeroWhenFullYearLeave(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
073
074 /**
075 * determine if there is an appointment funding in the given list that has the same key information as the specified appointment
076 * funding
077 *
078 * @param appointmentFundings the given appointment funding collection
079 * @param appointmentFunding the given appointment funding
080 * @param errorMap the given error map that can hold the error message if any
081 * @return true if there is no an appointment funding in the given list that has the same key information as the specified
082 * appointment funding; otherwise, false
083 */
084 public boolean hasNoExistingLine(List<PendingBudgetConstructionAppointmentFunding> appointmentFundings, PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
085
086 /**
087 * determine whether the requested salary amount of the given appointment funding is valid
088 *
089 * @param appointmentFunding the given appointment funding
090 * @return true if the requested salary amount of the given appointment funding is valid; otherwise, false
091 */
092 public boolean hasValidRequestedAmount(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
093
094 /**
095 * determine whether the requested salary amount of the given appointment funding is valid for the quick salary setting screen
096 *
097 * @param appointmentFunding
098 * @param errorMap
099 * @return
100 */
101 public boolean hasValidRequestedAmountQuickSalarySetting(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
102
103 /**
104 * determine whether the requested leave csf amount of the given appointment funding is valid
105 *
106 * @param appointmentFunding the given appointment funding
107 * @param errorMap the given error map that can hold the error message if any
108 * @return true if the requested leave csf amount of the given appointment funding is valid; otherwise, false
109 */
110 public boolean hasValidRequestedCsfAmount(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
111
112 /**
113 * determine whether the requested leave csf time percent of the given appointment funding is valid
114 *
115 * @param appointmentFunding the given appointment funding
116 * @param errorMap the given error map that can hold the error message if any
117 * @return true if the requested leave csf time percent of the given appointment funding is valid; otherwise, false
118 */
119 public boolean hasValidRequestedCsfTimePercent(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
120
121 /**
122 * determine whether the requested FTE is valid
123 *
124 * @param appointmentFunding the given appointment funding
125 * @param errorMap the given error map that can hold the error message if any
126 * @return true if the requested FTE is valid; otherwise, false
127 */
128 public boolean hasValidRequestedFteQuantity(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
129
130 /**
131 * determine whether the requested funding month of the given appointment funding is valid
132 *
133 * @param appointmentFunding the given appointment funding
134 * @param errorMap the given error map that can hold the error message if any
135 * @return true if the requested funding month of the given appointment funding is valid; otherwise, false
136 */
137 public boolean hasValidRequestedFundingMonth(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
138
139 /**
140 * determine whether the requested FTE is valid
141 *
142 * @param appointmentFunding the given appointment funding
143 * @param errorMap the given error map that can hold the error message if any
144 * @return true if the requested FTE is valid; otherwise, false
145 */
146 public boolean hasValidRequestedTimePercent(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
147
148 /**
149 * determine whether the adjustment amount is valid
150 *
151 * @param appointmentFunding the given appointment funding
152 * @param errorMap the given error map that can hold the error message if any
153 * @return true if the adjustment amount is valid; otherwise, false
154 */
155 public boolean hasValidAdjustmentAmount(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
156
157 /**
158 * determine whether either pay rate or annual amount is not empty, and both of them have valid formats if not empty
159 *
160 * @param appointmentFunding the given appointment funding
161 * @param errorMap the given error map that can hold the error message if any
162 * @return true if either pay rate or annual amount is valid; otherwise, false
163 */
164 public boolean hasValidPayRateOrAnnualAmount(PendingBudgetConstructionAppointmentFunding appointmentFunding, MessageMap errorMap);
165 }