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.service;
017
018 import org.kuali.hr.time.assignment.Assignment;
019 import org.kuali.hr.time.earncode.EarnCode;
020 import org.springframework.cache.annotation.Cacheable;
021
022 import java.math.BigDecimal;
023 import java.sql.Date;
024 import java.util.List;
025 import java.util.Map;
026
027 public interface EarnCodeService {
028 /**
029 * Fetch a list of earn codes for Leave usage and Time usage, for a particular assignment as of a particular date
030 * @param a
031 * @param asOfDate
032 * @param isLeavePlanningCalendar
033 * @return
034 */
035 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getEarnCodesForLeaveAndTime}' + 'principalId=' + T(org.kuali.hr.time.util.TKContext).getPrincipalId() + '|' + 'targetId=' + T(org.kuali.hr.time.util.TKContext).getTargetPrincipalId() + '|' + 'a=' + #p0.getTkAssignmentId() + '|' + 'asOfDate=' + #p1 + '|' + 'isLeavePlanningCalendar=' +#p2")
036 public List<EarnCode> getEarnCodesForLeaveAndTime(Assignment a, Date asOfDate, boolean isLeavePlanningCalendar);
037
038 /**
039 * Fetch a list of earn codes for Time usage, for a particular assignment as of a particular date
040 * @param a
041 * @param asOfDate
042 * @return
043 */
044 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getEarnCodesForTime}' + 'principalId=' + T(org.kuali.hr.time.util.TKContext).getPrincipalId() + '|' + 'targetId=' + T(org.kuali.hr.time.util.TKContext).getTargetPrincipalId() + '|' + 'a=' + #p0.getTkAssignmentId() + '|' + 'asOfDate=' + #p1")
045 public List<EarnCode> getEarnCodesForTime(Assignment a, Date asOfDate);
046
047 /**
048 * Fetch a list of earn codes for Leave usage, for a particular assignment as of a particular date
049 * @param a
050 * @param asOfDate
051 * @param isLeavePlanningCalendar
052 * @return
053 */
054 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getEarnCodesForLeave}' + 'principalId=' + T(org.kuali.hr.time.util.TKContext).getPrincipalId() + '|' + 'targetId=' + T(org.kuali.hr.time.util.TKContext).getTargetPrincipalId() + '|' + 'a=' + #p0.getTkAssignmentId() + '|' + 'asOfDate=' + #p1 + '|' + 'isLeavePlanningCalendar=' +#p2")
055 public List<EarnCode> getEarnCodesForLeave(Assignment a, Date asOfDate, boolean isLeavePlanningCalendar);
056
057 /**
058 * Fetch a list of earn codes based on principal ID as of a particular date
059 * @param principalId
060 * @param asOfDate
061 * @param isLeavePlanningCalendar
062 * @return
063 */
064 @Cacheable(value=EarnCode.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'asOfDate=' + #p1 + '|' + 'isLeavePlanningCalendar=' +#p2")
065 public List<EarnCode> getEarnCodesForPrincipal(String principalId, Date asOfDate, boolean isLeavePlanningCalendar);
066
067 /**
068 * Fetch an EarnCode as of a particular date
069 * @param earnCode
070 * @param asOfDate
071 * @return
072 */
073 @Cacheable(value=EarnCode.CACHE_NAME, key="'earnCode=' + #p0 + '|' + 'asOfDate=' + #p1")
074 public EarnCode getEarnCode(String earnCode, Date asOfDate);
075
076 /**
077 * Fetch the earn code type for a particular date
078 * @param earnCode
079 * @param asOfDate
080 * @return
081 */
082 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getEarnCodeType}' + 'earnCode=' + #p0 + '|' + 'asOfDate=' + #p1")
083 String getEarnCodeType(String earnCode, Date asOfDate);
084
085 /**
086 * Fetch earn code by id
087 * @param earnCodeId
088 * @return
089 */
090 @Cacheable(value=EarnCode.CACHE_NAME, key="'earnCodeId=' + #p0")
091 public EarnCode getEarnCodeById(String earnCodeId);
092
093 /**
094 * Fetch list of system defined overtime earn codes
095 * @param asOfDate
096 * @return
097 */
098 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getOvertimeEarnCodes}' + 'asOfDate=' + #p0")
099 public List<EarnCode> getOvertimeEarnCodes(Date asOfDate);
100
101
102 /**
103 * Fetch list of system defined overtime earn codes as strings
104 * @param asOfDate
105 * @return
106 */
107 @Cacheable(value=EarnCode.CACHE_NAME, key="'{getOvertimeEarnCodesStrs}' + 'asOfDate=' + #p0")
108 public List<String> getOvertimeEarnCodesStrs(Date asOfDate);
109
110 /**
111 * get count of earn code with give earnCode
112 * @param earnCode
113 * @return int
114 */
115 public int getEarnCodeCount(String earnCode);
116
117 /**
118 * get count of newer version of earn code with give earnCode and date
119 * @param earnCode
120 * @param effdt
121 * @return int
122 */
123 public int getNewerEarnCodeCount(String earnCode, Date effdt);
124
125 /**
126 * roundHrsWithLEarnCode
127 * @param hours
128 * @param earnCode
129 * @return
130 */
131 public BigDecimal roundHrsWithEarnCode(BigDecimal hours, EarnCode earnCode);
132
133 /**
134 * @param principalId
135 * @param isLeavePlanningCalendar
136 * @return
137 */
138 @Cacheable(value= EarnCode.CACHE_NAME, key="'{getEarnCodesForDisplay}' + 'principalId=' + #p0 + '|' + 'isLeavePlanningCalendar=' +#p1")
139 public Map<String, String> getEarnCodesForDisplay(String principalId, boolean isLeavePlanningCalendar);
140
141 /**
142 * @param principalId
143 * @param asOfDate
144 * @return
145 */
146 @Cacheable(value= EarnCode.CACHE_NAME, key="'{getEarnCodesForDisplayWithEffectiveDate}' + 'principalId=' + #p0 + '|' + 'asOfDate=' + #p1 + '|' + 'isLeavePlanningCalendar=' +#p2")
147 public Map<String, String> getEarnCodesForDisplayWithEffectiveDate(String principalId, Date asOfDate, boolean isLeavePlanningCalendar);
148
149 List<EarnCode> getEarnCodes(String earnCode, String ovtEarnCode, String leavePlan, String accrualCategory, String descr, Date fromEffdt, Date toEffdt, String active, String showHist);
150 }