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.FinancialSystemDocumentHeader; 021 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry; 022 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntrySequenceHelper; 023 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntrySourceDetail; 024 import org.kuali.rice.kns.util.KualiDecimal; 025 026 /** 027 * A collection of methods needed by anything - document or otherwise - that plans to generate 028 * General Ledger pending entries. 029 */ 030 public interface GeneralLedgerPendingEntrySource { 031 032 /** 033 * Creates any GeneralLedgerPostingEntry's that are based on a document, not those based on GeneralLedgerPendingEntrySourceDetail entries 034 * @param sequenceHelper a sequence helper for the method to create more general ledger pending entries 035 * @return true if the pending entries were able to be successfully created and added to this GeneralLedgerPendingEntrySource; false if an error condition occurred with mean that GLPEs were not correctly generated 036 */ 037 public boolean generateDocumentGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySequenceHelper sequenceHelper); 038 039 /** 040 * @return the fiscal year when this "helper" was posted 041 */ 042 public Integer getPostingYear(); 043 044 /** 045 * This method determines if the passed in GeneralLedgerPendingEntrySourceDetail is a debit or not. 046 * @param postable 047 * @return true if the given GeneralLedgerPendingEntrySourceDetail is a debit, false if it is a credit 048 */ 049 public boolean isDebit(GeneralLedgerPendingEntrySourceDetail postable); 050 051 /** 052 * Returns a document header associated with this general ledger posting helper 053 * @return a document header, having information which should be put into the generated GeneralLedgerPendingEntry records 054 */ 055 public FinancialSystemDocumentHeader getDocumentHeader(); 056 057 /** 058 * Requests that the posting helper removes any general ledger pending entries it might be holding, so that new ones can be generated 059 */ 060 public void clearAnyGeneralLedgerPendingEntries(); 061 062 /** 063 * Returns a list of any GeneralLedgerPostables this helper has, to create GeneralLedgerPendingEntries 064 * @return a list of GeneralLedgerPostables 065 */ 066 public List<GeneralLedgerPendingEntrySourceDetail> getGeneralLedgerPendingEntrySourceDetails(); 067 068 /** 069 * Adds an UNSAVED general ledger pending entry to the GeneralLedgerPendingEntrySource, which the GLPESource can do with as it pleases 070 * @param entry the completed entry to give back to the helper to handle 071 */ 072 public void addPendingEntry(GeneralLedgerPendingEntry entry); 073 074 /** 075 * A method to determine what the actual amount, based off of a GeneralLedgerPendingEntrySourceDetail, should be for the resultant GeneralLedgerPendingEntry 076 * @param glpeSourceDetail the detail line from the general ledger pending entry source to find an amount for 077 * @return The amount that will be used to populate the amount on the generated general ledger pending entry for the given source detail 078 */ 079 public KualiDecimal getGeneralLedgerPendingEntryAmountForDetail(GeneralLedgerPendingEntrySourceDetail glpeSourceDetail); 080 081 /** 082 * This method returns the financial document type code. It's required to return the appropriate financial document type code only if poster class is not assignable from org.kuali.rice.kns.document. 083 * @return the document type code 084 */ 085 public String getFinancialDocumentTypeCode(); 086 087 /** 088 * Generates any number of general ledger pending entries from a given general ledger pending entry source detail and adds them to this general ledger pending entry source 089 * @param glpeSourceDetail the source detail line to generate general ledger pending entries for 090 * @param sequenceHelper the sequence helper which will assign sequence number to generated general ledger pending entries 091 * @return true if general ledger pending entry generation was successful; false if an error condition prevented the successful generation of the pending entries 092 */ 093 public boolean generateGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySourceDetail glpeSourceDetail, GeneralLedgerPendingEntrySequenceHelper sequenceHelper); 094 095 }