DBA Data[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;