View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.cam.document.dataaccess;
20  
21  import java.sql.Date;
22  import java.util.Calendar;
23  import java.util.Collection;
24  import java.util.List;
25  import java.util.Map;
26  import java.util.Set;
27  
28  import org.kuali.kfs.module.cam.batch.AssetPaymentInfo;
29  import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
30  import org.kuali.rice.core.api.util.type.KualiDecimal;
31  
32  /**
33   * Interface declaring DAO methods required by CAMS depreciation batch job
34   */
35  public interface DepreciationBatchDao {
36  
37      /**
38       * Updates payments as batch, columns updated are accumulated depreciation amount and current period column decided by fiscal
39       * period
40       *
41       * @param assetPayments Batch of asset payments
42       * @param fiscalPeriod Current fiscal period
43       */
44      public void updateAssetPayments(List<AssetPaymentInfo> assetPayments, Integer fiscalPeriod);
45  
46      /**
47       * Sum all period column and set as previous year value and then reset period columns with zero dollar
48       *
49       * @param fiscalMonth Fiscal period
50       * @throws Exception
51       */
52      public void resetPeriodValuesWhenFirstFiscalPeriod(Integer fiscalPeriod) throws Exception;
53  
54      /**
55       * Updates depreciation and service date for all the assets created after last fiscal period date
56       *
57       * @param fiscalMonth fiscal month
58       * @param fiscalYear fiscal year
59       */
60      public void updateAssetsCreatedInLastFiscalPeriod(Integer fiscalMonth, Integer fiscalYear);
61  
62      /**
63       * Saves a batch of GL Pending entries
64       *
65       * @param glPendingEntries GLPE list to be saved
66       */
67      public void savePendingGLEntries(final List<GeneralLedgerPendingEntry> glPendingEntries);
68  
69      /**
70       * Gets the list of depreciable asset payment list and corresponding details
71       *
72       * @param fiscalYear Fiscal year
73       * @param fiscalMonth Fiscal period
74       * @param depreciationDate Depreciation Date
75       * @return List found matching depreciation criteria
76       */
77      public Collection<AssetPaymentInfo> getListOfDepreciableAssetPaymentInfo(Integer fiscalYear, Integer fiscalMonth, Calendar depreciationDate);
78  
79      /**
80       * Counts the number of assets which has (SUM(Primary Depreciation Amount - Accumulated Depreciation) - Salvage Amount) is zero
81       *
82       * @return count of assets matching condition
83       */
84      public Integer getFullyDepreciatedAssetCount();
85  
86      /**
87       * Primary depreciation base amount for assets with Salvage Value depreciation method code.
88       *
89       * @return Map
90       */
91      public Map<Long, KualiDecimal> getPrimaryDepreciationBaseAmountForSV();
92  
93      /**
94       * Retrieves asset and asset payment count eligible for depreciation
95       *
96       * @param fiscalYear
97       * @param fiscalMonth
98       * @param depreciationDate
99       * @param inincludePending
100      * @return
101      */
102     Object[] getAssetAndPaymentCount(Integer fiscalYear, Integer fiscalMonth, final Calendar depreciationDate, boolean includePending);
103 
104     /**
105      * This method...
106      *
107      * @param fiscalYear
108      * @param fiscalMonth
109      * @param depreciationDate
110      * @return
111      */
112     Object[] getFederallyOwnedAssetAndPaymentCount(Integer fiscalYear, Integer fiscalMonth, final Calendar depreciationDate);
113 
114     /**
115      * Transfer document locked count
116      *
117      * @return
118      */
119     Integer getTransferDocLockedAssetCount();
120 
121     /**
122      * Retirement document locked count
123      *
124      * @return
125      */
126     Integer getRetireDocLockedAssetCount();
127 
128     /**
129      * Returns the list of locked asset by pending transfer and retirement documents
130      *
131      * @return
132      */
133     public Set<Long> getLockedAssets();
134 
135     // CSU 6702 BEGIN
136     /**
137      * No explanation provided
138      * @param fiscalYear
139      * @param fiscalMonth
140      * @param depreciationDate
141      * @param includeRetired
142      * @return
143      */
144     public Collection<AssetPaymentInfo> getListOfDepreciableAssetPaymentInfoYearEnd(Integer fiscalYear, Integer fiscalMonth, Calendar depreciationDate, boolean includeRetired);
145     // CSU 6702 END
146 
147     /**
148      * Depreciation (end of year) Period 13 assets incorrect depreciation start date
149      * <P> Get assets in accordance with,
150      * <ul>
151      * <li>Asset type has valid depreciation life time limit;
152      * <li>Asset is created in period 13 of current fiscal year;
153      * <li>Asset has depreciation convention restricted by parameter
154      * <li>Asset are movable assets. Movable assets are defined by system parameter MOVABLE_EQUIPMENT_OBJECT_SUB_TYPES
155      * </ul>
156      * @param lastFiscalYearDate
157      * @param movableEquipmentObjectSubTypes
158      * @param depreciationConventionCd
159      * @return
160      */
161     public List<Map<String, Object>> getAssetsByDepreciationConvention(Date lastFiscalYearDate, List<String> movableEquipmentObjectSubTypes, String depreciationConventionCd);
162 
163     /**
164      * Depreciation (end of year) Period 13 assets incorrect depreciation start date
165      * <P> Update asset in service date and depreciation date
166      * @param selectedAssets
167      * @param inServiceDate
168      * @param depreciationDate
169      */
170     public void updateAssetInServiceAndDepreciationDate(List<String>selectedAssets, Date inServiceDate, Date depreciationDate);
171 }