/*
* 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.module.ld.service;
import java.util.Collection;
import java.util.Map;
import org.kuali.kfs.module.ld.businessobject.AccountStatusCurrentFunds;
import org.kuali.kfs.module.ld.businessobject.LedgerBalance;
import org.kuali.kfs.module.ld.businessobject.LedgerEntry;
import org.kuali.rice.kns.web.ui.Field;
import org.kuali.rice.kns.web.ui.Row;
/**
* The LaborInquiryOptionsService interface provides hooks for Pending Ledger and Consilidation options for balance inquiries.
*/
public interface LaborInquiryOptionsService {
/**
* The expected name of the consolidation option field name
*
* @return String
*/
public String getConsolidationFieldName();
/**
* Examine a collection of <code>{@link Row}</code> instances for the consolidation field
*
* @param rows
* @return Field
*/
public Field getConsolidationField(Collection<Row> rows);
/**
* Get the current state of the consolidation option
*
* @return String
*/
public String getConsolidationOption(Map fieldValues);
/**
* This method tests if the user selects to see the details or consolidated results
*
* @param fieldValues the map containing the search fields and values
* @param rows
* @return true if consolidation is selected and subaccount is not specified
*/
public boolean isConsolidationSelected(Map fieldValues, Collection<Row> rows);
/**
* This method tests if the user selects to see the details or consolidated results
*
* @param fieldValues the map containing the search fields and values
* @return true if consolidation is selected and subaccount is not specified
*/
public boolean isConsolidationSelected(Map fieldValues);
/**
* update a given balance collection with the pending entry obtained from the given field values and pending entry option
*
* @param balanceCollection the given ledger balance collection
* @param fieldValues the given field values
* @param pendingEntryOption the given pending entry option: all, approved or none
* @param isConsolidated indicate if the collection balances have been consolidated
* @see org.kuali.kfs.module.ld.businessobject.LedgerBalance
*/
public void updateLedgerBalanceByPendingLedgerEntry(Collection<LedgerBalance> balanceCollection, Map fieldValues, String pendingEntryOption, boolean isConsolidated);
/**
* update a given balance collection with the pending entry obtained from the given field values and pending entry option
*
* @param balanceCollection the given ledger balance collection
* @param fieldValues the given field values
* @param pendingEntryOption the given pending entry option: all, approved or none
* @param isConsolidated indicate if the collection balances have been consolidated
* @see org.kuali.kfs.module.ld.businessobject.LedgerBalance
*/
public void updateCurrentFundsByPendingLedgerEntry(Collection<AccountStatusCurrentFunds> balanceCollection, Map fieldValues, String pendingEntryOption, boolean isConsolidated);
/**
* update a given ledger entry collection with the pending entry obtained from the given field values and pending entry option
*
* @param entryCollection the given ledger entry collection
* @param fieldValues the given field values
* @param pendingEntryOption the given pending entry option: all, approved or none
* @see org.kuali.kfs.module.ld.businessobject.LedgerEntry
*/
public void updateLedgerEntryByPendingLedgerEntry(Collection<LedgerEntry> entryCollection, Map fieldValues, String pendingEntryOption);
/**
* Get the Pending Entry Option selected
*
* @param fieldValues
* @return String
*/
public String getSelectedPendingEntryOption(Map fieldValues);
/**
* Returns true if the CG Beginning Balance Exclude Option is YES; false otherwise.
*
* @param fieldValues
* @return String
*/
public boolean isCgBeginningBalanceOnlyExcluded(Map fieldValues);
}