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.util.ArrayList;
020 import java.util.List;
021
022 import org.kuali.kfs.module.ld.LaborConstants;
023 import org.kuali.kfs.sys.KFSPropertyConstants;
024 import org.kuali.kfs.sys.context.SpringContext;
025 import org.kuali.rice.kim.bo.Person;
026 import org.kuali.rice.kim.service.PersonService;
027 import org.kuali.rice.kns.util.KualiDecimal;
028
029 /**
030 * Labor business object for Account Status (Current Funds).
031 */
032 public class AccountStatusCurrentFunds extends LedgerBalance {
033 private String personName;
034 private KualiDecimal outstandingEncum;
035 private KualiDecimal july1BudgetAmount;
036 private KualiDecimal annualActualAmount;
037 private KualiDecimal variance;
038
039 /**
040 * Constructs an AccountStatusCurrentFunds.java.
041 */
042 public AccountStatusCurrentFunds() {
043 super();
044 setMonth1Amount(KualiDecimal.ZERO);
045 this.setOutstandingEncum(KualiDecimal.ZERO);
046 this.setVariance(KualiDecimal.ZERO);
047 this.setJuly1BudgetAmount(KualiDecimal.ZERO);
048 this.setAnnualActualAmount(KualiDecimal.ZERO);
049 }
050
051 /**
052 * Gets the person name
053 *
054 * @return the person name
055 */
056 public String getName() {
057 Person person = (Person) SpringContext.getBean(PersonService.class).getPersonByEmployeeId(getEmplid());
058 if (person == null) {
059 return LaborConstants.BalanceInquiries.UnknownPersonName;
060 }
061
062 return person.getName();
063 }
064
065 /**
066 * Sets the persons name
067 *
068 * @param personName
069 */
070 public void setName(String personName) {
071 this.personName = personName;
072 }
073
074 /**
075 * Gets an outstanding encumberance value
076 *
077 * @return outstanding encumberance value
078 */
079 public KualiDecimal getOutstandingEncum() {
080 return outstandingEncum;
081 }
082
083 /**
084 * Sets an outstanding encumberance value
085 *
086 * @param outstandingEncum
087 */
088 public void setOutstandingEncum(KualiDecimal outstandingEncum) {
089 this.outstandingEncum = outstandingEncum;
090 }
091
092 /**
093 * Gets the Jul1BudgerAmount
094 *
095 * @return July1st amount
096 */
097 public KualiDecimal getJuly1BudgetAmount() {
098 return july1BudgetAmount;
099 }
100
101 /**
102 * Sets the july1BudgetAmount
103 *
104 * @param july1BudgetAmount
105 */
106 public void setJuly1BudgetAmount(KualiDecimal july1BudgetAmount) {
107 this.july1BudgetAmount = july1BudgetAmount;
108 }
109
110 /**
111 * Gets the variance which is calculated by substracting from July1BudgetAmount the YTD Actual, and outstanding encumbrance.
112 *
113 * @return
114 */
115 public KualiDecimal getVariance() {
116 return this.getJuly1BudgetAmount().subtract(getAnnualActualAmount()).subtract(getOutstandingEncum());
117 }
118
119 /**
120 * Sets the variance which is calculated by substracting from July1BudgetAmount the YTD Actual, and outstanding encumbrance.
121 *
122 * @param variance
123 */
124 public void setVariance(KualiDecimal variance) {
125 this.variance = variance;
126 }
127
128 /**
129 * Returns a list of keys used to generate a query.
130 *
131 * @param consolidated
132 * @return a list with the keys needed to generate a query
133 */
134 public List<String> getKeyFieldList(boolean consolidated) {
135 List<String> primaryKeyList = new ArrayList<String>();
136 primaryKeyList.add(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR);
137 primaryKeyList.add(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE);
138 primaryKeyList.add(KFSPropertyConstants.ACCOUNT_NUMBER);
139
140 if (!consolidated) {
141 primaryKeyList.add(KFSPropertyConstants.SUB_ACCOUNT_NUMBER);
142 }
143
144 primaryKeyList.add(KFSPropertyConstants.FINANCIAL_OBJECT_CODE);
145
146 if (!consolidated) {
147 primaryKeyList.add(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE);
148 }
149 primaryKeyList.add(KFSPropertyConstants.POSITION_NUMBER);
150 primaryKeyList.add(KFSPropertyConstants.EMPLID);
151
152 return primaryKeyList;
153 }
154
155 /**
156 * Gets the annualActualAmount attribute.
157 *
158 * @return Returns the annualActualAmount.
159 */
160 public KualiDecimal getAnnualActualAmount() {
161 return this.getAccountLineAnnualBalanceAmount().add(this.getContractsGrantsBeginningBalanceAmount());
162 }
163
164 /**
165 * Sets the annualActualAmount attribute value.
166 *
167 * @param annualActualAmount The annualActualAmount to set.
168 */
169 public void setAnnualActualAmount(KualiDecimal annualActualAmount) {
170 this.annualActualAmount = annualActualAmount;
171 }
172 }
173