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.List;
020
021 import org.kuali.kfs.module.endow.businessobject.HoldingTaxLot;
022
023 public interface HoldingTaxLotService {
024
025 /**
026 * Gets a holding tax lot based on primary keys: kemid, security id, registration code, lot number and IP indicator.
027 *
028 * @param kemid
029 * @param securityId
030 * @param registrationCode
031 * @param lotNumber
032 * @param ipIndicator
033 * @return the corresponding tax lot
034 */
035 public HoldingTaxLot getByPrimaryKey(String kemid, String securityId, String registrationCode, int lotNumber, String ipIndicator);
036
037 /**
038 * Gets the holding tax lot based on the following criteria: kemid, security id, registration code, and IP indicator.
039 *
040 * @param kemid
041 * @param securityId
042 * @param registrationCode
043 * @param ipIndicator
044 * @return a list of tax lots that meet the criteria
045 */
046 public List<HoldingTaxLot> getAllTaxLots(String kemid, String securityId, String registrationCode, String ipIndicator);
047
048 /**
049 * Gets all tax lots with positive units based on the following criteria: kemid, security id, registration code, and IP
050 * indicator.
051 *
052 * @param kemid
053 * @param securityId
054 * @param registrationCode
055 * @param ipIndicator
056 * @return a list of tax lots that meet the criteria
057 */
058 public List<HoldingTaxLot> getAllTaxLotsWithPositiveUnits(String kemid, String securityId, String registrationCode, String ipIndicator);
059
060 /**
061 * Gets the holding tax lot based on the following criteria: kemid, security id, registration code, and IP indicator and orders
062 * them ascending or descending based on the acquired date.
063 *
064 * @param kemid
065 * @param securityId
066 * @param registrationCode
067 * @param ipIndicator returned in the descending order
068 * @return a list of tax lots that meet the criteria and in the right order
069 */
070 public List<HoldingTaxLot> getAllTaxLotsOrderByAcquiredDate(String kemid, String securityId, String registrationCode, String ipIndicator, boolean sortAscending);
071
072 /**
073 * Gets all tax lots with positive cost based on the following criteria: kemid, security id, registration code, and IP
074 * indicator.
075 *
076 * @param kemid
077 * @param securityId
078 * @param registrationCode
079 * @param ipIndicator
080 * @return a list of tax lots that meet the criteria
081 */
082 public List<HoldingTaxLot> getAllTaxLotsWithPositiveCost(String kemid, String securityId, String registrationCode, String ipIndicator);
083
084 /**
085 * Gets all tax lots on the following criteria: kemi and IPindicator.
086 *
087 * @param kemid
088 * @param ipIndicator
089 * @return a list of tax lots that meet the criteria
090 */
091 public List<HoldingTaxLot> getAllTaxLotsByKemIdAdndIPIndicator(String kemid, String ipIndicator);
092
093 /**
094 * Gets class code type based on securityId. Based on security ID, you search END_SEC_T Table to get END_SEC_T:SEC_CLS_CD, then,
095 * based on class code, you search END_CLS_CD_T, to get END_CLS_CD_T:CLS_CD_TYP
096 *
097 * @param id
098 * @return class code type
099 */
100 public String getClassCodeType(String securityId);
101
102 /**
103 * The Market Value of the KEMID END_HLDG_TAX_LOT_T records with a CLS_CD_TYP of Cash Equivalents (C), and with the HLDG_IP_IND
104 * equal to I.
105 *
106 * @param kemId
107 * @return marketValue
108 */
109 public BigDecimal getMarketValueForCashEquivalentsForAvailableIncomeCash(String kemId);
110
111 /**
112 * The Market Value of the KEMID END_HLDG_TAX_LOT_T records with a CLS_CD_TYP of Pooled Investment (P) and with the HLDG_IP_IND
113 * equal to I times the value in the Available Cash Percent institutional parameter (accounts for only a percentage of the
114 * market value allowing for pricing changes).
115 *
116 * @return marketValue
117 */
118 public BigDecimal getMarketValueForPooledInvestmentForAvailableIncomeCash(String kemId);
119
120 /**
121 * The Market Value of the KEMID END_HLDG_TAX_LOT_T records with a CLS_CD_TYP of Cash Equivalents (C), and with the HLDG_IP_IND
122 * equal to P.
123 *
124 * @param kemId
125 * @return marketValue
126 */
127 public BigDecimal getMarketValueForCashEquivalentsForAvailablePrincipalCash(String kemId);
128
129 /**
130 * The Market Value of the KEMID END_HLDG_TAX_LOT_T records with a CLS_CD_TYP of Pooled Investment (P) and with the HLDG_IP_IND
131 * equal to P times the value in the Available Cash Percent institutional parameter (accounts for only a percentage of the
132 * market value allowing for pricing changes).
133 *
134 * @return marketValue
135 */
136 public BigDecimal getMarketValueForPooledInvestmentForAvailablePrincipalCash(String kemId);
137
138 /**
139 * Gets all tax lots.
140 *
141 * @return a list of tax lots
142 */
143 public List<HoldingTaxLot> getAllTaxLots();
144
145 /**
146 * Get all tax lots for the given security that have an accrued income greater than zero.
147 *
148 * @param securityId the id of the security for which to retrieve the tax lots
149 * @return all tax lots that meet the criteria
150 */
151 public List<HoldingTaxLot> getAllTaxLotsWithAccruedIncomeGreaterThanZeroPerSecurity(String securityId);
152
153 /**
154 * Gets all the tax lots for the given security that have units greater than zero.
155 *
156 * @param securityId
157 * @return all tax lots that meet the criteria
158 */
159 public List<HoldingTaxLot> getTaxLotsPerSecurityIDWithUnitsGreaterThanZero(String securityId);
160
161 /**
162 * Removes all HoldingTaxLot records from END_HLDG_TAX_LOT_T
163 * @return true is successfully removed the records, else false
164 */
165 public boolean removeAllHoldingTaxLots();
166 }