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 package org.kuali.kfs.coa.businessobject;
017
018 import java.sql.Date;
019 import java.util.LinkedHashMap;
020
021 import org.apache.commons.lang.StringUtils;
022 import org.kuali.kfs.sys.context.SpringContext;
023 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO;
024 import org.kuali.rice.kew.service.impl.KEWModuleService;
025 import org.kuali.rice.kim.bo.Person;
026 import org.kuali.rice.kim.service.PersonService;
027 import org.kuali.rice.kns.bo.Inactivateable;
028 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
029 import org.kuali.rice.kns.util.KualiDecimal;
030
031 /**
032 *
033 */
034 public class AccountDelegate extends PersistableBusinessObjectBase implements Inactivateable {
035
036 private static final long serialVersionUID = 6883162275377881235L;
037
038 /**
039 * Default no-arg constructor.
040 */
041 public AccountDelegate() {
042 }
043
044 private String chartOfAccountsCode;
045 private String accountNumber;
046 private String financialDocumentTypeCode;
047 private String accountDelegateSystemId;
048 private KualiDecimal finDocApprovalFromThisAmt;
049 private boolean accountsDelegatePrmrtIndicator;
050 private boolean active;
051 private Date accountDelegateStartDate;
052 private KualiDecimal finDocApprovalToThisAmount;
053
054 private Chart chart;
055 private Account account;
056 private transient DocumentTypeEBO financialSystemDocumentTypeCode;
057 private Person accountDelegate;
058
059 /**
060 * Gets the accountNumber attribute.
061 *
062 * @return Returns the accountNumber.
063 */
064 public String getAccountNumber() {
065 return accountNumber;
066 }
067
068 /**
069 * Sets the accountNumber attribute value.
070 *
071 * @param accountNumber The accountNumber to set.
072 */
073 public void setAccountNumber(String accountNumber) {
074 this.accountNumber = accountNumber;
075 }
076
077 /**
078 * Gets the chartOfAccountsCode attribute.
079 *
080 * @return Returns the chartOfAccountsCode.
081 */
082 public String getChartOfAccountsCode() {
083 return chartOfAccountsCode;
084 }
085
086 /**
087 * Sets the chartOfAccountsCode attribute value.
088 *
089 * @param chartOfAccountsCode The chartOfAccountsCode to set.
090 */
091 public void setChartOfAccountsCode(String chartOfAccountsCode) {
092 this.chartOfAccountsCode = chartOfAccountsCode;
093 }
094
095 /**
096 * Gets the financialDocumentTypeCode attribute.
097 *
098 * @return Returns the financialDocumentTypeCode
099 */
100 public String getFinancialDocumentTypeCode() {
101 return financialDocumentTypeCode;
102 }
103
104 /**
105 * Sets the financialDocumentTypeCode attribute.
106 *
107 * @param financialDocumentTypeCode The financialDocumentTypeCode to set.
108 */
109 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
110 this.financialDocumentTypeCode = financialDocumentTypeCode;
111 }
112
113 /**
114 * Gets the accountDelegateSystemId attribute.
115 *
116 * @return Returns the accountDelegateSystemId.
117 */
118 public String getAccountDelegateSystemId() {
119 return accountDelegateSystemId;
120 }
121
122 /**
123 * Sets the accountDelegateSystemId attribute value.
124 *
125 * @param accountDelegateSystemId The accountDelegateSystemId to set.
126 */
127 public void setAccountDelegateSystemId(String accountDelegateSystemId) {
128 this.accountDelegateSystemId = accountDelegateSystemId;
129 }
130
131 /**
132 * Gets the finDocApprovalFromThisAmt attribute.
133 *
134 * @return Returns the finDocApprovalFromThisAmt
135 */
136 public KualiDecimal getFinDocApprovalFromThisAmt() {
137 return finDocApprovalFromThisAmt;
138 }
139
140 /**
141 * Sets the finDocApprovalFromThisAmt attribute.
142 *
143 * @param finDocApprovalFromThisAmt The finDocApprovalFromThisAmt to set.
144 */
145 public void setFinDocApprovalFromThisAmt(KualiDecimal finDocApprovalFromThisAmt) {
146 this.finDocApprovalFromThisAmt = finDocApprovalFromThisAmt;
147 }
148
149 /**
150 * Gets the accountsDelegatePrmrtIndicator attribute.
151 *
152 * @return Returns the accountsDelegatePrmrtIndicator
153 */
154 public boolean isAccountsDelegatePrmrtIndicator() {
155 return accountsDelegatePrmrtIndicator;
156 }
157
158 /**
159 * Sets the accountsDelegatePrmrtIndicator attribute.
160 *
161 * @param accountsDelegatePrmrtIndicator The accountsDelegatePrmrtIndicator to set.
162 * @deprecated
163 */
164 public void setAccountsDelegatePrmrtIndicator(boolean accountsDelegatePrmrtIndicator) {
165 this.accountsDelegatePrmrtIndicator = accountsDelegatePrmrtIndicator;
166 }
167
168 /**
169 * Gets the active attribute.
170 *
171 * @return Returns the active
172 */
173 public boolean isActive() {
174 return active;
175 }
176
177 /**
178 * Sets the active attribute.
179 *
180 * @param active The active to set.
181 * @deprecated
182 */
183 public void setActive(boolean active) {
184 this.active = active;
185 }
186
187 /**
188 * Gets the accountDelegateStartDate attribute.
189 *
190 * @return Returns the accountDelegateStartDate
191 */
192 public Date getAccountDelegateStartDate() {
193 return accountDelegateStartDate;
194 }
195
196 /**
197 * Sets the accountDelegateStartDate attribute.
198 *
199 * @param accountDelegateStartDate The accountDelegateStartDate to set.
200 */
201 public void setAccountDelegateStartDate(Date accountDelegateStartDate) {
202 this.accountDelegateStartDate = accountDelegateStartDate;
203 }
204
205 /**
206 * Gets the finDocApprovalToThisAmount attribute.
207 *
208 * @return Returns the finDocApprovalToThisAmount
209 */
210 public KualiDecimal getFinDocApprovalToThisAmount() {
211 return finDocApprovalToThisAmount;
212 }
213
214 /**
215 * Sets the finDocApprovalToThisAmount attribute.
216 *
217 * @param finDocApprovalToThisAmount The finDocApprovalToThisAmount to set.
218 */
219 public void setFinDocApprovalToThisAmount(KualiDecimal finDocApprovalToThisAmount) {
220 this.finDocApprovalToThisAmount = finDocApprovalToThisAmount;
221 }
222
223 /**
224 * Gets the account attribute.
225 *
226 * @return Returns the account
227 */
228 public Account getAccount() {
229 return account;
230 }
231
232 /**
233 * Sets the account attribute.
234 *
235 * @param account The account to set.
236 * @deprecated
237 */
238 public void setAccount(Account account) {
239 this.account = account;
240 }
241
242 /**
243 * Gets the financialSystemDocumentTypeCode attribute.
244 * @return Returns the financialSystemDocumentTypeCode.
245 */
246 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() {
247 return financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, financialSystemDocumentTypeCode, "financialSystemDocumentTypeCode");
248 }
249
250 public Person getAccountDelegate() {
251 accountDelegate = SpringContext.getBean(PersonService.class).updatePersonIfNecessary(accountDelegateSystemId, accountDelegate);
252 return accountDelegate;
253 }
254
255 /**
256 * Sets the accountDelegate attribute value.
257 *
258 * @param accountDelegate The accountDelegate to set.
259 */
260 public void setAccountDelegate(Person accountDelegate) {
261 this.accountDelegate = accountDelegate;
262 }
263
264 /**
265 * This method (a hack by any other name...) returns a string so that an Account Delegate can have a link to view its own
266 * inquiry page after a look up
267 *
268 * @return the String "View Account Delegate"
269 */
270 public String getAccountDelegateViewer() {
271 return "View Account Delegate";
272 }
273
274 /**
275 * Gets the chart attribute.
276 *
277 * @return Returns the chart.
278 */
279 public Chart getChart() {
280 return chart;
281 }
282
283 /**
284 * Sets the chart attribute value.
285 *
286 * @param chart The chart to set.
287 */
288 public void setChart(Chart chart) {
289 this.chart = chart;
290 }
291
292 /**
293 * @see java.lang.Object#equals(java.lang.Object)
294 */
295 public boolean equals(Object obj) {
296 if (obj != null) {
297 if (this.getClass().equals(obj.getClass())) {
298 AccountDelegate other = (AccountDelegate) obj;
299 if (StringUtils.equalsIgnoreCase(this.chartOfAccountsCode, other.chartOfAccountsCode)) {
300 if (StringUtils.equalsIgnoreCase(this.accountNumber, other.accountNumber)) {
301 if (StringUtils.equalsIgnoreCase(this.financialDocumentTypeCode, other.financialDocumentTypeCode)) {
302 if (StringUtils.equalsIgnoreCase(this.accountDelegateSystemId, other.accountDelegateSystemId)) {
303 return true;
304 }
305 }
306 }
307 }
308 }
309 }
310 return false;
311 }
312
313 /**
314 * @see java.lang.Object#hashCode()
315 */
316 public int hashCode() {
317 return toStringBuilder(toStringMapper()).hashCode();
318 }
319
320 /**
321 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
322 */
323 protected LinkedHashMap toStringMapper() {
324 LinkedHashMap m = new LinkedHashMap();
325
326 m.put("chartCode", this.chartOfAccountsCode);
327 m.put("accountNumber", this.accountNumber);
328 m.put("documentTypeCode", this.financialDocumentTypeCode);
329 m.put("accountDelegateSystemId", this.accountDelegateSystemId);
330
331 return m;
332 }
333 }
334