[Home] [Help]
PACKAGE BODY: APPS.GHR_ELEMENT_API
Source
1 PACKAGE BODY ghr_element_api AS
2 /* $Header: ghelepkg.pkb 120.10 2007/08/08 11:47:12 managarw ship $ */
3 --
4 -- ---------------------------------------------------------------------------
5 -- |----------------------< retrieve_element_info >--------------------------|
6 -- ---------------------------------------------------------------------------
7 -- {Start of Comments}
8 --
9 -- Description:
10 -- Retrieve element info
11 --
12 -- Prerequisites:
13 --
14 -- In Parameters:
15 -- p_element_name
16 -- p_input_value_name
17 -- p_assignment_id
18 -- p_effective_date
19 -- p_processing_type
20 --
21 -- Out Parameters:
22 -- p_element_link_id
23 -- p_input_value_id
24 -- p_element_entry_id
25 -- p_value
26 -- p_object_version_number
27 -- p_multiple_error_flag
28 --
29 -- Post Success:
30 -- Processing nulls.
31 --
32 -- Post Failure:
33 -- An application error will be raised and processing is terminated.
34 --
35 -- Developer Implementation Notes:
36 -- None.
37 --
38 -- Access Status:
39 -- Internal Use Only.
40 --
41 -- {End of Comments}
42 -- ---------------------------------------------------------------------------
43 --
44 -- Procedure modified for Payroll Integration
45 --
46 -- PROCESS_SF52_ELEMENT passes old element name to this proc and this uses
47 -- return_new_element_name to pick new element.
48 -- The FETCH_ELEMENT_INFO_COR (history package) is being sent p_element_name
49 -- (old_element_name) as it has calls to return_new_element_name already.
50 --
51 procedure retrieve_element_info
52 (p_element_name in pay_element_types_f.element_name%type
53 ,p_input_value_name in pay_input_values_f.name%type
54 ,p_assignment_id in pay_element_entries_f.assignment_id%type
55 ,p_effective_date in date
56 ,p_processing_type in pay_element_types_f.processing_type%type
57 ,p_element_link_id out nocopy pay_element_links_f.element_link_id%type
58 ,p_input_value_id out nocopy pay_input_values_f.input_value_id%type
59 ,p_element_entry_id out nocopy pay_element_entries_f.element_entry_id%type
60 ,p_value out nocopy pay_element_entry_values_f.screen_entry_value%type
61 ,p_object_version_number
62 out nocopy pay_element_entries_f.object_version_number%type
63 ,p_multiple_error_flag out nocopy varchar2
64 ) is
65 --
66 l_proc varchar2(72) := g_package||'retrieve_element_info';
67 l_session ghr_history_api.g_session_var_type;
68 l_element_entry_id pay_element_entries_f.element_entry_id%type;
69
70 --
71
72
73 cursor c_rec_ele_info (ele_name in varchar2
74 ,input_name in varchar2
75 ,asg_id in number
76 ,eff_date in date
77 ,bg_id in number) is
78 select elt.multiple_entries_allowed_flag,
79 ipv.input_value_id,
80 ipv.uom,
81 eli.element_link_id,
82 ele.element_entry_id,
83 eev.screen_entry_value screen_entry_value,
84 ele.object_version_number
85 from pay_element_types_f elt,
86 pay_input_values_f ipv,
87 pay_element_links_f eli,
88 pay_element_entries_f ele,
89 pay_element_entry_values_f eev
90 where trunc(eff_date) between elt.effective_start_date
91 and elt.effective_end_date
92 and trunc(eff_date) between ipv.effective_start_date
93 and ipv.effective_end_date
94 and trunc(eff_date) between eli.effective_start_date
95 and eli.effective_end_date
96 and trunc(eff_date) between ele.effective_start_date
97 and ele.effective_end_date
98 and trunc(eff_date) between eev.effective_start_date
99 and eev.effective_end_date
100 and elt.element_type_id = ipv.element_type_id
101 and elt.element_type_id = eli.element_type_id + 0
102 and upper(elt.element_name) = upper(ele_name)
103 and ipv.input_value_id = eev.input_value_id
104 and ele.assignment_id = asg_id
105 and ele.element_entry_id + 0 = eev.element_entry_id
106 and ele.element_link_id = eli.element_link_id
107 and upper(ipv.name) = upper(input_name)
108 -- and NVL(elt.business_group_id,0) = NVL(ipv.business_group_id,0)
109 and (elt.business_group_id is null or elt.business_group_id = bg_id);
110 --
111 cursor c_nonrec_ele_info (ele_name in varchar2
112 ,input_name in varchar2
113 ,asg_id in number
114 ,eff_date in date
115 ,bg_id in number) is
116 select elt.multiple_entries_allowed_flag,
117 ipv.input_value_id,
118 ipv.uom,
119 eli.element_link_id,
120 ele.element_entry_id,
121 eev.screen_entry_value screen_entry_value,
122 ele.object_version_number
123 from pay_element_types_f elt,
124 pay_input_values_f ipv,
125 pay_element_links_f eli,
126 pay_element_entries_f ele,
127 pay_element_entry_values_f eev
128 where trunc(eff_date) between elt.effective_start_date
129 and elt.effective_end_date
130 and trunc(eff_date) between ipv.effective_start_date
131 and ipv.effective_end_date
132 and trunc(eff_date) between eli.effective_start_date
133 and eli.effective_end_date
134 and ele.effective_end_date =
135 (select max(ele2.effective_end_date)
136 from pay_element_entries_f ele2
137 where ele2.element_entry_id = ele.element_entry_id)
138 and eev.effective_end_date =
139 (select max(eev2.effective_end_date)
140 from pay_element_entries_f eev2
141 where eev2.element_entry_id = eev.element_entry_id)
142 and elt.element_type_id = ipv.element_type_id
143 and elt.element_type_id = eli.element_type_id + 0
144 and upper(elt.element_name) = upper(ele_name)
145 and ipv.input_value_id = eev.input_value_id
146 and ele.assignment_id = asg_id
147 and ele.element_entry_id + 0 = eev.element_entry_id
148 and ele.element_link_id = eli.element_link_id
149 and upper(ipv.name) = upper(input_name)
150 -- and NVL(elt.business_group_id,0) = NVL(ipv.business_group_id,0)
151 and (elt.business_group_id is null or elt.business_group_id = bg_id);
152
153 -- Bug#4486823 RRR Changes
154 cursor c_nonrec_incntv_ele_info (ele_name in varchar2
155 ,input_name in varchar2
156 ,asg_id in number
157 ,eff_date in date
158 ,bg_id in number) is
159 select elt.multiple_entries_allowed_flag,
160 ipv.input_value_id,
161 ipv.uom,
162 eli.element_link_id,
163 ele.element_entry_id,
164 eev.screen_entry_value screen_entry_value,
165 ele.object_version_number
166 from pay_element_types_f elt,
167 pay_input_values_f ipv,
168 pay_element_links_f eli,
169 pay_element_entries_f ele,
170 pay_element_entry_values_f eev
171 where trunc(eff_date) between elt.effective_start_date
172 and elt.effective_end_date
173 and trunc(eff_date) between ipv.effective_start_date
174 and ipv.effective_end_date
175 and trunc(eff_date) between eli.effective_start_date
176 and eli.effective_end_date
177 and trunc(eff_date) between ele.effective_start_date
178 and ele.effective_end_date
179 and trunc(eff_date) between eev.effective_start_date
180 and eev.effective_end_date
181 and elt.element_type_id = ipv.element_type_id
182 and elt.element_type_id = eli.element_type_id + 0
183 and upper(elt.element_name) = upper(ele_name)
184 and ipv.input_value_id = eev.input_value_id
185 and ele.assignment_id = asg_id
186 and ele.element_entry_id + 0 = eev.element_entry_id
187 and ele.element_link_id = eli.element_link_id
188 and upper(ipv.name) = upper(input_name)
189 -- and NVL(elt.business_group_id,0) = NVL(ipv.business_group_id,0)
190 and (elt.business_group_id is null or elt.business_group_id = bg_id);
191
192 cursor c_ele_ovn is
193 select object_version_number
194 from pay_element_entries_f
195 where element_entry_id = l_element_entry_id
196 and p_effective_date
197 between effective_start_date and effective_end_date;
198
199 l_uom varchar2(4);
200 Cursor Cur_bg(p_assignment_id NUMBER,p_eff_date DATE) is
201 Select distinct business_group_id bg
202 from per_assignments_f
203 where assignment_id = p_assignment_id
204 and p_eff_date between effective_start_date
205 and effective_end_date;
206 --
207 -- to pick pay basis from PAR
208 Cursor Cur_pay_basis is
209 Select from_pay_basis,to_pay_basis
210 From ghr_pa_requests
211 Where pa_request_id=l_session.pa_request_id;
212 -- Where employee_assignment_id=p_assignment_id;
213 -- and effective_date=p_eff_date;
214 ll_bg_id NUMBER;
215 ll_pay_basis VARCHAR2(80);
216 ll_effective_Date DATE;
217 l_new_element_name VARCHAR2(80);
218 --
219 begin
220 hr_utility.set_location('Entering:'||l_proc, 1);
221 -- Initialization
222 ghr_history_api.get_g_session_var(l_session);
223 ll_effective_date := p_effective_date;
224
225 -- Pick the business group id and also pay basis for later use
226 For BG_rec in Cur_BG(p_assignment_id,p_effective_date)
227 Loop
228 ll_bg_id:=BG_rec.bg;
229 End Loop;
230
231 -- Pick pay basis from PAR
232 IF (l_session.pa_request_id is NOT NULL) THEN
233 For Pay_basis in Cur_Pay_basis
234 Loop
235 If (pay_basis.from_pay_basis is NULL and
236 pay_basis.to_pay_basis is not NULL) then
237 ll_pay_basis:=pay_basis.to_pay_basis;
238
239 elsif (pay_basis.from_pay_basis is NOT NULL and
240 pay_basis.to_pay_basis is NULL) then
241 ll_pay_basis:=pay_basis.from_pay_basis;
242
243 elsif (pay_basis.from_pay_basis is NOT NULL and
244 pay_basis.to_pay_basis is NOT NULL) then
245 ll_pay_basis:=pay_basis.to_pay_basis;
246
247 elsif (pay_basis.from_pay_basis is NULL and
248 pay_basis.to_pay_basis is NULL) then
249 ll_pay_basis:='PA';
250
251 End If;
252 End Loop;
253
254 l_new_element_name := pqp_fedhr_uspay_int_utils.return_new_element_name(
255 p_fedhr_element_name => p_element_name,
256 p_business_group_id => ll_bg_id,
257 p_effective_date => ll_effective_date,
258 p_pay_basis => ll_pay_basis);
259
260 ELSIF (l_session.pa_request_id is NULL) THEN
261
262 IF (p_element_name = 'Basic Salary Rate'
263 and (fnd_profile.value('HR_USER_TYPE')='INT')) THEN
264 l_new_element_name :=
265 pqp_fedhr_uspay_int_utils.return_new_element_name(
266 p_assignment_id => p_assignment_id,
267 p_business_group_id => ll_bg_id,
268 p_effective_date => ll_effective_date);
269 ELSIF (fnd_profile.value('HR_USER_TYPE')<>'INT'
270 or (p_element_name <> 'Basic Salary Rate' and (fnd_profile.value('HR_USER_TYPE')='INT'))) THEN
271 l_new_element_name :=
272 pqp_fedhr_uspay_int_utils.return_new_element_name(
273 p_fedhr_element_name => p_element_name,
274 p_business_group_id => ll_bg_id,
275 p_effective_date => ll_effective_date,
276 p_pay_basis => NULL);
277
278 END IF;
279 END IF;
280
281 hr_utility.set_location(' New ELT in GHELEPKG'|| l_new_element_name,10);
282 --
283 -- the p_element_name is replaced with l_new_element_name
284 -- in further calls.
285 --
286
287 -- If it is a correction action, then we have to read the
288 -- element values from the history table to get the correct data
289 -- This is definitely required for a non-recurring element,because
290 -- the same element can repeat n number of times for the same pay period
291 --
292 If l_session.noa_id_correct is not null then
293 -- History package call fetch_element_entry_value picks new element name
294 -- again in its call so sending old element name.
295 ghr_history_fetch.fetch_element_info_cor
296 (p_element_name => p_element_name,
297 p_input_value_name => p_input_value_name,
298 p_assignment_id => p_assignment_id,
299 p_effective_date => p_effective_date,
300 p_element_link_id => p_element_link_id,
301 p_input_value_id => p_input_value_id,
302 p_element_entry_id => l_element_entry_id,
303 p_value => p_value,
304 p_object_version_number => p_object_version_number
305 );
306 p_element_entry_id := l_element_entry_id;
307
308 hr_utility.set_location('Find the uom ' ||l_proc, 2);
309 if p_processing_type = 'R' then -- Recurring element
310 hr_utility.set_location('Find the uom -- Recurring' ||l_proc, 3);
311 for c_rec_ele_info_rec in
312 c_rec_ele_info (l_new_element_name
313 ,p_input_value_name
314 ,p_assignment_id
315 ,p_effective_date
316 ,ll_bg_id) loop
317 l_uom := c_rec_ele_info_rec.uom;
318 if l_uom = 'D' then
319 p_value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_value));
320 end if;
321 exit;
322 end loop;
323 elsif p_processing_type = 'N' then -- Recurring element
324 hr_utility.set_location('Find the uom -- Non Recurring' ||l_proc, 4);
325 for c_nonrec_ele_info_rec in
326 c_nonrec_ele_info (l_new_element_name
327 ,p_input_value_name
328 ,p_assignment_id
329 ,p_effective_date
330 ,ll_bg_id)
331 loop
332 l_uom := c_nonrec_ele_info_rec.uom;
333 if l_uom = 'D' then
334 p_value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_value));
335 end if;
336 exit;
337 end loop;
338 end if;
339
340 Else
341 hr_utility.set_location(' NOT CORRECTION IN ELEPKG; PROCESS TYPE '||p_processing_type,15);
342 hr_utility.set_location(' Element Name ELEPKG ' ||l_new_element_name,1000);
343 hr_utility.set_location(' BG ID ELEPKG'|| nvl(to_char(ll_bg_id),'NULL'),2000);
344 hr_utility.set_location(' Eff date ELEPKG'|| p_effective_date ,3000);
345 hr_utility.set_location(' ASSGID IN ELEPKG ' || to_char(p_assignment_id),3500);
346 hr_utility.set_location(' INPUT VALUE name '|| p_input_value_name,4000);
347
348 if p_processing_type = 'R' then -- Recurring element
349 p_input_value_id := NULL;
350 p_element_entry_id := NULL;
351 p_value := NULL;
352 p_object_version_number := NULL;
353 for c_rec_ele_info_rec in
354 c_rec_ele_info (l_new_element_name
355 ,p_input_value_name
356 ,p_assignment_id
357 ,p_effective_date
358 ,ll_bg_id)
359 loop
360 hr_utility.set_location(' INSIDE ELE RECURRING ',20);
361 p_input_value_id := c_rec_ele_info_rec.input_value_id;
362 l_uom := c_rec_ele_info_rec.uom;
363 p_element_link_id := c_rec_ele_info_rec.element_link_id;
364 p_element_entry_id := c_rec_ele_info_rec.element_entry_id;
365 p_value := c_rec_ele_info_rec.screen_entry_value;
366 p_object_version_number := c_rec_ele_info_rec.object_version_number;
367 p_multiple_error_flag := c_rec_ele_info_rec.multiple_entries_allowed_flag;
368 if l_uom = 'D' then
369 p_value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_value));
370 end if;
371 exit;
372 end loop;
373 elsif p_processing_type = 'N' then -- Nonrecurring element
374 p_input_value_id := NULL;
375 p_element_entry_id := NULL;
376 p_value := NULL;
377 p_object_version_number := NULL;
378 hr_utility.set_location('Element Name : '||l_new_element_name,0);
379 IF l_new_element_name like '%Incentive%' AND
380 l_new_element_name not like 'Separation Incentive%' THEN
381 hr_utility.set_location('Inside Incentive Element',10);
382 for c_nonrec_incntv_ele_info_rec in
383 c_nonrec_incntv_ele_info (l_new_element_name
384 ,p_input_value_name
385 ,p_assignment_id
386 ,p_effective_date
387 ,ll_bg_id)
388 loop
389 p_input_value_id := c_nonrec_incntv_ele_info_rec.input_value_id;
390 l_uom := c_nonrec_incntv_ele_info_rec.uom;
391 p_element_link_id := c_nonrec_incntv_ele_info_rec.element_link_id;
392 p_element_entry_id := c_nonrec_incntv_ele_info_rec.element_entry_id;
393 p_value := c_nonrec_incntv_ele_info_rec.screen_entry_value;
394 p_object_version_number := c_nonrec_incntv_ele_info_rec.object_version_number;
395 p_multiple_error_flag := c_nonrec_incntv_ele_info_rec.multiple_entries_allowed_flag;
396 if l_uom = 'D' then
397 p_value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_value));
398 end if;
399 hr_utility.set_location('Inside Incentive Element, Value:'||p_Value,10);
400 exit;
401 end loop;
402 ELSE
403 for c_nonrec_ele_info_rec in
404 c_nonrec_ele_info (l_new_element_name
405 ,p_input_value_name
406 ,p_assignment_id
407 ,p_effective_date
408 ,ll_bg_id)
409 loop
410 p_input_value_id := c_nonrec_ele_info_rec.input_value_id;
411 l_uom := c_nonrec_ele_info_rec.uom;
412 p_element_link_id := c_nonrec_ele_info_rec.element_link_id;
413 p_element_entry_id := c_nonrec_ele_info_rec.element_entry_id;
414 p_value := c_nonrec_ele_info_rec.screen_entry_value;
418 p_value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(p_value));
415 p_object_version_number := c_nonrec_ele_info_rec.object_version_number;
416 p_multiple_error_flag := c_nonrec_ele_info_rec.multiple_entries_allowed_flag;
417 if l_uom = 'D' then
419 end if;
420 exit;
421 end loop;
422 END IF;
423 else -- Neither recurring nor nonrecurring element
424 hr_utility.set_message (8301, 'GHR_38035_API_INV_PROC_TYPE');
425 hr_utility.raise_error;
426 end if;
427 hr_utility.set_location(l_proc, 31);
428 End if;
429 --
430 hr_utility.set_location(' Multiple Error Flag '||p_multiple_error_flag,3);
431 hr_utility.set_location(' Leaving:'||l_proc, 4);
432 --
433 exception when others then
434 --
435 -- Reset IN OUT parameters and set OUT parameters
436 --
437 p_element_link_id := NULL;
438 p_input_value_id := NULL;
439 p_element_entry_id := NULL;
440 p_value := NULL;
441 p_object_version_number := NULL;
442 p_multiple_error_flag := NULL;
443 raise;
444 end retrieve_element_info;
445 --
446 --
447 Function return_update_mode
448 (p_id in pay_element_entries_f.element_entry_id%type,
449 p_effective_date in date
450 ) return varchar2 is
451
452 l_proc varchar2(72) := 'return_update_mode';
453 l_eed date;
454 l_esd date;
455 l_mode varchar2(20);
456 l_exists boolean := FALSE;
457
458
459 cursor c_update_mode_e is
460 select ele.effective_start_date ,
461 ele.effective_end_date
462 from pay_element_entries_f ele
463 where ele.element_entry_id = p_id
464 and p_effective_date
465 between ele.effective_start_date
466 and ele.effective_end_date;
467
468 cursor c_update_mode_e1 is
469 select ele.effective_start_date ,
470 ele.effective_end_date
471 from pay_element_entries_f ele
472 where ele.element_entry_id = p_id
473 and p_effective_date < ele.effective_start_date
474 order by 1 asc;
475
476 Begin
477
478 hr_utility.set_location('Entering ' || l_proc,5);
479 -- get session variables
480
481 for update_mode in c_update_mode_e loop
482 hr_utility.set_location(l_proc,15);
483 l_esd := update_mode.effective_start_date;
484 l_eed := update_mode.effective_end_date;
485 end loop;
486 hr_utility.set_location(l_proc,20);
487 If l_esd = p_effective_date then
488 hr_utility.set_location(l_proc,25);
489 l_mode := 'CORRECTION';
490 Elsif l_esd < p_effective_date and
494 Elsif l_esd < p_effective_date then
491 to_char(l_eed,'YYYY/MM/DD') = '4712/12/31' then
492 hr_utility.set_location(l_proc,30);
493 l_mode := 'UPDATE';
495 hr_utility.set_location(l_proc,35);
496 for update_mode1 in c_update_mode_e1 loop
497 hr_utility.set_location(l_proc,40);
498 l_exists := true;
499 exit;
500 end loop;
501 If l_exists then
502 hr_utility.set_location(l_proc,45);
503 l_mode := 'UPDATE_CHANGE_INSERT';
504 Else
505 IF to_char(l_eed,'YYYY/MM/DD') <> '4712/12/31' then
506 -- This context comes when the separated employee has retro actions
507 -- Separation action end dates the elements to the Separation effective date
508 hr_utility.set_location(l_proc,48);
509 l_mode := 'UPDATE';
510 ELSE
511 hr_utility.set_location(l_proc,50);
512 l_mode := 'CORRECTION';
513 END IF;
514 End if;
515 hr_utility.set_location(l_proc,55);
516 End if;
517 If l_mode is null then
518 hr_utility.set_message(8301,'GHR_GET_DATE_TRACK_FAILED');
519 hr_utility.set_message_token('TABLE_NAME','pay_element_entries_f');
520 hr_utility.raise_error;
521 End if;
522 return l_mode;
523 end return_update_mode;
524
525 -- ---------------------------------------------------------------------------
526 -- |-----------------------< get_input_value_id >----------------------------|
527 -- ---------------------------------------------------------------------------
528 -- {Start of Comments}
529 --
530 -- Description:
531 -- Return inpu value id
532 --
533 -- Prerequisites:
534 --
535 -- In Parameters:
536 -- p_element_name
537 -- p_input_value_name
538 -- p_effective_date
539 --
540 -- Out Parameters:
541 -- p_input_value_id
542 --
543 -- Post Success:
544 -- Processing nulls.
545 --
546 -- Post Failure:
547 -- An application error will be raised and processing is terminated.
548 --
549 -- Developer Implementation Notes:
550 -- None.
551 --
552 -- Access Status:
553 -- Internal Use Only.
554 --
555 -- {End of Comments}
556 -- ---------------------------------------------------------------------------
557 function get_input_value_id
558 (p_element_name in pay_element_types_f.element_name%type
559 ,p_input_value_name in pay_input_values_f.name%type
560 ,p_effective_date in date
561 ) return pay_input_values_f.input_value_id%type is
562 --
563 l_input_value_id pay_input_values_f.input_value_id%type;
564 --
565 cursor c_input_value (ele_name in varchar2
566 ,input_name in varchar2
567 ,eff_date in date
568 ,bg_id in NUMBER) is
569 select ipv.input_value_id
570 from pay_element_types_f elt,
571 pay_input_values_f ipv
572 where trunc(eff_date) between elt.effective_start_date
573 and elt.effective_end_date
574 and trunc(eff_date) between ipv.effective_start_date
575 and ipv.effective_end_date
576 and elt.element_type_id = ipv.element_type_id
577 and upper(elt.element_name) = upper(ele_name)
578 and upper(ipv.name) = upper(input_name)
579 -- and NVL(elt.business_group_id,0) = NVL(ipv.business_group_id,0) --Ashley
580 and (elt.business_group_id is null or elt.business_group_id = bg_id);
581
582 ll_bg_id NUMBER;
583 --
584 begin
585 --
586
587 -- get the business_group_id from profile
588 --
592 l_input_value_id := NULL;
589 fnd_profile.get('PER_BUSINESS_GROUP_ID',ll_bg_id);
590 hr_utility.trace('Business Grp Id - Under get Inp val Id'||ll_bg_id);
591 --
593 for c_input_value_rec
594 in c_input_value (p_element_name, p_input_value_name, p_effective_date,ll_bg_id)
595 loop
596 l_input_value_id := c_input_value_rec.input_value_id;
597 exit;
598 end loop;
599 return l_input_value_id;
600 --
601 end get_input_value_id;
602 --
603 -- ---------------------------------------------------------------------------
604 -- |-----------------------< process_sf52_element >--------------------------|
605 -- ---------------------------------------------------------------------------
606 -- {Start of Comments}
607 --
608 -- Description:
609 -- Process SF52 element
610 --
611 -- Prerequisites:
612 --
613 -- In Parameters:
614 -- p_assignment_id
615 -- p_element_name
616 -- p_input_value_name1
617 -- The default is null.
618 -- p_value1
619 -- The default is null.
620 -- p_input_value_name2
621 -- The default is null.
622 -- p_value2
623 -- The default is null.
624 -- p_input_value_name3
625 -- The default is null.
626 -- p_value3
627 -- The default is null.
628 -- p_input_value_name4
629 -- The default is null.
630 -- p_value4
631 -- The default is null.
632 -- p_input_value_name5
633 -- The default is null.
634 -- p_value5
635 -- The default is null.
636 -- p_input_value_name6
637 -- The default is null.
638 -- p_value6
639 -- The default is null.
640 -- p_input_value_name7
641 -- The default is null.
642 -- p_value7
643 -- The default is null.
644 -- p_input_value_name8
645 -- The default is null.
646 -- p_value8
647 -- The default is null.
648 -- p_input_value_name9
649 -- The default is null.
650 -- p_value9
651 -- The default is null.
652 -- p_input_value_name10
653 -- The default is null.
654 -- p_value10
655 -- The default is null.
656 -- p_input_value_name11
657 -- The default is null.
658 -- p_value11
659 -- The default is null.
660 -- p_input_value_name12
661 -- The default is null.
662 -- p_value12
663 -- The default is null.
664 -- p_input_value_name13
665 -- The default is null.
666 -- p_value13
667 -- The default is null.
668 -- p_input_value_name14
669 -- The default is null.
670 -- p_value14
671 -- The default is null.
672 -- p_input_value_name15
673 -- The default is null.
674 -- p_value15
675 -- The default is null.
676 -- p_effective_date
677 -- The default is sysdate.
678 --
679 -- Out Parameters:
680 -- p_process_warning
681 --
682 -- Post Success:
683 -- Processing continues.
684 --
685 -- Post Failure:
686 -- An application error will be raised and processing is terminated.
687 --
688 -- Developer Implementation Notes:
689 -- None.
690 --
691 -- Access Status:
692 -- All.
693 --
694 -- {End of Comments}
695 -- ---------------------------------------------------------------------------
696 --
697 procedure process_sf52_element
698 (p_assignment_id in per_assignments_f.assignment_id%type
699 ,p_element_name in pay_element_types_f.element_name%type
700 ,p_input_value_name1 in pay_input_values_f.name%type
701 default null
702 ,p_value1 in pay_element_entry_values_f.screen_entry_value%type
703 default null
704 ,p_input_value_name2 in pay_input_values_f.name%type
705 default null
706 ,p_value2 in pay_element_entry_values_f.screen_entry_value%type
707 default null
708 ,p_input_value_name3 in pay_input_values_f.name%type
709 default null
710 ,p_value3 in pay_element_entry_values_f.screen_entry_value%type
711 default null
712 ,p_input_value_name4 in pay_input_values_f.name%type
713 default null
714 ,p_value4 in pay_element_entry_values_f.screen_entry_value%type
715 default null
716 ,p_input_value_name5 in pay_input_values_f.name%type
717 default null
718 ,p_value5 in pay_element_entry_values_f.screen_entry_value%type
719 default null
720 ,p_input_value_name6 in pay_input_values_f.name%type
721 default null
725 default null
722 ,p_value6 in pay_element_entry_values_f.screen_entry_value%type
723 default null
724 ,p_input_value_name7 in pay_input_values_f.name%type
726 ,p_value7 in pay_element_entry_values_f.screen_entry_value%type
727 default null
728 ,p_input_value_name8 in pay_input_values_f.name%type
729 default null
730 ,p_value8 in pay_element_entry_values_f.screen_entry_value%type
731 default null
732 ,p_input_value_name9 in pay_input_values_f.name%type
733 default null
734 ,p_value9 in pay_element_entry_values_f.screen_entry_value%type
735 default null
736 ,p_input_value_name10 in pay_input_values_f.name%type
737 default null
738 ,p_value10 in pay_element_entry_values_f.screen_entry_value%type
739 default null
740 ,p_input_value_name11 in pay_input_values_f.name%type
741 default null
742 ,p_value11 in pay_element_entry_values_f.screen_entry_value%type
743 default null
744 ,p_input_value_name12 in pay_input_values_f.name%type
745 default null
746 ,p_value12 in pay_element_entry_values_f.screen_entry_value%type
747 default null
748 ,p_input_value_name13 in pay_input_values_f.name%type
749 default null
750 ,p_value13 in pay_element_entry_values_f.screen_entry_value%type
751 default null
752 ,p_input_value_name14 in pay_input_values_f.name%type
753 default null
754 ,p_value14 in pay_element_entry_values_f.screen_entry_value%type
755 default null
756 ,p_input_value_name15 in pay_input_values_f.name%type
757 default null
758 ,p_value15 in pay_element_entry_values_f.screen_entry_value%type
759 default null
760 ,p_effective_date in date default null
761 ,p_process_warning out nocopy boolean
762 ) is
763 --
764 l_proc varchar2(72) := g_package||'process_sf52_element';
765 l_business_group_id per_business_groups.business_group_id%type;
766 l_element_type_id pay_element_types_f.element_type_id%type;
767 l_element_link_id pay_element_links_f.element_link_id%type;
768 l_entry_type pay_element_entries_f.entry_type%type default 'E';
769 l_input_value_id1 pay_input_values_f.input_value_id%type;
770 l_input_value_id2 pay_input_values_f.input_value_id%type;
771 l_input_value_id3 pay_input_values_f.input_value_id%type;
772 l_input_value_id4 pay_input_values_f.input_value_id%type;
773 l_input_value_id5 pay_input_values_f.input_value_id%type;
774 l_input_value_id6 pay_input_values_f.input_value_id%type;
775 l_input_value_id7 pay_input_values_f.input_value_id%type;
776 l_input_value_id8 pay_input_values_f.input_value_id%type;
777 l_input_value_id9 pay_input_values_f.input_value_id%type;
778 l_input_value_id10 pay_input_values_f.input_value_id%type;
779 l_input_value_id11 pay_input_values_f.input_value_id%type;
780 l_input_value_id12 pay_input_values_f.input_value_id%type;
781 l_input_value_id13 pay_input_values_f.input_value_id%type;
782 l_input_value_id14 pay_input_values_f.input_value_id%type;
783 l_input_value_id15 pay_input_values_f.input_value_id%type;
784 l_value1 pay_element_entry_values_f.screen_entry_value%type;
785 l_value2 pay_element_entry_values_f.screen_entry_value%type;
786 l_value3 pay_element_entry_values_f.screen_entry_value%type;
787 l_value4 pay_element_entry_values_f.screen_entry_value%type;
788 l_value5 pay_element_entry_values_f.screen_entry_value%type;
789 l_value6 pay_element_entry_values_f.screen_entry_value%type;
790 l_value7 pay_element_entry_values_f.screen_entry_value%type;
791 l_value8 pay_element_entry_values_f.screen_entry_value%type;
792 l_value9 pay_element_entry_values_f.screen_entry_value%type;
793 l_value10 pay_element_entry_values_f.screen_entry_value%type;
794 l_value11 pay_element_entry_values_f.screen_entry_value%type;
795 l_value12 pay_element_entry_values_f.screen_entry_value%type;
796 l_value13 pay_element_entry_values_f.screen_entry_value%type;
797 l_value14 pay_element_entry_values_f.screen_entry_value%type;
798 l_value15 pay_element_entry_values_f.screen_entry_value%type;
799 l_effective_start_date date;
800 l_effective_end_date date;
801 l_processing_type pay_element_types_f.processing_type%type;
802 l_element_entry_id pay_element_entries_f.element_entry_id%type;
803 l_element_entry_id1 pay_element_entries_f.element_entry_id%type;
804 l_object_version_number pay_element_entries_f.object_version_number%type;
805 l_object_version_number1 pay_element_entries_f.object_version_number%type;
806 l_multiple_error_flag varchar2(1);
807 l_create_warning boolean;
808 l_update_warning boolean;
809 l_delete_warning boolean;
810 l_create_element_entry boolean := FALSE;
811 l_update_element_entry boolean := FALSE;
812 l_business_group_found boolean := FALSE;
813 l_ele_proc_type_found boolean := FALSE;
814 l_input_value_found boolean := FALSE;
815 l_update_mode varchar2(20);
816 l_session ghr_history_api.g_session_var_type;
817 l_session_incentive ghr_history_api.g_session_var_type;
818 l_noa_id ghr_nature_of_actions.nature_of_action_id%type;
822 --
819 l_noa_code ghr_nature_of_actions.code%type;
820 l_noa_fam_code ghr_noa_families.noa_family_code%type;
821
823 cursor c_business_group (asg_id number, eff_date date) is
824 select asg.business_group_id
825 from per_all_assignments_f asg
826 where asg.assignment_id = asg_id
827 and eff_date between asg.effective_start_date
828 and asg.effective_end_date;
829 --
830 cursor c_ele_processing_type (bg_id in number
831 ,ele_name in varchar2
832 ,eff_date in date) is
833 select elt.element_type_id,
834 elt.processing_type
835 from pay_element_types_f elt
836 where trunc(eff_date) between elt.effective_start_date
837 and elt.effective_end_date
838 and upper(elt.element_name) = upper(ele_name)
839 and ( elt.business_group_id is NULL or
840 elt.business_group_id = bg_id );
841
842
843 cursor c_noa_code is
844 select noa.code
845 from ghr_nature_of_actions noa
846 where noa.nature_of_action_id = l_noa_id;
847
848 --
849 -- to pick pay basis from PAR
850 Cursor Cur_pay_basis is
851 Select from_pay_basis,to_pay_basis
852 From ghr_pa_requests
853 Where pa_request_id=l_session.pa_request_id;
854 -- Where employee_assignment_id=p_assignment_id;
855 -- and effective_date=p_eff_date;
856 --
857 -- Bug#5045806
858 CURSOR c_curr_incentive(l_asg_id NUMBER, l_effective_date DATE, l_element_name VARCHAR2) IS
859 SELECT count(*) cnt
860 FROM pay_element_entries_f ee, pay_element_types_f et
861 WHERE ee.assignment_id = l_asg_id
862 AND ee.element_type_id = et.element_type_id
863 AND et.element_name = l_element_name
864 AND l_effective_date between ee.effective_start_date
865 AND ee.effective_end_date;
866 -- Bug35045806
867
868 ll_pay_basis VARCHAR2(80);
869 ll_effective_date DATE;
870 l_new_element_name VARCHAR2(80);
871 l_biweekly_end_date DATE;
872 l_p_value15 pay_element_entry_values_f.screen_entry_value%type;
873 l_cnt NUMBER;
874 --
875 begin
876
877 hr_utility.set_location('Entering:'||l_proc, 1);
878 hr_utility.set_location('element '||p_element_name,0);
879 hr_utility.trace('Input Value Name1:'||p_input_value_name1);
880 hr_utility.trace('VALUE1 :'||p_value1);
881 hr_utility.trace('L_VALUE1 :'||l_value1);
882 hr_utility.trace('Input Value Name2:'||p_input_value_name2);
883 hr_utility.trace('Value2 :'||p_value2);
884 hr_utility.trace('L_Value2 :'||l_value2);
885 If p_element_name like '%Incentive Biweekly%' AND
886 p_element_name <> 'Separation Incentive Biweekly' THEN
887 hr_utility.set_location('Inside biweekly element ',0);
888 l_biweekly_end_date := p_value15;
889 l_p_value15 := NULL;
890 ELSE
891 l_p_value15 := p_value15;
892 END IF;
893
894 -- Bug#5045806 Verify whether an element entry already exists for this
895 IF p_element_name like '%Lump Sum%' THEN
896 ghr_history_api.get_g_session_var(l_session_incentive);
897 IF l_session_incentive.noa_id_correct is NULL THEN
898 FOR curr_incentive_rec IN c_curr_incentive(p_assignment_id,p_effective_date,p_element_name)
899 LOOP
900 l_cnt := curr_incentive_rec.cnt;
901 END LOOP;
902 IF l_cnt > 0 and p_element_name <> 'Separation Incentive Lump Sum' THEN
903 hr_utility.set_message(8301, 'GHR_38129_INCN_ELE_EXISTS');
904 hr_utility.set_message_token('ELEMENT_NAME',p_element_name);
905 hr_utility.set_message_token('EFF_DATE',p_effective_date);
906 hr_utility.raise_error;
907 END IF;
908 END IF;
909 END IF;
910 -- End Bug#5045806
911 --
912 for c_business_group_rec
913 in c_business_group (p_assignment_id, p_effective_date) loop
914 l_business_group_found := TRUE;
915 l_business_group_id := c_business_group_rec.business_group_id;
916 exit;
917 end loop;
918 --
919 if not l_business_group_found then
920 hr_utility.set_message(8301, 'GHR_38023_API_INV_ASG');
921 hr_utility.raise_error;
922 end if;
923 hr_utility.set_location(l_proc, 2);
924 -- Pick pay basis from PAR
925 ll_effective_date := p_effective_Date;
926
927 IF (l_session.pa_request_id is NOT NULL) THEN
928 For Pay_basis in Cur_Pay_basis
929 Loop
930 If (pay_basis.from_pay_basis is NULL and
931 pay_basis.to_pay_basis is not NULL) then
932 ll_pay_basis:=pay_basis.to_pay_basis;
933
934 elsif (pay_basis.from_pay_basis is NOT NULL and
935 pay_basis.to_pay_basis is NULL) then
936 ll_pay_basis:=pay_basis.from_pay_basis;
937
938 elsif (pay_basis.from_pay_basis is NOT NULL and
939 pay_basis.to_pay_basis is NOT NULL) then
940 ll_pay_basis:=pay_basis.to_pay_basis;
941
942 elsif (pay_basis.from_pay_basis is NULL and
943 pay_basis.to_pay_basis is NULL) then
944 ll_pay_basis:='PA';
945
946 End If;
947 End Loop;
948 --
949
950 l_new_element_name := pqp_fedhr_uspay_int_utils.return_new_element_name(
951 p_fedhr_element_name => p_element_name,
955
952 p_business_group_id => l_business_group_id,
953 p_effective_date => ll_effective_date,
954 p_pay_basis => ll_pay_basis);
956 ELSIF (l_session.pa_request_id is NULL) THEN
957 IF (p_element_name = 'Basic Salary Rate'
958 and (fnd_profile.value('HR_USER_TYPE')='INT')) THEN
959 l_new_element_name :=
960 pqp_fedhr_uspay_int_utils.return_new_element_name(
961 p_assignment_id => p_assignment_id,
962 p_business_group_id => l_business_group_id,
963 p_effective_date => ll_effective_date);
964 ELSIF (fnd_profile.value('HR_USER_TYPE')<>'INT'
965 or (p_element_name <> 'Basic Salary Rate' and (fnd_profile.value('HR_USER_TYPE')='INT'))) THEN
966 l_new_element_name :=
967 pqp_fedhr_uspay_int_utils.return_new_element_name(
968 p_fedhr_element_name => p_element_name,
969 p_business_group_id => l_business_group_id,
970 p_effective_date => ll_effective_date,
971 p_pay_basis => NULL);
972
973 END IF;
974 END IF;
975 --
976 --
977 hr_utility.trace('old Element Name : ' ||p_element_name);
978 hr_utility.trace('New Element Name : ' ||l_new_element_name);
979 --
980 -- ONLY THIS CURSOR and GET_INPUT_VALUE_ID procedure USE NEW ELEMENT NAME
981 --
982 for c_ele_processing_type_rec in
983 c_ele_processing_type (l_business_group_id
984 ,l_new_element_name
985 ,p_effective_date) loop
986 l_ele_proc_type_found := TRUE;
987 l_element_type_id := c_ele_processing_type_rec.element_type_id;
988 l_processing_type := c_ele_processing_type_rec.processing_type;
989 exit;
990 end loop;
991 if not l_ele_proc_type_found then
992 hr_utility.set_message(8301, 'GHR_38035_API_INV_PROC_TYPE');
993 hr_utility.raise_error;
994 end if;
995 hr_utility.set_location(l_proc, 2);
996 --
997
998 -- Retrieve element information if input value name is not null
999 -- Using this p_element_name to pick old ele name under retrieve_element_info
1000 -- anyways. So passing old ele name than new ele name to avoid error.
1001 hr_utility.set_location('l_value1: '||l_value1,10);
1002 hr_utility.set_location('l_value2: '||l_value2,10);
1003 hr_utility.set_location('l_value3: '||l_value3,10);
1004 hr_utility.set_location('l_value4: '||l_value4,10);
1005 hr_utility.set_location('l_multiple_error_flag: '||l_multiple_error_flag,10);
1006 if p_input_value_name1 is not NULL then
1007 retrieve_element_info(p_element_name => p_element_name
1008 ,p_input_value_name => p_input_value_name1
1009 ,p_assignment_id => p_assignment_id
1010 ,p_effective_date => p_effective_date
1011 ,p_processing_type => l_processing_type
1012 ,p_element_link_id => l_element_link_id
1013 ,p_input_value_id => l_input_value_id1
1014 ,p_element_entry_id => l_element_entry_id
1015 ,p_value => l_value1
1016 ,p_object_version_number => l_object_version_number
1017 ,p_multiple_error_flag => l_multiple_error_flag);
1018 end if;
1019 hr_utility.set_location('after fetch l_value1: '||l_value1,20);
1020 --
1021 if p_input_value_name2 is not NULL then
1022 IF p_input_value_name2 = 'Capped Other Pay' THEN
1023 retrieve_element_info(p_element_name => p_element_name
1024 ,p_input_value_name => p_input_value_name2
1025 ,p_assignment_id => p_assignment_id
1026 ,p_effective_date => p_effective_date
1027 ,p_processing_type => l_processing_type
1028 ,p_element_link_id => l_element_link_id
1029 ,p_input_value_id => l_input_value_id2
1030 ,p_element_entry_id => l_element_entry_id1
1031 ,p_value => l_value2
1032 ,p_object_version_number => l_object_version_number1
1033 ,p_multiple_error_flag => l_multiple_error_flag);
1034 ELSE
1035 retrieve_element_info(p_element_name => p_element_name
1036 ,p_input_value_name => p_input_value_name2
1037 ,p_assignment_id => p_assignment_id
1038 ,p_effective_date => p_effective_date
1039 ,p_processing_type => l_processing_type
1040 ,p_element_link_id => l_element_link_id
1041 ,p_input_value_id => l_input_value_id2
1042 ,p_element_entry_id => l_element_entry_id
1043 ,p_value => l_value2
1044 ,p_object_version_number => l_object_version_number
1045 ,p_multiple_error_flag => l_multiple_error_flag);
1046 END IF;
1047 end if;
1048 hr_utility.set_location('after fetch l_value2: '||l_value2,20);
1049 --
1050 if p_input_value_name3 is not NULL then
1051 retrieve_element_info(p_element_name => p_element_name
1052 ,p_input_value_name => p_input_value_name3
1053 ,p_assignment_id => p_assignment_id
1054 ,p_effective_date => p_effective_date
1055 ,p_processing_type => l_processing_type
1056 ,p_element_link_id => l_element_link_id
1057 ,p_input_value_id => l_input_value_id3
1058 ,p_element_entry_id => l_element_entry_id
1059 ,p_value => l_value3
1060 ,p_object_version_number => l_object_version_number
1064 --
1061 ,p_multiple_error_flag => l_multiple_error_flag);
1062 end if;
1063 hr_utility.set_location('after fetch l_value3: '||l_value3,20);
1065 if p_input_value_name4 is not NULL then
1066 retrieve_element_info(p_element_name => p_element_name
1067 ,p_input_value_name => p_input_value_name4
1068 ,p_assignment_id => p_assignment_id
1069 ,p_effective_date => p_effective_date
1070 ,p_processing_type => l_processing_type
1071 ,p_element_link_id => l_element_link_id
1072 ,p_input_value_id => l_input_value_id4
1073 ,p_element_entry_id => l_element_entry_id
1074 ,p_value => l_value4
1075 ,p_object_version_number => l_object_version_number
1076 ,p_multiple_error_flag => l_multiple_error_flag);
1077 end if;
1078 hr_utility.set_location('after fetch l_value4: '||l_value4,20);
1079 --
1080 if p_input_value_name5 is not NULL then
1081 retrieve_element_info(p_element_name => p_element_name
1082 ,p_input_value_name => p_input_value_name5
1083 ,p_assignment_id => p_assignment_id
1084 ,p_effective_date => p_effective_date
1085 ,p_processing_type => l_processing_type
1086 ,p_element_link_id => l_element_link_id
1087 ,p_input_value_id => l_input_value_id5
1088 ,p_element_entry_id => l_element_entry_id
1089 ,p_value => l_value5
1090 ,p_object_version_number => l_object_version_number
1091 ,p_multiple_error_flag => l_multiple_error_flag);
1092 end if;
1093 --
1094 if p_input_value_name6 is not NULL then
1095 retrieve_element_info(p_element_name => p_element_name
1096 ,p_input_value_name => p_input_value_name6
1097 ,p_assignment_id => p_assignment_id
1098 ,p_effective_date => p_effective_date
1099 ,p_processing_type => l_processing_type
1100 ,p_element_link_id => l_element_link_id
1101 ,p_input_value_id => l_input_value_id6
1102 ,p_element_entry_id => l_element_entry_id
1103 ,p_value => l_value6
1104 ,p_object_version_number => l_object_version_number
1105 ,p_multiple_error_flag => l_multiple_error_flag);
1106 end if;
1107 --
1108 if p_input_value_name7 is not NULL then
1109 retrieve_element_info(p_element_name => p_element_name
1110 ,p_input_value_name => p_input_value_name7
1111 ,p_assignment_id => p_assignment_id
1112 ,p_effective_date => p_effective_date
1113 ,p_processing_type => l_processing_type
1114 ,p_element_link_id => l_element_link_id
1115 ,p_input_value_id => l_input_value_id7
1116 ,p_element_entry_id => l_element_entry_id
1117 ,p_value => l_value7
1118 ,p_object_version_number => l_object_version_number
1119 ,p_multiple_error_flag => l_multiple_error_flag);
1120 end if;
1121 --
1122 if p_input_value_name8 is not NULL then
1123 retrieve_element_info(p_element_name => p_element_name
1124 ,p_input_value_name => p_input_value_name8
1125 ,p_assignment_id => p_assignment_id
1126 ,p_effective_date => p_effective_date
1127 ,p_processing_type => l_processing_type
1128 ,p_element_link_id => l_element_link_id
1129 ,p_input_value_id => l_input_value_id8
1130 ,p_element_entry_id => l_element_entry_id
1131 ,p_value => l_value8
1132 ,p_object_version_number => l_object_version_number
1133 ,p_multiple_error_flag => l_multiple_error_flag);
1134 end if;
1135 --
1136 if p_input_value_name9 is not NULL then
1137 retrieve_element_info(p_element_name => p_element_name
1138 ,p_input_value_name => p_input_value_name9
1139 ,p_assignment_id => p_assignment_id
1140 ,p_effective_date => p_effective_date
1141 ,p_processing_type => l_processing_type
1142 ,p_element_link_id => l_element_link_id
1143 ,p_input_value_id => l_input_value_id9
1144 ,p_element_entry_id => l_element_entry_id
1145 ,p_value => l_value9
1146 ,p_object_version_number => l_object_version_number
1147 ,p_multiple_error_flag => l_multiple_error_flag);
1148 end if;
1149 --
1150 if p_input_value_name10 is not NULL then
1151 retrieve_element_info(p_element_name => p_element_name
1152 ,p_input_value_name => p_input_value_name10
1153 ,p_assignment_id => p_assignment_id
1154 ,p_effective_date => p_effective_date
1155 ,p_processing_type => l_processing_type
1156 ,p_element_link_id => l_element_link_id
1157 ,p_input_value_id => l_input_value_id10
1158 ,p_element_entry_id => l_element_entry_id
1159 ,p_value => l_value10
1160 ,p_object_version_number => l_object_version_number
1161 ,p_multiple_error_flag => l_multiple_error_flag);
1162 end if;
1163 --
1164 if p_input_value_name11 is not NULL then
1165 retrieve_element_info(p_element_name => p_element_name
1166 ,p_input_value_name => p_input_value_name11
1167 ,p_assignment_id => p_assignment_id
1168 ,p_effective_date => p_effective_date
1169 ,p_processing_type => l_processing_type
1170 ,p_element_link_id => l_element_link_id
1171 ,p_input_value_id => l_input_value_id11
1172 ,p_element_entry_id => l_element_entry_id
1173 ,p_value => l_value11
1174 ,p_object_version_number => l_object_version_number
1178 if p_input_value_name12 is not NULL then
1175 ,p_multiple_error_flag => l_multiple_error_flag);
1176 end if;
1177 --
1179 retrieve_element_info(p_element_name => p_element_name
1180 ,p_input_value_name => p_input_value_name12
1181 ,p_assignment_id => p_assignment_id
1182 ,p_effective_date => p_effective_date
1183 ,p_processing_type => l_processing_type
1184 ,p_element_link_id => l_element_link_id
1185 ,p_input_value_id => l_input_value_id12
1186 ,p_element_entry_id => l_element_entry_id
1187 ,p_value => l_value12
1188 ,p_object_version_number => l_object_version_number
1189 ,p_multiple_error_flag => l_multiple_error_flag);
1190 end if;
1191 --
1192 if p_input_value_name13 is not NULL then
1193 retrieve_element_info(p_element_name => p_element_name
1194 ,p_input_value_name => p_input_value_name13
1195 ,p_assignment_id => p_assignment_id
1196 ,p_effective_date => p_effective_date
1197 ,p_processing_type => l_processing_type
1198 ,p_element_link_id => l_element_link_id
1199 ,p_input_value_id => l_input_value_id13
1200 ,p_element_entry_id => l_element_entry_id
1201 ,p_value => l_value13
1202 ,p_object_version_number => l_object_version_number
1203 ,p_multiple_error_flag => l_multiple_error_flag);
1204 end if;
1205 --
1206 if p_input_value_name14 is not NULL then
1207 retrieve_element_info(p_element_name => p_element_name
1208 ,p_input_value_name => p_input_value_name14
1209 ,p_assignment_id => p_assignment_id
1210 ,p_effective_date => p_effective_date
1211 ,p_processing_type => l_processing_type
1212 ,p_element_link_id => l_element_link_id
1213 ,p_input_value_id => l_input_value_id14
1214 ,p_element_entry_id => l_element_entry_id
1215 ,p_value => l_value14
1216 ,p_object_version_number => l_object_version_number
1217 ,p_multiple_error_flag => l_multiple_error_flag);
1218 end if;
1219 --
1220 if p_input_value_name15 is not NULL then
1221 retrieve_element_info(p_element_name => p_element_name
1222 ,p_input_value_name => p_input_value_name15
1223 ,p_assignment_id => p_assignment_id
1224 ,p_effective_date => p_effective_date
1225 ,p_processing_type => l_processing_type
1226 ,p_element_link_id => l_element_link_id
1227 ,p_input_value_id => l_input_value_id15
1228 ,p_element_entry_id => l_element_entry_id
1229 ,p_value => l_value15
1230 ,p_object_version_number => l_object_version_number
1231 ,p_multiple_error_flag => l_multiple_error_flag);
1232 end if;
1233 hr_utility.set_location('l_element_entry_id after retrieve ' || to_char(l_element_entry_id),1);
1234 hr_utility.set_location('l_element_entry_id1 after retrieve ' || to_char(l_element_entry_id1),2);
1235 hr_utility.set_location('l_value1 '||l_value1,3);
1236 hr_utility.set_location('l_value2'||l_value2,4);
1237 hr_utility.set_location('l_inp_val_id1'||to_char(l_input_value_id1),5);
1238 hr_utility.set_location('l_inp_val_id1'||to_char(l_input_value_id2),6);
1239 hr_utility.set_location('l_multiple_error_flag: '||l_multiple_error_flag,7);
1240 hr_utility.set_location(l_proc, 3);
1241 --
1242 -- if employee does not have the element entry
1243 --
1244 if (l_value1 is NULL and l_input_value_id1 is null and
1245 l_value2 is NULL and l_input_value_id2 is null and
1246 l_value3 is NULL and l_input_value_id3 is null and
1247 l_value4 is NULL and l_input_value_id4 is null and
1248 l_value5 is NULL and l_input_value_id5 is null and
1249 l_value6 is NULL and l_input_value_id6 is null and
1250 l_value7 is NULL and l_input_value_id7 is null and
1251 l_value8 is NULL and l_input_value_id8 is null and
1252 l_value9 is NULL and l_input_value_id9 is null and
1253 l_value10 is NULL and l_input_value_id10 is null and
1254 l_value11 is NULL and l_input_value_id11 is null and
1255 l_value12 is NULL and l_input_value_id12 is null and
1256 l_value13 is NULL and l_input_value_id13 is null and
1257 l_value14 is NULL and l_input_value_id14 is null and
1258 l_value15 is NULL and l_input_value_id15 is null )then
1259 --
1260 -- Get assignment eligibility element link
1261 --
1262 l_element_link_id := hr_entry_api.get_link
1263 (p_assignment_id => p_assignment_id
1264 ,p_element_type_id => l_element_type_id
1265 ,p_session_date => p_effective_date);
1266 --
1267 -- Get input value id for all input values of the element
1268 --
1269 -- Added the if with check on input_value_id for testing
1270 -- If l_input_value_id1 is null then
1271 if p_input_value_name1 is not NULL then
1272 l_input_value_id1 := get_input_value_id
1273 (p_element_name => l_new_element_name
1274 ,p_input_value_name => p_input_value_name1
1275 ,p_effective_date => p_effective_date);
1276 end if;
1277 -- End if;
1278 --
1279 if p_input_value_name2 is not NULL then
1280 l_input_value_id2 := get_input_value_id
1281 (p_element_name => l_new_element_name
1282 ,p_input_value_name => p_input_value_name2
1283 ,p_effective_date => p_effective_date);
1284 end if;
1285 --
1289 ,p_input_value_name => p_input_value_name3
1286 if p_input_value_name3 is not NULL then
1287 l_input_value_id3 := get_input_value_id
1288 (p_element_name => l_new_element_name
1290 ,p_effective_date => p_effective_date);
1291 end if;
1292 --
1293 if p_input_value_name4 is not NULL then
1294 l_input_value_id4 := get_input_value_id
1295 (p_element_name => l_new_element_name
1296 ,p_input_value_name => p_input_value_name4
1297 ,p_effective_date => p_effective_date);
1298 end if;
1299 --
1300 if p_input_value_name5 is not NULL then
1301 l_input_value_id5 := get_input_value_id
1302 (p_element_name => l_new_element_name
1303 ,p_input_value_name => p_input_value_name5
1304 ,p_effective_date => p_effective_date);
1305 end if;
1306 --
1307 if p_input_value_name6 is not NULL then
1308 l_input_value_id6 := get_input_value_id
1309 (p_element_name => l_new_element_name
1310 ,p_input_value_name => p_input_value_name6
1311 ,p_effective_date => p_effective_date);
1312 end if;
1313 --
1314 if p_input_value_name7 is not NULL then
1315 l_input_value_id7 := get_input_value_id
1316 (p_element_name => l_new_element_name
1317 ,p_input_value_name => p_input_value_name7
1318 ,p_effective_date => p_effective_date);
1319 end if;
1320 --
1321 if p_input_value_name8 is not NULL then
1322 l_input_value_id8 := get_input_value_id
1323 (p_element_name => l_new_element_name
1324 ,p_input_value_name => p_input_value_name8
1325 ,p_effective_date => p_effective_date);
1326 end if;
1327 --
1328 if p_input_value_name9 is not NULL then
1329 l_input_value_id9 := get_input_value_id
1330 (p_element_name => l_new_element_name
1331 ,p_input_value_name => p_input_value_name9
1332 ,p_effective_date => p_effective_date);
1333 end if;
1334 --
1335 if p_input_value_name10 is not NULL then
1336 l_input_value_id10 := get_input_value_id
1337 (p_element_name => l_new_element_name
1338 ,p_input_value_name => p_input_value_name10
1339 ,p_effective_date => p_effective_date);
1340 end if;
1341 --
1342 if p_input_value_name11 is not NULL then
1343 l_input_value_id11 := get_input_value_id
1344 (p_element_name => l_new_element_name
1345 ,p_input_value_name => p_input_value_name11
1346 ,p_effective_date => p_effective_date);
1347 end if;
1348 --
1349 if p_input_value_name12 is not NULL then
1350 l_input_value_id12 := get_input_value_id
1351 (p_element_name => l_new_element_name
1352 ,p_input_value_name => p_input_value_name12
1353 ,p_effective_date => p_effective_date);
1354 end if;
1355 --
1356 if p_input_value_name13 is not NULL then
1357 l_input_value_id13 := get_input_value_id
1358 (p_element_name => l_new_element_name
1359 ,p_input_value_name => p_input_value_name13
1360 ,p_effective_date => p_effective_date);
1361 end if;
1362 --
1363 if p_input_value_name14 is not NULL then
1364 l_input_value_id14 := get_input_value_id
1365 (p_element_name => l_new_element_name
1366 ,p_input_value_name => p_input_value_name14
1367 ,p_effective_date => p_effective_date);
1368 end if;
1369 --
1370 if p_input_value_name15 is not NULL then
1371 l_input_value_id15 := get_input_value_id
1372 (p_element_name => l_new_element_name
1373 ,p_input_value_name => p_input_value_name15
1374 ,p_effective_date => p_effective_date);
1375 end if;
1376 hr_utility.set_location(l_proc, 4);
1377 --
1378 begin
1379 savepoint cr_ent;
1380 py_element_entry_api.create_element_entry
1381 (p_effective_date => p_effective_date
1382 ,p_business_group_id => l_business_group_id
1383 ,p_assignment_id => p_assignment_id
1384 ,p_element_link_id => l_element_link_id
1385 ,p_entry_type => l_entry_type
1386 ,p_input_value_id1 => l_input_value_id1
1387 ,p_entry_value1 => p_value1
1388 ,p_input_value_id2 => l_input_value_id2
1389 ,p_entry_value2 => p_value2
1390 ,p_input_value_id3 => l_input_value_id3
1391 ,p_entry_value3 => p_value3
1392 ,p_input_value_id4 => l_input_value_id4
1393 ,p_entry_value4 => p_value4
1394 ,p_input_value_id5 => l_input_value_id5
1395 ,p_entry_value5 => p_value5
1396 ,p_input_value_id6 => l_input_value_id6
1397 ,p_entry_value6 => p_value6
1398 ,p_input_value_id7 => l_input_value_id7
1399 ,p_entry_value7 => p_value7
1400 ,p_input_value_id8 => l_input_value_id8
1401 ,p_entry_value8 => p_value8
1402 ,p_input_value_id9 => l_input_value_id9
1403 ,p_entry_value9 => p_value9
1404 ,p_input_value_id10 => l_input_value_id10
1405 ,p_entry_value10 => p_value10
1406 ,p_input_value_id11 => l_input_value_id11
1407 ,p_entry_value11 => p_value11
1411 ,p_entry_value13 => p_value13
1408 ,p_input_value_id12 => l_input_value_id12
1409 ,p_entry_value12 => p_value12
1410 ,p_input_value_id13 => l_input_value_id13
1412 ,p_input_value_id14 => l_input_value_id14
1413 ,p_entry_value14 => p_value14
1414 ,p_input_value_id15 => l_input_value_id15
1415 ,p_entry_value15 => l_p_value15
1416 ,p_effective_start_date => l_effective_start_date
1417 ,p_effective_end_date => l_effective_end_date
1418 ,p_element_entry_id => l_element_entry_id
1419 ,p_object_version_number => l_object_version_number
1420 ,p_create_warning => l_create_warning);
1421 Exception
1422 when others then
1423 rollback to cr_ent;
1424 raise;
1425 End;
1426 --
1427 -- The following logic does not work until the procedure
1428 -- py_element_entry_api.create_element_entry will return p_create_warning
1429 -- flag.
1430 --
1431 /*
1432 if not l_create_warning then
1433 l_create_element_entry := TRUE;
1434 else
1435 l_create_element_entry := FALSE;
1436 end if;
1437 */
1438 hr_utility.set_location(l_proc||l_element_entry_id, 5);
1439 Else
1440 --
1441 -- if one of the element entry values changed
1442 --
1443
1444 if nvl(p_value1,hr_api.g_varchar2) <> nvl(l_value1,hr_api.g_varchar2) or
1445 nvl(p_value2,hr_api.g_varchar2) <> nvl(l_value2,hr_api.g_varchar2) or
1446 nvl(p_value3,hr_api.g_varchar2) <> nvl(l_value3,hr_api.g_varchar2) or
1447 nvl(p_value4,hr_api.g_varchar2) <> nvl(l_value4,hr_api.g_varchar2) or
1448 nvl(p_value5,hr_api.g_varchar2) <> nvl(l_value5,hr_api.g_varchar2) or
1449 nvl(p_value6,hr_api.g_varchar2) <> nvl(l_value6,hr_api.g_varchar2) or
1450 nvl(p_value7,hr_api.g_varchar2) <> nvl(l_value7,hr_api.g_varchar2) or
1451 nvl(p_value8,hr_api.g_varchar2) <> nvl(l_value8,hr_api.g_varchar2) or
1452 nvl(p_value9,hr_api.g_varchar2) <> nvl(l_value9,hr_api.g_varchar2) or
1453 nvl( p_value10,hr_api.g_varchar2) <> nvl(l_value10,hr_api.g_varchar2) or
1454 nvl( p_value11,hr_api.g_varchar2) <> nvl(l_value11,hr_api.g_varchar2) or
1455 nvl( p_value12,hr_api.g_varchar2) <> nvl(l_value12,hr_api.g_varchar2) or
1456 nvl( p_value13,hr_api.g_varchar2) <> nvl(l_value13,hr_api.g_varchar2) or
1457 nvl( p_value14,hr_api.g_varchar2) <> nvl(l_value14,hr_api.g_varchar2) or
1458 nvl( l_p_value15,hr_api.g_varchar2) <> nvl(l_value15,hr_api.g_varchar2) then
1459 -- get session variable to determine if it is a 'CORRECTION'
1460
1461 ghr_history_api.get_g_session_var(l_session);
1462
1463 If l_multiple_error_flag = 'Y'
1464 and l_session.noa_id_correct is null
1465 then
1466 begin
1467 savepoint cr_ent;
1468 py_element_entry_api.create_element_entry
1469 (p_effective_date => p_effective_date
1470 ,p_business_group_id => l_business_group_id
1471 ,p_assignment_id => p_assignment_id
1472 ,p_element_link_id => l_element_link_id
1473 ,p_entry_type => l_entry_type
1474 ,p_input_value_id1 => l_input_value_id1
1475 ,p_entry_value1 => p_value1
1476 ,p_input_value_id2 => l_input_value_id2
1477 ,p_entry_value2 => p_value2
1478 ,p_input_value_id3 => l_input_value_id3
1479 ,p_entry_value3 => p_value3
1480 ,p_input_value_id4 => l_input_value_id4
1481 ,p_entry_value4 => p_value4
1482 ,p_input_value_id5 => l_input_value_id5
1483 ,p_entry_value5 => p_value5
1484 ,p_input_value_id6 => l_input_value_id6
1485 ,p_entry_value6 => p_value6
1486 ,p_input_value_id7 => l_input_value_id7
1487 ,p_entry_value7 => p_value7
1488 ,p_input_value_id8 => l_input_value_id8
1489 ,p_entry_value8 => p_value8
1490 ,p_input_value_id9 => l_input_value_id9
1491 ,p_entry_value9 => p_value9
1492 ,p_input_value_id10 => l_input_value_id10
1493 ,p_entry_value10 => p_value10
1494 ,p_input_value_id11 => l_input_value_id11
1495 ,p_entry_value11 => p_value11
1496 ,p_input_value_id12 => l_input_value_id12
1497 ,p_entry_value12 => p_value12
1498 ,p_input_value_id13 => l_input_value_id13
1499 ,p_entry_value13 => p_value13
1500 ,p_input_value_id14 => l_input_value_id14
1501 ,p_entry_value14 => p_value14
1502 ,p_input_value_id15 => l_input_value_id15
1503 ,p_entry_value15 => l_p_value15
1504 ,p_effective_start_date => l_effective_start_date
1505 ,p_effective_end_date => l_effective_end_date
1506 ,p_element_entry_id => l_element_entry_id
1507 ,p_object_version_number => l_object_version_number
1508 ,p_create_warning => l_create_warning);
1509 hr_utility.set_location('elt entry id : '||l_element_entry_id,10);
1510 Exception
1511 when others then
1512 rollback to cr_ent;
1513 raise;
1514 End;
1515 Else
1516 if l_session.noa_id_correct is not null then
1517 -- l_update_mode := 'CORRECTION';
1521 -- Setting directly to 'CORRECTION'
1518 -- Bug 2125660
1519 -- Update mode should be deteremined for each element based on the
1520 -- Current effective start date and effective end date rather than
1522 l_update_mode := return_update_mode(p_id => l_element_entry_id,
1523 p_effective_date => p_effective_date
1524 );
1525 l_noa_id := l_session.noa_id_correct;
1526 else
1527 l_update_mode := return_update_mode(p_id => l_element_entry_id,
1528 p_effective_date => p_effective_date
1529 );
1530 l_noa_id := l_session.noa_id;
1531 end if;
1532 -- for Other pay Elements update nulls as nulls.
1533 for noa_code_rec in c_noa_code loop
1534 l_noa_code := noa_code_rec.code;
1535 end loop;
1536 -- Bug 3854447
1537 -- Get the NOA_FAMILCY_CODE by calling the function
1538 l_noa_fam_code := ghr_pa_requests_pkg.get_noa_pm_family(l_noa_id);
1539 --
1540 hr_utility.set_location('l_noa_id is ' || l_noa_id,2);
1541 hr_utility.set_location('l_noa_code is ' || l_noa_code,2);
1542 hr_utility.set_location('l_noa_fam_code is ' || l_noa_fam_code,2);
1543 If l_noa_code = '819' or l_noa_code = '818' or l_noa_code = '810' or
1544 l_noa_fam_code like 'GHR_SAL%' then
1545 l_value1 := p_value1;
1546 l_value2 := p_value2;
1547 l_value3 := p_value3;
1548 l_value4 := p_value4;
1549 l_value5 := p_value5;
1550 l_value6 := p_value6;
1551 l_value7 := p_value7;
1552 l_value8 := p_value8;
1553 l_value9 := p_value9;
1554 l_value10 := p_value10;
1555 l_value11 := p_value11;
1556 l_value12 := p_value12;
1557 l_value13 := p_value13;
1558 l_value14 := p_value14;
1559 l_value15 := l_p_value15;
1560 End if;
1561
1562 --Bug 2835929
1563 --Added Check to Ex-Emp awards,Date of Ex-Emp award earned can be nullified
1564 --Bug 3531369 for 850 action amounts entered can be nullified.
1565 IF l_noa_code IN('825','840','841','842','843','844','845','878','879','850') and p_value10 is NULL THEN
1566 l_value10 :=p_value10;
1567 END IF;
1568
1569 --Pradeep start of Bug 3209599
1570 IF p_element_name = 'Recruitment Bonus' AND p_value3 IS NULL AND p_value2 IS NOT NULL THEN
1571 l_value3 := p_value3;
1572 END IF;
1573 IF p_element_name = 'Relocation Bonus' AND p_value3 IS NULL AND p_value2 IS NOT NULL THEN
1574 l_value3 := p_value3;
1575 END IF;
1576 --Pradeep end of Bug 3209599
1577
1578 --Bug 3257055
1579 --During Correction to Award, if only amount is entered, update the percentage field with NULL
1580 -- For element "Federal Awards", p_value3 stores 'Amount or Hours' and p_value4 stores 'Percentage'.
1581
1582 IF l_noa_fam_code LIKE 'AWARD%' AND
1583 p_value3 is NOT NULL AND
1584 p_value4 IS NULL THEN
1585 l_value4 := NULL;
1586 END IF;
1587 --Bug 3257055
1588
1589 -- Bug 2709841 When Retention percentage is made null, then update the percentage field with null.
1590 IF p_element_name = 'Retention Allowance' AND p_value2 IS NULL AND p_value1 IS NOT NULL THEN
1591 l_value2 := p_value2;
1592 END IF;
1593
1594 hr_utility.set_location('l_element_entry_id' || to_char(l_element_entry_id),2);
1595 hr_utility.set_location('p_value1 is ' || p_value1,2);
1596 hr_utility.set_location('l_value1 is ' || l_value1,2);
1597 hr_utility.set_location('p_value2 is ' || p_value2,2);
1598 hr_utility.set_location('l_value2 is ' || l_value2,2);
1599 hr_utility.set_location('p_value3 is ' || p_value3,2);
1600 hr_utility.set_location('l_value3 is ' || l_value3,2);
1601 hr_utility.set_location('p_value4 is ' || p_value4,2);
1602 hr_utility.set_location('l_value4 is ' || l_value4,2);
1603 hr_utility.set_location('p_value5 is ' || p_value5,2);
1604 hr_utility.set_location('l_value5 is ' || l_value5,2);
1605
1606 -- Bug#2759379 Added this condition to facilitate user to make Eligibility Expiration to NULL
1607 IF p_element_name = 'FEGLI' and p_value2 is null then
1608 l_value2 := null;
1609 END IF;
1610 -- Bug#2759379
1611
1612 --Bug 3531369
1613 --Bug 3617295 Added Within Grade Increase to the If statement
1614 IF p_element_name IN('MDDDS Special Pay','Within Grade Increase',
1615 'Foreign Transfer Allowance') THEN
1616 IF p_value1 IS NULL THEN l_value1 := NULL; END IF;
1617 IF p_value2 IS NULL THEN l_value2 := NULL; END IF;
1618 IF p_value3 IS NULL THEN l_value3 := NULL; END IF;
1619 IF p_value4 IS NULL THEN l_value4 := NULL; END IF;
1620 IF p_value5 IS NULL THEN l_value5 := NULL; END IF;
1621 IF p_value6 IS NULL THEN l_value6 := NULL; END IF;
1622 IF p_value7 IS NULL THEN l_value7 := NULL; END IF;
1623 IF p_value8 IS NULL THEN l_value8 := NULL; END IF;
1624 IF p_value9 IS NULL THEN l_value9 := NULL; END IF;
1625 IF p_value10 IS NULL THEN l_value10 := NULL; END IF;
1626
1627 END IF;
1628 --Bug 3531369.
1629
1630
1634 (p_datetrack_update_mode => l_update_mode
1631 begin
1632 savepoint upd_ent;
1633 py_element_entry_api.update_element_entry
1635 ,p_effective_date => p_effective_date
1636 ,p_business_group_id => l_business_group_id
1637 ,p_element_entry_id => l_element_entry_id
1638 ,p_object_version_number => l_object_version_number
1639 ,p_input_value_id1 => l_input_value_id1
1640 ,p_entry_value1 => nvl(p_value1,l_value1)
1641 ,p_input_value_id2 => l_input_value_id2
1642 ,p_entry_value2 => nvl(p_value2,l_value2)
1643 ,p_input_value_id3 => l_input_value_id3
1644 ,p_entry_value3 => nvl(p_value3,l_value3)
1645 ,p_input_value_id4 => l_input_value_id4
1646 ,p_entry_value4 => nvl(p_value4,l_value4)
1647 ,p_input_value_id5 => l_input_value_id5
1648 ,p_entry_value5 => nvl(p_value5,l_value5)
1649 ,p_input_value_id6 => l_input_value_id6
1650 ,p_entry_value6 => nvl(p_value6,l_value6)
1651 ,p_input_value_id7 => l_input_value_id7
1652 ,p_entry_value7 => nvl(p_value7,l_value7)
1653 ,p_input_value_id8 => l_input_value_id8
1654 ,p_entry_value8 => nvl(p_value8,l_value8)
1655 ,p_input_value_id9 => l_input_value_id9
1656 ,p_entry_value9 => nvl(p_value9,l_value9)
1657 ,p_input_value_id10 => l_input_value_id10
1658 ,p_entry_value10 => nvl(p_value10,l_value10)
1659 ,p_input_value_id11 => l_input_value_id11
1660 ,p_entry_value11 => nvl(p_value11,l_value11)
1661 ,p_input_value_id12 => l_input_value_id12
1662 ,p_entry_value12 => nvl(p_value12,l_value12)
1663 ,p_input_value_id13 => l_input_value_id13
1664 ,p_entry_value13 => nvl(p_value13,l_value13)
1665 ,p_input_value_id14 => l_input_value_id14
1666 ,p_entry_value14 => nvl(p_value14,l_value14)
1667 ,p_input_value_id15 => l_input_value_id15
1668 ,p_entry_value15 => nvl(l_p_value15,l_value15)
1669 ,p_effective_start_date => l_effective_start_date
1670 ,p_effective_end_date => l_effective_end_date
1671 ,p_update_warning => l_update_warning);
1672 Exception
1673 when others then
1674 rollback to upd_ent;
1675 raise;
1676 End;
1677 End if;
1678 --
1679 -- The following logic does not work until the procedure
1680 -- py_element_entry_api.update_element_entry will return p_update_warning
1681 -- flag.
1682 --
1683 end if;
1684 End if;
1685
1686 -- Bug#4486823 RRR Changes Added code to test RRR Technical Feasibility
1687 IF p_element_name like '%Incentive Biweekly%' and l_biweekly_end_date IS NOT NULL THEN
1688 ghr_history_api.get_g_session_var(l_session);
1689 IF l_session.noa_id_correct is NULL THEN
1690 BEGIN
1691 SAVEPOINT del_ent;
1692 pay_element_entry_api.delete_element_entry
1693 (p_validate => false
1694 ,p_datetrack_delete_mode => 'DELETE'
1695 ,p_effective_date => l_biweekly_end_date
1696 ,p_element_entry_id => l_element_entry_id
1697 ,p_object_version_number => l_object_version_number
1698 ,p_effective_start_date => l_effective_start_date
1699 ,p_effective_end_date => l_effective_end_date
1700 ,p_delete_warning => l_delete_warning
1701 );
1702 EXCEPTION
1703 WHEN OTHERS THEN
1704 ROLLBACK to del_ent;
1705 RAISE;
1706 END;
1707 END IF;
1708 END IF;
1709 -- END of code to test RRR Technical Feasibility
1710 --
1711
1712 hr_utility.set_location(' Leaving:'||l_proc, 20);
1713 Exception when others then
1714 --
1715 -- Reset IN OUT parameters and set OUT parameters
1716 --
1717 p_process_warning := null;
1718 raise;
1719 end process_sf52_element;
1720 --
1721 end ghr_element_api;