001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.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/ecl1.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.bo;
017:
018: import java.util.Map;
019:
020: import org.kuali.core.bo.DocumentType;
021: import org.kuali.core.bo.PersistableBusinessObject;
022: import org.kuali.core.util.KualiDecimal;
023: import org.kuali.module.chart.bo.Account;
024: import org.kuali.module.chart.bo.Chart;
025: import org.kuali.module.chart.bo.ObjectCode;
026: import org.kuali.module.chart.bo.ObjectType;
027: import org.kuali.module.chart.bo.ProjectCode;
028: import org.kuali.module.chart.bo.SubAccount;
029: import org.kuali.module.chart.bo.SubObjCd;
030: import org.kuali.module.chart.bo.codes.BalanceTyp;
031: import org.kuali.module.financial.bo.SalesTax;
032:
033: /**
034: * An AccountLine contains all the accounting items typically necessary to create a pending entry to the G/L. All transaction
035: * documents will use this business object inherently. Specific accounting line business rules should exist not in this
036: * implementation, but rather in the document business object that uses it.
037: */
038: public interface AccountingLine extends PersistableBusinessObject {
039:
040: /**
041: * @return Returns the account.
042: */
043: public Account getAccount();
044:
045: /**
046: * @param account The account to set.
047: * @deprecated
048: */
049: public void setAccount(Account account);
050:
051: /**
052: * @return Returns the chartOfAccountsCode.
053: */
054: public Chart getChart();
055:
056: /**
057: * @param chart The chartOfAccountsCode to set.
058: * @deprecated
059: */
060: public void setChart(Chart chart);
061:
062: /**
063: * @return Returns the documentNumber.
064: */
065: public String getDocumentNumber();
066:
067: /**
068: * @return Returns the amount.
069: */
070: public KualiDecimal getAmount();
071:
072: /**
073: * @param amount The amount to set.
074: */
075: public void setAmount(KualiDecimal amount);
076:
077: /**
078: * @return Returns the balanceTyp.
079: */
080: public BalanceTyp getBalanceTyp();
081:
082: /**
083: * @param balanceTyp The balanceTyp to set.
084: * @deprecated
085: */
086: public void setBalanceTyp(BalanceTyp balanceTyp);
087:
088: /**
089: * @return Returns the objectCode.
090: */
091: public ObjectCode getObjectCode();
092:
093: /**
094: * @param objectCode The objectCode to set.
095: * @deprecated
096: */
097: public void setObjectCode(ObjectCode objectCode);
098:
099: /**
100: * @return Returns the referenceOriginCode.
101: */
102: public String getReferenceOriginCode();
103:
104: /**
105: * @param originCode The referenceOriginCode to set.
106: */
107: public void setReferenceOriginCode(String originCode);
108:
109: /**
110: * This method returns the object related to referenceOriginCode
111: *
112: * @return referenceOrigin
113: */
114: public OriginationCode getReferenceOrigin();
115:
116: /**
117: * This method sets the referenceOrigin object, this is only to be used by OJB
118: *
119: * @param referenceOrigin
120: * @deprecated
121: */
122: public void setReferenceOrigin(OriginationCode referenceOrigin);
123:
124: /**
125: * This method returns the referenceType associated with the referenceTypeCode
126: *
127: * @return referenceType
128: */
129: public DocumentType getReferenceType();
130:
131: /**
132: * This method sets the referenceType, this is only to be used by OJB
133: *
134: * @param referenceType
135: * @deprecated
136: */
137: public void setReferenceType(DocumentType referenceType);
138:
139: /**
140: * @return Returns the organizationReferenceId.
141: */
142: public String getOrganizationReferenceId();
143:
144: /**
145: * @param organizationReferenceId The organizationReferenceId to set.
146: */
147: public void setOrganizationReferenceId(
148: String organizationReferenceId);
149:
150: /**
151: * @return Returns the overrideCode.
152: */
153: public String getOverrideCode();
154:
155: /**
156: * @param overrideCode The overrideCode to set.
157: */
158: public void setOverrideCode(String overrideCode);
159:
160: /**
161: * @return Returns the postingYear.
162: */
163: public Integer getPostingYear();
164:
165: /**
166: * @param postingYear The postingYear to set.
167: */
168: public void setPostingYear(Integer postingYear);
169:
170: /**
171: * @return Returns the projectCode.
172: */
173: public String getProjectCode();
174:
175: /**
176: * @param projectCode The projectCode to set.
177: */
178: public void setProjectCode(String projectCode);
179:
180: /**
181: * @return Returns the referenceNumber.
182: */
183: public String getReferenceNumber();
184:
185: /**
186: * @param referenceNumber The referenceNumber to set.
187: */
188: public void setReferenceNumber(String referenceNumber);
189:
190: /**
191: * @return Returns the referenceTypeCode.
192: */
193: public String getReferenceTypeCode();
194:
195: /**
196: * @param referenceTypeCode The referenceTypeCode to set.
197: */
198: public void setReferenceTypeCode(String referenceTypeCode);
199:
200: /**
201: * @return Returns the sequenceNumber.
202: */
203: public Integer getSequenceNumber();
204:
205: /**
206: * @param sequenceNumber The sequenceNumber to set.
207: */
208: public void setSequenceNumber(Integer sequenceNumber);
209:
210: /**
211: * @return Returns the subAccount.
212: */
213: public SubAccount getSubAccount();
214:
215: /**
216: * @param subAccount The subAccount to set.
217: * @deprecated
218: */
219: public void setSubAccount(SubAccount subAccount);
220:
221: /**
222: * @return Returns the subObjectCode.
223: */
224: public SubObjCd getSubObjectCode();
225:
226: /**
227: * @param subObjectCode The subObjectCode to set.
228: * @deprecated
229: */
230: public void setSubObjectCode(SubObjCd subObjectCode);
231:
232: /**
233: * @param documentNumber The documentNumber to set.
234: */
235: public void setDocumentNumber(String documentNumber);
236:
237: /**
238: * This method retrieves the debit/credit code for the accounting line. This method will only return a not null value for a
239: * Journal Voucher document.
240: *
241: * @return A String code.
242: */
243: public String getDebitCreditCode();
244:
245: /**
246: * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher
247: * document.
248: *
249: * @param debitCreditCode
250: */
251: public void setDebitCreditCode(String debitCreditCode);
252:
253: /**
254: * This method retrieves the encumbrance update code for the accounting line. This method will only return a not null value for
255: * a Journal Voucher document.
256: *
257: * @return A String code.
258: */
259: public String getEncumbranceUpdateCode();
260:
261: /**
262: * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher
263: * document.
264: *
265: * @param encumbranceUpdateCode
266: */
267: public void setEncumbranceUpdateCode(String encumbranceUpdateCode);
268:
269: /**
270: * This method retrieves the ObjectType for the accounting line. This method will only return a not null value for a Journal
271: * Voucher document.
272: *
273: * @return An ObjectType instance.
274: */
275: public ObjectType getObjectType();
276:
277: /**
278: * This method sets the ObjectType for the accounting line. This method should only be used for a Journal Voucher document.
279: *
280: * @param objectType
281: * @deprecated
282: */
283: public void setObjectType(ObjectType objectType);
284:
285: /**
286: * @return Returns the accountNumber.
287: */
288: public String getAccountNumber();
289:
290: /**
291: * @param accountNumber The accountNumber to set.
292: */
293: public void setAccountNumber(String accountNumber);
294:
295: /**
296: * @return Returns the balanceTypeCode.
297: */
298: public String getBalanceTypeCode();
299:
300: /**
301: * @param balanceTypeCode The balanceTypeCode to set.
302: */
303: public void setBalanceTypeCode(String balanceTypeCode);
304:
305: /**
306: * @return Returns the chartOfAccountsCode.
307: */
308: public String getChartOfAccountsCode();
309:
310: /**
311: * @param chartOfAccountsCode The chartOfAccountsCode to set.
312: */
313: public void setChartOfAccountsCode(String chartOfAccountsCode);
314:
315: /**
316: * @return Returns the financialObjectCode.
317: */
318: public String getFinancialObjectCode();
319:
320: /**
321: * @param financialObjectCode The financialObjectCode to set.
322: */
323: public void setFinancialObjectCode(String financialObjectCode);
324:
325: /**
326: * @return Returns the financialSubObjectCode.
327: */
328: public String getFinancialSubObjectCode();
329:
330: /**
331: * @param financialSubObjectCode The financialSubObjectCode to set.
332: */
333: public void setFinancialSubObjectCode(String financialSubObjectCode);
334:
335: /**
336: * @return Returns the objectTypeCode.
337: */
338: public String getObjectTypeCode();
339:
340: /**
341: * @param objectTypeCode The objectTypeCode to set.
342: */
343: public void setObjectTypeCode(String objectTypeCode);
344:
345: /**
346: * @return Returns the financialDocumentLineTypeCode.
347: */
348: public String getFinancialDocumentLineTypeCode();
349:
350: /**
351: * @param financialDocumentLineTypeCode The financialDocumentLineTypeCode to set.
352: */
353: public void setFinancialDocumentLineTypeCode(
354: String financialDocumentLineTypeCode);
355:
356: /**
357: * @return Returns the project.
358: */
359: public ProjectCode getProject();
360:
361: /**
362: * @param project The project to set.
363: * @deprecated
364: */
365: public void setProject(ProjectCode project);
366:
367: /**
368: * @return Returns the subAccountNumber.
369: */
370: public String getSubAccountNumber();
371:
372: /**
373: * @param subAccountNumber The subAccountNumber to set.
374: */
375: public void setSubAccountNumber(String subAccountNumber);
376:
377: /**
378: * @return Returns the financialDocumentLineDescription.
379: */
380: public abstract String getFinancialDocumentLineDescription();
381:
382: /**
383: * @param financialDocumentLineDescription The financialDocumentLineDescription to set.
384: */
385: public abstract void setFinancialDocumentLineDescription(
386: String financialDocumentLineDescription);
387:
388: /**
389: * @return the sales tax associated with this line if any
390: */
391: public abstract SalesTax getSalesTax();
392:
393: /**
394: * @param salesTax The sales tax associated with this AccountingLine
395: */
396: public abstract void setSalesTax(SalesTax salesTax);
397:
398: /**
399: * This method checks to see if sales tax is required for this accounting line or not
400: *
401: * @return true if it is required, false otherwise
402: */
403: public boolean isSalesTaxRequired();
404:
405: /**
406: * You can set whether or not sales tax is required for this accounting line or not
407: *
408: * @param salesTaxRequired - true if required
409: */
410: public void setSalesTaxRequired(boolean salesTaxRequired);
411:
412: /**
413: * @see org.kuali.core.bo.AccountingLine#isSourceAccountingLine()
414: */
415: public boolean isSourceAccountingLine();
416:
417: /**
418: * @see org.kuali.core.bo.AccountingLine#isTargetAccountingLine()
419: */
420: public boolean isTargetAccountingLine();
421:
422: /**
423: * @param other
424: * @return true if this AccountingLine has the same primitive field values as the given one
425: */
426: public boolean isLike(AccountingLine other);
427:
428: /**
429: * Overwrites the fields of this AccountingLine with the values of the corresponding fields of the given AccountingLine.
430: * Reference field values are in this instance are overwritten with deepCopies of the reference fields of the given
431: * AccountingLine.
432: *
433: * @param other
434: */
435: public void copyFrom(AccountingLine other);
436:
437: /**
438: * Convenience method to make the primitive account fields from this AccountingLine easier to compare to the account fields of
439: * another AccountingLine or of an Account
440: *
441: * @return String representing the account associated with this AccountingLine
442: */
443: public String getAccountKey();
444:
445: /**
446: * This indicates the account expired component of this AccountingLine's overrideCode. It provides a DataDictionary attribute
447: * for the UI, but is not persisted itself.
448: *
449: * @return accountExpiredOverride
450: */
451: boolean getAccountExpiredOverride();
452:
453: /**
454: * @see #getAccountExpiredOverride()
455: * @param b the accountExpiredOverride to set
456: */
457: public void setAccountExpiredOverride(boolean b);
458:
459: /**
460: * This indicates the account expired override is needed (because this AccountingLine's Account is expired). It tells the UI to
461: * display the accountExpiredOverride attribute, but is not persisted itself.
462: *
463: * @return accountExpiredOverride
464: */
465: public boolean getAccountExpiredOverrideNeeded();
466:
467: /**
468: * @see #getAccountExpiredOverrideNeeded()
469: * @param b the accountExpiredOverrideNeeded to set
470: */
471: public void setAccountExpiredOverrideNeeded(boolean b);
472:
473: /**
474: * This indicates the object budget component of this AccountingLine's overrideCode. It provides a DataDictionary attribute for
475: * the UI, but is not persisted itself.
476: *
477: * @return objectBudgetOverride
478: */
479: public boolean isObjectBudgetOverride();
480:
481: /**
482: * @see #isObjectBudgetOverride()
483: * @param b the objectBudgetOverride to set
484: */
485: public void setObjectBudgetOverride(boolean b);
486:
487: /**
488: * This indicates the object budget override is needed (because this AccountingLine's Account is expired). It tells the UI to
489: * display the objectBudgetOverride attribute, but is not persisted itself.
490: *
491: * @return boolean
492: */
493: public boolean isObjectBudgetOverrideNeeded();
494:
495: /**
496: * @see #isObjectBudgetOverrideNeeded()
497: * @param b the objectBudgetOverride to set
498: */
499: public void setObjectBudgetOverrideNeeded(boolean b);
500:
501: /**
502: * Gets the nonFringeAccountOverride attribute.
503: *
504: * @return Returns the nonFringeAccountOverride.
505: */
506: public boolean getNonFringeAccountOverride();
507:
508: /**
509: * Sets the nonFringeAccountOverride attribute value.
510: *
511: * @param nonFringeAccountOverride The nonFringeAccountOverride to set.
512: */
513: public void setNonFringeAccountOverride(
514: boolean nonFringeAccountOverride);
515:
516: /**
517: * Gets the nonFringeAccountOverrideNeeded attribute.
518: *
519: * @return Returns the nonFringeAccountOverrideNeeded.
520: */
521: public boolean getNonFringeAccountOverrideNeeded();
522:
523: /**
524: * Sets the nonFringeAccountOverrideNeeded attribute value.
525: *
526: * @param nonFringeAccountOverrideNeeded The nonFringeAccountOverrideNeeded to set.
527: */
528: public void setNonFringeAccountOverrideNeeded(
529: boolean nonFringeAccountOverrideNeeded);
530:
531: /**
532: * Returns a Map with the accounting line primitive field names as the key of the map and the primitive values as the value.
533: *
534: * @return Map
535: */
536: public Map getValuesMap();
537: }
|