001/*
002 * Copyright 2007 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.pdp.service;
017
018import java.util.Date;
019import java.util.List;
020
021import org.kuali.ole.pdp.businessobject.CustomerProfile;
022import org.kuali.ole.pdp.businessobject.DisbursementNumberRange;
023import org.kuali.ole.pdp.businessobject.FormatProcessSummary;
024import org.kuali.ole.pdp.businessobject.FormatSelection;
025import org.kuali.ole.pdp.service.impl.exception.FormatException;
026import org.kuali.rice.kim.api.identity.Person;
027
028public interface FormatService {
029
030    /**
031     * This method gets all customer profiles
032     * @return
033     */
034    public List<CustomerProfile> getAllCustomerProfiles();
035
036    /**
037     * This method gets all disbursement number ranges
038     * @return
039     */
040    public List<DisbursementNumberRange> getAllDisbursementNumberRanges();
041
042    /**
043     * This method gets the format process by campus code and returns the start date for that process.
044     * @param campus the campus code
045     * @return the format process start date if any process found for the given campus code, null otherwise
046     */
047    public Date getFormatProcessStartDate(String campus);
048
049    /**
050     * This method gets the data for the format process
051     * @param user the user that initiated the format process
052     * @return FormatSelection
053     */
054    public FormatSelection getDataForFormat(Person user);
055
056    /**
057     * This method formats the data for check printing.
058     * @param procId
059     */
060    public void performFormat(Integer procId) throws FormatException;
061
062    /**
063     *  If the start format process was run and errored out,
064     *  this needs to be run to allow formats to continue to function
065     * @param procId
066     */
067    public void resetFormatPayments(Integer procId);
068
069    /**
070     * This method marks the process log so a format only happens once per campus. Mark all the
071     * payments that will be formatted and return a summary. attachments will be Y, N or null for both.
072     * 
073     * @param user
074     * @param campus
075     * @param customers
076     * @param paydate
077     * @param paymentTypes
078     * @return FormatProcessSummary
079     */
080    public FormatProcessSummary startFormatProcess(Person user, String campus, List<CustomerProfile> customers, Date paydate, String paymentTypes);
081
082    /**
083     * This method removes the format process from the format process table
084     * @param campus
085     */
086    public void endFormatProcess(String campus);
087    
088    /**
089     * If the start format process was run and the user doesn't want to continue,
090     * this needs to be run to set all payments back to open.
091     * This method unmarks the payments and removes the format process entry.
092     * @param processId
093     */
094    public void clearUnfinishedFormat(Integer processId) ;
095}
096