/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.gl.batch.service;
import java.sql.Date;
import org.kuali.kfs.gl.batch.CollectorBatch;
import org.kuali.kfs.gl.businessobject.OriginEntryFull;
import org.kuali.kfs.gl.businessobject.OriginEntryInformation;
import org.kuali.kfs.gl.report.CollectorReportData;
import org.kuali.kfs.gl.service.impl.ScrubberStatus;
public interface ScrubberProcess {
/**
* Scrub this single group read only. This will only output the scrubber report. It won't output any other groups.
*
* @param group the origin entry group that should be scrubbed
* @param the document number of any specific entries to scrub
*/
public void scrubGroupReportOnly(String fileName, String documentNumber);
/**
* Scrubs all entries in all groups and documents.
*/
public void scrubEntries();
/**
* Scrubs the origin entry and ID billing details if the given batch. Store all scrubber output into the collectorReportData
* parameter. NOTE: DO NOT CALL ANY OF THE scrub* METHODS OF THIS CLASS AFTER CALLING THIS METHOD FOR EVERY UNIQUE INSTANCE OF
* THIS CLASS, OR THE COLLECTOR REPORTS MAY BE CORRUPTED
*
* @param batch the data gathered from a Collector file
* @param collectorReportData the statistics generated by running the Collector
*/
public void scrubCollectorBatch(ScrubberStatus scrubberStatus, CollectorBatch batch, CollectorReportData collectorReportData);
/**
* Scrub all entries that need it in origin entry. Put valid scrubbed entries in a scrubber valid group, put errors in a
* scrubber error group, and transactions with an expired account in the scrubber expired account group.
* @param group the specific origin entry group to scrub
* @param documentNumber the number of the document with entries to scrub
*/
public void scrubEntries(boolean reportOnlyMode, String documentNumber);
/**
* The demerger process reads all of the documents in the error group, then moves all of the original entries for that document
* from the valid group to the error group. It does not move generated entries to the error group. Those are deleted. It also
* modifies the doc number and origin code of cost share transfers.
*
* @param errorGroup this scrubber run's error group
* @param validGroup this scrubber run's valid group
*/
public void performDemerger();
/**
* Sets the proper cost share object code in an entry and its offset
*
* @param costShareEntry GL Entry for cost share
* @param originEntry Scrubbed GL Entry that this is based on
*/
public void setCostShareObjectCode(OriginEntryFull costShareEntry, OriginEntryInformation originEntry);
/**
* This method modifies the run date if it is before the cutoff time specified by the RunTimeService See
* KULRNE-70 This method is public to facilitate unit testing
*
* @param currentDate the date the scrubber should report as having run on
* @return the run date
*/
public Date calculateRunDate(java.util.Date currentDate);
}