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.bc.businessobject;
018    
019    import java.math.BigDecimal;
020    import java.sql.Date;
021    import java.sql.Timestamp;
022    import java.util.LinkedHashMap;
023    
024    import org.kuali.kfs.coa.businessobject.Account;
025    import org.kuali.kfs.coa.businessobject.Chart;
026    import org.kuali.kfs.coa.businessobject.ObjectCode;
027    import org.kuali.kfs.coa.businessobject.SubAccount;
028    import org.kuali.kfs.coa.businessobject.SubObjectCode;
029    import org.kuali.kfs.module.ld.LaborConstants;
030    import org.kuali.kfs.sys.businessobject.SystemOptions;
031    import org.kuali.kfs.sys.context.SpringContext;
032    import org.kuali.rice.kim.bo.Person;
033    import org.kuali.rice.kim.service.PersonService;
034    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
035    import org.kuali.rice.kns.util.KualiDecimal;
036    
037    /**
038     * 
039     */
040    public class CalculatedSalaryFoundationTracker extends PersistableBusinessObjectBase {
041    
042        private Integer universityFiscalYear;
043        private String chartOfAccountsCode;
044        private String accountNumber;
045        private String subAccountNumber;
046        private String financialObjectCode;
047        private String financialSubObjectCode;
048        private String positionNumber;
049        private String emplid;
050        private String name;
051        private Timestamp csfCreateTimestamp;
052        private String csfDeleteCode;
053        private KualiDecimal csfAmount;
054        private BigDecimal csfFullTimeEmploymentQuantity;
055        private BigDecimal csfTimePercent;
056        private String csfFundingStatusCode;
057        private Integer employeeRecord;
058        private String earnCode;
059        private Integer additionalSequence;
060        private Date effectiveDate;
061        private Integer effectiveSequence;
062    
063        private ObjectCode financialObject;
064        private Chart chartOfAccounts;
065        private Account account;
066        private SubAccount subAccount;
067        private SubObjectCode financialSubObject;
068        private CalculatedSalaryFoundationTrackerOverride calculatedSalaryFoundationTrackerOverride;
069        
070        private transient SystemOptions universityFiscal;
071        private final int PERCENTAGE_SCALE = 2;
072        
073        /**
074         * Default constructor.
075         */
076        public CalculatedSalaryFoundationTracker() {
077    
078        }
079    
080        /**
081         * Gets the universityFiscalYear attribute.
082         * 
083         * @return Returns the universityFiscalYear
084         */
085        public Integer getUniversityFiscalYear() {
086            return universityFiscalYear;
087        }
088    
089        /**
090         * Sets the universityFiscalYear attribute.
091         * 
092         * @param universityFiscalYear The universityFiscalYear to set.
093         */
094        public void setUniversityFiscalYear(Integer universityFiscalYear) {
095            this.universityFiscalYear = universityFiscalYear;
096        }
097    
098    
099        /**
100         * Gets the chartOfAccountsCode attribute.
101         * 
102         * @return Returns the chartOfAccountsCode
103         */
104        public String getChartOfAccountsCode() {
105            return chartOfAccountsCode;
106        }
107    
108        /**
109         * Sets the chartOfAccountsCode attribute.
110         * 
111         * @param chartOfAccountsCode The chartOfAccountsCode to set.
112         */
113        public void setChartOfAccountsCode(String chartOfAccountsCode) {
114            this.chartOfAccountsCode = chartOfAccountsCode;
115        }
116    
117    
118        /**
119         * Gets the accountNumber attribute.
120         * 
121         * @return Returns the accountNumber
122         */
123        public String getAccountNumber() {
124            return accountNumber;
125        }
126    
127        /**
128         * Sets the accountNumber attribute.
129         * 
130         * @param accountNumber The accountNumber to set.
131         */
132        public void setAccountNumber(String accountNumber) {
133            this.accountNumber = accountNumber;
134        }
135    
136    
137        /**
138         * Gets the subAccountNumber attribute.
139         * 
140         * @return Returns the subAccountNumber
141         */
142        public String getSubAccountNumber() {
143            return subAccountNumber;
144        }
145    
146        /**
147         * Sets the subAccountNumber attribute.
148         * 
149         * @param subAccountNumber The subAccountNumber to set.
150         */
151        public void setSubAccountNumber(String subAccountNumber) {
152            this.subAccountNumber = subAccountNumber;
153        }
154    
155    
156        /**
157         * Gets the financialObjectCode attribute.
158         * 
159         * @return Returns the financialObjectCode
160         */
161        public String getFinancialObjectCode() {
162            return financialObjectCode;
163        }
164    
165        /**
166         * Sets the financialObjectCode attribute.
167         * 
168         * @param financialObjectCode The financialObjectCode to set.
169         */
170        public void setFinancialObjectCode(String financialObjectCode) {
171            this.financialObjectCode = financialObjectCode;
172        }
173    
174    
175        /**
176         * Gets the financialSubObjectCode attribute.
177         * 
178         * @return Returns the financialSubObjectCode
179         */
180        public String getFinancialSubObjectCode() {
181            return financialSubObjectCode;
182        }
183    
184        /**
185         * Sets the financialSubObjectCode attribute.
186         * 
187         * @param financialSubObjectCode The financialSubObjectCode to set.
188         */
189        public void setFinancialSubObjectCode(String financialSubObjectCode) {
190            this.financialSubObjectCode = financialSubObjectCode;
191        }
192    
193    
194        /**
195         * Gets the positionNumber attribute.
196         * 
197         * @return Returns the positionNumber
198         */
199        public String getPositionNumber() {
200            return positionNumber;
201        }
202    
203        /**
204         * Sets the positionNumber attribute.
205         * 
206         * @param positionNumber The positionNumber to set.
207         */
208        public void setPositionNumber(String positionNumber) {
209            this.positionNumber = positionNumber;
210        }
211    
212    
213        /**
214         * Gets the emplid attribute.
215         * 
216         * @return Returns the emplid
217         */
218        public String getEmplid() {
219            return emplid;
220        }
221    
222        /**
223         * Sets the emplid attribute.
224         * 
225         * @param emplid The emplid to set.
226         */
227        public void setEmplid(String emplid) {
228            this.emplid = emplid;
229        }
230    
231    
232        /**
233         * Gets the csfCreateTimestamp attribute.
234         * 
235         * @return Returns the csfCreateTimestamp
236         */
237        public Timestamp getCsfCreateTimestamp() {
238            return csfCreateTimestamp;
239        }
240    
241        /**
242         * Sets the csfCreateTimestamp attribute.
243         * 
244         * @param csfCreateTimestamp The csfCreateTimestamp to set.
245         */
246        public void setCsfCreateTimestamp(Timestamp csfCreateTimestamp) {
247            this.csfCreateTimestamp = csfCreateTimestamp;
248        }
249    
250    
251        /**
252         * Gets the csfDeleteCode attribute.
253         * 
254         * @return Returns the csfDeleteCode
255         */
256        public String getCsfDeleteCode() {
257            return csfDeleteCode;
258        }
259    
260        /**
261         * Sets the csfDeleteCode attribute.
262         * 
263         * @param csfDeleteCode The csfDeleteCode to set.
264         */
265        public void setCsfDeleteCode(String csfDeleteCode) {
266            this.csfDeleteCode = csfDeleteCode;
267        }
268    
269    
270        /**
271         * Gets the csfAmount attribute.
272         * 
273         * @return Returns the csfAmount
274         */
275        public KualiDecimal getCsfAmount() {
276            return csfAmount;
277        }
278    
279        /**
280         * Sets the csfAmount attribute.
281         * 
282         * @param csfAmount The csfAmount to set.
283         */
284        public void setCsfAmount(KualiDecimal csfAmount) {
285            this.csfAmount = csfAmount;
286        }
287    
288    
289        /**
290         * Gets the csfFullTimeEmploymentQuantity attribute.
291         * 
292         * @return Returns the csfFullTimeEmploymentQuantity
293         */
294        public BigDecimal getCsfFullTimeEmploymentQuantity() {
295            return csfFullTimeEmploymentQuantity;
296        }
297    
298        /**
299         * Sets the csfFullTimeEmploymentQuantity attribute.
300         * 
301         * @param csfFullTimeEmploymentQuantity The csfFullTimeEmploymentQuantity to set.
302         */
303        public void setCsfFullTimeEmploymentQuantity(BigDecimal csfFullTimeEmploymentQuantity) {
304            this.csfFullTimeEmploymentQuantity = csfFullTimeEmploymentQuantity;
305        }
306    
307    
308        /**
309         * Gets the csfTimePercent attribute. Returns 2 decimal places, reguardless.
310         * 
311         * @return Returns the csfTimePercent
312         */
313        public BigDecimal getCsfTimePercent() {
314    
315            BigDecimal bigDecValue = (BigDecimal) this.csfTimePercent;
316            bigDecValue = bigDecValue.setScale(PERCENTAGE_SCALE, BigDecimal.ROUND_HALF_UP);
317            return bigDecValue;
318        }
319    
320        /**
321         * Sets the csfTimePercent attribute.
322         * 
323         * @param csfTimePercent The csfTimePercent to set.
324         */
325        public void setCsfTimePercent(BigDecimal csfTimePercent) {
326            this.csfTimePercent = csfTimePercent;
327        }
328    
329    
330        /**
331         * Gets the csfFundingStatusCode attribute.
332         * 
333         * @return Returns the csfFundingStatusCode
334         */
335        public String getCsfFundingStatusCode() {
336            return csfFundingStatusCode;
337        }
338    
339        /**
340         * Sets the csfFundingStatusCode attribute.
341         * 
342         * @param csfFundingStatusCode The csfFundingStatusCode to set.
343         */
344        public void setCsfFundingStatusCode(String csfFundingStatusCode) {
345            this.csfFundingStatusCode = csfFundingStatusCode;
346        }
347    
348    
349        /**
350         * Gets the employeeRecord attribute.
351         * 
352         * @return Returns the employeeRecord
353         */
354        public Integer getEmployeeRecord() {
355            return employeeRecord;
356        }
357    
358        /**
359         * Sets the employeeRecord attribute.
360         * 
361         * @param employeeRecord The employeeRecord to set.
362         */
363        public void setEmployeeRecord(Integer employeeRecord) {
364            this.employeeRecord = employeeRecord;
365        }
366    
367    
368        /**
369         * Gets the earnCode attribute.
370         * 
371         * @return Returns the earnCode
372         */
373        public String getEarnCode() {
374            return earnCode;
375        }
376    
377        /**
378         * Sets the earnCode attribute.
379         * 
380         * @param earnCode The earnCode to set.
381         */
382        public void setEarnCode(String earnCode) {
383            this.earnCode = earnCode;
384        }
385    
386    
387        /**
388         * Gets the additionalSequence attribute.
389         * 
390         * @return Returns the additionalSequence
391         */
392        public Integer getAdditionalSequence() {
393            return additionalSequence;
394        }
395    
396        /**
397         * Sets the additionalSequence attribute.
398         * 
399         * @param additionalSequence The additionalSequence to set.
400         */
401        public void setAdditionalSequence(Integer additionalSequence) {
402            this.additionalSequence = additionalSequence;
403        }
404    
405    
406        /**
407         * Gets the effectiveDate attribute.
408         * 
409         * @return Returns the effectiveDate
410         */
411        public Date getEffectiveDate() {
412            return effectiveDate;
413        }
414    
415        /**
416         * Sets the effectiveDate attribute.
417         * 
418         * @param effectiveDate The effectiveDate to set.
419         */
420        public void setEffectiveDate(Date effectiveDate) {
421            this.effectiveDate = effectiveDate;
422        }
423    
424    
425        /**
426         * Gets the effectiveSequence attribute.
427         * 
428         * @return Returns the effectiveSequence
429         */
430        public Integer getEffectiveSequence() {
431            return effectiveSequence;
432        }
433    
434        /**
435         * Sets the effectiveSequence attribute.
436         * 
437         * @param effectiveSequence The effectiveSequence to set.
438         */
439        public void setEffectiveSequence(Integer effectiveSequence) {
440            this.effectiveSequence = effectiveSequence;
441        }
442    
443    
444        /**
445         * Gets the financialObject attribute.
446         * 
447         * @return Returns the financialObject
448         */
449        public ObjectCode getFinancialObject() {
450            return financialObject;
451        }
452    
453        /**
454         * Sets the financialObject attribute.
455         * 
456         * @param financialObject The financialObject to set.
457         * @deprecated
458         */
459        public void setFinancialObject(ObjectCode financialObject) {
460            this.financialObject = financialObject;
461        }
462    
463        /**
464         * Gets the chartOfAccounts attribute.
465         * 
466         * @return Returns the chartOfAccounts
467         */
468        public Chart getChartOfAccounts() {
469            return chartOfAccounts;
470        }
471    
472        /**
473         * Sets the chartOfAccounts attribute.
474         * 
475         * @param chartOfAccounts The chartOfAccounts to set.
476         * @deprecated
477         */
478        public void setChartOfAccounts(Chart chartOfAccounts) {
479            this.chartOfAccounts = chartOfAccounts;
480        }
481    
482        /**
483         * Gets the account attribute.
484         * 
485         * @return Returns the account
486         */
487        public Account getAccount() {
488            return account;
489        }
490    
491        /**
492         * Sets the account attribute.
493         * 
494         * @param account The account to set.
495         * @deprecated
496         */
497        public void setAccount(Account account) {
498            this.account = account;
499        }
500    
501        /**
502         * @return Returns the subAccount.
503         */
504        public SubAccount getSubAccount() {
505            return subAccount;
506        }
507    
508        /**
509         * @param subAccount The subAccount to set.
510         * @deprecated
511         */
512        public void setSubAccount(SubAccount subAccount) {
513            this.subAccount = subAccount;
514        }
515    
516    
517        /**
518         * Gets the universityFiscal attribute.
519         * 
520         * @return Returns the universityFiscal.
521         */
522        public SystemOptions getUniversityFiscal() {
523            return universityFiscal;
524        }
525    
526        /**
527         * Sets the universityFiscal attribute value.
528         * 
529         * @param universityFiscal The universityFiscal to set.
530         */
531        public void setUniversityFiscal(SystemOptions universityFiscal) {
532            this.universityFiscal = universityFiscal;
533        }
534    
535        /**
536         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
537         */
538        protected LinkedHashMap toStringMapper() {
539            LinkedHashMap m = new LinkedHashMap();
540            if (this.universityFiscalYear != null) {
541                m.put("universityFiscalYear", this.universityFiscalYear.toString());
542            }
543            m.put("chartOfAccountsCode", this.chartOfAccountsCode);
544            m.put("accountNumber", this.accountNumber);
545            m.put("subAccountNumber", this.subAccountNumber);
546            m.put("financialObjectCode", this.financialObjectCode);
547            m.put("financialSubObjectCode", this.financialSubObjectCode);
548            m.put("positionNumber", this.positionNumber);
549            m.put("emplid", this.emplid);
550            if (this.csfCreateTimestamp != null) {
551                m.put("csfCreateTimestamp", this.csfCreateTimestamp.toString());
552            }
553            return m;
554        }
555    
556        public String getName() {
557            Person person = (Person) SpringContext.getBean(PersonService.class).getPersonByEmployeeId(getEmplid());
558            if (person == null) {
559                return LaborConstants.BalanceInquiries.UnknownPersonName;
560            }
561    
562            return person.getName();
563        }
564    
565        public void setName(String name) {
566            this.name = name;
567        }
568    
569        /**
570         * Gets the financialSubObject attribute.
571         * 
572         * @return Returns the financialSubObject.
573         */
574        public SubObjectCode getFinancialSubObject() {
575            return financialSubObject;
576        }
577    
578        /**
579         * Sets the financialSubObject attribute value.
580         * 
581         * @param financialSubObject The financialSubObject to set.
582         * @deprecated
583         */
584        public void setFinancialSubObject(SubObjectCode financialSubObject) {
585            this.financialSubObject = financialSubObject;
586        }
587    
588        public CalculatedSalaryFoundationTrackerOverride getCalculatedSalaryFoundationTrackerOverride() {
589            return calculatedSalaryFoundationTrackerOverride;
590        }
591    
592        public void setCalculatedSalaryFoundationTrackerOverride(CalculatedSalaryFoundationTrackerOverride calculatedSalaryFoundationTrackerOverride) {
593            this.calculatedSalaryFoundationTrackerOverride = calculatedSalaryFoundationTrackerOverride;
594        }
595        
596        public boolean isOverride() {
597            
598            return (getCalculatedSalaryFoundationTrackerOverride() != null);
599        }
600        
601        public String getPositionLookupPositionNumber() {
602            if ( isOverride() ) return getCalculatedSalaryFoundationTrackerOverride().getPositionNumber();
603            
604            return getPositionNumber();
605        }
606    
607        public KualiDecimal getPositionLookupCsfAmount() {
608            if ( isOverride() ) return getCalculatedSalaryFoundationTrackerOverride().getCsfAmount();
609            
610            return getCsfAmount();
611        }
612        
613        public BigDecimal getPositionLookupCsfFullTimeEmploymentQuantity() {
614            if ( isOverride() ) return getCalculatedSalaryFoundationTrackerOverride().getCsfFullTimeEmploymentQuantity();
615            
616            return getCsfFullTimeEmploymentQuantity();
617        }
618        
619        public String getPositionLookupOverrideFlag() {
620            
621            return isOverride() ? "Y" : "N";
622        }
623    }
624