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