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    
017    package org.kuali.kfs.module.ld.businessobject;
018    
019    import java.math.BigDecimal;
020    
021    import org.apache.commons.lang.ObjectUtils;
022    import org.kuali.kfs.module.ld.LaborConstants;
023    import org.kuali.kfs.sys.context.SpringContext;
024    import org.kuali.rice.kim.bo.Person;
025    import org.kuali.rice.kim.service.PersonService;
026    import org.kuali.rice.kns.util.KualiDecimal;
027    
028    /**
029     * Labor business object for Employee Funding.
030     */
031    public class EmployeeFunding extends LedgerBalance {
032    
033        private String name;
034        private String csfDeleteCode;
035        private String csfFundingStatusCode;
036        private BigDecimal csfTimePercent;
037        private BigDecimal csfFullTimeEmploymentQuantity;
038        private KualiDecimal csfAmount;
039        private KualiDecimal currentAmount;
040        private KualiDecimal outstandingEncumbrance;
041        private KualiDecimal totalAmount;
042    
043        /**
044         * Although the title of this class is EmployeeFunding, it is really a representation of the AccountStatusCurrentFunds business
045         * object, however it is generated using the fiscal year and employee ID.
046         */
047        public EmployeeFunding() {
048            super();
049            this.setMonth1Amount(KualiDecimal.ZERO);
050            this.setCurrentAmount(KualiDecimal.ZERO);
051            this.setOutstandingEncumbrance(KualiDecimal.ZERO);
052            this.setTotalAmount(KualiDecimal.ZERO);
053        }
054    
055        /**
056         * Gets the person name.
057         * 
058         * @return Returns the PersonName.
059         */
060        public String getName() {
061            Person person = this.getLedgerPerson();
062            if (person == null) {
063                return LaborConstants.BalanceInquiries.UnknownPersonName;
064            }
065            
066            return person.getName();
067        }
068    
069        /**
070         * Sets the persons name.
071         * 
072         * @param personName The personName to set.
073         */
074    
075        public void setName(String personName) {
076            this.name = personName;
077        }
078    
079        /**
080         * Gets the csfAmount
081         * 
082         * @return Returns the csfAmount.
083         */
084        public KualiDecimal getCsfAmount() {
085            return csfAmount;
086        }
087    
088        /**
089         * Sets the csfAmount.
090         * 
091         * @param csfAmount The csfAmount to set.
092         */
093        public void setCsfAmount(KualiDecimal csfAmount) {
094            this.csfAmount = csfAmount;
095        }
096    
097        /**
098         * Gets the csfDeleteCode.
099         * 
100         * @return Returns the csfDeleteCode.
101         */
102        public String getCsfDeleteCode() {
103            return csfDeleteCode;
104        }
105    
106        /**
107         * Sets the csfDeleteCode.
108         * 
109         * @param csfDeleteCode The csfDeleteCode to set.
110         */
111        public void setCsfDeleteCode(String csfDeleteCode) {
112            this.csfDeleteCode = csfDeleteCode;
113        }
114    
115        /**
116         * Gets the csfFundingStatusCode.
117         * 
118         * @return Returns the csfFundingStatusCode.
119         */
120        public String getCsfFundingStatusCode() {
121            return csfFundingStatusCode;
122        }
123    
124        /**
125         * Sets the csfFundingStatusCode.
126         * 
127         * @param csfFundingStatusCode The csfFundingStatusCode to set.
128         */
129        public void setCsfFundingStatusCode(String csfFundingStatusCode) {
130            this.csfFundingStatusCode = csfFundingStatusCode;
131        }
132    
133        /**
134         * Gets the csfTimePercent.
135         * 
136         * @return Returns the csfTimePercent.
137         */
138        public BigDecimal getCsfTimePercent() {
139            return csfTimePercent;
140        }
141    
142        /**
143         * Sets the csfTimePercent.
144         * 
145         * @param csfTimePercent The csfTimePercent to set.
146         */
147        public void setCsfTimePercent(BigDecimal csfTimePercent) {
148            this.csfTimePercent = csfTimePercent;
149        }
150    
151        /**
152         * Gets the currentAmount.
153         * 
154         * @return Returns the currentAmount.
155         */
156        public KualiDecimal getCurrentAmount() {
157            return currentAmount;
158        }
159    
160        /**
161         * Sets the currentAmount.
162         * 
163         * @param currentAmount The currentAmount to set.
164         */
165        public void setCurrentAmount(KualiDecimal currentAmount) {
166            this.currentAmount = currentAmount;
167        }
168    
169        /**
170         * Gets the outstandingEncumbrance.
171         * 
172         * @return Returns the outstandingEncumbrance.
173         */
174        public KualiDecimal getOutstandingEncumbrance() {
175            return outstandingEncumbrance;
176        }
177    
178        /**
179         * Sets the outstandingEncumbrance.
180         * 
181         * @param outstandingEncumbrance The outstandingEncumbrance to set.
182         */
183        public void setOutstandingEncumbrance(KualiDecimal outstandingEncumbrance) {
184            this.outstandingEncumbrance = outstandingEncumbrance;
185        }
186    
187        /**
188         * Returns a total amount based upon adding any outstanding encumberence records to the annual balance amount.
189         * 
190         * @return TotalAmount
191         */
192        public KualiDecimal getTotalAmount() {
193            return this.currentAmount.add(this.outstandingEncumbrance);
194        }
195    
196        /**
197         * Sets the total amount.
198         * 
199         * @param totalAmount The totalAmount to set.
200         */
201        public void setTotalAmount(KualiDecimal totalAmount) {
202            this.totalAmount = totalAmount;
203        }
204    
205        /**
206         * @see java.lang.Object#hashCode()
207         */
208        @Override
209        public int hashCode() {
210            final int PRIME = 31;
211            int result = 1;
212            result = PRIME * result + ((getAccountNumber() == null) ? 0 : getAccountNumber().hashCode());
213            result = PRIME * result + ((getChartOfAccountsCode() == null) ? 0 : getChartOfAccountsCode().hashCode());
214            result = PRIME * result + ((getFinancialObjectCode() == null) ? 0 : getFinancialObjectCode().hashCode());
215            result = PRIME * result + ((getFinancialSubObjectCode() == null) ? 0 : getFinancialSubObjectCode().hashCode());
216            result = PRIME * result + ((getSubAccountNumber() == null) ? 0 : getSubAccountNumber().hashCode());
217            result = PRIME * result + ((getUniversityFiscalYear() == null) ? 0 : getUniversityFiscalYear().hashCode());
218            result = PRIME * result + ((getEmplid() == null) ? 0 : getEmplid().hashCode());
219            result = PRIME * result + ((getPositionNumber() == null) ? 0 : getPositionNumber().hashCode());
220    
221            return result;
222        }
223    
224        /**
225         * @see java.lang.Object#equals(java.lang.Object)
226         */
227        @Override
228        public boolean equals(Object obj) {
229            if (this == obj)
230                return true;
231            if (obj == null)
232                return false;
233            if (getClass() != obj.getClass())
234                return false;
235    
236            final EmployeeFunding other = (EmployeeFunding) obj;
237    
238            if (!ObjectUtils.equals(getAccountNumber(), other.getAccountNumber())) {
239                return false;
240            }
241            else if (!ObjectUtils.equals(getChartOfAccountsCode(), other.getChartOfAccountsCode())) {
242                return false;
243            }
244            else if (!ObjectUtils.equals(getFinancialObjectCode(), other.getFinancialObjectCode())) {
245                return false;
246            }
247            else if (!ObjectUtils.equals(getFinancialSubObjectCode(), other.getFinancialSubObjectCode())) {
248                return false;
249            }
250            else if (!ObjectUtils.equals(getSubAccountNumber(), other.getSubAccountNumber())) {
251                return false;
252            }
253            else if (!ObjectUtils.equals(getUniversityFiscalYear(), other.getUniversityFiscalYear())) {
254                return false;
255            }
256            else if (!ObjectUtils.equals(getEmplid(), other.getEmplid())) {
257                return false;
258            }
259            else if (!ObjectUtils.equals(getPositionNumber(), other.getPositionNumber())) {
260                return false;
261            }
262    
263            return true;
264        }
265    
266        /**
267         * Gets the csfFullTimeEmploymentQuantity.
268         * 
269         * @return Returns the csfFullTimeEmploymentQuantity.
270         */
271        public BigDecimal getCsfFullTimeEmploymentQuantity() {
272            return csfFullTimeEmploymentQuantity;
273        }
274    
275        /**
276         * Sets the csfFullTimeEmploymentQuantity.
277         * 
278         * @param csfFullTimeEmploymentQuantity The csfFullTimeEmploymentQuantity to set.
279         */
280        public void setCsfFullTimeEmploymentQuantity(BigDecimal csfFullTimeEmploymentQuantity) {
281            this.csfFullTimeEmploymentQuantity = csfFullTimeEmploymentQuantity;
282        }
283    }
284