1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.bc.batch.dataaccess.impl;
20
21 import java.sql.Date;
22 import java.sql.Types;
23 import java.util.Calendar;
24 import java.util.GregorianCalendar;
25
26 import org.kuali.kfs.module.bc.BCConstants;
27 import org.kuali.kfs.module.bc.batch.dataaccess.BudgetConstructionHumanResourcesPayrollInterfaceDao;
28 import org.kuali.kfs.module.bc.document.dataaccess.impl.BudgetConstructionDaoJdbcBase;
29
30
31
32 public class BudgetConstructionHumanResourcesPayrollInterfaceDaoJdbc extends BudgetConstructionDaoJdbcBase implements BudgetConstructionHumanResourcesPayrollInterfaceDao {
33
34
35
36
37 public void buildBudgetConstructionAdministrativePosts() {
38
39
40
41 String sqlString = new String("DELETE FROM LD_BCN_ADM_POST_T\n");
42 getSimpleJdbcTemplate().update(sqlString);
43 }
44
45
46
47
48
49 public void buildBudgetConstructionAppointmentFundingReasons(Integer requestFiscalYear) {
50
51
52
53 String sqlString = new String("DELETE FROM LD_BCN_AF_REASON_T WHERE (UNIV_FISCAL_YR = ?)\n");
54 getSimpleJdbcTemplate().update(sqlString,requestFiscalYear);
55 }
56
57
58
59
60
61 public void buildBudgetConstructionIntendedIncumbent(Integer requestFiscalYear) {
62
63
64
65
66 Integer baseFiscalYear = requestFiscalYear - 1;
67 StringBuilder sqlBuilder = new StringBuilder(1500);
68 sqlBuilder.append("DELETE FROM LD_BCN_INTINCBNT_T\n");
69 sqlBuilder.append("WHERE (EXISTS (SELECT 1\n");
70 sqlBuilder.append(" FROM LD_CSF_TRACKER_T\n");
71 sqlBuilder.append(" WHERE (LD_CSF_TRACKER_T.UNIV_FISCAL_YR = ?)\n");
72 sqlBuilder.append(" AND (LD_CSF_TRACKER_T.EMPLID = LD_BCN_INTINCBNT_T.EMPLID)\n");
73 sqlBuilder.append(" AND (LD_CSF_TRACKER_T.POS_CSF_DELETE_CD = ?)))\n");
74 String sqlString = sqlBuilder.toString();
75 getSimpleJdbcTemplate().update(sqlString,baseFiscalYear,BCConstants.ACTIVE_CSF_DELETE_CODE);
76
77 sqlBuilder.delete(0, sqlBuilder.length());
78
79
80
81
82
83
84
85 String defaultClassificationId = new String("TL");
86 GregorianCalendar calendarJuly1 = new GregorianCalendar(baseFiscalYear, Calendar.JULY, 1);
87 GregorianCalendar calendarAugust1 = new GregorianCalendar(baseFiscalYear, Calendar.AUGUST, 1);
88 Date julyFirst = new Date(calendarJuly1.getTimeInMillis());
89 Date augustFirst = new Date(calendarAugust1.getTimeInMillis());
90
91
92
93
94
95
96
97
98
99
100
101 sqlBuilder.append("INSERT INTO LD_BCN_INTINCBNT_T\n");
102 sqlBuilder.append("(EMPLID, PERSON_NM, SETID_SALARY, SAL_ADMIN_PLAN, GRADE, IU_CLASSIF_LEVEL, ACTV_IND)\n");
103 sqlBuilder.append("(SELECT EMPLID, PERSON_NM, BUSINESS_UNIT, POS_SAL_PLAN_DFLT, POS_GRADE_DFLT, ?, 'Y'\n");
104 sqlBuilder.append("FROM\n");
105 sqlBuilder.append("(SELECT DISTINCT csf.EMPLID,\n");
106 sqlBuilder.append(" CONCAT(CONCAT(csf.EMPLID,' LastNm HR'),CONCAT(', ',CONCAT(csf.EMPLID,' 1stNm HR'))) AS PERSON_NM,\n");
107 sqlBuilder.append(" pos.BUSINESS_UNIT,\n");
108 sqlBuilder.append(" pos.POS_SAL_PLAN_DFLT,\n");
109 sqlBuilder.append(" pos.POS_GRADE_DFLT\n");
110 sqlBuilder.append(" FROM LD_CSF_TRACKER_T csf,\n");
111 sqlBuilder.append(" PS_POSITION_DATA pos\n");
112 sqlBuilder.append(" WHERE (csf.UNIV_FISCAL_YR = ?)\n");
113 sqlBuilder.append(" AND (csf.POS_CSF_DELETE_CD = ?)\n");
114 sqlBuilder.append(" AND (csf.POSITION_NBR = pos.POSITION_NBR)\n");
115 sqlBuilder.append(" AND ((pos.EFFDT <= ?) OR (pos.EFFDT = ?))\n");
116 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
117 sqlBuilder.append(" FROM PS_POSITION_DATA pox\n");
118 sqlBuilder.append(" WHERE (pos.POSITION_NBR = pox.POSITION_NBR)\n");
119 sqlBuilder.append(" AND (pos.EFFDT < pox.EFFDT)\n");
120 sqlBuilder.append(" AND ((pox.EFFDT <= ?) OR (pox.EFFDT = ?))))\n");
121 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
122 sqlBuilder.append(" FROM LD_CSF_TRACKER_T cfx\n");
123 sqlBuilder.append(" WHERE (csf.UNIV_FISCAL_YR = cfx.UNIV_FISCAL_YR)\n");
124 sqlBuilder.append(" AND (csf.EMPLID = cfx.EMPLID)\n");
125 sqlBuilder.append(" AND (cfx.POS_CSF_DELETE_CD = ?)\n");
126 sqlBuilder.append(" AND (csf.POSITION_NBR < cfx.POSITION_NBR)))) makeUnique)\n");
127
128 sqlString = sqlBuilder.toString();
129 Object[] sqlArgumentList = {defaultClassificationId,baseFiscalYear,BCConstants.ACTIVE_CSF_DELETE_CODE,julyFirst,augustFirst,julyFirst,augustFirst,BCConstants.ACTIVE_CSF_DELETE_CODE};
130 int[] sqlArgumentTypes = {Types.VARCHAR,Types.INTEGER,Types.VARCHAR,Types.DATE,Types.DATE,Types.DATE,Types.DATE,Types.VARCHAR};
131 getSimpleJdbcTemplate().update(sqlString,sqlArgumentList);
132
133 }
134
135
136
137
138 public void buildBudgetConstructionIntendedIncumbentWithFacultyAttributes (Integer requestFiscalYear)
139 {
140
141
142 this.buildBudgetConstructionIntendedIncumbent(requestFiscalYear);
143 }
144
145
146
147
148
149 public void buildBudgetConstructionPositionBaseYear(Integer baseFiscalYear) {
150 StringBuilder sqlBuilder = new StringBuilder(2000);
151 String defaultRCCd = new String("--");
152
153
154
155 String orgSeparator = new String("-");
156 GregorianCalendar calendarJuly1 = new GregorianCalendar(baseFiscalYear, Calendar.JULY, 1);
157 Date julyFirst = new Date(calendarJuly1.getTimeInMillis());
158
159
160
161 sqlBuilder.append("DELETE FROM LD_BCN_POS_T\n");
162 sqlBuilder.append("WHERE (UNIV_FISCAL_YR = ?)\n");
163 sqlBuilder.append(" AND (EXISTS (SELECT 1\n");
164 sqlBuilder.append(" FROM LD_CSF_TRACKER_T\n");
165 sqlBuilder.append(" WHERE (LD_CSF_TRACKER_T.UNIV_FISCAL_YR = ?)\n");
166 sqlBuilder.append(" AND (LD_CSF_TRACKER_T.POSITION_NBR = LD_BCN_POS_T.POSITION_NBR)\n");
167 sqlBuilder.append(" AND (LD_CSF_TRACKER_T.POS_CSF_DELETE_CD = ?)))\n");
168 String sqlString = sqlBuilder.toString();
169 getSimpleJdbcTemplate().update(sqlString,baseFiscalYear,baseFiscalYear,BCConstants.ACTIVE_CSF_DELETE_CODE);
170 sqlBuilder.delete(0, sqlBuilder.length());
171
172
173
174
175 sqlBuilder.append("INSERT INTO LD_BCN_POS_T\n");
176 sqlBuilder.append("(POSITION_NBR, UNIV_FISCAL_YR, POS_EFFDT, POS_EFF_STATUS, POSN_STATUS,\n");
177 sqlBuilder.append(" BUDGETED_POSN, CONFIDENTIAL_POSN, POS_STD_HRS_DFLT, POS_REG_TEMP, POS_FTE, POS_DESCR, SETID_DEPT, POS_DEPTID,\n");
178 sqlBuilder.append(" RC_CD, POS_SAL_PLAN_DFLT, POS_GRADE_DFLT, SETID_JOBCODE, JOBCODE, SETID_SALARY,\n");
179 sqlBuilder.append(" POS_LOCK_USR_ID)\n");
180 sqlBuilder.append("(SELECT px.POSITION_NBR,\n");
181 sqlBuilder.append(" ?, px.EFFDT, px.POS_EFF_STATUS,\n");
182 sqlBuilder.append(" px.POSN_STATUS, px.BUDGETED_POSN, 'N',\n");
183 sqlBuilder.append(" px.STD_HRS_DEFAULT, px.POS_REG_TEMP, px.POS_FTE, px.DESCR, px.BUSINESS_UNIT,\n");
184 sqlBuilder.append(" px.DEPTID, COALESCE(org.RC_CD,?),\n");
185 sqlBuilder.append(" px.POS_SAL_PLAN_DFLT, px.POS_GRADE_DFLT, px.BUSINESS_UNIT, px.JOBCODE,\n");
186 sqlBuilder.append(" px.BUSINESS_UNIT, ?\n");
187 sqlBuilder.append(" FROM PS_POSITION_DATA px LEFT OUTER JOIN LD_BCN_ORG_RPTS_T org\n");
188 sqlBuilder.append(" ON (CONCAT(CONCAT(org.FIN_COA_CD,?),org.ORG_CD) = px.DEPTID)\n");
189 sqlBuilder.append(" WHERE (px.EFFDT < ?)\n");
190 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
191 sqlBuilder.append(" FROM LD_BCN_POS_T\n");
192 sqlBuilder.append(" WHERE (LD_BCN_POS_T.UNIV_FISCAL_YR = ?)\n");
193 sqlBuilder.append(" AND (px.POSITION_NBR = LD_BCN_POS_T.POSITION_NBR)))\n");
194 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
195 sqlBuilder.append(" FROM PS_POSITION_DATA py\n");
196 sqlBuilder.append(" WHERE (px.POSITION_NBR = py.POSITION_NBR)\n");
197 sqlBuilder.append(" AND (py.EFFDT < ?)\n");
198 sqlBuilder.append(" AND (px.EFFDT < py.EFFDT)))\n");
199 sqlBuilder.append(" AND (EXISTS (SELECT 1\n");
200 sqlBuilder.append(" FROM LD_CSF_TRACKER_T csf\n");
201 sqlBuilder.append(" WHERE (csf.UNIV_FISCAL_YR = ?)\n");
202 sqlBuilder.append(" AND (csf.POS_CSF_DELETE_CD = ?)\n");
203 sqlBuilder.append(" AND (csf.POSITION_NBR = px.POSITION_NBR))))\n");
204 sqlString = sqlBuilder.toString();
205 getSimpleJdbcTemplate().update(sqlString,baseFiscalYear,defaultRCCd,BCConstants.DEFAULT_BUDGET_HEADER_LOCK_IDS,orgSeparator,julyFirst,baseFiscalYear,julyFirst,baseFiscalYear,BCConstants.ACTIVE_CSF_DELETE_CODE);
206
207
208 setAcademicDefaultObjectClass(baseFiscalYear);
209 setMonthlyStaffOvertimeEligibleDefaultObjectClass(baseFiscalYear);
210 setMonthlyStaffOvertimeExemptDefaultObjectClass(baseFiscalYear);
211 setBiweeklyStaffDefaultObjectClass(baseFiscalYear);
212 }
213
214
215
216
217
218 public void buildBudgetConstructionPositonRequestYear(Integer requestFiscalYear) {
219 StringBuilder sqlBuilder = new StringBuilder(2500);
220
221 String defaultRCCd = new String("--");
222 String orgSeparator = new String("-");
223 Integer baseFiscalYear = requestFiscalYear-1;
224 GregorianCalendar calendarJuly1 = new GregorianCalendar(baseFiscalYear, Calendar.JULY, 1);
225 GregorianCalendar calendarAugust1 = new GregorianCalendar(baseFiscalYear, Calendar.AUGUST, 1);
226 Date julyFirst = new Date(calendarJuly1.getTimeInMillis());
227 Date augustFirst = new Date(calendarAugust1.getTimeInMillis());
228 String academicPositionType = new String("AC");
229 String academicTenureTrackSalaryPlan = new String("AC1");
230
231 sqlBuilder.append("INSERT INTO LD_BCN_POS_T\n");
232 sqlBuilder.append("(POSITION_NBR, UNIV_FISCAL_YR, POS_EFFDT, POS_EFF_STATUS, POSN_STATUS,\n");
233 sqlBuilder.append(" BUDGETED_POSN, CONFIDENTIAL_POSN, POS_STD_HRS_DFLT, POS_REG_TEMP, POS_FTE, POS_DESCR, SETID_DEPT, POS_DEPTID,\n");
234 sqlBuilder.append(" RC_CD, POS_SAL_PLAN_DFLT, POS_GRADE_DFLT, SETID_JOBCODE, JOBCODE, SETID_SALARY,\n");
235 sqlBuilder.append(" POS_LOCK_USR_ID)\n");
236 sqlBuilder.append("(SELECT px.POSITION_NBR,\n");
237 sqlBuilder.append(" ?, px.EFFDT, px.POS_EFF_STATUS,\n");
238 sqlBuilder.append(" px.POSN_STATUS, px.BUDGETED_POSN, 'N',\n");
239 sqlBuilder.append(" px.STD_HRS_DEFAULT, px.POS_REG_TEMP, px.POS_FTE, px.DESCR, px.BUSINESS_UNIT,\n");
240 sqlBuilder.append(" px.DEPTID, COALESCE(org.RC_CD,?),\n");
241 sqlBuilder.append(" px.POS_SAL_PLAN_DFLT, px.POS_GRADE_DFLT, px.BUSINESS_UNIT, px.JOBCODE,\n");
242 sqlBuilder.append(" px.BUSINESS_UNIT, ?\n");
243 sqlBuilder.append(" FROM PS_POSITION_DATA px LEFT OUTER JOIN LD_BCN_ORG_RPTS_T org\n");
244 sqlBuilder.append(" ON (CONCAT(CONCAT(org.FIN_COA_CD,?),org.ORG_CD) = px.DEPTID)\n");
245 sqlBuilder.append(" WHERE ((px.EFFDT <= ?) OR ((px.EFFDT = ?) AND (px.POS_SAL_PLAN_DFLT = ?)))\n");
246 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
247 sqlBuilder.append(" FROM LD_BCN_POS_T\n");
248 sqlBuilder.append(" WHERE (LD_BCN_POS_T.UNIV_FISCAL_YR = ?)\n");
249 sqlBuilder.append(" AND (px.POSITION_NBR = LD_BCN_POS_T.POSITION_NBR)))\n");
250 sqlBuilder.append(" AND (NOT EXISTS (SELECT 1\n");
251 sqlBuilder.append(" FROM PS_POSITION_DATA py\n");
252 sqlBuilder.append(" WHERE (px.POSITION_NBR = py.POSITION_NBR)\n");
253 sqlBuilder.append(" AND ((py.EFFDT <= ?) OR ((py.EFFDT = ?) AND (px.POS_SAL_PLAN_DFLT = ?)))\n");
254 sqlBuilder.append(" AND (px.EFFDT < py.EFFDT)))\n");
255 sqlBuilder.append(" AND (EXISTS (SELECT 1\n");
256 sqlBuilder.append(" FROM LD_CSF_TRACKER_T csf\n");
257 sqlBuilder.append(" WHERE (csf.UNIV_FISCAL_YR = ?)\n");
258 sqlBuilder.append(" AND (csf.POS_CSF_DELETE_CD = ?)\n");
259 sqlBuilder.append(" AND (csf.POSITION_NBR = px.POSITION_NBR))))\n");
260 String sqlString = sqlBuilder.toString();
261 getSimpleJdbcTemplate().update(sqlString,requestFiscalYear,defaultRCCd,BCConstants.DEFAULT_BUDGET_HEADER_LOCK_IDS,orgSeparator,julyFirst,augustFirst,academicTenureTrackSalaryPlan,requestFiscalYear,julyFirst,augustFirst,academicTenureTrackSalaryPlan,baseFiscalYear,BCConstants.ACTIVE_CSF_DELETE_CODE);
262
263
264 setAcademicDefaultObjectClass(requestFiscalYear);
265 setMonthlyStaffOvertimeEligibleDefaultObjectClass(requestFiscalYear);
266 setMonthlyStaffOvertimeExemptDefaultObjectClass(requestFiscalYear);
267 setBiweeklyStaffDefaultObjectClass(requestFiscalYear);
268 }
269
270
271
272
273
274
275
276
277
278
279 protected void setAcademicDefaultObjectClass(Integer fiscalYear)
280 {
281
282 Integer monthConstant = new Integer(10);
283 String positionType = new String("AC");
284 String defaultObject = new String("2000");
285 String salaryPlan = new String("AC1");
286 StringBuilder sqlBuilder = new StringBuilder(500);
287 sqlBuilder.append("UPDATE LD_BCN_POS_T\n");
288 sqlBuilder.append("SET IU_NORM_WORK_MONTHS = ?,\n");
289 sqlBuilder.append(" IU_PAY_MONTHS = ?,\n");
290 sqlBuilder.append(" IU_POSITION_TYPE = ?,\n");
291 sqlBuilder.append(" IU_DFLT_OBJ_CD = ?\n");
292 sqlBuilder.append("WHERE (UNIV_FISCAL_YR = ?)\n");
293 sqlBuilder.append(" AND (POS_SAL_PLAN_DFLT = ?)");
294 String sqlString = sqlBuilder.toString();
295 getSimpleJdbcTemplate().update(sqlString,monthConstant,monthConstant,positionType,defaultObject,fiscalYear,salaryPlan);
296 }
297 protected void setMonthlyStaffOvertimeEligibleDefaultObjectClass(Integer fiscalYear)
298 {
299
300 Integer monthConstant = new Integer(12);
301 String positionType = new String("SM");
302 String defaultObject = new String("2480");
303 String[] salaryPlan = {new String("PAO"), new String("PAU")};
304 StringBuilder sqlBuilder = new StringBuilder(500);
305 sqlBuilder.append("UPDATE LD_BCN_POS_T\n");
306 sqlBuilder.append("SET IU_NORM_WORK_MONTHS = ?,\n");
307 sqlBuilder.append(" IU_PAY_MONTHS = ?,\n");
308 sqlBuilder.append(" IU_POSITION_TYPE = ?,\n");
309 sqlBuilder.append(" IU_DFLT_OBJ_CD = ?\n");
310 sqlBuilder.append("WHERE (UNIV_FISCAL_YR = ?)\n");
311 sqlBuilder.append(" AND (POS_SAL_PLAN_DFLT IN (?,?))\n");
312 String sqlString = sqlBuilder.toString();
313 getSimpleJdbcTemplate().update(sqlString,monthConstant,monthConstant,positionType,defaultObject,fiscalYear,salaryPlan[0],salaryPlan[1]);
314 }
315
316 protected void setMonthlyStaffOvertimeExemptDefaultObjectClass(Integer fiscalYear)
317 {
318
319
320
321 Integer monthConstant = new Integer(12);
322 String positionType = new String("SM");
323 String defaultObject = new String("2400");
324 String salaryPlan = new String("P%");
325 StringBuilder sqlBuilder = new StringBuilder(500);
326 sqlBuilder.append("UPDATE LD_BCN_POS_T\n");
327 sqlBuilder.append("SET IU_NORM_WORK_MONTHS = ?,\n");
328 sqlBuilder.append(" IU_PAY_MONTHS = ?,\n");
329 sqlBuilder.append(" IU_POSITION_TYPE = ?,\n");
330 sqlBuilder.append(" IU_DFLT_OBJ_CD = ?\n");
331 sqlBuilder.append("WHERE (UNIV_FISCAL_YR = ?)\n");
332 sqlBuilder.append(" AND (POS_SAL_PLAN_DFLT LIKE ?)\n");
333 sqlBuilder.append(" AND (IU_DFLT_OBJ_CD IS NULL)\n");
334 String sqlString = sqlBuilder.toString();
335 getSimpleJdbcTemplate().update(sqlString,monthConstant,monthConstant,positionType,defaultObject,fiscalYear,salaryPlan);
336 }
337
338 protected void setBiweeklyStaffDefaultObjectClass(Integer fiscalYear)
339 {
340
341
342
343 Integer monthConstant = new Integer(12);
344 String positionType = new String("SB");
345 String defaultObject = new String("2500");
346 String defaultUnionCode = new String("B1");
347 StringBuilder sqlBuilder = new StringBuilder(500);
348 sqlBuilder.append("UPDATE LD_BCN_POS_T\n");
349 sqlBuilder.append("SET IU_NORM_WORK_MONTHS = ?,\n");
350 sqlBuilder.append(" IU_PAY_MONTHS = ?,\n");
351 sqlBuilder.append(" IU_POSITION_TYPE = ?,\n");
352 sqlBuilder.append(" POS_UNION_CD = ?,\n");
353 sqlBuilder.append(" IU_DFLT_OBJ_CD = ?\n");
354 sqlBuilder.append("WHERE (UNIV_FISCAL_YR = ?)\n");
355 sqlBuilder.append(" AND (IU_DFLT_OBJ_CD IS NULL)\n");
356 String sqlString = sqlBuilder.toString();
357 getSimpleJdbcTemplate().update(sqlString,monthConstant,monthConstant,positionType,defaultUnionCode,defaultObject,fiscalYear);
358 }
359
360
361
362
363
364 public void updateNamesInBudgetConstructionIntendedIncumbent()
365 {
366
367 }
368 }