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