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.cab.batch.service;
017
018 import java.sql.Date;
019 import java.sql.Timestamp;
020 import java.util.Collection;
021 import java.util.HashSet;
022 import java.util.List;
023
024 import org.kuali.kfs.gl.businessobject.Entry;
025 import org.kuali.kfs.module.cab.batch.ExtractProcessLog;
026 import org.kuali.kfs.module.cab.businessobject.PurchasingAccountsPayableDocument;
027 import org.kuali.kfs.module.purap.businessobject.PurApAccountingLineBase;
028 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderAccount;
029
030 /**
031 * Declares the service methods used by CAB batch program
032 */
033 public interface BatchExtractService {
034
035 /**
036 * Allocate additional charges during batch.
037 *
038 * @param purApDocuments
039 */
040 void allocateAdditionalCharges(HashSet<PurchasingAccountsPayableDocument> purApDocuments);
041
042 /**
043 * Returns the list of CAB eligible GL entries, filter parameters are pre-configured
044 *
045 * @param process log
046 * @return Eligible GL Entries meeting batch parameters configured under parameter group KFS-CAB:Batch
047 */
048 Collection<Entry> findElgibleGLEntries(ExtractProcessLog processLog);
049
050
051 /**
052 * Saves financial transaction lines which dont have Purchase Order number associated with it
053 *
054 * @param fpLines Financial transaction lines
055 * @param processLog Process Log
056 */
057 void saveFPLines(List<Entry> fpLines, ExtractProcessLog processLog);
058
059 /**
060 * Saved purchasing line transactions, this method implementation internally uses
061 * {@link org.kuali.kfs.gl.batch.service.ReconciliationService} to QA the data before saving
062 *
063 * @param poLines Eligible GL Lines
064 * @param processLog Process Log
065 */
066 HashSet<PurchasingAccountsPayableDocument> savePOLines(List<Entry> poLines, ExtractProcessLog processLog);
067
068 /**
069 * Separates out transaction lines associated with purchase order from the rest
070 *
071 * @param fpLines Non-purchasing lines
072 * @param purapLines Purchasing lines
073 * @param elgibleGLEntries Full list of eligible GL entries
074 */
075 void separatePOLines(List<Entry> fpLines, List<Entry> purapLines, Collection<Entry> elgibleGLEntries);
076
077 /**
078 * Updates the last extract time stamp system parameter, usually done when a batch process is finished successfully.
079 *
080 * @param time Last extract start time
081 */
082 void updateLastExtractTime(Timestamp time);
083
084
085 /**
086 * This method collects account line history using batch parameters
087 *
088 * @return Collection Purchasing Accounts Payable Account Line History
089 */
090 Collection<PurApAccountingLineBase> findPurapAccountRevisions();
091
092
093 /**
094 * Implementation will retrieve all eligible Purchase Order account lines from a Purchase order that matches criteria required
095 * by pre-asset tagging, using these account lines, batch process can identify the eligible purchase order line items to be
096 * saved for pre-tagging screen
097 *
098 * @return Pre-taggable PO Account lines
099 */
100 Collection<PurchaseOrderAccount> findPreTaggablePOAccounts();
101
102 /**
103 * Implementation will identify eligible purchase oder line items eligible for pre-tagging screen
104 *
105 * @param preTaggablePOAccounts List of pre-taggable account lines
106 */
107 void savePreTagLines(Collection<PurchaseOrderAccount> preTaggablePOAccounts);
108
109 /**
110 * Updates the last extract date parameter for Pre Asset Tagging Step
111 *
112 * @param date Date value
113 */
114 void updateLastExtractDate(Date date);
115 }