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.sys.document; 017 018 import java.util.List; 019 020 import org.kuali.kfs.sys.businessobject.AccountingLineParser; 021 import org.kuali.kfs.sys.businessobject.SourceAccountingLine; 022 import org.kuali.kfs.sys.businessobject.TargetAccountingLine; 023 import org.kuali.rice.kns.util.KualiDecimal; 024 025 /** 026 * This is the FinancialDocument interface. The TransactionalDocument interface should extend this. It represents any document that 027 * exists within the Financial Transactions module, but isn't transactional (i.e. no accounting lines). This interface was put in 028 * place to facilitate the CashManagementDocument which is a Financial Transaction module document, but doesn't have accounting 029 * lines. 030 */ 031 public interface AccountingDocument extends GeneralLedgerPostingDocument, GeneralLedgerPendingEntrySource { 032 /** 033 * This method is used to return the title that a transactional document should give to it's source accounting line section. 034 * 035 * @return The source accounting line section's title. 036 */ 037 public String getSourceAccountingLinesSectionTitle(); 038 039 /** 040 * This method is used to return the title that a transactional document should give to it's source accounting line section. 041 * 042 * @return The target accounting line section's title. 043 */ 044 public String getTargetAccountingLinesSectionTitle(); 045 046 /** 047 * Sums up the amounts of all of the target accounting lines. 048 */ 049 public KualiDecimal getTargetTotal(); 050 051 /** 052 * Sums up the amounts of all of the source accounting lines. 053 */ 054 public KualiDecimal getSourceTotal(); 055 056 057 /** 058 * @return AccountingLineParser instance appropriate for importing AccountingLines for this document type 059 */ 060 public AccountingLineParser getAccountingLineParser(); 061 062 /* 063 * @return Class of the document's source accounting lines 064 */ 065 public Class getSourceAccountingLineClass(); 066 067 068 /* 069 * @return Class of the document's target accounting lines 070 */ 071 public Class getTargetAccountingLineClass(); 072 073 /* 074 * @return Name of the document's source accounting lines 075 */ 076 public String getSourceAccountingLineEntryName(); 077 078 079 /* 080 * @return Name of the document's target accounting lines 081 */ 082 public String getTargetAccountingLineEntryName(); 083 084 /** 085 * Retrieves the next line sequence number for an accounting line in the Source accounting line section on a transactional 086 * document. 087 * 088 * @return The next available source line number. 089 */ 090 public Integer getNextSourceLineNumber(); 091 092 /** 093 * @param nextLineNumber 094 */ 095 public void setNextSourceLineNumber(Integer nextLineNumber); 096 097 /** 098 * Retrieves the next line sequence number for an accounting line in the Target accounting line section on a transactional 099 * document. 100 * 101 * @return The next available target line number. 102 */ 103 public Integer getNextTargetLineNumber(); 104 105 /** 106 * @param nextLineNumber 107 */ 108 public void setNextTargetLineNumber(Integer nextLineNumber); 109 110 /** 111 * This method adds a source accounting line. 112 * 113 * @param line 114 */ 115 public void addSourceAccountingLine(SourceAccountingLine line); 116 117 /** 118 * This method returns a list of target accounting lines. 119 * 120 * @return The list of source accounting lines. 121 */ 122 public List getSourceAccountingLines(); 123 124 /** 125 * This method returns the accounting line at a particular spot in the overall list of accounting lines. 126 * 127 * @param index 128 * @return The source accounting line at the specified index. 129 */ 130 public SourceAccountingLine getSourceAccountingLine(int index); 131 132 /** 133 * This method sets the list of source accounting lines for this document. 134 * 135 * @param sourceLines 136 */ 137 public void setSourceAccountingLines(List sourceLines); 138 139 /** 140 * This method adds a target accounting line to the document. 141 * 142 * @param line 143 */ 144 public void addTargetAccountingLine(TargetAccountingLine line); 145 146 /** 147 * This method retrieves all of the target accounting lines associated with this document. 148 */ 149 public List getTargetAccountingLines(); 150 151 /** 152 * This method retrieves the target accounting line at the specified index. 153 * 154 * @param index 155 * @return The target accounting line at the passed in index. 156 */ 157 public TargetAccountingLine getTargetAccountingLine(int index); 158 159 /** 160 * This method sets the list of target accounting lines for this document. 161 * 162 * @param targetLines 163 */ 164 public void setTargetAccountingLines(List targetLines); 165 166 167 /** 168 * This method returns the Class to use for AccountingLingValuesAllowedValidation. 169 */ 170 public Class<? extends AccountingDocument> getDocumentClassForAccountingLineValueAllowedValidation(); 171 172 }