/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.sys.businessobject; import java.util.Map; import org.kuali.kfs.coa.businessobject.Account; import org.kuali.kfs.coa.businessobject.BalanceType; import org.kuali.kfs.coa.businessobject.Chart; import org.kuali.kfs.coa.businessobject.ObjectCode; import org.kuali.kfs.coa.businessobject.ObjectType; import org.kuali.kfs.coa.businessobject.ProjectCode; import org.kuali.kfs.coa.businessobject.SubAccount; import org.kuali.kfs.coa.businessobject.SubObjectCode; import org.kuali.kfs.fp.businessobject.SalesTax; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; import org.kuali.rice.krad.bo.PersistableBusinessObject; /** * An AccountLine contains all the accounting items typically necessary to create a pending entry to the G/L. All transaction * documents will use this business object inherently. Specific accounting line business rules should exist not in this * implementation, but rather in the document business object that uses it. */ public interface AccountingLine extends PersistableBusinessObject, GeneralLedgerPendingEntrySourceDetail { /** * @param account The account to set. * @deprecated */ public void setAccount(Account account); /** * @return Returns the chartOfAccountsCode. */ public Chart getChart(); /** * @param chart The chartOfAccountsCode to set. * @deprecated */ public void setChart(Chart chart); /** * @param amount The amount to set. */ public void setAmount(KualiDecimal amount); /** * @return Returns the balanceTyp. */ public BalanceType getBalanceTyp(); /** * @param balanceTyp The balanceTyp to set. * @deprecated */ public void setBalanceTyp(BalanceType balanceTyp); /** * @param objectCode The objectCode to set. * @deprecated */ public void setObjectCode(ObjectCode objectCode); /** * @param originCode The referenceOriginCode to set. */ public void setReferenceOriginCode(String originCode); /** * This method returns the object related to referenceOriginCode * * @return referenceOrigin */ public OriginationCode getReferenceOrigin(); /** * This method sets the referenceOrigin object, this is only to be used by OJB * * @param referenceOrigin * @deprecated */ public void setReferenceOrigin(OriginationCode referenceOrigin); /** * Gets the referenceFinancialSystemDocumentTypeCode attribute. * * @return Returns the referenceFinancialSystemDocumentTypeCode. */ public DocumentTypeEBO getReferenceFinancialSystemDocumentTypeCode(); /** * @param organizationReferenceId The organizationReferenceId to set. */ public void setOrganizationReferenceId(String organizationReferenceId); /** * @return Returns the overrideCode. */ public String getOverrideCode(); /** * @param overrideCode The overrideCode to set. */ public void setOverrideCode(String overrideCode); /** * @param postingYear The postingYear to set. */ public void setPostingYear(Integer postingYear); /** * @param projectCode The projectCode to set. */ public void setProjectCode(String projectCode); /** * @param referenceNumber The referenceNumber to set. */ public void setReferenceNumber(String referenceNumber); /** * @param referenceTypeCode The referenceTypeCode to set. */ public void setReferenceTypeCode(String referenceTypeCode); /** * @return Returns the sequenceNumber. */ public Integer getSequenceNumber(); /** * @param sequenceNumber The sequenceNumber to set. */ public void setSequenceNumber(Integer sequenceNumber); /** * @return Returns the subAccount. */ public SubAccount getSubAccount(); /** * @param subAccount The subAccount to set. * @deprecated */ public void setSubAccount(SubAccount subAccount); /** * @return Returns the subObjectCode. */ public SubObjectCode getSubObjectCode(); /** * @param subObjectCode The subObjectCode to set. * @deprecated */ public void setSubObjectCode(SubObjectCode subObjectCode); /** * @param documentNumber The documentNumber to set. */ public void setDocumentNumber(String documentNumber); /** * This method retrieves the debit/credit code for the accounting line. This method will only return a not null value for a * Journal Voucher document. * * @return A String code. */ public String getDebitCreditCode(); /** * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher * document. * * @param debitCreditCode */ public void setDebitCreditCode(String debitCreditCode); /** * This method retrieves the encumbrance update code for the accounting line. This method will only return a not null value for * a Journal Voucher document. * * @return A String code. */ public String getEncumbranceUpdateCode(); /** * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher * document. * * @param encumbranceUpdateCode */ public void setEncumbranceUpdateCode(String encumbranceUpdateCode); /** * This method retrieves the ObjectType for the accounting line. This method will only return a not null value for a Journal * Voucher document. * * @return An ObjectType instance. */ public ObjectType getObjectType(); /** * @param accountNumber The accountNumber to set. */ public void setAccountNumber(String accountNumber); /** * @param balanceTypeCode The balanceTypeCode to set. */ public void setBalanceTypeCode(String balanceTypeCode); /** * @param chartOfAccountsCode The chartOfAccountsCode to set. */ public void setChartOfAccountsCode(String chartOfAccountsCode); /** * @param financialObjectCode The financialObjectCode to set. */ public void setFinancialObjectCode(String financialObjectCode); /** * @param financialSubObjectCode The financialSubObjectCode to set. */ public void setFinancialSubObjectCode(String financialSubObjectCode); /** * @return Returns the objectTypeCode. */ public String getObjectTypeCode(); /** * @return Returns the financialDocumentLineTypeCode. */ public String getFinancialDocumentLineTypeCode(); /** * @param financialDocumentLineTypeCode The financialDocumentLineTypeCode to set. */ public void setFinancialDocumentLineTypeCode(String financialDocumentLineTypeCode); /** * @return Returns the project. */ public ProjectCode getProject(); /** * @param project The project to set. * @deprecated */ public void setProject(ProjectCode project); /** * @param subAccountNumber The subAccountNumber to set. */ public void setSubAccountNumber(String subAccountNumber); /** * @param financialDocumentLineDescription The financialDocumentLineDescription to set. */ public abstract void setFinancialDocumentLineDescription(String financialDocumentLineDescription); /** * @return the sales tax associated with this line if any */ public abstract SalesTax getSalesTax(); /** * @param salesTax The sales tax associated with this AccountingLine */ public abstract void setSalesTax(SalesTax salesTax); /** * This method checks to see if sales tax is required for this accounting line or not * * @return true if it is required, false otherwise */ public boolean isSalesTaxRequired(); /** * You can set whether or not sales tax is required for this accounting line or not * * @param salesTaxRequired - true if required */ public void setSalesTaxRequired(boolean salesTaxRequired); /** * @see org.kuali.rice.krad.bo.AccountingLine#isSourceAccountingLine() */ public boolean isSourceAccountingLine(); /** * @see org.kuali.rice.krad.bo.AccountingLine#isTargetAccountingLine() */ public boolean isTargetAccountingLine(); /** * @param other * @return true if this AccountingLine has the same primitive field values as the given one */ public boolean isLike(AccountingLine other); /** * Overwrites the fields of this AccountingLine with the values of the corresponding fields of the given AccountingLine. * Reference field values are in this instance are overwritten with deepCopies of the reference fields of the given * AccountingLine. * * @param other */ public void copyFrom(AccountingLine other); /** * Convenience method to make the primitive account fields from this AccountingLine easier to compare to the account fields of * another AccountingLine or of an Account * * @return String representing the account associated with this AccountingLine */ public String getAccountKey(); /** * This indicates the account expired component of this AccountingLine's overrideCode. It provides a DataDictionary attribute * for the UI, but is not persisted itself. * * @return accountExpiredOverride */ boolean getAccountExpiredOverride(); /** * @see #getAccountExpiredOverride() * @param b the accountExpiredOverride to set */ public void setAccountExpiredOverride(boolean b); /** * This indicates the account expired override is needed (because this AccountingLine's Account is expired). It tells the UI to * display the accountExpiredOverride attribute, but is not persisted itself. * * @return accountExpiredOverride */ public boolean getAccountExpiredOverrideNeeded(); /** * @see #getAccountExpiredOverrideNeeded() * @param b the accountExpiredOverrideNeeded to set */ public void setAccountExpiredOverrideNeeded(boolean b); /** * This indicates the object budget component of this AccountingLine's overrideCode. It provides a DataDictionary attribute for * the UI, but is not persisted itself. * * @return objectBudgetOverride */ public boolean isObjectBudgetOverride(); /** * @see #isObjectBudgetOverride() * @param b the objectBudgetOverride to set */ public void setObjectBudgetOverride(boolean b); /** * This indicates the object budget override is needed (because this AccountingLine's Account is expired). It tells the UI to * display the objectBudgetOverride attribute, but is not persisted itself. * * @return boolean */ public boolean isObjectBudgetOverrideNeeded(); /** * @see #isObjectBudgetOverrideNeeded() * @param b the objectBudgetOverride to set */ public void setObjectBudgetOverrideNeeded(boolean b); /** * Gets the nonFringeAccountOverride attribute. * * @return Returns the nonFringeAccountOverride. */ public boolean getNonFringeAccountOverride(); /** * Sets the nonFringeAccountOverride attribute value. * * @param nonFringeAccountOverride The nonFringeAccountOverride to set. */ public void setNonFringeAccountOverride(boolean nonFringeAccountOverride); /** * Gets the nonFringeAccountOverrideNeeded attribute. * * @return Returns the nonFringeAccountOverrideNeeded. */ public boolean getNonFringeAccountOverrideNeeded(); /** * Sets the nonFringeAccountOverrideNeeded attribute value. * * @param nonFringeAccountOverrideNeeded The nonFringeAccountOverrideNeeded to set. */ public void setNonFringeAccountOverrideNeeded(boolean nonFringeAccountOverrideNeeded); /** * Returns a Map with the accounting line primitive field names as the key of the map and the primitive values as the value. * * @return Map */ public Map getValuesMap(); }