001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.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/ecl1.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.module.purap.service;
017:
018: import org.kuali.kfs.bo.AccountingLine;
019: import org.kuali.kfs.bo.GeneralLedgerPendingEntry;
020: import org.kuali.module.purap.document.AccountsPayableDocument;
021: import org.kuali.module.purap.document.CreditMemoDocument;
022: import org.kuali.module.purap.document.PaymentRequestDocument;
023: import org.kuali.module.purap.document.PurchaseOrderDocument;
024: import org.kuali.module.purap.document.PurchasingAccountsPayableDocument;
025:
026: public interface PurapGeneralLedgerService {
027:
028: public final static String CREATE_PAYMENT_REQUEST = "create";
029: public final static String CANCEL_PAYMENT_REQUEST = "cancel";
030: public final static String MODIFY_PAYMENT_REQUEST = "modify";
031: public final static boolean CREATE_CREDIT_MEMO = false;
032: public final static boolean CANCEL_CREDIT_MEMO = !CREATE_CREDIT_MEMO;
033:
034: /**
035: * Customize the given general ledger entry based on the document type.
036: *
037: * @param purapDocument Document creating entries
038: * @param accountingLine AccountingLine from document used to create the pending entry
039: * @param explicitEntry GeneralLedgerPendingEntry that has been created with account info
040: * @param referenceDocumentNumber Number of the referenced document
041: * @param debitCreditCode String field indicating if the entry is a debit or credit
042: * @param docType Document type creating the pending entries
043: * @param isEncumbrance Boolean to indicate if the entry is an encumbrance
044: */
045: public void customizeGeneralLedgerPendingEntry(
046: PurchasingAccountsPayableDocument purapDocument,
047: AccountingLine accountingLine,
048: GeneralLedgerPendingEntry explicitEntry,
049: Integer referenceDocumentNumber, String debitCreditCode,
050: String docType, boolean isEncumbrance);
051:
052: /**
053: * Generates general ledger pending entries for the creation of a Payment Request
054: *
055: * @param preq PaymentRequestDocument which holds the accounts to create the entries
056: */
057: public void generateEntriesCreatePaymentRequest(
058: PaymentRequestDocument preq);
059:
060: /**
061: * Generates general ledger pending entries for the modification of a Payment Request. No entries will be created if the
062: * calculated change is zero (meaning no change was made). Also, no encumbrance entries will be created.
063: *
064: * @param preq PaymentRequestDocument which holds the accounts to create the entries
065: */
066: public void generateEntriesModifyPaymentRequest(
067: PaymentRequestDocument preq);
068:
069: /**
070: * Generates general ledger pending entries for the creation of a Credit Memo
071: *
072: * @param cm CreditMemoDocument which holds the accounts to create the entries
073: */
074: public void generateEntriesCreateCreditMemo(CreditMemoDocument cm);
075:
076: /**
077: * Generates general ledger pending entries for the cancellation of an Accounts Payable document.
078: *
079: * @param apDocument AccountsPayableDocument which holds the accounts to create the entries for the cancellation
080: */
081: public void generateEntriesCancelAccountsPayableDocument(
082: AccountsPayableDocument apDocument);
083:
084: /**
085: * Generates general ledger pending entries for the amendment of a Purchase Order
086: *
087: * @param po PurchaseOrderDocument which holds the accounts to create the entries
088: */
089: public void generateEntriesApproveAmendPurchaseOrder(
090: PurchaseOrderDocument po);
091:
092: /**
093: * Generates general ledger pending entries for when a Purchase Order is closed which will disencumber all the remaining
094: * encumbrances
095: *
096: * @param po PurchaseOrderDocument which holds the accounts to create the entries
097: */
098: public void generateEntriesClosePurchaseOrder(
099: PurchaseOrderDocument po);
100:
101: /**
102: * Generates general ledger pending entries for when a Purchase Order is reopened which will calculate the funds to be
103: * re-encumbered
104: *
105: * @param po PurchaseOrderDocument which holds the accounts to create the entries
106: */
107: public void generateEntriesReopenPurchaseOrder(
108: PurchaseOrderDocument po);
109:
110: /**
111: * Generates general ledger pending entries for when a Purchase Order is voided
112: *
113: * @param po PurchaseOrderDocument which holds the accounts to create the entries
114: */
115: public void generateEntriesVoidPurchaseOrder(
116: PurchaseOrderDocument po);
117:
118: }
|