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.endow.document.service;
017    
018    import java.sql.Date;
019    import java.util.List;
020    
021    import org.kuali.kfs.module.endow.businessobject.PooledFundValue;
022    
023    public interface PooledFundValueService {
024    
025        public Date calculateValueEffectiveDate(Date valuationDate, String pooledSecurityID);
026    
027        public PooledFundValue getByPrimaryKey(String id);
028    
029        /**
030         * Computes the valueEffectiveDate for the AJAX call by getting the valuationDate as a String and returning the
031         * valueEffectiveDate as String
032         * 
033         * @param valuationDate
034         * @param pooledSecurityID
035         * @return the valueEffectiveDate as String
036         */
037        public String calculateValueEffectiveDateForAjax(String valuationDate, String pooledSecurityID);
038    
039        public boolean isValuationDateTheLatest(String pooledSecurityID, Date theValuationDate);
040    
041        public Date getLatestValueEffectiveDate(String pooledSecurityID);
042    
043        /**
044         * Gets PooledFundValue entries where the short term process on date is equal to current date and value effective date is the
045         * most recent per security.
046         * 
047         * @return a list of PooledFundValue entries that meet the criteria
048         */
049        public List<PooledFundValue> getPooledFundValueWhereSTProcessOnDateIsCurrentDate();
050    
051        /**
052         * Gets PooledFundValue entries where the long term process on date is equal to current date and value effective date is the
053         * most recent per security.
054         * 
055         * @return a list of PooledFundValue entries that meet the criteria
056         */
057        public List<PooledFundValue> getPooledFundValueWhereLTProcessOnDateIsCurrentDate();
058    
059        /**
060         * Gets PooledFundValue entries where the distribution income on date is equal to current date.
061         * 
062         * @return a list of PooledFundValue entries that meet the criteria
063         */
064        public List<PooledFundValue> getPooledFundValueWhereDistributionIncomeOnDateIsCurrentDate();
065    
066        /**
067         * set PooledFundValue entries where the distribution income on date is equal to current date.
068         */
069        public void setIncomeDistributionCompleted(List<PooledFundValue> pooledFundValueList, boolean completed);
070    
071    }