1 /*
2 * Copyright 2008 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.document;
17
18 import java.util.List;
19
20 import org.kuali.ole.sys.businessobject.FinancialSystemDocumentHeader;
21 import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry;
22 import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySequenceHelper;
23 import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail;
24 import org.kuali.rice.core.api.util.type.KualiDecimal;
25 import org.kuali.rice.krad.bo.DocumentHeader;
26
27 /**
28 * A collection of methods needed by anything - document or otherwise - that plans to generate
29 * General Ledger pending entries.
30 */
31 public interface GeneralLedgerPendingEntrySource {
32
33 /**
34 * Creates any GeneralLedgerPostingEntry's that are based on a document, not those based on GeneralLedgerPendingEntrySourceDetail entries
35 * @param sequenceHelper a sequence helper for the method to create more general ledger pending entries
36 * @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
37 */
38 public boolean generateDocumentGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySequenceHelper sequenceHelper);
39
40 /**
41 * @return the fiscal year when this "helper" was posted
42 */
43 public Integer getPostingYear();
44
45 /**
46 * This method determines if the passed in GeneralLedgerPendingEntrySourceDetail is a debit or not.
47 * @param postable
48 * @return true if the given GeneralLedgerPendingEntrySourceDetail is a debit, false if it is a credit
49 */
50 public boolean isDebit(GeneralLedgerPendingEntrySourceDetail postable);
51
52 /**
53 * Returns a document header associated with this general ledger posting helper
54 * @return a document header, having information which should be put into the generated GeneralLedgerPendingEntry records
55 */
56 public FinancialSystemDocumentHeader getFinancialSystemDocumentHeader();
57
58 /**
59 * Returns a document header associated with this general ledger posting helper
60 * @return a document header, having information which should be put into the generated GeneralLedgerPendingEntry records
61 */
62 public DocumentHeader getDocumentHeader();
63
64 /**
65 * Requests that the posting helper removes any general ledger pending entries it might be holding, so that new ones can be generated
66 */
67 public void clearAnyGeneralLedgerPendingEntries();
68
69 /**
70 * Returns a list of any GeneralLedgerPostables this helper has, to create GeneralLedgerPendingEntries
71 * @return a list of GeneralLedgerPostables
72 */
73 public List<GeneralLedgerPendingEntrySourceDetail> getGeneralLedgerPendingEntrySourceDetails();
74
75 /**
76 * Adds an UNSAVED general ledger pending entry to the GeneralLedgerPendingEntrySource, which the GLPESource can do with as it pleases
77 * @param entry the completed entry to give back to the helper to handle
78 */
79 public void addPendingEntry(GeneralLedgerPendingEntry entry);
80
81 /**
82 * A method to determine what the actual amount, based off of a GeneralLedgerPendingEntrySourceDetail, should be for the resultant GeneralLedgerPendingEntry
83 * @param glpeSourceDetail the detail line from the general ledger pending entry source to find an amount for
84 * @return The amount that will be used to populate the amount on the generated general ledger pending entry for the given source detail
85 */
86 public KualiDecimal getGeneralLedgerPendingEntryAmountForDetail(GeneralLedgerPendingEntrySourceDetail glpeSourceDetail);
87
88 /**
89 * 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.krad.document.
90 * @return the document type code
91 */
92 public String getFinancialDocumentTypeCode();
93
94 /**
95 * 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
96 * @param glpeSourceDetail the source detail line to generate general ledger pending entries for
97 * @param sequenceHelper the sequence helper which will assign sequence number to generated general ledger pending entries
98 * @return true if general ledger pending entry generation was successful; false if an error condition prevented the successful generation of the pending entries
99 */
100 public boolean generateGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySourceDetail glpeSourceDetail, GeneralLedgerPendingEntrySequenceHelper sequenceHelper);
101
102 }