001/*
002 * Copyright 2008 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 */
016package org.kuali.ole.module.purap.service;
017
018import org.kuali.ole.module.purap.businessobject.CreditMemoItem;
019import org.kuali.ole.module.purap.businessobject.InvoiceItem;
020import org.kuali.ole.module.purap.businessobject.PaymentRequestItem;
021
022import java.util.List;
023
024public interface PurapAccountRevisionService {
025    /**
026     * This method will identify the changes happened to existing payment request accounting lines and update the account change
027     * history table. If new lines are added, then new account history lines are added too.
028     *
029     * @param paymentRequestItems Items from payment request document
030     * @param postingYear         Posting year
031     * @param postingPeriodCode   Posting period code
032     */
033    void savePaymentRequestAccountRevisions(List<PaymentRequestItem> paymentRequestItems, Integer postingYear, String postingPeriodCode);
034
035    /**
036     * This method will identify the changes happened to existing payment request accounting lines and update the account change
037     * history table. If new lines are added, then new account history lines are added too.
038     *
039     * @param invoiceItems      Items from payment request document
040     * @param postingYear       Posting year
041     * @param postingPeriodCode Posting period code
042     */
043    void saveInvoiceAccountRevisions(List<InvoiceItem> invoiceItems, Integer postingYear, String postingPeriodCode);
044
045    /**
046     * This method will identify the changes happened to existing credit memo accounting lines and update the account change history
047     * table. If new lines are added, then new account history lines are added too.
048     *
049     * @param paymentRequestItems Items from payment request document
050     * @param postingYear         Posting year
051     * @param postingPeriodCode   Posting period code
052     */
053    void saveCreditMemoAccountRevisions(List<CreditMemoItem> creditMemoItems, Integer postingYear, String postingPeriodCode);
054
055    /**
056     * This method will negate all existing payment request account line revisions
057     *
058     * @param paymentRequestItems Items from payment request document
059     * @param postingYear         Posting year
060     * @param postingPeriodCode   Posting period code
061     */
062    void cancelPaymentRequestAccountRevisions(List<PaymentRequestItem> paymentRequestItems, Integer postingYear, String postingPeriodCode);
063
064    /**
065     * This method will negate all existing payment request account line revisions
066     *
067     * @param invoiceItems      Items from payment request document
068     * @param postingYear       Posting year
069     * @param postingPeriodCode Posting period code
070     */
071    void cancelInvoiceAccountRevisions(List<InvoiceItem> invoiceItems, Integer postingYear, String postingPeriodCode);
072
073
074    /**
075     * This method will negate all existing credit memo account revision lines
076     *
077     * @param paymentRequestItems Items from payment request document
078     * @param postingYear         Posting year
079     * @param postingPeriodCode   Posting period code
080     */
081    void cancelCreditMemoAccountRevisions(List<CreditMemoItem> creditMemoItems, Integer postingYear, String postingPeriodCode);
082}