1 /* 2 * Copyright 2007 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.ole.sys.businessobject; 17 18 import java.util.Map; 19 20 import org.kuali.ole.coa.businessobject.Account; 21 import org.kuali.ole.coa.businessobject.BalanceType; 22 import org.kuali.ole.coa.businessobject.Chart; 23 import org.kuali.ole.coa.businessobject.ObjectCode; 24 import org.kuali.ole.coa.businessobject.ObjectType; 25 import org.kuali.ole.coa.businessobject.ProjectCode; 26 import org.kuali.ole.coa.businessobject.SubAccount; 27 import org.kuali.ole.coa.businessobject.SubObjectCode; 28 import org.kuali.ole.fp.businessobject.SalesTax; 29 import org.kuali.rice.core.api.util.type.KualiDecimal; 30 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 31 import org.kuali.rice.krad.bo.PersistableBusinessObject; 32 33 /** 34 * An AccountLine contains all the accounting items typically necessary to create a pending entry to the G/L. All transaction 35 * documents will use this business object inherently. Specific accounting line business rules should exist not in this 36 * implementation, but rather in the document business object that uses it. 37 */ 38 public interface AccountingLine extends PersistableBusinessObject, GeneralLedgerPendingEntrySourceDetail { 39 40 /** 41 * @param account The account to set. 42 * @deprecated 43 */ 44 public void setAccount(Account account); 45 46 /** 47 * @return Returns the chartOfAccountsCode. 48 */ 49 public Chart getChart(); 50 51 /** 52 * @param chart The chartOfAccountsCode to set. 53 * @deprecated 54 */ 55 public void setChart(Chart chart); 56 57 /** 58 * @param amount The amount to set. 59 */ 60 public void setAmount(KualiDecimal amount); 61 62 /** 63 * @return Returns the balanceTyp. 64 */ 65 public BalanceType getBalanceTyp(); 66 67 /** 68 * @param balanceTyp The balanceTyp to set. 69 * @deprecated 70 */ 71 public void setBalanceTyp(BalanceType balanceTyp); 72 73 /** 74 * @param objectCode The objectCode to set. 75 * @deprecated 76 */ 77 public void setObjectCode(ObjectCode objectCode); 78 79 /** 80 * @param originCode The referenceOriginCode to set. 81 */ 82 public void setReferenceOriginCode(String originCode); 83 84 /** 85 * This method returns the object related to referenceOriginCode 86 * 87 * @return referenceOrigin 88 */ 89 public OriginationCode getReferenceOrigin(); 90 91 /** 92 * This method sets the referenceOrigin object, this is only to be used by OJB 93 * 94 * @param referenceOrigin 95 * @deprecated 96 */ 97 public void setReferenceOrigin(OriginationCode referenceOrigin); 98 99 /** 100 * Gets the referenceFinancialSystemDocumentTypeCode attribute. 101 * 102 * @return Returns the referenceFinancialSystemDocumentTypeCode. 103 */ 104 public DocumentTypeEBO getReferenceFinancialSystemDocumentTypeCode(); 105 106 /** 107 * @param organizationReferenceId The organizationReferenceId to set. 108 */ 109 public void setOrganizationReferenceId(String organizationReferenceId); 110 111 /** 112 * @return Returns the overrideCode. 113 */ 114 public String getOverrideCode(); 115 116 /** 117 * @param overrideCode The overrideCode to set. 118 */ 119 public void setOverrideCode(String overrideCode); 120 121 /** 122 * @param postingYear The postingYear to set. 123 */ 124 public void setPostingYear(Integer postingYear); 125 126 /** 127 * @param projectCode The projectCode to set. 128 */ 129 public void setProjectCode(String projectCode); 130 131 /** 132 * @param referenceNumber The referenceNumber to set. 133 */ 134 public void setReferenceNumber(String referenceNumber); 135 136 /** 137 * @param referenceTypeCode The referenceTypeCode to set. 138 */ 139 public void setReferenceTypeCode(String referenceTypeCode); 140 141 /** 142 * @return Returns the sequenceNumber. 143 */ 144 public Integer getSequenceNumber(); 145 146 /** 147 * @param sequenceNumber The sequenceNumber to set. 148 */ 149 public void setSequenceNumber(Integer sequenceNumber); 150 151 /** 152 * @return Returns the subAccount. 153 */ 154 public SubAccount getSubAccount(); 155 156 /** 157 * @param subAccount The subAccount to set. 158 * @deprecated 159 */ 160 public void setSubAccount(SubAccount subAccount); 161 162 /** 163 * @return Returns the subObjectCode. 164 */ 165 public SubObjectCode getSubObjectCode(); 166 167 /** 168 * @param subObjectCode The subObjectCode to set. 169 * @deprecated 170 */ 171 public void setSubObjectCode(SubObjectCode subObjectCode); 172 173 /** 174 * @param documentNumber The documentNumber to set. 175 */ 176 public void setDocumentNumber(String documentNumber); 177 178 /** 179 * This method retrieves the debit/credit code for the accounting line. This method will only return a not null value for a 180 * Journal Voucher document. 181 * 182 * @return A String code. 183 */ 184 public String getDebitCreditCode(); 185 186 /** 187 * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher 188 * document. 189 * 190 * @param debitCreditCode 191 */ 192 public void setDebitCreditCode(String debitCreditCode); 193 194 /** 195 * This method retrieves the encumbrance update code for the accounting line. This method will only return a not null value for 196 * a Journal Voucher document. 197 * 198 * @return A String code. 199 */ 200 public String getEncumbranceUpdateCode(); 201 202 /** 203 * This method sets the debit/credit code for the accounting line. This method should only be used for a Journal Voucher 204 * document. 205 * 206 * @param encumbranceUpdateCode 207 */ 208 public void setEncumbranceUpdateCode(String encumbranceUpdateCode); 209 210 /** 211 * This method retrieves the ObjectType for the accounting line. This method will only return a not null value for a Journal 212 * Voucher document. 213 * 214 * @return An ObjectType instance. 215 */ 216 public ObjectType getObjectType(); 217 218 /** 219 * @param accountNumber The accountNumber to set. 220 */ 221 public void setAccountNumber(String accountNumber); 222 223 /** 224 * @param balanceTypeCode The balanceTypeCode to set. 225 */ 226 public void setBalanceTypeCode(String balanceTypeCode); 227 228 /** 229 * @param chartOfAccountsCode The chartOfAccountsCode to set. 230 */ 231 public void setChartOfAccountsCode(String chartOfAccountsCode); 232 233 /** 234 * @param financialObjectCode The financialObjectCode to set. 235 */ 236 public void setFinancialObjectCode(String financialObjectCode); 237 238 /** 239 * @param financialSubObjectCode The financialSubObjectCode to set. 240 */ 241 public void setFinancialSubObjectCode(String financialSubObjectCode); 242 243 /** 244 * @return Returns the objectTypeCode. 245 */ 246 public String getObjectTypeCode(); 247 248 /** 249 * @return Returns the financialDocumentLineTypeCode. 250 */ 251 public String getFinancialDocumentLineTypeCode(); 252 253 /** 254 * @param financialDocumentLineTypeCode The financialDocumentLineTypeCode to set. 255 */ 256 public void setFinancialDocumentLineTypeCode(String financialDocumentLineTypeCode); 257 258 /** 259 * @return Returns the project. 260 */ 261 public ProjectCode getProject(); 262 263 /** 264 * @param project The project to set. 265 * @deprecated 266 */ 267 public void setProject(ProjectCode project); 268 269 /** 270 * @param subAccountNumber The subAccountNumber to set. 271 */ 272 public void setSubAccountNumber(String subAccountNumber); 273 274 /** 275 * @param financialDocumentLineDescription The financialDocumentLineDescription to set. 276 */ 277 public abstract void setFinancialDocumentLineDescription(String financialDocumentLineDescription); 278 279 /** 280 * @return the sales tax associated with this line if any 281 */ 282 public abstract SalesTax getSalesTax(); 283 284 /** 285 * @param salesTax The sales tax associated with this AccountingLine 286 */ 287 public abstract void setSalesTax(SalesTax salesTax); 288 289 /** 290 * This method checks to see if sales tax is required for this accounting line or not 291 * 292 * @return true if it is required, false otherwise 293 */ 294 public boolean isSalesTaxRequired(); 295 296 /** 297 * You can set whether or not sales tax is required for this accounting line or not 298 * 299 * @param salesTaxRequired - true if required 300 */ 301 public void setSalesTaxRequired(boolean salesTaxRequired); 302 303 /** 304 * @see org.kuali.rice.krad.bo.AccountingLine#isSourceAccountingLine() 305 */ 306 public boolean isSourceAccountingLine(); 307 308 /** 309 * @see org.kuali.rice.krad.bo.AccountingLine#isTargetAccountingLine() 310 */ 311 public boolean isTargetAccountingLine(); 312 313 /** 314 * @param other 315 * @return true if this AccountingLine has the same primitive field values as the given one 316 */ 317 public boolean isLike(AccountingLine other); 318 319 /** 320 * Overwrites the fields of this AccountingLine with the values of the corresponding fields of the given AccountingLine. 321 * Reference field values are in this instance are overwritten with deepCopies of the reference fields of the given 322 * AccountingLine. 323 * 324 * @param other 325 */ 326 public void copyFrom(AccountingLine other); 327 328 /** 329 * Convenience method to make the primitive account fields from this AccountingLine easier to compare to the account fields of 330 * another AccountingLine or of an Account 331 * 332 * @return String representing the account associated with this AccountingLine 333 */ 334 public String getAccountKey(); 335 336 /** 337 * This indicates the account expired component of this AccountingLine's overrideCode. It provides a DataDictionary attribute 338 * for the UI, but is not persisted itself. 339 * 340 * @return accountExpiredOverride 341 */ 342 boolean getAccountExpiredOverride(); 343 344 /** 345 * @see #getAccountExpiredOverride() 346 * @param b the accountExpiredOverride to set 347 */ 348 public void setAccountExpiredOverride(boolean b); 349 350 /** 351 * This indicates the account expired override is needed (because this AccountingLine's Account is expired). It tells the UI to 352 * display the accountExpiredOverride attribute, but is not persisted itself. 353 * 354 * @return accountExpiredOverride 355 */ 356 public boolean getAccountExpiredOverrideNeeded(); 357 358 /** 359 * @see #getAccountExpiredOverrideNeeded() 360 * @param b the accountExpiredOverrideNeeded to set 361 */ 362 public void setAccountExpiredOverrideNeeded(boolean b); 363 364 /** 365 * This indicates the object budget component of this AccountingLine's overrideCode. It provides a DataDictionary attribute for 366 * the UI, but is not persisted itself. 367 * 368 * @return objectBudgetOverride 369 */ 370 public boolean isObjectBudgetOverride(); 371 372 /** 373 * @see #isObjectBudgetOverride() 374 * @param b the objectBudgetOverride to set 375 */ 376 public void setObjectBudgetOverride(boolean b); 377 378 /** 379 * This indicates the object budget override is needed (because this AccountingLine's Account is expired). It tells the UI to 380 * display the objectBudgetOverride attribute, but is not persisted itself. 381 * 382 * @return boolean 383 */ 384 public boolean isObjectBudgetOverrideNeeded(); 385 386 /** 387 * @see #isObjectBudgetOverrideNeeded() 388 * @param b the objectBudgetOverride to set 389 */ 390 public void setObjectBudgetOverrideNeeded(boolean b); 391 392 /** 393 * Gets the nonFringeAccountOverride attribute. 394 * 395 * @return Returns the nonFringeAccountOverride. 396 */ 397 public boolean getNonFringeAccountOverride(); 398 399 /** 400 * Sets the nonFringeAccountOverride attribute value. 401 * 402 * @param nonFringeAccountOverride The nonFringeAccountOverride to set. 403 */ 404 public void setNonFringeAccountOverride(boolean nonFringeAccountOverride); 405 406 /** 407 * Gets the nonFringeAccountOverrideNeeded attribute. 408 * 409 * @return Returns the nonFringeAccountOverrideNeeded. 410 */ 411 public boolean getNonFringeAccountOverrideNeeded(); 412 413 /** 414 * Sets the nonFringeAccountOverrideNeeded attribute value. 415 * 416 * @param nonFringeAccountOverrideNeeded The nonFringeAccountOverrideNeeded to set. 417 */ 418 public void setNonFringeAccountOverrideNeeded(boolean nonFringeAccountOverrideNeeded); 419 420 /** 421 * Returns a Map with the accounting line primitive field names as the key of the map and the primitive values as the value. 422 * 423 * @return Map 424 */ 425 public Map getValuesMap(); 426 }