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.gl.businessobject;
017
018 import java.sql.Date;
019 import java.sql.Timestamp;
020 import java.util.LinkedHashMap;
021
022 import org.kuali.kfs.coa.businessobject.Account;
023 import org.kuali.kfs.coa.businessobject.BalanceType;
024 import org.kuali.kfs.coa.businessobject.Chart;
025 import org.kuali.kfs.coa.businessobject.ObjectCode;
026 import org.kuali.kfs.coa.businessobject.SubAccount;
027 import org.kuali.kfs.coa.businessobject.SubObjectCode;
028 import org.kuali.kfs.sys.KFSPropertyConstants;
029 import org.kuali.kfs.sys.businessobject.OriginationCode;
030 import org.kuali.kfs.sys.businessobject.SystemOptions;
031 import org.kuali.kfs.sys.context.SpringContext;
032 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO;
033 import org.kuali.rice.kew.service.impl.KEWModuleService;
034 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
035 import org.kuali.rice.kns.util.KualiDecimal;
036
037 /**
038 * Represents the encumbrance amount for a specific university fiscal year,
039 * chart of accounts code, account number, sub account number, object code,
040 * sub object code, balance type code, document type code, origin code, and document number.
041 * This encumbrance object contains amounts for actual enumbrance amount, closed amount,
042 * outstanding amount
043 *
044 */
045 public class Encumbrance extends PersistableBusinessObjectBase {
046 static final long serialVersionUID = -7494473472438516396L;
047
048 private Integer universityFiscalYear;
049 private String chartOfAccountsCode;
050 private String accountNumber;
051 private String subAccountNumber;
052 private String objectCode;
053 private String subObjectCode;
054 private String balanceTypeCode;
055 private String documentTypeCode;
056 private String originCode;
057 private String documentNumber;
058 private String transactionEncumbranceDescription;
059 private Date transactionEncumbranceDate;
060 private KualiDecimal accountLineEncumbranceAmount;
061 private KualiDecimal accountLineEncumbranceClosedAmount;
062 private KualiDecimal accountLineEncumbranceOutstandingAmount;
063 private String accountLineEncumbrancePurgeCode;
064 private Timestamp timestamp;
065
066 private SubAccount subAccount;
067 private Chart chart;
068 private Account account;
069 private SubObjectCode financialSubObject;
070 private DocumentTypeEBO financialSystemDocumentTypeCode;
071
072 private ObjectCode financialObject;
073 private BalanceType balanceType;
074 private OriginationCode originationCode;
075 private SystemOptions option;
076
077 private TransientBalanceInquiryAttributes dummyBusinessObject;
078
079 public Encumbrance() {
080 }
081
082 public Encumbrance(Transaction t) {
083 universityFiscalYear = t.getUniversityFiscalYear();
084 chartOfAccountsCode = t.getChartOfAccountsCode();
085 accountNumber = t.getAccountNumber();
086 subAccountNumber = t.getSubAccountNumber();
087 objectCode = t.getFinancialObjectCode();
088 subObjectCode = t.getFinancialSubObjectCode();
089 balanceTypeCode = t.getFinancialBalanceTypeCode();
090 documentTypeCode = t.getFinancialDocumentTypeCode();
091 originCode = t.getFinancialSystemOriginationCode();
092 documentNumber = t.getDocumentNumber();
093 transactionEncumbranceDescription = t.getTransactionLedgerEntryDescription();
094 transactionEncumbranceDate = t.getTransactionDate();
095 accountLineEncumbranceAmount = KualiDecimal.ZERO;
096 accountLineEncumbranceClosedAmount = KualiDecimal.ZERO;
097 accountLineEncumbrancePurgeCode = " ";
098 this.dummyBusinessObject = new TransientBalanceInquiryAttributes();
099 }
100
101 /**
102 * Constructs a AccountBalance.java per the primary keys only of the passed in accountBalanceHistory
103 * @param accountBalanceHistory
104 */
105 public Encumbrance(EncumbranceHistory encumbranceHistory) {
106 universityFiscalYear = encumbranceHistory.getUniversityFiscalYear();
107 chartOfAccountsCode = encumbranceHistory.getChartOfAccountsCode();
108 accountNumber = encumbranceHistory.getAccountNumber();
109 subAccountNumber = encumbranceHistory.getSubAccountNumber();
110 objectCode = encumbranceHistory.getObjectCode();
111 subObjectCode = encumbranceHistory.getSubObjectCode();
112 balanceTypeCode = encumbranceHistory.getBalanceTypeCode();
113 documentTypeCode = encumbranceHistory.getDocumentTypeCode();
114 originCode = encumbranceHistory.getOriginCode();
115 documentNumber = encumbranceHistory.getDocumentNumber();
116 }
117
118
119 protected LinkedHashMap toStringMapper() {
120 LinkedHashMap map = new LinkedHashMap();
121 map.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, getUniversityFiscalYear());
122 map.put(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE, getChartOfAccountsCode());
123 map.put(KFSPropertyConstants.ACCOUNT_NUMBER, getAccountNumber());
124 map.put(KFSPropertyConstants.SUB_ACCOUNT_NUMBER, getSubAccountNumber());
125 map.put(KFSPropertyConstants.OBJECT_CODE, getObjectCode());
126 map.put(KFSPropertyConstants.SUB_OBJECT_CODE, getSubObjectCode());
127 map.put(KFSPropertyConstants.BALANCE_TYPE_CODE, getBalanceTypeCode());
128 map.put(KFSPropertyConstants.ENCUMBRANCE_DOCUMENT_TYPE_CODE, getDocumentTypeCode());
129 map.put(KFSPropertyConstants.ORIGIN_CODE, getOriginCode());
130 map.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber());
131 map.put(KFSPropertyConstants.ACCOUNT_LINE_ENCUMBRANCE_AMOUNT, getAccountLineEncumbranceAmount());
132 map.put(KFSPropertyConstants.ACCOUNT_LINE_ENCUMBRANCE_CLOSED_AMOUNT, getAccountLineEncumbranceClosedAmount());
133 return map;
134 }
135
136 public OriginationCode getOriginationCode() {
137 return originationCode;
138 }
139
140 public void setOriginationCode(OriginationCode originationCode) {
141 this.originationCode = originationCode;
142 }
143
144 /**
145 * @return Returns the accountLineEncumbranceAmount.
146 */
147 public KualiDecimal getAccountLineEncumbranceAmount() {
148 return accountLineEncumbranceAmount;
149 }
150
151 /**
152 * @param accountLineEncumbranceAmount The accountLineEncumbranceAmount to set.
153 */
154 public void setAccountLineEncumbranceAmount(KualiDecimal accountLineEncumbranceAmount) {
155 this.accountLineEncumbranceAmount = accountLineEncumbranceAmount;
156 }
157
158 /**
159 * @return Returns the accountLineEncumbranceClearedAmount.
160 */
161 public KualiDecimal getAccountLineEncumbranceClosedAmount() {
162 return accountLineEncumbranceClosedAmount;
163 }
164
165 public void setAccountLineEncumbranceOutstandingAmount() {
166 }
167
168 public KualiDecimal getAccountLineEncumbranceOutstandingAmount() {
169 return accountLineEncumbranceAmount.subtract(accountLineEncumbranceClosedAmount);
170 }
171
172 /**
173 * @param accountLineEncumbranceClearedAmount The accountLineEncumbranceClearedAmount to set.
174 */
175 public void setAccountLineEncumbranceClosedAmount(KualiDecimal accountLineEncumbranceClosedAmount) {
176 this.accountLineEncumbranceClosedAmount = accountLineEncumbranceClosedAmount;
177 }
178
179 /**
180 * @return Returns the accountLineEncumbrancePrg.
181 */
182 public String getAccountLineEncumbrancePurgeCode() {
183 return accountLineEncumbrancePurgeCode;
184 }
185
186 /**
187 * @param accountLineEncumbrancePrg The accountLineEncumbrancePrg to set.
188 */
189 public void setAccountLineEncumbrancePurgeCode(String accountLineEncumbrancePurgeCode) {
190 this.accountLineEncumbrancePurgeCode = accountLineEncumbrancePurgeCode;
191 }
192
193 /**
194 * @return Returns the accountNumber.
195 */
196 public String getAccountNumber() {
197 return accountNumber;
198 }
199
200 /**
201 * @param accountNumber The accountNumber to set.
202 */
203 public void setAccountNumber(String accountNumber) {
204 this.accountNumber = accountNumber;
205 }
206
207 /**
208 * @return Returns the balanceTypeCode.
209 */
210 public String getBalanceTypeCode() {
211 return balanceTypeCode;
212 }
213
214 /**
215 * @param balanceTypeCode The balanceTypeCode to set.
216 */
217 public void setBalanceTypeCode(String balanceTypeCode) {
218 this.balanceTypeCode = balanceTypeCode;
219 }
220
221 /**
222 * @return Returns the chartOfAccountsCode.
223 */
224 public String getChartOfAccountsCode() {
225 return chartOfAccountsCode;
226 }
227
228 /**
229 * @param chartOfAccountsCode The chartOfAccountsCode to set.
230 */
231 public void setChartOfAccountsCode(String chartOfAccountsCode) {
232 this.chartOfAccountsCode = chartOfAccountsCode;
233 }
234
235 /**
236 * @return Returns the documentNumber.
237 */
238 public String getDocumentNumber() {
239 return documentNumber;
240 }
241
242 /**
243 * @param documentNumber The documentNumber to set.
244 */
245 public void setDocumentNumber(String documentNumber) {
246 this.documentNumber = documentNumber;
247 }
248
249 /**
250 * @return Returns the documentTypeCode.
251 */
252 public String getDocumentTypeCode() {
253 return documentTypeCode;
254 }
255
256 /**
257 * @param documentTypeCode The documentTypeCode to set.
258 */
259 public void setDocumentTypeCode(String documentTypeCode) {
260 this.documentTypeCode = documentTypeCode;
261 }
262
263 /**
264 * @return Returns the objectCode.
265 */
266 public String getObjectCode() {
267 return objectCode;
268 }
269
270 /**
271 * @param objectCode The objectCode to set.
272 */
273 public void setObjectCode(String objectCode) {
274 this.objectCode = objectCode;
275 }
276
277 /**
278 * @return Returns the originCode.
279 */
280 public String getOriginCode() {
281 return originCode;
282 }
283
284 /**
285 * @param originCode The originCode to set.
286 */
287 public void setOriginCode(String originCode) {
288 this.originCode = originCode;
289 }
290
291 /**
292 * @return Returns the subAccountNumber.
293 */
294 public String getSubAccountNumber() {
295 return subAccountNumber;
296 }
297
298 /**
299 * @param subAccountNumber The subAccountNumber to set.
300 */
301 public void setSubAccountNumber(String subAccountNumber) {
302 this.subAccountNumber = subAccountNumber;
303 }
304
305 /**
306 * @return Returns the subObjectCode.
307 */
308 public String getSubObjectCode() {
309 return subObjectCode;
310 }
311
312 /**
313 * @param subObjectCode The subObjectCode to set.
314 */
315 public void setSubObjectCode(String subObjectCode) {
316 this.subObjectCode = subObjectCode;
317 }
318
319 /**
320 * @return Returns the timestamp.
321 */
322 public Timestamp getTimestamp() {
323 return timestamp;
324 }
325
326 /**
327 * @param timestamp The timestamp to set.
328 */
329 public void setTimestamp(Timestamp timestamp) {
330 this.timestamp = timestamp;
331 }
332
333 /**
334 * @return Returns the transactionEncumbranceDate.
335 */
336 public Date getTransactionEncumbranceDate() {
337 return transactionEncumbranceDate;
338 }
339
340 /**
341 * @param transactionEncumbranceDate The transactionEncumbranceDate to set.
342 */
343 public void setTransactionEncumbranceDate(Date transactionEncumbranceDate) {
344 this.transactionEncumbranceDate = transactionEncumbranceDate;
345 }
346
347 /**
348 * @return Returns the transactionEncumbranceDescription.
349 */
350 public String getTransactionEncumbranceDescription() {
351 return transactionEncumbranceDescription;
352 }
353
354 /**
355 * @param transactionEncumbranceDescription The transactionEncumbranceDescription to set.
356 */
357 public void setTransactionEncumbranceDescription(String transactionEncumbranceDescription) {
358 this.transactionEncumbranceDescription = transactionEncumbranceDescription;
359 }
360
361 /**
362 * @return Returns the universityFiscalYear.
363 */
364 public Integer getUniversityFiscalYear() {
365 return universityFiscalYear;
366 }
367
368 /**
369 * @param universityFiscalYear The universityFiscalYear to set.
370 */
371 public void setUniversityFiscalYear(Integer universityFiscalYear) {
372 this.universityFiscalYear = universityFiscalYear;
373 }
374
375 /**
376 * Gets the account attribute.
377 *
378 * @return Returns the account.
379 */
380 public Account getAccount() {
381 return account;
382 }
383
384 /**
385 * Sets the account attribute value.
386 *
387 * @param account The account to set.
388 */
389 public void setAccount(Account account) {
390 this.account = account;
391 }
392
393 /**
394 * Gets the chart attribute.
395 *
396 * @return Returns the chart.
397 */
398 public Chart getChart() {
399 return chart;
400 }
401
402 /**
403 * Sets the chart attribute value.
404 *
405 * @param chart The chart to set.
406 */
407 public void setChart(Chart chart) {
408 this.chart = chart;
409 }
410
411 /**
412 * Gets the financialObject attribute.
413 *
414 * @return Returns the financialObject.
415 */
416 public ObjectCode getFinancialObject() {
417 return financialObject;
418 }
419
420 /**
421 * Sets the financialObject attribute value.
422 *
423 * @param financialObject The financialObject to set.
424 */
425 public void setFinancialObject(ObjectCode financialObject) {
426 this.financialObject = financialObject;
427 }
428
429 /**
430 * Gets the balanceType attribute.
431 *
432 * @return Returns the balanceType.
433 */
434 public BalanceType getBalanceType() {
435 return balanceType;
436 }
437
438 /**
439 * Sets the balanceType attribute value.
440 *
441 * @param balanceType The balanceType to set.
442 */
443 public void setBalanceType(BalanceType balanceType) {
444 this.balanceType = balanceType;
445 }
446
447 /**
448 * Gets the dummyBusinessObject attribute.
449 *
450 * @return Returns the dummyBusinessObject.
451 */
452 public TransientBalanceInquiryAttributes getDummyBusinessObject() {
453 return dummyBusinessObject;
454 }
455
456 /**
457 * Sets the dummyBusinessObject attribute value.
458 *
459 * @param dummyBusinessObject The dummyBusinessObject to set.
460 */
461 public void setDummyBusinessObject(TransientBalanceInquiryAttributes dummyBusinessObject) {
462 this.dummyBusinessObject = dummyBusinessObject;
463 }
464
465 /**
466 * Gets the option attribute.
467 *
468 * @return Returns the option.
469 */
470 public SystemOptions getOption() {
471 return option;
472 }
473
474 /**
475 * Sets the option attribute value.
476 *
477 * @param option The option to set.
478 */
479 public void setOption(SystemOptions option) {
480 this.option = option;
481 }
482
483 /**
484 * Gets the subAccount attribute.
485 *
486 * @return Returns the subAccount.
487 */
488 public SubAccount getSubAccount() {
489 return subAccount;
490 }
491
492 /**
493 * Sets the subAccount attribute value.
494 *
495 * @param subAccount The subAccount to set.
496 */
497 public void setSubAccount(SubAccount subAccount) {
498 this.subAccount = subAccount;
499 }
500
501 /**
502 * Gets the financialSystemDocumentTypeCode attribute.
503 * @return Returns the financialSystemDocumentTypeCode.
504 */
505 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() {
506 return financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, financialSystemDocumentTypeCode, "financialSystemDocumentTypeCode");
507 }
508
509 /**
510 * Gets the financialSubObject attribute.
511 *
512 * @return Returns the financialSubObject.
513 */
514 public SubObjectCode getFinancialSubObject() {
515 return financialSubObject;
516 }
517
518 /**
519 * Sets the financialSubObject attribute value.
520 *
521 * @param financialSubObject The financialSubObject to set.
522 */
523 public void setFinancialSubObject(SubObjectCode financialSubObject) {
524 this.financialSubObject = financialSubObject;
525 }
526 }