001 /**
002 * Copyright 2004-2012 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.sql.Date;
020 import java.sql.Timestamp;
021 import java.util.Collection;
022 import java.util.HashMap;
023 import java.util.Map;
024
025 import org.kuali.hr.core.KPMEConstants;
026 import org.kuali.hr.time.accrual.AccrualCategory;
027 import org.kuali.hr.time.HrBusinessObject;
028 import org.kuali.hr.time.service.base.TkServiceLocator;
029 import org.kuali.rice.krad.service.KRADServiceLocator;
030
031 public class EarnCode extends HrBusinessObject {
032 public static final String CACHE_NAME = KPMEConstants.APPLICATION_NAMESPACE_CODE + "/" + "EarnCode";
033 /**
034 *
035 */
036 private static final long serialVersionUID = 1L;
037
038 private String hrEarnCodeId;
039 private String earnCode;
040 private String description;
041
042 private Boolean ovtEarnCode;
043 private String accrualCategory;
044 private BigDecimal inflateMinHours;
045 private BigDecimal inflateFactor;
046 private Long defaultAmountofTime;
047 private boolean history;
048
049 private AccrualCategory accrualCategoryObj;
050
051 private String recordMethod;
052
053 public String getRecordMethod() {
054 return recordMethod;
055 }
056
057 public void setRecordMethod(String recordMethod) {
058 this.recordMethod = recordMethod;
059 }
060
061 public Long getDefaultAmountofTime() {
062 return defaultAmountofTime;
063 }
064
065 public void setDefaultAmountofTime(Long defaultAmountofTime) {
066 this.defaultAmountofTime = defaultAmountofTime;
067 }
068
069 public String getEarnCode() {
070 return earnCode;
071 }
072
073 public void setEarnCode(String earnCode) {
074 this.earnCode = earnCode;
075 }
076
077 public String getDescription() {
078 return description;
079 }
080
081 public void setDescription(String description) {
082 this.description = description;
083 }
084
085 public Date getEffectiveDate() {
086 return effectiveDate;
087 }
088
089 public void setEffectiveDate(Date effectiveDate) {
090 this.effectiveDate = effectiveDate;
091 }
092
093 public boolean isHistory() {
094 return history;
095 }
096
097 public void setHistory(boolean history) {
098 this.history = history;
099 }
100
101 public boolean isActive() {
102 return active;
103 }
104
105 public void setActive(boolean active) {
106 this.active = active;
107 }
108
109 public String getHrEarnCodeId() {
110 return hrEarnCodeId;
111 }
112
113 public void setHrEarnCodeId(String hrEarnCodeId) {
114 this.hrEarnCodeId = hrEarnCodeId;
115 }
116
117 public Timestamp getTimestamp() {
118 return timestamp;
119 }
120
121 public void setTimestamp(Timestamp timestamp) {
122 this.timestamp = timestamp;
123 }
124
125 public String getAccrualCategory() {
126 return accrualCategory;
127 }
128
129 public void setAccrualCategory(String accrualCategory) {
130 this.accrualCategory = accrualCategory;
131 }
132
133 public AccrualCategory getAccrualCategoryObj() {
134 if(accrualCategoryObj == null && !this.getAccrualCategory().isEmpty()) {
135 this.assingAccrualCategoryObj();
136 }
137 return accrualCategoryObj;
138 }
139 public void assingAccrualCategoryObj() {
140 Map<String,Object> parameters = new HashMap<String,Object>();
141 parameters.put("accrualCategory", getAccrualCategory());
142 Collection c = KRADServiceLocator.getBusinessObjectService().findMatching(AccrualCategory.class, parameters);
143 if(!c.isEmpty()) {
144 this.setAccrualCategoryObj((AccrualCategory)c.toArray()[0]);
145 }
146 }
147
148 public void setAccrualCategoryObj(AccrualCategory accrualCategoryObj) {
149 this.accrualCategoryObj = accrualCategoryObj;
150 }
151
152 public BigDecimal getInflateMinHours() {
153 return inflateMinHours;
154 }
155
156 public void setInflateMinHours(BigDecimal inflateMinHours) {
157 this.inflateMinHours = inflateMinHours;
158 }
159
160 public BigDecimal getInflateFactor() {
161 return inflateFactor;
162 }
163
164 public void setInflateFactor(BigDecimal inflateFactor) {
165 this.inflateFactor = inflateFactor;
166 }
167
168 public Boolean getOvtEarnCode() {
169 return ovtEarnCode;
170 }
171
172 public void setOvtEarnCode(Boolean ovtEarnCode) {
173 this.ovtEarnCode = ovtEarnCode;
174 }
175
176 /**
177 * This is used by the timeblock json object.
178 * 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
179 * @return String fieldType
180 */
181 public String getEarnCodeType() {
182 // if(getRecordHours()) {
183 // return TkConstants.EARN_CODE_HOUR;
184 // }
185 // else if(getRecordTime()) {
186 // return TkConstants.EARN_CODE_TIME;
187 // }
188 // else if(getRecordAmount()) {
189 // return TkConstants.EARN_CODE_AMOUNT;
190 // }
191 // else {
192 // return "";
193 // }
194 return this.recordMethod;
195 }
196
197 @Override
198 public String getUniqueKey() {
199 return earnCode;
200 }
201
202 @Override
203 public String getId() {
204 return getHrEarnCodeId();
205 }
206
207 @Override
208 public void setId(String id) {
209 setHrEarnCodeId(id);
210 }
211
212 public String getEarnCodeKeyForDisplay() {
213 // String unitTime = null;
214 // AccrualCategory acObj = null;
215 // if(this.accrualCategory != null) {
216 // acObj = TkServiceLocator.getAccrualCategoryService().getAccrualCategory(accrualCategory, this.effectiveDate);
217 // }
218 // unitTime = (acObj!= null ? acObj.getUnitOfTime() : this.recordMethod) ;
219 // return hrEarnCodeId + ":" + unitTime;
220 return hrEarnCodeId;
221 }
222
223 public String getEarnCodeValueForDisplay() {
224 return earnCode + " : " + description;
225 }
226 }