1 PACKAGE BODY PSP_TEMPLATE_SELECTION AS
2 /* $Header: PSPTPLSLB.pls 120.19 2006/08/11 06:43:21 dpaudel noship $*/
3
4
5
6 PROCEDURE insert_into_template_history(p_payroll_action_id IN NUMBER, p_request_id OUT NOCOPY NUMBER ) IS
7 PRAGMA AUTONOMOUS_TRANSACTION;
8
9 param_string PAY_PAYROLL_ACTIONS.LEGISLATIVE_PARAMETERS%TYPE;
10
11 l_psp_template_id number;
12 l_psp_effort_start date;
13 l_psp_effort_end date;
14 l_psp_sort_option1 varchar(150);
15 l_psp_sort_option2 varchar2(150);
16 l_psp_sort_option3 varchar2(150);
17 l_psp_sort_option4 varchar2(150);
18 l_psp_order_by1 varchar2(150);
19 l_psp_order_by2 varchar2(150);
20 l_psp_order_by3 varchar2(150);
21 l_psp_order_by4 varchar2(150);
22 l_psp_report_layout varchar2(150);
23
24 l_sqlerrm varchar2(240);
25 l_return_status varchar2(1);
26
27 BEGIN
28
29
30 SELECT request_id, legislative_parameters into p_request_id, param_string from pay_payroll_actions where payroll_action_id = p_payroll_action_id;
31
32 l_psp_template_id := get_parameter_value('TEMPLATE_ID', param_string);
33
34
35 --fnd_file.put_line(fnd_file.log,'TEMPLATE_ID ===='||l_psp_template_id);
36 --fnd_file.put_line(fnd_file.log,'Return String '||get_parameter_value('START_DATE', param_string));
37
38
39 l_psp_effort_start:= trunc(fnd_date.canonical_to_date(get_parameter_value('START_DATE', param_string)));
40 --fnd_file.put_line(fnd_file.log,'start_date ===='||l_psp_effort_start);
41
42 l_psp_effort_end:= trunc(fnd_date.canonical_to_date(get_parameter_value('END_DATE', param_string)));
43 --fnd_file.put_line(fnd_file.log,'end date ===='||l_psp_effort_end);
44
45 l_psp_report_layout := get_parameter_value('REPORT_LAYOUT', param_string);
46 l_psp_sort_option1 := get_parameter_value('FIRST_SORT', param_string);
47 l_psp_order_by1 := get_parameter_value('FIRST_ORDER' , param_string);
48 l_psp_sort_option2 := get_parameter_value('SECOND_SORT', param_string);
49 l_psp_order_by2 := get_parameter_value('SECOND_ORDER' , param_string);
50 l_psp_sort_option3 := get_parameter_value('THIRD_SORT', param_string);
51 l_psp_order_by3 := get_parameter_value('THIRD_ORDER' , param_string);
52 l_psp_sort_option4 := get_parameter_value('FOURTH_SORT', param_string);
53 l_psp_order_by4 := get_parameter_value('FOURTH_ORDER' , param_string);
54
55
56 -- fnd_file.put_line(fnd_file.log,'sort option 1 ===='||l_psp_sort_option1);
57 -- fnd_file.put_line(fnd_file.log,'ORDER BY ===='||l_psp_order_by1);
58 -- fnd_file.put_line(fnd_file.log,' sort option 2 ===='||l_psp_sort_option2);
59 -- fnd_file.put_line(fnd_file.log,'order_by_2 ===='||l_psp_order_by2);
60 -- fnd_file.put_line(fnd_file.log,'layout ===='||l_psp_report_layout);
61
62
63 /* insert record in psp_report_templates_h */
64
65 insert into psp_report_templates_h(request_id, template_id, template_name,
66 business_group_id, set_of_books_id, report_type, period_frequency_id,
67 report_template_code, display_all_emp_distrib_flag,
68 manual_entry_override_flag, approval_type, custom_approval_code,
69 sup_levels, preview_effort_report_flag, notification_reminder_in_days, parameter_name_1, parameter_name_2, parameter_name_3, parameter_name_4, parameter_name_5,
70 parameter_name_6, parameter_name_7, parameter_name_8, parameter_name_9, parameter_name_10,
71 parameter_name_11, parameter_name_12, parameter_name_13, parameter_name_14, parameter_name_15,
72 parameter_name_16, parameter_name_17, parameter_name_18, parameter_name_19,
73 parameter_name_20,parameter_value_1, parameter_value_2, parameter_value_3, parameter_value_4,
74 parameter_value_5, parameter_value_6, parameter_value_7, parameter_value_8,
75 parameter_value_9, parameter_value_10, parameter_value_11,
76 parameter_value_12, parameter_value_13, parameter_value_14, parameter_value_15,
77 parameter_value_16, parameter_value_17, parameter_value_18, parameter_value_19, parameter_value_20, submission_date,
78 initiator_person_id, initiator_file_id, initiator_accept_flag,
79 final_recipients_file_id, sprcd_tolerance_amt, sprcd_tolerance_percent, description, legislation_code,
80 payroll_action_id, last_update_date, last_updated_by, last_update_login,
81 created_by, creation_date,hundred_pcent_eff_at_per_asg,selection_match_level) ( select p_request_id, template_id, template_name,
82 business_group_id, set_of_books_id , report_type, period_frequency_id,
83 report_template_code, display_all_emp_distrib_flag,
84 manual_entry_override_flag, approval_type,
85 custom_approval_code, sup_levels, preview_effort_report_flag, notification_reminder_in_days,
86 'TEMPLATE_ID', 'EFFORT_START', 'EFFORT_END',
87 'REPORT_LAYOUT', 'SORT_OPTION1','ORDER_BY1', 'SORT_OPTION2', 'ORDER_BY' , 'SORT_OPTION3', 'ORDER_BY3', 'SORT_OPTION4',
88 'ORDER_BY4', NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, l_psp_template_id, l_psp_effort_start, l_psp_effort_end, l_psp_report_layout, l_psp_sort_option1, l_psp_order_by1,
89 l_psp_sort_option2, l_psp_order_by2, l_psp_sort_option3, l_psp_order_by3, l_psp_sort_option4, l_psp_order_by4, NULL, NULL, NULL
90 , NULL, NULL, NULL, NULL, NULL, sysdate, fnd_global.employee_id, NULL,
91 NULL, NULL, sprcd_tolerance_amt, sprcd_tolerance_percent, description, legislation_code,
92 p_payroll_action_id, last_update_date, last_updated_by, last_update_login, created_by, creation_date, hundred_pcent_eff_at_per_asg,selection_match_level from psp_report_templates where template_id = l_psp_template_id);
93
94
95 insert into psp_report_template_details_h (request_id, template_detail_id, criteria_lookup_type,
96 criteria_lookup_code, include_exclude_flag, criteria_value1, criteria_value2, criteria_value3,
97 last_update_date, last_updated_by, last_update_login, created_by, creation_date) (select
98 p_request_id, template_detail_id,
99 criteria_lookup_type, criteria_lookup_code, include_exclude_flag,
100 criteria_value1, criteria_value2, criteria_value3 , last_update_date,
101 last_updated_by, last_update_login, created_by, creation_date from
102 psp_report_template_details where template_id = l_psp_template_id);
103
104 COMMIT;
105
106 EXCEPTION WHEN OTHERS THEN
107
108 l_sqlerrm := 'Error inserting into psp_report_templates_history '|| substr(sqlerrm,1,180);
109
110 /* Removed payroll_action_id to make it independent of payroll_action_id */
111 -- psp_general.add_report_error(p_request_id, 'E',null, l_sqlerrm, p_payroll_action_id, l_return_status);
112 psp_general.add_report_error
113 (p_request_id => p_request_id,
114 p_message_level => 'E',
115 p_source_id => NULL,
116 p_error_message => l_sqlerrm,
117 -- p_payroll_action_id => pactid,
118 p_return_status => l_return_status);
119
120 fnd_file.put_line(fnd_file.log, 'Insert into Template History failed '||sqlerrm);
121 raise fnd_api.g_exc_unexpected_error;
122
123 END;
124
125
126
127 PROCEDURE range_code(pactid IN NUMBER, sqlstr out nocopy varchar2) IS
128
129 errBuf varchar2(240);
130
131 retCode varchar(1);
132
133 l_request_id number;
134
135 l_cnt number:=0;
136
137 l_msg_str varchar2(240);
138 l_migration_status BOOLEAN;
139
140 l_proj_segment varchar2(30);
141 l_tsk_segment varchar2(30);
142 l_awd_sgement varchar2(30);
143 l_exp_org_segment varchar2(30);
144 l_exp_type_segment varchar2(30);
145 l_profile_bg_id Number;
146 l_return_status varchar2(30);
147
148
149 BEGIN
150
151 --fnd_file.put_line(fnd_file.log,'Before Insert in template history ');
152 --hr_utility.trace_on('Y','ORACLE');
153
154
155 insert_into_template_history(pactid, l_request_id );
156 l_profile_bg_id := FND_PROFILE.VALUE('PER_BUSINESS_GROUP_ID');
157 IF PSP_GENERAL.GET_CONFIGURATION_OPTION_VALUE(l_profile_bg_id,'PSP_USE_GL_PTAOE_MAPPING') = 'Y' THEN
158
159 PSP_GENERAL.GET_GL_PTAOE_MAPPING(p_business_group_id => l_profile_bg_id,
160 p_proj_segment => l_proj_segment,
161 p_tsk_segment => l_tsk_segment,
162 p_awd_sgement => l_awd_sgement,
163 p_exp_org_segment=> l_exp_org_segment,
164 p_exp_type_segment => l_exp_type_segment);
165 IF (l_proj_segment is null) OR (l_tsk_segment is null) OR (l_awd_sgement is null) OR
166 (l_exp_org_segment is null) OR (l_exp_type_segment is null) THEN
167
168 fnd_message.set_name('PSP', 'PSP_GL_PTAOE_NOT_MAPPED');
169 l_msg_str:=substr(fnd_message.get, 1,240);
170 /* Removed payroll_action_id to make it independent of payroll_action_id */
171 psp_general.add_report_error
172 (p_request_id => l_request_id,
173 p_message_level => 'E',
174 p_source_id => NULL,
175 p_error_message => l_msg_str,
176 -- p_payroll_action_id => pactid,
177 p_return_status => l_return_status);
178 raise fnd_api.g_exc_unexpected_error;
179 END IF;
180 END IF;
181
182
183 l_migration_status:= psp_general.is_effort_report_migrated;
184
185 IF l_migration_status then
186
187 --fnd_file.put_line(fnd_file.log,'==== After Insert in template history ');
188
189 get_final_selection_list(errBuf, retCode, l_request_id, TRUE);
190
191 --fnd_file.put_line(fnd_file.log,'==== After getting sleection list ');
192
193 SELECT nvl(count( person_id),0) into l_cnt from psp_selected_persons_t where
194 request_id = l_request_id;
195
196 --fnd_file.put_line(fnd_file.log,'==== count is '|| l_cnt);
197
198 IF l_cnt=0 then
199
200 fnd_message.set_name('PSP', 'PSP_EFF_NO_EMP_FOUND');
201 l_msg_str:= substr(fnd_message.get ,1,240);
202
203 /* Removed payroll_action_id to make it independent of payroll_action_id */
204 INSERT INTO psp_report_errors
205 (error_sequence_id, request_id, message_level,
206 source_id, error_message, retry_request_id,
207 pdf_request_id, source_name, parent_source_id,
208 parent_source_name)
209 VALUES (psp_report_errors_s.NEXTVAL, l_request_id, 'W',
210 NULL, l_msg_str, NULL,
211 NULL, NULL, NULL,
212 NULL);
213
214
215 ELSE
216
217 -- delete duplicates
218 delete from psp_Selected_persons_t outer where request_id = l_request_id and
219 (person_id, nvl( assignment_id, -999) ) in (select
220 person_id, nvl( assignment_id, -999) from psp_Selected_persons_t inner where inner.person_id=outer.person_id and inner.request_id =outer.request_id and inner.rowid > outer.rowid);
221
222 END IF;
223
224
225 -- fnd_file.put_line(fnd_file.log,'==== cnt sleection '||l_cnt);
226
227 sqlstr := 'select distinct person_id from psp_selected_persons_t pspt,
228 pay_payroll_actions pact
229 where pact.payroll_action_id = :payroll_action_id and
230 pspt.request_id= pact.request_id ORDER BY pspt.person_id';
231
232
233 ELSE
234
235 fnd_message.set_name('PSP', 'PSP_COMP_EFF_MIG');
236
237 l_msg_str:=substr(fnd_message.get, 1,240);
238 /* Removed payroll_action_id to make it independent of payroll_action_id */
239 INSERT INTO psp_report_errors
240 (error_sequence_id, request_id, message_level,
241 source_id, error_message, retry_request_id,
242 pdf_request_id, source_name, parent_source_id,
243 parent_source_name)
244 VALUES (psp_report_errors_s.NEXTVAL, l_request_id, 'E',
245 NULL, l_msg_str, NULL,
246 NULL, NULL, NULL,
247 NULL);
248
249
250 fnd_message.set_name('PSP', 'PSP_COMP_EFF_MIG');
251 fnd_msg_pub.add;
252
253 raise fnd_api.g_exc_unexpected_error;
254
255 END IF;
256
257
258 -- hr_utility.trace_off;
259
260 EXCEPTION WHEN OTHERS THEN
261
262 psp_message_s.print_error(p_mode=>FND_FILE.log,
263
264 p_print_header=>FND_API.G_TRUE);
265
266 sqlstr:= NULL;
267 commit;
268 raise fnd_api.g_exc_unexpected_error;
269 END;
270
271
272
273 PROCEDURE GET_FINAL_SELECTION_LIST(errBuf OUT NOCOPY VARCHAR2,
274 retCode OUT NOCOPY VARCHAR2,
275 p_request_id IN NUMBER,
276 p_person_asg_flag IN BOOLEAN
277 )
278 AS
279
280 PRAGMA AUTONOMOUS_TRANSACTION;
281
282 /* logic needs to be added for case when
283
284 user has not selected any selection criteria
285
286
287 */
288
289 CURSOR get_template_selection
290 IS
291 SELECT template_id, parameter_value_2, parameter_value_3, business_group_id, set_of_books_id, selection_match_level
292 from psp_report_templates_h
293 where request_id = p_request_id;
294
295 l_template_id NUMBER;
296 l_count NUMBER;
297 i NUMBER;
298 l_effort_start DATE;
299 l_effort_end DATE;
300 l_business_group_id NUMBER;
301 l_set_of_books_id NUMBER;
302 l_template_selection varchar2(3);
303 ---l_count_x integer;
304 BEGIN
305
306
307 OPEN get_template_selection;
308
309 FETCH get_template_selection into l_template_id, l_effort_start, l_effort_end, l_business_group_id, l_set_of_books_id, l_template_selection;
310
311 CLOSE get_template_selection;
312
313
314 IF (l_template_selection = 'EMP') THEN
315 get_lowest_cardinality(p_request_id , l_effort_start, l_effort_end, l_business_group_id, l_set_of_books_id);
316 ---fnd_file.put_line(fnd_file.log,' after get lowest cardinality ');
317
318
319 hr_utility.trace( 'get_template_selection-> After get_lowest_cardinality' );
320
321 prepare_initial_person_list(p_request_id , l_effort_start, l_effort_end, l_business_group_id, l_set_of_books_id);
322 ---select count(*) into l_count_x from psp_selected_persons_t where request_id
323 ---= p_request_id;
324 ---fnd_file.put_line(fnd_file.log,' after initial person list ');
325
326 FND_STATS.GATHER_TABLE_STATS(ownname=>'PSP', tabname=>'PSP_SELECTED_PERSONS_T');
327
328 hr_utility.trace( 'get_template_selection-> After prepare_initial_person_list ' );
329 If g_lookup_code <> 'ALL' then
330
331 prune_initial_person_list(p_request_id , l_effort_start, l_effort_end, l_business_group_id, l_set_of_books_id);
332 --fnd_file.put_line(fnd_file.log,' after prune person list ');
333 hr_utility.trace( 'get_template_selection-> After prune initial_person_list ' );
334 END IF;
335
336
337 apply_exclusion_criteria(p_request_id , l_effort_start, l_effort_end, l_business_group_id, l_set_of_books_id);
338 --fnd_file.put_line(fnd_file.log,' after apply excl criteria ');
339 hr_utility.trace( 'get_template_selection-> After apply exclusion criteria ' );
340
341 END IF;
342
343 IF (l_template_selection = 'ASG') THEN
344 get_asg_lowest_cardinality (p_request_id => p_request_id,
345 p_effort_start => l_effort_start,
346 p_effort_end => l_effort_end,
347 p_business_group_id => l_business_group_id,
348 p_set_of_books_id => l_set_of_books_id);
349 hr_utility.trace('get_template_selection-> After get_asg_lowest_cardinality');
350
351 prepare_initial_asg_list (p_request_id => p_request_id,
352 p_effort_start => l_effort_start,
353 p_effort_end => l_effort_end,
354 p_business_group_id => l_business_group_id,
355 p_set_of_books_id => l_set_of_books_id);
356 hr_utility.trace('get_template_selection-> After prepare_initial_asg_list');
357
358 FND_STATS.GATHER_TABLE_STATS(ownname=>'PSP', tabname=>'PSP_SELECTED_PERSONS_T');
359
360 IF g_lookup_code <> 'ALL' THEN
361 prune_initial_asg_list (p_request_id => p_request_id,
362 p_effort_start => l_effort_start,
363 p_effort_end => l_effort_end,
364 p_business_group_id => l_business_group_id,
365 p_set_of_books_id => l_set_of_books_id);
366 hr_utility.trace('get_template_selection-> After prune initial_asg_list');
367 END IF;
368
369 apply_asg_exclusion_criteria (p_request_id => p_request_id,
370 p_effort_start => l_effort_start,
371 p_effort_end => l_effort_end,
372 p_business_group_id => l_business_group_id,
373 p_set_of_books_id => l_set_of_books_id);
374 hr_utility.trace('get_template_selection-> After apply asg exclusion criteria');
375 END IF;
376
377 apply_ff_formula_exclusion(p_request_id, l_effort_start, l_effort_end);
378 -- fnd_file.put_line(fnd_file.log,' after ff exclusion ');
379 hr_utility.trace( 'get_template_selection-> After apply_ff_formula_exclusion ' );
380
381
382 --fnd_file.put_line(fnd_file.log,' before count ');
383
384 select nvl(count(person_id),0) into l_count from psp_Selected_persons_t where request_id=p_request_id;
385 --fnd_file.put_line(fnd_file.log,' after count ' || l_count);
386 hr_utility.trace( 'get_template_selection-> After getting count= '||l_count );
387
388 COMMIT;
389
390 If l_count > 0 then
391
392
393 FND_STATS.GATHER_TABLE_STATS(ownname=>'PSP', tabname=>'PSP_SELECTED_PERSONS_T');
394 -- fnd_file.put_line(fnd_file.log,' after gather stats ');
395
396 end if;
397 EXCEPTION
398 WHEN OTHERS THEN
399 BEGIN
400 fnd_file.put_line(fnd_file.log,' after gather error '||sqlerrm);
401 hr_utility.trace( 'get_template_selection->'||sqlerrm );
402
403 END;
404
405
406 END;
407
408
409 PROCEDURE get_lowest_cardinality(p_request_id IN NUMBER, p_effort_start IN
410 DATE, p_effort_end IN DATE, p_business_group_id IN NUMBER, p_set_of_books_id IN NUMBER) IS
411
412 i number;
413
414 l_criteria_value1 varchar2(30);
415
416 l_criteria_value2 varchar2(30);
417
418 l_criteria_value3 varchar2(30);
419
420 l_dyn_criteria varchar2(30);
421
422 l_atleast_one_criteria varchar2(1);
423
424
425 l_sql_string varchar2(1000);
426
427 CURSOR get_lowest_cardinality_csr is select lookup_code from
428 psp_selection_cardinality_gt where total_count > 0 ORDER BY total_count asc;
429
430
431 CURSOR get_zero_cardinality_csr is select lookup_code from
432 psp_selection_cardinality_gt where total_count=0;
433
434
435 CURSOR get_selection_cardinality_csr(p_request_id IN NUMBER)
436 IS
437 Select distinct (criteria_lookup_code) from
438 psp_report_template_details_h where request_id = p_request_id and
439 include_exclude_flag='I' and criteria_lookup_type='PSP_SELECTION_CRITERIA';
440
441
442 /* The below cursors would only be used only when no statis selection criteria have been chosen */
443
444 CURSOR PPG_CURSOR IS
445 select criteria_value1, criteria_value2 from
446 psp_report_template_details_h where request_id = p_request_id and
447 include_exclude_flag='I' and
448 criteria_lookup_type= 'PSP_SELECTION_CRITERIA' and criteria_lookup_code='PPG';
449
450
451 CURSOR GLA_CURSOR IS
452 select criteria_value1 , criteria_value2, criteria_value3 from
453 psp_report_template_details_h where request_id = p_request_id and
454 include_exclude_flag='I' and
455 criteria_lookup_type ='PSP_SELECTION_CRITERIA' and criteria_lookup_code ='GLA';
456
457
458 BEGIN
459
460 OPEN get_selection_cardinality_csr(p_request_id);
461 FETCH get_selection_cardinality_csr BULK COLLECT into template_rec.array_sel_criteria;
462
463 CLOSE get_selection_cardinality_csr;
464
465
466 FOR i in 1.. template_rec.array_sel_criteria.count
467
468
469 LOOP
470
471 IF template_rec.array_sel_criteria(i) = 'PTY' THEN
472
473 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
474 select 'PTY', count(distinct ppf.person_id) from per_people_f ppf, per_assignments_f paf where
475 person_type_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
476 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code ='PTY'
477 and include_exclude_flag='I'
478 and request_id = p_request_id )
479 AND paf.person_id = ppf.person_id
480 AND paf.assignment_type = 'E'
481 AND paf.effective_start_date <= p_effort_end
482 AND paf.effective_end_date >= p_effort_start
483 and
484 ppf.effective_start_date <= p_effort_end and
485 ppf.effective_end_date >= p_effort_start) ;
486
487
488 ELSIF template_rec.array_sel_criteria(i) ='EMP' THEN
489
490 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
491 select 'EMP', count(distinct ppf.person_id) from per_all_people_f ppf, per_assignments_f paf where
492 ppf.person_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
493 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='EMP' and
494 include_exclude_flag='I'
495 and request_id = p_request_id )
496 AND paf.person_id = ppf.person_id
497 AND paf.assignment_type = 'E'
498 AND paf.effective_start_date <= p_effort_end
499 AND paf.effective_end_date >= p_effort_start
500 and
501 ppf.effective_start_date <= p_effort_end and
502 ppf.effective_end_date >= p_effort_start) ;
503
504 ELSIF template_rec.array_sel_criteria(i) ='SUP' THEN
505
506 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
507 select 'SUP', count(distinct person_id) from per_all_assignments_f paf where
508 supervisor_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
509 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='SUP'
510 and request_id = p_request_id
511 and include_exclude_flag='I'
512 )
513 AND paf.assignment_type = 'E'
514 and
515 effective_start_date <= p_effort_end and
516 effective_end_date >= p_effort_start) ;
517
518 ELSIF template_rec.array_sel_criteria(i) ='AWD' THEN
519
520 --- replaced non-performant insert with this for 4429787
521 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
522 SELECT 'AWD', COUNT(DISTINCT psl.person_id)
523 FROM psp_summary_lines psl,
524 psp_report_template_details_h prtd ,
525 per_time_periods ptp
526 WHERE
527 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
528 prtd.criteria_lookup_code='AWD' AND
529 prtd.include_exclude_flag='I' AND
530 prtd.request_id =p_request_id AND
531 psl.award_id = TO_NUMBER(prtd.criteria_value1) AND
532 psl.business_group_id = p_business_group_id AND
533 psl.set_of_books_id = p_set_of_books_id AND
534 psl.status_code= 'A' AND
535 ptp.time_period_id = psl.time_period_id AND
536 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
537 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
538 WHERE pdnh.summary_line_id = psl.summary_line_id
539 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
540 AND pdnh.reversal_entry_flag IS NULL
541 AND pdnh.adjustment_batch_name IS NULL )
542 OR EXISTS
543 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
544 WHERE ppg.summary_line_id = psl.summary_line_id
545 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
546 AND ppg.adjustment_batch_name IS NULL AND
547 ppg.reversal_entry_flag IS NULL)
548 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
549 WHERE palh.summary_line_id = psl.summary_line_id
550 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
551 AND palh.adjustment_batch_name IS NULL
552 AND palh.reversal_entry_flag IS NULL AND
553 NVL(palh.original_line_flag, 'N') ='N')));
554
555 ELSIF template_rec.array_sel_criteria(i)='ATY' THEN
556 --- replaced non-performant insert with this for 4429787
557
558
559 INSERT INTO psp_selection_cardinality_gt(lookup_code, total_count)(
560 SELECT 'ATY', COUNT(DISTINCT psl.person_id)
561 FROM psp_summary_lines psl,
562 psp_report_template_details_h prtd ,
563 gms_awards_all gaa,
564 per_time_periods ptp
565 WHERE psl.award_id = gaa.award_id AND
566 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
567 prtd.criteria_lookup_code='ATY' AND
568 prtd.include_exclude_flag='I' AND
569 prtd.request_id = p_request_id AND
570 gaa.type=prtd.criteria_value1 AND
571 psl.business_group_id = p_business_group_id AND
572 psl.set_of_books_id = p_set_of_books_id AND
573 psl.status_code= 'A' AND
574 ptp.time_period_id = psl.time_period_id AND
575 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
576 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
577 WHERE pdnh.summary_line_id = psl.summary_line_id
578 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
579 AND pdnh.reversal_entry_flag IS NULL
580 AND pdnh.adjustment_batch_name IS NULL )
581 OR EXISTS
582 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
583 WHERE ppg.summary_line_id = psl.summary_line_id
584 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
585 AND ppg.adjustment_batch_name IS NULL AND
586 ppg.reversal_entry_flag IS NULL)
587 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
588 WHERE palh.summary_line_id = psl.summary_line_id
589 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
590 AND palh.adjustment_batch_name IS NULL
591 AND palh.reversal_entry_flag IS NULL AND
592 NVL(palh.original_line_flag, 'N') ='N')));
593
594 ELSIF template_rec.array_sel_criteria(i)='PRT' THEN
595 --- replaced non-performant insert with this for 4429787
596 INSERT INTO psp_selection_cardinality_gt(lookup_code, total_count)(
597 SELECT 'PRT', COUNT(DISTINCT psl.person_id)
598 FROM psp_summary_lines psl,
599 psp_report_template_details_h prtd ,
600 pa_projects_all ppa ,
601 per_time_periods ptp
602 WHERE psl.project_id = ppa.project_id AND
603 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
604 prtd.criteria_lookup_code='PRT' AND
605 prtd.include_exclude_flag='I' AND
606 prtd.request_id =p_request_id AND
607 ppa.project_type=prtd.criteria_value1 AND
608 psl.business_group_id = p_business_group_id AND
609 psl.set_of_books_id = p_set_of_books_id AND
610 psl.status_code= 'A' AND
611 ptp.time_period_id = psl.time_period_id AND
612 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
613 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
614 WHERE pdnh.summary_line_id = psl.summary_line_id
615 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
616 AND pdnh.reversal_entry_flag IS NULL
617 AND pdnh.adjustment_batch_name IS NULL )
618 OR EXISTS
619 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
620 WHERE ppg.summary_line_id = psl.summary_line_id
621 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
622 AND ppg.adjustment_batch_name IS NULL AND
623 ppg.reversal_entry_flag IS NULL)
624 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
625 WHERE palh.summary_line_id = psl.summary_line_id
626 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
627 AND palh.adjustment_batch_name IS NULL
628 AND palh.reversal_entry_flag IS NULL AND
629 NVL(palh.original_line_flag, 'N') ='N')));
630
631 ELSIF template_rec.array_sel_criteria(i)='PRJ' THEN
632 --- replaced non-performant insert with this for 4429787
633 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
634 SELECT 'PRJ', COUNT(DISTINCT psl.person_id)
635 FROM psp_summary_lines psl,
636 psp_report_template_details_h prtd ,
637 per_time_periods ptp
638 WHERE
639 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
640 prtd.criteria_lookup_code='PRJ' AND
641 prtd.include_exclude_flag='I' AND
642 prtd.request_id =p_request_id AND
643 psl.business_group_id = p_business_group_id AND
644 psl.set_of_books_id = p_set_of_books_id AND
645 psl.status_code= 'A' AND
646 ptp.time_period_id = psl.time_period_id AND
647 psl.project_id = TO_NUMBER(prtd.criteria_value1) AND
648 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
649 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
650 WHERE pdnh.summary_line_id = psl.summary_line_id
651 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
652 AND pdnh.reversal_entry_flag IS NULL
653 AND pdnh.adjustment_batch_name IS NULL )
654 OR EXISTS
655 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
656 WHERE ppg.summary_line_id = psl.summary_line_id
657 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
658 AND ppg.adjustment_batch_name IS NULL AND
659 ppg.reversal_entry_flag IS NULL)
660 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
661 WHERE palh.summary_line_id = psl.summary_line_id
662 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
663 AND palh.adjustment_batch_name IS NULL
664 AND palh.reversal_entry_flag IS NULL AND
665 NVL(palh.original_line_flag, 'N') ='N')));
666
667 ELSIF template_rec.array_sel_criteria(i)='PAY' THEN
668
669 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
670 select 'PAY', count(distinct person_id) from per_assignments_f paf where
671 payroll_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
672 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='PAY'
673 and include_exclude_flag='I' and request_id = p_request_id
674 )
675 AND paf.assignment_type = 'E'
676 and
677 effective_start_date <= p_effort_end and
678 effective_end_date >= p_effort_start) ;
679
680 ELSIF template_rec.array_sel_criteria(i)='LOC' THEN
681
682 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
683 select 'LOC', count(distinct person_id) from per_assignments_f paf where
684 location_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
685 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='LOC'
686 and include_exclude_flag='I' and request_id = p_request_id
687 )
688 AND paf.assignment_type = 'E'
689 and
690 effective_start_date <= p_effort_end and
691 effective_end_date >= p_effort_start) ;
692
693 ELSIF template_rec.array_sel_criteria(i)='ORG' THEN
694
695 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
696 select 'ORG', count(distinct person_id) from per_assignments_f paf where
697 organization_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd
698 where
699 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='ORG'
700 and include_exclude_flag='I' and request_id = p_request_id
701 )
702 AND paf.assignment_type = 'E'
703 and effective_start_date <= p_effort_end and
704 effective_end_date >= p_effort_start);
705
706 ELSIF template_rec.array_sel_criteria(i)='JOB' THEN
707
708 insert into psp_selection_cardinality_gt(lookup_code, total_count)(
709 select 'JOB', count(distinct person_id) from per_assignments_f paf where
710 job_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
711 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='JOB'
712 and include_exclude_flag='I' and request_id=p_request_id
713 )
714 AND paf.assignment_type = 'E'
715 and
716 effective_start_date <= p_effort_end and
717 effective_end_date >= p_effort_start) ;
718
719 ELSIF template_rec.array_sel_criteria(i)='POS' THEN
720
721 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
722 select 'POS', count(distinct person_id) from per_assignments_f paf where
723 position_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h prtd where
724 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='POS'
725 and include_exclude_flag='I' and request_id = p_request_id
726 )
727 AND paf.assignment_type = 'E'
728 and
729 effective_start_date <= p_effort_end and
730 effective_end_date >= p_effort_start) ;
731
732 ELSIF template_rec.array_sel_criteria(i)='ASS' THEN
733
734 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
735 select 'ASS', count(distinct person_id) from per_assignments_f paf where
736 assignment_status_type_id in (select TO_NUMBER(criteria_value1) from psp_report_template_details_h
737 prtd where
738 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='ASS'
739 and include_exclude_flag='I' and request_id = p_request_id
740 )
741 AND paf.assignment_type = 'E'
742 and
743 effective_start_date <= p_effort_end and
744 effective_end_date >= p_effort_start) ;
745
746 ELSIF template_rec.array_sel_criteria(i)='CST' THEN
747
748 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
749 select 'CST', count(distinct paf.person_id) from per_assignments_f paf
750 , pay_payrolls_f ppf where
751 ppf.payroll_id = paf.payroll_id and
752 ppf.consolidation_set_id in
753 (select TO_NUMBER(criteria_value1) from psp_report_template_details_h
754 prtd where
755 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='CST'
756 and include_exclude_flag='I' and request_id = p_request_id
757 )
758 AND paf.assignment_type = 'E'
759 and
760 ppf.effective_start_date <= p_effort_end
761 and ppf.effective_end_date >= p_effort_start
762 and paf.effective_start_date <= p_effort_end and
763 paf.effective_end_date >= p_effort_start);
764
765
766 ELSIF template_rec.array_sel_criteria(i) = 'AST' THEN
767
768 insert into psp_selection_cardinality_gt(lookup_code, total_count) (
769 select 'AST', count(distinct paf.person_id) from per_all_assignments_f paf, hr_assignment_sets has ,
770 hr_assignment_Set_amendments hasa
771 where
772 has.assignment_set_id in (
773 select TO_NUMBER(criteria_value1) from psp_report_template_details_h
774 prtd where
775 criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='AST'
776 and include_exclude_flag='I' and request_id =p_request_id
777 )
778 and
779 ( ( paf.payroll_id = has.payroll_id and
780 paf.effective_start_date <= p_effort_end and
781 paf.effective_end_date >= p_effort_start
782 AND paf.assignment_type = 'E'
783 and has.assignment_set_id = hasa.assignment_Set_id
784 )
785 OR
786 (
787 paf.assignment_id = hasa.assignment_id and
788 paf.effective_start_date <= p_effort_end and
789 paf.effective_end_date >= p_effort_start
790 AND paf.assignment_type = 'E'
791 and hasa.assignment_Set_id=has.assignment_Set_id and include_or_exclude ='I') )
792 and not exists (select assignment_id from hr_assignment_Set_amendments hasa where
793 hasa.assignment_id = paf.assignment_id and hasa.include_or_exclude ='E'
794 AND paf.assignment_type = 'E'
795 and paf.effective_start_date <= p_effort_end and
796 paf.effective_end_date >= p_effort_start
797 ));
798
799
800
801
802
803 ELSIF template_rec.array_sel_criteria(i)='PPG' THEN
804
805 l_dyn_criteria:='PPG';
806 -- fnd_file.put_line(fnd_file.log, ' dyn_criteria is ' ||l_dyn_criteria);
807
808 ELSIF template_rec.array_sel_criteria(i)='GLA' THEN
809
810 l_dyn_criteria:='GLA';
811 -- fnd_file.put_line(fnd_file.log, ' dyn_criteria is ' ||l_dyn_criteria);
812
813 END IF;
814
815 END LOOP;
816
817
818
819 /* Next find the selection criteria with lowest cardinality. Use it to prepare the initial list */
820
821 OPEN get_lowest_cardinality_csr;
822 FETCH get_lowest_cardinality_csr into g_lookup_code;
823 CLOSE get_lowest_cardinality_csr;
824
825 IF g_lookup_code is not null then
826 l_atleast_one_criteria:='Y';
827
828 -- fnd_file.put_line(fnd_file.log, ' g_lookup_code is '||g_lookup_code);
829
830 hr_utility.trace( 'g_lookup_code -> '||g_lookup_code );
831
832 ELSE
833
834 OPEN get_zero_cardinality_csr;
835 FETCH get_zero_cardinality_csr into g_lookup_code;
836 CLOSE get_zero_cardinality_csr;
837
838 -- fnd_file.put_line(fnd_file.log, ' g_lookup_code is '||g_lookup_code);
839
840 hr_utility.trace( ' Inside zero cardinality => g_lookup_code= '||g_lookup_code );
841
842 IF g_lookup_code is not null then
843 l_atleast_one_criteria:='Y';
844
845 END IF;
846
847 /* To handle the case where one or more of the selection criterai have 0 cardinality */
848
849 END IF;
850
851 /*
852 EXCEPTION WHEN no_data_found then
853
854 */
855
856 IF g_lookup_code is NULL then
857
858 BEGIN
859
860 /* when no static selection criteria have been chosen, then invoke the dynamic selection criteria
861 */
862
863
864 -- fnd_file.put_line(fnd_file.log, ' g_lookup_code is null ');
865 hr_utility.trace( ' Inside zero cardinality => g_lookup_code is null');
866
867 IF l_dyn_criteria ='PPG' then
868 l_atleast_one_criteria:='Y';
869
870
871 OPEN ppg_cursor;
872
873 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
874 -- fnd_file.put_line(fnd_file.log, 'after fetch of ppg cursor ');
875 IF l_criteria_value1 is not null then
876
877
878 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
879
880 -- g_exec_string:= l_sql_string;
881
882 LOOP
883
884 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
885 -- fnd_file.put_line(fnd_file.log, 'after second fetch of ppg cursor ');
886 EXIT WHEN PPG_CURSOR%NOTFOUND;
887
888 /*
889 select l_sql_string
890 || ' OR ' || l_criteria_value1 || ' = ' || ''''|| l_criteria_value2 ||''''
891 into g_exec_string from psp_report_template_details_h ;
892
893 */
894
895 g_exec_string:= l_sql_string|| ' OR '||l_criteria_value1 ||' = '||'''' || l_criteria_value2|| '''';
896
897 l_sql_string:=g_exec_string;
898
899 END LOOP;
900 close ppg_cursor;
901
902 -- l_sql_string:= g_exec_string;
903
904 IF l_sql_string is not null then
905 g_exec_string := 'insert into psp_selection_cardinality_gt(lookup_code, total_count)
906 (select '|| '''' || 'PPG' || ''''||' , count(person_id)
907 from per_assignments_f paf,
908 pay_people_groups ppg
909 where paf.people_group_id= ppg.people_group_id
910 AND paf.assignment_type = ''' || 'E' || '''
911 and paf.effective_end_date >= :p_effort_Start and
912 paf.effective_start_date <= :p_effort_end
913 and
914 ppg.people_group_id
915 in (select people_group_id from pay_people_groups
916 where ' || l_sql_string
917 || ' ))
918 ';
919
920 hr_utility.trace( ' g_exec_string = '||g_exec_string );
921
922 -- fnd_file.put_line(fnd_file.log , ' g_exec_string 1 is '||g_exec_string);
923
924 execute immediate g_exec_string using IN p_effort_Start, p_effort_end;
925 g_lookup_code := 'PPG';
926 END IF;
927 END IF;
928
929
930 ELSIF l_dyn_criteria ='GLA' then
931
932 l_atleast_one_criteria:='Y';
933
934 OPEN gla_cursor;
935
936 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
937
938 IF l_criteria_value1 is not null then
939
940 l_sql_string := l_criteria_value1 ||' between '|| '''' || l_criteria_value2 || '''' ||
941 ' and ' || ''''||l_criteria_value3||'''' ;
942
943 -- g_exec_string := l_sql_string;
944
945
946 LOOP
947
948 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
949 EXIT WHEN GLA_CURSOR%NOTFOUND;
950
951 g_exec_string:= l_sql_string
952 || ' OR ' || l_criteria_value1 || ' between ' || ''''|| l_criteria_value2 || '''' ||
953 ' and ' || ''''|| l_criteria_value3 || '''' ;
954 l_sql_string:=g_exec_string;
955
956 END LOOP;
957 close gla_cursor;
958
959 -- l_sql_string:= g_exec_string;
960
961 -- fnd_file.put_line(fnd_file.log,' before isnerting g_exec_string in GL criteria ');
962 if l_sql_string is not null then
963 g_exec_string := 'insert into psp_selection_cardinality_gt(lookup_code, total_count)
964 ( select '|| '''' || 'GLA' || ''''|| ' , count( distinct psl.person_id)
965 from psp_summary_lines psl, psp_distribution_lines_history pdnh, psp_pre_gen_dist_lines_history ppg,
966 psp_adjustment_lines_history palh
967 , gl_code_combinations gcc
968 where
969 psl.business_group_id = '|| p_business_group_id || ' and
970 psl.set_of_books_id =' || p_set_of_books_id || ' and
971 gcc.code_combination_id= psl.gl_code_combination_id
972 and
973 psl.summary_line_id = pdnh.summary_line_id(+) and
974 psl.summary_line_id = ppg.summary_line_id(+) and
975 psl.summary_line_id = palh.summary_line_id(+) and
976 psl.status_code='||''''||'A'||''''||' and
977 ((psl.source_type in ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||') and
978 pdnh.distribution_date between :p_effort_start and :p_effort_end
979 and pdnh.summary_line_id = psl.summary_line_id
980 and pdnh.reversal_entry_flag is null
981 and pdnh.adjustment_batch_name is null
982 ) OR
983 ( psl.source_type='||''''||'P'||''''||' and
984 ppg.distribution_date between :p_effort_start and :p_effort_end and
985 ppg.summary_line_id = psl.summary_line_id and
986 ppg.adjustment_batch_name is null and
987 ppg.reversal_entry_flag is null)
988 OR (psl.source_type='||''''||'A'||''''||' and
989 palh.summary_line_id = psl.summary_line_id and
990 palh.reversal_entry_flag is null and
991 palh.adjustment_batch_name is null and
992 NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''|| ') = '||''''|| 'N' || ''''
993 || ' and palh.distribution_date between :p_effort_start and :p_effort_end )) and
994 gcc.code_combination_id= psl.gl_code_combination_id and
995 gcc.code_combination_id in (select code_combination_id from gl_code_combinations
996 where ' || l_sql_string
997 || ' )) ';
998
999
1000 -- fnd_file.put_line(fnd_file.log,' g_exec_string '||g_exec_string);
1001
1002 hr_utility.trace( ' g_exec_string = '||g_exec_string );
1003 execute immediate g_exec_string using IN p_effort_start, p_effort_end, p_effort_start, p_effort_end ,p_effort_start, p_effort_end;
1004 g_lookup_code :='GLA';
1005
1006 END IF;
1007 END IF;
1008
1009
1010 END IF;
1011
1012 END;
1013
1014 END IF;
1015
1016 IF NVL(l_atleast_one_criteria, 'N')='N' then
1017
1018 g_lookup_code:='ALL' ;
1019
1020 END IF;
1021
1022 EXCEPTION WHEN OTHERS THEN
1023 fnd_file.put_line(fnd_file.log, ' EXCEPTION '||sqlerrm);
1024
1025
1026 END;
1027
1028 PROCEDURE prepare_initial_person_list(p_request_id IN NUMBER, p_effort_start
1029 IN DATE, p_effort_end IN DATE, p_business_group_id IN NUMBER, p_Set_of_books_id IN NUMBER) IS
1030 PRAGMA AUTONOMOUS_TRANSACTION;
1031 CURSOR PPG_CURSOR IS
1032 select criteria_value1, criteria_value2 from
1033 psp_report_template_details_h where request_id = p_request_id and
1034 criteria_lookup_type= 'PSP_SELECTION_CRITERIA' and criteria_lookup_code='PPG' and
1035 include_exclude_flag='I';
1036
1037
1038 CURSOR GLA_CURSOR IS
1039 select criteria_value1 , criteria_value2, criteria_value3 from
1040 psp_report_template_details_h where request_id = p_request_id and
1041 criteria_lookup_type ='PSP_SELECTION_CRITERIA' and criteria_lookup_code ='GLA' and
1042 include_exclude_flag='I';
1043
1044 i number;
1045 l_criteria_value1 varchar2(30);
1046 l_criteria_value2 varchar2(30);
1047 l_criteria_value3 varchar2(30);
1048
1049 l_sql_string varchar2(1000);
1050
1051 l_cnt number;
1052
1053 BEGIN
1054 IF g_lookup_code = 'PTY' then
1055
1056 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1057 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1058 FROM per_people_f ppf,
1059 per_assignments_f paf,
1060 per_assignment_status_types past
1061 WHERE person_type_id IN (SELECT TO_NUMBER(criteria_value1)
1062 FROM psp_report_template_details_h prtd
1063 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
1064 AND criteria_lookup_code='PTY'
1065 AND request_id = p_request_id
1066 AND include_exclude_flag='I')
1067 AND paf.assignment_type = 'E'
1068 AND paf.person_id = ppf.person_id
1069 AND ppf.effective_start_date <= p_effort_end
1070 AND ppf.effective_end_date >= p_effort_start
1071 AND paf.effective_start_date <= p_effort_end
1072 AND paf.effective_end_date >= p_effort_start
1073 AND paf.assignment_status_type_id = past.assignment_status_type_id
1074 AND ( past.per_system_status <> 'TERM_ASSIGN'
1075 OR EXISTS ( select null
1076 FROM psp_pre_gen_dist_lines_history
1077 WHERE distribution_date between p_effort_start and p_effort_end
1078 AND assignment_id = paf.assignment_id
1079 AND reversal_entry_flag IS NULL
1080 AND rownum=1 )
1081 OR EXISTS (SELECT null
1082 FROM psp_distribution_lines_history pdlh
1083 , psp_summary_lines psl
1084 WHERE pdlh.summary_line_id = psl.summary_line_id
1085 AND distribution_date between p_effort_start and p_effort_end
1086 AND psl.person_id = paf.person_id
1087 AND psl.assignment_id = paf.assignment_id
1088 AND reversal_entry_flag IS NULL
1089 AND rownum=1));
1090
1091 ELSIF g_lookup_code ='EMP' then
1092
1093 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1094 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1095 FROM per_all_people_f ppf,
1096 per_assignments_f paf,
1097 per_assignment_status_types past
1098 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
1099 FROM psp_report_template_details_h prtd
1100 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
1101 AND criteria_lookup_code='EMP'
1102 AND include_exclude_flag='I'
1103 AND request_id = p_request_id)
1104 AND paf.assignment_type = 'E'
1105 AND paf.person_id = ppf.person_id
1106 AND ppf.effective_start_date <= p_effort_end
1107 AND ppf.effective_end_date >= p_effort_start
1108 AND paf.effective_start_date <= p_effort_end
1109 AND paf.effective_end_date >= p_effort_start
1110 AND paf.assignment_status_type_id = past.assignment_status_type_id
1111 AND ( past.per_system_status <> 'TERM_ASSIGN'
1112 OR EXISTS ( select null
1113 FROM psp_pre_gen_dist_lines_history
1114 WHERE distribution_date between p_effort_start and p_effort_end
1115 AND assignment_id = paf.assignment_id
1116 AND reversal_entry_flag IS NULL
1117 AND rownum=1 )
1118 OR EXISTS (SELECT null
1119 FROM psp_distribution_lines_history pdlh
1120 , psp_summary_lines psl
1121 WHERE pdlh.summary_line_id = psl.summary_line_id
1122 AND distribution_date between p_effort_start and p_effort_end
1123 AND psl.person_id = paf.person_id
1124 AND psl.assignment_id = paf.assignment_id
1125 AND reversal_entry_flag IS NULL
1126 AND rownum=1));
1127
1128 ELSIF g_lookup_code ='SUP' then
1129
1130 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1131 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1132 FROM per_all_people_f ppf,
1133 per_assignments_f paf,
1134 per_assignment_status_types past
1135 WHERE supervisor_id IN (SELECT TO_NUMBER(criteria_value1)
1136 FROM psp_report_template_details_h prtd
1137 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1138 AND criteria_lookup_code='SUP'
1139 AND include_exclude_flag='I'
1140 AND request_id = p_request_id)
1141 AND paf.assignment_type = 'E'
1142 AND paf.person_id = ppf.person_id
1143 AND ppf.effective_start_date <= p_effort_end
1144 AND ppf.effective_end_date >= p_effort_start
1145 AND paf.effective_start_date <= p_effort_end
1146 AND paf.effective_end_date >= p_effort_start
1147 AND paf.assignment_status_type_id = past.assignment_status_type_id
1148 AND ( past.per_system_status <> 'TERM_ASSIGN'
1149 OR EXISTS ( select null
1150 FROM psp_pre_gen_dist_lines_history
1151 WHERE distribution_date between p_effort_start and p_effort_end
1152 AND assignment_id = paf.assignment_id
1153 AND reversal_entry_flag IS NULL
1154 AND rownum=1 )
1155 OR EXISTS (SELECT null
1156 FROM psp_distribution_lines_history pdlh
1157 , psp_summary_lines psl
1158 WHERE pdlh.summary_line_id = psl.summary_line_id
1159 AND distribution_date between p_effort_start and p_effort_end
1160 AND psl.person_id = paf.person_id
1161 AND psl.assignment_id = paf.assignment_id
1162 AND reversal_entry_flag IS NULL
1163 AND rownum=1));
1164
1165
1166 ELSIF g_lookup_code='AWD' then
1167
1168 --- replaced original query for performance issues -- 4429787
1169 insert into psp_selected_persons_t(request_id, person_id, assignment_id)(
1170 select distinct p_request_id, psl.person_id , paf.assignment_id
1171 FROM psp_summary_lines psl,
1172 psp_report_template_details_h prtd ,
1173 per_time_periods ptp,
1174 per_assignments_f paf
1175 WHERE
1176 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
1177 prtd.criteria_lookup_code='AWD' AND
1178 prtd.include_exclude_flag='I' AND
1179 prtd.request_id =p_request_id AND
1180 psl.award_id = TO_NUMBER(prtd.criteria_value1) AND
1181 psl.business_group_id = p_business_group_id AND
1182 psl.set_of_books_id = p_set_of_books_id AND
1183 psl.status_code= 'A' AND
1184 ptp.time_period_id = psl.time_period_id AND
1185 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
1186 paf.person_id = psl.person_id AND
1187 paf.assignment_type = 'E' AND
1188 paf.effective_start_date <= p_effort_end AND
1189 paf.effective_end_date >= p_effort_start AND
1190 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
1191 WHERE pdnh.summary_line_id = psl.summary_line_id
1192 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
1193 AND pdnh.reversal_entry_flag IS NULL
1194 AND pdnh.adjustment_batch_name IS NULL )
1195 OR EXISTS
1196 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
1197 WHERE ppg.summary_line_id = psl.summary_line_id
1198 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
1199 AND ppg.adjustment_batch_name IS NULL AND
1200 ppg.reversal_entry_flag IS NULL)
1201 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
1202 WHERE palh.summary_line_id = psl.summary_line_id
1203 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
1204 AND palh.adjustment_batch_name IS NULL
1205 AND palh.reversal_entry_flag IS NULL
1206 AND NVL(palh.original_line_flag, 'N') ='N')));
1207
1208 ELSIF g_lookup_code ='ATY' then
1209
1210 --- replaced non-performant insert with this for 4429787
1211 INSERT INTO psp_selected_persons_t(request_id , person_id, assignment_id)(
1212 SELECT DISTINCT p_request_id, psl.person_id, paf.assignment_id
1213 FROM psp_summary_lines psl,
1214 psp_report_template_details_h prtd ,
1215 gms_awards_all gaa ,
1216 per_time_periods ptp,
1217 per_assignments_f paf
1218 WHERE psl.award_id = gaa.award_id AND
1219 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
1220 prtd.criteria_lookup_code='ATY' AND
1221 prtd.include_exclude_flag='I' AND
1222 prtd.request_id =p_request_id AND
1223 gaa.type=prtd.criteria_value1 AND
1224 psl.business_group_id = p_business_group_id AND
1225 psl.set_of_books_id = p_set_of_books_id AND
1226 psl.status_code= 'A' AND
1227 ptp.time_period_id = psl.time_period_id AND
1228 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
1229 paf.person_id = psl.person_id AND
1230 paf.assignment_type = 'E' AND
1231 paf.effective_start_date <= p_effort_end AND
1232 paf.effective_end_date >= p_effort_start AND
1233 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
1234 WHERE pdnh.summary_line_id = psl.summary_line_id
1235 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
1236 AND pdnh.reversal_entry_flag IS NULL
1237 AND pdnh.adjustment_batch_name IS NULL )
1238 OR EXISTS
1239 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
1240 WHERE ppg.summary_line_id = psl.summary_line_id
1241 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
1242 AND ppg.adjustment_batch_name IS NULL AND
1243 ppg.reversal_entry_flag IS NULL)
1244 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
1245 WHERE palh.summary_line_id = psl.summary_line_id
1246 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
1247 AND palh.adjustment_batch_name IS NULL
1248 AND palh.reversal_entry_flag IS NULL AND
1249 NVL(palh.original_line_flag, 'N') ='N')));
1250
1251 ELSIF g_lookup_code ='PRT' then
1252 --- replaced non-performant insert with this for 4429787
1253
1254 INSERT INTO psp_selected_persons_t(request_id , person_id, assignment_id)(
1255 SELECT DISTINCT p_request_id, psl.person_id, paf.assignment_id
1256 FROM psp_summary_lines psl,
1257 psp_report_template_details_h prtd ,
1258 pa_projects_all ppa ,
1259 per_time_periods ptp,
1260 per_assignments_f paf
1261 WHERE psl.project_id = ppa.project_id AND
1262 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
1263 prtd.criteria_lookup_code='PRT' AND
1264 prtd.include_exclude_flag='I' AND
1265 prtd.request_id =p_request_id AND
1266 ppa.project_type=prtd.criteria_value1 AND
1267 psl.business_group_id = p_business_group_id AND
1268 psl.set_of_books_id = p_set_of_books_id AND
1269 psl.status_code= 'A' AND
1270 ptp.time_period_id = psl.time_period_id AND
1271 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
1272 paf.person_id = psl.person_id AND
1273 paf.assignment_type = 'E' AND
1274 paf.effective_start_date <= p_effort_end AND
1275 paf.effective_end_date >= p_effort_start AND
1276 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
1277 WHERE pdnh.summary_line_id = psl.summary_line_id
1278 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
1279 AND pdnh.reversal_entry_flag IS NULL
1280 AND pdnh.adjustment_batch_name IS NULL )
1281 OR EXISTS
1282 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
1283 WHERE ppg.summary_line_id = psl.summary_line_id
1284 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
1285 AND ppg.adjustment_batch_name IS NULL AND
1286 ppg.reversal_entry_flag IS NULL)
1287 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
1288 WHERE palh.summary_line_id = psl.summary_line_id
1289 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
1290 AND palh.adjustment_batch_name IS NULL
1291 AND palh.reversal_entry_flag IS NULL AND
1292 NVL(palh.original_line_flag, 'N') ='N')));
1293
1294 -- select count(person_id) into l_cnt from psp_selected_persons_t where request_id = p_request_id;
1295
1296 -- fnd_file.put_line(fnd_file.log,'after insert into psp_selected_persons_t '||l_cnt);
1297
1298
1299
1300 ELSIF g_lookup_code ='PRJ' then
1301 --- replaced original query for performance issues -- 4429787
1302 insert into psp_selected_persons_t(request_id, person_id, assignment_id)(
1303 select distinct p_request_id, psl.person_id, paf.assignment_id
1304 FROM psp_summary_lines psl,
1305 psp_report_template_details_h prtd ,
1306 per_time_periods ptp,
1307 per_assignments_f paf
1308 WHERE
1309 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
1310 prtd.criteria_lookup_code='PRJ' AND
1311 prtd.include_exclude_flag='I' AND
1312 prtd.request_id =p_request_id AND
1313 psl.business_group_id = p_business_group_id AND
1314 psl.project_id = TO_NUMBER(prtd.criteria_value1) AND
1315 psl.set_of_books_id = p_set_of_books_id AND
1316 psl.status_code= 'A' AND
1317 ptp.time_period_id = psl.time_period_id AND
1318 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
1319 paf.person_id = psl.person_id AND
1320 paf.assignment_type = 'E' AND
1321 paf.effective_start_date <= p_effort_end AND
1322 paf.effective_end_date >= p_effort_start AND
1323 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
1324 WHERE pdnh.summary_line_id = psl.summary_line_id
1325 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
1326 AND pdnh.reversal_entry_flag IS NULL
1327 AND pdnh.adjustment_batch_name IS NULL )
1328 OR EXISTS
1329 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
1330 WHERE ppg.summary_line_id = psl.summary_line_id
1331 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
1332 AND ppg.adjustment_batch_name IS NULL AND
1333 ppg.reversal_entry_flag IS NULL)
1334 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
1335 WHERE palh.summary_line_id = psl.summary_line_id
1336 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
1337 AND palh.adjustment_batch_name IS NULL
1338 AND palh.reversal_entry_flag IS NULL AND
1339 NVL(palh.original_line_flag, 'N') ='N')));
1340
1341 ELSIF g_lookup_code ='PAY' then
1342
1343 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1344 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1345 FROM per_all_people_f ppf,
1346 per_assignments_f paf,
1347 per_assignment_status_types past
1348 WHERE payroll_id IN (SELECT TO_NUMBER(criteria_value1)
1349 FROM psp_report_template_details_h prtd
1350 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1351 AND criteria_lookup_code='PAY'
1352 AND include_exclude_flag='I'
1353 AND request_id = p_request_id)
1354 AND paf.assignment_type = 'E'
1355 AND paf.person_id = ppf.person_id
1356 AND ppf.effective_start_date <= p_effort_end
1357 AND ppf.effective_end_date >= p_effort_start
1358 AND paf.effective_start_date <= p_effort_end
1359 AND paf.effective_end_date >= p_effort_start
1360 AND paf.assignment_status_type_id = past.assignment_status_type_id
1361 AND ( past.per_system_status <> 'TERM_ASSIGN'
1362 OR EXISTS ( select null
1363 FROM psp_pre_gen_dist_lines_history
1364 WHERE distribution_date between p_effort_start and p_effort_end
1365 AND assignment_id = paf.assignment_id
1366 AND reversal_entry_flag IS NULL
1367 AND rownum=1 )
1368 OR EXISTS (SELECT null
1369 FROM psp_distribution_lines_history pdlh
1370 , psp_summary_lines psl
1371 WHERE pdlh.summary_line_id = psl.summary_line_id
1372 AND distribution_date between p_effort_start and p_effort_end
1373 AND psl.person_id = paf.person_id
1374 AND psl.assignment_id = paf.assignment_id
1375 AND reversal_entry_flag IS NULL
1376 AND rownum=1));
1377
1378 ELSIF g_lookup_code ='LOC' then
1379
1380 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1381 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1382 FROM per_all_people_f ppf,
1383 per_assignments_f paf,
1384 per_assignment_status_types past
1385 WHERE location_id IN (SELECT TO_NUMBER(criteria_value1)
1386 FROM psp_report_template_details_h prtd
1387 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1388 AND criteria_lookup_code='LOC'
1389 AND include_exclude_flag='I'
1390 AND request_id = p_request_id)
1391 AND paf.assignment_type = 'E'
1392 AND paf.person_id = ppf.person_id
1393 AND ppf.effective_start_date <= p_effort_end
1394 AND ppf.effective_end_date >= p_effort_start
1395 AND paf.effective_start_date <= p_effort_end
1396 AND paf.effective_end_date >= p_effort_start
1397 AND paf.assignment_status_type_id = past.assignment_status_type_id
1398 AND ( past.per_system_status <> 'TERM_ASSIGN'
1399 OR EXISTS ( select null
1400 FROM psp_pre_gen_dist_lines_history
1401 WHERE distribution_date between p_effort_start and p_effort_end
1402 AND assignment_id = paf.assignment_id
1403 AND reversal_entry_flag IS NULL
1404 AND rownum=1 )
1405 OR EXISTS (SELECT null
1406 FROM psp_distribution_lines_history pdlh
1407 , psp_summary_lines psl
1408 WHERE pdlh.summary_line_id = psl.summary_line_id
1409 AND distribution_date between p_effort_start and p_effort_end
1410 AND psl.person_id = paf.person_id
1411 AND psl.assignment_id = paf.assignment_id
1412 AND reversal_entry_flag IS NULL
1413 AND rownum=1));
1414
1415 ELSIF g_lookup_code ='ORG' then
1416
1417 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1418 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1419 FROM per_all_people_f ppf,
1420 per_assignments_f paf,
1421 per_assignment_status_types past
1422 WHERE organization_id IN (SELECT TO_NUMBER(criteria_value1)
1423 FROM psp_report_template_details_h prtd
1424 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1425 AND criteria_lookup_code='ORG'
1426 AND request_id = p_request_id
1427 AND include_exclude_flag='I')
1428 AND paf.assignment_type = 'E'
1429 AND paf.person_id = ppf.person_id
1430 AND ppf.effective_start_date <= p_effort_end
1431 AND ppf.effective_end_date >= p_effort_start
1432 AND paf.effective_start_date <= p_effort_end
1433 AND paf.effective_end_date >= p_effort_start
1434 AND paf.assignment_status_type_id = past.assignment_status_type_id
1435 AND ( past.per_system_status <> 'TERM_ASSIGN'
1436 OR EXISTS ( select null
1437 FROM psp_pre_gen_dist_lines_history
1438 WHERE distribution_date between p_effort_start and p_effort_end
1439 AND assignment_id = paf.assignment_id
1440 AND reversal_entry_flag IS NULL
1441 AND rownum=1 )
1442 OR EXISTS (SELECT null
1443 FROM psp_distribution_lines_history pdlh
1444 , psp_summary_lines psl
1445 WHERE pdlh.summary_line_id = psl.summary_line_id
1446 AND distribution_date between p_effort_start and p_effort_end
1447 AND psl.person_id = paf.person_id
1448 AND psl.assignment_id = paf.assignment_id
1449 AND reversal_entry_flag IS NULL
1450 AND rownum=1));
1451
1452 ELSIF g_lookup_code='CST' then
1453
1454 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1455 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1456 FROM pay_payrolls_f pp,
1457 per_all_people_f ppf,
1458 per_assignments_f paf,
1459 per_assignment_status_types past
1460 WHERE pp.payroll_id = paf.payroll_id
1461 AND pp.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
1462 FROM psp_report_template_details_h prtd
1463 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1464 AND criteria_lookup_code='CST'
1465 AND include_exclude_flag='I'
1466 AND request_id = p_request_id)
1467 AND paf.assignment_type = 'E'
1468 AND paf.person_id = ppf.person_id
1469 AND pp.effective_start_date <= p_effort_end
1470 AND pp.effective_end_date >= p_effort_start
1471 AND ppf.effective_start_date <= p_effort_end
1472 AND ppf.effective_end_date >= p_effort_start
1473 AND paf.effective_start_date <= p_effort_end
1474 AND paf.effective_end_date >= p_effort_start
1475 AND paf.assignment_status_type_id = past.assignment_status_type_id
1476 AND ( past.per_system_status <> 'TERM_ASSIGN'
1477 OR EXISTS ( select null
1478 FROM psp_pre_gen_dist_lines_history
1479 WHERE distribution_date between p_effort_start and p_effort_end
1480 AND assignment_id = paf.assignment_id
1481 AND reversal_entry_flag IS NULL
1482 AND rownum=1 )
1483 OR EXISTS (SELECT null
1484 FROM psp_distribution_lines_history pdlh
1485 , psp_summary_lines psl
1486 WHERE pdlh.summary_line_id = psl.summary_line_id
1487 AND distribution_date between p_effort_start and p_effort_end
1488 AND psl.person_id = paf.person_id
1489 AND psl.assignment_id = paf.assignment_id
1490 AND reversal_entry_flag IS NULL
1491 AND rownum=1));
1492
1493 ELSIF g_lookup_code = 'AST' then
1494
1495 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1496 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1497 FROM per_all_assignments_f paf,
1498 hr_assignment_sets has,
1499 hr_assignment_set_amendments hasa,
1500 per_all_people_f ppf,
1501 per_assignment_status_types past
1502 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
1503 FROM psp_report_template_details_h prtd
1504 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1505 AND criteria_lookup_code='AST'
1506 AND include_exclude_flag='I'
1507 AND request_id =p_request_id)
1508 AND ( (paf.payroll_id = has.payroll_id
1509 AND paf.assignment_type = 'E'
1510 AND paf.effective_start_date <= p_effort_end
1511 AND paf.effective_end_date >= p_effort_start
1512 AND has.assignment_set_id = hasa.assignment_set_id)
1513 OR (paf.assignment_id = hasa.assignment_id
1514 AND paf.assignment_type = 'E'
1515 AND paf.effective_start_date <= p_effort_end
1516 AND paf.effective_end_date >= p_effort_start
1517 AND hasa.assignment_set_id=has.assignment_set_id AND include_or_exclude ='I'))
1518 AND NOT EXISTS (SELECT assignment_id
1519 FROM hr_assignment_set_amendments hasa
1520 WHERE hasa.assignment_id = paf.assignment_id AND hasa.include_or_exclude ='E'
1521 AND paf.assignment_type = 'E'
1522 AND paf.effective_start_date <= p_effort_end
1523 AND paf.effective_end_date >= p_effort_start)
1524 AND paf.person_id = ppf.person_id
1525 AND ppf.effective_start_date <= p_effort_end
1526 AND ppf.effective_end_date >= p_effort_start
1527 AND paf.assignment_status_type_id = past.assignment_status_type_id
1528 AND ( past.per_system_status <> 'TERM_ASSIGN'
1529 OR EXISTS ( select null
1530 FROM psp_pre_gen_dist_lines_history
1531 WHERE distribution_date between p_effort_start and p_effort_end
1532 AND assignment_id = paf.assignment_id
1533 AND reversal_entry_flag IS NULL
1534 AND rownum=1 )
1535 OR EXISTS (SELECT null
1536 FROM psp_distribution_lines_history pdlh
1537 , psp_summary_lines psl
1538 WHERE pdlh.summary_line_id = psl.summary_line_id
1539 AND distribution_date between p_effort_start and p_effort_end
1540 AND psl.person_id = paf.person_id
1541 AND psl.assignment_id = paf.assignment_id
1542 AND reversal_entry_flag IS NULL
1543 AND rownum=1));
1544
1545
1546 ELSIF g_lookup_code ='JOB' then
1547
1548 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1549 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1550 FROM per_all_people_f ppf,
1551 per_assignments_f paf,
1552 per_assignment_status_types past
1553 WHERE job_id IN (SELECT TO_NUMBER(criteria_value1)
1554 FROM psp_report_template_details_h prtd
1555 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1556 AND criteria_lookup_code='JOB'
1557 AND include_exclude_flag='I'
1558 AND request_id = p_request_id)
1559 AND paf.assignment_type = 'E'
1560 AND paf.person_id = ppf.person_id
1561 AND ppf.effective_start_date <= p_effort_end
1562 AND ppf.effective_end_date >= p_effort_start
1563 AND paf.effective_start_date <= p_effort_end
1564 AND paf.effective_end_date >= p_effort_start
1565 AND paf.assignment_status_type_id = past.assignment_status_type_id
1566 AND ( past.per_system_status <> 'TERM_ASSIGN'
1567 OR EXISTS ( select null
1568 FROM psp_pre_gen_dist_lines_history
1569 WHERE distribution_date between p_effort_start and p_effort_end
1570 AND assignment_id = paf.assignment_id
1571 AND reversal_entry_flag IS NULL
1572 AND rownum=1 )
1573 OR EXISTS (SELECT null
1574 FROM psp_distribution_lines_history pdlh
1575 , psp_summary_lines psl
1576 WHERE pdlh.summary_line_id = psl.summary_line_id
1577 AND distribution_date between p_effort_start and p_effort_end
1578 AND psl.person_id = paf.person_id
1579 AND psl.assignment_id = paf.assignment_id
1580 AND reversal_entry_flag IS NULL
1581 AND rownum=1));
1582
1583 ELSIF g_lookup_code ='POS' then
1584
1585 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1586 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1587 FROM per_all_people_f ppf,
1588 per_assignments_f paf,
1589 per_assignment_status_types past
1590 WHERE position_id IN (SELECT TO_NUMBER(criteria_value1)
1591 FROM psp_report_template_details_h prtd
1592 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1593 AND criteria_lookup_code='POS'
1594 AND request_id = p_request_id
1595 AND include_exclude_flag='I')
1596 AND paf.assignment_type = 'E'
1597 AND paf.person_id = ppf.person_id
1598 AND ppf.effective_start_date <= p_effort_end
1599 AND ppf.effective_end_date >= p_effort_start
1600 AND paf.effective_start_date <= p_effort_end
1601 AND paf.effective_end_date >= p_effort_start
1602 AND paf.assignment_status_type_id = past.assignment_status_type_id
1603 AND ( past.per_system_status <> 'TERM_ASSIGN'
1604 OR EXISTS ( select null
1605 FROM psp_pre_gen_dist_lines_history
1606 WHERE distribution_date between p_effort_start and p_effort_end
1607 AND assignment_id = paf.assignment_id
1608 AND reversal_entry_flag IS NULL
1609 AND rownum=1 )
1610 OR EXISTS (SELECT null
1611 FROM psp_distribution_lines_history pdlh
1612 , psp_summary_lines psl
1613 WHERE pdlh.summary_line_id = psl.summary_line_id
1614 AND distribution_date between p_effort_start and p_effort_end
1615 AND psl.person_id = paf.person_id
1616 AND psl.assignment_id = paf.assignment_id
1617 AND reversal_entry_flag IS NULL
1618 AND rownum=1));
1619
1620 ELSIF g_lookup_code ='ASS' then
1621
1622 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
1623 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
1624 FROM per_all_people_f ppf,
1625 per_assignments_f paf,
1626 per_assignment_status_types past
1627 WHERE paf.assignment_status_type_id IN (SELECT TO_NUMBER(criteria_value1)
1628 FROM psp_report_template_details_h prtd
1629 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1630 AND criteria_lookup_code='ASS'
1631 AND request_id = p_request_id
1632 AND include_exclude_flag='I')
1633 AND paf.assignment_type = 'E'
1634 AND paf.person_id = ppf.person_id
1635 AND ppf.effective_start_date <= p_effort_end
1636 AND ppf.effective_end_date >= p_effort_start
1637 AND paf.effective_start_date <= p_effort_end
1638 AND paf.effective_end_date >= p_effort_start
1639 AND ppf.business_group_id = p_business_group_id
1640 AND paf.assignment_status_type_id = past.assignment_status_type_id
1641 AND ( past.per_system_status <> 'TERM_ASSIGN'
1642 OR EXISTS ( select null
1643 FROM psp_pre_gen_dist_lines_history
1644 WHERE distribution_date between p_effort_start and p_effort_end
1645 AND assignment_id = paf.assignment_id
1646 AND reversal_entry_flag IS NULL
1647 AND rownum=1 )
1648 OR EXISTS (SELECT null
1649 FROM psp_distribution_lines_history pdlh
1650 , psp_summary_lines psl
1651 WHERE pdlh.summary_line_id = psl.summary_line_id
1652 AND distribution_date between p_effort_start and p_effort_end
1653 AND psl.person_id = paf.person_id
1654 AND psl.assignment_id = paf.assignment_id
1655 AND reversal_entry_flag IS NULL
1656 AND rownum=1));
1657
1658
1659 ELSIF g_lookup_code='PPG' then
1660
1661
1662 open ppg_cursor;
1663 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
1664 IF l_criteria_value1 is not null then
1665
1666
1667 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
1668
1669 -- g_exec_string:= l_sql_string;
1670
1671 LOOP
1672
1673 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
1674 EXIT WHEN PPG_CURSOR%NOTFOUND;
1675
1676 /*
1677 select l_sql_string
1678 || ' OR ' || l_criteria_value1 || ' = ' || ''''|| l_criteria_value2 ||''''
1679 into g_exec_string from psp_report_template_details_h ;
1680
1681 */
1682 g_exec_string:= l_sql_string || ' OR '||l_criteria_value1 ||' = ' || ''''||l_criteria_value2 || '''';
1683
1684 l_sql_string:= g_exec_string;
1685
1686 END LOOP;
1687 close ppg_cursor;
1688
1689
1690 if l_sql_string is not null then
1691 g_exec_string := 'insert into psp_selected_persons_t
1692 (request_id, person_id, assignment_id)
1693 (select :request_id , paf.person_id, paf.assignment_id
1694 from per_assignments_f paf,
1695 pay_people_groups ppg,
1696 per_all_people_f ppf,
1697 per_assignment_status_types past
1698 where paf.people_group_id= ppg.people_group_id
1699 AND paf.person_id = ppf.person_id
1700 AND paf.assignment_status_type_id = past.assignment_status_type_id
1701 AND paf.assignment_type = ''' || 'E' || '''
1702 AND paf.effective_end_date >= :p_effort_Start
1703 AND paf.effective_start_date <= :p_effort_end
1704 AND ppf.effective_end_date >= :p_effort_start
1705 AND ppf.effective_start_date <= :p_effort_end
1706 AND ppg.people_group_id IN (SELECT people_group_id FROM pay_people_groups
1707 WHERE ' || l_sql_string|| ' )
1708 AND ( past.per_system_status <> '''|| 'TERM_ASSIGN' ||'''
1709 OR EXISTS ( select null
1710 FROM psp_pre_gen_dist_lines_history
1711 WHERE distribution_date between :p_effort_start and :p_effort_end
1712 AND assignment_id = paf.assignment_id
1713 AND reversal_entry_flag IS NULL
1714 AND rownum=1 )
1715 OR EXISTS (SELECT null
1716 FROM psp_distribution_lines_history pdlh
1717 , psp_summary_lines psl
1718 WHERE pdlh.summary_line_id = psl.summary_line_id
1719 AND distribution_date between :p_effort_start and :p_effort_end
1720 AND psl.person_id = paf.person_id
1721 AND psl.assignment_id = paf.assignment_id
1722 AND reversal_entry_flag IS NULL
1723 AND rownum=1)))';
1724
1725 -- fnd_file.put_line(fnd_file.log, 'g_exec_string2 = '||g_exec_string);
1726
1727 execute immediate g_exec_string using IN p_request_id, p_effort_start, p_effort_end,
1728 p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_effort_start, p_effort_end;
1729 end if;
1730 end if;
1731
1732
1733 ELSIF g_lookup_code ='GLA' then
1734
1735 OPEN gla_cursor;
1736
1737 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
1738
1739 IF l_criteria_value1 is not null then
1740
1741 l_sql_string := l_criteria_value1 ||' between '|| '''' || l_criteria_value2 ||''''||
1742 ' and ' || ''''|| l_criteria_value3 || '''' ;
1743 -- g_exec_string := l_sql_string;
1744
1745
1746 LOOP
1747
1748 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
1749 EXIT WHEN GLA_CURSOR%NOTFOUND;
1750
1751 g_exec_string:= l_sql_string
1752 || ' OR ' || l_criteria_value1 || ' between ' || ''''|| l_criteria_value2 || '''' ||
1753 ' and ' || ''''|| l_criteria_value3 || '''' ;
1754
1755 l_sql_string:=g_exec_string;
1756
1757
1758 END LOOP;
1759 close gla_cursor;
1760
1761 -- l_sql_string:= g_exec_string;
1762
1763 if l_sql_string is not null then
1764 g_exec_string := 'insert into psp_selected_persons_t(request_id, person_id, assignment_id)
1765 ( select :p_request_id, psl.person_id, psl.assignment_id
1766 from psp_summary_lines psl, psp_distribution_lines_history pdnh,
1767 psp_adjustment_lines_history palh, psp_pre_gen_dist_lines_history ppg,
1768 gl_code_combinations gcc
1769 where
1770 psl.business_group_id = '|| p_business_group_id || ' and
1771 psl.set_of_books_id = ' || p_Set_of_books_id ||' and
1772 psl.summary_line_id = pdnh.summary_line_id(+) and
1773 psl.summary_line_id = ppg.summary_line_id(+) and
1774 psl.summary_line_id = palh.summary_line_id(+) and
1775 psl.status_code= '||''''||'A'||''''||' and
1776 ((psl.source_type in ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||') and
1777 pdnh.distribution_date between :p_effort_start and :p_effort_end
1778 and pdnh.reversal_entry_flag is null
1779 and pdnh.summary_line_id = psl.summary_line_id
1780 and pdnh.adjustment_batch_name is null
1781 ) OR
1782 ( psl.source_type='||''''||'P'||''''||' and
1783 ppg.distribution_date between :p_effort_start and :p_effort_end and
1784 ppg.summary_line_id = psl.summary_line_id and
1785 ppg.adjustment_batch_name is null and
1786 ppg.reversal_entry_flag is null)
1787 OR (psl.source_type='||''''||'A'||''''||' and
1788 palh.adjustment_batch_name is null and
1789 palh.summary_line_id =psl.summary_line_id and
1790 NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''|| ') = '||''''|| 'N' || ''''
1791 || ' and palh.distribution_date between :p_effort_start and :p_effort_end )) and
1792 gcc.code_combination_id= psl.gl_code_combination_id and
1793 gcc.code_combination_id in (select code_combination_id from gl_code_combinations
1794 where ' || l_sql_string
1795 || ' )) ';
1796
1797 -- fnd_file.put_line(fnd_file.log, 'g_exec_string 2= '||g_exec_string);
1798
1799 execute immediate g_exec_string using iN p_request_id, p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_effort_start, p_effort_end;
1800
1801
1802 END IF;
1803 END IF;
1804
1805 ELSIf g_lookup_code='ALL' then
1806
1807 insert into psp_selected_persons_t(request_id, person_id)(select p_request_id,
1808 person_id from per_people_f where
1809 business_group_id = p_business_group_id and
1810 effective_start_date <= p_effort_end and
1811 effective_end_date >= p_effort_start);
1812 END IF;
1813
1814
1815 COMMIT;
1816 END;
1817
1818
1819
1820 PROCEDURE prune_initial_person_list(p_request_id IN NUMBER , p_effort_start IN DATE, p_effort_end IN DATE,
1821 p_business_group_id IN NUMBER, p_Set_of_books_id IN NUMBER)
1822 IS
1823
1824
1825 CURSOR get_all_selection_criteria(p_request_id IN NUMBER) is
1826 SELECT distinct criteria_lookup_code,
1827 include_exclude_flag from
1828 psp_report_template_details_h where request_id = p_request_id and
1829 criteria_lookup_type='PSP_SELECTION_CRITERIA' ORDER BY include_exclude_flag;
1830
1831
1832 CURSOR PPG_CURSOR IS
1833 select criteria_value1, criteria_value2 from
1834 psp_report_template_details_h where request_id = p_request_id and
1835 criteria_lookup_type= 'PSP_SELECTION_CRITERIA' and criteria_lookup_code='PPG' and include_exclude_flag='I';
1836
1837
1838 CURSOR GLA_CURSOR IS
1839 select criteria_value1 , criteria_value2, criteria_value3 from
1840 psp_report_template_details_h where request_id = p_request_id and
1841 criteria_lookup_type ='PSP_SELECTION_CRITERIA' and criteria_lookup_code ='GLA' and include_exclude_flag='I';
1842
1843
1844 type t_varchar_30_type is TABLE Of VARCHAR2(30) INDEX BY BINARY_INTEGER;
1845 type t_varchar_1_type is TABLE of VARCHAR2(1) INDEX BY BINARY_INTEGER;
1846
1847 l_criteria_value1 varchar2(30);
1848
1849 l_criteria_value2 varchar2(30);
1850
1851
1852 l_criteria_value3 varchar2(30);
1853
1854
1855
1856 l_sql_string varchar2(1000);
1857
1858
1859 i number;
1860
1861 BEGIN
1862 open get_all_selection_criteria(p_request_id);
1863 fetch get_all_selection_criteria BULK COLLECT into template_sel_criteria.array_sel_criteria,
1864 template_sel_criteria.array_inc_exc_flag;
1865
1866 close get_all_selection_criteria;
1867
1868
1869
1870 for i in 1..template_sel_criteria.array_sel_criteria.count
1871
1872 LOOP
1873
1874 IF template_sel_criteria.array_inc_exc_flag(i) = 'I' THEN
1875
1876
1877 IF template_sel_criteria.array_sel_criteria(i) <> g_lookup_code then
1878 IF template_sel_criteria.array_sel_criteria(i) = 'PTY' THEN
1879
1880 DELETE FROM psp_selected_persons_t pspt
1881 WHERE request_id = p_request_id
1882 /* Bug 5087294 : Performance fix replacing not in with not exists */
1883 -- AND person_id NOT IN (SELECT NVL( person_id, 0)
1884 AND NOT EXISTS ( SELECT 1
1885 FROM per_people_f ppf,
1886 psp_report_template_details_h prtd,
1887 per_assignments_f paf,
1888 per_assignment_status_types past
1889 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1890 AND criteria_lookup_code='PTY'
1891 AND paf.person_id = ppf.person_id
1892 AND paf.assignment_type = 'E'
1893 AND paf.effective_start_date <= p_effort_end
1894 AND paf.effective_end_date >= p_effort_start
1895 AND ppf.effective_start_date <= p_effort_end
1896 AND ppf.effective_end_date >= p_effort_start
1897 AND include_exclude_flag='I'
1898 AND ppf.person_type_id = TO_NUMBER(prtd.criteria_value1)
1899 AND prtd.request_id = p_request_id
1900 AND ppf.person_id = pspt.person_id
1901 AND paf.assignment_status_type_id = past.assignment_status_type_id
1902 AND ( past.per_system_status <> 'TERM_ASSIGN'
1903 OR EXISTS ( select null
1904 FROM psp_pre_gen_dist_lines_history
1905 WHERE distribution_date between p_effort_start and p_effort_end
1906 AND assignment_id = paf.assignment_id
1907 AND reversal_entry_flag IS NULL
1908 AND rownum=1 )
1909 OR EXISTS (SELECT null
1910 FROM psp_distribution_lines_history pdlh
1911 , psp_summary_lines psl
1912 WHERE pdlh.summary_line_id = psl.summary_line_id
1913 AND distribution_date between p_effort_start and p_effort_end
1914 AND psl.person_id = paf.person_id
1915 AND psl.assignment_id = paf.assignment_id
1916 AND reversal_entry_flag IS NULL
1917 AND rownum=1)));
1918
1919 ELSIF template_sel_criteria.array_sel_criteria(i) = 'EMP' THEN
1920
1921 DELETE FROM psp_selected_persons_t pspt
1922 WHERE request_id = p_request_id
1923 /* Bug 5087294 : Performance fix replacing not in with not exists */
1924 -- AND person_id NOT IN (SELECT NVL(person_id,0)
1925 AND NOT EXISTS ( SELECT 1
1926 FROM per_all_people_f ppf,
1927 per_assignments_f paf,
1928 per_assignment_status_types past
1929 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
1930 FROM psp_report_template_details_h prtd
1931 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
1932 AND criteria_lookup_code='EMP'
1933 AND include_exclude_flag='I'
1934 AND prtd.request_id = p_request_id)
1935 AND paf.person_id = ppf.person_id
1936 AND paf.assignment_type = 'E'
1937 AND paf.effective_start_date <= p_effort_end
1938 AND paf.effective_end_date >= p_effort_start
1939 AND ppf.effective_start_date <= p_effort_end
1940 AND ppf.effective_end_date >= p_effort_start
1941 AND ppf.person_id = pspt.person_id
1942 AND paf.assignment_status_type_id = past.assignment_status_type_id
1943 AND ( past.per_system_status <> 'TERM_ASSIGN'
1944 OR EXISTS ( select null
1945 FROM psp_pre_gen_dist_lines_history
1946 WHERE distribution_date between p_effort_start and p_effort_end
1947 AND assignment_id = paf.assignment_id
1948 AND reversal_entry_flag IS NULL
1949 AND rownum=1 )
1950 OR EXISTS (SELECT null
1951 FROM psp_distribution_lines_history pdlh
1952 , psp_summary_lines psl
1953 WHERE pdlh.summary_line_id = psl.summary_line_id
1954 AND distribution_date between p_effort_start and p_effort_end
1955 AND psl.person_id = paf.person_id
1956 AND psl.assignment_id = paf.assignment_id
1957 AND reversal_entry_flag IS NULL
1958 AND rownum=1)));
1959
1960
1961 ELSIF template_sel_criteria.array_sel_criteria(i) ='SUP' THEN
1962
1963 DELETE FROM psp_selected_persons_t pspt
1964 WHERE request_id = p_request_id
1965 /* Bug 5087294 : Performance fix replacing not in with not exists */
1966 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
1967 AND NOT EXISTS ( SELECT 1
1968 FROM per_all_assignments_f paf,
1969 psp_report_template_details_h prtd,
1970 per_assignment_status_types past
1971 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
1972 AND criteria_lookup_code='SUP'
1973 AND include_exclude_flag='I'
1974 AND paf.supervisor_id = TO_NUMBER(prtd.criteria_value1)
1975 AND prtd.request_id = p_request_id
1976 AND paf.assignment_type = 'E'
1977 AND paf.effective_start_date <= p_effort_end
1978 AND effective_end_date >= p_effort_start
1979 AND paf.person_id = pspt.person_id
1980 AND paf.assignment_status_type_id = past.assignment_status_type_id
1981 AND ( past.per_system_status <> 'TERM_ASSIGN'
1982 OR EXISTS ( select null
1983 FROM psp_pre_gen_dist_lines_history
1984 WHERE distribution_date between p_effort_start and p_effort_end
1985 AND assignment_id = paf.assignment_id
1986 AND reversal_entry_flag IS NULL
1987 AND rownum=1 )
1988 OR EXISTS (SELECT null
1989 FROM psp_distribution_lines_history pdlh
1990 , psp_summary_lines psl
1991 WHERE pdlh.summary_line_id = psl.summary_line_id
1992 AND distribution_date between p_effort_start and p_effort_end
1993 AND psl.person_id = paf.person_id
1994 AND psl.assignment_id = paf.assignment_id
1995 AND reversal_entry_flag IS NULL
1996 AND rownum=1)));
1997
1998
1999 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AWD' THEN
2000
2001
2002 --- replaced original query for performance issues -- 4429787
2003 delete from psp_selected_persons_t where request_id = p_request_id AND person_id not in (
2004 select psl.person_id
2005 FROM psp_summary_lines psl,
2006 psp_report_template_details_h prtd ,
2007 per_time_periods ptp
2008 WHERE
2009 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2010 prtd.criteria_lookup_code='AWD' AND
2011 prtd.include_exclude_flag='I' AND
2012 prtd.request_id =p_request_id AND
2013 psl.award_id = TO_NUMBER(prtd.criteria_value1) AND
2014 psl.business_group_id = p_business_group_id AND
2015 psl.set_of_books_id = p_set_of_books_id AND
2016 psl.status_code= 'A' AND
2017 ptp.time_period_id = psl.time_period_id AND
2018 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2019 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2020 WHERE pdnh.summary_line_id = psl.summary_line_id
2021 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2022 AND pdnh.reversal_entry_flag IS NULL
2023 AND pdnh.adjustment_batch_name IS NULL )
2024 OR EXISTS
2025 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2026 WHERE ppg.summary_line_id = psl.summary_line_id
2027 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2028 AND ppg.adjustment_batch_name IS NULL AND
2029 ppg.reversal_entry_flag IS NULL)
2030 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2031 WHERE palh.summary_line_id = psl.summary_line_id
2032 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2033 AND palh.adjustment_batch_name IS NULL
2034 AND palh.reversal_entry_flag IS NULL
2035 AND NVL(palh.original_line_flag, 'N') ='N')));
2036
2037 ELSIF template_sel_criteria.array_sel_criteria(i) = 'ATY' then
2038
2039
2040 --- replaced non-performant delete with this for 4429787
2041 DELETE FROM psp_selected_persons_t WHERE request_id = p_request_id AND person_id NOT IN (
2042 SELECT NVL(psl.person_id,0)
2043 FROM psp_summary_lines psl,
2044 psp_report_template_details_h prtd ,
2045 gms_awards_all gaa ,
2046 per_time_periods ptp
2047 WHERE psl.award_id = gaa.award_id AND
2048 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2049 prtd.criteria_lookup_code='ATY' AND
2050 prtd.include_exclude_flag='I' AND
2051 prtd.request_id =p_request_id AND
2052 gaa.type=prtd.criteria_value1 AND
2053 psl.business_group_id = p_business_group_id AND
2054 psl.set_of_books_id = p_set_of_books_id AND
2055 psl.status_code= 'A' AND
2056 ptp.time_period_id = psl.time_period_id AND
2057 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2058 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2059 WHERE pdnh.summary_line_id = psl.summary_line_id
2060 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2061 AND pdnh.reversal_entry_flag IS NULL
2062 AND pdnh.adjustment_batch_name IS NULL )
2063 OR EXISTS
2064 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2065 WHERE ppg.summary_line_id = psl.summary_line_id
2066 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2067 AND ppg.adjustment_batch_name IS NULL AND
2068 ppg.reversal_entry_flag IS NULL)
2069 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2070 WHERE palh.summary_line_id = psl.summary_line_id
2071 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2072 AND palh.adjustment_batch_name IS NULL
2073 AND palh.reversal_entry_flag IS NULL AND
2074 NVL(palh.original_line_flag, 'N') ='N')));
2075
2076 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRT' THEN
2077
2078 --- replaced non-performant delete with this for 4429787
2079 DELETE FROM psp_selected_persons_t WHERE request_id = p_request_id AND person_id NOT IN (
2080 SELECT NVL(psl.person_id,0)
2081 FROM psp_summary_lines psl,
2082 psp_report_template_details_h prtd ,
2083 pa_projects_all ppa ,
2084 per_time_periods ptp
2085 WHERE psl.project_id = ppa.project_id AND
2086 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2087 prtd.criteria_lookup_code='PRT' AND
2088 prtd.include_exclude_flag='I' AND
2089 prtd.request_id =p_request_id AND
2090 ppa.project_type=prtd.criteria_value1 AND
2091 psl.business_group_id = p_business_group_id AND
2092 psl.set_of_books_id = p_set_of_books_id AND
2093 psl.status_code= 'A' AND
2094 ptp.time_period_id = psl.time_period_id AND
2095 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2096 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2097 WHERE pdnh.summary_line_id = psl.summary_line_id
2098 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2099 AND pdnh.reversal_entry_flag IS NULL
2100 AND pdnh.adjustment_batch_name IS NULL )
2101 OR EXISTS
2102 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2103 WHERE ppg.summary_line_id = psl.summary_line_id
2104 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2105 AND ppg.adjustment_batch_name IS NULL AND
2106 ppg.reversal_entry_flag IS NULL)
2107 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2108 WHERE palh.summary_line_id = psl.summary_line_id
2109 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2110 AND palh.adjustment_batch_name IS NULL
2111 AND palh.reversal_entry_flag IS NULL AND
2112 NVL(palh.original_line_flag, 'N') ='N')));
2113
2114 elsif template_sel_criteria.array_sel_criteria(i) ='PRJ' THEN
2115
2116 --- replaced non-performant insert with this for 4429787
2117 delete from psp_selected_persons_t where request_id = p_request_id AND person_id not in (
2118 select nvl( psl.person_id ,0)
2119 FROM psp_summary_lines psl,
2120 psp_report_template_details_h prtd ,
2121 per_time_periods ptp
2122 WHERE
2123 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2124 prtd.criteria_lookup_code='PRJ' AND
2125 prtd.include_exclude_flag='I' AND
2126 prtd.request_id =p_request_id AND
2127 psl.project_id = TO_NUMBER(prtd.criteria_value1) AND
2128 psl.business_group_id = p_business_group_id AND
2129 psl.set_of_books_id = p_set_of_books_id AND
2130 psl.status_code= 'A' AND
2131 ptp.time_period_id = psl.time_period_id AND
2132 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2133 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2134 WHERE pdnh.summary_line_id = psl.summary_line_id
2135 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2136 AND pdnh.reversal_entry_flag IS NULL
2137 AND pdnh.adjustment_batch_name IS NULL )
2138 OR EXISTS
2139 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2140 WHERE ppg.summary_line_id = psl.summary_line_id
2141 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2142 AND ppg.adjustment_batch_name IS NULL AND
2143 ppg.reversal_entry_flag IS NULL)
2144 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2145 WHERE palh.summary_line_id = psl.summary_line_id
2146 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2147 AND palh.adjustment_batch_name IS NULL
2148 AND palh.reversal_entry_flag IS NULL AND
2149 NVL(palh.original_line_flag, 'N') ='N')));
2150
2151 elsif template_sel_criteria.array_sel_criteria(i) ='PAY' THEN
2152
2153 DELETE FROM psp_selected_persons_t pspt
2154 WHERE request_id = p_request_id
2155 /* Bug 5087294 : Performance fix replacing not in with not exists */
2156 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2157 AND NOT EXISTS ( SELECT 1
2158 FROM per_assignments_f paf,
2159 psp_report_template_details_h prtd,
2160 per_assignment_status_types past
2161 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2162 AND criteria_lookup_code='PAY'
2163 AND include_exclude_flag='I'
2164 AND paf.assignment_type = 'E'
2165 AND effective_start_date <= p_effort_end
2166 AND effective_end_date >= p_effort_start
2167 AND paf.payroll_id = TO_NUMBER(prtd.criteria_value1)
2168 AND prtd.request_id = p_request_id
2169 AND paf.person_id = pspt.person_id
2170 AND paf.assignment_status_type_id = past.assignment_status_type_id
2171 AND ( past.per_system_status <> 'TERM_ASSIGN'
2172 OR EXISTS ( select null
2173 FROM psp_pre_gen_dist_lines_history
2174 WHERE distribution_date between p_effort_start and p_effort_end
2175 AND assignment_id = paf.assignment_id
2176 AND reversal_entry_flag IS NULL
2177 AND rownum=1 )
2178 OR EXISTS (SELECT null
2179 FROM psp_distribution_lines_history pdlh
2180 , psp_summary_lines psl
2181 WHERE pdlh.summary_line_id = psl.summary_line_id
2182 AND distribution_date between p_effort_start and p_effort_end
2183 AND psl.person_id = paf.person_id
2184 AND psl.assignment_id = paf.assignment_id
2185 AND reversal_entry_flag IS NULL
2186 AND rownum=1)));
2187
2188
2189
2190 elsif template_sel_criteria.array_sel_criteria(i) ='LOC' THEN
2191
2192 DELETE FROM psp_selected_persons_t pspt
2193 WHERE request_id = p_request_id
2194 /* Bug 5087294 : Performance fix replacing not in with not exists */
2195 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2196 AND NOT EXISTS ( SELECT 1
2197 FROM per_assignments_f paf ,
2198 psp_report_template_details_h prtd,
2199 per_assignment_status_types past
2200 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2201 AND criteria_lookup_code='LOC'
2202 AND paf.assignment_type = 'E'
2203 AND effective_start_date <= p_effort_end
2204 AND effective_end_date >= p_effort_start
2205 AND include_exclude_flag='I'
2206 AND paf.location_id = TO_NUMBER(prtd.criteria_value1)
2207 AND prtd.request_id = p_request_id
2208 AND paf.person_id = pspt.person_id
2209 AND paf.assignment_status_type_id = past.assignment_status_type_id
2210 AND ( past.per_system_status <> 'TERM_ASSIGN'
2211 OR EXISTS ( select null
2212 FROM psp_pre_gen_dist_lines_history
2213 WHERE distribution_date between p_effort_start and p_effort_end
2214 AND assignment_id = paf.assignment_id
2215 AND reversal_entry_flag IS NULL
2216 AND rownum=1 )
2217 OR EXISTS (SELECT null
2218 FROM psp_distribution_lines_history pdlh
2219 , psp_summary_lines psl
2220 WHERE pdlh.summary_line_id = psl.summary_line_id
2221 AND distribution_date between p_effort_start and p_effort_end
2222 AND psl.person_id = paf.person_id
2223 AND psl.assignment_id = paf.assignment_id
2224 AND reversal_entry_flag IS NULL
2225 AND rownum=1)));
2226
2227 elsif template_sel_criteria.array_sel_criteria(i) ='ORG' THEN
2228
2229 DELETE FROM psp_selected_persons_t pspt
2230 WHERE request_id = p_request_id
2231 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2232 AND NOT EXISTS ( SELECT 1
2233 FROM per_assignments_f paf ,
2234 psp_report_template_details_h prtd,
2235 per_assignment_status_types past
2236 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2237 AND criteria_lookup_code='ORG'
2238 AND include_exclude_flag='I'
2239 AND paf.assignment_type = 'E'
2240 AND effective_start_date <= p_effort_end
2241 AND effective_end_date >= p_effort_start
2242 AND paf.organization_id = TO_NUMBER(prtd.criteria_value1)
2243 AND prtd.request_id = p_request_id
2244 AND paf.person_id = pspt.person_id
2245 AND paf.assignment_status_type_id = past.assignment_status_type_id
2246 AND ( past.per_system_status <> 'TERM_ASSIGN'
2247 OR EXISTS ( select null
2248 FROM psp_pre_gen_dist_lines_history
2249 WHERE distribution_date between p_effort_start and p_effort_end
2250 AND assignment_id = paf.assignment_id
2251 AND reversal_entry_flag IS NULL
2252 AND rownum=1 )
2253 OR EXISTS (SELECT null
2254 FROM psp_distribution_lines_history pdlh
2255 , psp_summary_lines psl
2256 WHERE pdlh.summary_line_id = psl.summary_line_id
2257 AND distribution_date between p_effort_start and p_effort_end
2258 AND psl.person_id = paf.person_id
2259 AND psl.assignment_id = paf.assignment_id
2260 AND reversal_entry_flag IS NULL
2261 AND rownum=1)));
2262
2263
2264 elsif template_sel_criteria.array_sel_criteria(i)='CST' THEN
2265 DELETE FROM psp_selected_persons_t pspt
2266 WHERE request_id = p_request_id
2267 /* Bug 5087294 : Performance fix replacing not in with not exists */
2268 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2269 AND NOT EXISTS ( SELECT 1
2270 FROM per_assignments_f paf,
2271 pay_payrolls_f ppf,
2272 per_assignment_status_types past
2273 WHERE ppf.payroll_id = paf.payroll_id
2274 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
2275 FROM psp_report_template_details_h prtd
2276 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2277 AND criteria_lookup_code='CST'
2278 AND include_exclude_flag='I'
2279 AND request_id = p_request_id)
2280 AND paf.assignment_type = 'E'
2281 AND ppf.effective_start_date <= p_effort_end
2282 AND ppf.effective_end_date >= p_effort_start
2283 AND paf.effective_start_date <= p_effort_end
2284 AND paf.effective_end_date >= p_effort_start
2285 AND paf.person_id = pspt.person_id
2286 AND paf.assignment_status_type_id = past.assignment_status_type_id
2287 AND ( past.per_system_status <> 'TERM_ASSIGN'
2288 OR EXISTS ( select null
2289 FROM psp_pre_gen_dist_lines_history
2290 WHERE distribution_date between p_effort_start and p_effort_end
2291 AND assignment_id = paf.assignment_id
2292 AND reversal_entry_flag IS NULL
2293 AND rownum=1 )
2294 OR EXISTS (SELECT null
2295 FROM psp_distribution_lines_history pdlh
2296 , psp_summary_lines psl
2297 WHERE pdlh.summary_line_id = psl.summary_line_id
2298 AND distribution_date between p_effort_start and p_effort_end
2299 AND psl.person_id = paf.person_id
2300 AND psl.assignment_id = paf.assignment_id
2301 AND reversal_entry_flag IS NULL
2302 AND rownum=1)));
2303
2304
2305 elsif template_sel_criteria.array_sel_criteria(i) = 'AST' THEN
2306
2307 DELETE FROM psp_selected_persons_t
2308 WHERE request_id = p_request_id
2309 AND person_id NOT IN (SELECT NVL(paf.person_id,0)
2310 FROM per_all_assignments_f paf,
2311 hr_assignment_sets has,
2312 hr_assignment_set_amendments hasa,
2313 per_assignment_status_types past
2314 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
2315 FROM psp_report_template_details_h prtd
2316 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2317 AND criteria_lookup_code='AST'
2318 AND include_exclude_flag='I'
2319 AND request_id =p_request_id)
2320 AND ( (paf.payroll_id = has.payroll_id
2321 AND paf.assignment_type = 'E'
2322 AND paf.effective_start_date <= p_effort_end
2323 AND paf.effective_end_date >= p_effort_start
2324 AND has.assignment_set_id = hasa.assignment_set_id)
2325 OR (paf.assignment_id = hasa.assignment_id
2326 AND paf.assignment_type = 'E'
2327 AND paf.effective_start_date <= p_effort_end
2328 AND paf.effective_end_date >= p_effort_start
2329 AND hasa.assignment_set_id=has.assignment_set_id
2330 AND include_or_exclude ='I'))
2331 AND NOT EXISTS (SELECT assignment_id
2332 FROM hr_assignment_set_amendments hasa
2333 WHERE hasa.assignment_id = paf.assignment_id
2334 AND paf.assignment_type = 'E'
2335 AND hasa.include_or_exclude ='E'
2336 AND paf.effective_start_date <= p_effort_end
2337 AND paf.effective_end_date >= p_effort_start)
2338 AND paf.assignment_status_type_id = past.assignment_status_type_id
2339 AND ( past.per_system_status <> 'TERM_ASSIGN'
2340 OR EXISTS ( select null
2341 FROM psp_pre_gen_dist_lines_history
2342 WHERE distribution_date between p_effort_start and p_effort_end
2343 AND assignment_id = paf.assignment_id
2344 AND reversal_entry_flag IS NULL
2345 AND rownum=1 )
2346 OR EXISTS (SELECT null
2347 FROM psp_distribution_lines_history pdlh
2348 , psp_summary_lines psl
2349 WHERE pdlh.summary_line_id = psl.summary_line_id
2350 AND distribution_date between p_effort_start and p_effort_end
2351 AND psl.person_id = paf.person_id
2352 AND psl.assignment_id = paf.assignment_id
2353 AND reversal_entry_flag IS NULL
2354 AND rownum=1)));
2355
2356
2357 elsif template_sel_criteria.array_sel_criteria(i) = 'JOB' THEN
2358
2359 DELETE FROM psp_selected_persons_t pspt
2360 WHERE request_id = p_request_id
2361 /* Bug 5087294 : Performance fix replacing not in with not exists */
2362 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2363 AND NOT EXISTS ( SELECT 1
2364 FROM per_assignments_f paf ,
2365 psp_report_template_details_h prtd,
2366 per_assignment_status_types past
2367 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2368 AND criteria_lookup_code='JOB'
2369 AND include_exclude_flag='I'
2370 AND paf.assignment_type = 'E'
2371 AND effective_start_date <= p_effort_end
2372 AND effective_end_date >= p_effort_start
2373 AND paf.job_id = TO_NUMBER(prtd.criteria_value1)
2374 AND prtd.request_id = p_request_id
2375 AND paf.person_id = pspt.person_id
2376 AND paf.assignment_status_type_id = past.assignment_status_type_id
2377 AND ( past.per_system_status <> 'TERM_ASSIGN'
2378 OR EXISTS ( select null
2379 FROM psp_pre_gen_dist_lines_history
2380 WHERE distribution_date between p_effort_start and p_effort_end
2381 AND assignment_id = paf.assignment_id
2382 AND reversal_entry_flag IS NULL
2383 AND rownum=1 )
2384 OR EXISTS (SELECT null
2385 FROM psp_distribution_lines_history pdlh
2386 , psp_summary_lines psl
2387 WHERE pdlh.summary_line_id = psl.summary_line_id
2388 AND distribution_date between p_effort_start and p_effort_end
2389 AND psl.person_id = paf.person_id
2390 AND psl.assignment_id = paf.assignment_id
2391 AND reversal_entry_flag IS NULL
2392 AND rownum=1)));
2393
2394 elsif template_sel_criteria.array_sel_criteria(i) ='POS' THEN
2395
2396 DELETE FROM psp_selected_persons_t pspt
2397 WHERE request_id = p_request_id
2398 /* Bug 5087294 : Performance fix replacing not in with not exists */
2399 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2400 AND NOT EXISTS ( SELECT 1
2401 FROM per_assignments_f paf ,
2402 psp_report_template_details_h prtd,
2403 per_assignment_status_types past
2404 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2405 AND criteria_lookup_code='POS'
2406 AND paf.assignment_type = 'E'
2407 and
2408 effective_start_date <= p_effort_end and
2409 effective_end_date >= p_effort_start
2410 AND include_exclude_flag='I'
2411 AND paf.position_id = TO_NUMBER(prtd.criteria_value1)
2412 AND prtd.request_id = p_request_id
2413 AND paf.person_id = pspt.person_id
2414 AND paf.assignment_status_type_id = past.assignment_status_type_id
2415 AND ( past.per_system_status <> 'TERM_ASSIGN'
2416 OR EXISTS ( select null
2417 FROM psp_pre_gen_dist_lines_history
2418 WHERE distribution_date between p_effort_start and p_effort_end
2419 AND assignment_id = paf.assignment_id
2420 AND reversal_entry_flag IS NULL
2421 AND rownum=1 )
2422 OR EXISTS (SELECT null
2423 FROM psp_distribution_lines_history pdlh
2424 , psp_summary_lines psl
2425 WHERE pdlh.summary_line_id = psl.summary_line_id
2426 AND distribution_date between p_effort_start and p_effort_end
2427 AND psl.person_id = paf.person_id
2428 AND psl.assignment_id = paf.assignment_id
2429 AND reversal_entry_flag IS NULL
2430 AND rownum=1)));
2431
2432 elsif template_sel_criteria.array_sel_criteria(i) ='ASS' THEN
2433
2434
2435 DELETE FROM psp_selected_persons_t pspt
2436 WHERE request_id = p_request_id
2437 /* Bug 5087294 : Performance fix replacing not in with not exists */
2438 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
2439 AND NOT EXISTS ( SELECT 1
2440 FROM per_assignments_f paf ,
2441 psp_report_template_details_h prtd,
2442 per_assignment_status_types past
2443 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2444 AND criteria_lookup_code='ASS'
2445 AND include_exclude_flag='I'
2446 AND paf.assignment_status_type_id = TO_NUMBER(prtd.criteria_value1)
2447 AND prtd.request_id = p_request_id
2448 AND paf.assignment_type = 'E'
2449 AND effective_start_date <= p_effort_end
2450 AND effective_end_date >= p_effort_start
2451 AND paf.person_id = pspt.person_id
2452 AND paf.assignment_status_type_id = past.assignment_status_type_id
2453 AND ( past.per_system_status <> 'TERM_ASSIGN'
2454 OR EXISTS ( select null
2455 FROM psp_pre_gen_dist_lines_history
2456 WHERE distribution_date between p_effort_start and p_effort_end
2457 AND assignment_id = paf.assignment_id
2458 AND reversal_entry_flag IS NULL
2459 AND rownum=1 )
2460 OR EXISTS (SELECT null
2461 FROM psp_distribution_lines_history pdlh
2462 , psp_summary_lines psl
2463 WHERE pdlh.summary_line_id = psl.summary_line_id
2464 AND distribution_date between p_effort_start and p_effort_end
2465 AND psl.person_id = paf.person_id
2466 AND psl.assignment_id = paf.assignment_id
2467 AND reversal_entry_flag IS NULL
2468 AND rownum=1)));
2469
2470 /*
2471 elsif template_rec.array_sel_criteria(i)='EST' then
2472
2473 */
2474
2475 elsif template_sel_criteria.array_sel_criteria(i)='PPG' THEN
2476
2477 OPEN ppg_cursor;
2478
2479 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
2480 IF l_criteria_value1 is not null then
2481
2482
2483 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
2484
2485 -- g_exec_string:= l_sql_string;
2486
2487 LOOP
2488
2489 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
2490 EXIT WHEN PPG_CURSOR%NOTFOUND;
2491
2492 /*
2493 select l_sql_string
2494 || ' OR ' || l_criteria_value1 || ' = ' || ''''|| l_criteria_value2 ||''''
2495 into g_exec_string from psp_report_template_details_h ;
2496
2497
2498 */
2499
2500
2501 g_exec_string := l_sql_string || ' OR '|| l_criteria_value1 || ' = ' || '''' || l_criteria_value2||'''';
2502
2503
2504 l_sql_string:= g_exec_string;
2505
2506 END LOOP;
2507
2508 close ppg_cursor;
2509
2510
2511 if l_sql_string is not null then
2512 --- replaced non-performant delete stmnt for 4429787
2513
2514 g_exec_string := 'delete from psp_selected_persons_t sel where request_id = :request_id
2515 AND NOT EXISTS
2516 (SELECT 1 FROM per_assignments_f paf, pay_people_groups ppg, per_assignment_status_types past
2517 WHERE paf.people_group_id= ppg.people_group_id
2518 AND paf.assignment_type = ''' || 'E' || '''
2519 AND paf.effective_end_date >= :p_effort_Start AND
2520 paf.effective_start_date <= :p_effort_end
2521 AND (' || l_sql_string || ')
2522 AND paf.person_id = sel.person_id
2523 AND paf.assignment_status_type_id = past.assignment_status_type_id
2524 AND ( past.per_system_status <> ''' || 'TERM_ASSIGN' || '''
2525 OR EXISTS ( select null
2526 FROM psp_pre_gen_dist_lines_history
2527 WHERE distribution_date between :p_effort_start and :p_effort_end
2528 AND assignment_id = paf.assignment_id
2529 AND reversal_entry_flag IS NULL
2530 AND rownum=1 )
2531 OR EXISTS (SELECT null
2532 FROM psp_distribution_lines_history pdlh
2533 , psp_summary_lines psl
2534 WHERE pdlh.summary_line_id = psl.summary_line_id
2535 AND distribution_date between :p_effort_start and :p_effort_end
2536 AND psl.person_id = paf.person_id
2537 AND psl.assignment_id = paf.assignment_id
2538 AND reversal_entry_flag IS NULL
2539 AND rownum=1)))';
2540
2541
2542 --fnd_file.put_line(fnd_file.log , ' g_exec_string 3 is '||g_exec_string);
2543
2544 EXECUTE IMMEDIATE g_exec_string USING IN p_request_id, p_Effort_start, p_effort_end, p_Effort_start, p_effort_end, p_Effort_start, p_effort_end;
2545 end if;
2546 end if;
2547
2548 elsif template_sel_criteria.array_sel_criteria(i)='GLA' then
2549
2550
2551 OPEN gla_cursor;
2552
2553 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
2554 IF l_criteria_value1 is not null then
2555
2556 l_sql_string := l_criteria_value1 ||' between '|| ''''|| l_criteria_value2 || '''' || ' and ' || '''' || l_criteria_value3 || '''';
2557 -- g_exec_string := l_sql_string;
2558
2559
2560 LOOP
2561
2562 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
2563 EXIT WHEN GLA_CURSOR%NOTFOUND;
2564
2565 g_exec_string:= l_sql_string
2566 || ' OR ' || l_criteria_value1 || ' between ' || ''''|| l_criteria_value2 || '''' ||
2567 ' and ' || ''''|| l_criteria_value3 || '''' ;
2568 l_sql_string:=g_exec_string;
2569
2570 END LOOP;
2571 close gla_cursor;
2572
2573 -- l_sql_string:= g_exec_string;
2574
2575 if l_sql_string is not null then
2576
2577 g_exec_string := 'delete from psp_selected_persons_t where person_id
2578 not in (select nvl(psl.person_id,0) from psp_summary_lines psl,
2579 psp_distribution_lines_history pdnh,
2580 psp_adjustment_lines_history palh, psp_pre_gen_dist_lines_history ppg,
2581 gl_code_combinations gcc
2582 where gcc.code_combination_id= psl.gl_code_combination_id and
2583 psl.business_group_id = '|| p_business_group_id || ' and
2584 psl.set_of_books_id = ' || p_set_of_books_id || ' and
2585 psl.summary_line_id = pdnh.summary_line_id(+) and
2586 psl.summary_line_id = ppg.summary_line_id(+) and
2587 psl.summary_line_id = palh.summary_line_id(+) and
2588 psl.status_code='||''''||'A'||''''||' and
2589 ((psl.source_type in ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||') and
2590 pdnh.distribution_date between :p_effort_start and :p_effort_end
2591 and pdnh.reversal_entry_flag is null
2592 and psl.summary_line_id = pdnh.summary_line_id
2593 and pdnh.adjustment_batch_name is null
2594 ) OR
2595 ( psl.source_type='||''''||'P'||''''||' and
2596 ppg.distribution_date between :p_effort_start and :p_effort_end and
2597 ppg.adjustment_batch_name is null and
2598 ppg.summary_line_id =psl.summary_line_id and
2599 ppg.reversal_entry_flag is null)
2600 OR (psl.source_type='||''''||'A'||''''||' and
2601 palh.summary_line_id =psl.summary_line_id and
2602 palh.adjustment_batch_name is null and
2603 NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''|| ') = '||''''|| 'N' || ''''
2604 || ' and palh.distribution_date between :p_effort_start and :p_effort_end )) and
2605 gcc.code_combination_id= psl.gl_code_combination_id and
2606 gcc.code_combination_id in (select code_combination_id from gl_code_combinations
2607 where ' || l_sql_string
2608 || ' )) and request_id = :request_id';
2609
2610 -- fnd_file.put_line(fnd_file.log , ' g_exec_string 3 is '||g_exec_string);
2611
2612 execute immediate g_exec_string using IN p_effort_start, p_effort_end , p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_request_id;
2613
2614 end if;
2615 end if;
2616
2617
2618 end if;
2619
2620
2621 END IF;
2622
2623 END IF;
2624 END LOOP;
2625
2626 END;
2627
2628
2629 PROCEDURE APPLY_EXCLUSION_CRITERIA(P_REQUEST_ID IN NUMBER, P_EFFORT_START IN DATE , P_EFFORT_END IN DATE, P_BUSINESS_GROUP_ID IN NUMBER, P_SET_OF_BOOKS_ID IN NUMBER) IS
2630
2631 CURSOR PPG_CURSOR IS
2632 select criteria_value1, criteria_value2 from
2633 psp_report_template_details_h where request_id = p_request_id and
2634 criteria_lookup_type= 'PSP_SELECTION_CRITERIA' and criteria_lookup_code='PPG'
2635 and include_exclude_flag='E';
2636
2637
2638 CURSOR GLA_CURSOR IS
2639 select criteria_value1 , criteria_value2, criteria_value3 from
2640 psp_report_template_details_h where request_id = p_request_id and
2641 criteria_lookup_type ='PSP_SELECTION_CRITERIA' and criteria_lookup_code ='GLA'
2642 and include_exclude_flag='E';
2643
2644
2645 type t_varchar_30_type is TABLE Of VARCHAR2(30) INDEX BY BINARY_INTEGER;
2646 type t_varchar_1_type is TABLE of VARCHAR2(1) INDEX BY BINARY_INTEGER;
2647
2648 l_criteria_value1 varchar2(30);
2649
2650 l_criteria_value2 varchar2(30);
2651
2652
2653 l_criteria_value3 varchar2(30);
2654
2655 l_sql_string varchar2(1000);
2656
2657
2658 i number;
2659
2660 BEGIN
2661 for i in 1..template_sel_criteria.array_sel_criteria.count
2662
2663 LOOP
2664
2665 IF template_sel_criteria.array_inc_exc_flag(i) = 'E' THEN
2666
2667
2668 -- IF template_sel_criteria.array_sel_criteria(i) <> g_lookup_code THEN
2669
2670 IF template_sel_criteria.array_sel_criteria(i) = 'PTY' THEN
2671
2672 DELETE FROM psp_selected_persons_t
2673 WHERE request_id = p_request_id
2674 AND person_id IN (SELECT ppf.person_id
2675 FROM per_people_f ppf,
2676 psp_report_template_details_h prtd,
2677 per_assignments_f paf,
2678 per_assignment_status_types past
2679 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2680 AND criteria_lookup_code='PTY'
2681 AND paf.person_id = ppf.person_id
2682 AND paf.assignment_type = 'E'
2683 AND paf.effective_start_date <= p_effort_end
2684 AND paf.effective_end_date >= p_effort_start
2685 AND ppf.effective_start_date <= p_effort_end
2686 AND ppf.effective_end_date >= p_effort_start
2687 AND include_exclude_flag='E'
2688 AND ppf.person_type_id = TO_NUMBER(prtd.criteria_value1)
2689 AND prtd.request_id = p_request_id
2690 AND paf.assignment_status_type_id = past.assignment_status_type_id
2691 AND ( past.per_system_status <> 'TERM_ASSIGN'
2692 OR EXISTS ( select null
2693 FROM psp_pre_gen_dist_lines_history
2694 WHERE distribution_date between p_effort_start and p_effort_end
2695 AND assignment_id = paf.assignment_id
2696 AND reversal_entry_flag IS NULL
2697 AND rownum=1 )
2698 OR EXISTS (SELECT null
2699 FROM psp_distribution_lines_history pdlh
2700 , psp_summary_lines psl
2701 WHERE pdlh.summary_line_id = psl.summary_line_id
2702 AND distribution_date between p_effort_start and p_effort_end
2703 AND psl.person_id = paf.person_id
2704 AND psl.assignment_id = paf.assignment_id
2705 AND reversal_entry_flag IS NULL
2706 AND rownum=1)));
2707
2708
2709 ELSIF template_sel_criteria.array_sel_criteria(i) = 'EMP' THEN
2710
2711 DELETE FROM psp_selected_persons_t
2712 WHERE request_id = p_request_id
2713 AND person_id IN (SELECT DISTINCT ppf.person_id
2714 FROM per_all_people_f ppf,
2715 per_assignments_f paf,
2716 per_assignment_status_types past
2717 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
2718 FROM psp_report_template_details_h prtd
2719 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
2720 AND criteria_lookup_code='EMP'
2721 AND include_exclude_flag='E'
2722 AND prtd.request_id = p_request_id)
2723 AND paf.person_id = ppf.person_id
2724 AND paf.assignment_type = 'E'
2725 AND paf.effective_start_date <= p_effort_end
2726 AND paf.effective_end_date >= p_effort_start
2727 AND ppf.effective_start_date <= p_effort_end
2728 AND ppf.effective_end_date >= p_effort_start
2729 AND paf.assignment_status_type_id = past.assignment_status_type_id
2730 AND ( past.per_system_status <> 'TERM_ASSIGN'
2731 OR EXISTS ( select null
2732 FROM psp_pre_gen_dist_lines_history
2733 WHERE distribution_date between p_effort_start and p_effort_end
2734 AND assignment_id = paf.assignment_id
2735 AND reversal_entry_flag IS NULL
2736 AND rownum=1 )
2737 OR EXISTS (SELECT null
2738 FROM psp_distribution_lines_history pdlh
2739 , psp_summary_lines psl
2740 WHERE pdlh.summary_line_id = psl.summary_line_id
2741 AND distribution_date between p_effort_start and p_effort_end
2742 AND psl.person_id = paf.person_id
2743 AND psl.assignment_id = paf.assignment_id
2744 AND reversal_entry_flag IS NULL
2745 AND rownum=1)));
2746
2747
2748 ELSIF template_sel_criteria.array_sel_criteria(i) ='SUP' THEN
2749
2750 DELETE FROM psp_selected_persons_t
2751 WHERE request_id = p_request_id
2752 AND person_id IN (SELECT NVL(person_id,0)
2753 FROM per_all_assignments_f paf,
2754 psp_report_template_details_h prtd,
2755 per_assignment_status_types past
2756 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2757 AND criteria_lookup_code='SUP'
2758 AND include_exclude_flag='E'
2759 AND paf.supervisor_id = TO_NUMBER(prtd.criteria_value1)
2760 AND prtd.request_id = p_request_id
2761 AND paf.assignment_type = 'E'
2762 AND paf.effective_start_date <= p_effort_end
2763 AND paf.effective_end_date >= p_effort_start
2764 AND paf.assignment_status_type_id = past.assignment_status_type_id
2765 AND ( past.per_system_status <> 'TERM_ASSIGN'
2766 OR EXISTS ( select null
2767 FROM psp_pre_gen_dist_lines_history
2768 WHERE distribution_date between p_effort_start and p_effort_end
2769 AND assignment_id = paf.assignment_id
2770 AND reversal_entry_flag IS NULL
2771 AND rownum=1 )
2772 OR EXISTS (SELECT null
2773 FROM psp_distribution_lines_history pdlh
2774 , psp_summary_lines psl
2775 WHERE pdlh.summary_line_id = psl.summary_line_id
2776 AND distribution_date between p_effort_start and p_effort_end
2777 AND psl.person_id = paf.person_id
2778 AND psl.assignment_id = paf.assignment_id
2779 AND reversal_entry_flag IS NULL
2780 AND rownum=1)));
2781
2782
2783 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AWD' THEN
2784
2785 --- replaced original query for performance issues -- 4429787
2786 delete from psp_selected_persons_t where request_id = p_request_id AND person_id in (
2787 select psl.person_id
2788 FROM psp_summary_lines psl,
2789 psp_report_template_details_h prtd ,
2790 per_time_periods ptp
2791 WHERE
2792 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2793 prtd.criteria_lookup_code='AWD' AND
2794 prtd.include_exclude_flag='E' AND
2795 prtd.request_id =p_request_id AND
2796 psl.award_id = TO_NUMBER(prtd.criteria_value1) AND
2797 psl.business_group_id = p_business_group_id AND
2798 psl.set_of_books_id = p_set_of_books_id AND
2799 psl.status_code= 'A' AND
2800 ptp.time_period_id = psl.time_period_id AND
2801 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2802 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2803 WHERE pdnh.summary_line_id = psl.summary_line_id
2804 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2805 AND pdnh.reversal_entry_flag IS NULL
2806 AND pdnh.adjustment_batch_name IS NULL )
2807 OR EXISTS
2808 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2809 WHERE ppg.summary_line_id = psl.summary_line_id
2810 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2811 AND ppg.adjustment_batch_name IS NULL AND
2812 ppg.reversal_entry_flag IS NULL)
2813 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2814 WHERE palh.summary_line_id = psl.summary_line_id
2815 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2816 AND palh.adjustment_batch_name IS NULL
2817 AND palh.reversal_entry_flag IS NULL
2818 AND NVL(palh.original_line_flag, 'N') ='N')));
2819
2820 ELSIF template_sel_criteria.array_sel_criteria(i) = 'ATY' THEN
2821
2822 --- replaced non-performant delete with this for 4429787
2823 DELETE FROM psp_selected_persons_t WHERE request_id = p_request_id AND person_id IN (
2824 SELECT NVL(psl.person_id,0)
2825 FROM psp_summary_lines psl,
2826 psp_report_template_details_h prtd ,
2827 gms_awards_all gaa ,
2828 per_time_periods ptp
2829 WHERE psl.award_id = gaa.award_id AND
2830 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2831 prtd.criteria_lookup_code='ATY' AND
2832 prtd.include_exclude_flag='E' AND
2833 prtd.request_id =p_request_id AND
2834 gaa.type=prtd.criteria_value1 AND
2835 psl.business_group_id = p_business_group_id AND
2836 psl.set_of_books_id = p_set_of_books_id AND
2837 psl.status_code= 'A' AND
2838 ptp.time_period_id = psl.time_period_id AND
2839 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2840 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2841 WHERE pdnh.summary_line_id = psl.summary_line_id
2842 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2843 AND pdnh.reversal_entry_flag IS NULL
2844 AND pdnh.adjustment_batch_name IS NULL )
2845 OR EXISTS
2846 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2847 WHERE ppg.summary_line_id = psl.summary_line_id
2848 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2849 AND ppg.adjustment_batch_name IS NULL AND
2850 ppg.reversal_entry_flag IS NULL)
2851 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2852 WHERE palh.summary_line_id = psl.summary_line_id
2853 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2854 AND palh.adjustment_batch_name IS NULL
2855 AND palh.reversal_entry_flag IS NULL AND
2856 NVL(palh.original_line_flag, 'N') ='N')));
2857
2858 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRT' THEN
2859
2860 --- replaced non-performant delete with this for 4429787
2861 DELETE FROM psp_selected_persons_t WHERE request_id = p_request_id AND person_id IN (
2862 SELECT NVL(psl.person_id,0)
2863 FROM psp_summary_lines psl,
2864 psp_report_template_details_h prtd ,
2865 pa_projects_all ppa ,
2866 per_time_periods ptp
2867 WHERE psl.project_id = ppa.project_id AND
2868 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2869 prtd.criteria_lookup_code='PRT' AND
2870 prtd.include_exclude_flag='E' AND
2871 prtd.request_id =p_request_id AND
2872 ppa.project_type=prtd.criteria_value1 AND
2873 psl.business_group_id = p_business_group_id AND
2874 psl.set_of_books_id = p_set_of_books_id AND
2875 psl.status_code= 'A' AND
2876 ptp.time_period_id = psl.time_period_id AND
2877 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2878 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2879 WHERE pdnh.summary_line_id = psl.summary_line_id
2880 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2881 AND pdnh.reversal_entry_flag IS NULL
2882 AND pdnh.adjustment_batch_name IS NULL )
2883 OR EXISTS
2884 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2885 WHERE ppg.summary_line_id = psl.summary_line_id
2886 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2887 AND ppg.adjustment_batch_name IS NULL AND
2888 ppg.reversal_entry_flag IS NULL)
2889 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2890 WHERE palh.summary_line_id = psl.summary_line_id
2891 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2892 AND palh.adjustment_batch_name IS NULL
2893 AND palh.reversal_entry_flag IS NULL AND
2894 NVL(palh.original_line_flag, 'N') ='N')));
2895
2896 elsif template_sel_criteria.array_sel_criteria(i) ='PRJ' THEN
2897
2898 --- replaced non-performant insert with this for 4429787
2899 delete from psp_selected_persons_t where request_id = p_request_id AND person_id in (
2900 select nvl( psl.person_id ,0)
2901 FROM psp_summary_lines psl,
2902 psp_report_template_details_h prtd ,
2903 per_time_periods ptp
2904 WHERE
2905 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA' AND
2906 prtd.criteria_lookup_code='PRJ' AND
2907 prtd.include_exclude_flag='E' AND
2908 prtd.request_id =p_request_id AND
2909 psl.project_id = TO_NUMBER(prtd.criteria_value1) AND
2910 psl.business_group_id = p_business_group_id AND
2911 psl.set_of_books_id = p_set_of_books_id AND
2912 psl.status_code= 'A' AND
2913 ptp.time_period_id = psl.time_period_id AND
2914 (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start) AND
2915 ( EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
2916 WHERE pdnh.summary_line_id = psl.summary_line_id
2917 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
2918 AND pdnh.reversal_entry_flag IS NULL
2919 AND pdnh.adjustment_batch_name IS NULL )
2920 OR EXISTS
2921 (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
2922 WHERE ppg.summary_line_id = psl.summary_line_id
2923 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
2924 AND ppg.adjustment_batch_name IS NULL AND
2925 ppg.reversal_entry_flag IS NULL)
2926 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
2927 WHERE palh.summary_line_id = psl.summary_line_id
2928 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
2929 AND palh.adjustment_batch_name IS NULL
2930 AND palh.reversal_entry_flag IS NULL AND
2931 NVL(palh.original_line_flag, 'N') ='N')));
2932
2933
2934 elsif template_sel_criteria.array_sel_criteria(i) ='PAY' THEN
2935
2936 DELETE FROM psp_selected_persons_t
2937 WHERE request_id = p_request_id
2938 AND person_id IN (SELECT person_id
2939 FROM per_assignments_f paf,
2940 psp_report_template_details_h prtd,
2941 per_assignment_status_types past
2942 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2943 AND criteria_lookup_code='PAY'
2944 AND include_exclude_flag='E'
2945 AND paf.assignment_type = 'E'
2946 AND effective_start_date <= p_effort_end
2947 AND effective_end_date >= p_effort_start
2948 AND paf.payroll_id = TO_NUMBER(prtd.criteria_value1)
2949 AND prtd.request_id = p_request_id
2950 AND paf.assignment_status_type_id = past.assignment_status_type_id
2951 AND ( past.per_system_status <> 'TERM_ASSIGN'
2952 OR EXISTS ( select null
2953 FROM psp_pre_gen_dist_lines_history
2954 WHERE distribution_date between p_effort_start and p_effort_end
2955 AND assignment_id = paf.assignment_id
2956 AND reversal_entry_flag IS NULL
2957 AND rownum=1 )
2958 OR EXISTS (SELECT null
2959 FROM psp_distribution_lines_history pdlh
2960 , psp_summary_lines psl
2961 WHERE pdlh.summary_line_id = psl.summary_line_id
2962 AND distribution_date between p_effort_start and p_effort_end
2963 AND psl.person_id = paf.person_id
2964 AND psl.assignment_id = paf.assignment_id
2965 AND reversal_entry_flag IS NULL
2966 AND rownum=1)));
2967
2968
2969 elsif template_sel_criteria.array_sel_criteria(i) ='LOC' THEN
2970
2971 DELETE FROM psp_selected_persons_t
2972 WHERE request_id = p_request_id
2973 AND person_id IN (SELECT person_id
2974 FROM per_assignments_f paf,
2975 psp_report_template_details_h prtd,
2976 per_assignment_status_types past
2977 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
2978 AND criteria_lookup_code='LOC'
2979 AND include_exclude_flag='E'
2980 AND paf.assignment_type = 'E'
2981 AND effective_start_date <= p_effort_end
2982 AND effective_end_date >= p_effort_start
2983 AND paf.location_id = TO_NUMBER(prtd.criteria_value1)
2984 AND prtd.request_id = p_request_id
2985 AND paf.assignment_status_type_id = past.assignment_status_type_id
2986 AND ( past.per_system_status <> 'TERM_ASSIGN'
2987 OR EXISTS ( select null
2988 FROM psp_pre_gen_dist_lines_history
2989 WHERE distribution_date between p_effort_start and p_effort_end
2990 AND assignment_id = paf.assignment_id
2991 AND reversal_entry_flag IS NULL
2992 AND rownum=1 )
2993 OR EXISTS (SELECT null
2994 FROM psp_distribution_lines_history pdlh
2995 , psp_summary_lines psl
2996 WHERE pdlh.summary_line_id = psl.summary_line_id
2997 AND distribution_date between p_effort_start and p_effort_end
2998 AND psl.person_id = paf.person_id
2999 AND psl.assignment_id = paf.assignment_id
3000 AND reversal_entry_flag IS NULL
3001 AND rownum=1)));
3002
3003
3004 elsif template_sel_criteria.array_sel_criteria(i) ='ORG' THEN
3005
3006 DELETE FROM psp_selected_persons_t
3007 WHERE request_id = p_request_id
3008 AND person_id IN (SELECT person_id
3009 FROM per_assignments_f paf,
3010 psp_report_template_details_h prtd,
3011 per_assignment_status_types past
3012 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3013 AND criteria_lookup_code='ORG'
3014 AND include_exclude_flag='E'
3015 AND paf.assignment_type = 'E'
3016 AND effective_start_date <= p_effort_end
3017 AND effective_end_date >= p_effort_start
3018 AND paf.organization_id = TO_NUMBER(prtd.criteria_value1)
3019 AND prtd.request_id = p_request_id
3020 AND paf.assignment_status_type_id = past.assignment_status_type_id
3021 AND ( past.per_system_status <> 'TERM_ASSIGN'
3022 OR EXISTS ( select null
3023 FROM psp_pre_gen_dist_lines_history
3024 WHERE distribution_date between p_effort_start and p_effort_end
3025 AND assignment_id = paf.assignment_id
3026 AND reversal_entry_flag IS NULL
3027 AND rownum=1 )
3028 OR EXISTS (SELECT null
3029 FROM psp_distribution_lines_history pdlh
3030 , psp_summary_lines psl
3031 WHERE pdlh.summary_line_id = psl.summary_line_id
3032 AND distribution_date between p_effort_start and p_effort_end
3033 AND psl.person_id = paf.person_id
3034 AND psl.assignment_id = paf.assignment_id
3035 AND reversal_entry_flag IS NULL
3036 AND rownum=1)));
3037
3038 /*
3039
3040 elsif template_rec.array_sel_criteria(i)='CST' then
3041 */
3042
3043 elsif template_sel_criteria.array_sel_criteria(i) = 'JOB' THEN
3044
3045 DELETE FROM psp_selected_persons_t
3046 WHERE request_id = p_request_id
3047 AND person_id IN (SELECT person_id
3048 FROM per_assignments_f paf,
3049 psp_report_template_details_h prtd,
3050 per_assignment_status_types past
3051 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3052 AND criteria_lookup_code='JOB'
3053 AND include_exclude_flag='E'
3054 AND paf.assignment_type = 'E'
3055 AND effective_start_date <= p_effort_end
3056 AND effective_end_date >= p_effort_start
3057 AND paf.job_id = TO_NUMBER(prtd.criteria_value1)
3058 AND prtd.request_id = p_request_id
3059 AND paf.assignment_status_type_id = past.assignment_status_type_id
3060 AND ( past.per_system_status <> 'TERM_ASSIGN'
3061 OR EXISTS ( select null
3062 FROM psp_pre_gen_dist_lines_history
3063 WHERE distribution_date between p_effort_start and p_effort_end
3064 AND assignment_id = paf.assignment_id
3065 AND reversal_entry_flag IS NULL
3066 AND rownum=1 )
3067 OR EXISTS (SELECT null
3068 FROM psp_distribution_lines_history pdlh
3069 , psp_summary_lines psl
3070 WHERE pdlh.summary_line_id = psl.summary_line_id
3071 AND distribution_date between p_effort_start and p_effort_end
3072 AND psl.person_id = paf.person_id
3073 AND psl.assignment_id = paf.assignment_id
3074 AND reversal_entry_flag IS NULL
3075 AND rownum=1)));
3076
3077
3078 elsif template_sel_criteria.array_sel_criteria(i) ='POS' THEN
3079
3080 DELETE FROM psp_selected_persons_t
3081 WHERE request_id = p_request_id
3082 AND person_id IN (SELECT person_id
3083 FROM per_assignments_f paf,
3084 psp_report_template_details_h prtd,
3085 per_assignment_status_types past
3086 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3087 AND criteria_lookup_code='POS'
3088 AND include_exclude_flag='E'
3089 AND paf.assignment_type = 'E'
3090 AND effective_start_date <= p_effort_end
3091 AND effective_end_date >= p_effort_start
3092 AND paf.position_id = TO_NUMBER(prtd.criteria_value1)
3093 AND prtd.request_id = p_request_id
3094 AND paf.assignment_status_type_id = past.assignment_status_type_id
3095 AND ( past.per_system_status <> 'TERM_ASSIGN'
3096 OR EXISTS ( select null
3097 FROM psp_pre_gen_dist_lines_history
3098 WHERE distribution_date between p_effort_start and p_effort_end
3099 AND assignment_id = paf.assignment_id
3100 AND reversal_entry_flag IS NULL
3101 AND rownum=1 )
3102 OR EXISTS (SELECT null
3103 FROM psp_distribution_lines_history pdlh
3104 , psp_summary_lines psl
3105 WHERE pdlh.summary_line_id = psl.summary_line_id
3106 AND distribution_date between p_effort_start and p_effort_end
3107 AND psl.person_id = paf.person_id
3108 AND psl.assignment_id = paf.assignment_id
3109 AND reversal_entry_flag IS NULL
3110 AND rownum=1)));
3111
3112 elsif template_sel_criteria.array_sel_criteria(i) ='ASS' THEN
3113
3114 DELETE FROM psp_selected_persons_t
3115 WHERE request_id = p_request_id
3116 AND person_id IN (SELECT person_id
3117 FROM per_assignments_f paf,
3118 psp_report_template_details_h prtd,
3119 per_assignment_status_types past
3120 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3121 AND criteria_lookup_code='ASS'
3122 AND include_exclude_flag='E'
3123 AND paf.assignment_type = 'E'
3124 AND paf.assignment_status_type_id = TO_NUMBER(prtd.criteria_value1)
3125 AND prtd.request_id = p_request_id
3126 AND effective_start_date <= p_effort_end
3127 AND effective_end_date >= p_effort_start
3128 AND paf.assignment_status_type_id = past.assignment_status_type_id
3129 AND ( past.per_system_status <> 'TERM_ASSIGN'
3130 OR EXISTS ( select null
3131 FROM psp_pre_gen_dist_lines_history
3132 WHERE distribution_date between p_effort_start and p_effort_end
3133 AND assignment_id = paf.assignment_id
3134 AND reversal_entry_flag IS NULL
3135 AND rownum=1 )
3136 OR EXISTS (SELECT null
3137 FROM psp_distribution_lines_history pdlh
3138 , psp_summary_lines psl
3139 WHERE pdlh.summary_line_id = psl.summary_line_id
3140 AND distribution_date between p_effort_start and p_effort_end
3141 AND psl.person_id = paf.person_id
3142 AND psl.assignment_id = paf.assignment_id
3143 AND reversal_entry_flag IS NULL
3144 AND rownum=1)));
3145
3146
3147 elsif template_sel_criteria.array_sel_criteria(i)='CST' THEN
3148
3149 DELETE FROM psp_selected_persons_t
3150 WHERE request_id = p_request_id
3151 AND person_id IN (SELECT NVL(person_id,0)
3152 FROM per_assignments_f paf,
3153 pay_payrolls_f ppf,
3154 per_assignment_status_types past
3155 WHERE ppf.payroll_id = paf.payroll_id
3156 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
3157 FROM psp_report_template_details_h prtd
3158 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3159 AND criteria_lookup_code='CST'
3160 AND include_exclude_flag='E'
3161 AND request_id = p_request_id)
3162 AND paf.assignment_type = 'E'
3163 AND ppf.effective_start_date <= p_effort_end
3164 AND ppf.effective_end_date >= p_effort_start
3165 AND paf.effective_start_date <= p_effort_end
3166 AND paf.effective_end_date >= p_effort_start
3167 AND paf.assignment_status_type_id = past.assignment_status_type_id
3168 AND ( past.per_system_status <> 'TERM_ASSIGN'
3169 OR EXISTS ( select null
3170 FROM psp_pre_gen_dist_lines_history
3171 WHERE distribution_date between p_effort_start and p_effort_end
3172 AND assignment_id = paf.assignment_id
3173 AND reversal_entry_flag IS NULL
3174 AND rownum=1 )
3175 OR EXISTS (SELECT null
3176 FROM psp_distribution_lines_history pdlh
3177 , psp_summary_lines psl
3178 WHERE pdlh.summary_line_id = psl.summary_line_id
3179 AND distribution_date between p_effort_start and p_effort_end
3180 AND psl.person_id = paf.person_id
3181 AND psl.assignment_id = paf.assignment_id
3182 AND reversal_entry_flag IS NULL
3183 AND rownum=1)));
3184
3185
3186 elsif template_sel_criteria.array_sel_criteria(i) = 'AST' THEN
3187
3188
3189 DELETE FROM psp_selected_persons_t
3190 WHERE request_id = p_request_id
3191 AND person_id IN (SELECT NVL(paf.person_id,0)
3192 FROM per_all_assignments_f paf,
3193 hr_assignment_sets has,
3194 hr_assignment_set_amendments hasa,
3195 per_assignment_status_types past
3196 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
3197 FROM psp_report_template_details_h prtd
3198 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3199 AND criteria_lookup_code='AST'
3200 AND include_exclude_flag='E'
3201 AND request_id =p_request_id)
3202 AND ( (paf.payroll_id = has.payroll_id
3203 AND paf.assignment_type = 'E'
3204 AND paf.effective_start_date <= p_effort_end
3205 AND paf.effective_end_date >= p_effort_start
3206 AND has.assignment_set_id = hasa.assignment_set_id)
3207 OR (paf.assignment_id = hasa.assignment_id
3208 AND paf.assignment_type = 'E'
3209 AND paf.effective_start_date <= p_effort_end
3210 AND paf.effective_end_date >= p_effort_start
3211 AND hasa.assignment_set_id=has.assignment_set_id
3212 AND include_or_exclude ='I'))
3213 AND NOT EXISTS (SELECT assignment_id
3214 FROM hr_assignment_set_amendments hasa
3215 WHERE hasa.assignment_id = paf.assignment_id
3216 AND paf.assignment_type = 'E'
3217 AND hasa.include_or_exclude ='E'
3218 AND paf.effective_start_date <= p_effort_end
3219 AND paf.effective_end_date >= p_effort_start)
3220 AND paf.assignment_status_type_id = past.assignment_status_type_id
3221 AND ( past.per_system_status <> 'TERM_ASSIGN'
3222 OR EXISTS ( select null
3223 FROM psp_pre_gen_dist_lines_history
3224 WHERE distribution_date between p_effort_start and p_effort_end
3225 AND assignment_id = paf.assignment_id
3226 AND reversal_entry_flag IS NULL
3227 AND rownum=1 )
3228 OR EXISTS (SELECT null
3229 FROM psp_distribution_lines_history pdlh
3230 , psp_summary_lines psl
3231 WHERE pdlh.summary_line_id = psl.summary_line_id
3232 AND distribution_date between p_effort_start and p_effort_end
3233 AND psl.person_id = paf.person_id
3234 AND psl.assignment_id = paf.assignment_id
3235 AND reversal_entry_flag IS NULL
3236 AND rownum=1)));
3237
3238
3239
3240
3241
3242
3243 elsif template_sel_criteria.array_sel_criteria(i)='PPG' THEN
3244
3245 OPEN ppg_cursor;
3246
3247 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
3248 IF l_criteria_value1 is not null then
3249
3250 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 || '''' ;
3251 --g_exec_string := l_sql_string;
3252
3253
3254 LOOP
3255
3256 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
3257 EXIT WHEN PPG_CURSOR%NOTFOUND;
3258
3259 g_exec_string := l_sql_string || ' OR '|| l_criteria_value1 || ' = ' || '''' || l_criteria_value2||'''';
3260 /*
3261 select l_sql_string
3262 || ' OR ' || l_criteria_value1 || ' = ' || ''''|| l_criteria_value2 || ''''
3263 into g_exec_string from psp_report_template_details_h ;
3264
3265 */
3266 l_sql_string:= g_exec_string;
3267
3268 END LOOP;
3269
3270
3271 IF l_sql_string is not null then
3272
3273 g_exec_string := 'delete from psp_selected_persons_t where person_id
3274 in (select person_id from per_assignments_f paf,
3275 pay_people_groups ppg , per_assignment_status_types past
3276 where paf.people_group_id= ppg.people_group_id
3277 AND paf.assignment_type = ''' || 'E' || '''
3278 and paf.effective_end_date >= :p_effort_Start and
3279 paf.effective_start_date <= :p_effort_end
3280 and
3281 ppg.people_group_id in (select people_group_id from pay_people_groups
3282 where ' || l_sql_string
3283 || ' )
3284 AND paf.assignment_status_type_id = past.assignment_status_type_id
3285 AND ( past.per_system_status <> ''' || 'TERM_ASSIGN' || '''
3286 OR EXISTS ( select null
3287 FROM psp_pre_gen_dist_lines_history
3288 WHERE distribution_date between :p_effort_start and :p_effort_end
3289 AND assignment_id = paf.assignment_id
3290 AND reversal_entry_flag IS NULL
3291 AND rownum=1 )
3292 OR EXISTS (SELECT null
3293 FROM psp_distribution_lines_history pdlh
3294 , psp_summary_lines psl
3295 WHERE pdlh.summary_line_id = psl.summary_line_id
3296 AND distribution_date between :p_effort_start and :p_effort_end
3297 AND psl.person_id = paf.person_id
3298 AND psl.assignment_id = paf.assignment_id
3299 AND reversal_entry_flag IS NULL
3300 AND rownum=1))
3301 ) and request_id = :request_id';
3302
3303
3304 --fnd_file.put_line(fnd_file.log, 'ppg check is '||g_exec_string);
3305
3306 execute immediate g_exec_string using in p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_request_id;
3307
3308 END IF;
3309
3310 END IF;
3311
3312 ELSIF template_sel_criteria.array_sel_criteria(i)='GLA' THEN
3313
3314 OPEN gla_cursor;
3315
3316 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
3317 IF l_criteria_value1 is not null then
3318
3319 l_sql_string := l_criteria_value1 ||' between '|| '''' || l_criteria_value2 || '''' || ' and ' || '''' || l_criteria_value3 || '''' ;
3320
3321
3322 LOOP
3323
3324 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
3325 EXIT WHEN GLA_CURSOR%NOTFOUND;
3326
3327 g_exec_string:= l_sql_string
3328 || ' OR ' || l_criteria_value1 || ' between ' || ''''|| l_criteria_value2 || '''' ||
3329 ' and ' || ''''|| l_criteria_value3 || '''' ;
3330
3331 l_sql_string:= g_exec_string;
3332
3333 END LOOP;
3334
3335
3336 IF l_sql_string is not null then
3337
3338 g_exec_string := 'delete from psp_selected_persons_t where person_id
3339 in (select nvl(psl.person_id,0) from psp_summary_lines psl,
3340 psp_distribution_lines_history pdnh,
3341 psp_adjustment_lines_history palh, psp_pre_gen_dist_lines_history ppg,
3342 gl_code_combinations gcc
3343 where gcc.code_combination_id= psl.gl_code_combination_id and
3344 psl.business_group_id = '|| p_business_group_id || ' and
3345 psl.set_of_books_id = ' || p_set_of_books_id || ' and
3346 psl.summary_line_id = pdnh.summary_line_id(+) and
3347 psl.summary_line_id = ppg.summary_line_id(+) and
3348 psl.summary_line_id = palh.summary_line_id(+) and
3349 psl.status_code='||''''||'A'||''''||' and
3350 ((psl.source_type in ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||') and
3351 pdnh.distribution_date between :p_effort_start and :p_effort_end
3352 and pdnh.reversal_entry_flag is null
3353 and psl.summary_line_id =pdnh.summary_line_id
3354 and pdnh.adjustment_batch_name is null
3355 ) OR
3356 ( psl.source_type= '||''''||'P'||''''||' and
3357 ppg.distribution_date between :p_effort_start and :p_effort_end and
3358 ppg.adjustment_batch_name is null and
3359 ppg.summary_line_id =psl.summary_line_id and
3360 ppg.reversal_entry_flag is null)
3361 OR (psl.source_type= '||''''||'A'||''''||' and
3362 palh.summary_line_id =psl.summary_line_id and
3363 palh.adjustment_batch_name is null and
3364 NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''|| ') = '||''''|| 'N' || ''''
3365 || ' and palh.distribution_date between :p_effort_start and :p_effort_end )) and
3366 gcc.code_combination_id= psl.gl_code_combination_id and
3367 gcc.code_combination_id in (select code_combination_id from gl_code_combinations
3368 where ' || l_sql_string
3369 || ' )) and request_id = :request_id';
3370
3371
3372 --fnd_file.put_line(fnd_file.log,'g_exec_string ===='||g_exec_string);
3373
3374 EXECUTE IMMEDIATE g_exec_string using IN p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_request_id;
3375
3376 END IF;
3377
3378 END IF;
3379
3380
3381 END IF;
3382
3383
3384 -- END IF;
3385
3386 END IF;
3387
3388
3389 END LOOP;
3390
3391 END;
3392
3393
3394 PROCEDURE APPLY_FF_FORMULA_EXCLUSION(p_request_id IN NUMBER, p_effort_start IN DATE, p_effort_end IN DATE) IS
3395
3396 TYPE v_line_id IS TABLE OF NUMBER(15) INDEX BY BINARY_INTEGER;
3397 TYPE v_date_id IS TABLE OF DATE INDEX BY BINARY_INTEGER;
3398
3399 TYPE ls_criteria_rec is RECORD(
3400 l_person_id v_line_id,
3401 l_assignment_id v_line_id,
3402 l_request_id v_line_id ,
3403 l_start_date v_date_id,
3404 l_end_date v_date_id
3405 );
3406
3407 r_ls_criteria_rec ls_criteria_rec;
3408
3409
3410 TYPE ff_rec is RECORD(
3411 l_formula_id v_line_id
3412 );
3413
3414 r_ff_rec ff_rec;
3415
3416 l_input1 number;
3417 l_input2 number ;
3418 l_input3 number;
3419 l_input4 number;
3420 l_results varchar2(30) ;
3421 l_inputs ff_exec.inputs_t;
3422 l_outputs ff_exec.outputs_t;
3423 l_in_cnt number;
3424 l_out_cnt number;
3425 i number;
3426 j number;
3427 k number;
3428 tot_cnt number;
3429 local_ctr number:=0;
3430 l_cnt number:=0;
3431
3432 CURSOR select_everyone_csr is select person_id , assignment_id, p_request_id, p_effort_start, p_effort_end from psp_selected_persons_t where
3433 request_id =p_request_id;
3434
3435 CURSOR get_ff_for_template_csr is select criteria_value1 from psp_report_template_details_h where
3436 request_id = p_request_id and criteria_lookup_type='PSP_SELECTION_CRITERIA' and criteria_lookup_code='FFE';
3437
3438 BEGIN
3439
3440 OPEN select_everyone_csr;
3441
3442 Fetch select_everyone_csr BULK COLLECT into
3443 r_ls_criteria_rec.l_person_id , r_ls_criteria_rec.l_assignment_id, r_ls_criteria_rec.l_request_id, r_ls_criteria_rec.l_start_date, r_ls_criteria_rec.l_end_date;
3444
3445 CLOSE select_everyone_csr;
3446
3447
3448 OPEN get_ff_for_template_csr;
3449 /*
3450
3451 select nvl(count(1), 0) into l_cnt from fnd_sessions where session_id = userenv('session_id');
3452
3453 if l_cnt=0 then
3454
3455 INSERT into fnd_sessions(session_id, effective_date) values (userenv('sessionid'), p_effort_start);
3456 end if;
3457 */
3458
3459
3460
3461 FETCH get_ff_for_template_csr BULK COLLECT into r_ff_rec.l_formula_id;
3462
3463 CLOSE get_ff_for_template_csr;
3464
3465 FOR j in 1..r_ff_rec.l_formula_id.count
3466
3467 LOOP
3468
3469 ff_exec.init_formula(r_ff_rec.l_formula_id(j), p_effort_start, l_inputs,l_outputs);
3470 tot_cnt := r_ls_criteria_rec.l_person_id.count;
3471
3472 FOR k IN 1..tot_cnt LOOP
3473
3474 FOR l_in_cnt in l_inputs.first..l_inputs.last loop
3475
3476 IF (l_inputs(l_in_cnt).name ='PERSON_ID') THEN
3477 l_inputs(l_in_cnt).value := fnd_number.number_to_canonical(r_ls_criteria_rec.l_person_id(k));
3478 hr_utility.trace('Input 1 :PERSON_ID=' ||l_inputs(l_in_cnt).value);
3479
3480
3481 ELSIF l_inputs(l_in_cnt).name='REQUEST_ID' THEN
3482 l_inputs(l_in_cnt).value := fnd_number.number_to_canonical(r_ls_criteria_rec.l_request_id(k));
3483
3484 hr_utility.trace( ' Input 2 :REQUEST_ID = '||l_inputs(l_in_cnt).value);
3485
3486 ELSIF l_inputs(l_in_cnt).name='START_DATE' THEN
3487 l_inputs(l_in_cnt).value := fnd_date.date_to_canonical(r_ls_criteria_rec.l_start_date(k));
3488 hr_utility.trace( ' Input 3 :START_DATE = '||l_inputs(l_in_cnt).value);
3489
3490 ELSIF l_inputs(l_in_cnt).name='END_DATE' THEN
3491 l_inputs(l_in_cnt).value := fnd_date.date_to_canonical(r_ls_criteria_rec.l_end_date(k));
3492 hr_utility.trace( ' Input 4 :END_DATE= '||l_inputs(l_in_cnt).value);
3493
3494 ELSIF l_inputs(l_in_cnt).name ='ASSIGNMENT_ID' THEN
3495 l_inputs(l_in_cnt).value := fnd_number.number_to_canonical(r_ls_criteria_rec.l_assignment_id(k));
3496 hr_utility.trace('Input 5 :ASSIGNMENT_ID=' ||l_inputs(l_in_cnt).value);
3497
3498 /*
3499 Commented out the below change as input 1 is person_id and addl. input is not required
3500
3501 Added for bug 4195678 by tbalacha
3502
3503 ELSIF l_inputs(l_in_cnt).name='PERSON_ID' THEN
3504
3505 l_inputs(l_in_cnt).value := fnd_number.number_to_canonical(r_ls_criteria_rec.l_person_id(k));
3506 else
3507 l_inputs(l_in_cnt).value :=fnd_number.number_to_canonical(l_input2);
3508
3509 */
3510 END IF;
3511
3512 END LOOP;
3513
3514 ff_exec.run_formula(l_inputs, l_outputs);
3515
3516 FOR l_out_cnt in l_outputs.first..l_outputs.last
3517
3518 LOOP
3519
3520 l_results:= l_outputs(l_out_cnt).value;
3521
3522
3523 IF (l_results='FALSE' or l_results = 0 )THEN -- introduced for bug 4195678
3524 DELETE FROM psp_selected_persons_t
3525 WHERE person_id = r_ls_criteria_rec.l_person_id(k)
3526 AND assignment_id = r_ls_criteria_rec.l_assignment_id(k);
3527
3528 END IF;
3529
3530 END LOOP;
3531
3532 END LOOP;
3533
3534 END LOOP;
3535
3536 END;
3537
3538 FUNCTION get_parameter_value( name in varchar2, parameter_list varchar2) return varchar2
3539 IS
3540
3541
3542 start_ptr NUMBER;
3543 end_ptr NUMBER;
3544 token_val pay_payroll_actions.legislative_parameters%type;
3545 par_value pay_payroll_actions.legislative_parameters%type;
3546
3547 BEGIN
3548
3549 token_val := name||'=';
3550 start_ptr := instr(parameter_list, token_val) +length(token_val);
3551
3552 end_ptr :=instr(parameter_list, ' ', start_ptr);
3553
3554 IF end_ptr=0 then
3555 end_ptr:=length(parameter_list) +1;
3556
3557 END IF;
3558
3559 IF instr(parameter_list, token_val) = 0 then
3560
3561 par_value:=NULL;
3562 ELSE
3563
3564 par_value:=substr(parameter_list, start_ptr, end_ptr-start_ptr);
3565
3566
3567 end if;
3568
3569 return par_value;
3570 END get_parameter_value;
3571
3572 PROCEDURE get_asg_lowest_cardinality (p_request_id IN NUMBER,
3573 p_effort_start IN DATE,
3574 p_effort_end IN DATE,
3575 p_business_group_id IN NUMBER,
3576 p_set_of_books_id IN NUMBER) IS
3577 l_criteria_value1 VARCHAR2(30);
3578 l_criteria_value2 VARCHAR2(30);
3579 l_criteria_value3 VARCHAR2(30);
3580 l_dyn_criteria VARCHAR2(30);
3581 l_atleast_one_criteria VARCHAR2(1);
3582 l_sql_string VARCHAR2(1000);
3583
3584 CURSOR get_lowest_cardinality_csr IS
3585 SELECT lookup_code FROM
3586 psp_selection_cardinality_gt WHERE total_count > 0 ORDER BY total_count asc;
3587
3588
3589 CURSOR get_zero_cardinality_csr IS
3590 SELECT lookup_code
3591 FROM psp_selection_cardinality_gt
3592 WHERE total_count=0;
3593
3594
3595 CURSOR get_selection_cardinality_csr(p_request_id IN NUMBER) IS
3596 SELECT DISTINCT criteria_lookup_code
3597 FROM psp_report_template_details_h
3598 WHERE request_id = p_request_id
3599 AND include_exclude_flag = 'I'
3600 AND criteria_lookup_type = 'PSP_SELECTION_CRITERIA';
3601
3602 /* The below cursors would only be used only when no statis selection criteria have been chosen */
3603 CURSOR ppg_cursor IS
3604 SELECT criteria_value1,
3605 criteria_value2
3606 FROM psp_report_template_details_h
3607 WHERE request_id = p_request_id
3608 AND include_exclude_flag='I'
3609 AND criteria_lookup_type= 'PSP_SELECTION_CRITERIA'
3610 AND criteria_lookup_code='PPG';
3611
3612 CURSOR gla_cursor IS
3613 SELECT criteria_value1,
3614 criteria_value2,
3615 criteria_value3
3616 FROM psp_report_template_details_h
3617 WHERE request_id = p_request_id
3618 AND include_exclude_flag='I'
3619 AND criteria_lookup_type ='PSP_SELECTION_CRITERIA'
3620 AND criteria_lookup_code ='GLA';
3621
3622 BEGIN
3623 OPEN get_selection_cardinality_csr(p_request_id);
3624 FETCH get_selection_cardinality_csr BULK COLLECT into template_rec.array_sel_criteria;
3625 CLOSE get_selection_cardinality_csr;
3626
3627 FOR i IN 1.. template_rec.array_sel_criteria.COUNT
3628 LOOP
3629 IF template_rec.array_sel_criteria(i) = 'PTY' THEN
3630 INSERT INTO psp_selection_cardinality_gt(lookup_code, total_count)
3631 SELECT 'PTY', COUNT(DISTINCT assignment_id)
3632 FROM per_people_f ppf,
3633 per_assignments_f paf
3634 WHERE person_type_id IN (SELECT TO_NUMBER(criteria_value1)
3635 FROM psp_report_template_details_h prtd
3636 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3637 AND criteria_lookup_code ='PTY'
3638 AND include_exclude_flag='I'
3639 AND request_id = p_request_id)
3640 AND paf.person_id = ppf.person_id
3641 AND paf.assignment_type = 'E'
3642 AND ppf.effective_start_date <= p_effort_end
3643 AND ppf.effective_end_date >= p_effort_start
3644 AND paf.effective_start_date <= p_effort_end
3645 AND paf.effective_end_date >= p_effort_start;
3646 ELSIF template_rec.array_sel_criteria(i) ='EMP' THEN
3647 INSERT INTO psp_selection_cardinality_gt (lookup_code, total_count)
3648 SELECT 'EMP', COUNT(DISTINCT paf.assignment_id)
3649 FROM per_all_assignments_f paf
3650 WHERE paf.person_id IN (SELECT TO_NUMBER(criteria_value1)
3651 FROM psp_report_template_details_h prtd
3652 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3653 AND criteria_lookup_code='EMP'
3654 AND include_exclude_flag='I'
3655 AND request_id = p_request_id)
3656 AND paf.assignment_type = 'E'
3657 AND paf.effective_start_date <= p_effort_end
3658 AND paf.effective_end_date >= p_effort_start;
3659 ELSIF template_rec.array_sel_criteria(i) ='SUP' THEN
3660 INSERT INTO psp_selection_cardinality_gt
3661 (lookup_code, total_count)
3662 SELECT 'SUP', COUNT(DISTINCT assignment_id)
3663 FROM per_all_assignments_f paf
3664 WHERE supervisor_id IN (SELECT TO_NUMBER(criteria_value1)
3665 FROM psp_report_template_details_h prtd
3666 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3667 AND criteria_lookup_code='SUP'
3668 AND request_id = p_request_id
3669 AND include_exclude_flag='I')
3670 AND paf.assignment_type = 'E'
3671 AND effective_start_date <= p_effort_end
3672 AND effective_end_date >= p_effort_start;
3673 ELSIF template_rec.array_sel_criteria(i) ='AWD' THEN
3674 INSERT INTO psp_selection_cardinality_gt
3675 (lookup_code, total_count)
3676 SELECT 'AWD', COUNT(DISTINCT psl.assignment_id)
3677 FROM psp_summary_lines psl,
3678 psp_report_template_details_h prtd ,
3679 per_time_periods ptp
3680 WHERE
3681 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3682 AND prtd.criteria_lookup_code='AWD'
3683 AND prtd.include_exclude_flag='I'
3684 AND prtd.request_id =p_request_id
3685 and psl.award_id = TO_NUMBER(prtd.criteria_value1)
3686 AND psl.business_group_id = p_business_group_id
3687 AND psl.set_of_books_id = p_set_of_books_id
3688 AND psl.status_code= 'A'
3689 AND ptp.time_period_id = psl.time_period_id
3690 AND (ptp.start_date <= p_effort_end
3691 AND ptp.end_date >= p_effort_start)
3692 AND (EXISTS (SELECT 1
3693 FROM psp_distribution_lines_history pdnh
3694 WHERE pdnh.summary_line_id = psl.summary_line_id
3695 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
3696 AND pdnh.reversal_entry_flag IS NULL
3697 AND pdnh.adjustment_batch_name IS NULL )
3698 OR EXISTS (SELECT 1
3699 FROM psp_pre_gen_dist_lines_history ppg
3700 WHERE ppg.summary_line_id = psl.summary_line_id
3701 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
3702 AND ppg.adjustment_batch_name IS NULL
3703 AND ppg.reversal_entry_flag IS NULL)
3704 OR EXISTS (SELECT 1
3705 FROM psp_adjustment_lines_history palh
3706 WHERE palh.summary_line_id = psl.summary_line_id
3707 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
3708 AND palh.adjustment_batch_name IS NULL
3709 AND palh.reversal_entry_flag IS NULL
3710 AND NVL(palh.original_line_flag, 'N') ='N'));
3711 ELSIF template_rec.array_sel_criteria(i)='ATY' THEN
3712 INSERT INTO psp_selection_cardinality_gt
3713 (lookup_code, total_count)
3714 SELECT 'ATY', COUNT(DISTINCT psl.assignment_id)
3715 FROM psp_summary_lines psl,
3716 psp_report_template_details_h prtd ,
3717 gms_awards_all gaa,
3718 per_time_periods ptp
3719 WHERE psl.award_id = gaa.award_id
3720 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3721 AND prtd.criteria_lookup_code='ATY'
3722 AND prtd.include_exclude_flag='I'
3723 AND prtd.request_id = p_request_id
3724 AND gaa.type=prtd.criteria_value1
3725 AND psl.business_group_id = p_business_group_id
3726 AND psl.set_of_books_id = p_set_of_books_id
3727 AND psl.status_code= 'A'
3728 AND ptp.time_period_id = psl.time_period_id
3729 AND (ptp.start_date <= p_effort_end
3730 AND ptp.end_date >= p_effort_start)
3731 AND (EXISTS (SELECT 1
3732 FROM psp_distribution_lines_history pdnh
3733 WHERE pdnh.summary_line_id = psl.summary_line_id
3734 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
3735 AND pdnh.reversal_entry_flag IS NULL
3736 AND pdnh.adjustment_batch_name IS NULL )
3737 OR EXISTS (SELECT 1
3738 FROM psp_pre_gen_dist_lines_history ppg
3739 WHERE ppg.summary_line_id = psl.summary_line_id
3740 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
3741 AND ppg.adjustment_batch_name IS NULL
3742 AND ppg.reversal_entry_flag IS NULL)
3743 OR EXISTS (SELECT 1
3744 FROM psp_adjustment_lines_history palh
3745 WHERE palh.summary_line_id = psl.summary_line_id
3746 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
3747 AND palh.adjustment_batch_name IS NULL
3748 AND palh.reversal_entry_flag IS NULL
3749 AND NVL(palh.original_line_flag, 'N') ='N'));
3750 ELSIF template_rec.array_sel_criteria(i)='PRT' THEN
3751 INSERT INTO psp_selection_cardinality_gt
3752 (lookup_code, total_count)
3753 SELECT 'PRT', COUNT(DISTINCT psl.assignment_id)
3754 FROM psp_summary_lines psl,
3755 psp_report_template_details_h prtd ,
3756 pa_projects_all ppa ,
3757 per_time_periods ptp
3758 WHERE psl.project_id = ppa.project_id
3759 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3760 AND prtd.criteria_lookup_code='PRT'
3761 AND prtd.include_exclude_flag='I'
3762 AND prtd.request_id =p_request_id
3763 AND ppa.project_type=prtd.criteria_value1
3764 AND psl.business_group_id = p_business_group_id
3765 AND psl.set_of_books_id = p_set_of_books_id
3766 AND psl.status_code= 'A'
3767 AND ptp.time_period_id = psl.time_period_id
3768 AND (ptp.start_date <= p_effort_end
3769 AND ptp.end_date >= p_effort_start)
3770 AND (EXISTS (SELECT 1
3771 FROM psp_distribution_lines_history pdnh
3772 WHERE pdnh.summary_line_id = psl.summary_line_id
3773 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
3774 AND pdnh.reversal_entry_flag IS NULL
3775 AND pdnh.adjustment_batch_name IS NULL )
3776 OR EXISTS (SELECT 1
3777 FROM psp_pre_gen_dist_lines_history ppg
3778 WHERE ppg.summary_line_id = psl.summary_line_id
3779 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
3780 AND ppg.adjustment_batch_name IS NULL AND
3781 ppg.reversal_entry_flag IS NULL)
3782 OR EXISTS (SELECT 1
3783 FROM psp_adjustment_lines_history palh
3784 WHERE palh.summary_line_id = psl.summary_line_id
3785 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
3786 AND palh.adjustment_batch_name IS NULL
3787 AND palh.reversal_entry_flag IS NULL AND
3788 NVL(palh.original_line_flag, 'N') ='N'));
3789 ELSIF template_rec.array_sel_criteria(i)='PRJ' THEN
3790 INSERT INTO psp_selection_cardinality_gt
3791 (lookup_code, total_count)
3792 SELECT 'PRJ', COUNT(DISTINCT psl.assignment_id)
3793 FROM psp_summary_lines psl,
3794 psp_report_template_details_h prtd ,
3795 per_time_periods ptp
3796 WHERE
3797 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
3798 AND prtd.criteria_lookup_code='PRJ'
3799 AND prtd.include_exclude_flag='I'
3800 AND prtd.request_id =p_request_id
3801 and psl.project_id = TO_NUMBER(prtd.criteria_value1)
3802 AND psl.business_group_id = p_business_group_id
3803 AND psl.set_of_books_id = p_set_of_books_id
3804 AND psl.status_code= 'A'
3805 AND ptp.time_period_id = psl.time_period_id
3806 AND (ptp.start_date <= p_effort_end
3807 AND ptp.end_date >= p_effort_start)
3808 AND (EXISTS (SELECT 1 FROM psp_distribution_lines_history pdnh
3809 WHERE pdnh.summary_line_id = psl.summary_line_id
3810 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
3811 AND pdnh.reversal_entry_flag IS NULL
3812 AND pdnh.adjustment_batch_name IS NULL )
3813 OR EXISTS (SELECT 1 FROM psp_pre_gen_dist_lines_history ppg
3814 WHERE ppg.summary_line_id = psl.summary_line_id
3815 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
3816 AND ppg.adjustment_batch_name IS NULL
3817 AND ppg.reversal_entry_flag IS NULL)
3818 OR EXISTS (SELECT 1 FROM psp_adjustment_lines_history palh
3819 WHERE palh.summary_line_id = psl.summary_line_id
3820 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
3821 AND palh.adjustment_batch_name IS NULL
3822 AND palh.reversal_entry_flag IS NULL
3823 AND NVL(palh.original_line_flag, 'N') ='N'));
3824 ELSIF template_rec.array_sel_criteria(i)='PAY' THEN
3825 INSERT INTO psp_selection_cardinality_gt
3826 (lookup_code, total_count)
3827 SELECT 'PAY', COUNT(DISTINCT assignment_id)
3828 FROM per_assignments_f paf
3829 WHERE payroll_id IN (SELECT TO_NUMBER(criteria_value1)
3830 FROM psp_report_template_details_h prtd
3831 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3832 AND criteria_lookup_code='PAY'
3833 AND include_exclude_flag='I' AND request_id = p_request_id)
3834 AND paf.assignment_type = 'E'
3835 AND effective_start_date <= p_effort_end
3836 AND effective_end_date >= p_effort_start;
3837 ELSIF template_rec.array_sel_criteria(i)='LOC' THEN
3838 INSERT INTO psp_selection_cardinality_gt
3839 (lookup_code, total_count)
3840 SELECT 'LOC', COUNT(DISTINCT assignment_id)
3841 FROM per_assignments_f paf
3842 WHERE location_id IN (SELECT TO_NUMBER(criteria_value1)
3843 FROM psp_report_template_details_h prtd
3844 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3845 AND criteria_lookup_code='LOC'
3846 AND include_exclude_flag='I'
3847 AND request_id = p_request_id)
3848 AND paf.assignment_type = 'E'
3849 AND effective_start_date <= p_effort_end
3850 AND effective_end_date >= p_effort_start;
3851 ELSIF template_rec.array_sel_criteria(i)='ORG' THEN
3852 INSERT INTO psp_selection_cardinality_gt
3853 (lookup_code, total_count)
3854 SELECT 'ORG', COUNT(DISTINCT assignment_id)
3855 FROM per_assignments_f paf
3856 WHERE organization_id IN (SELECT TO_NUMBER(criteria_value1)
3857 FROM psp_report_template_details_h prtd
3858 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3859 AND criteria_lookup_code='ORG'
3860 AND include_exclude_flag='I'
3861 AND request_id = p_request_id)
3862 AND paf.assignment_type = 'E'
3863 AND effective_start_date <= p_effort_end
3864 AND effective_end_date >= p_effort_start;
3865 ELSIF template_rec.array_sel_criteria(i)='JOB' THEN
3866 INSERT INTO psp_selection_cardinality_gt
3867 (lookup_code, total_count)
3868 SELECT 'JOB', COUNT(DISTINCT assignment_id)
3869 FROM per_assignments_f paf
3870 WHERE job_id IN (SELECT TO_NUMBER(criteria_value1)
3871 FROM psp_report_template_details_h prtd
3872 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3873 AND criteria_lookup_code='JOB'
3874 AND include_exclude_flag='I'
3875 AND request_id=p_request_id)
3876 AND paf.assignment_type = 'E'
3877 AND effective_start_date <= p_effort_end
3878 AND effective_end_date >= p_effort_start;
3879 ELSIF template_rec.array_sel_criteria(i)='POS' THEN
3880 INSERT INTO psp_selection_cardinality_gt
3881 (lookup_code, total_count)
3882 SELECT 'POS', COUNT(DISTINCT assignment_id)
3883 FROM per_assignments_f paf
3884 WHERE position_id IN (SELECT TO_NUMBER(criteria_value1)
3885 FROM psp_report_template_details_h prtd
3886 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3887 AND criteria_lookup_code='POS'
3888 AND include_exclude_flag='I'
3889 AND request_id = p_request_id)
3890 AND paf.assignment_type = 'E'
3891 AND effective_start_date <= p_effort_end
3892 AND effective_end_date >= p_effort_start;
3893 ELSIF template_rec.array_sel_criteria(i)='ASS' THEN
3894 INSERT INTO psp_selection_cardinality_gt
3895 (lookup_code, total_count)
3896 SELECT 'ASS', COUNT(DISTINCT assignment_id)
3897 FROM per_assignments_f paf
3898 WHERE assignment_status_type_id IN (SELECT TO_NUMBER(criteria_value1)
3899 FROM psp_report_template_details_h prtd
3900 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3901 AND criteria_lookup_code='ASS'
3902 AND include_exclude_flag='I'
3903 AND request_id = p_request_id)
3904 AND paf.assignment_type = 'E'
3905 AND effective_start_date <= p_effort_end
3906 AND effective_end_date >= p_effort_start;
3907 ELSIF template_rec.array_sel_criteria(i)='CST' THEN
3908 INSERT INTO psp_selection_cardinality_gt
3909 (lookup_code, total_count)
3910 SELECT 'CST', COUNT(DISTINCT paf.assignment_id)
3911 FROM per_assignments_f paf,
3912 pay_payrolls_f ppf
3913 WHERE ppf.payroll_id = paf.payroll_id
3914 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
3915 FROM psp_report_template_details_h prtd
3916 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3917 AND criteria_lookup_code='CST'
3918 AND include_exclude_flag='I'
3919 AND request_id = p_request_id)
3920 AND paf.assignment_type = 'E'
3921 AND ppf.effective_start_date <= p_effort_end
3922 AND ppf.effective_end_date >= p_effort_start
3923 AND paf.effective_start_date <= p_effort_end
3924 AND paf.effective_end_date >= p_effort_start;
3925 ELSIF template_rec.array_sel_criteria(i) = 'AST' THEN
3926 INSERT INTO psp_selection_cardinality_gt
3927 (lookup_code, total_count)
3928 SELECT 'AST', COUNT(DISTINCT paf.assignment_id)
3929 FROM per_all_assignments_f paf,
3930 hr_assignment_sets has ,
3931 hr_assignment_set_amendments hasa
3932 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
3933 FROM psp_report_template_details_h prtd
3934 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
3935 AND criteria_lookup_code='AST'
3936 AND include_exclude_flag='I'
3937 AND request_id =p_request_id)
3938 AND ( (paf.payroll_id = has.payroll_id
3939 AND paf.assignment_type = 'E'
3940 AND paf.effective_start_date <= p_effort_end
3941 AND paf.effective_end_date >= p_effort_start
3942 AND has.assignment_set_id = hasa.assignment_set_id)
3943 OR (paf.assignment_id = hasa.assignment_id
3944 AND paf.assignment_type = 'E'
3945 AND paf.effective_start_date <= p_effort_end
3946 AND paf.effective_end_date >= p_effort_start
3947 AND hasa.assignment_set_id=has.assignment_set_id
3948 AND include_or_exclude ='I'))
3949 AND NOT EXISTS (SELECT assignment_id
3950 FROM hr_assignment_set_amendments hasa
3951 WHERE hasa.assignment_id = paf.assignment_id
3952 AND hasa.include_or_exclude ='E'
3953 AND paf.assignment_type = 'E'
3954 AND paf.effective_start_date <= p_effort_end
3955 AND paf.effective_end_date >= p_effort_start);
3956 ELSIF template_rec.array_sel_criteria(i)='PPG' THEN
3957 l_dyn_criteria:='PPG';
3958 ELSIF template_rec.array_sel_criteria(i)='GLA' THEN
3959 l_dyn_criteria:='GLA';
3960 END IF;
3961 END LOOP;
3962
3963 -- Next find the selection criteria with lowest cardinality. Use it to prepare the initial list.
3964
3965 OPEN get_lowest_cardinality_csr;
3966 FETCH get_lowest_cardinality_csr into g_lookup_code;
3967 CLOSE get_lowest_cardinality_csr;
3968
3969 IF g_lookup_code is not null then
3970 l_atleast_one_criteria:='Y';
3971 hr_utility.trace( 'g_lookup_code -> '||g_lookup_code );
3972 ELSE
3973 OPEN get_zero_cardinality_csr;
3974 FETCH get_zero_cardinality_csr into g_lookup_code;
3975 CLOSE get_zero_cardinality_csr;
3976
3977 hr_utility.trace( ' Inside zero cardinality => g_lookup_code= '||g_lookup_code );
3978
3979 IF g_lookup_code is not null then
3980 l_atleast_one_criteria:='Y';
3981 END IF;
3982 END IF;
3983
3984 IF g_lookup_code IS NULL then
3985 BEGIN
3986 -- When no static selection criteria have been chosen, then invoke the dynamic selection criteria
3987 hr_utility.trace( ' Inside zero cardinality => g_lookup_code IS NULL');
3988
3989 IF l_dyn_criteria ='PPG' then
3990 l_atleast_one_criteria:='Y';
3991
3992 OPEN ppg_cursor;
3993 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
3994 IF l_criteria_value1 is not null then
3995 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
3996 LOOP
3997 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
3998 EXIT WHEN PPG_CURSOR%NOTFOUND;
3999
4000 g_exec_string:= l_sql_string|| ' OR '||l_criteria_value1 ||' = '||'''' ||
4001 l_criteria_value2|| '''';
4002 l_sql_string:=g_exec_string;
4003 END LOOP;
4004 CLOSE ppg_cursor;
4005
4006 IF l_sql_string IS NOT NULL THEN
4007 g_exec_string := 'INSERT INTO psp_selection_cardinality_gt(lookup_code, total_count)
4008 SELECT '|| '''' || 'PPG' || ''''||' , COUNT(person_id)
4009 FROM per_assignments_f paf,
4010 pay_people_groups ppg
4011 WHERE paf.people_group_id= ppg.people_group_id
4012 AND paf.assignment_type = ''' || 'E' || '''
4013 AND paf.effective_end_date >= :p_effort_start
4014 AND paf.effective_start_date <= :p_effort_end
4015 AND ppg.people_group_id IN (SELECT people_group_id
4016 FROM pay_people_groups
4017 WHERE ' || l_sql_string || ')';
4018
4019 hr_utility.trace( ' g_exec_string = '||g_exec_string );
4020
4021 EXECUTE IMMEDIATE g_exec_string USING IN p_effort_Start, p_effort_end;
4022 g_lookup_code := 'PPG';
4023 END IF;
4024 END IF;
4025 ELSIF l_dyn_criteria ='GLA' then
4026 l_atleast_one_criteria:='Y';
4027
4028 OPEN gla_cursor;
4029 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
4030 IF l_criteria_value1 is not null then
4031 l_sql_string := l_criteria_value1 ||' between '|| '''' || l_criteria_value2 || '''' ||
4032 ' AND ' || ''''||l_criteria_value3||'''' ;
4033 LOOP
4034 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
4035 EXIT WHEN GLA_CURSOR%NOTFOUND;
4036
4037 g_exec_string:= l_sql_string || ' OR ' || l_criteria_value1 || ' between ' ||
4038 ''''|| l_criteria_value2 || '''' ||
4039 ' AND ' || ''''|| l_criteria_value3 || '''' ;
4040 l_sql_string:=g_exec_string;
4041 END LOOP;
4042 CLOSE gla_cursor;
4043
4044 IF l_sql_string IS NOT NULL THEN
4045 g_exec_string := 'INSERT INTO psp_selection_cardinality_gt(lookup_code, total_count)
4046 SELECT '|| '''' || 'GLA' || ''''|| ' , COUNT( DISTINCT psl.assignment_id)
4047 FROM psp_summary_lines psl,
4048 psp_distribution_lines_history pdnh,
4049 psp_pre_gen_dist_lines_history ppg,
4050 psp_adjustment_lines_history palh,
4051 gl_code_combinations gcc
4052 WHERE psl.business_group_id = '|| p_business_group_id || '
4053 AND psl.set_of_books_id =' || p_set_of_books_id || '
4054 AND gcc.code_combination_id= psl.gl_code_combination_id
4055 AND psl.summary_line_id = pdnh.summary_line_id(+)
4056 AND psl.summary_line_id = ppg.summary_line_id(+)
4057 AND psl.summary_line_id = palh.summary_line_id(+)
4058 AND psl.status_code='||''''||'A'||''''||'
4059 AND ( (psl.source_type IN ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||')
4060 AND pdnh.distribution_date between :p_effort_start AND :p_effort_end
4061 AND pdnh.summary_line_id = psl.summary_line_id
4062 AND pdnh.reversal_entry_flag IS NULL
4063 AND pdnh.adjustment_batch_name IS NULL)
4064 OR (psl.source_type='||''''||'P'||''''||'
4065 AND ppg.distribution_date BETWEEN :p_effort_start
4066 AND :p_effort_end
4067 AND ppg.summary_line_id = psl.summary_line_id
4068 AND ppg.adjustment_batch_name IS NULL
4069 AND ppg.reversal_entry_flag IS NULL)
4070 OR (psl.source_type='||''''||'A'||''''||'
4071 AND palh.summary_line_id = psl.summary_line_id
4072 AND palh.reversal_entry_flag IS NULL
4073 AND palh.adjustment_batch_name IS NULL
4074 AND NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''||
4075 ') = '||''''|| 'N' || '''' || '
4076 AND palh.distribution_date BETWEEN :p_effort_start
4077 AND :p_effort_end ))
4078 AND gcc.code_combination_id= psl.gl_code_combination_id
4079 AND gcc.code_combination_id IN (SELECT code_combination_id
4080 FROM gl_code_combinations
4081 WHERE ' || l_sql_string || ')';
4082
4083 hr_utility.trace( ' g_exec_string = '||g_exec_string );
4084 EXECUTE IMMEDIATE g_exec_string USING IN p_effort_start, p_effort_end,
4085 p_effort_start, p_effort_end ,p_effort_start, p_effort_end;
4086 g_lookup_code :='GLA';
4087 END IF;
4088 END IF;
4089 END IF;
4090 END;
4091 END IF;
4092
4093 IF NVL(l_atleast_one_criteria, 'N')='N' then
4094 g_lookup_code:='ALL' ;
4095 END IF;
4096
4097 EXCEPTION
4098 WHEN OTHERS THEN
4099 fnd_file.put_line(fnd_file.log, ' EXCEPTION '||sqlerrm);
4100 END get_asg_lowest_cardinality;
4101
4102 PROCEDURE prepare_initial_asg_list (p_request_id IN NUMBER,
4103 p_effort_start IN DATE,
4104 p_effort_end IN DATE,
4105 p_business_group_id IN NUMBER,
4106 p_set_of_books_id IN NUMBER) IS
4107 PRAGMA AUTONOMOUS_TRANSACTION;
4108 CURSOR PPG_CURSOR IS
4109 SELECT criteria_value1, criteria_value2
4110 FROM psp_report_template_details_h
4111 WHERE request_id = p_request_id
4112 AND criteria_lookup_type= 'PSP_SELECTION_CRITERIA' AND criteria_lookup_code='PPG'
4113 AND include_exclude_flag='I';
4114
4115
4116 CURSOR GLA_CURSOR IS
4117 SELECT criteria_value1 , criteria_value2, criteria_value3
4118 FROM psp_report_template_details_h
4119 WHERE request_id = p_request_id
4120 AND criteria_lookup_type ='PSP_SELECTION_CRITERIA' AND criteria_lookup_code ='GLA'
4121 AND include_exclude_flag='I';
4122
4123 l_criteria_value1 VARCHAR2(30);
4124 l_criteria_value2 VARCHAR2(30);
4125 l_criteria_value3 VARCHAR2(30);
4126 l_sql_string VARCHAR2(1000);
4127
4128 l_cnt NUMBER;
4129 BEGIN
4130 IF g_lookup_code = 'PTY' THEN
4131
4132 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4133 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4134 FROM per_people_f ppf,
4135 per_assignments_f paf,
4136 per_assignment_status_types past
4137 WHERE person_type_id IN (SELECT TO_NUMBER(criteria_value1)
4138 FROM psp_report_template_details_h prtd
4139 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4140 AND criteria_lookup_code='PTY'
4141 AND request_id = p_request_id
4142 AND include_exclude_flag='I')
4143 AND paf.assignment_type = 'E'
4144 AND paf.person_id = ppf.person_id
4145 AND ppf.effective_start_date <= p_effort_end
4146 AND ppf.effective_end_date >= p_effort_start
4147 AND paf.effective_start_date <= p_effort_end
4148 AND paf.effective_end_date >= p_effort_start
4149 AND paf.assignment_status_type_id = past.assignment_status_type_id
4150 AND ( past.per_system_status <> 'TERM_ASSIGN'
4151 OR EXISTS ( select null
4152 FROM psp_pre_gen_dist_lines_history
4153 WHERE distribution_date between p_effort_start and p_effort_end
4154 AND assignment_id = paf.assignment_id
4155 AND reversal_entry_flag IS NULL
4156 AND rownum=1 )
4157 OR EXISTS (SELECT null
4158 FROM psp_distribution_lines_history pdlh
4159 , psp_summary_lines psl
4160 WHERE pdlh.summary_line_id = psl.summary_line_id
4161 AND distribution_date between p_effort_start and p_effort_end
4162 AND psl.person_id = paf.person_id
4163 AND psl.assignment_id = paf.assignment_id
4164 AND reversal_entry_flag IS NULL
4165 AND rownum=1));
4166
4167
4168 ELSIF g_lookup_code ='EMP' THEN
4169 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4170 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4171 FROM per_all_people_f ppf,
4172 per_assignments_f paf,
4173 per_assignment_status_types past
4174 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
4175 FROM psp_report_template_details_h prtd
4176 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4177 AND criteria_lookup_code='EMP'
4178 AND include_exclude_flag='I'
4179 AND request_id = p_request_id)
4180 AND paf.assignment_type = 'E'
4181 AND paf.person_id = ppf.person_id
4182 AND ppf.effective_start_date <= p_effort_end
4183 AND ppf.effective_end_date >= p_effort_start
4184 AND paf.effective_start_date <= p_effort_end
4185 AND paf.effective_end_date >= p_effort_start
4186 AND paf.assignment_status_type_id = past.assignment_status_type_id
4187 AND ( past.per_system_status <> 'TERM_ASSIGN'
4188 OR EXISTS ( select null
4189 FROM psp_pre_gen_dist_lines_history
4190 WHERE distribution_date between p_effort_start and p_effort_end
4191 AND assignment_id = paf.assignment_id
4192 AND reversal_entry_flag IS NULL
4193 AND rownum=1 )
4194 OR EXISTS (SELECT null
4195 FROM psp_distribution_lines_history pdlh
4196 , psp_summary_lines psl
4197 WHERE pdlh.summary_line_id = psl.summary_line_id
4198 AND distribution_date between p_effort_start and p_effort_end
4199 AND psl.person_id = paf.person_id
4200 AND psl.assignment_id = paf.assignment_id
4201 AND reversal_entry_flag IS NULL
4202 AND rownum=1));
4203
4204
4205 ELSIF g_lookup_code ='SUP' THEN
4206 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4207 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4208 FROM per_all_assignments_f paf,
4209 per_assignment_status_types past
4210 WHERE supervisor_id IN (SELECT TO_NUMBER(criteria_value1)
4211 FROM psp_report_template_details_h prtd
4212 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4213 AND criteria_lookup_code='SUP'
4214 AND include_exclude_flag='I'
4215 AND request_id = p_request_id)
4216 AND paf.assignment_type = 'E'
4217 AND paf.effective_start_date <= p_effort_end
4218 AND paf.effective_end_date >= p_effort_start
4219 AND paf.assignment_status_type_id = past.assignment_status_type_id
4220 AND ( past.per_system_status <> 'TERM_ASSIGN'
4221 OR EXISTS ( select null
4222 FROM psp_pre_gen_dist_lines_history
4223 WHERE distribution_date between p_effort_start and p_effort_end
4224 AND assignment_id = paf.assignment_id
4225 AND reversal_entry_flag IS NULL
4226 AND rownum=1 )
4227 OR EXISTS (SELECT null
4228 FROM psp_distribution_lines_history pdlh
4229 , psp_summary_lines psl
4230 WHERE pdlh.summary_line_id = psl.summary_line_id
4231 AND distribution_date between p_effort_start and p_effort_end
4232 AND psl.person_id = paf.person_id
4233 AND psl.assignment_id = paf.assignment_id
4234 AND reversal_entry_flag IS NULL
4235 AND rownum=1));
4236
4237 ELSIF g_lookup_code='AWD' THEN
4238 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4239 SELECT DISTINCT p_request_id, psl.person_id, psl.assignment_id
4240 FROM psp_summary_lines psl,
4241 psp_report_template_details_h prtd,
4242 per_time_periods ptp
4243 WHERE
4244 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4245 AND prtd.criteria_lookup_code='AWD'
4246 AND prtd.include_exclude_flag='I'
4247 AND prtd.request_id =p_request_id
4248 and psl.award_id = TO_NUMBER(prtd.criteria_value1)
4249 AND psl.business_group_id = p_business_group_id
4250 AND psl.set_of_books_id = p_set_of_books_id
4251 AND psl.status_code= 'A'
4252 AND ptp.time_period_id = psl.time_period_id
4253 AND (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start)
4254 AND ( EXISTS (SELECT 1
4255 FROM psp_distribution_lines_history pdnh
4256 WHERE pdnh.summary_line_id = psl.summary_line_id
4257 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
4258 AND pdnh.reversal_entry_flag IS NULL
4259 AND pdnh.adjustment_batch_name IS NULL )
4260 OR EXISTS (SELECT 1
4261 FROM psp_pre_gen_dist_lines_history ppg
4262 WHERE ppg.summary_line_id = psl.summary_line_id
4263 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
4264 AND ppg.adjustment_batch_name IS NULL
4265 AND ppg.reversal_entry_flag IS NULL)
4266 OR EXISTS (SELECT 1
4267 FROM psp_adjustment_lines_history palh
4268 WHERE palh.summary_line_id = psl.summary_line_id
4269 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
4270 AND palh.adjustment_batch_name IS NULL
4271 AND palh.reversal_entry_flag IS NULL
4272 AND NVL(palh.original_line_flag, 'N') ='N'));
4273 ELSIF g_lookup_code ='ATY' THEN
4274 INSERT INTO psp_selected_persons_t (request_id , person_id, assignment_id)
4275 SELECT DISTINCT p_request_id, psl.person_id, psl.assignment_id
4276 FROM psp_summary_lines psl,
4277 psp_report_template_details_h prtd,
4278 gms_awards_all gaa,
4279 per_time_periods ptp
4280 WHERE psl.award_id = gaa.award_id
4281 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4282 AND prtd.criteria_lookup_code='ATY'
4283 AND prtd.include_exclude_flag='I'
4284 AND prtd.request_id =p_request_id
4285 AND gaa.type=prtd.criteria_value1
4286 AND psl.business_group_id = p_business_group_id
4287 AND psl.set_of_books_id = p_set_of_books_id
4288 AND psl.status_code= 'A'
4289 AND ptp.time_period_id = psl.time_period_id
4290 AND (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start)
4291 AND ( EXISTS (SELECT 1
4292 FROM psp_distribution_lines_history pdnh
4293 WHERE pdnh.summary_line_id = psl.summary_line_id
4294 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
4295 AND pdnh.reversal_entry_flag IS NULL
4296 AND pdnh.adjustment_batch_name IS NULL )
4297 OR EXISTS (SELECT 1
4298 FROM psp_pre_gen_dist_lines_history ppg
4299 WHERE ppg.summary_line_id = psl.summary_line_id
4300 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
4301 AND ppg.adjustment_batch_name IS NULL
4302 AND ppg.reversal_entry_flag IS NULL)
4303 OR EXISTS (SELECT 1
4304 FROM psp_adjustment_lines_history palh
4305 WHERE palh.summary_line_id = psl.summary_line_id
4306 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
4307 AND palh.adjustment_batch_name IS NULL
4308 AND palh.reversal_entry_flag IS NULL
4309 AND NVL(palh.original_line_flag, 'N') ='N'));
4310
4311 ELSIF g_lookup_code ='PRT' THEN
4312 INSERT INTO psp_selected_persons_t (request_id , person_id, assignment_id)
4313 SELECT DISTINCT p_request_id, psl.person_id, psl.assignment_id
4314 FROM psp_summary_lines psl,
4315 psp_report_template_details_h prtd,
4316 pa_projects_all ppa,
4317 per_time_periods ptp
4318 WHERE psl.project_id = ppa.project_id
4319 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4320 AND prtd.criteria_lookup_code='PRT'
4321 AND prtd.include_exclude_flag='I'
4322 AND prtd.request_id =p_request_id
4323 AND ppa.project_type=prtd.criteria_value1
4324 AND psl.business_group_id = p_business_group_id
4325 AND psl.set_of_books_id = p_set_of_books_id
4326 AND psl.status_code= 'A'
4327 AND ptp.time_period_id = psl.time_period_id
4328 AND (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start)
4329 AND ( EXISTS (SELECT 1
4330 FROM psp_distribution_lines_history pdnh
4331 WHERE pdnh.summary_line_id = psl.summary_line_id
4332 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
4333 AND pdnh.reversal_entry_flag IS NULL
4334 AND pdnh.adjustment_batch_name IS NULL )
4335 OR EXISTS (SELECT 1
4336 FROM psp_pre_gen_dist_lines_history ppg
4337 WHERE ppg.summary_line_id = psl.summary_line_id
4338 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
4339 AND ppg.adjustment_batch_name IS NULL
4340 AND ppg.reversal_entry_flag IS NULL)
4341 OR EXISTS (SELECT 1
4342 FROM psp_adjustment_lines_history palh
4343 WHERE palh.summary_line_id = psl.summary_line_id
4344 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
4345 AND palh.adjustment_batch_name IS NULL
4346 AND palh.reversal_entry_flag IS NULL
4347 AND NVL(palh.original_line_flag, 'N') ='N'));
4348 ELSIF g_lookup_code ='PRJ' THEN
4349 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4350 SELECT DISTINCT p_request_id, psl.person_id, psl.assignment_id
4351 FROM psp_summary_lines psl,
4352 psp_report_template_details_h prtd,
4353 per_time_periods ptp
4354 WHERE
4355 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4356 AND prtd.criteria_lookup_code='PRJ'
4357 AND prtd.include_exclude_flag='I'
4358 AND prtd.request_id =p_request_id
4359 and psl.project_id = TO_NUMBER(prtd.criteria_value1)
4360 AND psl.business_group_id = p_business_group_id
4361 AND psl.set_of_books_id = p_set_of_books_id
4362 AND psl.status_code= 'A'
4363 AND ptp.time_period_id = psl.time_period_id
4364 AND (ptp.start_date <= p_effort_end AND ptp.end_date >= p_effort_start)
4365 AND ( EXISTS (SELECT 1
4366 FROM psp_distribution_lines_history pdnh
4367 WHERE pdnh.summary_line_id = psl.summary_line_id
4368 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
4369 AND pdnh.reversal_entry_flag IS NULL
4370 AND pdnh.adjustment_batch_name IS NULL )
4371 OR EXISTS (SELECT 1
4372 FROM psp_pre_gen_dist_lines_history ppg
4373 WHERE ppg.summary_line_id = psl.summary_line_id
4374 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
4375 AND ppg.adjustment_batch_name IS NULL
4376 AND ppg.reversal_entry_flag IS NULL)
4377 OR EXISTS (SELECT 1
4378 FROM psp_adjustment_lines_history palh
4379 WHERE palh.summary_line_id = psl.summary_line_id
4380 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
4381 AND palh.adjustment_batch_name IS NULL
4382 AND palh.reversal_entry_flag IS NULL
4383 AND NVL(palh.original_line_flag, 'N') ='N'));
4384 ELSIF g_lookup_code ='PAY' THEN
4385
4386 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4387 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4388 FROM per_assignments_f paf,
4389 per_assignment_status_types past
4390 WHERE payroll_id IN (SELECT TO_NUMBER(criteria_value1)
4391 FROM psp_report_template_details_h prtd
4392 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4393 AND criteria_lookup_code='PAY'
4394 AND include_exclude_flag='I'
4395 AND request_id = p_request_id)
4396 AND paf.assignment_type = 'E'
4397 AND paf.effective_start_date <= p_effort_end
4398 AND paf.effective_end_date >= p_effort_start
4399 AND paf.assignment_status_type_id = past.assignment_status_type_id
4400 AND ( past.per_system_status <> 'TERM_ASSIGN'
4401 OR EXISTS ( select null
4402 FROM psp_pre_gen_dist_lines_history
4403 WHERE distribution_date between p_effort_start and p_effort_end
4404 AND assignment_id = paf.assignment_id
4405 AND reversal_entry_flag IS NULL
4406 AND rownum=1 )
4407 OR EXISTS (SELECT null
4408 FROM psp_distribution_lines_history pdlh
4409 , psp_summary_lines psl
4410 WHERE pdlh.summary_line_id = psl.summary_line_id
4411 AND distribution_date between p_effort_start and p_effort_end
4412 AND psl.person_id = paf.person_id
4413 AND psl.assignment_id = paf.assignment_id
4414 AND reversal_entry_flag IS NULL
4415 AND rownum=1));
4416
4417 ELSIF g_lookup_code ='LOC' THEN
4418
4419 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4420 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4421 FROM per_assignments_f paf,
4422 per_assignment_status_types past
4423 WHERE location_id IN (SELECT TO_NUMBER(criteria_value1)
4424 FROM psp_report_template_details_h prtd
4425 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4426 AND criteria_lookup_code='LOC'
4427 AND include_exclude_flag='I'
4428 AND request_id = p_request_id)
4429 AND paf.assignment_type = 'E'
4430 AND paf.effective_start_date <= p_effort_end
4431 AND paf.effective_end_date >= p_effort_start
4432 AND paf.assignment_status_type_id = past.assignment_status_type_id
4433 AND ( past.per_system_status <> 'TERM_ASSIGN'
4434 OR EXISTS ( select null
4435 FROM psp_pre_gen_dist_lines_history
4436 WHERE distribution_date between p_effort_start and p_effort_end
4437 AND assignment_id = paf.assignment_id
4438 AND reversal_entry_flag IS NULL
4439 AND rownum=1 )
4440 OR EXISTS (SELECT null
4441 FROM psp_distribution_lines_history pdlh
4442 , psp_summary_lines psl
4443 WHERE pdlh.summary_line_id = psl.summary_line_id
4444 AND distribution_date between p_effort_start and p_effort_end
4445 AND psl.person_id = paf.person_id
4446 AND psl.assignment_id = paf.assignment_id
4447 AND reversal_entry_flag IS NULL
4448 AND rownum=1));
4449
4450 ELSIF g_lookup_code ='ORG' THEN
4451 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4452 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4453 FROM per_assignments_f paf,
4454 per_assignment_status_types past
4455 WHERE organization_id IN (SELECT TO_NUMBER(criteria_value1)
4456 FROM psp_report_template_details_h prtd
4457 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4458 AND criteria_lookup_code='ORG'
4459 AND request_id = p_request_id
4460 AND include_exclude_flag='I')
4461 AND paf.assignment_type = 'E'
4462 AND paf.effective_start_date <= p_effort_end
4463 AND paf.effective_end_date >= p_effort_start
4464 AND paf.assignment_status_type_id = past.assignment_status_type_id
4465 AND ( past.per_system_status <> 'TERM_ASSIGN'
4466 OR EXISTS ( select null
4467 FROM psp_pre_gen_dist_lines_history
4468 WHERE distribution_date between p_effort_start and p_effort_end
4469 AND assignment_id = paf.assignment_id
4470 AND reversal_entry_flag IS NULL
4471 AND rownum=1 )
4472 OR EXISTS (SELECT null
4473 FROM psp_distribution_lines_history pdlh
4474 , psp_summary_lines psl
4475 WHERE pdlh.summary_line_id = psl.summary_line_id
4476 AND distribution_date between p_effort_start and p_effort_end
4477 AND psl.person_id = paf.person_id
4478 AND psl.assignment_id = paf.assignment_id
4479 AND reversal_entry_flag IS NULL
4480 AND rownum=1));
4481
4482 ELSIF g_lookup_code='CST' THEN
4483 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4484 SELECT DISTINCT p_request_id, person_id, assignment_id
4485 FROM per_assignments_f paf,
4486 pay_payrolls_f ppf,
4487 per_assignment_status_types past
4488 WHERE ppf.payroll_id = paf.payroll_id
4489 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
4490 FROM psp_report_template_details_h prtd
4491 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4492 AND criteria_lookup_code='CST'
4493 AND include_exclude_flag='I'
4494 AND request_id = p_request_id)
4495 AND paf.assignment_type = 'E'
4496 AND ppf.effective_start_date <= p_effort_end
4497 AND ppf.effective_end_date >= p_effort_start
4498 AND paf.effective_start_date <= p_effort_end
4499 AND paf.effective_end_date >= p_effort_start
4500 AND paf.assignment_status_type_id = past.assignment_status_type_id
4501 AND ( past.per_system_status <> 'TERM_ASSIGN'
4502 OR EXISTS ( select null
4503 FROM psp_pre_gen_dist_lines_history
4504 WHERE distribution_date between p_effort_start and p_effort_end
4505 AND assignment_id = paf.assignment_id
4506 AND reversal_entry_flag IS NULL
4507 AND rownum=1 )
4508 OR EXISTS (SELECT null
4509 FROM psp_distribution_lines_history pdlh
4510 , psp_summary_lines psl
4511 WHERE pdlh.summary_line_id = psl.summary_line_id
4512 AND distribution_date between p_effort_start and p_effort_end
4513 AND psl.person_id = paf.person_id
4514 AND psl.assignment_id = paf.assignment_id
4515 AND reversal_entry_flag IS NULL
4516 AND rownum=1));
4517
4518 ELSIF g_lookup_code = 'AST' THEN
4519
4520 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4521 SELECT DISTINCT p_request_id, person_id, paf.assignment_id
4522 FROM per_all_assignments_f paf,
4523 hr_assignment_sets has,
4524 hr_assignment_set_amendments hasa,
4525 per_assignment_status_types past
4526 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
4527 FROM psp_report_template_details_h prtd
4528 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4529 AND criteria_lookup_code='AST'
4530 AND include_exclude_flag='I'
4531 AND request_id =p_request_id)
4532 AND ( (paf.payroll_id = has.payroll_id
4533 AND paf.assignment_type = 'E'
4534 AND paf.effective_start_date <= p_effort_end
4535 AND paf.effective_end_date >= p_effort_start
4536 AND has.assignment_set_id = hasa.assignment_set_id)
4537 OR (paf.assignment_id = hasa.assignment_id
4538 AND paf.assignment_type = 'E'
4539 AND paf.effective_start_date <= p_effort_end
4540 AND paf.effective_end_date >= p_effort_start
4541 AND hasa.assignment_set_id=has.assignment_set_id AND include_or_exclude ='I'))
4542 AND NOT EXISTS (SELECT assignment_id
4543 FROM hr_assignment_set_amendments hasa
4544 WHERE hasa.assignment_id = paf.assignment_id AND hasa.include_or_exclude ='E'
4545 AND paf.assignment_type = 'E'
4546 AND paf.effective_start_date <= p_effort_end
4547 AND paf.effective_end_date >= p_effort_start)
4548 AND paf.assignment_status_type_id = past.assignment_status_type_id
4549 AND ( past.per_system_status <> 'TERM_ASSIGN'
4550 OR EXISTS ( select null
4551 FROM psp_pre_gen_dist_lines_history
4552 WHERE distribution_date between p_effort_start and p_effort_end
4553 AND assignment_id = paf.assignment_id
4554 AND reversal_entry_flag IS NULL
4555 AND rownum=1 )
4556 OR EXISTS (SELECT null
4557 FROM psp_distribution_lines_history pdlh
4558 , psp_summary_lines psl
4559 WHERE pdlh.summary_line_id = psl.summary_line_id
4560 AND distribution_date between p_effort_start and p_effort_end
4561 AND psl.person_id = paf.person_id
4562 AND psl.assignment_id = paf.assignment_id
4563 AND reversal_entry_flag IS NULL
4564 AND rownum=1));
4565
4566 ELSIF g_lookup_code ='JOB' THEN
4567
4568 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4569 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4570 FROM per_assignments_f paf,
4571 per_assignment_status_types past
4572 WHERE job_id IN (SELECT TO_NUMBER(criteria_value1)
4573 FROM psp_report_template_details_h prtd
4574 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4575 AND criteria_lookup_code='JOB'
4576 AND include_exclude_flag='I'
4577 AND request_id = p_request_id)
4578 AND paf.assignment_type = 'E'
4579 AND paf.effective_start_date <= p_effort_end
4580 AND paf.effective_end_date >= p_effort_start
4581 AND paf.assignment_status_type_id = past.assignment_status_type_id
4582 AND ( past.per_system_status <> 'TERM_ASSIGN'
4583 OR EXISTS ( select null
4584 FROM psp_pre_gen_dist_lines_history
4585 WHERE distribution_date between p_effort_start and p_effort_end
4586 AND assignment_id = paf.assignment_id
4587 AND reversal_entry_flag IS NULL
4588 AND rownum=1 )
4589 OR EXISTS (SELECT null
4590 FROM psp_distribution_lines_history pdlh
4591 , psp_summary_lines psl
4592 WHERE pdlh.summary_line_id = psl.summary_line_id
4593 AND distribution_date between p_effort_start and p_effort_end
4594 AND psl.person_id = paf.person_id
4595 AND psl.assignment_id = paf.assignment_id
4596 AND reversal_entry_flag IS NULL
4597 AND rownum=1));
4598
4599 ELSIF g_lookup_code ='POS' THEN
4600 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4601 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4602 FROM per_assignments_f paf,
4603 per_assignment_status_types past
4604 WHERE position_id IN (SELECT TO_NUMBER(criteria_value1)
4605 FROM psp_report_template_details_h prtd
4606 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4607 AND criteria_lookup_code='POS'
4608 AND request_id = p_request_id
4609 AND include_exclude_flag='I')
4610 AND paf.assignment_type = 'E'
4611 AND paf.effective_start_date <= p_effort_end
4612 AND paf.effective_end_date >= p_effort_start
4613 AND paf.assignment_status_type_id = past.assignment_status_type_id
4614 AND ( past.per_system_status <> 'TERM_ASSIGN'
4615 OR EXISTS ( select null
4616 FROM psp_pre_gen_dist_lines_history
4617 WHERE distribution_date between p_effort_start and p_effort_end
4618 AND assignment_id = paf.assignment_id
4619 AND reversal_entry_flag IS NULL
4620 AND rownum=1 )
4621 OR EXISTS (SELECT null
4622 FROM psp_distribution_lines_history pdlh
4623 , psp_summary_lines psl
4624 WHERE pdlh.summary_line_id = psl.summary_line_id
4625 AND distribution_date between p_effort_start and p_effort_end
4626 AND psl.person_id = paf.person_id
4627 AND psl.assignment_id = paf.assignment_id
4628 AND reversal_entry_flag IS NULL
4629 AND rownum=1));
4630
4631 ELSIF g_lookup_code ='ASS' THEN
4632 INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4633 SELECT DISTINCT p_request_id, paf.person_id, paf.assignment_id
4634 FROM per_assignments_f paf,
4635 per_assignment_status_types past
4636 WHERE paf.assignment_status_type_id IN (SELECT TO_NUMBER(criteria_value1)
4637 FROM psp_report_template_details_h prtd
4638 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4639 AND criteria_lookup_code='ASS'
4640 AND request_id = p_request_id
4641 AND include_exclude_flag='I')
4642 AND paf.assignment_type = 'E'
4643 AND paf.effective_start_date <= p_effort_end
4644 AND paf.effective_end_date >= p_effort_start
4645 AND paf.assignment_status_type_id = past.assignment_status_type_id
4646 AND ( past.per_system_status <> 'TERM_ASSIGN'
4647 OR EXISTS ( select null
4648 FROM psp_pre_gen_dist_lines_history
4649 WHERE distribution_date between p_effort_start and p_effort_end
4650 AND assignment_id = paf.assignment_id
4651 AND reversal_entry_flag IS NULL
4652 AND rownum=1 )
4653 OR EXISTS (SELECT null
4654 FROM psp_distribution_lines_history pdlh
4655 , psp_summary_lines psl
4656 WHERE pdlh.summary_line_id = psl.summary_line_id
4657 AND distribution_date between p_effort_start and p_effort_end
4658 AND psl.person_id = paf.person_id
4659 AND psl.assignment_id = paf.assignment_id
4660 AND reversal_entry_flag IS NULL
4661 AND rownum=1));
4662
4663 ELSIF g_lookup_code='PPG' THEN
4664 open ppg_cursor;
4665 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
4666 IF l_criteria_value1 IS NOT NULL THEN
4667 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
4668
4669 LOOP
4670 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
4671 EXIT WHEN PPG_CURSOR%NOTFOUND;
4672
4673 g_exec_string:= l_sql_string || ' OR '||l_criteria_value1 || ' = ' ||
4674 ''''||l_criteria_value2 || '''';
4675 l_sql_string:= g_exec_string;
4676
4677 END LOOP;
4678 CLOSE ppg_cursor;
4679
4680 IF l_sql_string IS NOT NULL THEN
4681 g_exec_string := 'INSERT INTO psp_selected_persons_t (request_id, person_id, assignment_id)
4682 SELECT :request_id , person_id, assignment_id
4683 FROM per_assignments_f paf,
4684 pay_people_groups ppg,
4685 per_assignment_status_types past
4686 WHERE paf.people_group_id= ppg.people_group_id
4687 AND paf.assignment_type = ''' || 'E' || '''
4688 AND paf.effective_end_date >= :p_effort_start
4689 AND paf.effective_start_date <= :p_effort_end
4690 AND ppg.people_group_id IN (SELECT people_group_id
4691 FROM pay_people_groups
4692 WHERE ' || l_sql_string || ')
4693 AND paf.assignment_status_type_id = past.assignment_status_type_id
4694 AND ( past.per_system_status <> ''' ||'TERM_ASSIGN' || '''
4695 OR EXISTS ( select null
4696 FROM psp_pre_gen_dist_lines_history
4697 WHERE distribution_date between :p_effort_start and :p_effort_end
4698 AND assignment_id = paf.assignment_id
4699 AND reversal_entry_flag IS NULL
4700 AND rownum=1 )
4701 OR EXISTS (SELECT null
4702 FROM psp_distribution_lines_history pdlh
4703 , psp_summary_lines psl
4704 WHERE pdlh.summary_line_id = psl.summary_line_id
4705 AND distribution_date between :p_effort_start and :p_effort_end
4706 AND psl.person_id = paf.person_id
4707 AND psl.assignment_id = paf.assignment_id
4708 AND reversal_entry_flag IS NULL
4709 AND rownum=1))';
4710
4711 EXECUTE IMMEDIATE g_exec_string USING IN p_request_id, p_effort_start, p_effort_end,
4712 p_effort_start, p_effort_end, p_effort_start, p_effort_end;
4713 END IF;
4714 END IF;
4715 ELSIF g_lookup_code ='GLA' THEN
4716 OPEN gla_cursor;
4717 FETCH GLA_CURSOR into l_criteria_value1, l_criteria_value2, l_criteria_value3;
4718
4719 IF l_criteria_value1 IS NOT NULL THEN
4720 l_sql_string := l_criteria_value1 ||' between '|| '''' || l_criteria_value2 ||''''||
4721 ' AND ' || ''''|| l_criteria_value3 || '''' ;
4722 LOOP
4723 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
4724 EXIT WHEN GLA_CURSOR%NOTFOUND;
4725
4726 g_exec_string:= l_sql_string || ' OR ' || l_criteria_value1 ||
4727 ' BETWEEN ' || ''''|| l_criteria_value2 || '''' ||
4728 ' AND ' || ''''|| l_criteria_value3 || '''' ;
4729 l_sql_string:=g_exec_string;
4730 END LOOP;
4731 CLOSE gla_cursor;
4732
4733 IF l_sql_string IS NOT NULL THEN
4734 g_exec_string := 'INSERT INTO psp_selected_persons_t(request_id, person_id, assignment_id)
4735 SELECT :p_request_id, psl.person_id, psl.assignment_id
4736 FROM psp_summary_lines psl,
4737 psp_distribution_lines_history pdnh,
4738 psp_adjustment_lines_history palh,
4739 psp_pre_gen_dist_lines_history ppg,
4740 gl_code_combinations gcc
4741 WHERE psl.business_group_id = '|| p_business_group_id || '
4742 AND psl.set_of_books_id = ' || p_set_of_books_id ||'
4743 AND psl.summary_line_id = pdnh.summary_line_id(+)
4744 AND psl.summary_line_id = ppg.summary_line_id(+)
4745 AND psl.summary_line_id = palh.summary_line_id(+)
4746 AND psl.status_code= '||''''||'A'||''''||'
4747 AND ( (psl.source_type IN ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||')
4748 AND pdnh.distribution_date between :p_effort_start AND :p_effort_end
4749 AND pdnh.reversal_entry_flag IS NULL
4750 AND pdnh.summary_line_id = psl.summary_line_id
4751 AND pdnh.adjustment_batch_name IS NULL)
4752 OR (psl.source_type='||''''||'P'||''''||'
4753 AND ppg.distribution_date between :p_effort_start AND :p_effort_end
4754 AND ppg.summary_line_id = psl.summary_line_id
4755 AND ppg.adjustment_batch_name IS NULL
4756 AND ppg.reversal_entry_flag IS NULL)
4757 OR (psl.source_type='||''''||'A'||''''||'
4758 AND palh.adjustment_batch_name IS NULL
4759 AND palh.summary_line_id =psl.summary_line_id
4760 AND NVL(palh.original_line_flag, ' || ''''|| 'N' || ''''|| ') = ' ||
4761 ''''|| 'N' || '''' ||'
4762 AND palh.distribution_date between :p_effort_start AND :p_effort_end))
4763 AND gcc.code_combination_id= psl.gl_code_combination_id
4764 AND gcc.code_combination_id IN (SELECT code_combination_id
4765 FROM gl_code_combinations
4766 WHERE ' || l_sql_string || ')';
4767 EXECUTE IMMEDIATE g_exec_string USING IN p_request_id, p_effort_start,
4768 p_effort_end, p_effort_start, p_effort_end, p_effort_start, p_effort_end;
4769 END IF;
4770 END IF;
4771 ELSIF g_lookup_code='ALL' THEN
4772 INSERT INTO psp_selected_persons_t(request_id, person_id, assignment_id)
4773 SELECT DISTINCT p_request_id, person_id, assignment_id
4774 FROM per_assignments_f
4775 WHERE assignment_type = 'E'
4776 AND business_group_id = p_business_group_id
4777 AND effective_start_date <= p_effort_end
4778 AND effective_end_date >= p_effort_start;
4779 END IF;
4780
4781 COMMIT;
4782 END prepare_initial_asg_list;
4783
4784 PROCEDURE prune_initial_asg_list (p_request_id IN NUMBER,
4785 p_effort_start IN DATE,
4786 p_effort_end IN DATE,
4787 p_business_group_id IN NUMBER,
4788 p_set_of_books_id IN NUMBER) IS
4789 CURSOR get_all_selection_criteria(p_request_id IN NUMBER) IS
4790 SELECT distinct criteria_lookup_code,
4791 include_exclude_flag
4792 FROM psp_report_template_details_h
4793 WHERE request_id = p_request_id
4794 AND criteria_lookup_type='PSP_SELECTION_CRITERIA'
4795 ORDER BY include_exclude_flag;
4796
4797 CURSOR PPG_CURSOR IS
4798 SELECT criteria_value1, criteria_value2
4799 FROM psp_report_template_details_h
4800 WHERE request_id = p_request_id
4801 AND criteria_lookup_type= 'PSP_SELECTION_CRITERIA'
4802 AND criteria_lookup_code='PPG'
4803 AND include_exclude_flag='I';
4804
4805 CURSOR GLA_CURSOR IS
4806 SELECT criteria_value1 , criteria_value2, criteria_value3
4807 FROM psp_report_template_details_h
4808 WHERE request_id = p_request_id
4809 AND criteria_lookup_type ='PSP_SELECTION_CRITERIA'
4810 AND criteria_lookup_code ='GLA'
4811 AND include_exclude_flag='I';
4812
4813
4814 TYPE t_varchar_30_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
4815 TYPE t_varchar_1_type IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
4816
4817 l_criteria_value1 VARCHAR2(30);
4818 l_criteria_value2 VARCHAR2(30);
4819 l_criteria_value3 VARCHAR2(30);
4820 l_sql_string VARCHAR2(1000);
4821 BEGIN
4822 OPEN get_all_selection_criteria(p_request_id);
4823 FETCH get_all_selection_criteria BULK COLLECT INTO template_sel_criteria.array_sel_criteria,
4824 template_sel_criteria.array_inc_exc_flag;
4825 CLOSE get_all_selection_criteria;
4826
4827 FOR i IN 1..template_sel_criteria.array_sel_criteria.COUNT
4828 LOOP
4829 IF template_sel_criteria.array_inc_exc_flag(i) = 'I' THEN
4830 IF template_sel_criteria.array_sel_criteria(i) <> g_lookup_code THEN
4831 IF template_sel_criteria.array_sel_criteria(i) = 'PTY' THEN
4832 DELETE FROM psp_selected_persons_t pspt
4833 WHERE request_id = p_request_id
4834 /* Bug 5087294 : Performance fix replacing not in with not exists */
4835 -- AND person_id NOT IN (SELECT NVL( person_id, 0)
4836 AND NOT EXISTS ( SELECT 1
4837 FROM per_people_f ppf,
4838 psp_report_template_details_h prtd,
4839 per_assignments_f paf
4840 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4841 AND criteria_lookup_code='PTY'
4842 AND paf.person_id = ppf.person_id
4843 AND paf.assignment_type = 'E'
4844 AND paf.effective_start_date <= p_effort_end
4845 AND paf.effective_end_date >= p_effort_start
4846 and
4847 ppf.effective_start_date <= p_effort_end and
4848 ppf.effective_end_date >= p_effort_start
4849 AND include_exclude_flag='I'
4850 AND ppf.person_type_id = TO_NUMBER(prtd.criteria_value1)
4851 AND prtd.request_id = p_request_id
4852 AND ppf.person_id = pspt.person_id );
4853 ELSIF template_sel_criteria.array_sel_criteria(i) = 'EMP' THEN
4854 DELETE FROM psp_selected_persons_t pspt
4855 WHERE request_id = p_request_id
4856 /* Bug 5087294 : Performance fix replacing not in with not exists */
4857 -- AND person_id NOT IN (SELECT NVL(person_id,0)
4858 AND NOT EXISTS ( SELECT 1
4859 FROM per_all_people_f ppf, per_assignments_f paf
4860 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
4861 FROM psp_report_template_details_h prtd
4862 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4863 AND criteria_lookup_code='EMP'
4864 AND include_exclude_flag='I'
4865 AND prtd.request_id = p_request_id)
4866 AND paf.person_id = ppf.person_id
4867 AND paf.assignment_type = 'E'
4868 AND paf.effective_start_date <= p_effort_end
4869 AND paf.effective_end_date >= p_effort_start
4870 AND ppf.effective_start_date <= p_effort_end
4871 AND ppf.effective_end_date >= p_effort_start
4872 AND ppf.person_id = pspt.person_id );
4873 ELSIF template_sel_criteria.array_sel_criteria(i) ='SUP' THEN
4874 DELETE FROM psp_selected_persons_t pspt
4875 WHERE request_id = p_request_id
4876 /* Bug 5087294 : Performance fix replacing not in with not exists */
4877 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
4878 AND NOT EXISTS ( SELECT 1
4879 FROM per_all_assignments_f paf,
4880 psp_report_template_details_h prtd
4881 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
4882 AND criteria_lookup_code='SUP'
4883 AND include_exclude_flag='I'
4884 AND paf.supervisor_id = TO_NUMBER(prtd.criteria_value1)
4885 AND prtd.request_id = p_request_id
4886 AND paf.assignment_type = 'E'
4887 AND paf.effective_start_date <= p_effort_end
4888 AND effective_end_date >= p_effort_start
4889 AND paf.assignment_id = pspt.assignment_id );
4890 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AWD' THEN
4891 DELETE FROM psp_selected_persons_t
4892 WHERE request_id = p_request_id
4893 AND assignment_id NOT IN (SELECT psl.assignment_id
4894 FROM psp_summary_lines psl,
4895 psp_report_template_details_h prtd ,
4896 per_time_periods ptp
4897 WHERE
4898 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4899 AND prtd.criteria_lookup_code='AWD'
4900 AND prtd.include_exclude_flag='I'
4901 AND prtd.request_id =p_request_id
4902 and psl.award_id = TO_NUMBER(prtd.criteria_value1)
4903 AND psl.business_group_id = p_business_group_id
4904 AND psl.set_of_books_id = p_set_of_books_id
4905 AND psl.status_code= 'A'
4906 AND ptp.time_period_id = psl.time_period_id
4907 AND (ptp.start_date <= p_effort_end
4908 AND ptp.end_date >= p_effort_start)
4909 AND ( EXISTS (SELECT 1
4910 FROM psp_distribution_lines_history pdnh
4911 WHERE pdnh.summary_line_id = psl.summary_line_id
4912 AND pdnh.distribution_date BETWEEN p_effort_start
4913 AND p_effort_end
4914 AND pdnh.reversal_entry_flag IS NULL
4915 AND pdnh.adjustment_batch_name IS NULL)
4916 OR EXISTS (SELECT 1
4917 FROM psp_pre_gen_dist_lines_history ppg
4918 WHERE ppg.summary_line_id = psl.summary_line_id
4919 AND ppg.distribution_date BETWEEN p_effort_start
4920 AND p_effort_end
4921 AND ppg.adjustment_batch_name IS NULL
4922 AND ppg.reversal_entry_flag IS NULL)
4923 OR EXISTS (SELECT 1
4924 FROM psp_adjustment_lines_history palh
4925 WHERE palh.summary_line_id = psl.summary_line_id
4926 AND palh.distribution_date BETWEEN p_effort_start
4927 AND p_effort_end
4928 AND palh.adjustment_batch_name IS NULL
4929 AND palh.reversal_entry_flag IS NULL
4930 AND NVL(palh.original_line_flag, 'N') ='N')));
4931 ELSIF template_sel_criteria.array_sel_criteria(i) = 'ATY' THEN
4932 DELETE FROM psp_selected_persons_t
4933 WHERE request_id = p_request_id
4934 AND assignment_id NOT IN (SELECT NVL(psl.assignment_id,0)
4935 FROM psp_summary_lines psl,
4936 psp_report_template_details_h prtd,
4937 gms_awards_all gaa,
4938 per_time_periods ptp
4939 WHERE psl.award_id = gaa.award_id
4940 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4941 AND prtd.criteria_lookup_code='ATY'
4942 AND prtd.include_exclude_flag='I'
4943 AND prtd.request_id =p_request_id
4944 AND gaa.type=prtd.criteria_value1
4945 AND psl.business_group_id = p_business_group_id
4946 AND psl.set_of_books_id = p_set_of_books_id
4947 AND psl.status_code= 'A'
4948 AND ptp.time_period_id = psl.time_period_id
4949 AND (ptp.start_date <= p_effort_end
4950 AND ptp.end_date >= p_effort_start)
4951 AND ( EXISTS (SELECT 1
4952 FROM psp_distribution_lines_history pdnh
4953 WHERE pdnh.summary_line_id = psl.summary_line_id
4954 AND pdnh.distribution_date BETWEEN p_effort_start
4955 AND p_effort_end
4956 AND pdnh.reversal_entry_flag IS NULL
4957 AND pdnh.adjustment_batch_name IS NULL)
4958 OR EXISTS (SELECT 1
4959 FROM psp_pre_gen_dist_lines_history ppg
4960 WHERE ppg.summary_line_id = psl.summary_line_id
4961 AND ppg.distribution_date BETWEEN p_effort_start
4962 AND p_effort_end
4963 AND ppg.adjustment_batch_name IS NULL
4964 AND ppg.reversal_entry_flag IS NULL)
4965 OR EXISTS (SELECT 1
4966 FROM psp_adjustment_lines_history palh
4967 WHERE palh.summary_line_id = psl.summary_line_id
4968 AND palh.distribution_date BETWEEN p_effort_start
4969 AND p_effort_end
4970 AND palh.adjustment_batch_name IS NULL
4971 AND palh.reversal_entry_flag IS NULL
4972 AND NVL(palh.original_line_flag, 'N') ='N')));
4973 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRT' THEN
4974 DELETE FROM psp_selected_persons_t
4975 WHERE request_id = p_request_id
4976 AND assignment_id NOT IN (SELECT NVL(psl.assignment_id,0)
4977 FROM psp_summary_lines psl,
4978 psp_report_template_details_h prtd,
4979 pa_projects_all ppa,
4980 per_time_periods ptp
4981 WHERE psl.project_id = ppa.project_id
4982 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
4983 AND prtd.criteria_lookup_code='PRT'
4984 AND prtd.include_exclude_flag='I'
4985 AND prtd.request_id =p_request_id
4986 AND ppa.project_type=prtd.criteria_value1
4987 AND psl.business_group_id = p_business_group_id
4988 AND psl.set_of_books_id = p_set_of_books_id
4989 AND psl.status_code= 'A'
4990 AND ptp.time_period_id = psl.time_period_id
4991 AND (ptp.start_date <= p_effort_end
4992 AND ptp.end_date >= p_effort_start)
4993 AND ( EXISTS (SELECT 1
4994 FROM psp_distribution_lines_history pdnh
4995 WHERE pdnh.summary_line_id = psl.summary_line_id
4996 AND pdnh.distribution_date BETWEEN p_effort_start
4997 AND p_effort_end
4998 AND pdnh.reversal_entry_flag IS NULL
4999 AND pdnh.adjustment_batch_name IS NULL)
5000 OR EXISTS (SELECT 1
5001 FROM psp_pre_gen_dist_lines_history ppg
5002 WHERE ppg.summary_line_id = psl.summary_line_id
5003 AND ppg.distribution_date BETWEEN p_effort_start
5004 AND p_effort_end
5005 AND ppg.adjustment_batch_name IS NULL
5006 AND ppg.reversal_entry_flag IS NULL)
5007 OR EXISTS (SELECT 1
5008 FROM psp_adjustment_lines_history palh
5009 WHERE palh.summary_line_id = psl.summary_line_id
5010 AND palh.distribution_date BETWEEN p_effort_start
5011 AND p_effort_end
5012 AND palh.adjustment_batch_name IS NULL
5013 AND palh.reversal_entry_flag IS NULL
5014 AND NVL(palh.original_line_flag, 'N') ='N')));
5015 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRJ' THEN
5016 DELETE FROM psp_selected_persons_t
5017 WHERE request_id = p_request_id
5018 AND assignment_id NOT IN (SELECT NVL(psl.assignment_id ,0)
5019 FROM psp_summary_lines psl,
5020 psp_report_template_details_h prtd ,
5021 per_time_periods ptp
5022 WHERE
5023 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5024 AND prtd.criteria_lookup_code='PRJ'
5025 AND prtd.include_exclude_flag='I'
5026 AND prtd.request_id =p_request_id
5027 and psl.project_id = TO_NUMBER(prtd.criteria_value1)
5028 AND psl.business_group_id = p_business_group_id
5029 AND psl.set_of_books_id = p_set_of_books_id
5030 AND psl.status_code= 'A'
5031 AND ptp.time_period_id = psl.time_period_id
5032 AND (ptp.start_date <= p_effort_end
5033 AND ptp.end_date >= p_effort_start)
5034 AND ( EXISTS (SELECT 1
5035 FROM psp_distribution_lines_history pdnh
5036 WHERE pdnh.summary_line_id = psl.summary_line_id
5037 AND pdnh.distribution_date BETWEEN p_effort_start
5038 AND p_effort_end
5039 AND pdnh.reversal_entry_flag IS NULL
5040 AND pdnh.adjustment_batch_name IS NULL )
5041 OR EXISTS (SELECT 1
5042 FROM psp_pre_gen_dist_lines_history ppg
5043 WHERE ppg.summary_line_id = psl.summary_line_id
5044 AND ppg.distribution_date BETWEEN p_effort_start
5045 AND p_effort_end
5046 AND ppg.adjustment_batch_name IS NULL
5047 AND ppg.reversal_entry_flag IS NULL)
5048 OR EXISTS (SELECT 1
5049 FROM psp_adjustment_lines_history palh
5050 WHERE palh.summary_line_id = psl.summary_line_id
5051 AND palh.distribution_date BETWEEN p_effort_start
5052 AND p_effort_end
5053 AND palh.adjustment_batch_name IS NULL
5054 AND palh.reversal_entry_flag IS NULL
5055 AND NVL(palh.original_line_flag, 'N') ='N')));
5056 ELSIF template_sel_criteria.array_sel_criteria(i) ='PAY' THEN
5057 DELETE FROM psp_selected_persons_t pspt
5058 WHERE request_id = p_request_id
5059 /* Bug 5087294 : Performance fix replacing not in with not exists */
5060 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5061 AND NOT EXISTS ( SELECT 1
5062 FROM per_assignments_f paf,
5063 psp_report_template_details_h prtd
5064 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5065 AND criteria_lookup_code='PAY'
5066 AND include_exclude_flag='I'
5067 AND paf.assignment_type = 'E'
5068 and
5069 effective_start_date <= p_effort_end and
5070 effective_end_date >= p_effort_start
5071 AND paf.payroll_id = TO_NUMBER(prtd.criteria_value1)
5072 AND prtd.request_id = p_request_id
5073 AND paf.assignment_id = pspt.assignment_id );
5074 ELSIF template_sel_criteria.array_sel_criteria(i) ='LOC' THEN
5075 DELETE FROM psp_selected_persons_t pspt
5076 WHERE request_id = p_request_id
5077 /* Bug 5087294 : Performance fix replacing not in with not exists */
5078 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5079 AND NOT EXISTS ( SELECT 1
5080 FROM per_assignments_f paf ,
5081 psp_report_template_details_h prtd
5082 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5083 AND criteria_lookup_code='LOC'
5084 AND paf.assignment_type = 'E'
5085 and
5086 effective_start_date <= p_effort_end and
5087 effective_end_date >= p_effort_start
5088 AND include_exclude_flag='I'
5089 AND paf.location_id = TO_NUMBER(prtd.criteria_value1)
5090 AND prtd.request_id = p_request_id
5091 AND paf.assignment_id = pspt.assignment_id);
5092 ELSIF template_sel_criteria.array_sel_criteria(i) ='ORG' THEN
5093 /* Bug 5087294 : Performance fix replacing not in with not exists */
5094 DELETE FROM psp_selected_persons_t pspt
5095 WHERE request_id = p_request_id
5096 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5097 AND NOT EXISTS ( SELECT 1
5098 FROM per_assignments_f paf ,
5099 psp_report_template_details_h prtd
5100 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5101 AND criteria_lookup_code='ORG'
5102 AND include_exclude_flag='I'
5103 AND paf.assignment_type = 'E'
5104 and effective_start_date <= p_effort_end and
5105 effective_end_date >= p_effort_start
5106 AND paf.organization_id = TO_NUMBER(prtd.criteria_value1)
5107 AND prtd.request_id = p_request_id
5108 AND paf.assignment_id = pspt.assignment_id );
5109
5110 ELSIF template_sel_criteria.array_sel_criteria(i)='CST' THEN
5111 DELETE FROM psp_selected_persons_t pspt
5112 WHERE request_id = p_request_id
5113 /* Bug 5087294 : Performance fix replacing not in with not exists */
5114 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5115 AND NOT EXISTS ( SELECT 1
5116 FROM per_assignments_f paf,
5117 pay_payrolls_f ppf
5118 WHERE ppf.payroll_id = paf.payroll_id
5119 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
5120 FROM psp_report_template_details_h prtd
5121 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5122 AND criteria_lookup_code='CST'
5123 AND include_exclude_flag='I'
5124 AND request_id = p_request_id)
5125 AND paf.assignment_type = 'E'
5126 AND ppf.effective_start_date <= p_effort_end
5127 AND ppf.effective_end_date >= p_effort_start
5128 AND paf.effective_start_date <= p_effort_end
5129 AND paf.effective_end_date >= p_effort_start
5130 AND paf.assignment_id = pspt.assignment_id );
5131 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AST' THEN
5132 DELETE FROM psp_selected_persons_t
5133 WHERE request_id = p_request_id
5134 AND assignment_id NOT IN (SELECT NVL(paf.assignment_id,0)
5135 FROM per_all_assignments_f paf,
5136 hr_assignment_sets has,
5137 hr_assignment_set_amendments hasa
5138 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
5139 FROM psp_report_template_details_h prtd
5140 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5141 AND criteria_lookup_code='AST'
5142 AND include_exclude_flag='I'
5143 AND request_id =p_request_id)
5144 AND ( (paf.payroll_id = has.payroll_id
5145 AND paf.assignment_type = 'E'
5146 AND paf.effective_start_date <= p_effort_end
5147 AND paf.effective_end_date >= p_effort_start
5148 AND has.assignment_set_id = hasa.assignment_set_id)
5149 OR (paf.assignment_id = hasa.assignment_id
5150 AND paf.assignment_type = 'E'
5151 AND paf.effective_start_date <= p_effort_end
5152 AND paf.effective_end_date >= p_effort_start
5153 AND hasa.assignment_set_id=has.assignment_set_id
5154 AND include_or_exclude ='I'))
5155 AND NOT EXISTS (SELECT assignment_id
5156 FROM hr_assignment_set_amendments hasa
5157 WHERE hasa.assignment_id = paf.assignment_id
5158 AND paf.assignment_type = 'E'
5159 AND hasa.include_or_exclude ='E'
5160 AND paf.effective_start_date <= p_effort_end
5161 AND paf.effective_end_date >= p_effort_start));
5162 ELSIF template_sel_criteria.array_sel_criteria(i) = 'JOB' THEN
5163 DELETE FROM psp_selected_persons_t pspt
5164 WHERE request_id = p_request_id
5165 /* Bug 5087294 : Performance fix replacing not in with not exists */
5166 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5167 AND NOT EXISTS ( SELECT 1
5168 FROM per_assignments_f paf ,
5169 psp_report_template_details_h prtd
5170 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5171 AND criteria_lookup_code='JOB'
5172 AND include_exclude_flag='I'
5173 AND paf.assignment_type = 'E'
5174 and
5175 effective_start_date <= p_effort_end and
5176 effective_end_date >= p_effort_start
5177 AND paf.job_id = TO_NUMBER(prtd.criteria_value1)
5178 AND prtd.request_id = p_request_id
5179 AND paf.assignment_id = pspt.assignment_id);
5180 ELSIF template_sel_criteria.array_sel_criteria(i) ='POS' THEN
5181 DELETE FROM psp_selected_persons_t pspt
5182 WHERE request_id = p_request_id
5183 /* Bug 5087294 : Performance fix replacing not in with not exists */
5184 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5185 AND NOT EXISTS ( SELECT 1
5186 FROM per_assignments_f paf ,
5187 psp_report_template_details_h prtd
5188 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5189 AND criteria_lookup_code='POS'
5190 AND paf.assignment_type = 'E'
5191 and
5192 effective_start_date <= p_effort_end and
5193 effective_end_date >= p_effort_start
5194 AND include_exclude_flag='I'
5195 AND paf.position_id = TO_NUMBER(prtd.criteria_value1)
5196 AND prtd.request_id = p_request_id
5197 AND paf.assignment_id = pspt.assignment_id);
5198 ELSIF template_sel_criteria.array_sel_criteria(i) ='ASS' THEN
5199 DELETE FROM psp_selected_persons_t pspt
5200 WHERE request_id = p_request_id
5201 /* Bug 5087294 : Performance fix replacing not in with not exists */
5202 -- AND assignment_id NOT IN (SELECT NVL(assignment_id,0)
5203 AND NOT EXISTS ( SELECT 1
5204 FROM per_assignments_f paf ,
5205 psp_report_template_details_h prtd
5206 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5207 AND criteria_lookup_code='ASS'
5208 AND include_exclude_flag='I'
5209 AND paf.assignment_status_type_id = TO_NUMBER(prtd.criteria_value1)
5210 AND prtd.request_id = p_request_id
5211 AND paf.assignment_type = 'E'
5212 AND effective_start_date <= p_effort_end
5213 AND effective_end_date >= p_effort_start
5214 AND paf.assignment_id = pspt.assignment_id);
5215 ELSIF template_sel_criteria.array_sel_criteria(i)='PPG' THEN
5216 OPEN ppg_cursor;
5217 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
5218 IF l_criteria_value1 IS NOT NULL THEN
5219 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 ||'''' ;
5220
5221 LOOP
5222 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
5223 EXIT WHEN PPG_CURSOR%NOTFOUND;
5224
5225 g_exec_string := l_sql_string || ' OR '|| l_criteria_value1 ||
5226 ' = ' || '''' || l_criteria_value2||'''';
5227 l_sql_string:= g_exec_string;
5228 END LOOP;
5229 CLOSE ppg_cursor;
5230
5231 IF l_sql_string IS NOT NULL THEN
5232 g_exec_string := 'DELETE FROM psp_selected_persons_t sel
5233 WHERE request_id = :request_id
5234 AND NOT EXISTS (SELECT 1
5235 FROM per_assignments_f paf, pay_people_groups ppg
5236 WHERE paf.people_group_id= ppg.people_group_id
5237 AND paf.assignment_type = ''' || 'E' || '''
5238 AND paf.effective_end_date >= :p_effort_Start
5239 AND paf.effective_start_date <= :p_effort_end
5240 AND (' || l_sql_string || ')
5241 AND paf.assignment_id = sel.assignment_id )';
5242
5243 EXECUTE IMMEDIATE g_exec_string USING IN p_request_id,
5244 p_Effort_start, p_effort_end;
5245 END IF;
5246 END IF;
5247 ELSIF template_sel_criteria.array_sel_criteria(i)='GLA' THEN
5248 OPEN gla_cursor;
5249 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
5250 IF l_criteria_value1 IS NOT NULL THEN
5251 l_sql_string := l_criteria_value1 ||' BETWEEN '|| ''''||
5252 l_criteria_value2 || '''' || ' AND ' || '''' ||
5253 l_criteria_value3 || '''';
5254 LOOP
5255 FETCH GLA_CURSOR INTO l_criteria_value1, l_criteria_value2,
5256 l_criteria_value3;
5257 EXIT WHEN GLA_CURSOR%NOTFOUND;
5258
5259 g_exec_string:= l_sql_string || ' OR ' || l_criteria_value1 ||
5260 ' BETWEEN ' || ''''|| l_criteria_value2 || '''' ||
5261 ' AND ' || ''''|| l_criteria_value3 || '''' ;
5262 l_sql_string:=g_exec_string;
5263 END LOOP;
5264 CLOSE gla_cursor;
5265
5266 IF l_sql_string IS NOT NULL THEN
5267 g_exec_string := 'DELETE FROM psp_selected_persons_t
5268 WHERE assignment_id NOT IN (SELECT NVL(psl.assignment_id,0)
5269 FROM psp_summary_lines psl, psp_distribution_lines_history pdnh,
5270 psp_adjustment_lines_history palh,
5271 psp_pre_gen_dist_lines_history ppg, gl_code_combinations gcc
5272 WHERE gcc.code_combination_id= psl.gl_code_combination_id
5273 AND psl.business_group_id = '|| p_business_group_id || '
5274 AND psl.set_of_books_id = ' || p_set_of_books_id || '
5275 AND psl.summary_line_id = pdnh.summary_line_id(+)
5276 AND psl.summary_line_id = ppg.summary_line_id(+)
5277 AND psl.summary_line_id = palh.summary_line_id(+)
5278 AND psl.status_code='||''''||'A'||''''||'
5279 AND ( (psl.source_type IN ('||''''||'N'||''''||' ,'|| ''''|| 'O'||''''||')
5280 AND pdnh.distribution_date BETWEEN
5281 :p_effort_start AND :p_effort_end
5282 AND pdnh.reversal_entry_flag IS NULL
5283 AND psl.summary_line_id = pdnh.summary_line_id
5284 AND pdnh.adjustment_batch_name IS NULL)
5285 OR (psl.source_type='||''''||'P'||''''||'
5286 AND ppg.distribution_date BETWEEN :p_effort_start AND :p_effort_end
5287 AND ppg.adjustment_batch_name IS NULL
5288 AND ppg.summary_line_id =psl.summary_line_id
5289 AND ppg.reversal_entry_flag IS NULL)
5290 OR (psl.source_type='||''''||'A'||''''||'
5291 AND palh.summary_line_id =psl.summary_line_id
5292 AND palh.adjustment_batch_name IS NULL
5293 AND NVL(palh.original_line_flag, ' || ''''||
5294 'N' || ''''|| ') = '||''''|| 'N' || '''' || '
5295 AND palh.distribution_date BETWEEN
5296 :p_effort_start AND :p_effort_end))
5297 AND gcc.code_combination_id= psl.gl_code_combination_id
5298 AND gcc.code_combination_id IN (SELECT code_combination_id
5299 FROM gl_code_combinations
5300 WHERE ' || l_sql_string || ' ))
5301 AND request_id = :request_id';
5302
5303 EXECUTE IMMEDIATE g_exec_string USING IN p_effort_start,
5304 p_effort_end , p_effort_start, p_effort_end,
5305 p_effort_start, p_effort_end, p_request_id;
5306 END IF;
5307 END IF;
5308 END IF;
5309 END IF;
5310 END IF;
5311 END LOOP;
5312 END prune_initial_asg_list;
5313
5314 PROCEDURE APPLY_ASG_EXCLUSION_CRITERIA (p_request_id IN NUMBER,
5315 p_effort_start IN DATE,
5316 p_effort_end IN DATE,
5317 p_business_group_id IN NUMBER,
5318 p_set_of_books_id IN NUMBER) IS
5319 CURSOR PPG_CURSOR IS
5320 SELECT criteria_value1, criteria_value2
5321 FROM psp_report_template_details_h
5322 WHERE request_id = p_request_id
5323 AND criteria_lookup_type= 'PSP_SELECTION_CRITERIA'
5324 AND criteria_lookup_code='PPG'
5325 AND include_exclude_flag='E';
5326
5327 CURSOR GLA_CURSOR IS
5328 SELECT criteria_value1, criteria_value2, criteria_value3
5329 FROM psp_report_template_details_h
5330 WHERE request_id = p_request_id
5331 AND criteria_lookup_type ='PSP_SELECTION_CRITERIA'
5332 AND criteria_lookup_code ='GLA'
5333 AND include_exclude_flag='E';
5334
5335 TYPE t_varchar_30_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
5336 TYPE t_varchar_1_type IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
5337
5338 l_criteria_value1 VARCHAR2(30);
5339 l_criteria_value2 VARCHAR2(30);
5340 l_criteria_value3 VARCHAR2(30);
5341 l_sql_string VARCHAR2(1000);
5342 BEGIN
5343 FOR i IN 1..template_sel_criteria.array_sel_criteria.COUNT
5344 LOOP
5345 IF template_sel_criteria.array_inc_exc_flag(i) = 'E' THEN
5346 IF template_sel_criteria.array_sel_criteria(i) = 'PTY' THEN
5347 DELETE FROM psp_selected_persons_t
5348 WHERE request_id = p_request_id
5349 AND person_id IN (SELECT ppf.person_id
5350 FROM per_people_f ppf,
5351 psp_report_template_details_h prtd,
5352 per_assignments_f paf
5353 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5354 AND criteria_lookup_code='PTY'
5355 AND paf.person_id = ppf.person_id
5356 AND paf.assignment_type = 'E'
5357 AND paf.effective_start_date <= p_effort_end
5358 AND paf.effective_end_date >= p_effort_start
5359 and
5360 ppf.effective_start_date <= p_effort_end and
5361 ppf.effective_end_date >= p_effort_start
5362 AND include_exclude_flag='E'
5363 AND ppf.person_type_id = TO_NUMBER(prtd.criteria_value1)
5364 AND prtd.request_id = p_request_id);
5365 ELSIF template_sel_criteria.array_sel_criteria(i) = 'EMP' THEN
5366 DELETE FROM psp_selected_persons_t
5367 WHERE request_id = p_request_id
5368 AND person_id IN (SELECT DISTINCT ppf.person_id
5369 FROM per_all_people_f ppf, per_assignments_f paf
5370 WHERE ppf.person_id IN (SELECT TO_NUMBER(criteria_value1)
5371 FROM psp_report_template_details_h prtd
5372 WHERE prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5373 AND criteria_lookup_code='EMP'
5374 AND include_exclude_flag='E'
5375 AND prtd.request_id = p_request_id)
5376 AND paf.person_id = ppf.person_id
5377 AND paf.assignment_type = 'E'
5378 AND paf.effective_start_date <= p_effort_end
5379 AND paf.effective_end_date >= p_effort_start
5380 AND ppf.effective_start_date <= p_effort_end
5381 AND ppf.effective_end_date >= p_effort_start);
5382 ELSIF template_sel_criteria.array_sel_criteria(i) ='SUP' THEN
5383 DELETE FROM psp_selected_persons_t
5384 WHERE request_id = p_request_id
5385 AND assignment_id IN (SELECT NVL(assignment_id,0)
5386 FROM per_all_assignments_f paf,
5387 psp_report_template_details_h prtd
5388 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5389 AND criteria_lookup_code='SUP'
5390 AND include_exclude_flag='E'
5391 AND paf.supervisor_id = TO_NUMBER(prtd.criteria_value1)
5392 AND prtd.request_id = p_request_id
5393 AND paf.assignment_type = 'E'
5394 AND paf.effective_start_date <= p_effort_end
5395 AND paf.effective_end_date >= p_effort_start);
5396 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AWD' THEN
5397 DELETE FROM psp_selected_persons_t
5398 WHERE request_id = p_request_id
5399 AND assignment_id IN (SELECT psl.assignment_id
5400 FROM psp_summary_lines psl,
5401 psp_report_template_details_h prtd,
5402 per_time_periods ptp
5403 WHERE
5404 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5405 AND prtd.criteria_lookup_code='AWD'
5406 AND prtd.include_exclude_flag='E'
5407 AND prtd.request_id =p_request_id
5408 and psl.award_id = TO_NUMBER(prtd.criteria_value1)
5409 AND psl.business_group_id = p_business_group_id
5410 AND psl.set_of_books_id = p_set_of_books_id
5411 AND psl.status_code= 'A'
5412 AND ptp.time_period_id = psl.time_period_id
5413 AND (ptp.start_date <= p_effort_end
5414 AND ptp.end_date >= p_effort_start)
5415 AND ( EXISTS (SELECT 1
5416 FROM psp_distribution_lines_history pdnh
5417 WHERE pdnh.summary_line_id = psl.summary_line_id
5418 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
5419 AND pdnh.reversal_entry_flag IS NULL
5420 AND pdnh.adjustment_batch_name IS NULL)
5421 OR EXISTS (SELECT 1
5422 FROM psp_pre_gen_dist_lines_history ppg
5423 WHERE ppg.summary_line_id = psl.summary_line_id
5424 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
5425 AND ppg.adjustment_batch_name IS NULL
5426 AND ppg.reversal_entry_flag IS NULL)
5427 OR EXISTS (SELECT 1
5428 FROM psp_adjustment_lines_history palh
5429 WHERE palh.summary_line_id = psl.summary_line_id
5430 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
5431 AND palh.adjustment_batch_name IS NULL
5432 AND palh.reversal_entry_flag IS NULL
5433 AND NVL(palh.original_line_flag, 'N') ='N')));
5434 ELSIF template_sel_criteria.array_sel_criteria(i) = 'ATY' THEN
5435 DELETE FROM psp_selected_persons_t
5436 WHERE request_id = p_request_id
5437 AND assignment_id IN (SELECT NVL(psl.assignment_id,0)
5438 FROM psp_summary_lines psl,
5439 psp_report_template_details_h prtd,
5440 gms_awards_all gaa,
5441 per_time_periods ptp
5442 WHERE psl.award_id = gaa.award_id
5443 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5444 AND prtd.criteria_lookup_code='ATY'
5445 AND prtd.include_exclude_flag='E'
5446 AND prtd.request_id =p_request_id
5447 AND gaa.type=prtd.criteria_value1
5448 AND psl.business_group_id = p_business_group_id
5449 AND psl.set_of_books_id = p_set_of_books_id
5450 AND psl.status_code= 'A'
5451 AND ptp.time_period_id = psl.time_period_id
5452 AND (ptp.start_date <= p_effort_end
5453 AND ptp.end_date >= p_effort_start)
5454 AND ( EXISTS (SELECT 1
5455 FROM psp_distribution_lines_history pdnh
5456 WHERE pdnh.summary_line_id = psl.summary_line_id
5457 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
5458 AND pdnh.reversal_entry_flag IS NULL
5459 AND pdnh.adjustment_batch_name IS NULL)
5460 OR EXISTS (SELECT 1
5461 FROM psp_pre_gen_dist_lines_history ppg
5462 WHERE ppg.summary_line_id = psl.summary_line_id
5463 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
5464 AND ppg.adjustment_batch_name IS NULL
5465 AND ppg.reversal_entry_flag IS NULL)
5466 OR EXISTS (SELECT 1
5467 FROM psp_adjustment_lines_history palh
5468 WHERE palh.summary_line_id = psl.summary_line_id
5469 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
5470 AND palh.adjustment_batch_name IS NULL
5471 AND palh.reversal_entry_flag IS NULL
5472 AND NVL(palh.original_line_flag, 'N') ='N')));
5473 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRT' THEN
5474 DELETE FROM psp_selected_persons_t
5475 WHERE request_id = p_request_id
5476 AND assignment_id IN (SELECT NVL(psl.assignment_id,0)
5477 FROM psp_summary_lines psl,
5478 psp_report_template_details_h prtd,
5479 pa_projects_all ppa,
5480 per_time_periods ptp
5481 WHERE psl.project_id = ppa.project_id
5482 AND prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5483 AND prtd.criteria_lookup_code='PRT'
5484 AND prtd.include_exclude_flag='E'
5485 AND prtd.request_id =p_request_id
5486 AND ppa.project_type=prtd.criteria_value1
5487 AND psl.business_group_id = p_business_group_id
5488 AND psl.set_of_books_id = p_set_of_books_id
5489 AND psl.status_code= 'A'
5490 AND ptp.time_period_id = psl.time_period_id
5491 AND (ptp.start_date <= p_effort_end
5492 AND ptp.end_date >= p_effort_start)
5493 AND ( EXISTS (SELECT 1
5494 FROM psp_distribution_lines_history pdnh
5495 WHERE pdnh.summary_line_id = psl.summary_line_id
5496 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
5497 AND pdnh.reversal_entry_flag IS NULL
5498 AND pdnh.adjustment_batch_name IS NULL)
5499 OR EXISTS (SELECT 1
5500 FROM psp_pre_gen_dist_lines_history ppg
5501 WHERE ppg.summary_line_id = psl.summary_line_id
5502 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
5503 AND ppg.adjustment_batch_name IS NULL
5504 AND ppg.reversal_entry_flag IS NULL)
5505 OR EXISTS (SELECT 1
5506 FROM psp_adjustment_lines_history palh
5507 WHERE palh.summary_line_id = psl.summary_line_id
5508 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
5509 AND palh.adjustment_batch_name IS NULL
5510 AND palh.reversal_entry_flag IS NULL
5511 AND NVL(palh.original_line_flag, 'N') ='N')));
5512 ELSIF template_sel_criteria.array_sel_criteria(i) ='PRJ' THEN
5513 DELETE FROM psp_selected_persons_t
5514 WHERE request_id = p_request_id
5515 AND assignment_id IN (SELECT NVL(psl.assignment_id,0)
5516 FROM psp_summary_lines psl,
5517 psp_report_template_details_h prtd,
5518 per_time_periods ptp
5519 WHERE
5520 prtd.criteria_lookup_type='PSP_SELECTION_CRITERIA'
5521 AND prtd.criteria_lookup_code='PRJ'
5522 AND prtd.include_exclude_flag='E'
5523 AND prtd.request_id =p_request_id
5524 and psl.project_id = TO_NUMBER(prtd.criteria_value1)
5525 AND psl.business_group_id = p_business_group_id
5526 AND psl.set_of_books_id = p_set_of_books_id
5527 AND psl.status_code= 'A'
5528 AND ptp.time_period_id = psl.time_period_id
5529 AND (ptp.start_date <= p_effort_end
5530 AND ptp.end_date >= p_effort_start)
5531 AND ( EXISTS (SELECT 1
5532 FROM psp_distribution_lines_history pdnh
5533 WHERE pdnh.summary_line_id = psl.summary_line_id
5534 AND pdnh.distribution_date BETWEEN p_effort_start AND p_effort_end
5535 AND pdnh.reversal_entry_flag IS NULL
5536 AND pdnh.adjustment_batch_name IS NULL)
5537 OR EXISTS (SELECT 1
5538 FROM psp_pre_gen_dist_lines_history ppg
5539 WHERE ppg.summary_line_id = psl.summary_line_id
5540 AND ppg.distribution_date BETWEEN p_effort_start AND p_effort_end
5541 AND ppg.adjustment_batch_name IS NULL
5542 AND ppg.reversal_entry_flag IS NULL)
5543 OR EXISTS (SELECT 1
5544 FROM psp_adjustment_lines_history palh
5545 WHERE palh.summary_line_id = psl.summary_line_id
5546 AND palh.distribution_date BETWEEN p_effort_start AND p_effort_end
5547 AND palh.adjustment_batch_name IS NULL
5548 AND palh.reversal_entry_flag IS NULL
5549 AND NVL(palh.original_line_flag, 'N') ='N')));
5550 ELSIF template_sel_criteria.array_sel_criteria(i) ='PAY' THEN
5551 DELETE FROM psp_selected_persons_t
5552 WHERE request_id = p_request_id
5553 AND assignment_id IN (SELECT assignment_id
5554 FROM per_assignments_f paf,
5555 psp_report_template_details_h prtd
5556 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5557 AND criteria_lookup_code='PAY'
5558 AND include_exclude_flag='E'
5559 AND paf.assignment_type = 'E'
5560 and effective_start_date <= p_effort_end and
5561 effective_end_date >= p_effort_start
5562 AND paf.payroll_id = TO_NUMBER(prtd.criteria_value1)
5563 AND prtd.request_id = p_request_id);
5564 ELSIF template_sel_criteria.array_sel_criteria(i) ='LOC' THEN
5565 DELETE FROM psp_selected_persons_t
5566 WHERE request_id = p_request_id
5567 AND assignment_id IN (SELECT assignment_id
5568 FROM per_assignments_f paf,
5569 psp_report_template_details_h prtd
5570 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5571 AND criteria_lookup_code='LOC'
5572 AND include_exclude_flag='E'
5573 AND paf.assignment_type = 'E'
5574 and effective_start_date <= p_effort_end and
5575 effective_end_date >= p_effort_start
5576 AND paf.location_id = TO_NUMBER(prtd.criteria_value1)
5577 AND prtd.request_id = p_request_id);
5578 ELSIF template_sel_criteria.array_sel_criteria(i) ='ORG' THEN
5579 DELETE FROM psp_selected_persons_t
5580 WHERE request_id = p_request_id
5581 AND assignment_id IN (SELECT assignment_id
5582 FROM per_assignments_f paf,
5583 psp_report_template_details_h prtd
5584 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5585 AND criteria_lookup_code='ORG'
5586 AND include_exclude_flag='E'
5587 AND paf.assignment_type = 'E'
5588 and effective_start_date <= p_effort_end and
5589 effective_end_date >= p_effort_start
5590 AND paf.organization_id = TO_NUMBER(prtd.criteria_value1)
5591 AND prtd.request_id = p_request_id);
5592 ELSIF template_sel_criteria.array_sel_criteria(i) = 'JOB' THEN
5593 DELETE FROM psp_selected_persons_t
5594 WHERE request_id = p_request_id
5595 AND assignment_id IN (SELECT assignment_id
5596 FROM per_assignments_f paf,
5597 psp_report_template_details_h prtd
5598 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5599 AND criteria_lookup_code='JOB'
5600 AND include_exclude_flag='E'
5601 AND paf.assignment_type = 'E'
5602 and effective_start_date <= p_effort_end and
5603 effective_end_date >= p_effort_start
5604 AND paf.job_id = TO_NUMBER(prtd.criteria_value1)
5605 AND prtd.request_id = p_request_id);
5606 ELSIF template_sel_criteria.array_sel_criteria(i) ='POS' THEN
5607 DELETE FROM psp_selected_persons_t
5608 WHERE request_id = p_request_id
5609 AND assignment_id IN (SELECT assignment_id
5610 FROM per_assignments_f paf,
5611 psp_report_template_details_h prtd
5612 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5613 AND criteria_lookup_code='POS'
5614 AND include_exclude_flag='E'
5615 AND paf.assignment_type = 'E'
5616 and effective_start_date <= p_effort_end and
5617 effective_end_date >= p_effort_start
5618 AND paf.position_id = TO_NUMBER(prtd.criteria_value1)
5619 AND prtd.request_id = p_request_id);
5620 ELSIF template_sel_criteria.array_sel_criteria(i) ='ASS' THEN
5621 DELETE FROM psp_selected_persons_t
5622 WHERE request_id = p_request_id
5623 AND assignment_id IN (SELECT assignment_id
5624 FROM per_assignments_f paf,
5625 psp_report_template_details_h prtd
5626 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5627 AND criteria_lookup_code='ASS'
5628 AND include_exclude_flag='E'
5629 AND paf.assignment_type = 'E'
5630 AND paf.assignment_status_type_id = TO_NUMBER(prtd.criteria_value1)
5631 AND prtd.request_id = p_request_id
5632 AND effective_start_date <= p_effort_end
5633 AND effective_end_date >= p_effort_start);
5634 ELSIF template_sel_criteria.array_sel_criteria(i)='CST' THEN
5635 DELETE FROM psp_selected_persons_t
5636 WHERE request_id = p_request_id
5637 AND assignment_id IN (SELECT NVL(assignment_id,0)
5638 FROM per_assignments_f paf,
5639 pay_payrolls_f ppf
5640 WHERE ppf.payroll_id = paf.payroll_id
5641 AND ppf.consolidation_set_id IN (SELECT TO_NUMBER(criteria_value1)
5642 FROM psp_report_template_details_h prtd
5643 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5644 AND criteria_lookup_code='CST'
5645 AND include_exclude_flag='E'
5646 AND request_id = p_request_id)
5647 AND paf.assignment_type = 'E'
5648 AND ppf.effective_start_date <= p_effort_end
5649 AND ppf.effective_end_date >= p_effort_start
5650 AND paf.effective_start_date <= p_effort_end
5651 AND paf.effective_end_date >= p_effort_start);
5652 ELSIF template_sel_criteria.array_sel_criteria(i) = 'AST' THEN
5653 DELETE FROM psp_selected_persons_t
5654 WHERE request_id = p_request_id
5655 AND assignment_id IN (SELECT NVL(paf.assignment_id,0)
5656 FROM per_all_assignments_f paf, hr_assignment_sets has,
5657 hr_assignment_set_amendments hasa
5658 WHERE has.assignment_set_id IN (SELECT TO_NUMBER(criteria_value1)
5659 FROM psp_report_template_details_h prtd
5660 WHERE criteria_lookup_type='PSP_SELECTION_CRITERIA'
5661 AND criteria_lookup_code='AST'
5662 AND include_exclude_flag='E'
5663 AND request_id =p_request_id)
5664 AND ( (paf.payroll_id = has.payroll_id
5665 AND paf.assignment_type = 'E'
5666 AND paf.effective_start_date <= p_effort_end
5667 AND paf.effective_end_date >= p_effort_start
5668 AND has.assignment_set_id = hasa.assignment_set_id)
5669 OR (paf.assignment_id = hasa.assignment_id
5670 AND paf.assignment_type = 'E'
5671 AND paf.effective_start_date <= p_effort_end
5672 AND paf.effective_end_date >= p_effort_start
5673 AND hasa.assignment_set_id=has.assignment_set_id
5674 AND include_or_exclude ='I'))
5675 AND NOT EXISTS (SELECT assignment_id
5676 FROM hr_assignment_set_amendments hasa
5677 WHERE hasa.assignment_id = paf.assignment_id
5678 AND paf.assignment_type = 'E'
5679 AND hasa.include_or_exclude ='E'
5680 AND paf.effective_start_date <= p_effort_end
5681 AND paf.effective_end_date >= p_effort_start));
5682 ELSIF template_sel_criteria.array_sel_criteria(i)='PPG' THEN
5683 OPEN ppg_cursor;
5684 FETCH PPG_CURSOR into l_criteria_value1, l_criteria_value2;
5685 IF l_criteria_value1 IS NOT NULL THEN
5686 l_sql_string := l_criteria_value1 ||' = '||''''|| l_criteria_value2 || '''' ;
5687
5688 LOOP
5689 FETCH PPG_CURSOR INTO l_criteria_value1, l_criteria_value2;
5690 EXIT WHEN PPG_CURSOR%NOTFOUND;
5691
5692 g_exec_string := l_sql_string || ' OR '|| l_criteria_value1 || ' = ' ||
5693 '''' || l_criteria_value2||'''';
5694 l_sql_string:= g_exec_string;
5695 END LOOP;
5696 CLOSE ppg_cursor;
5697
5698 IF l_sql_string IS NOT NULL THEN
5699 g_exec_string := 'DELETE FROM psp_selected_persons_t
5700 WHERE assignment_id IN (SELECT assignment_id
5701 FROM per_assignments_f paf,
5702 pay_people_groups ppg
5703 WHERE paf.people_group_id= ppg.people_group_id
5704 AND paf.assignment_type = ''' || 'E' || '''
5705 AND paf.effective_end_date >= :p_effort_Start
5706 AND paf.effective_start_date <= :p_effort_end
5707 AND ppg.people_group_id IN (SELECT people_group_id
5708 FROM pay_people_groups
5709 WHERE ' || l_sql_string || '))
5710 AND request_id = :request_id';
5711
5712 EXECUTE IMMEDIATE g_exec_string USING IN p_effort_start, p_effort_end,
5713 p_request_id;
5714 END IF;
5715 END IF;
5716 ELSIF template_sel_criteria.array_sel_criteria(i)='GLA' THEN
5717 OPEN gla_cursor;
5718 FETCH gla_cursor INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
5719 IF l_criteria_value1 IS NOT NULL THEN
5720 l_sql_string := l_criteria_value1 ||' BETWEEN '|| '''' || l_criteria_value2 ||
5721 '''' || ' AND ' || '''' || l_criteria_value3 || '''' ;
5722 LOOP
5723 FETCH gla_cursor INTO l_criteria_value1, l_criteria_value2, l_criteria_value3;
5724 EXIT WHEN gla_cursor%NOTFOUND;
5725
5726 g_exec_string:= l_sql_string || ' OR ' || l_criteria_value1 ||
5727 ' BETWEEN ' || ''''|| l_criteria_value2 || '''' ||
5728 ' AND ' || ''''|| l_criteria_value3 || '''' ;
5729 l_sql_string:= g_exec_string;
5730 END LOOP;
5731 CLOSE gla_cursor;
5732
5733 IF l_sql_string IS NOT NULL THEN
5734 g_exec_string := 'DELETE FROM psp_selected_persons_t
5735 WHERE assignment_id IN (SELECT NVL(psl.assignment_id,0)
5736 FROM psp_summary_lines psl,
5737 psp_distribution_lines_history pdnh,
5738 psp_adjustment_lines_history palh,
5739 psp_pre_gen_dist_lines_history ppg,
5740 gl_code_combinations gcc
5741 WHERE gcc.code_combination_id= psl.gl_code_combination_id
5742 AND psl.business_group_id = '|| p_business_group_id || '
5743 AND psl.set_of_books_id = ' || p_set_of_books_id || '
5744 AND psl.summary_line_id = pdnh.summary_line_id(+)
5745 AND psl.summary_line_id = ppg.summary_line_id(+)
5746 AND psl.summary_line_id = palh.summary_line_id(+)
5747 AND psl.status_code='||''''||'A'||''''||'
5748 AND ( (psl.source_type IN ('||''''||'N'||''''||
5749 ' ,'|| ''''|| 'O'||''''||')
5750 AND pdnh.distribution_date BETWEEN
5751 :p_effort_start AND :p_effort_end
5752 AND pdnh.reversal_entry_flag IS NULL
5753 AND psl.summary_line_id =pdnh.summary_line_id
5754 AND pdnh.adjustment_batch_name IS NULL)
5755 OR (psl.source_type= '||''''||'P'||''''||'
5756 AND ppg.distribution_date BETWEEN
5757 :p_effort_start AND :p_effort_end
5758 AND ppg.adjustment_batch_name IS NULL
5759 AND ppg.summary_line_id =psl.summary_line_id
5760 AND ppg.reversal_entry_flag IS NULL)
5761 OR (psl.source_type= '||''''||'A'||''''||'
5762 AND palh.summary_line_id =psl.summary_line_id
5763 AND palh.adjustment_batch_name IS NULL
5764 AND NVL(palh.original_line_flag, ' ||
5765 ''''|| 'N' || ''''|| ') = '||''''||
5766 'N' || '''' || '
5767 AND palh.distribution_date BETWEEN
5768 :p_effort_start AND :p_effort_end))
5769 AND gcc.code_combination_id= psl.gl_code_combination_id
5770 AND gcc.code_combination_id IN (SELECT code_combination_id
5771 FROM gl_code_combinations
5772 WHERE ' || l_sql_string || '))
5773 AND request_id = :request_id';
5774
5775 EXECUTE IMMEDIATE g_exec_string USING IN p_effort_start, p_effort_end,
5776 p_effort_start, p_effort_end, p_effort_start, p_effort_end, p_request_id;
5777 END IF;
5778 END IF;
5779 END IF;
5780 END IF;
5781 END LOOP;
5782 END APPLY_ASG_EXCLUSION_CRITERIA;
5783
5784 END;