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.fp.service;
017    
018    import java.util.List;
019    
020    /**
021     * 
022     * This interface defines methods that a FiscalYearFunctionControl Service must provide.
023     * 
024     */
025    public interface FiscalYearFunctionControlService {
026    
027        /**
028         * Retrieves list of fiscal years that the BudgetAdjustment is allowed in.
029         * 
030         * @return A list of fiscal years that the current user is authorized to perform a budget adjustment against.
031         */
032        public List getBudgetAdjustmentAllowedYears();
033    
034        /**
035         * Checks the fiscal year against the control tables to see if BudgetAdjustment to base amount is allowed.
036         * 
037         * @param Posting year that the base amount is being changed for.
038         * @return True if the current user is authorized to edit the base amount, false otherwise.
039         */
040        public boolean isBaseAmountChangeAllowed(Integer postingYear);
041        
042        /**
043         * 
044         * returns a list of years for which budget construction is visible in the application
045         * @return list of type integer
046         */
047        public List<Integer> getActiveBudgetYear();
048    
049        /**
050         * 
051         * checks the fiscal year against the control table to see if a user can force a refresh of human resources data for
052         * selected organizations in the budget construction security tree from the application
053         * @param universityFiscalYear
054         * @return true if selected human resources updates are allowed.
055         */
056        public boolean isApplicationUpdateFromHumanResourcesAllowed(Integer universityFiscalYear);
057        
058        /**
059         * 
060         * checks the fiscal year against the control table to see if the batch process will do a global update (ALL changes found)
061         * of the human-resource derived data in budget construction
062         * @param universityFiscalYear
063         * @return true if the batch processes will feed human resource data changes into budget construction
064         */
065        public boolean isBatchUpdateFromHumanResourcesAllowed(Integer universityFiscalYear);
066    
067        /**
068         * 
069         * checks the fiscal year against the control table to see if the batch process will update base salaries in the budget
070         * using the CalculatedSalaryFoundation data derived from payroll
071         * @param universityFiscalYear
072         * @return true if base salaries will be changed 
073         */
074        public boolean isBatchUpdateFromPayrollAllowed (Integer universityFiscalYear);
075        
076        /**
077         * 
078         * checks the fiscal year against the control table to see if users can view budget construction data in the application
079         * @param universityFiscalYear
080         * @return true if the budget construction data is viewable in general (in other words, security may still freeze some viewers
081         * out even though everyone is not excluded)
082         */
083        public boolean isBudgetConstructionActive(Integer universityFiscalYear);
084        
085        /**
086         * 
087         * checks the fiscal year against the control table to see if the general ledger in budget construction should reflect
088         * current base budget amounts in the accounting general ledger for the fiscal year 
089         * @param universityFiscalYear
090         * @return true if updates are allowed
091         */
092        public boolean isBudgetGeneralLedgerUpdateAllowed(Integer universityFiscalYear);
093    
094        /**
095         * 
096         * checks the fiscal year against the control table to see if users can make edits to budget construction for the given year
097         * (some users may still be frozen out because of the security mechanism)
098         * @param universityFiscalYear
099         * @return true if authorized users can update budget construction using the application
100         */
101        public boolean isBudgetUpdateAllowed(Integer universityFiscalYear);
102    }