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.math.BigDecimal;
019    import java.util.Date;
020    
021    import org.kuali.rice.kns.util.KualiInteger;
022    
023    /**
024     * This interface provides utility methods for the KEM module like mod10 calculation.
025     */
026    public interface KEMService {
027    
028    
029        /**
030         * Computes the check digit based on the given prefix.
031         * 
032         * @param prefix
033         * @return the string formed by the prefix + check digit
034         */
035        public String mod10(String prefix);
036    
037    
038        /**
039         * Computes the market value as the Sum of the HLDG _MVAL for all records for the Security in END_CURR_TAX_LOT_BAL_T.
040         * 
041         * @param securityId
042         * @return the market value for the given security
043         */
044        public BigDecimal getMarketValue(String securityId);
045    
046        /**
047         * Gets the market value as the HLDG _MVAL for the record in END_CURR_TAX_LOT_BAL_T for the given kemid, securityId,
048         * registrationCode, lotNumber, ipIndicator.
049         * 
050         * @param kemid
051         * @param securityId
052         * @param registrationCode
053         * @param lotNumber
054         * @param ipIndicator
055         * @return the market value for the given kemid, securityId, registrationCode, lotNumber, ipIndicator.
056         */
057        public BigDecimal getMarketValue(String kemid, String securityId, String registrationCode, KualiInteger lotNumber, String ipIndicator);
058    
059        /**
060         * Gets the current system process date.
061         * 
062         * @return a String representing the value of the current system process date
063         */
064        public String getCurrentSystemProcessDate();
065    
066        public String getCurrentSystemProcessDateFormated() throws Exception;
067    
068        public Date getCurrentSystemProcessDateObject();
069    
070        /**
071         * Gets the current date based on a system parameter USE_PROCESS_DATE_IND: <br>
072         * 1) If USE_PROCESS_DATE_IND = Y (true), get the value from CURRENT_PROCESS_DATE. <br>
073         * 2) If USE_PROCESS_DATE_IND = N (false), get the current date from the local system using standard Java API.
074         * 
075         * @return the current date
076         */
077        public java.sql.Date getCurrentDate();
078    
079    
080        /**
081         * Gets the current process date from the CURRENT_PROCESS_DATE parameter
082         * 
083         * @return current process date
084         */
085        public java.sql.Date getCurrentProcessDate();
086    
087        /**
088         * Gets the AVAILABLE_CASH_PERCENT system parameter
089         * 
090         * @return AVAILABLE_CASH_PERCENT value
091         */
092        public BigDecimal getAvailableCashPercent();
093    
094        /**
095         * Gets the FISCAL_YEAR_END_DAY_AND_MONTH system parameter
096         * 
097         * @return FISCAL_YEAR_END_DAY_AND_MONTH value
098         */
099        public Date getFiscalYearEndDayAndMonth();
100    
101        /**
102         * Gets the DISTRIBUTION_TIMES_PER_YEAR system parameter
103         * 
104         * @return DISTRIBUTION_TIMES_PER_YEAR value
105         */
106        public long getTotalNumberOfPaymentsForFiscalYear();
107    
108        /**
109         * Gets the number of days in the calendar year.
110         * 
111         * @return the number of days in the calendar year
112         */
113        public int getNumberOfDaysInCalendarYear();
114        
115        /**
116         * Gets the first day after the fiscal year End Day and Month system parameter.
117         * 
118         */
119        public java.sql.Date getFirstDayAfterFiscalYearEndDayAndMonth();
120        
121        /**
122         * Gets MAXIMUM_TRANSACTION_LINES value from the system parameter.
123         * 
124         */
125        public int getMaxNumberOfTransactionLinesPerDocument();
126    }