001 /** 002 * Copyright 2004-2013 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.hr.time.earncode; 017 018 import java.math.BigDecimal; 019 import java.util.Arrays; 020 import java.util.Collection; 021 import java.util.Collections; 022 import java.util.HashMap; 023 import java.util.List; 024 import java.util.Map; 025 026 import org.kuali.hr.core.KPMEConstants; 027 import org.kuali.hr.lm.accrual.AccrualCategory; 028 import org.kuali.hr.lm.earncodesec.EarnCodeSecurity; 029 import org.kuali.hr.lm.leaveplan.LeavePlan; 030 import org.kuali.hr.time.HrBusinessObject; 031 import org.kuali.rice.krad.service.KRADServiceLocator; 032 033 public class EarnCode extends HrBusinessObject { 034 035 private static final long serialVersionUID = -1470603919624794932L; 036 037 public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "EarnCode"; 038 private static final String[] PRIVATE_CACHES_FOR_FLUSH = {EarnCodeSecurity.CACHE_NAME, EarnCode.CACHE_NAME}; 039 public static final List<String> CACHE_FLUSH = Collections.unmodifiableList(Arrays.asList(PRIVATE_CACHES_FOR_FLUSH)); 040 041 private String hrEarnCodeId; 042 private String earnCode; 043 private String description; 044 045 private Boolean ovtEarnCode; 046 private String accrualCategory; 047 private BigDecimal inflateMinHours; 048 private BigDecimal inflateFactor; 049 050 private boolean history; 051 052 private AccrualCategory accrualCategoryObj; 053 private EarnCode rollupToEarnCodeObj; 054 private LeavePlan leavePlanObj; 055 056 private String leavePlan; 057 private String accrualBalanceAction; 058 private String fractionalTimeAllowed; 059 private String roundingOption; 060 private String eligibleForAccrual; 061 private String affectPay; 062 private String allowScheduledLeave; 063 private String fmla; 064 private String workmansComp; 065 private Long defaultAmountofTime; 066 private String allowNegativeAccrualBalance; 067 private String rollupToEarnCode; 068 private String recordMethod; 069 private String usageLimit; 070 071 public String getUsageLimit() { 072 return usageLimit; 073 } 074 075 public void setUsageLimit(String usageLimit) { 076 this.usageLimit = usageLimit; 077 } 078 079 public String getRecordMethod() { 080 return recordMethod; 081 } 082 083 public void setRecordMethod(String recordMethod) { 084 this.recordMethod = recordMethod; 085 } 086 087 public String getRollupToEarnCode() { 088 return rollupToEarnCode; 089 } 090 091 public void setRollupToEarnCode(String rollupToEarnCode) { 092 this.rollupToEarnCode = rollupToEarnCode; 093 } 094 095 public EarnCode getRollupToEarnCodeObj() { 096 return rollupToEarnCodeObj; 097 } 098 099 public void setRollupToEarnCodeObj(EarnCode rollupToEarnCodeObj) { 100 this.rollupToEarnCodeObj = rollupToEarnCodeObj; 101 } 102 103 public String getLeavePlan() { 104 // AccrualCategory myAccrualCategoryObj = new AccrualCategory(); 105 // if(this.accrualCategory != null) { 106 // myAccrualCategoryObj = TkServiceLocator.getAccrualCategoryService().getAccrualCategory(accrualCategory, getEffectiveDate()); 107 // } 108 // this.leavePlan =(myAccrualCategoryObj != null) ? myAccrualCategoryObj.getLeavePlan() : ""; 109 return leavePlan; 110 } 111 112 public void setLeavePlan(String leavePlan) { 113 this.leavePlan = leavePlan; 114 } 115 116 public String getAccrualBalanceAction() { 117 return accrualBalanceAction; 118 } 119 120 public void setAccrualBalanceAction(String accrualBalanceAction) { 121 this.accrualBalanceAction = accrualBalanceAction; 122 } 123 124 public String getFractionalTimeAllowed() { 125 return fractionalTimeAllowed; 126 } 127 128 public void setFractionalTimeAllowed(String fractionalTimeAllowed) { 129 this.fractionalTimeAllowed = fractionalTimeAllowed; 130 } 131 132 public String getRoundingOption() { 133 return roundingOption; 134 } 135 136 public void setRoundingOption(String roundingOption) { 137 this.roundingOption = roundingOption; 138 } 139 140 public String getEligibleForAccrual() { 141 return eligibleForAccrual; 142 } 143 144 public void setEligibleForAccrual(String eligibleForAccrual) { 145 this.eligibleForAccrual = eligibleForAccrual; 146 } 147 148 public String getAffectPay() { 149 return affectPay; 150 } 151 152 public void setAffectPay(String affectPay) { 153 this.affectPay = affectPay; 154 } 155 156 public String getAllowScheduledLeave() { 157 return allowScheduledLeave; 158 } 159 160 public void setAllowScheduledLeave(String allowScheduledLeave) { 161 this.allowScheduledLeave = allowScheduledLeave; 162 } 163 164 public String getFmla() { 165 return fmla; 166 } 167 168 public void setFmla(String fmla) { 169 this.fmla = fmla; 170 } 171 172 public String getWorkmansComp() { 173 return workmansComp; 174 } 175 176 public void setWorkmansComp(String workmansComp) { 177 this.workmansComp = workmansComp; 178 } 179 180 public Long getDefaultAmountofTime() { 181 return defaultAmountofTime; 182 } 183 184 public void setDefaultAmountofTime(Long defaultAmountofTime) { 185 this.defaultAmountofTime = defaultAmountofTime; 186 } 187 188 public String getAllowNegativeAccrualBalance() { 189 return allowNegativeAccrualBalance; 190 } 191 192 public void setAllowNegativeAccrualBalance(String allowNegativeAccrualBalance) { 193 this.allowNegativeAccrualBalance = allowNegativeAccrualBalance; 194 } 195 196 197 public String getEarnCode() { 198 return earnCode; 199 } 200 201 public void setEarnCode(String earnCode) { 202 this.earnCode = earnCode; 203 } 204 205 public String getDescription() { 206 return description; 207 } 208 209 public void setDescription(String description) { 210 this.description = description; 211 } 212 213 public boolean isHistory() { 214 return history; 215 } 216 217 public void setHistory(boolean history) { 218 this.history = history; 219 } 220 221 public String getHrEarnCodeId() { 222 return hrEarnCodeId; 223 } 224 225 public void setHrEarnCodeId(String hrEarnCodeId) { 226 this.hrEarnCodeId = hrEarnCodeId; 227 } 228 229 public String getAccrualCategory() { 230 return accrualCategory; 231 } 232 233 public void setAccrualCategory(String accrualCategory) { 234 this.accrualCategory = accrualCategory; 235 } 236 237 public AccrualCategory getAccrualCategoryObj() { 238 if(accrualCategoryObj == null && !this.getAccrualCategory().isEmpty()) { 239 this.assingAccrualCategoryObj(); 240 } 241 return accrualCategoryObj; 242 } 243 public void assingAccrualCategoryObj() { 244 Map<String,Object> parameters = new HashMap<String,Object>(); 245 parameters.put("accrualCategory", getAccrualCategory()); 246 Collection c = KRADServiceLocator.getBusinessObjectService().findMatching(AccrualCategory.class, parameters); 247 if(!c.isEmpty()) { 248 this.setAccrualCategoryObj((AccrualCategory)c.toArray()[0]); 249 } 250 } 251 252 public void setAccrualCategoryObj(AccrualCategory accrualCategoryObj) { 253 this.accrualCategoryObj = accrualCategoryObj; 254 } 255 256 public BigDecimal getInflateMinHours() { 257 return inflateMinHours; 258 } 259 260 public void setInflateMinHours(BigDecimal inflateMinHours) { 261 this.inflateMinHours = inflateMinHours; 262 } 263 264 public BigDecimal getInflateFactor() { 265 return inflateFactor; 266 } 267 268 public void setInflateFactor(BigDecimal inflateFactor) { 269 this.inflateFactor = inflateFactor; 270 } 271 272 public Boolean getOvtEarnCode() { 273 return ovtEarnCode; 274 } 275 276 public void setOvtEarnCode(Boolean ovtEarnCode) { 277 this.ovtEarnCode = ovtEarnCode; 278 } 279 280 /** 281 * This is used by the timeblock json object. 282 * The purpose of this function is to create a string based on the record_* fields which can be used to render hour / begin(end) time input box 283 * @return String fieldType 284 */ 285 public String getEarnCodeType() { 286 // if(getRecordHours()) { 287 // return TkConstants.EARN_CODE_HOUR; 288 // } 289 // else if(getRecordTime()) { 290 // return TkConstants.EARN_CODE_TIME; 291 // } 292 // else if(getRecordAmount()) { 293 // return TkConstants.EARN_CODE_AMOUNT; 294 // } 295 // else { 296 // return ""; 297 // } 298 return this.recordMethod; 299 } 300 301 @Override 302 public String getUniqueKey() { 303 return earnCode; 304 } 305 306 @Override 307 public String getId() { 308 return getHrEarnCodeId(); 309 } 310 311 @Override 312 public void setId(String id) { 313 setHrEarnCodeId(id); 314 } 315 316 public String getEarnCodeKeyForDisplay() { 317 // String unitTime = null; 318 // AccrualCategory acObj = null; 319 // if(this.accrualCategory != null) { 320 // acObj = TkServiceLocator.getAccrualCategoryService().getAccrualCategory(accrualCategory, this.effectiveDate); 321 // } 322 // unitTime = (acObj!= null ? acObj.getUnitOfTime() : this.recordMethod) ; 323 // return hrEarnCodeId + ":" + unitTime; 324 return hrEarnCodeId; 325 } 326 327 public String getEarnCodeValueForDisplay() { 328 return earnCode + " : " + description; 329 } 330 331 public LeavePlan getLeavePlanObj() { 332 return leavePlanObj; 333 } 334 335 public void setLeavePlanObj(LeavePlan leavePlanObj) { 336 this.leavePlanObj = leavePlanObj; 337 } 338 339 }