DBA Data[Home] [Help]

PACKAGE BODY: APPS.GHR_US_NFC_EXTRACTS

Source


1 PACKAGE BODY GHR_US_NFC_EXTRACTS AS
2 /* $Header: ghrusnfcpa.pkb 120.32 2006/02/15 00:38:42 sumarimu noship $ */
3 
4 -- =============================================================================
5 -- ~ Package body variables
6 -- =============================================================================
7 
8    g_proc_name  constant varchar2(200) :='GHR_US_NFC_Extracts.';
9    g_debug      boolean;
10    g_remark_cnt NUMBER;
11    g_assignment_id NUMBER;
12 -- =============================================================================
13 -- ~ Package body cursors
14 -- =============================================================================
15 
16    -- Cursor to check has a valid personnel action within the extract date range
17    -- Bug 4923586
18    CURSOR csr_ghr_per (c_person_id      in number
19                       ,c_assignment_id  in number
20                       ,c_ext_start_date in date
21                       ,c_ext_end_date   in date) is
22    SELECT gpr.person_id
23          ,gpr.employee_assignment_id
24          ,gpr.effective_date
25          ,gpr.last_update_date
26          ,gpr.pa_request_id
27          ,gpr.pa_notification_id
28          ,gpr.first_noa_code
29          ,gpr.second_noa_code
30      FROM ghr_pa_requests gpr
31     WHERE
32          (TRUNC(gpr.effective_date) between c_ext_start_date
33                                  and c_ext_end_date
34           or
35    /*       TRUNC(gpr.last_update_date) between c_ext_start_date
36                                    and c_ext_end_date */
37 		TRUNC(gpr.approval_date) between c_ext_start_date
38                                    and c_ext_end_date
39           )
40       AND TRUNC(gpr.effective_date) <=  c_ext_end_date
41       AND gpr.person_id = c_person_id
42       AND(gpr.first_noa_code NOT IN (825,840,841,842,843,844,
43                                  845,846,847,848,878,879)
44            --or
45 		   AND
46            (--gpr.second_noa_code IS NOT NULL AND -- Bug 5031363
47             NVL(gpr.second_noa_code,-1) NOT IN (825,840,841,842,843,844,
48                                  845,846,847,848,878,879))
49           )
50       AND gpr.pa_notification_id IS NOT NULL
51 	  ORDER BY effective_date;
52       --AND gpr.employee_assignment_id = c_assignment_id;
53 	  -- Bug 4629647
54 --Added by Gattu
55 -- =============================================================================
56 -- Cursor to get the extract record id
57 -- =============================================================================
58    CURSOR csr_ext_rcd_id(c_hide_flag	IN VARCHAR2
59 		     ,c_rcd_type_cd	IN VARCHAR2) IS
60     SELECT rcd.ext_rcd_id
61      FROM  ben_ext_rcd         rcd
62          ,ben_ext_rcd_in_file rin
63          ,ben_ext_dfn dfn
64     WHERE dfn.ext_dfn_id   = ben_ext_thread.g_ext_dfn_id
65       AND rin.ext_file_id  = dfn.ext_file_id
66       AND rin.hide_flag    = c_hide_flag     -- Y=Hidden, N=Not Hidden
67       AND rin.ext_rcd_id   = rcd.ext_rcd_id
68       AND rcd.rcd_type_cd  = c_rcd_type_cd;  --S- Sub Header D=Detail,H=Header,F=Footer
69 
70  -- =============================================================================
71 -- Used to get the concurrent request id
72 -- =============================================================================
73    CURSOR csr_org_req (c_ext_dfn_id IN NUMBER
74                      ,c_ext_rslt_id IN NUMBER
75                      ,c_business_group_id IN NUMBER) IS
76     SELECT bba.request_id
77       FROM ben_benefit_actions bba
78      WHERE bba.pl_id = c_ext_rslt_id
79        AND bba.pgm_id = c_ext_dfn_id
80        AND bba.business_group_id = c_business_group_id;
81 
82    -- Cursor to check has a valid Processed  Individual Award within
83    -- the extract date range
84    CURSOR csr_ghr_awd (c_person_id      in number
85                       ,c_assignment_id  in number
86                       ,c_ext_start_date in date
87                       ,c_ext_end_date   in date) is
88    SELECT gpr.person_id
89          ,gpr.employee_assignment_id
90          ,gpr.effective_date
91          ,gpr.last_update_date
92          ,gpr.pa_request_id
93          ,gpr.pa_notification_id
94          ,gpr.first_noa_code
95          ,gpr.second_noa_code
96      FROM ghr_pa_requests gpr
97     WHERE(TRUNC(gpr.effective_date) between c_ext_start_date
98                                  and c_ext_end_date
99           or
100          /* TRUNC(gpr.last_update_date) between c_ext_start_date
101                                    and c_ext_end_date */
102 		  TRUNC(gpr.approval_date) between c_ext_start_date
103                                    and c_ext_end_date
104           )
105       AND TRUNC(gpr.effective_date) <=  c_ext_end_date
106       AND(gpr.first_noa_code in (825,840,841,842,843,844,
107                                  845,846,847,848,878,879)
108            or
109            (gpr.second_noa_code is not null and
110             gpr.second_noa_code in (825,840,841,842,843,844,
111                                     845,846,847,848,878,879)
112             )
113           )
114       AND gpr.pa_notification_id is not null
115       AND gpr.person_id = c_person_id
116       AND gpr.employee_assignment_id = c_assignment_id;
117 
118    --Cursor to get address only when the rpa is appointment
119     CURSOR csr_per_add_apt (c_person_id      in number
120                      ,c_ext_end_date   in date) is
121     SELECT gph.*
122       FROM ghr_addresses_h_v gph
123      WHERE gph.person_id  = c_person_id
124 		AND (gph.primary_flag='Y' OR gph.address_type = 'M') -- Bug 5037078
125        AND gph.business_group_id = g_business_group_id
126        AND gph.effective_date <=  c_ext_end_date
127      ORDER by gph.pa_history_id desc;
128 
129 
130    -- Cursor to check if the person has an address change within the extract
131    -- date range.
132    CURSOR csr_per_add(c_person_id      in number
133                      ,c_ext_start_date in date
134                      ,c_ext_end_date   in date) is
135     SELECT gph.*
136       FROM ghr_addresses_h_v gph
137      WHERE gph.person_id  = c_person_id
138 	   AND (gph.primary_flag='Y' OR gph.address_type = 'M') -- Bug 5037078
139        AND gph.business_group_id = g_business_group_id
140        AND(TRUNC(gph.effective_date) between c_ext_start_date
141                                   and c_ext_end_date
142            or
143            TRUNC(gph.process_date) between c_ext_start_date
144                                 and c_ext_end_date
145            )
146        AND TRUNC(gph.effective_date) <=  c_ext_end_date
147      ORDER by gph.pa_history_id desc;
148 
149    -- Cursor to get the remarks for a given RPA id
150    CURSOR csr_rem (c_request_id in number
151                    ,c_effective_date date) is
152     SELECT gpr.remark_id
153          ,gpr.pa_request_id
154          ,gpr.pa_remark_id
155          ,code
156      FROM ghr_pa_remarks gpr
157          ,ghr_remarks gr
158     WHERE pa_request_id = c_request_id
159       AND gr.remark_id=gpr.remark_id
160       AND c_effective_date between gr.date_from
161                                and NVL(gr.date_to,to_date('12/31/4712','MM/DD/YYYY'))
162     ORDER BY remark_id;
163 
164    -- Cursor to get the enter record for a given pa_request_id
165    CURSOR csr_rpa_rec(c_pa_request_id in number) is
166    SELECT gpr.*
167      FROM ghr_pa_requests  gpr
168     WHERE pa_request_id = c_pa_request_id;
169 
170    -- Cursor to get the extract record id
171    CURSOR csr_ext_rcd(c_hide_flag in varchar2
172                      ,c_rcd_type_cd in varchar2
173                       ) is
174    SELECT rcd.ext_rcd_id
175      FROM ben_ext_rcd         rcd
176          ,ben_ext_rcd_in_file rin
177          ,ben_ext_dfn dfn
178     WHERE dfn.ext_dfn_id   = Ben_Ext_Thread.g_ext_dfn_id -- The extract executing currently
179       AND rin.ext_file_id  = dfn.ext_file_id
180       AND rin.hide_flag    = c_hide_flag    -- Y=Hidden, N=Not Hidden
181       AND rin.ext_rcd_id   = rcd.ext_rcd_id
182       AND rcd.rcd_type_cd  = c_rcd_type_cd; -- D=Detail,H=Header,F=Footer
183 
184    -- Cursor to get the extract result dtl record for a person id
185    CURSOR csr_rslt_dtl(c_person_id      in number
186                       ,c_ext_rslt_id    in number
187                       ,c_ext_dtl_rcd_id in number ) is
188    SELECT *
189      FROM ben_ext_rslt_dtl dtl
190     WHERE dtl.ext_rslt_id = c_ext_rslt_id
191       AND dtl.person_id   = c_person_id
192       AND dtl.ext_rcd_id  = c_ext_dtl_rcd_id;
193 
194    -- Get the benefit action details
195    CURSOR csr_ben (c_ext_dfn_id in number
196                   ,c_ext_rslt_id in number
197                   ,c_business_group_id in number) is
198    SELECT ben.pgm_id
199          ,ben.pl_id
200          ,ben.benefit_action_id
201          ,ben.business_group_id
202          ,ben.process_date
203          ,ben.request_id
204      FROM ben_benefit_actions ben
205     WHERE ben.pl_id  = c_ext_rslt_id
206       AND ben.pgm_id = c_ext_dfn_id
207       AND ben.business_group_id = c_business_group_id;
208 
209 
210 
211 --============================================================================
212 --get_rpa_extra_info_val
213 --===========================================================================
214 FUNCTION get_rpa_extra_info_val (p_rpa_req_id  IN NUMBER
215                                 ,p_info_type   IN VARCHAR2
216                                 )
217 RETURN ghr_pa_request_extra_info%ROWTYPE IS
218 
219 CURSOR c_get_val (cp_rpa_req_id  NUMBER
220                  ,cp_info_type   ghr_pa_request_extra_info.information_type%TYPE
221                  )
222 IS
223 SELECT *
224  FROM ghr_pa_request_extra_info gpre
225 WHERE gpre.pa_request_id=cp_rpa_req_id
226   AND information_type=cp_info_type;
227 
228 l_get_val ghr_pa_request_extra_info%ROWTYPE;
229 
230 BEGIN
231 
232  OPEN c_get_val (p_rpa_req_id
233                 ,p_info_type
234                 );
235  FETCH c_get_val INTO l_get_val;
236  CLOSE c_get_val;
237 
238  RETURN (l_get_val);
239 END;
240 
241 --============================================================================
242 --Get generic pay period number
243 --============================================================================
244 
245 FUNCTION get_gen_pay_period_number (p_payroll_id             IN NUMBER
246                                    ,p_business_group_id      IN NUMBER
247                                    ,p_effective_date         IN DATE
248                                    ,p_start_date             IN DATE
249                                    ,p_end_date               IN DATE
250                                     )
251 RETURN NUMBER IS
252 
253 CURSOR c_get_period_num (cp_payroll_id              NUMBER
254                         ,cp_business_group_id       NUMBER
255                         ,cp_effective_date          DATE
256                         )
257 IS
258 SELECT ptp.period_num
259  FROM  per_time_periods ptp
260 WHERE   ptp.payroll_id=p_payroll_id
261   AND  cp_effective_date BETWEEN ptp.start_date
262                              AND ptp.end_date;
263 
264 l_get_period_num c_get_period_num%ROWTYPE;
265 BEGIN
266 
267  OPEN c_get_period_num( p_payroll_id
268                        ,p_business_group_id
269                        ,p_effective_date
270                        );
271  FETCH c_get_period_num INTO l_get_period_num;
272  CLOSE c_get_period_num;
273  RETURN(NVL(l_get_period_num.period_num,-1));
274 
275 END;
276 --============================================================================
277 --Get pay period number
278 --============================================================================
279 
280 FUNCTION get_pay_period_number (p_person_id              IN  NUMBER
281                                ,p_assignment_id          IN  NUMBER
282                                ,p_business_group_id      IN  NUMBER
283                                ,p_effective_date         IN  DATE
284                                ,p_position_id            OUT NOCOPY  NUMBER
285                                ,p_start_date             OUT NOCOPY  DATE
286                                ,p_end_date               OUT NOCOPY  DATE
287                                )
288 RETURN NUMBER IS
289 CURSOR c_get_period_num (cp_assignment_id           NUMBER
290                         ,cp_business_group_id       NUMBER
291                         ,cp_effective_date          DATE
292                         )
293 IS
294 SELECT ptp.period_num
295       ,ptp.start_date start_date
296       ,ptp.end_date   end_date
297       ,paa.position_id
298  FROM  per_time_periods ptp
299       ,per_all_assignments_f paa
300 WHERE  paa.assignment_id = cp_assignment_id
301   AND  paa.business_group_id = cp_business_group_id
302   AND  cp_effective_date BETWEEN paa.effective_start_date
303                              AND paa.effective_end_date
304   AND  paa.payroll_id  =ptp.payroll_id
305   AND  cp_effective_date BETWEEN ptp.start_date
306                              AND ptp.end_date;
307 i                per_all_assignments_f.business_group_id%TYPE;
308 l_get_period_num c_get_period_num%ROWTYPE;
309 l_get_period_num_temp c_get_period_num%ROWTYPE;
310 l_start_date  DATE;
311 l_end_date    DATE;
312 BEGIN
313  l_get_period_num_temp:=NULL;
314  IF p_assignment_id IS NOT NULL AND p_assignment_id <>-1 THEN
315   OPEN c_get_period_num( p_assignment_id
316                        ,p_business_group_id
317                        ,p_effective_date
318                        );
319   FETCH c_get_period_num INTO l_get_period_num;
320   CLOSE c_get_period_num;
321   l_start_date := l_get_period_num.start_date;
322   l_end_date   := l_get_period_num.end_date;
323   p_position_id := l_get_period_num.position_id;
324 
325  END IF;
326 
327  i := g_business_group_id;
328 
329  IF l_get_period_num.period_num IS NULL THEN
330   l_get_period_num.period_num:=
331   get_gen_pay_period_number (p_payroll_id     =>g_extract_params(i).payroll_id
332                              ,p_business_group_id =>p_business_group_id
333                              ,p_effective_date    =>p_effective_date
334                              ,p_start_date      =>l_start_date
335                              ,p_end_date         =>l_end_date
336                              );
337  END IF;
338  p_start_date:=l_start_date;
339  p_end_date  :=l_end_date;
340  IF l_get_period_num.period_num = 1 THEN
341  --Get previous max pay period
342  OPEN c_get_period_num( p_assignment_id
343                        ,p_business_group_id
344                        ,l_start_date-1
345                        );
346   FETCH c_get_period_num INTO l_get_period_num_temp;
347   CLOSE c_get_period_num;
348   IF l_get_period_num_temp.period_num IS NULL THEN
349     l_get_period_num_temp.period_num:=26;
350   END IF;
351   RETURN (l_get_period_num_temp.period_num);
352  ELSE
353   RETURN((l_get_period_num.period_num-1));
354  END IF;
355  --RETURN(l_get_period_num.period_num);
356 
357 END;
358 
359 --==============================================================================
360 --Determine_address_chk
361 --==============================================================================
362 
363 PROCEDURE Determine_address_chk ( p_person_id          NUMBER
364                        ,p_assignment_id           NUMBER
365                        ,p_business_group_id       NUMBER
366                        ,p_effective_date          DATE
367                        ,p_request_id              NUMBER
368                        ,p_addr_type               VARCHAR2
369                         )
370 IS
371 CURSOR c_get_pr_add (cp_person_id NUMBER
372                         ,cp_ext_end_date Date)
373    IS
374    SELECT	gph.*
375       FROM ghr_addresses_h_v gph
376      WHERE gph.person_id  = cp_person_id
377        AND gph.primary_flag='Y'
378        AND gph.business_group_id = g_business_group_id
379        AND gph.effective_date <=  cp_ext_end_date
380        ORDER BY gph.effective_date desc,gph.pa_history_id desc;
381 
382    CURSOR c_get_m_add (cp_person_id NUMBER
383                       ,cp_ext_end_date Date)
384    IS
385    SELECT gph.*
386       FROM ghr_addresses_h_v gph
387      WHERE gph.person_id  = cp_person_id
388        AND gph.address_type='M'
389        AND gph.business_group_id = g_business_group_id
390        AND gph.effective_date <=  cp_ext_end_date
391      ORDER by gph.effective_date desc,gph.pa_history_id desc;
392 
393 CURSOR c_get_state (cp_effective_date   DATE
394                    ,cp_state            VARCHAR2
395                    )
396 IS
397 SELECT SUBSTR(duty_station_code,1,2) state_code
398 FROM ghr_duty_stations_f dut
399 WHERE duty_station_code LIKE '%0000000' AND
400 (
401  (substr(duty_station_code,1,1)
402 IN ('1','2','3','4','5','6','7','8','9','0')
403 AND  substr (duty_station_code,2,1)
404 IN ('1','2','3','4','5','6','7','8','9','0'))
405 OR   substr(duty_station_code,1,2)
406 IN ('AQ','GQ','RM','PS','VQ','FM','CQ','RQ') )
407 AND trunc(cp_effective_date)
408 BETWEEN effective_Start_date AND effective_end_date
409 AND EXISTS (SELECT 'X' FROM hr_lookups hrl WHERE lookup_type='US_STATE'
410             AND UPPER(hrl.MEANING)=dut.name
411             AND hrl.lookup_code=cp_state);
412 
413 /*CURSOR c_get_county (cp_state_code       VARCHAR2
414                     ,cp_effective_date   DATE
415                     ,cp_county_name      VARCHAR2)
416 IS
417 SELECT SUBSTR(duty_station_code,7,3) county_code
418 FROM ghr_duty_stations_f dut
419 WHERE duty_station_code like  cp_state_code ||  '0000%'
420 AND substr(duty_station_code,7,3) <> '000'
421 AND cp_effective_date BETWEEN
422 effective_Start_date and effective_end_Date
423 AND dut.name=UPPER(cp_county_name);*/
424 
425 
426 CURSOR c_get_county (cp_state_code       VARCHAR2
427                     ,cp_effective_date   DATE
428                     ,cp_city_name      VARCHAR2)
429 IS
430 
431 SELECT dut.duty_station_code county_code
432   FROM ghr_duty_stations_f dut
433 WHERE
434 dut.duty_station_code IN (
435                           SELECT  SUBSTR(dut1.duty_station_code,0,2)||'0000'||SUBSTR(dut1.duty_station_code,7,3)
436                             FROM ghr_duty_stations_f dut1,ghr_duty_stations_f dut2
437                            WHERE dut1.name= UPPER(cp_city_name) AND dut2.duty_station_code =cp_state_code||'0000000'
438                              AND SUBSTR(dut1.duty_station_code,0,2) = SUBSTR(dut2.duty_station_code,0,2)
439                              AND substr(dut2.duty_station_code,3,7) = '0000000'
440                              AND cp_effective_date  BETWEEN dut1.effective_start_date
441                                                         AND dut1.effective_end_date
442                              AND cp_effective_date  BETWEEN dut2.effective_start_date
443                                                         AND dut2.effective_end_date
444                            )
445 AND cp_effective_date  BETWEEN dut.effective_start_date
446                            AND dut.effective_end_date;
447 
448 
449 CURSOR c_get_city (cp_state_code        VARCHAR2
450                   ,cp_county_code       VARCHAR2
451                   ,cp_effective_date    DATE
452                   ,cp_city_name         VARCHAR2
453                   )
454 IS
455 SELECT substr(duty_station_code,3,4) city_code
456 FROM ghr_duty_stations_f dut
457 WHERE duty_station_code LIKE
458 cp_state_code || '%' ||   cp_county_code
459 AND substr(duty_station_code,3,4) <> '0000'
460 and trunc(cp_effective_date)
461 BETWEEN effective_Start_date and effective_end_Date
462 AND dut.name=UPPER(cp_city_name);
463 
464 
465 l_get_state      c_get_state%ROWTYPE;
466 l_get_county     c_get_county%ROWTYPE;
467 l_get_city       c_get_city%ROWTYPE;
468 l_get_pr_add     c_get_m_add%ROWTYPE;
469 BEGIN
470  IF p_addr_type='N' THEN
471    g_rpa_add_attr(p_assignment_id).address_line1_chk :=g_address_rec(p_assignment_id).address_line1;
472    g_rpa_add_attr(p_assignment_id).address_line2_chk :=g_address_rec(p_assignment_id).address_line2;
473    g_rpa_add_attr(p_assignment_id).address_line3_chk :=g_address_rec(p_assignment_id).address_line3;
474    g_rpa_add_attr(p_assignment_id).add_county_chk :=g_address_rec(p_assignment_id).region_1;
475    g_rpa_add_attr(p_assignment_id).zip_cd_chk :=g_address_rec(p_assignment_id).postal_code;
476    IF g_address_rec(p_assignment_id).region_2='AA'  THEN
477     g_rpa_add_attr(p_assignment_id).add_state_chk :='91';
478 
479    ELSIF g_address_rec(p_assignment_id).region_2='AE' THEN
480     g_rpa_add_attr(p_assignment_id).add_state_chk :='92';
481 
482    ELSIF g_address_rec(p_assignment_id).region_2='AP' THEN
483    g_rpa_add_attr(p_assignment_id).add_state_chk :='98' ;
484   ELSE
485    IF g_address_rec(p_assignment_id).region_2='FM' THEN
486 
487     g_rpa_add_attr(p_assignment_id).add_state_chk :='FM';
488 
489    ELSIF g_address_rec(p_assignment_id).region_2='MP' THEN
490 
491     g_rpa_add_attr(p_assignment_id).add_state_chk :='CQ';
492 
493    ELSE
494     OPEN c_get_state (p_effective_date
495                      ,g_address_rec(p_assignment_id).region_2
496                    );
497     FETCH c_get_state INTO l_get_state;
498     CLOSE c_get_state;
499 
500     g_rpa_add_attr(p_assignment_id).add_state_chk:=l_get_state.state_code;
501    END IF;
502 
503    IF g_address_rec(p_assignment_id).region_1 IS NULL THEN
504     OPEN c_get_county (g_rpa_add_attr(p_assignment_id).add_state_chk
505                        ,p_effective_date
506                        ,g_address_rec(p_assignment_id).town_or_city);
507     FETCH c_get_county INTO l_get_county;
508     CLOSE c_get_county;
509 
510    g_rpa_add_attr(p_assignment_id).add_county_chk :=l_get_county.county_code;
511    g_address_rec(p_assignment_id).region_1:=l_get_county.county_code;
512    END IF;
513     OPEN c_get_city (g_rpa_add_attr(p_assignment_id).add_state_chk
514                   ,SUBSTR (g_address_rec(p_assignment_id).region_1,7,3)
515                   ,p_effective_date
516                   ,g_address_rec(p_assignment_id).town_or_city
517                   );
518     FETCH c_get_city INTO l_get_city;
519     CLOSE c_get_city;
520 
521     g_rpa_add_attr(p_assignment_id).add_city_chk :=l_get_city.city_code;
522 
523   END IF;
524  ELSE
525   OPEN c_get_m_add (p_person_id
526                      ,p_effective_date);
527   FETCH c_get_m_add INTO l_get_pr_add;
528   CLOSE c_get_m_add;
529 
530    g_rpa_add_attr(p_assignment_id).address_line1_chk :=l_get_pr_add.address_line1;
531    g_rpa_add_attr(p_assignment_id).address_line2_chk :=l_get_pr_add.address_line2;
532    g_rpa_add_attr(p_assignment_id).address_line3_chk :=l_get_pr_add.address_line3;
533    g_rpa_add_attr(p_assignment_id).add_county_chk    :=l_get_pr_add.region_1;
534    g_rpa_add_attr(p_assignment_id).zip_cd_chk :=l_get_pr_add.postal_code;
535    IF l_get_pr_add.region_2='AA'  THEN
536     g_rpa_add_attr(p_assignment_id).add_state_chk :='91';
537 
538    ELSIF l_get_pr_add.region_2='AE' THEN
539     g_rpa_add_attr(p_assignment_id).add_state_chk :='92';
540 
541    ELSIF l_get_pr_add.region_2='AP' THEN
542    g_rpa_add_attr(p_assignment_id).add_state_chk :='98' ;
543    ELSE
544     IF l_get_pr_add.region_2='FM' THEN
545 
546     g_rpa_add_attr(p_assignment_id).add_state_chk :='FM';
547 
548    ELSIF l_get_pr_add.region_2='MP' THEN
549 
550     g_rpa_add_attr(p_assignment_id).add_state_chk :='CQ';
551 
552    ELSE
553     OPEN c_get_state (p_effective_date
554                      ,l_get_pr_add.region_2
555                    );
556     FETCH c_get_state INTO l_get_state;
557     CLOSE c_get_state;
558 
559     g_rpa_add_attr(p_assignment_id).add_state_chk:=l_get_state.state_code;
560    END IF;
561 
562    IF l_get_pr_add.region_1 IS NULL THEN
563     OPEN c_get_county (g_rpa_add_attr(p_assignment_id).add_state_chk
564                        ,p_effective_date
565                        ,l_get_pr_add.town_or_city);
566     FETCH c_get_county INTO l_get_county;
567     CLOSE c_get_county;
568 
569     g_rpa_add_attr(p_assignment_id).add_county_chk   :=l_get_county.county_code;
570     l_get_pr_add.region_1:=l_get_county.county_code;
571    END IF;
572     OPEN c_get_city (g_rpa_add_attr(p_assignment_id).add_state_chk
573                   ,SUBSTR (l_get_pr_add.region_1,7,3)
574                   ,p_effective_date
575                   ,l_get_pr_add.town_or_city
576                   );
577     FETCH c_get_city INTO l_get_city;
578     CLOSE c_get_city;
579 
580     g_rpa_add_attr(p_assignment_id).add_city_chk :=l_get_city.city_code;
581 
582   END IF;
583  END IF;
584 END;
585 
586 
587 
588 
589 
590 
591 --==============================================================================
592 --Determine_address_primary
593 --==============================================================================
594 
595 PROCEDURE Determine_address_pr ( p_person_id          NUMBER
596                        ,p_assignment_id           NUMBER
597                        ,p_business_group_id       NUMBER
598                        ,p_effective_date          DATE
599                        ,p_request_id              NUMBER
600                        ,p_addr_type               VARCHAR2
601                         )
602 IS
603 CURSOR c_get_pr_add (cp_person_id NUMBER
604                         ,cp_ext_end_date Date)
605    IS
606    SELECT  gph.*
607       FROM ghr_addresses_h_v gph
608      WHERE gph.person_id  = cp_person_id
609        AND gph.primary_flag='Y'
610        AND gph.business_group_id = g_business_group_id
611        AND gph.effective_date <=  cp_ext_end_date
612      ORDER by gph.effective_date desc,gph.pa_history_id desc;
613 
614    CURSOR c_get_m_add (cp_person_id NUMBER
615                       ,cp_ext_end_date Date)
616    IS
617    SELECT gph.*
618       FROM ghr_addresses_h_v gph
619      WHERE gph.person_id  = cp_person_id
620        AND gph.address_type='M'
621        AND gph.business_group_id = g_business_group_id
622        AND gph.effective_date <=  cp_ext_end_date
623      ORDER by gph.effective_date desc,gph.pa_history_id desc;
624 
625 CURSOR c_get_state (cp_effective_date   DATE
626                    ,cp_state            VARCHAR2
627                    )
628 IS
629 SELECT SUBSTR(duty_station_code,1,2) state_code
630 FROM ghr_duty_stations_f dut
631 WHERE duty_station_code LIKE '%0000000' AND
632 (
633  (substr(duty_station_code,1,1)
634 IN ('1','2','3','4','5','6','7','8','9','0')
635 AND  substr (duty_station_code,2,1)
636 IN ('1','2','3','4','5','6','7','8','9','0'))
637 OR   substr(duty_station_code,1,2)
638 IN ('AQ','GQ','RM','PS','VQ','FM','CQ','RQ') )
639 AND trunc(cp_effective_date)
640 BETWEEN effective_Start_date AND effective_end_date
641 AND EXISTS (SELECT 'X' FROM hr_lookups hrl WHERE lookup_type='US_STATE'
642             AND UPPER(hrl.MEANING)=dut.name
643             AND hrl.lookup_code=cp_state);
644 
645 /*CURSOR c_get_county (cp_state_code       VARCHAR2
646                     ,cp_effective_date   DATE
647                     ,cp_county_name      VARCHAR2)
648 IS
649 SELECT SUBSTR(duty_station_code,7,3) county_code
650 FROM ghr_duty_stations_f dut
651 WHERE duty_station_code like  cp_state_code ||  '0000%'
652 AND substr(duty_station_code,7,3) <> '000'
653 AND cp_effective_date BETWEEN
654 effective_Start_date and effective_end_Date
655 AND dut.name=UPPER(cp_county_name);*/
656 
657 CURSOR c_get_county (cp_state_code       VARCHAR2
658                     ,cp_effective_date   DATE
659                     ,cp_city_name      VARCHAR2)
660 IS
661 
662 SELECT dut.duty_station_code county_code
663   FROM ghr_duty_stations_f dut
664 WHERE
665 dut.duty_station_code IN (
666                           SELECT  SUBSTR(dut1.duty_station_code,0,2)||'0000'||SUBSTR(dut1.duty_station_code,7,3)
667                             FROM ghr_duty_stations_f dut1,ghr_duty_stations_f dut2
668                            WHERE dut1.name= UPPER(cp_city_name) AND dut2.duty_station_code =cp_state_code||'0000000'
669                              AND SUBSTR(dut1.duty_station_code,0,2) = SUBSTR(dut2.duty_station_code,0,2)
670                              AND substr(dut2.duty_station_code,3,7) = '0000000'
671                              AND cp_effective_date  BETWEEN dut1.effective_start_date
672                                                         AND dut1.effective_end_date
673                              AND cp_effective_date  BETWEEN dut2.effective_start_date
674                                                         AND dut2.effective_end_date
675                            )
676 AND cp_effective_date  BETWEEN dut.effective_start_date
677                            AND dut.effective_end_date;
678 
679 
680 CURSOR c_get_city (cp_state_code        VARCHAR2
681                   ,cp_county_code       VARCHAR2
682                   ,cp_effective_date    DATE
683                   ,cp_city_name         VARCHAR2
684                   )
685 IS
686 SELECT substr(duty_station_code,3,4) city_code
687 FROM ghr_duty_stations_f dut
688 WHERE duty_station_code LIKE
689 cp_state_code || '%' ||   cp_county_code
690 AND substr(duty_station_code,3,4) <> '0000'
691 and trunc(cp_effective_date)
692 BETWEEN effective_Start_date and effective_end_Date
693 AND dut.name=UPPER(cp_city_name);
694 
695 
696 l_get_state      c_get_state%ROWTYPE;
697 l_get_county     c_get_county%ROWTYPE;
698 l_get_city       c_get_city%ROWTYPE;
699 l_get_pr_add     c_get_pr_add%ROWTYPE;
700 BEGIN
701 
702 
703  IF p_addr_type='Y' THEN
704 	hr_utility.set_location('Entering pr 1' , 1234);
705    g_rpa_add_attr(p_assignment_id).address_line1 :=g_address_rec(p_assignment_id).address_line1;
706    g_rpa_add_attr(p_assignment_id).address_line2 :=g_address_rec(p_assignment_id).address_line2;
707    g_rpa_add_attr(p_assignment_id).address_line3 :=g_address_rec(p_assignment_id).address_line3;
708    g_rpa_add_attr(p_assignment_id).zip_cd    :=g_address_rec(p_assignment_id).postal_code;
709   -- g_rpa_add_attr(p_assignment_id).add_county :=g_address_rec(p_assignment_id).region_1;
710 
711 	hr_utility.set_location('pr Add 1' || g_address_rec(p_assignment_id).address_line1, 1234);
712 
713    IF g_address_rec(p_assignment_id).region_2='AA'  THEN
714 	    g_rpa_add_attr(p_assignment_id).add_state :='91';
715    ELSIF g_address_rec(p_assignment_id).region_2='AE' THEN
716 	    g_rpa_add_attr(p_assignment_id).add_state :='92';
717    ELSIF g_address_rec(p_assignment_id).region_2='AP' THEN
718 		g_rpa_add_attr(p_assignment_id).add_state :='98' ;
719    ELSIF g_address_rec(p_assignment_id).region_2='FM' THEN
720 		g_rpa_add_attr(p_assignment_id).add_state :='FM';
721    ELSIF g_address_rec(p_assignment_id).region_2='MP' THEN
722 		g_rpa_add_attr(p_assignment_id).add_state :='CQ';
723    ELSE
724 		OPEN c_get_state (p_effective_date
725 					 ,g_address_rec(p_assignment_id).region_2
726 				   );
727 		FETCH c_get_state INTO l_get_state;
728 		CLOSE c_get_state;
729 		g_rpa_add_attr(p_assignment_id).add_state:=l_get_state.state_code;
730    END IF; -- IF g_address_rec(p_assignment_id).region_2='AA'
731 
732    hr_utility.set_location('State ' || g_rpa_add_attr(p_assignment_id).add_state,1001);
733 
734 	hr_utility.set_location('County ' || g_address_rec(p_assignment_id).region_1,1001);
735 
736 --   IF g_address_rec(p_assignment_id).region_1 IS NULL THEN
737 		OPEN c_get_county (g_rpa_add_attr(p_assignment_id).add_state
738 						   ,p_effective_date
739 						   ,g_address_rec(p_assignment_id).town_or_city);
740 		FETCH c_get_county INTO l_get_county;
741 		CLOSE c_get_county;
742 		g_address_rec(p_assignment_id).region_1:=l_get_county.county_code;
743 		g_rpa_add_attr(p_assignment_id).add_county := l_get_county.county_code;
744   -- END IF;
745       hr_utility.set_location('County ' || g_rpa_add_attr(p_assignment_id).add_county,1001);
746 
747 	OPEN c_get_city (g_rpa_add_attr(p_assignment_id).add_state
748 				  ,SUBSTR (g_address_rec(p_assignment_id).region_1,7,3)
749 				  ,p_effective_date
750 				  ,g_address_rec(p_assignment_id).town_or_city
751 				  );
752 	FETCH c_get_city INTO l_get_city;
753 	CLOSE c_get_city;
754 	g_rpa_add_attr(p_assignment_id).add_city :=l_get_city.city_code;
755 	hr_utility.set_location('City ' || g_rpa_add_attr(p_assignment_id).add_city,1001);
756 
757  ELSE --  IF p_addr_type='Y' THEN
758 
759   hr_utility.set_location('Entering pr 2' , 1234);
760 
761   OPEN c_get_pr_add (p_person_id
762                      ,p_effective_date);
763   FETCH c_get_pr_add INTO l_get_pr_add;
764   CLOSE c_get_pr_add;
765 
766    hr_utility.set_location('Entering pr 2' || l_get_pr_add.address_line1, 1234);
767    g_rpa_add_attr(p_assignment_id).address_line1 :=l_get_pr_add.address_line1;
768    g_rpa_add_attr(p_assignment_id).address_line2 :=l_get_pr_add.address_line2;
769    g_rpa_add_attr(p_assignment_id).address_line3 :=l_get_pr_add.address_line3;
770    g_rpa_add_attr(p_assignment_id).add_county :=l_get_pr_add.region_1;
771    g_rpa_add_attr(p_assignment_id).zip_cd    :=l_get_pr_add.postal_code;
772 
773    IF l_get_pr_add.region_2='AA'  THEN
774 		g_rpa_add_attr(p_assignment_id).add_state :='91';
775    ELSIF l_get_pr_add.region_2='AE' THEN
776 		g_rpa_add_attr(p_assignment_id).add_state :='92';
777    ELSIF l_get_pr_add.region_2='AP' THEN
778 		g_rpa_add_attr(p_assignment_id).add_state :='98' ;
779    ELSE
780 		IF l_get_pr_add.region_2='FM' THEN
781 		    g_rpa_add_attr(p_assignment_id).add_state :='FM';
782 	    ELSIF l_get_pr_add.region_2='MP' THEN
783 		    g_rpa_add_attr(p_assignment_id).add_state :='CQ';
784 		ELSE
785 			OPEN c_get_state (p_effective_date
786 							 ,l_get_pr_add.region_2
787 						   );
788 			FETCH c_get_state INTO l_get_state;
789 			CLOSE c_get_state;
790 		    g_rpa_add_attr(p_assignment_id).add_state:=l_get_state.state_code;
791 	   END IF; -- IF l_get_pr_add.region_2='FM'
792 
793 	   IF l_get_pr_add.region_1 IS NOT NULL THEN
794 			OPEN c_get_county (g_rpa_add_attr(p_assignment_id).add_state
795 							   ,p_effective_date
796 							   ,l_get_pr_add.town_or_city);
797 			FETCH c_get_county INTO l_get_county;
798 			CLOSE c_get_county;
799 			l_get_pr_add.region_1:=l_get_county.county_code;
800 			g_rpa_add_attr(p_assignment_id).add_county := l_get_county.county_code;
801 	   END IF;
802 
803 		OPEN c_get_city (g_rpa_add_attr(p_assignment_id).add_state
804 					  ,SUBSTR (l_get_pr_add.region_1,7,3)
805 					  ,p_effective_date
806 					  ,l_get_pr_add.town_or_city
807 					  );
808 		FETCH c_get_city INTO l_get_city;
809 		CLOSE c_get_city;
810 	    g_rpa_add_attr(p_assignment_id).add_city :=l_get_city.city_code;
811   END IF; --  IF l_get_pr_add.region_2='AA'
812  END IF; -- IF p_addr_type='Y' THEN
813 
814 
815 END Determine_address_pr;
816 -- =============================================================================
817 -- Populate_add_attr
818 -- ============================================================================
819 PROCEDURE populate_add_attr (p_person_id          NUMBER
820                        ,p_assignment_id           NUMBER
821                        ,p_business_group_id       NUMBER
822                        ,p_effective_date          DATE
823                        ,p_request_id              NUMBER
824                        )
825 IS
826 CURSOR c_get_asg_info
827 IS
828 SELECT position_id
829  FROM per_all_assignments_f paa
830 WHERE paa.assignment_id=p_assignment_id
831   AND paa.business_group_id=p_business_group_id
832   AND p_effective_date BETWEEN paa.effective_start_date
833    and paa.effective_end_date;
834 
835 CURSOR c_ssn (cp_person_id   NUMBER
836              ,cp_business_group_id NUMBER
837              ,cp_effective_date  DATE
838              )
839 IS
840 SELECT national_identifier
841   FROM per_all_people_f ppf
842  WHERE person_id=cp_person_id
843    AND ppf.business_group_id=p_business_group_id
844    AND p_effective_date BETWEEN ppf.effective_start_date
845                             AND ppf.effective_end_date;
846 
847 CURSOR c_get_pos_info (cp_position_id       NUMBER
848                       ,cp_business_group_id NUMBER
849                       ,cp_effective_date    DATE
850                       )
851 IS
852 SELECT pdf.segment3 NFC_Agency_Code,
853         pdf.segment4 POI,
854         pdf.segment7 Grade
855    FROM hr_all_positions_f pos, per_position_definitions pdf
856   WHERE pos.position_definition_id = pdf.position_definition_id
857     AND pos.position_id = cp_position_id
858     AND cp_effective_date between pos.effective_start_date
859     AND pos.effective_end_date
860     AND pos.business_group_id=cp_business_group_id;
861 
862 
863 
864 CURSOR c_get_state (cp_effective_date   DATE
865                    ,cp_state            VARCHAR2
866                    )
867 IS
868 SELECT SUBSTR(duty_station_code,1,2) state_code
869 FROM ghr_duty_stations_f dut
870 WHERE duty_station_code LIKE '%0000000' AND
871 (
872  (substr(duty_station_code,1,1)
873 IN ('1','2','3','4','5','6','7','8','9','0')
874 AND  substr (duty_station_code,2,1)
875 IN ('1','2','3','4','5','6','7','8','9','0'))
876 OR   substr(duty_station_code,1,2)
877 IN ('AQ','GQ','RM','PS','VQ','FM','CQ','RQ') )
878 AND trunc(cp_effective_date)
879 BETWEEN effective_Start_date AND effective_end_date
880 AND EXISTS (SELECT 'X' FROM hr_lookups hrl WHERE lookup_type='US_STATE'
881             AND UPPER(hrl.MEANING)=dut.name
882             AND hrl.lookup_code=cp_state);
883 
884 /*CURSOR c_get_county (cp_state_code       VARCHAR2
885                     ,cp_effective_date   DATE
886                     ,cp_county_name      VARCHAR2)
887 IS
888 SELECT SUBSTR(duty_station_code,7,3) county_code
889 FROM ghr_duty_stations_f dut
890 WHERE duty_station_code like  cp_state_code ||  '0000%'
891 AND substr(duty_station_code,7,3) <> '000'
892 AND cp_effective_date BETWEEN
893 effective_Start_date and effective_end_Date
894 AND dut.name=UPPER(cp_county_name);*/
895 
896 
897 CURSOR c_get_county (cp_state_code       VARCHAR2
898                     ,cp_effective_date   DATE
899                     ,cp_city_name      VARCHAR2)
900 IS
901 
902 SELECT dut.duty_station_code county_code
903   FROM ghr_duty_stations_f dut
904 WHERE
905 dut.duty_station_code IN (
906                           SELECT  SUBSTR(dut1.duty_station_code,0,2)||'0000'||SUBSTR(dut1.duty_station_code,7,3)
907                             FROM ghr_duty_stations_f dut1,ghr_duty_stations_f dut2
908                            WHERE dut1.name= UPPER(cp_city_name) AND dut2.duty_station_code =cp_state_code||'0000000'
909                              AND SUBSTR(dut1.duty_station_code,0,2) = SUBSTR(dut2.duty_station_code,0,2)
910                              AND substr(dut2.duty_station_code,3,7) = '0000000'
911                              AND cp_effective_date  BETWEEN dut1.effective_start_date
912                                                         AND dut1.effective_end_date
913                              AND cp_effective_date  BETWEEN dut2.effective_start_date
914                                                         AND dut2.effective_end_date
915                            )
916 AND cp_effective_date  BETWEEN dut.effective_start_date
917                            AND dut.effective_end_date;
918 
919 
920 CURSOR c_get_city (cp_state_code        VARCHAR2
921                   ,cp_county_code       VARCHAR2
922                   ,cp_effective_date    DATE
923                   ,cp_city_name         VARCHAR2
924                   )
925 IS
926 SELECT substr(duty_station_code,3,4) city_code
927 FROM ghr_duty_stations_f dut
928 WHERE duty_station_code LIKE
929 cp_state_code || '%' ||   cp_county_code
930 AND substr(duty_station_code,3,4) <> '0000'
931 and trunc(cp_effective_date)
932 BETWEEN effective_Start_date and effective_end_Date
933 AND dut.name=UPPER(cp_city_name);
934 
935 
936 
937 
938 l_get_state      c_get_state%ROWTYPE;
939 l_get_county     c_get_county%ROWTYPE;
940 l_get_city       c_get_city%ROWTYPE;
941 l_get_pos_info  c_get_pos_info%ROWTYPE;
942 l_get_asg_info c_get_asg_info%ROWTYPE;
943 l_pos_ag_code   VARCHAR2(30);
944 l_start_date    DATE;
945 l_end_date      DATE;
946 l_position_id   NUMBER;
947 l_posi_extra_info per_position_extra_info%ROWTYPE;
948 l_proc_name  constant varchar2(150) := g_proc_name ||'populate_add_attr';
949 l_ssn  c_ssn%ROWTYPE;
950 BEGIN
951   hr_utility.set_location ('Enter '||l_proc_name,5);
952 
953  /* OPEN c_ssn (p_person_id
954              ,p_business_group_id
955              ,p_effective_date
956              );
957   FETCH c_ssn INTO l_ssn;
958   CLOSE c_ssn;*/
959   OPEN c_get_asg_info;
960   FETCH c_get_asg_info INTO l_get_asg_info;
961   CLOSE c_get_asg_info;
962 
963   g_rpa_add_attr(p_assignment_id).assignment_id := p_assignment_id;
964   g_rpa_add_attr(p_assignment_id).request_id    := p_request_id;
965 
966   hr_utility.set_location (l_proc_name,10);
967    g_rpa_add_attr(p_assignment_id).pay_per_num:=
968                        get_pay_period_number
969                         (p_person_id           => p_person_id
970                         ,p_assignment_id       =>p_assignment_id
971                         ,p_business_group_id   =>p_business_group_id
972                         ,p_effective_date      =>p_effective_date
973                         ,p_position_id         =>l_position_id
974                         ,p_start_date          =>l_start_date
975                         ,p_end_date            =>l_end_date
976                         );
977   --g_rpa_add_attr(p_assignment_id).ssn:=l_ssn.national_identifier;
978 
979   hr_utility.set_location (l_proc_name,15);
980    ghr_history_fetch.fetch_positionei
981                            ( p_position_id      => l_position_id
982                             ,p_information_type =>'GHR_US_POS_GRP3'
983                             ,p_date_effective   => p_effective_date
984                             ,p_pos_ei_data      => l_posi_extra_info);
985 
986   g_rpa_add_attr(p_assignment_id).nfc_agency_code := l_posi_extra_info.poei_information21;
987 
988   hr_utility.set_location (l_proc_name,20);
989    ghr_history_fetch.fetch_positionei
990                            ( p_position_id      => l_position_id
991                             ,p_information_type =>'GHR_US_POS_GRP1'
992                             ,p_date_effective   => p_effective_date
993                             ,p_pos_ei_data      => l_posi_extra_info);
994 
995   g_rpa_add_attr(p_assignment_id).poi := l_posi_extra_info.poei_information1;
996 
997   IF g_rpa_add_attr(p_assignment_id).nfc_agency_code IS NULL OR
998      g_rpa_add_attr(p_assignment_id).poi IS NULL THEN
999 
1000 
1001    OPEN c_get_pos_info( l_position_id
1002                        ,p_business_group_id
1003                        ,p_effective_date
1004                        );
1005    FETCH c_get_pos_info INTO l_get_pos_info;
1006    CLOSE c_get_pos_info;
1007 
1008    IF g_rpa_add_attr(p_assignment_id).nfc_agency_code IS NULL THEN
1009     g_rpa_add_attr(p_assignment_id).nfc_agency_code :=l_get_pos_info.nfc_agency_code;
1010    END IF;
1011    IF g_rpa_add_attr(p_assignment_id).poi IS NULL THEN
1012     g_rpa_add_attr(p_assignment_id).poi := l_get_pos_info.poi;
1013    END IF;
1014   END IF;
1015   hr_utility.set_location (l_proc_name,25);
1016   l_pos_ag_code :=ghr_api.get_position_agency_code_pos
1017                            (p_position_id        =>l_position_id
1018                            ,p_business_group_id  =>p_business_group_id
1019                            ,p_effective_date     =>p_effective_date) ;
1020 
1021   g_rpa_add_attr(p_assignment_id).dept_code := SUBSTR(l_pos_ag_code,0,2);
1022 
1023 
1024   hr_utility.set_location (l_proc_name,30);
1025 
1026 ---This part fetches code from duty station table for state
1027 --county and city.
1028 
1029   IF g_address_rec(p_assignment_id).primary_flag='Y' THEN
1030   Determine_address_pr ( p_person_id         =>p_person_id
1031                        ,p_assignment_id        =>p_assignment_id
1032                        ,p_business_group_id    =>p_business_group_id
1033                        ,p_effective_date       =>p_effective_date
1034                        ,p_request_id           =>p_request_id
1035                        ,p_addr_type            =>'Y'
1036                         );
1037    Determine_address_chk ( p_person_id         =>p_person_id
1038                        ,p_assignment_id        =>p_assignment_id
1039                        ,p_business_group_id    =>p_business_group_id
1040                        ,p_effective_date       =>p_effective_date
1041                        ,p_request_id           =>p_request_id
1042                        ,p_addr_type            =>'Y'
1043                         );
1044  ELSE
1045   Determine_address_pr ( p_person_id         =>p_person_id
1046                        ,p_assignment_id        =>p_assignment_id
1047                        ,p_business_group_id    =>p_business_group_id
1048                        ,p_effective_date       =>p_effective_date
1049                        ,p_request_id           =>p_request_id
1050                        ,p_addr_type            =>'N'
1051                         );
1052    Determine_address_chk ( p_person_id         =>p_person_id
1053                        ,p_assignment_id        =>p_assignment_id
1054                        ,p_business_group_id    =>p_business_group_id
1055                        ,p_effective_date       =>p_effective_date
1056                        ,p_request_id           =>p_request_id
1057                        ,p_addr_type            =>'N'
1058                         );
1059 
1060  END IF;
1061   hr_utility.set_location (l_proc_name,60);
1062 
1063 END;
1064 
1065 
1066 -- =============================================================================
1067 -- Populate_awd_attr
1068 -- ============================================================================
1069 PROCEDURE populate_awd_attr (p_person_id          NUMBER
1070                        ,p_assignment_id           NUMBER
1071                        ,p_business_group_id       NUMBER
1072                        ,p_effective_date          DATE
1073                        ,p_first_noa_cd            VARCHAR2
1074                        ,p_sec_noa_cd              VARCHAR2
1075                        ,p_request_id              NUMBER
1076                        ,p_notification_id         NUMBER
1077                        )
1078 IS
1079 
1080 l_posi_extra_info per_position_extra_info%rowtype;
1081 l_pos_ag_code   VARCHAR2(30);
1082 l_start_date    DATE;
1083 l_end_date      DATE;
1084 l_temp          NUMBER;
1085 
1086 CURSOR c_get_city (cp_state_code VARCHAR2
1087                   ,cp_city_code VARCHAR2
1088                   ,cp_date       DATE
1089                   )
1090 IS
1091 SELECT dut.name
1092   FROM ghr_duty_stations_f dut
1093  WHERE substr(duty_station_code,3,4) = cp_city_code
1094    AND substr(duty_station_code,0,2)= cp_state_code
1095    AND cp_date BETWEEN effective_Start_date
1096    AND effective_end_Date;
1097 
1098 CURSOR c_get_state (cp_state_code VARCHAR2
1099                    ,cp_date       DATE
1100                    )
1101 IS
1102 SELECT pus.state_abbrev name
1103   FROM pay_us_states pus
1104  WHERE UPPER(pus.state_name)=
1105   (SELECT dut.name
1106      FROM  ghr_duty_stations_f dut
1107     WHERE duty_station_code like '%0000000'  AND
1108     (
1109     (SUBSTR(duty_station_code,1,1) in ('1','2','3','4','5','6','7','8','9','0')
1110     AND  SUBSTR (duty_station_code,2,1) in ('1','2','3','4','5','6','7','8','9','0'))
1111     OR   SUBSTR(duty_station_code,1,2) in ('AQ','GQ','RM','PS','VQ','FM','CQ') )
1112     AND cp_date BETWEEN effective_Start_date and effective_end_Date
1113     AND SUBSTR(duty_station_code,0,2)= cp_state_code);
1114 
1115 CURSOR c_get_extra_info (cp_request_id        NUMBER
1116                         ,cp_information_type  VARCHAR2
1117                         )
1118 IS
1119 SELECT *
1120  FROM ghr_pa_request_extra_info gpre
1121 --WHERE gpre.request_id = cp_request_id Bug 4641232 Sundar
1122 WHERE gpre.pa_request_id = cp_request_id
1123   AND gpre.information_type = cp_information_type;
1124 
1125 CURSOR c_get_addr_info (cp_person_id NUMBER
1126                        ,cp_business_group_id NUMBER
1127                        ,cp_effective_date    DATE
1128                        )
1129 IS
1130 SELECT *
1131  FROM per_addresses pa
1132 WHERE pa.person_id = cp_person_id
1133   AND pa.business_group_id=cp_business_group_id
1134   AND cp_effective_date BETWEEN pa.date_from
1135                             AND NVL(pa.date_to,TO_DATE('12/31/4712','MM/DD/YYYY'))
1136   AND pa.primary_flag='Y';
1137 
1138 /*CURSOR c_get_auth_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1139 						c_effective_date ghr_pa_requests.effective_date%TYPE)
1140 IS
1141 SELECT pa_request_id, (effective_date+rownum)-1 auth_date
1142 FROM  ghr_pa_requests
1143 WHERE person_id = c_person_id
1144 AND   first_noa_code NOT IN ('001','002')
1145 AND pa_notification_id IS NOT NULL
1146 AND   effective_date = c_effective_date
1147 ORDER BY last_update_date ASC;
1148 */
1149 
1150 CURSOR c_get_auth_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1151 						c_effective_date ghr_pa_requests.effective_date%TYPE)
1152 IS
1153 SELECT pa_request_id, (effective_date+rownum)-1 auth_date, noa_code
1154 FROM
1155 (
1156 	SELECT  pa_request_id, effective_date, last_update_date,first_noa_code noa_code
1157 	FROM ghr_pa_requests
1158 	WHERE person_id = c_person_id
1159 	AND first_noa_code NOT IN ('001','002')
1160 	AND pa_notification_id IS NOT NULL
1161 	AND effective_date = c_effective_date
1162 UNION ALL
1163 	SELECT  pa_request_id, effective_date, last_update_date,second_noa_code noa_code
1164 	FROM ghr_pa_requests
1165 	WHERE person_id = c_person_id
1166 	AND first_noa_code = '317'
1167 	AND second_noa_code = '825'
1168 	AND pa_notification_id IS NOT NULL
1169 	AND effective_date = c_effective_date
1170 ORDER BY last_update_date
1171 ) par;
1172 
1173 
1174 
1175 CURSOR c_rpas_on_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1176  					c_effective_date ghr_pa_requests.effective_date%TYPE)
1177 IS
1178 SELECT COUNT(*) auth_date
1179 FROM
1180 (
1181 	SELECT  pa_request_id, effective_date, last_update_date,first_noa_code noa_code
1182 	FROM ghr_pa_requests
1183 	WHERE person_id = c_person_id
1184 	AND first_noa_code NOT IN ('001','002')
1185 	AND pa_notification_id IS NOT NULL
1186 	AND effective_date = c_effective_date
1187 UNION ALL
1188 	SELECT  pa_request_id, effective_date, last_update_date,second_noa_code noa_code
1189 	FROM ghr_pa_requests
1190 	WHERE person_id = c_person_id
1191 	AND first_noa_code = '317'
1192 	AND second_noa_code = '825'
1193 	AND pa_notification_id IS NOT NULL
1194 	AND effective_date = c_effective_date
1195 ORDER BY last_update_date
1196 ) par;
1197 
1198 l_no_rpa_count BOOLEAN;
1199 l_auth_date date;
1200 l_noa_code ghr_pa_requests.first_noa_code%type;
1201 
1202 l_get_addr_info c_get_addr_info%ROWTYPE;
1203 
1204 l_get_extra_info   c_get_extra_info%ROWTYPE;
1205 l_temp1  varchar2(80);
1206 l_get_state c_get_state%ROWTYPE;
1207 l_get_city  c_get_city%ROWTYPE;
1208 l_get_ei_val ghr_pa_request_extra_info%ROWTYPE;
1209 BEGIN
1210 
1211   l_no_rpa_count := FALSE;
1212   g_rpa_awd_attr(p_request_id).assignment_id := p_assignment_id;
1213   g_rpa_awd_attr(p_request_id).request_id    := p_request_id;
1214 
1215   IF g_awd_rec(p_request_id).to_position_id IS NULL then
1216      g_awd_rec(p_request_id).to_position_id := g_awd_rec(p_request_id).from_position_id;
1217   END IF;
1218 
1219    ghr_history_fetch.fetch_positionei
1220                            ( p_position_id      => g_awd_rec(p_request_id).to_position_id
1221                             ,p_information_type =>'GHR_US_POS_GRP3'
1222                             ,p_date_effective   => p_effective_date
1223                             ,p_pos_ei_data      => l_posi_extra_info);
1224 
1225   g_rpa_awd_attr(p_request_id).nfc_agency_code := l_posi_extra_info.poei_information21;
1226 
1227   l_pos_ag_code :=ghr_api.get_position_agency_code_pos
1228                            (p_position_id        =>g_awd_rec(p_request_id).to_position_id
1229                            ,p_business_group_id  =>p_business_group_id
1230                            ,p_effective_date     =>p_effective_date) ;
1231 
1232   g_rpa_awd_attr(p_request_id).dept_code := SUBSTR(l_pos_ag_code,0,2);
1233 
1234   g_rpa_awd_attr(p_request_id).pay_per_num:=
1235                        get_pay_period_number
1236                         (p_person_id           => p_person_id
1237                         ,p_assignment_id       =>p_assignment_id
1238                         ,p_business_group_id   =>p_business_group_id
1239                         ,p_effective_date      =>p_effective_date
1240                         ,p_position_id         => l_temp
1241                         ,p_start_date          =>l_start_date
1242                         ,p_end_date            =>l_end_date
1243                         );
1244   g_rpa_awd_attr(p_request_id).dt_cash_awd_from := l_start_date;
1245   g_rpa_awd_attr(p_request_id).dt_cash_awd_to   := l_end_date;
1246 
1247   OPEN c_get_extra_info (p_request_id
1248                         ,'GHR_US_PAR_AWARDS_BONUS'
1249                          );
1250   FETCH c_get_extra_info INTO l_get_extra_info;
1251   CLOSE c_get_extra_info;
1252 
1253   g_rpa_awd_attr(p_request_id).cash_award_agency := l_get_extra_info.rei_information3;
1254   IF
1255   --g_awd_rec(p_request_id).first_noa_code = '300'
1256 --  AND  g_awd_rec(p_request_id).first_noa_code <= '399'
1257 -- Above code commented by Sundar Bug 4641232
1258 	g_awd_rec(p_request_id).noa_family_code   = 'SEPARATION'
1259   AND g_awd_rec(p_request_id).second_noa_code   = '825'
1260   THEN
1261    g_rpa_awd_attr(p_request_id).nat_act_2nd_3pos := '825';
1262    g_rpa_awd_attr(p_request_id).csc_auth_code_2nd_noa:= g_awd_rec(p_request_id).second_action_la_code1;
1263    g_rpa_awd_attr(p_request_id).csc_auth_2ndcode_2nd_noa := g_awd_rec(p_request_id).second_action_la_code2;
1264   ELSIF g_awd_rec(p_request_id).first_noa_code ='001'
1265   OR     g_awd_rec(p_request_id).first_noa_code ='002' THEN
1266    g_rpa_awd_attr(p_request_id).nat_act_2nd_3pos := g_awd_rec(p_request_id).second_noa_code;
1267    g_rpa_awd_attr(p_request_id).nat_act_1st_3_pos := g_awd_rec(p_request_id).first_noa_code;
1268    g_rpa_awd_attr(p_request_id).csc_auth_code_2nd_noa:= g_awd_rec(p_request_id).first_action_la_code1;
1269    g_rpa_awd_attr(p_request_id).csc_auth_2ndcode_2nd_noa := g_awd_rec(p_request_id).first_action_la_code2;
1270   null;
1271   ELSE
1272    g_rpa_awd_attr(p_request_id).nat_act_2nd_3pos := g_awd_rec(p_request_id).first_noa_code;
1273    g_rpa_awd_attr(p_request_id).csc_auth_code_2nd_noa:= g_awd_rec(p_request_id).first_action_la_code1;
1274    g_rpa_awd_attr(p_request_id).csc_auth_2ndcode_2nd_noa := g_awd_rec(p_request_id).first_action_la_code2;
1275   null;
1276   END IF;
1277 
1278   OPEN c_get_addr_info (p_person_id
1279                        ,p_business_group_id
1280                        ,p_effective_date
1281                        );
1282   FETCH c_get_addr_info INTO l_get_addr_info;
1283   CLOSE c_get_addr_info;
1284 
1285  IF g_awd_rec(p_request_id).award_uom='M' THEN
1286   g_rpa_awd_attr(p_request_id).current_cash_award := LPAD(REPLACE(g_awd_rec(p_request_id).award_amount,'.'),7,'0');
1287  ELSIF g_awd_rec(p_request_id).award_uom='H' THEN
1288 
1289   g_rpa_awd_attr(p_request_id).current_cash_award := LPAD(g_awd_rec(p_request_id).award_amount,7,'0');
1290  END IF;
1291 
1292 --derive city and state
1293 --commented due to change in address storage format
1294 --uncommented temporarily
1295  /* OPEN c_get_state (l_get_addr_info.region_2
1296                    ,p_effective_date
1297                    );
1298   FETCH c_get_state INTO l_get_state;
1299   CLOSE c_get_state;
1300 
1301   OPEN c_get_city (l_get_addr_info.region_2
1302                   ,l_get_addr_info.town_or_city
1303                   ,p_effective_date
1304                   );
1305   FETCH c_get_city INTO l_get_city;
1306   CLOSE c_get_city;*/
1307 
1308   g_rpa_awd_attr(p_request_id).chk_mail_addr_ln1 := l_get_addr_info.address_line1;
1309   g_rpa_awd_attr(p_request_id).chk_mail_addr_ln2 := l_get_addr_info.address_line2;
1310   g_rpa_awd_attr(p_request_id).chk_mail_addr_city_name :=l_get_addr_info.town_or_city;  --l_get_city.name;
1311   g_rpa_awd_attr(p_request_id).chk_mail_addr_state_name := l_get_addr_info.region_2; --l_get_state.name;
1312   g_rpa_awd_attr(p_request_id).chk_mail_addr_zip_5 := SUBSTR(l_get_addr_info.postal_code,0,5);
1313   IF LENGTH(LTRIM(RTRIM(l_get_addr_info.postal_code)))>5 THEN
1314   /*g_rpa_awd_attr(p_request_id).chk_mail_addr_zip_4 := SUBSTR(l_get_addr_info.postal_code,
1315                                                       INSTR(REPLACE(l_get_addr_info.postal_code,' ','-'),'-'),5);*/
1316 
1317   g_rpa_awd_attr(p_request_id).chk_mail_addr_zip_4:=SUBSTR(REPLACE(REPLACE (l_get_addr_info.postal_code,
1318                                                   (substr(l_get_addr_info.postal_code, 0,5))),'-'),0,4);
1319   END IF;
1320   g_rpa_awd_attr(p_request_id).chk_mail_addr_zip_2 := NULL; --SUBSTR(l_get_addr_info.postal_code,4,5);
1321 
1322    --derive Authentication Date
1323 /*  l_get_ei_val:=get_rpa_extra_info_val (p_request_id
1324                          ,'GHR_US_PAR_NFC_INFO'
1325                           ); */
1326 	-- Bug 4990382 Get Authentication date.
1327 	FOR l_no_rpas IN c_rpas_on_date(p_person_id,p_effective_date) LOOP
1328 		l_no_rpa_count := TRUE;
1329 	END LOOP;
1330 
1331 	IF g_awd_rec(p_request_id).noa_family_code   = 'SEPARATION'
1332 	  AND g_awd_rec(p_request_id).second_noa_code   = '825' THEN
1333 		 l_noa_code := '825';
1334 	ELSE
1335 		l_noa_code := p_first_noa_cd;
1336 	END IF;
1337 
1338 	IF l_no_rpa_count = TRUE THEN
1339 		FOR l_get_auth_date IN c_get_auth_date(p_person_id,p_effective_date) LOOP
1340 			IF p_request_id = l_get_auth_date.pa_request_id
1341 				AND l_noa_code = l_get_auth_date.noa_code THEN
1342 					l_auth_date := l_get_auth_date.auth_date;
1343 			END IF;
1344 		END LOOP;
1345 	END IF;
1346 
1347 	IF l_no_rpa_count = FALSE THEN
1348 		l_auth_date := p_effective_date;
1349 	END IF;
1350 
1351    l_no_rpa_count := FALSE;
1352    -- End Bug 4990382
1353 
1354   g_rpa_awd_attr(p_request_id).authentication_dt := fnd_date.date_to_canonical(l_auth_date);
1355   l_get_ei_val:=NULL;
1356 
1357   l_get_ei_val:=get_rpa_extra_info_val (p_request_id
1358                          ,'GHR_US_PAR_NFC_AWARD_INFO'
1359                           );
1360 
1361 
1362   g_rpa_awd_attr(p_request_id).awd_case_num            :=l_get_ei_val.rei_information3;
1363   g_rpa_awd_attr(p_request_id).awd_store_act_ind       :=l_get_ei_val.rei_information4;
1364   g_rpa_awd_attr(p_request_id).awd_csh_awd_typ_cd      :=l_get_ei_val.rei_information5;
1365   g_rpa_awd_attr(p_request_id).awd_fir_yr_sav          :=l_get_ei_val.rei_information6;
1366   g_rpa_awd_attr(p_request_id).awd_csh_awd_pay_cd      :=l_get_ei_val.rei_information7;
1367   g_rpa_awd_attr(p_request_id).awd_no_per_csh_awd      :=l_get_ei_val.rei_information8;
1368   g_rpa_awd_attr(p_request_id).awd_acctg_dist_fisyr_cd :=l_get_ei_val.rei_information9;
1369   g_rpa_awd_attr(p_request_id).awd_acctg_dist_appn_cd  :=l_get_ei_val.rei_information10;
1370   g_rpa_awd_attr(p_request_id).awd_acctg_dist_slev_cd  :=l_get_ei_val.rei_information11;
1371   g_rpa_awd_attr(p_request_id).awd_csh_awd_accst_chg   :=l_get_ei_val.rei_information12;
1372   g_rpa_awd_attr(p_request_id).awd_csh_awd_cd          :=l_get_ei_val.rei_information13;
1373 
1374 
1375 
1376 END;
1377 
1378 -- =============================================================================
1379 -- Populate_attr
1380 -- ============================================================================
1381 PROCEDURE populate_attr (p_person_id              NUMBER
1382                        ,p_assignment_id           NUMBER
1383                        ,p_business_group_id       NUMBER
1384                        ,p_effective_date          DATE
1385                        ,p_first_noa_cd            VARCHAR2
1386                        ,p_sec_noa_cd              VARCHAR2
1387                        ,p_request_id              NUMBER
1388                        ,p_notification_id         NUMBER
1389                        )
1390 IS
1391 l_per_ei_data per_people_extra_info%rowtype;
1392 l_pay_det   VARCHAR2(10);
1393 l_pos_ag_code   VARCHAR2(30);
1394 l_posi_extra_info per_position_extra_info%rowtype;
1395 l_mrn  VARCHAR2(40);
1396 l_start_date  DATE;
1397 l_end_date  DATE;
1398 l_temp   NUMBER;
1399 l_proc_name  constant varchar2(150) := g_proc_name ||'populate_attr';
1400 CURSOR c_get_pos_id IS
1401 SELECT ppf.sex
1402  FROM  per_all_people_f ppf
1403 WHERE  p_effective_date BETWEEN
1404       ppf.effective_start_date
1405   AND ppf.effective_end_date
1406   AND ppf.business_group_id=p_business_group_id
1407   AND ppf.person_id =p_person_id;
1408 l_get_pos_id c_get_pos_id%ROWTYPE;
1409 
1410 CURSOR c_get_asg_extra_info (cp_assignment_id VARCHAR2
1411                             ,cp_info_type   VARCHAR2
1412                             )
1413 IS
1414 SELECT *
1415   FROM per_assignment_extra_info paei
1416     WHERE paei.assignment_id= cp_assignment_id
1417       AND paei.information_type=cp_info_type;
1418 
1419 CURSOR c_mast_pos (cp_position_id       NUMBER
1420                   ,cp_effective_date    DATE
1421                   ,cp_business_group_id NUMBER
1422                   )
1423 IS
1424 SELECT hap.information6 mrn
1425  FROM  hr_all_positions_f hap
1426 WHERE  hap.position_id =cp_position_id
1427   AND  cp_effective_date BETWEEN hap.effective_start_date
1428                              AND hap.effective_end_date
1429   AND  hap.business_group_id =cp_business_group_id;
1430 
1431 
1432 CURSOR c_get_default_values
1433                (cp_position_id       IN Number
1434                ,cp_effective_date    IN Date) IS
1435  SELECT pdf.segment3 NFC_Agency_Code,
1436         pdf.segment4 Personnel_Office_ID,
1437         pdf.segment7 Grade
1438    FROM hr_all_positions_f pos, per_position_definitions pdf
1439   WHERE pos.position_definition_id = pdf.position_definition_id
1440     AND pos.position_id = cp_position_id
1441     AND cp_effective_date between pos.effective_start_date and pos.effective_end_date;
1442 
1443 /*
1444 CURSOR c_get_auth_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1445 						c_effective_date ghr_pa_requests.effective_date%TYPE)
1446 IS
1447 SELECT pa_request_id, (effective_date+rownum)-1 auth_date
1448 FROM  ghr_pa_requests
1449 WHERE person_id = c_person_id
1450 AND   first_noa_code NOT IN ('001','002')
1451 AND pa_notification_id IS NOT NULL
1452 AND   effective_date = c_effective_date
1453 ORDER BY last_update_date ASC;*/
1454 
1455 CURSOR c_get_auth_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1456 						c_effective_date ghr_pa_requests.effective_date%TYPE)
1457 IS
1458 SELECT pa_request_id, (effective_date+rownum)-1 auth_date, noa_code
1459 FROM
1460 (
1461 	SELECT  pa_request_id, effective_date, last_update_date,first_noa_code noa_code
1462 	FROM ghr_pa_requests
1463 	WHERE person_id = c_person_id
1464 	AND first_noa_code NOT IN ('001','002')
1465 	AND pa_notification_id IS NOT NULL
1466 	AND effective_date = c_effective_date
1467 UNION ALL
1468 	SELECT  pa_request_id, effective_date, last_update_date,second_noa_code noa_code
1469 	FROM ghr_pa_requests
1470 	WHERE person_id = c_person_id
1471 	AND first_noa_code = '317'
1472 	AND second_noa_code = '825'
1473 	AND pa_notification_id IS NOT NULL
1474 	AND effective_date = c_effective_date
1475 ORDER BY last_update_date
1476 ) par;
1477 
1478 CURSOR c_rpas_on_date(c_person_id  ghr_pa_requests.person_id%TYPE,
1479  					c_effective_date ghr_pa_requests.effective_date%TYPE)
1480 IS
1481 SELECT COUNT(*) auth_date
1482 FROM
1483 (
1484 	SELECT  pa_request_id, effective_date, last_update_date,first_noa_code noa_code
1485 	FROM ghr_pa_requests
1486 	WHERE person_id = c_person_id
1487 	AND first_noa_code NOT IN ('001','002')
1488 	AND pa_notification_id IS NOT NULL
1489 	AND effective_date = c_effective_date
1490 UNION ALL
1491 	SELECT  pa_request_id, effective_date, last_update_date,second_noa_code noa_code
1492 	FROM ghr_pa_requests
1493 	WHERE person_id = c_person_id
1494 	AND first_noa_code = '317'
1495 	AND second_noa_code = '825'
1496 	AND pa_notification_id IS NOT NULL
1497 	AND effective_date = c_effective_date
1498 ORDER BY last_update_date
1499 ) par;
1500 
1501 l_no_rpa_count BOOLEAN;
1502 l_auth_date DATE;
1503 l_get_default_values c_get_default_values%ROWTYPE;
1504 l_get_asg_extra_info c_get_asg_extra_info%ROWTYPE;
1505 l_mast_pos c_mast_pos%ROWTYPE;
1506 l_position_id   hr_all_positions_f.position_id%TYPE;
1507 l_out_val       pay_element_entry_values_f.screen_entry_value%type;
1508 l_pos_num    VARCHAR2(20);
1509 l_get_ei_val ghr_pa_request_extra_info%ROWTYPE;
1510 l_temp_var    NUMBER;
1511 BEGIN
1512 
1513  build_rules;
1514  l_per_ei_data:=NULL;
1515  l_no_rpa_count := FALSE;
1516 
1517  hr_utility.set_location ('Enter'||l_proc_name,05);
1518  g_rpa_attr(p_request_id).assignment_id := p_assignment_id;
1519  g_rpa_attr(p_request_id).request_id    := p_request_id;
1520 
1521 
1522  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1523                                  ,p_information_type  =>'GHR_US_PER_GROUP1'
1524                                  ,p_date_effective    =>p_effective_date
1525                                  ,p_per_ei_data       =>l_per_ei_data
1526                                  );
1527 
1528 
1529   hr_utility.set_location (l_proc_name,10);
1530 -- g_rpa_attr(p_request_id).Previous_agency_code  :=l_per_ei_data.pei_information7;
1531 
1532  IF  p_first_noa_cd LIKE '1%' OR p_first_noa_cd LIKE '2%' OR p_first_noa_cd LIKE '5%'
1533   OR p_first_noa_cd LIKE '7%' OR  p_first_noa_cd='866' OR p_sec_noa_cd LIKE '1%' OR
1534      p_sec_noa_cd LIKE '2%' OR p_sec_noa_cd LIKE '5%' OR p_sec_noa_cd LIKE '7%' OR
1535      p_sec_noa_cd = '866' THEN
1536   IF l_per_ei_data.pei_information6 IS NOT NULL THEN
1537    g_rpa_attr(p_request_id).Date_entered_present_grade :=l_per_ei_data.pei_information6;
1538   ELSE
1539    g_rpa_attr(p_request_id).Date_entered_present_grade := fnd_date.date_to_canonical
1540                                                       (g_rpa_rec(p_request_id).effective_date);
1541   END IF;
1542 
1543  ELSE
1544   g_rpa_attr(p_request_id).Date_entered_present_grade :=NULL;
1545 
1546  END IF;
1547  g_rpa_attr(p_request_id).phy_handicap_code :=l_per_ei_data.pei_information11;
1548  g_rpa_attr(p_request_id).race :=l_per_ei_data.pei_information5;
1549 
1550  BEGIN
1551  l_temp_var :=to_number(l_per_ei_data.pei_information3);
1552  g_rpa_attr(p_request_id).typ_apt_cd := g_apt_cd(l_temp_var);
1553  EXCEPTION
1554  WHEN OTHERS THEN
1555  NULL;
1556  END;
1557 
1558 
1559   hr_utility.set_location (l_proc_name,15);
1560 --modify
1561  l_per_ei_data:=NULL;
1562  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1563                                  ,p_information_type  =>'GHR_US_PER_SEPARATE_RETIRE'
1564                                  ,p_date_effective    =>p_effective_date
1565                                  ,p_per_ei_data       =>l_per_ei_data
1566                                  );
1567 
1568 
1569   hr_utility.set_location (l_proc_name||p_first_noa_cd,20);
1570 
1571  IF g_psr_month.exists(p_first_noa_cd) THEN
1572   g_rpa_attr(p_request_id).Date_last_pay_status_retired :=l_per_ei_data.pei_information21;
1573   hr_utility.set_location (l_proc_name,25);
1574  END IF;
1575  g_rpa_attr(p_request_id).Frozen_CSRS_service :=l_per_ei_data.pei_information5;
1576  g_rpa_attr(p_request_id).CSRS_coverage_at_appointment  :=l_per_ei_data.pei_information4;
1577 
1578   hr_utility.set_location (l_proc_name,30);
1579  l_per_ei_data:=NULL;
1580 
1581  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1582                                  ,p_information_type  =>'GHR_US_PER_LEAVE_INFO'
1583                                  ,p_date_effective    =>p_effective_date
1584                                  ,p_per_ei_data       =>l_per_ei_data
1585                                  );
1586 
1587 
1588  IF g_sler_month.exists(p_first_noa_cd) THEN
1589   g_rpa_attr(p_request_id).Date_sick_leave_exp_ret :=l_per_ei_data.pei_information5;
1590   hr_utility.set_location (l_proc_name,35);
1591  END IF;
1592 
1593  g_rpa_attr(p_request_id).Annual_leave_category    :=NVL(l_per_ei_data.pei_information3,'0');
1594 -- g_rpa_attr(p_request_id).Annual_leave_45_day_code :=l_per_ei_data.pei_information4;
1595  g_rpa_attr(p_request_id).Leave_ear_stat_py_period :=l_per_ei_data.pei_information6;
1596 
1597   hr_utility.set_location (l_proc_name,40);
1598 
1599  l_per_ei_data:=NULL;
1600  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1601                                  ,p_information_type  =>'GHR_US_PER_SCD_INFORMATION'
1602                                  ,p_date_effective    =>p_effective_date
1603                                  ,p_per_ei_data       =>l_per_ei_data
1604                                  );
1605 
1606  g_rpa_attr(p_request_id).Date_SCD_CSR   :=l_per_ei_data.pei_information7;
1607  g_rpa_attr(p_request_id).Date_SCD_RIF   :=l_per_ei_data.pei_information5;
1608  g_rpa_attr(p_request_id).Date_TSP_vested :=l_per_ei_data.pei_information6;
1609  g_rpa_attr(p_request_id).Date_SCD_SES    :=l_per_ei_data.pei_information8;
1610 
1611   hr_utility.set_location (l_proc_name,45);
1612 
1613  l_per_ei_data:=NULL;
1614  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1615                                  ,p_information_type  =>'GHR_US_PER_PROBATIONS'
1616                                  ,p_date_effective    =>p_effective_date
1617                                  ,p_per_ei_data       =>l_per_ei_data
1618                                  );
1619  g_rpa_attr(p_request_id).Date_Spvr_Mgr_Prob_Ends :=l_per_ei_data.pei_information5;
1620  g_rpa_attr(p_request_id).Date_Supv_Mgr_Prob      :=l_per_ei_data.pei_information8;
1621  g_rpa_attr(p_request_id).Date_Prob_period_start  :=l_per_ei_data.pei_information3;
1622  g_rpa_attr(p_request_id).Supv_mgr_prob_period_req :=l_per_ei_data.pei_information6;
1623 
1624   hr_utility.set_location (l_proc_name,50);
1625 
1626  l_per_ei_data:=NULL;
1627  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1628                                  ,p_information_type  =>'GHR_US_PER_CONVERSIONS'
1629                                  ,p_date_effective    =>p_effective_date
1630                                  ,p_per_ei_data       =>l_per_ei_data
1631                                  );
1632  g_rpa_attr(p_request_id).Date_Career_perma_Ten_St :=l_per_ei_data.pei_information3;
1633 
1634  l_per_ei_data:=NULL;
1635  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1636                                  ,p_information_type  =>'GHR_US_RETAINED_GRADE'
1637                                  ,p_date_effective    =>p_effective_date
1638                                  ,p_per_ei_data       =>l_per_ei_data
1639                                  );
1640  l_pay_det :=g_rpa_rec(p_request_id).pay_rate_determinant;
1641 
1642  IF l_pay_det ='A' OR l_pay_det ='B'
1643   OR l_pay_det = 'E' OR l_pay_det ='F'
1644   OR l_pay_det='U' OR l_pay_det ='V' THEN
1645    g_rpa_attr(p_request_id).Date_Ret_Rght_end :=null ;
1646    g_rpa_attr(p_request_id).date_retain_rate_exp :=l_per_ei_data.pei_information2 ;
1647    g_rpa_attr(p_request_id).Saved_Grd_Pay_Plan        :=l_per_ei_data.pei_information5;
1648    g_rpa_attr(p_request_id).Saved_Grade               :=l_per_ei_data.pei_information3;
1649  null;
1650  END IF;
1651 
1652  l_per_ei_data:=NULL;
1653  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1654                                  ,p_information_type  =>'GHR_US_PER_SF52'
1655                                  ,p_date_effective    =>p_effective_date
1656                                  ,p_per_ei_data       =>l_per_ei_data
1657                                  );
1658  g_rpa_attr(p_request_id).Citizenship_code    :=l_per_ei_data.pei_information3;
1659 
1660 
1661  l_per_ei_data:=NULL;
1662  ghr_history_fetch.fetch_peopleei(p_person_id         =>p_person_id
1663                                  ,p_information_type  =>'GHR_US_PER_UNIFORMED_SERVICES'
1664                                  ,p_date_effective    =>p_effective_date
1665                                  ,p_per_ei_data       =>l_per_ei_data
1666                                  );
1667 
1668 
1669 
1670 
1671  g_rpa_attr(p_request_id).Uniform_Svc_Status  :=l_per_ei_data.pei_information19;
1672  g_rpa_attr(p_request_id).Creditable_Military_Svc  :=l_per_ei_data.pei_information5;
1673  g_rpa_attr(p_request_id).Date_Ret_Military        :=l_per_ei_data.pei_information6;
1674 
1675  IF p_first_noa_cd ='002' THEN
1676 
1677   g_rpa_attr(p_request_id).Date_Corr_NoA      :=p_effective_date;
1678 
1679  END IF;
1680 
1681  IF g_NTE_SF50.exists(p_first_noa_cd)
1682  OR (p_first_noa_cd='002' AND  g_NTE_SF50.exists(p_sec_noa_cd))  THEN
1683 
1684   g_rpa_attr(p_request_id).Date_NTE_SF50     :=g_rpa_rec(p_request_id).first_noa_information1;
1685  END IF;
1686 
1687 
1688 -- IF g_retention.exists(p_first_noa_cd) THEN -- Bug 4922145
1689   g_rpa_attr(p_request_id).Retention_Percent   := g_rpa_rec(p_request_id).to_retention_allow_percentage;
1690   g_rpa_attr(p_request_id).Retention_allowance    := g_rpa_rec(p_request_id).to_retention_allowance;
1691 -- END IF;
1692 
1693  IF p_first_noa_cd=780 THEN
1694   g_rpa_attr(p_request_id).Name_Corr_code := 'Y';
1695  ELSE
1696   g_rpa_attr(p_request_id).Name_Corr_code := 'N';
1697  END IF;
1698 --Need to add Old SSNO and Name changed attr
1699 
1700  --IF  g_recruitment.exists(p_first_noa_cd) THEN
1701   g_rpa_attr(p_request_id).Recruitment_Percent := g_rpa_rec(p_request_id).award_percentage;
1702   g_rpa_attr(p_request_id).Recruitment_bonus     := g_rpa_rec(p_request_id).award_amount;
1703 
1704 -- END IF;
1705 
1706  --IF g_relocation.exists(p_first_noa_cd) THEN
1707   g_rpa_attr(p_request_id).Relocation_percent :=  g_rpa_rec(p_request_id).award_percentage;
1708   g_rpa_attr(p_request_id).Relocation_bonus   := g_rpa_rec(p_request_id).award_amount;
1709   null;
1710 -- END IF;
1711 
1712 -- IF g_Supervisory.exists(p_first_noa_cd) THEN
1713   g_rpa_attr(p_request_id).Supervisory_Percent   :=g_rpa_rec(p_request_id).to_supervisory_diff_percentage;
1714   g_rpa_attr(p_request_id).Supervisory_Differential_Rate :=g_rpa_rec(p_request_id).to_supervisory_differential;
1715 -- END IF;
1716 
1717 --Derive TSP eligilibilty code
1718 IF ( p_first_noa_cd like '1%' OR
1719 (p_sec_noa_cd='02' AND p_first_noa_cd like '1%') )
1720 OR
1721 ( p_first_noa_cd like '5%' OR
1722 (p_sec_noa_cd='02' AND p_first_noa_cd like '5%') )
1723 OR
1724 ( p_first_noa_cd ='803' OR
1725 (p_sec_noa_cd='02' AND p_first_noa_cd ='803') )
1726 THEN
1727  IF (g_rpa_rec(p_request_id).retirement_plan='K'
1728  OR g_rpa_rec(p_request_id).retirement_plan='L'
1729  OR g_rpa_rec(p_request_id).retirement_plan='M'
1730  OR g_rpa_rec(p_request_id).retirement_plan='N'
1731  OR g_rpa_rec(p_request_id).retirement_plan='P'
1732  OR g_rpa_rec(p_request_id).retirement_plan='D')
1733  THEN
1734   g_rpa_attr(p_request_id).tsp_elig_cd := '2';
1735  ELSIF  (g_rpa_rec(p_request_id).retirement_plan='2'
1736  OR g_rpa_rec(p_request_id).retirement_plan='5'
1737  OR g_rpa_rec(p_request_id).retirement_plan='Y'
1738  OR g_rpa_rec(p_request_id).retirement_plan='Z'
1739  OR g_rpa_rec(p_request_id).retirement_plan='4'
1740  )
1741  THEN
1742   g_rpa_attr(p_request_id).tsp_elig_cd := '6';
1743  ELSE
1744   g_rpa_attr(p_request_id).tsp_elig_cd := '3';
1745  END IF;
1746 
1747 ELSE
1748   g_rpa_attr(p_request_id).tsp_elig_cd :=NULL;
1749 END IF;
1750 
1751  IF (TO_NUMBER(p_first_noa_cd) >= 100 AND TO_NUMBER(p_first_noa_cd) <=199)
1752   OR (p_first_noa_cd = '002' AND (TO_NUMBER(p_sec_noa_cd) >= 100 AND TO_NUMBER(p_sec_noa_cd) <=199 ))  THEN
1753    OPEN c_get_asg_extra_info (p_assignment_id
1754                             ,'GHR_US_ASG_NON_SF52'
1755                             );
1756    FETCH c_get_asg_extra_info INTO l_get_asg_extra_info;
1757    CLOSE c_get_asg_extra_info;
1758   g_rpa_attr(p_request_id).special_emp_code := NVL(l_get_asg_extra_info.aei_information12,'00');
1759   g_rpa_attr(p_request_id).action_code := 1;
1760 
1761   ghr_history_fetch.fetch_element_entry_value
1762         (p_element_name              =>'Health Benefits',
1763          p_input_value_name          =>'Enrollment',
1764          p_assignment_id             =>p_assignment_id,
1765          p_date_effective            =>p_effective_date,
1766          p_screen_entry_value        =>l_out_val
1767          ) ;
1768    IF l_out_val IS NULL THEN
1769     ghr_history_fetch.fetch_element_entry_value
1770         (p_element_name              =>'Health Benefits Pre tax',
1771          p_input_value_name          =>'Enrollment',
1772          p_assignment_id             =>p_assignment_id,
1773          p_date_effective            =>p_effective_date,
1774          p_screen_entry_value        =>l_out_val
1775          ) ;
1776    END IF;
1777 
1778    IF l_out_val='Z' THEN
1779     l_out_val:='2' ;
1780    ELSIF l_out_val='Y' THEN
1781     l_out_val:='3' ;
1782    ELSE
1783     l_out_val:='4' ;
1784    END IF;
1785 
1786    g_rpa_attr(p_request_id).fehb_cov_cd := l_out_val;
1787     l_out_val:=NULL;
1788  ELSIF TO_NUMBER(p_first_noa_cd) >=300 AND TO_NUMBER(p_first_noa_cd) <= 399
1789   OR (p_first_noa_cd = '002' AND (TO_NUMBER(p_sec_noa_cd) >= 300 AND TO_NUMBER(p_sec_noa_cd) <=399 ))  THEN
1790   g_rpa_attr(p_request_id).action_code :=3;
1791  ELSIF TO_NUMBER(p_first_noa_cd) >= 500 AND TO_NUMBER(p_first_noa_cd) <=599 THEN
1792 
1793   g_rpa_attr(p_request_id).action_code:= ghr_utility.get_nfc_conv_action_code (p_request_id);
1794  ELSIF
1795    p_first_noa_cd = '002' AND (TO_NUMBER(p_sec_noa_cd) >= 500 AND TO_NUMBER(p_sec_noa_cd) <=599 ) THEN
1796    g_rpa_attr(p_request_id).action_code:=ghr_utility.get_nfc_conv_action_code (p_sec_noa_cd);
1797 
1798  ELSE
1799   g_rpa_attr(p_request_id).action_code :=2;
1800 
1801  END IF;
1802 
1803 IF g_rpa_rec(p_request_id).to_position_id IS NULL THEN
1804     hr_utility.set_location ('Inside null',05);
1805    g_rpa_rec(p_request_id).to_position_id := g_rpa_rec(p_request_id).from_position_id;
1806 END IF;
1807 
1808  l_pos_ag_code :=ghr_api.get_position_agency_code_pos
1809                            (p_position_id        =>g_rpa_rec(p_request_id).to_position_id
1810                            ,p_business_group_id  =>p_business_group_id
1811                            ,p_effective_date     =>p_effective_date) ;
1812 
1813  g_rpa_attr(p_request_id).pmso_dept := SUBSTR(l_pos_ag_code,0,2);
1814 
1815 
1816  --get MRN using the positionid and get from master pos.
1817 
1818  OPEN c_mast_pos (g_rpa_rec(p_request_id).to_position_id
1819               ,p_effective_date
1820               ,p_business_group_id
1821               );
1822  FETCH c_mast_pos INTO l_mast_pos;
1823  CLOSE c_mast_pos;
1824  l_position_id := TO_NUMBER(l_mast_pos.mrn);
1825 
1826  l_mrn        :=ghr_api.get_position_desc_no_pos
1827                  (p_position_id           =>l_position_id
1828                  ,p_business_group_id     =>p_business_group_id
1829                  ,p_effective_date        =>p_effective_date
1830                  ) ;
1831 
1832 
1833  g_rpa_attr(p_request_id).mrn := l_mrn;
1834  l_pos_num:=ghr_api.get_position_desc_no_pos
1835 	(p_position_id           =>g_rpa_rec(p_request_id).to_position_id
1836 	,p_business_group_id     =>p_business_group_id
1837 	,p_effective_date        =>p_effective_date
1838   );
1839 
1840  g_rpa_attr(p_request_id).pos_num := l_pos_num;
1841 
1842  /*ghr_history_fetch.fetch_positionei
1843                            ( p_position_id      => l_position_id
1844                             ,p_information_type =>'GHR_US_POS_GRP3'
1845                             ,p_date_effective   => p_effective_date
1846                             ,p_pos_ei_data      => l_posi_extra_info);*/
1847 
1848 
1849  hr_utility.set_location ('p_effective_date'||p_effective_date,05);
1850 
1851  OPEN c_get_default_values (l_position_id
1852                             ,p_effective_date);
1853  FETCH c_get_default_values INTO l_get_default_values;
1854  CLOSE c_get_default_values;
1855 
1856   hr_utility.set_location ('l_get_default_values.nfc_agency_code'||l_get_default_values.nfc_agency_code,05);
1857   hr_utility.set_location ('p_request_id'||p_request_id,05);
1858 
1859 
1860  g_rpa_attr(p_request_id).nfc_agency :=  l_get_default_values.nfc_agency_code;
1861 
1862  l_posi_extra_info:=NULL;
1863  /*ghr_history_fetch.fetch_positionei
1864                            ( p_position_id      => l_position_id
1865                             ,p_information_type =>'GHR_US_POS_GRP1'
1866                             ,p_date_effective   => p_effective_date
1867                             ,p_pos_ei_data      => l_posi_extra_info);*/
1868   g_rpa_attr(p_request_id).poi := l_get_default_values.personnel_office_id;
1869   l_posi_extra_info:=NULL;
1870   l_get_default_values:=NULL;
1871  /*ghr_history_fetch.fetch_positionei
1872                            ( p_position_id      => g_rpa_rec(p_request_id).to_position_id
1873                             ,p_information_type =>'GHR_US_POS_GRP3'
1874                             ,p_date_effective   => p_effective_date
1875                             ,p_pos_ei_data      => l_posi_extra_info);*/
1876 
1877 
1878  OPEN c_get_default_values (g_rpa_rec(p_request_id).to_position_id
1879                             ,p_effective_date);
1880  FETCH c_get_default_values INTO l_get_default_values;
1881  CLOSE c_get_default_values;
1882  g_rpa_attr(p_request_id).pmso_agency := l_get_default_values.nfc_agency_code;
1883 
1884  /*ghr_history_fetch.fetch_positionei
1885                            ( p_position_id      =>g_rpa_rec(p_request_id).to_position_id
1886                             ,p_information_type =>'GHR_US_POS_GRP1'
1887                             ,p_date_effective   => p_effective_date
1888                             ,p_pos_ei_data      => l_posi_extra_info);*/
1889   --g_rpa_attr(p_request_id).pmso_poi := l_posi_extra_info.poei_information1;
1890   g_rpa_attr(p_request_id).pmso_poi :=  l_get_default_values.personnel_office_id;
1891   l_posi_extra_info:=NULL;
1892   l_get_default_values:=NULL;
1893 --get gender code
1894  OPEN c_get_pos_id;
1895  FETCH c_get_pos_id INTO l_get_pos_id;
1896  CLOSE c_get_pos_id;
1897 
1898 
1899  g_rpa_attr(p_request_id).gender_code := l_get_pos_id.sex;
1900 
1901 --get payperiod num
1902 
1903    g_rpa_attr(p_request_id).pay_period_num :=
1904                          get_pay_period_number
1905                         (p_person_id           => p_person_id
1906                         ,p_assignment_id       =>p_assignment_id
1907                         ,p_business_group_id   =>p_business_group_id
1908                         ,p_effective_date      =>p_effective_date
1909                         ,p_position_id         => l_temp
1910                         ,p_start_date          =>l_start_date
1911                         ,p_end_date            =>l_end_date
1912                         );
1913 
1914 
1915 
1916    ghr_history_fetch.fetch_element_entry_value
1917 	(p_element_name              =>'Retirement Annuity',
1918 	 p_input_value_name          =>'Sum',
1919 	 p_assignment_id             =>p_assignment_id,
1920 	 p_date_effective            =>p_effective_date,
1921 	 p_screen_entry_value        =>l_out_val
1922 	 ) ;
1923 
1924    g_rpa_attr(p_request_id).civil_service_annuitant_share := TO_NUMBER(l_out_val);
1925    l_out_val :=NULL;
1926    ghr_history_fetch.fetch_element_entry_value
1927 	(p_element_name              =>'Within Grade Increase',
1928 	 p_input_value_name          =>'Last Equivalent Increase',
1929 	 p_assignment_id             =>p_assignment_id,
1930 	 p_date_effective            =>p_effective_date,
1931 	 p_screen_entry_value        =>l_out_val
1932 	 ) ;
1933 
1934    g_rpa_attr(p_request_id).dt_scd_wgi := l_out_val;
1935     l_out_val :=NULL;
1936 
1937 --derive Authentication Date
1938 	FOR l_no_rpas IN c_rpas_on_date(p_person_id,p_effective_date) LOOP
1939 		l_no_rpa_count := TRUE;
1940 	END LOOP;
1941 
1942 	IF l_no_rpa_count = TRUE THEN
1943 		FOR l_get_auth_date IN c_get_auth_date(p_person_id,p_effective_date) LOOP
1944 			IF p_request_id = l_get_auth_date.pa_request_id
1945 				AND p_first_noa_cd = l_get_auth_date.noa_code THEN
1946 					l_auth_date := l_get_auth_date.auth_date;
1947 			END IF;
1948 		END LOOP;
1949 	END IF;
1950 
1951 	IF l_no_rpa_count = FALSE THEN
1952 		l_auth_date := p_effective_date;
1953 	END IF;
1954 
1955 	l_no_rpa_count := FALSE;
1956 
1957    g_rpa_attr(p_request_id).authentication_dt := fnd_date.date_to_canonical(l_auth_date);
1958 
1959   /*l_get_ei_val:=get_rpa_extra_info_val (p_request_id
1960                          ,'GHR_US_PAR_NFC_INFO'
1961                           ); */
1962 --  g_rpa_attr(p_request_id).authentication_dt :=l_get_ei_val.rei_information3;
1963 --derive previous nature of action code
1964   IF p_first_noa_cd='001' THEN
1965    g_rpa_attr(p_request_id).nat_act_prev :=
1966    ghr_utility.get_nfc_prev_noa(
1967     p_person_id          => p_person_id
1968    ,p_pa_notification_id => p_notification_id
1969    ,p_effective_date     => p_effective_date);
1970   END IF;
1971 
1972   IF p_first_noa_cd='001' OR  p_first_noa_cd='002' THEN
1973     ghr_utility.get_nfc_auth_codes(
1974      p_person_id          =>p_person_id,
1975      p_pa_notification_id => p_notification_id ,
1976      p_effective_date     =>p_effective_date,
1977      p_first_auth_code    => g_rpa_attr(p_request_id).csc_auth_prev_noa,
1978      p_second_auth_code   => g_rpa_attr(p_request_id).csc_auth_prev_2noa);
1979 
1980   END IF;
1981   IF  g_rpa_rec (p_request_id).veterans_status='X'
1982    AND g_rpa_rec (p_request_id).veterans_preference='1'
1983    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='Y'  THEN
1984 
1985    g_rpa_attr(p_request_id).veterans_pref_for_rif :='5';
1986 
1987   ELSIF g_rpa_rec (p_request_id).veterans_status='X'
1988    AND g_rpa_rec (p_request_id).veterans_preference='1'
1989    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='N'  THEN
1990 
1991    g_rpa_attr(p_request_id).veterans_pref_for_rif := '3' ;
1992 
1993   ELSIF g_rpa_rec (p_request_id).veterans_status <> 'X'
1994    AND (g_rpa_rec (p_request_id).veterans_preference = '2' OR
1995         g_rpa_rec (p_request_id).veterans_preference = '3' OR
1996         g_rpa_rec (p_request_id).veterans_preference = '4' OR
1997         g_rpa_rec (p_request_id).veterans_preference = '5' )
1998    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='Y'  THEN
1999 
2000    g_rpa_attr(p_request_id).veterans_pref_for_rif := '2' ;
2001   ELSIF g_rpa_rec (p_request_id).veterans_status <> 'X'
2002    AND (g_rpa_rec (p_request_id).veterans_preference = '2' OR
2003         g_rpa_rec (p_request_id).veterans_preference = '3' OR
2004         g_rpa_rec (p_request_id).veterans_preference = '4' OR
2005         g_rpa_rec (p_request_id).veterans_preference = '5' OR
2006         g_rpa_rec (p_request_id).veterans_preference = '6' )
2007    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='N'  THEN
2008 
2009    g_rpa_attr(p_request_id).veterans_pref_for_rif := '2' ;
2010 
2011   ELSIF g_rpa_rec (p_request_id).veterans_status <>'X'
2012    AND g_rpa_rec (p_request_id).veterans_preference='1'
2013    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='N'  THEN
2014 
2015    g_rpa_attr(p_request_id).veterans_pref_for_rif := '3' ;
2016 
2017   ELSIF g_rpa_rec (p_request_id).veterans_status <>'X'
2018    AND g_rpa_rec (p_request_id).veterans_preference='1'
2019    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='Y'  THEN
2020 
2021    g_rpa_attr(p_request_id).veterans_pref_for_rif := '2' ;
2022 
2023   ELSIF g_rpa_rec (p_request_id).veterans_status <>'X'
2024    AND g_rpa_rec (p_request_id).veterans_preference='6'
2025    AND g_rpa_rec (p_request_id).veterans_pref_for_rif ='Y'  THEN
2026 
2027    g_rpa_attr(p_request_id).veterans_pref_for_rif := '1' ;
2028   END IF;
2029 
2030   hr_utility.set_location ('Populate Attr Position Class Code ',54);
2031   IF (TO_NUMBER(p_first_noa_cd) >=300 AND TO_NUMBER(p_first_noa_cd) <= 399)
2032   OR  (TO_NUMBER(p_sec_noa_cd) >=300 AND TO_NUMBER(p_sec_noa_cd) <= 399)
2033   --OR (TO_NUMBER(p_first_noa_cd)=507 OR TO_NUMBER(p_sec_noa_cd) =507)
2034   OR (TO_NUMBER(p_first_noa_cd)=713 OR TO_NUMBER(p_sec_noa_cd) =713)
2035   OR (TO_NUMBER(p_first_noa_cd)=740 OR TO_NUMBER(p_sec_noa_cd)=740)
2036   OR (TO_NUMBER(p_first_noa_cd)=741 OR TO_NUMBER(p_sec_noa_cd)=741)
2037   OR
2038   ( g_rpa_rec(p_request_id).from_position_id IS NOT NULL AND
2039     g_rpa_rec(p_request_id).from_position_id <>
2040     NVL(g_rpa_rec(p_request_id).to_position_id,hr_api.g_number) -- Bug 5026388
2041    )
2042   THEN
2043    g_rpa_attr(p_request_id).position_class_cd:='0';
2044   ELSE
2045     g_rpa_attr(p_request_id).position_class_cd:=NULL;
2046   END IF;
2047 
2048    l_get_default_values:=NULL;
2049    IF (p_first_noa_cd LIKE '5%' OR p_sec_noa_cd LIKE '5%' )
2050    AND g_rpa_rec(p_request_id).from_position_id <> g_rpa_rec(p_request_id).to_position_id
2051    AND g_rpa_rec(p_request_id).from_position_id IS NOT NULL AND
2052        g_rpa_rec(p_request_id).to_position_id IS NOT NULL  THEN
2053     OPEN c_get_default_values (g_rpa_rec(p_request_id).from_position_id
2054                              ,p_effective_date);
2055     FETCH c_get_default_values INTO l_get_default_values;
2056     CLOSE c_get_default_values;
2057 
2058     g_rpa_attr(p_request_id).Previous_agency_code:=l_get_default_values.nfc_agency_code;
2059    END IF;
2060 
2061 
2062 
2063 ---Gain or Lose attribute
2064 --Annual leave 45 day code
2065    l_get_ei_val:=NULL;
2066    IF  (p_first_noa_cd LIKE '1%' AND p_first_noa_cd <> '130'
2067      AND p_first_noa_cd <> '132' )  OR
2068     ( p_sec_noa_cd LIKE '1%' AND p_sec_noa_cd <> '130'
2069       AND p_sec_noa_cd <> '132' )
2070    THEN
2071 
2072     l_get_ei_val:=get_rpa_extra_info_val (p_request_id
2073                          ,'GHR_US_PAR_APPT_INFO'
2074                           );
2075 
2076     g_rpa_attr(p_request_id).gain_lose_dept_non_usda:=NVL(l_get_ei_val.rei_information21,'1B');
2077     g_rpa_attr(p_request_id).Annual_leave_45_day_code :=NVL(l_get_ei_val.rei_information20,'N');
2078    ELSIF p_first_noa_cd LIKE '3%'  OR p_sec_noa_cd LIKE '3%'  THEN
2079  ---this clause is used for Agency use and gain lose dept.
2080 
2081     l_get_ei_val:=NULL;
2082     l_get_ei_val:=get_rpa_extra_info_val (p_request_id
2083                          ,'GHR_US_PAR_NFC_SEPARATION_INFO'
2084                           );
2085 
2086     g_rpa_attr(p_request_id).gain_lose_dept_non_usda:=NVL(l_get_ei_val.rei_information12,'1B');
2087 
2088     g_rpa_attr(p_request_id).agency_use:=NVL(l_get_ei_val.rei_information3,' ')
2089                                           ||NVL(l_get_ei_val.rei_information4,' ')
2090                                           ||NVL(l_get_ei_val.rei_information5,' ')
2091                                           ||NVL(l_get_ei_val.rei_information6,' ')
2092                                           ||NVL(l_get_ei_val.rei_information7,' ')
2093                                           ||NVL(l_get_ei_val.rei_information8,' ')
2094                                           ||NVL(l_get_ei_val.rei_information9,' ')
2095                                           ||NVL(l_get_ei_val.rei_information10,' ')
2096                                           ||NVL(l_get_ei_val.rei_information11,' ');
2097    ELSIF (p_first_noa_cd = '130' OR p_first_noa_cd = '132')
2098      OR ( p_sec_noa_cd = '130' OR p_sec_noa_cd = '132') THEN
2099 --Annual leave 45 day code
2100       l_get_ei_val:=NULL;
2101       l_get_ei_val:=get_rpa_extra_info_val (p_request_id
2102                          ,'GHR_US_PAR_APPT_TRANSFER'
2103                           );
2104     g_rpa_attr(p_request_id).gain_lose_dept_non_usda:=NVL(l_get_ei_val.rei_information23,'1B');
2105     g_rpa_attr(p_request_id).Annual_leave_45_day_code :=NVL(l_get_ei_val.rei_information22,'N');
2106    END IF;
2107 
2108 --Annual leave 45 day code
2109    IF p_first_noa_cd LIKE '5%' OR p_sec_noa_cd LIKE '5%' THEN
2110     l_get_ei_val:=NULL;
2111     l_get_ei_val:=get_rpa_extra_info_val (p_request_id
2112                          ,'GHR_US_PAR_CONV_APP'
2113                           );
2114     g_rpa_attr(p_request_id).Annual_leave_45_day_code :=NVL(l_get_ei_val.rei_information22,'N');
2115    END IF;
2116 
2117 --Special employee program code
2118 
2119   IF  p_first_noa_cd = '100' OR p_sec_noa_cd = '100' THEN
2120    g_rpa_attr(p_request_id).special_emp_prg_code := l_get_asg_extra_info.aei_information13;
2121    IF g_rpa_attr(p_request_id).special_emp_prg_code IS NULL THEN
2122     l_get_ei_val:=NULL;
2123     l_get_ei_val:=get_rpa_extra_info_val (p_request_id
2124                          ,'GHR_US_PAR_APPT_INFO'
2125                           );
2126     g_rpa_attr(p_request_id).special_emp_prg_code := l_get_ei_val.rei_information22;
2127    END IF;
2128 
2129   END IF;
2130   hr_utility.set_location ('Leaving Populate Attr',55);
2131 END populate_attr;
2132 -- =============================================================================
2133 -- Build_rules:
2134 -- =============================================================================
2135 PROCEDURE build_rules
2136 IS
2137 a  number;
2138 BEGIN
2139 
2140 --for attribute Date Last Pay Status Retired Month
2141  g_psr_month(300) :=300;
2142  g_psr_month(301) :=301;
2143  g_psr_month(302) :=302;
2144  g_psr_month(303) :=303;
2145  g_psr_month(304) :=304;
2146  g_psr_month(350) :=350;
2147 
2148 ---for attribute Date Sick Leave Expired Retired Month
2149  g_sler_month(300) := 300;
2150  g_sler_month(301) := 301;
2151  g_sler_month(302) := 302;
2152  g_sler_month(303) := 303;
2153  g_sler_month(304) := 304;
2154  g_sler_month(350) := 350;
2155 
2156 ---attribute  Date NTE SF50 Month
2157 
2158  g_NTE_SF50(108) :=108;
2159  g_NTE_SF50(115) :=115;
2160  g_NTE_SF50(117) :=117;
2161  g_NTE_SF50(122) :=122;
2162  g_NTE_SF50(148) :=148;
2163  g_NTE_SF50(149) :=149;
2164  g_NTE_SF50(153) :=153;
2165  g_NTE_SF50(154) :=154;
2166  g_NTE_SF50(171) :=171;
2167  g_NTE_SF50(190) :=190;
2168  g_NTE_SF50(198) :=198;
2169  g_NTE_SF50(199) :=199;
2170  g_NTE_SF50(450) :=450;
2171  g_NTE_SF50(460) :=460;
2172  g_NTE_SF50(462) :=462;
2173  g_NTE_SF50(472) :=472;
2174  g_NTE_SF50(480) :=480;
2175  g_NTE_SF50(508) :=508;
2176  g_NTE_SF50(515) :=515;
2177  g_NTE_SF50(517) :=517;
2178  g_NTE_SF50(522) :=522;
2179  g_NTE_SF50(548) :=548;
2180  g_NTE_SF50(553) :=553;
2181  g_NTE_SF50(554) :=554;
2182  g_NTE_SF50(571) :=571;
2183  g_NTE_SF50(590) :=590;
2184  g_NTE_SF50(703) :=703;
2185  g_NTE_SF50(741) :=741;
2186  g_NTE_SF50(750) :=750;
2187  g_NTE_SF50(760) :=760;
2188  g_NTE_SF50(761) :=761;
2189  g_NTE_SF50(762) :=762;
2190  g_NTE_SF50(765) :=765;
2191  g_NTE_SF50(769) :=769;
2192  g_NTE_SF50(770) :=770;
2193  g_NTE_SF50(772) :=772;
2194  g_NTE_SF50(773) :=773;
2195 
2196 --attr for retention
2197  g_retention(810):=810;
2198 --for attr recruitment
2199  g_recruitment(815) :=815;
2200 
2201 
2202 --for attr  g_relocation
2203  g_relocation(816) :=816;
2204 
2205 
2206 --for attr g_Supervisory
2207   g_Supervisory(810) :=810;
2208 --g_apt_cd
2209 g_apt_cd(10) := '01';
2210 g_apt_cd(15) := '02';
2211 g_apt_cd(20) := '03';
2212 g_apt_cd(30) := '06';
2213 g_apt_cd(32) := '06';
2214 g_apt_cd(34) := '06';
2215 g_apt_cd(36) := '06';
2216 g_apt_cd(38) := '06';
2217 g_apt_cd(40) := '09';
2218 g_apt_cd(42) := '09';
2219 g_apt_cd(44) := '09';
2220 g_apt_cd(46) := '09';
2221 g_apt_cd(48) := '09';
2222 g_apt_cd(50) := '01';
2223 g_apt_cd(55) := '06';
2224 g_apt_cd(60) := '09';
2225 g_apt_cd(65) := '08';
2226 
2227 END;
2228 
2229 
2230 -- =============================================================================
2231 -- ~ Get_Rcds_Details:
2232 -- =============================================================================
2233 procedure Get_Rcds_Details is
2234 
2235    -- Cursor to get the seq num of the
2236    cursor csr_seq (c_ext_rcd_id in number) is
2237    select eir.seq_num
2238          ,elm.string_val
2239      from ben_ext_data_elmt          elm,
2240           ben_ext_data_elmt_in_rcd   eir
2241     where elm.ext_data_elmt_id = eir.ext_data_elmt_id
2242       and elm.data_elmt_typ_cd = 'R'
2243       and elm.string_val  in ('RPA_REQ_ID',   'RPA_AWARD_ID',
2244                               'RPA_REMARK_ID','RPA_ADD_ID')
2245       and  eir.ext_rcd_id = c_ext_rcd_id;
2246 
2247   l_proc     constant varchar2(150) := g_proc_name||'Get_Rcds_Details';
2248   l_col_value         varchar2(600);
2249 begin
2250   Hr_Utility.set_location('Entering'||l_proc, 5);
2251   for rcd_rec in csr_ext_rcd
2252                 (c_hide_flag   => 'N'
2253                 ,c_rcd_type_cd => 'D')
2254   loop
2255     for eir in  csr_seq(rcd_rec.ext_rcd_id)
2256     loop
2257        if eir.seq_num < 10 then
2258           l_col_value := 'val_0'|| eir.seq_num;
2259        else
2260           l_col_value := 'val_'|| eir.seq_num;
2261        end if;
2262        g_ext_rcd(rcd_rec.ext_rcd_id).data_value := eir.string_val;
2263        g_ext_rcd(rcd_rec.ext_rcd_id).seq_num    := eir.seq_num;
2264        g_ext_rcd(rcd_rec.ext_rcd_id).col_name   := l_col_value;
2265        Hr_Utility.set_location(' ext_rcd_id: '||rcd_rec.ext_rcd_id, 5);
2266        Hr_Utility.set_location(' data_value: '||eir.string_val, 5);
2267        Hr_Utility.set_location(' seq_num   : '||eir.seq_num, 5);
2268        Hr_Utility.set_location(' col_name  : '||l_col_value, 5);
2269     end loop;
2270   end loop;
2271   Hr_Utility.set_location('Leaving'||l_proc, 80);
2272 
2273 end Get_Rcds_Details;
2274 -- =============================================================================
2275 -- ~ Write_Warning:
2276 -- =============================================================================
2277 procedure Write_Warning
2278            (p_err_name  in varchar2,
2279             p_err_no    in number   default null,
2280             p_element   in varchar2 default null ) is
2281 
2282   l_proc     constant varchar2(150) := g_proc_name||'Write_Warning';
2283   l_err_name          varchar2(2000);
2284   l_err_no            number;
2285 
2286 begin
2287   Hr_Utility.set_location('Entering'||l_proc, 5);
2288   l_err_name  := p_err_name ;
2289   l_err_no    := p_err_no ;
2290   --
2291   if p_err_no is null then
2292       -- Assumed the name is Error Name
2293      l_err_no   :=  To_Number(Substr(p_err_name,5,5)) ;
2294      l_err_name :=  null ;
2295   end if ;
2296   -- If element name is sent get the message to write
2297   if p_err_no is not null and p_element is not null then
2298      l_err_name :=  Ben_Ext_Fmt.get_error_msg(p_err_no,
2299                                               p_err_name,
2300                                               p_element ) ;
2301   end if ;
2302   --
2303   if g_business_group_id is not null then
2304      Ben_Ext_Util.write_err
2305       (p_err_num           => l_err_no,
2306        p_err_name          => l_err_name,
2307        p_typ_cd            => 'W',
2308        p_person_id         => g_person_id,
2309        p_business_group_id => g_business_group_id,
2310        p_ext_rslt_id       => Ben_Extract.g_ext_rslt_id);
2311   end if;
2312   --
2313   Hr_Utility.set_location('Exiting'||l_proc, 15);
2314   --
2315 
2316 end Write_Warning;
2317 
2318 -- =============================================================================
2319 -- ~ Write_Error:
2320 -- =============================================================================
2321 procedure Write_Error
2322            (p_err_name  in varchar2,
2323             p_err_no    in number   default null,
2324             p_element   in varchar2 default null ) is
2325   --
2326   l_proc     constant varchar2(72)    := g_proc_name||'Write_Error';
2327   l_err_name          varchar2(2000);
2328   l_err_no            number;
2329   l_err_num           number(15);
2330   --
2331   cursor err_cnt_c is
2332   select count(*) from ben_ext_rslt_err
2333    where ext_rslt_id = ben_extract.g_ext_rslt_id
2334      and typ_cd <> 'W';
2335   --
2336 begin
2337   --
2338   Hr_Utility.set_location('Entering'||l_proc, 5);
2339   l_err_name := p_err_name ;
2340   l_err_no   := p_err_no ;
2341   if p_err_no is null then
2342       -- Assumed the name is Error Name
2343      l_err_no   :=  To_Number(Substr(p_err_name,5,5)) ;
2344      l_err_name :=  null ;
2345   end if ;
2346   -- If element name is sent get the message to write
2347   if p_err_no is not null and p_element is not null then
2348      l_err_name :=  Ben_Ext_Fmt.get_error_msg(p_err_no,
2349                                               p_err_name,
2350                                               p_element );
2351   end if ;
2352   open  err_cnt_c;
2353   fetch err_cnt_c into l_err_num;
2354   close err_cnt_c;
2355   if l_err_num >= ben_ext_thread.g_max_errors_allowed then
2356     ben_ext_thread.g_err_num := 91947;
2357     ben_ext_thread.g_err_name := 'BEN_91947_EXT_MX_ERR_NUM';
2358     raise ben_ext_thread.g_job_failure_error;
2359   end if;
2360 
2361   if g_business_group_id is not null then
2362      Ben_Ext_Util.write_err
2363       (p_err_num           => l_err_no,
2364        p_err_name          => l_err_name,
2365        p_typ_cd            => 'E',
2366        p_person_id         => g_person_id,
2367        p_business_group_id => g_business_group_id,
2368        p_ext_rslt_id       => Ben_Extract.g_ext_rslt_id);
2369   end if;
2370   Hr_Utility.set_location('Exiting'||l_proc, 15);
2371 end Write_Error;
2372 
2373 -- =============================================================================
2374 -- ~ Extract_Exception:
2375 -- =============================================================================
2376 function Extract_Exception
2377         (p_assignment_id     in number
2378         ,p_business_group_id in number
2379         ,p_effective_date    in date
2380         ,p_msg_type          in out nocopy varchar2
2381         ,p_msg_code          in out nocopy varchar2
2382         ,p_msg_text          in out nocopy varchar2
2383          )
2384          return varchar2 is
2385 
2386   l_proc     constant varchar2(72) := g_proc_name||'Write_Warning';
2387   l_ext_rslt_id   number;
2388   l_person_id     number;
2389   l_error_text    varchar2(2000);
2390   l_return_value  varchar2(50);
2391 
2392 begin
2393   l_ext_rslt_id:= ben_extract.g_ext_rslt_id;
2394   l_return_value := '0';
2395   if g_debug then
2396     Hr_Utility.set_location('Entering : '||l_proc, 5);
2397     Hr_Utility.set_location(' l_ext_rslt_id : '||l_ext_rslt_id, 5);
2398     Hr_Utility.set_location(' p_msg_type : '   ||p_msg_type, 5);
2399     Hr_Utility.set_location(' p_msg_code : '   ||p_msg_code, 5);
2400   end if;
2401 
2402   if p_assignment_id <> -1 and
2403      l_ext_rslt_id   <> -1 then
2404      if p_msg_type = 'E' then
2405         Write_Error
2406         (p_err_name  => p_msg_text
2407         ,p_err_no    => p_msg_code
2408         ,p_element   => Nvl(Ben_Ext_Person.g_elmt_name
2409                            ,Ben_Ext_Fmt.g_elmt_name)
2410          );
2411      elsif p_msg_type = 'W' then
2412            Write_Warning
2413           (p_err_name  => p_msg_text
2414           ,p_err_no    => p_msg_code
2415           ,p_element   => Nvl(Ben_Ext_Person.g_elmt_name
2416                              ,Ben_Ext_Fmt.g_elmt_name)
2417           );
2418      end if;
2419   end if;
2420   Hr_Utility.set_location('Leaving: '||l_proc, 80);
2421   return l_return_value;
2422 
2423 end Extract_Exception;
2424 -- =============================================================================
2425 -- Exclude_Person:
2426 -- =============================================================================
2427 procedure Exclude_Person
2428           (p_person_id         in number
2429           ,p_business_group_id in number
2430           ,p_benefit_action_id in number
2431           ,p_flag_thread       in varchar2) is
2432 
2433 
2434    cursor csr_ben_per (c_person_id in number
2435                       ,c_benefit_action_id in number) is
2436    select *
2437     from ben_person_actions bpa
2438    where bpa.benefit_action_id = c_benefit_action_id
2439      and bpa.person_id = c_person_id;
2440 
2441    l_ben_per csr_ben_per%rowtype;
2442 
2443    cursor csr_rng (c_benefit_action_id in number
2444                   ,c_person_action_id  in number) is
2445    select 'x'
2446      from ben_batch_ranges
2447     where benefit_action_id = c_benefit_action_id
2448       and c_person_action_id between starting_person_action_id
2449                                  and ending_person_action_id;
2450   l_conc_reqest_id      number(20);
2451   l_exists              varchar2(2);
2452   l_proc_name  constant varchar2(150) := g_proc_name ||'Exclude_Person';
2453 begin
2454 
2455   Hr_Utility.set_location('Entering: '||l_proc_name, 5);
2456   open  csr_ben_per (c_person_id         => p_person_id
2457                     ,c_benefit_action_id => p_benefit_action_id);
2458   fetch csr_ben_per into  l_ben_per;
2459   close csr_ben_per;
2460 
2461   update ben_person_actions bpa
2462      set bpa.action_status_cd = 'U'
2463    where bpa.benefit_action_id = p_benefit_action_id
2464      and bpa.person_id = p_person_id;
2465 
2466   if p_flag_thread = 'Y' then
2467 
2468     open csr_rng (c_benefit_action_id => p_benefit_action_id
2469                  ,c_person_action_id  => l_ben_per.person_action_id);
2470     fetch csr_rng into l_exists;
2471     close csr_rng;
2472 
2473     update ben_batch_ranges bbr
2474        set bbr.range_status_cd = 'E'
2475      where bbr.benefit_action_id = p_benefit_action_id
2476         and l_ben_per.person_action_id
2477                  between bbr.starting_person_action_id
2478                      and bbr.ending_person_action_id;
2479   end if;
2480   Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
2481 
2482 end Exclude_Person;
2483 
2484 -- =============================================================================
2485 -- ~ Extract_Post_Process:
2486 -- =============================================================================
2487 function Extract_Post_Process
2488           (p_business_group_id  in number
2489            )return varchar2 is
2490 
2491   cursor csr_err (c_bg_id in number
2492                  ,c_ext_rslt_id in number) is
2493   select err.person_id
2494         ,err.typ_cd
2495         ,err.ext_rslt_id
2496     from ben_ext_rslt_err err
2497    where err.business_group_id = c_bg_id
2498      and err.typ_cd = 'E'
2499      and err.ext_rslt_id = c_ext_rslt_id;
2500 
2501 --Added by Gattu
2502  CURSOR csr_get_record_count(c_ext_rcd_id IN NUMBER) IS
2503    SELECT Count(dtl.ext_rslt_dtl_id)
2504      FROM ben_ext_rslt_dtl dtl
2505     WHERE dtl.ext_rslt_id = Ben_Ext_Thread.g_ext_rslt_id
2506     AND dtl.ext_rcd_id NOT IN(c_ext_rcd_id);
2507 
2508   l_record_count Number   := 0;
2509   l_rc           VARCHAr2(8);
2510   l_ben_params             csr_ben%rowtype;
2511   l_conc_reqest_id    ben_ext_rslt.request_id%TYPE;
2512   l_proc_name    constant  varchar2(150):=  g_proc_name||'Extract_Post_Process';
2513   l_return_value           varchar2(2000);
2514 
2515 begin
2516   Hr_Utility.set_location('Entering :'||l_proc_name, 5);
2517   l_return_value := '0';
2518   -- Get the record id for the Hidden Detail record
2519   Hr_Utility.set_location('..Get the hidden record for extract running..',10);
2520   for csr_rcd_rec in csr_ext_rcd
2521                       (c_hide_flag   => 'Y' -- Y=Record is hidden one
2522                       ,c_rcd_type_cd => 'D')-- D=Detail, T=Total, H-Header
2523   -- Loop through each detail record for the extract
2524   loop
2525     -- Delete all hidden detail records for the all persons
2526     delete
2527       from ben_ext_rslt_dtl
2528      where ext_rcd_id        = csr_rcd_rec.ext_rcd_id
2529        and ext_rslt_id       = Ben_Ext_Thread.g_ext_rslt_id
2530        and business_group_id = p_business_group_id;
2531   end loop;
2532   -- Get the benefit action id for the extract
2533   open csr_ben (c_ext_dfn_id        => Ben_Ext_Thread.g_ext_dfn_id
2534                ,c_ext_rslt_id       => Ben_Ext_Thread.g_ext_rslt_id
2535                ,c_business_group_id => p_business_group_id);
2536   fetch csr_ben into l_ben_params;
2537   close csr_ben;
2538   -- Flag the person in ben_person_actions and ben_batch_ranges
2539   -- as Unporcessed and errored.
2540   for err_rec in csr_err(c_bg_id       => p_business_group_id
2541                         ,c_ext_rslt_id => Ben_Ext_Thread.g_ext_rslt_id)
2542   loop
2543     Exclude_Person
2544     (p_person_id         => err_rec.person_id
2545     ,p_business_group_id => p_business_group_id
2546     ,p_benefit_action_id => l_ben_params.benefit_action_id
2547     ,p_flag_thread       => 'Y');
2548 
2549     delete
2550       from ben_ext_rslt_dtl dtl
2551      where dtl.ext_rslt_id       = Ben_Ext_Thread.g_ext_rslt_id
2552        and dtl.person_id         = err_rec.person_id
2553        and dtl.business_group_id = p_business_group_id;
2554   end loop;
2555 
2556 
2557 
2558 
2559   OPEN  csr_org_req(c_ext_rslt_id       => Ben_Ext_Thread.g_ext_rslt_id
2560                    ,c_ext_dfn_id        => Ben_Ext_Thread.g_ext_dfn_id
2561                    ,c_business_group_id => p_business_group_id);
2562   FETCH csr_org_req INTO l_conc_reqest_id;
2563   CLOSE csr_org_req;
2564 
2565 
2566 
2567   ghr_nfc_error_proc.chk_same_day_act(p_request_id =>l_conc_reqest_id
2568                                      ,p_rslt_id    =>Ben_Ext_Thread.g_ext_rslt_id);
2569 
2570 
2571   --Error handling call
2572   ghr_nfc_error_proc.chk_for_err_data_pa (p_request_id =>l_conc_reqest_id
2573                                           ,p_rslt_id    =>Ben_Ext_Thread.g_ext_rslt_id);
2574 
2575   --Handling Total Record Count,removing the header count from total
2576   FOR csr_header_rcd_id IN csr_ext_rcd_id(c_hide_flag => 'N' -- Y=Record is hidden one
2577                                          ,c_rcd_type_cd   => 'H') --Header
2578   LOOP
2579        OPEN csr_get_record_count(c_ext_rcd_id =>csr_header_rcd_id.ext_rcd_id);
2580        FETCH csr_get_record_count INTO l_record_count;
2581        CLOSE csr_get_record_count;
2582 
2583        Hr_Utility.set_location('Header Record ID ' ||csr_header_rcd_id.ext_rcd_id, 5);
2584        l_rc :=l_record_count;
2585        UPDATE ben_ext_rslt_dtl set val_06 = LPAD(l_rc,8,'0')
2586         WHERE ext_rcd_id       = csr_header_rcd_id.ext_rcd_id
2587           AND ext_rslt_id      = Ben_Ext_Thread.g_ext_rslt_id
2588           AND business_group_id= p_business_group_id;
2589 
2590   END LOOP;
2591 
2592   -- Notifications call
2593   GHR_WF.initiate_notification (p_request_id =>l_conc_reqest_id
2594                                ,p_result_id  =>Ben_Ext_Thread.g_ext_rslt_id
2595                                ,p_role       =>g_extract_params(p_business_group_id).notify);
2596 
2597   Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
2598 
2599   return l_return_value;
2600 
2601 exception
2602   when Others then
2603    Hr_Utility.set_location('..Exception when others raised..', 20);
2604    Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
2605    l_return_value := '1';
2606    return l_return_value;
2607 
2608 end Extract_Post_Process;
2609 
2610 -- =============================================================================
2611 -- ~ NFC_Extract_Process:
2612 -- =============================================================================
2613 PROCEDURE NFC_Extract_Process
2614            (errbuf                        OUT NOCOPY  VARCHAR2
2615            ,retcode                       OUT NOCOPY  VARCHAR2
2616            ,p_business_group_id           IN     NUMBER
2617            ,p_benefit_action_id           IN     NUMBER
2618            ,p_ext_dfn_id                  IN     NUMBER
2619 	   ,p_ext_jcl_id                  IN     NUMBER
2620            ,p_ext_dfn_typ_id              IN     VARCHAR2
2621            ,p_ext_dfn_data_typ            IN     VARCHAR2
2622            ,p_transmission_type           IN     VARCHAR2
2623            ,p_date_criteria               IN     VARCHAR2
2624 	   ,p_dummy1			  IN     VARCHAR2
2625 	   ,p_dummy2			  IN     VARCHAR2
2626 	   ,p_dummy3			  IN     VARCHAR2
2627            ,p_from_date                   IN     VARCHAR2
2628            ,p_to_date                     IN     VARCHAR2
2629            ,p_agency_code                 IN     VARCHAR2
2630            ,p_personnel_office_id         IN     VARCHAR2
2631            ,p_transmission_indicator      IN     VARCHAR2
2632            ,p_signon_identification       IN     VARCHAR2
2633            ,p_user_id                     IN     VARCHAR2
2634 	   ,p_dept_code                   IN     VARCHAR2
2635 	   ,p_payroll_id                  IN     NUMBER
2636 	   ,p_notify     		  IN     VARCHAR2
2637            ,p_ext_rslt_id                 IN     NUMBER DEFAULT NULL ) IS
2638 
2639    l_errbuff          VARCHAR2(3000);
2640    l_retcode          NUMBER;
2641    l_session_id       NUMBER;
2642    l_proc_name        VARCHAR2(150) := g_proc_name ||'Pension_Extract_Process';
2643 
2644 BEGIN
2645      hr_utility.set_location('Entering: '||l_proc_name, 5);
2646 
2647          ben_ext_thread.process
2648          (errbuf                     => l_errbuff,
2649           retcode                    => l_retcode,
2650           p_benefit_action_id        => NULL,
2651           p_ext_dfn_id               => p_ext_dfn_id,
2652           p_effective_date           => p_to_date,
2653           p_business_group_id        => p_business_group_id);
2654 
2655      hr_utility.set_location('Leaving: '||l_proc_name, 80);
2656 EXCEPTION
2657      WHEN Others THEN
2658      hr_utility.set_location('Leaving: '||l_proc_name, 90);
2659      RAISE;
2660 END NFC_Extract_Process;
2661 -- =============================================================================
2662 -- ~ Get_Remarks_Id:
2663 -- =============================================================================
2664 function Get_Remarks_Id
2665          (p_assignment_id in number
2666          ,p_input_value   in varchar2
2667          ,p_error_code    in out nocopy varchar2
2668          ,p_error_message in out nocopy varchar2
2669          ) return varchar2 is
2670   l_return_value          varchar2(2000);
2671   l_pa_req_id             number(15);
2672   l_proc_name    constant varchar2(250) := g_proc_name ||'Get_Remarks_Id';
2673 begin
2674    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
2675    l_return_value := null;
2676 
2677    IF g_pa_req.EXISTS(p_assignment_id) THEN
2678       l_pa_req_id := g_pa_req(p_assignment_id).pa_request_id;
2679    END IF;
2680 
2681 
2682    Hr_Utility.set_location(' l_pa_req_id: '||l_pa_req_id, 6);
2683    if l_pa_req_id is not null and
2684       g_pa_req_remark.exists(l_pa_req_id) then
2685 
2686       IF  p_input_value = 'RPA_RC01' then
2687           l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_1;
2688       ELSIF p_input_value = 'RPA_RC02' then
2689              l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_2;
2690       ELSIF p_input_value = 'RPA_RC03' then
2691 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_3;
2692       ELSIF p_input_value = 'RPA_RC04'then
2693 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_4;
2694       ELSIF p_input_value = 'RPA_RC05' then
2695 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_5;
2696       ELSIF p_input_value = 'RPA_RC06' then
2697 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_6;
2698       ELSIF p_input_value = 'RPA_RC07' then
2699 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_7;
2700       ELSIF p_input_value = 'RPA_RC08'then
2701 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_8;
2702       ELSIF p_input_value = 'RPA_RC09' then
2703 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_9;
2704       ELSIF p_input_value = 'RPA_RC10' then
2705 			l_return_value := g_pa_req_remark(l_pa_req_id).remark_code_10;
2706       END IF;
2707    END IF;
2708    Hr_Utility.set_location('l_return_value: '||l_return_value, 79);
2709    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
2710    return l_return_value;
2711 exception
2712    when others then
2713    p_error_code := sqlcode;
2714    p_error_message := NULL;
2715    Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
2716    return l_return_value;
2717 
2718 end Get_Remarks_Id;
2719 
2720 -- =============================================================================
2721 -- ~ Get_RPA_Data:
2722 -- =============================================================================
2723 function Get_RPA_Data
2724         (p_assignment_id in number
2725         ,p_input_value   in varchar2
2726         ,p_error_code    in out nocopy varchar2
2727         ,p_error_message in out nocopy varchar2
2728         ) return varchar2 is
2729   l_return_value          varchar2(2000);
2730   l_pa_request_id         number;
2731   l_proc_name    constant varchar2(250) := g_proc_name ||'Get_RPA_Data';
2732 
2733 begin
2734    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
2735    l_return_value := null;
2736 
2737    if g_pa_req.exists(p_assignment_id) then
2738      l_pa_request_id := g_pa_req(p_assignment_id).pa_request_id;
2739    end if;
2740    Hr_Utility.set_location(' l_pa_request_id: '||l_pa_request_id, 6);
2741    Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
2742 
2743    if (l_pa_request_id is not null and
2744        g_rpa_rec.exists(l_pa_request_id))then
2745 
2746       if p_input_value ='RPA_DOB' then
2747 
2748          l_return_value :=fnd_date.date_to_canonical(
2749 	    g_rpa_rec(l_pa_request_id).employee_date_of_birth);
2750 
2751       elsif p_input_value ='RPA_MNAME' then
2752 
2753          l_return_value := g_rpa_rec(l_pa_request_id).employee_middle_names;
2754 
2755       elsif p_input_value ='RPA_FNAME' then
2756 
2757          l_return_value := g_rpa_rec(l_pa_request_id).employee_first_name;
2758 
2759       elsif p_input_value ='RPA_LNAME' then
2760 
2761          l_return_value := g_rpa_rec(l_pa_request_id).employee_last_name;
2762 
2763       elsif p_input_value ='RPA_SSN' then
2764 
2765          l_return_value := REPLACE(g_rpa_rec(l_pa_request_id).employee_national_identifier,'-');
2766 
2767       elsif p_input_value ='RPA_POI' then
2768 
2769          l_return_value := g_rpa_rec(l_pa_request_id).personnel_office_id;
2770 
2771       elsif p_input_value ='RPA_ED_LEVEL' then
2772 
2773          l_return_value := g_rpa_rec(l_pa_request_id).education_level;
2774 
2775      elsif p_input_value ='RPA_POS_STAT_CSC' then
2776 
2777          l_return_value := g_rpa_rec(l_pa_request_id).position_occupied;
2778 
2779      elsif p_input_value ='RPA_ANN_INDIC' then
2780 
2781          l_return_value := g_rpa_rec(l_pa_request_id).annuitant_indicator;
2782      elsif p_input_value ='RPA_ALT_REQ' then
2783 
2784          l_return_value := g_rpa_rec(l_pa_request_id).altered_pa_request_id;
2785      elsif p_input_value ='RPA_SCD_LEAVE' then
2786         l_return_value := fnd_date.date_to_canonical(
2787 	                  g_rpa_rec(l_pa_request_id).service_comp_date);
2788      elsif p_input_value ='RPA_CSC_AUTH_CODE_1NOA' then
2789         l_return_value := g_rpa_rec(l_pa_request_id).first_action_la_code1;
2790      elsif p_input_value ='RPA_CSC_AUTH_2CODE_1NOA' then
2791         l_return_value := g_rpa_rec(l_pa_request_id).first_action_la_code2;
2792      elsif p_input_value ='RPA_CSC_AUTH_CODE_2NOA' then
2793         l_return_value := g_rpa_rec(l_pa_request_id).second_action_la_code1;
2794      elsif p_input_value ='RPA_CSC_AUTH_2CODE_2NOA' then
2795         l_return_value := g_rpa_rec(l_pa_request_id).second_action_la_code2;
2796 
2797      elsif p_input_value ='RPA_VET_PREF_CD' then
2798         l_return_value := g_rpa_rec(l_pa_request_id).veterans_preference;
2799      elsif p_input_value ='RPA_VET_PREF_RIF' then
2800         l_return_value := g_rpa_attr(l_pa_request_id).veterans_pref_for_rif;
2801      elsif p_input_value ='RPA_TENURE_GRP' then
2802         l_return_value := g_rpa_rec(l_pa_request_id).tenure;
2803      elsif p_input_value ='RPA_RETIRE_PLN' then
2804         l_return_value := g_rpa_rec(l_pa_request_id).retirement_plan;
2805      elsif p_input_value ='RPA_FIRST_NOA_CD' then
2806         l_return_value := g_rpa_rec(l_pa_request_id).first_noa_code;
2807      elsif p_input_value ='RPA_SEC_NOA_CD' then
2808         l_return_value := g_rpa_rec(l_pa_request_id).second_noa_code;
2809      elsif p_input_value ='RPA_EFF_DATE' then
2810          l_return_value := fnd_date.date_to_canonical(
2811 	                 g_rpa_rec(l_pa_request_id).effective_date);
2812      elsif p_input_value ='RPA_CSC_OTH_LEG_AUTH' then
2813         l_return_value := g_rpa_rec(l_pa_request_id).first_action_la_desc1;
2814      elsif p_input_value ='RPA_CSC_OTH_LEG_AUTH2' then
2815         l_return_value := g_rpa_rec(l_pa_request_id).first_action_la_desc2;
2816      elsif p_input_value ='RPA_WRK_SCH' then
2817         l_return_value := g_rpa_rec(l_pa_request_id).work_schedule;
2818      elsif p_input_value ='RPA_GRADE' then
2819         l_return_value := g_rpa_rec(l_pa_request_id).to_grade_or_level;
2820      elsif p_input_value ='RPA_STEP' then
2821         l_return_value := g_rpa_rec(l_pa_request_id).to_step_or_rate;
2822      elsif p_input_value ='RPA_SCH_SAL' then
2823       IF INSTR (g_rpa_rec(l_pa_request_id).to_basic_pay,'.') > 0 THEN
2824        l_return_value := LPAD(REPLACE(g_rpa_rec(l_pa_request_id).to_basic_pay,'.'),8,'0');
2825       ELSE
2826        IF  g_rpa_rec(l_pa_request_id).to_basic_pay IS NOT NULL THEN
2827         l_return_value := LPAD((g_rpa_rec(l_pa_request_id).to_basic_pay||'00'),8,'0');
2828        END IF;
2829       END IF;
2830      elsif p_input_value ='RPA_PAY_RAISE_SAL' then
2831       IF INSTR (g_rpa_rec(l_pa_request_id).from_basic_pay,'.') > 0 THEN
2832         l_return_value := LPAD(REPLACE(g_rpa_rec(l_pa_request_id).from_basic_pay,'.'),8,'0');
2833       ELSE
2834        IF g_rpa_rec(l_pa_request_id).from_basic_pay IS NOT NULL THEN
2835         l_return_value := LPAD(g_rpa_rec(l_pa_request_id).from_basic_pay||'00',8,'0');
2836        END IF;
2837       END IF;
2838 
2839      elsif p_input_value ='RPA_SAL_RATE_CD' then
2840         l_return_value := g_rpa_rec(l_pa_request_id).to_pay_basis;
2841      elsif p_input_value ='RPA_PAY_RT_DET' then
2842         l_return_value := g_rpa_rec(l_pa_request_id).pay_rate_determinant;
2843      elsif p_input_value ='RPA_VET_STAT' then
2844         l_return_value := g_rpa_rec(l_pa_request_id).veterans_status;
2845      elsif p_input_value ='RPA_TOUR_DUTY_HRS' then
2846         l_return_value := LPAD(g_rpa_rec(l_pa_request_id).part_time_hours,4,'0');
2847      elsif p_input_value ='RPA_FLSA_CAT' then
2848         l_return_value := g_rpa_rec(l_pa_request_id).flsa_category;
2849      elsif p_input_value ='RPA_INST_PRG' then
2850         l_return_value := g_rpa_rec(l_pa_request_id).academic_discipline;
2851      elsif p_input_value ='RPA_FEGLI_CD' then
2852         l_return_value := g_rpa_rec(l_pa_request_id).fegli;
2853      elsif p_input_value ='RPA_DEG_CERT_REC' then
2854         l_return_value := g_rpa_rec(l_pa_request_id).year_degree_attained;
2855      elsif p_input_value ='RPA_RPA_PREV_AG_CD' then
2856       l_return_value :=g_rpa_attr(l_pa_request_id).Previous_agency_code;
2857      elsif p_input_value ='RPA_DT_ENT_PRES_GRADE' then
2858       l_return_value :=(
2859                     g_rpa_attr(l_pa_request_id).Date_entered_present_grade);
2860      elsif p_input_value ='RPA_PHY_HANDICAP_CD' then
2861       l_return_value :=g_rpa_attr(l_pa_request_id).phy_handicap_code;
2862      elsif p_input_value ='RPA_DT_LST_PAY_RET' then
2863       l_return_value :=(
2864                       g_rpa_attr(l_pa_request_id).Date_last_pay_status_retired);
2865      elsif p_input_value ='RPA_FRZN_CSRS_SER' then
2866       l_return_value :=g_rpa_attr(l_pa_request_id).Frozen_CSRS_service;
2867      elsif p_input_value ='RPA_CSRS_COV_AT_APT' then
2868       l_return_value :=g_rpa_attr(l_pa_request_id).CSRS_coverage_at_appointment;
2869      elsif p_input_value ='RPA_DATE_SICK_LEAVE_EXP_RET' then
2870       /*l_return_value :=fnd_date.date_to_canonical(
2871                       g_rpa_attr(l_pa_request_id).Date_sick_leave_exp_ret);*/
2872       l_return_value :=(
2873                       g_rpa_attr(l_pa_request_id).Date_sick_leave_exp_ret);
2874      elsif p_input_value ='RPA_ANNUAL_LEAVE_CATEGORY' then
2875       l_return_value :=g_rpa_attr(l_pa_request_id).Annual_leave_category;
2876      elsif p_input_value ='RPA_ANNUAL_LEAVE_45_DAY_CODE' then
2877       l_return_value :=g_rpa_attr(l_pa_request_id).Annual_leave_45_day_code  ;
2878      elsif p_input_value ='RPA_LEAVE_EAR_STAT_PY_PERIOD' then
2879       l_return_value :=g_rpa_attr(l_pa_request_id).Leave_ear_stat_py_period ;
2880      elsif p_input_value ='RPA_DATE_SCD_CSR' then
2881       l_return_value :=(
2882                            g_rpa_attr(l_pa_request_id).Date_SCD_CSR);
2883      elsif p_input_value ='RPA_DATE_SCD_RIF' then
2884       l_return_value := (
2885                       g_rpa_attr(l_pa_request_id).Date_SCD_RIF);
2886      elsif p_input_value ='RPA_DATE_TSP_VESTE' then
2887       l_return_value := (
2888                         g_rpa_attr(l_pa_request_id).Date_TSP_vested) ;
2889      elsif p_input_value ='RPA_DATE_SCD_SES' then
2890       l_return_value := g_rpa_attr(l_pa_request_id).Date_SCD_SES;
2891      elsif p_input_value ='RPA_DATE_SUPV_MGR_PROB' then
2892       l_return_value := (
2893                       g_rpa_attr(l_pa_request_id).Date_Supv_Mgr_Prob);
2894      elsif p_input_value ='RPA_DATE_SPVR_MGR_PROB_ENDS' then
2895       l_return_value := g_rpa_attr(l_pa_request_id).Date_Spvr_Mgr_Prob_Ends;
2896      elsif p_input_value ='RPA_DATE_PROB_PERIOD_START' then
2897       /*l_return_value := fnd_date.date_to_canonical(
2898                            g_rpa_attr(l_pa_request_id).Date_Prob_period_start)  ;*/
2899       l_return_value := (
2900                            g_rpa_attr(l_pa_request_id).Date_Prob_period_start)  ;
2901      elsif p_input_value ='RPA_SUPV_MGR_PROB_PERIOD_REQ' then
2902       l_return_value := g_rpa_attr(l_pa_request_id).Supv_mgr_prob_period_req ;
2903      elsif p_input_value ='RPA_DATE_CAREER_PERMA_TEN_ST' then
2904      /* l_return_value := fnd_date.date_to_canonical(
2905                        g_rpa_attr(l_pa_request_id).Date_Career_perma_Ten_St) ;   */
2906       l_return_value := (
2907                        g_rpa_attr(l_pa_request_id).Date_Career_perma_Ten_St) ;
2908      elsif p_input_value ='RPA_DATE_RET_RGHT_END' then
2909       l_return_value := (
2910                        g_rpa_attr(l_pa_request_id).Date_Ret_Rght_end)  ;
2911      elsif p_input_value ='RPA_DATE_RET_RATE_EXP' then
2912       l_return_value := (
2913                              g_rpa_attr(l_pa_request_id).date_retain_rate_exp)  ;
2914      elsif p_input_value ='RPA_CITIZENSHIP_CODE' then
2915       l_return_value := g_rpa_attr(l_pa_request_id).Citizenship_code  ;
2916      elsif p_input_value ='RPA_UNIFORM_SVC_STATUS' then
2917       l_return_value := g_rpa_attr(l_pa_request_id).Uniform_Svc_Status  ;
2918      elsif p_input_value ='RPA_CREDITABLE_MILITARY_SVC' then
2919       l_return_value := g_rpa_attr(l_pa_request_id).Creditable_Military_Svc  ;
2920      elsif p_input_value ='RPA_DATE_RET_MILITARY' then
2921       l_return_value := (
2922                         g_rpa_attr(l_pa_request_id).Date_Ret_Military)  ;
2923      elsif p_input_value ='RPA_SAVED_GRD_PAY_PLAN' then
2924       l_return_value := g_rpa_attr(l_pa_request_id).Saved_Grd_Pay_Plan ;
2925      elsif p_input_value ='RPA_SAVED_GRADE' then
2926       l_return_value := g_rpa_attr(l_pa_request_id).Saved_Grade   ;
2927      elsif p_input_value ='RPA_DATE_CORR_NOA' then
2928       l_return_value := fnd_date.date_to_canonical(
2929                             g_rpa_attr(l_pa_request_id).Date_Corr_NoA)  ;
2930      elsif p_input_value ='RPA_DATE_NTE_SF50' then
2931       l_return_value := (
2932                            g_rpa_attr(l_pa_request_id).Date_NTE_SF50) ;
2933      elsif p_input_value ='RPA_RETENTION_PERCENT' then
2934 
2935        l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Retention_Percent,2,'0')   ;
2936      elsif p_input_value ='RPA_RETENTION_ALLOWANCE' then
2937       IF INSTR(g_rpa_attr(l_pa_request_id).Retention_allowance,'.') > 0 THEN
2938        l_return_value := LPAD(REPLACE( g_rpa_attr(l_pa_request_id).Retention_allowance,'.'),7,'0') ;
2939       ELSE
2940        IF g_rpa_attr(l_pa_request_id).Retention_allowance IS NOT NULL THEN
2941         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Retention_allowance||'00',7,'0') ;
2942        END IF;
2943       END IF;
2944      elsif p_input_value ='RPA_NAME_CORR_CODE' then
2945       l_return_value := g_rpa_attr(l_pa_request_id).Name_Corr_code;
2946      elsif p_input_value ='RPA_SSNO_OLD' then
2947       l_return_value := g_rpa_attr(l_pa_request_id).SSNO_Old ;
2948      elsif p_input_value ='RPA_RECRUITMENT_PERCENT' then
2949        l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Recruitment_Percent,2,'0');
2950      elsif p_input_value ='RPA_RECRUITMENT_BONUS' then
2951       IF INSTR(g_rpa_attr(l_pa_request_id).Recruitment_bonus,'.') > 0 THEN
2952        l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).Recruitment_bonus,'.'),8,'0');
2953       ELSE
2954        IF g_rpa_attr(l_pa_request_id).Recruitment_bonus IS NOT NULL THEN
2955         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Recruitment_bonus||'00',8,'0');
2956        END IF;
2957       END IF;
2958      elsif p_input_value ='RPA_RELOCATION_PERCENT' then
2959        l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Relocation_percent,2,'0');
2960      elsif p_input_value ='RPA_RELOCATION_BONUS' then
2961       IF INSTR(g_rpa_attr(l_pa_request_id).Relocation_bonus,'.') > 0 THEN
2962        l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).Relocation_bonus,'.'),8,'0') ;
2963       ELSE
2964        IF g_rpa_attr(l_pa_request_id).Relocation_bonus IS NOT NULL THEN
2965         l_return_value :=LPAD( g_rpa_attr(l_pa_request_id).Relocation_bonus||'00',8,'0') ;
2966        END IF;
2967       END IF;
2968      elsif p_input_value ='RPA_SUPERVISORY_PERCENT' then
2969        l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Supervisory_Percent,2,'0');
2970      elsif p_input_value ='RPA_SUPERVISORY_DIFFERENTIAL_RATE' then
2971       IF INSTR(g_rpa_attr(l_pa_request_id).Supervisory_Differential_Rate,'.') > 0 THEN
2972        l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).Supervisory_Differential_Rate,'.'),8,'0') ;
2973       ELSE
2974        IF g_rpa_attr(l_pa_request_id).Supervisory_Differential_Rate IS NOT NULL THEN
2975         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).Supervisory_Differential_Rate||'00',8,'0') ;
2976        END IF;
2977       END IF;
2978      elsif p_input_value ='RPA_ACTION_CODE' then
2979        l_return_value := g_rpa_attr(l_pa_request_id).action_code ;
2980      elsif p_input_value ='RPA_POI' then
2981       l_return_value := g_rpa_attr(l_pa_request_id).poi  ;
2982      elsif p_input_value ='RPA_PMSO_POI' then
2983       l_return_value := g_rpa_attr(l_pa_request_id).pmso_poi  ;
2984      elsif p_input_value ='RPA_NFC_AGENCY' then
2985        l_return_value := g_rpa_attr(l_pa_request_id).nfc_agency ;
2986       Hr_Utility.set_location(' l_return_value: '||l_return_value, 6);
2987      elsif p_input_value ='RPA_PMSO_AGENCY' then
2988       l_return_value := g_rpa_attr(l_pa_request_id).pmso_agency ;
2989      elsif p_input_value ='RPA_POS_NUM' then
2990       l_return_value := g_rpa_attr(l_pa_request_id).pos_num ;
2991      elsif p_input_value ='RPA_PMSO_DEPT' then
2992       l_return_value := g_rpa_attr(l_pa_request_id).pmso_dept ;
2993      elsif p_input_value ='RPA_DEPT_CODE' then
2994       l_return_value := g_rpa_attr(l_pa_request_id).pmso_dept  ;
2995      elsif p_input_value ='RPA_GENDER_CODE' then
2996       l_return_value := g_rpa_attr(l_pa_request_id).gender_code ;
2997      elsif p_input_value ='RPA_PAY_PERIOD_NUM' then
2998       l_return_value := LPAD(g_rpa_attr(l_pa_request_id).pay_period_num,2,'0');
2999      elsif p_input_value ='RPA_MRN' then
3000       l_return_value := g_rpa_attr(l_pa_request_id).mrn;
3001      elsif p_input_value ='RPA_RACE' then
3002       l_return_value := g_rpa_attr(l_pa_request_id).race;
3003 
3004      elsif p_input_value ='RPA_CVL_SERV_ANNUIT_SHRE' then
3005       IF INSTR (g_rpa_attr(l_pa_request_id).civil_service_annuitant_share,'.') > 0 THEN
3006         l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).civil_service_annuitant_share,'.'),7,'0');
3007       ELSE
3008        IF g_rpa_attr(l_pa_request_id).civil_service_annuitant_share IS NOT NULL THEN
3009         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).civil_service_annuitant_share||'00',7,'0');
3010        END IF;
3011       END IF;
3012 
3013      elsif p_input_value ='RPA_DATE_SCD_WGI' then
3014       /*l_return_value := fnd_date.date_to_canonical(
3015                         g_rpa_attr(l_pa_request_id).dt_scd_wgi);*/
3016       l_return_value := (
3017                         g_rpa_attr(l_pa_request_id).dt_scd_wgi);
3018      elsif p_input_value ='RPA_AUTH_DT' then
3019       l_return_value := (
3020                         g_rpa_attr(l_pa_request_id).authentication_dt);
3021      elsif p_input_value ='RPA_NAT_ACT_PREV' then
3022       l_return_value := g_rpa_attr(l_pa_request_id).nat_act_prev;
3023      elsif p_input_value ='RPA_FEHB_COV_CD' then
3024       l_return_value := g_rpa_attr(l_pa_request_id).fehb_cov_cd;
3025      elsif p_input_value ='RPA_GAIN_LOSE_DEPT_NUSDA' then
3026       l_return_value := g_rpa_attr(l_pa_request_id).gain_lose_dept_non_usda;
3027 
3028      elsif p_input_value ='RPA_CSC_AUTH_PREV_NOA' then
3029       l_return_value := g_rpa_attr(l_pa_request_id).csc_auth_prev_noa;
3030      elsif p_input_value ='RPA_CSC_AUTH_PREV_2NOA' then
3031       l_return_value := g_rpa_attr(l_pa_request_id).csc_auth_prev_2noa;
3032     /* elsif p_input_value ='RPA_DATE_RET_RATE_EXP' then
3033       l_return_value := g_rpa_attr(l_pa_request_id).date_retain_rate_exp;*/
3034      elsif p_input_value ='RPA_SPECIAL_EMP_CD' then
3035       l_return_value := g_rpa_attr(l_pa_request_id).special_emp_code;
3036      elsif p_input_value ='RPA_SPEC_EMP_PRG_CD' then
3037       l_return_value := g_rpa_attr(l_pa_request_id).special_emp_prg_code;
3038      elsif p_input_value ='RPA_TSP_ELIG_CD' then
3039       l_return_value := g_rpa_attr(l_pa_request_id).tsp_elig_cd;
3040      elsif p_input_value ='RPA_TYP_APT_CD' then
3041       l_return_value := g_rpa_attr(l_pa_request_id).typ_apt_cd;
3042 
3043      elsif p_input_value ='RPA_APP_DT' then
3044         l_return_value := TRUNC(g_rpa_rec(l_pa_request_id).approval_date);
3045 
3046 
3047      elsif p_input_value ='RPA_FOR_LANG_PERC' then
3048         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).for_lang_perc,2,'0');
3049      elsif p_input_value ='RPA_FOR_LANG_ALL' then
3050         IF INSTR (g_rpa_attr(l_pa_request_id).for_lang_all,'.') > 0 THEN
3051          l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).for_lang_all,'.'),7,'0');
3052         ELSE
3053          IF g_rpa_attr(l_pa_request_id).for_lang_all IS NOT NULL THEN
3054           l_return_value := LPAD(g_rpa_attr(l_pa_request_id).for_lang_all||'00',7,'0');
3055          END IF;
3056         END IF;
3057      elsif p_input_value ='RPA_WAGE_GRD_SHFT_VAR' then
3058         l_return_value := g_rpa_attr(l_pa_request_id).wage_grd_shft_var;
3059      elsif p_input_value ='RPA_COOP_EMP_CTRL_CD' then
3060         l_return_value := g_rpa_attr(l_pa_request_id).coop_emp_ctrl_cd;
3061      elsif p_input_value ='RPA_COOP_ANN_SHR_CD' then
3062         l_return_value := g_rpa_attr(l_pa_request_id).coop_ann_shr_cd;
3063      elsif p_input_value ='RPA_COOP_ST_SHR_SAL' then
3064       IF INSTR (g_rpa_attr(l_pa_request_id).coop_st_shr_sal,'.') > 0 THEN
3065         l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).coop_st_shr_sal,'.'),7,'0');
3066       ELSE
3067        IF g_rpa_attr(l_pa_request_id).coop_st_shr_sal IS NOT NULL THEN
3068         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).coop_st_shr_sal||'00',7,'0');
3069        END IF;
3070       END IF;
3071      elsif p_input_value ='RPA_COOP_EMP_OTRT_FUR' then
3072       IF INSTR (g_rpa_attr(l_pa_request_id).coop_emp_otrt_fur,'.') > 0 THEN
3073          l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).coop_emp_otrt_fur,'.'),7,'0');
3074       ELSE
3075        IF g_rpa_attr(l_pa_request_id).coop_emp_otrt_fur IS NOT NULL THEN
3076         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).coop_emp_otrt_fur||'00',7,'0');
3077        END IF;
3078       END IF;
3079         l_return_value := g_rpa_attr(l_pa_request_id).coop_emp_otrt_fur;
3080      elsif p_input_value ='RPA_COOP_EMP_HOLRT_FUR' then
3081       IF INSTR (g_rpa_attr(l_pa_request_id).coop_emp_holrt_fur,'.') > 0 THEN
3082         l_return_value := LPAD(REPLACE(g_rpa_attr(l_pa_request_id).coop_emp_holrt_fur,'.'),7,'0');
3083       ELSE
3084        IF g_rpa_attr(l_pa_request_id).coop_emp_holrt_fur IS NOT NULL THEN
3085         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).coop_emp_holrt_fur||'00',7,'0');
3086        END IF;
3087       END IF;
3088      elsif p_input_value ='RPA_QUART_DED_RT' then
3089         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).quart_ded_rt,5,'0');
3090      elsif p_input_value ='RPA_QUART_DED_CD' then
3091         l_return_value := g_rpa_attr(l_pa_request_id).quart_ded_cd;
3092      elsif p_input_value ='RPA_ENV_DIFF_RT' then
3093         l_return_value := LPAD(g_rpa_attr(l_pa_request_id).env_diff_rt,4,'0');
3094   /*   elsif p_input_value ='RPA_STAFF_PERC' then
3095         l_return_value := g_rpa_rec(l_pa_request_id).staff_perc;*/
3096      elsif p_input_value ='RPA_SAV_GRD_OCC_SER' then
3097         l_return_value := g_rpa_attr(l_pa_request_id).sav_grd_occ_ser;
3098      elsif p_input_value ='RPA_SAV_GRD_OCC_SER_FUNCD' then
3099         l_return_value := g_rpa_attr(l_pa_request_id).sav_grd_occ_ser_funcd;
3100 
3101      elsif p_input_value ='RPA_AGENCY_USE' then
3102         l_return_value := g_rpa_attr(l_pa_request_id).agency_use;
3103      elsif p_input_value ='RPA_POSITION_CLASS_CD' then
3104         l_return_value := g_rpa_attr(l_pa_request_id).position_class_cd;
3105 
3106      end  if;
3107     end if;
3108 
3109    Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
3110    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
3111 
3112    return l_return_value;
3113 
3114 exception
3115    when others then
3116    p_error_code := sqlcode;
3117    p_error_message :=p_input_value;  --sqlerrm;
3118    Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
3119    return l_return_value;
3120 
3121 end Get_RPA_Data;
3122 -- =============================================================================
3123 -- ~ Get_Remarks_Data:
3124 -- =============================================================================
3125 function Get_Remarks_Data
3126         (p_assignment_id in number
3127         ,p_input_value   in varchar2
3128         ,p_error_code    in out nocopy varchar2
3129         ,p_error_message in out nocopy varchar2
3130         ) return varchar2 is
3131 
3132   /*cursor csr_rem_dsc(c_pa_remark_id in number) is
3133   select description
3134     from ghr_pa_remarks
3135    where pa_remark_id = c_pa_remark_id;*/
3136 
3137 
3138   CURSOR csr_rem_dsc(c_pa_remark_id  number
3139                     ,c_request_id    number
3140                     ,c_effective_date date) is
3141     SELECT gpr.remark_id
3142          ,gpr.description
3143          ,gr.code
3144      FROM ghr_pa_remarks gpr
3145          ,ghr_remarks gr
3146     WHERE gpr.pa_remark_id = c_pa_remark_id
3147       AND pa_request_id = c_request_id
3148       AND gr.remark_id=gpr.remark_id
3149       AND c_effective_date between gr.date_from
3150                                and NVL(gr.date_to,to_date('12/31/4712','MM/DD/YYYY'))
3151     ORDER BY remark_id;
3152 
3153   l_csr_rem_dsc           csr_rem_dsc%ROWTYPE;
3154   l_return_value          VARCHAR2(4000);
3155   l_value                 VARCHAR2(4000);
3156   l_pa_request_id         NUMBER;
3157   l_proc_name    CONSTANT VARCHAR2(250) := g_proc_name ||'Get_Remarks_Data';
3158   l_rpa_rec_exists        BOOLEAN;
3159   l_rem_exists            BOOLEAN;
3160   l_awd_rec_exists        BOOLEAN;
3161   l_rem_code              VARCHAR2(3);
3162 begin
3163 
3164    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
3165    l_return_value := null;
3166    l_rpa_rec_exists := false; l_rem_exists := false;
3167 
3168 
3169    if g_pa_req.exists(p_assignment_id) then
3170       Hr_Utility.set_location(' entering g_pa_req if', 6);
3171       l_pa_request_id  := g_pa_req(p_assignment_id).pa_request_id;
3172       l_rpa_rec_exists := g_rpa_rec.exists(l_pa_request_id);
3173       l_rem_exists     := g_pa_req_remark.exists(l_pa_request_id);
3174    end if;
3175 
3176    Hr_Utility.set_location(' l_pa_request_id: '||l_pa_request_id, 6);
3177    Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3178 
3179    if (l_rpa_rec_exists and
3180        l_rem_exists )then
3181       Hr_Utility.set_location(' entering first if', 6);
3182 
3183      open csr_rem_dsc(g_pa_req(p_assignment_id).pa_remark_id
3184                      ,l_pa_request_id
3185                      ,g_rpa_rec(l_pa_request_id).effective_date);
3186             fetch csr_rem_dsc into l_csr_rem_dsc;
3187                l_value := l_csr_rem_dsc.description ;
3188                l_rem_code :=l_csr_rem_dsc.code;
3189 
3190             close csr_rem_dsc;
3191       if p_input_value ='REM_POI' then
3192 
3193          l_return_value :=
3194                g_rpa_rec(l_pa_request_id).personnel_office_id;
3195       elsif p_input_value ='REM_AGNCY_CD' THEN
3196          l_return_value := g_rpa_attr(l_pa_request_id).nfc_agency ;
3197 
3198       elsif p_input_value ='REM_DEPT_CD' THEN
3199          l_return_value := g_rpa_attr(l_pa_request_id).pmso_dept ;
3200       elsif p_input_value ='REM_ALT_REQ' then
3201 
3202          l_return_value :=
3203                g_rpa_rec(l_pa_request_id).altered_pa_request_id;
3204       elsif p_input_value ='REM_PA_DATE' then
3205 
3206          l_return_value :=fnd_date.date_to_canonical(g_rpa_rec(l_pa_request_id).effective_date);
3207               -- FND_DATE.CANONICAL_TO_DATE(g_rpa_rec(l_pa_request_id).effective_date);
3208 
3209       elsif p_input_value ='REM_DESC_0109' then
3210       --Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3211        l_return_value :=SUBSTR(l_value,0,524);
3212       elsif p_input_value ='REM_DESC_01' then
3213         l_return_value :=SUBSTR(l_value,0,222);
3214       elsif p_input_value ='REM_DESC_02' then
3215         l_return_value :=SUBSTR(l_value,223,222);
3216       elsif p_input_value ='REM_DESC_03' then
3217        l_return_value :=SUBSTR(l_value,445,222);
3218       elsif p_input_value ='REM_DESC_04' then
3219        l_return_value :=SUBSTR(l_value,75,149);
3220       elsif p_input_value ='REM_DESC_05' then
3221        l_return_value :=SUBSTR(l_value,150,224);
3222       elsif p_input_value ='REM_DESC_06' then
3223        l_return_value :=SUBSTR(l_value,225,299);
3224       elsif p_input_value ='REM_DESC_07' then
3225        l_return_value :=SUBSTR(l_value,300,374);
3226       elsif p_input_value ='REM_DESC_08' then
3227        l_return_value :=SUBSTR(l_value,375,449);
3228       elsif p_input_value ='REM_DESC_09' then
3229        l_return_value :=SUBSTR(l_value,450,524);
3230       elsif p_input_value ='REM_SSN' then
3231          l_return_value :=
3232                REPLACE(g_rpa_rec(l_pa_request_id).employee_national_identifier,'-');
3233       elsif p_input_value ='REM_LN_OCCUR' then
3234        IF l_value IS NOT NULL THEN
3235        l_return_value :=LPAD(CEIL(LENGTH(l_value)/74),2,'0');
3236        ELSE
3237         l_return_value :='0';
3238        END IF;
3239       elsif p_input_value ='REM_CODE' then
3240          l_return_value := g_pa_req(p_assignment_id).remark_code;
3241       elsif p_input_value ='REM_FIR_NOA_CD' then
3242          l_return_value :=
3243                g_rpa_rec(l_pa_request_id).first_noa_code;
3244       elsif p_input_value ='REM_SEC_NOA_CD' then
3245          l_return_value :=
3246                g_rpa_rec(l_pa_request_id).second_noa_code;
3247       elsif p_input_value ='REM_PAY_PER_NUM' then
3248          l_return_value :=
3249                LPAD(g_rpa_attr(l_pa_request_id).pay_period_num,2,'0');
3250       elsif p_input_value ='REM_RMK_NUM' then
3251          l_return_value := l_rem_code ; --g_remark_cnt;
3252       end  if;
3253     end if;
3254 
3255 
3256 	-- For awards
3257 	l_awd_rec_exists := false; l_rem_exists := false;
3258 
3259    if g_aw_req.exists(p_assignment_id) then
3260 		Hr_Utility.set_location(' entering g_aw_req if', 6);
3261       l_pa_request_id := g_aw_req(p_assignment_id).pa_request_id;
3262       l_awd_rec_exists := g_awd_rec.exists(l_pa_request_id);
3263       l_rem_exists     := g_pa_req_remark.exists(l_pa_request_id);
3264    end if;
3265 
3266    Hr_Utility.set_location(' l_pa_request_id: '||l_pa_request_id, 16);
3267    Hr_Utility.set_location(' p_input_value: '||p_input_value, 16);
3268 
3269    if (l_awd_rec_exists and
3270        l_rem_exists )then
3271       Hr_Utility.set_location(' entering first if', 6);
3272      open csr_rem_dsc(g_aw_req(p_assignment_id).pa_remark_id
3273                      ,l_pa_request_id
3274                      ,g_awd_rec(l_pa_request_id).effective_date);
3275             fetch csr_rem_dsc into l_csr_rem_dsc;
3276                l_value := l_csr_rem_dsc.description ;
3277                l_rem_code :=l_csr_rem_dsc.code;
3278 
3279             close csr_rem_dsc;
3280       if p_input_value ='REM_POI' then
3281 
3282          l_return_value :=
3283 							g_awd_rec(l_pa_request_id).personnel_office_id;
3284       elsif p_input_value ='REM_AGNCY_CD' THEN
3285          l_return_value := g_rpa_awd_attr(l_pa_request_id).nfc_agency_code ;
3286 
3287       elsif p_input_value ='REM_DEPT_CD' THEN
3288          l_return_value := g_rpa_awd_attr(l_pa_request_id).dept_code ;
3289       elsif p_input_value ='REM_ALT_REQ' then
3290 
3291          l_return_value :=
3292                g_awd_rec(l_pa_request_id).altered_pa_request_id;
3293       elsif p_input_value ='REM_PA_DATE' then
3294 
3295          l_return_value :=FND_DATE.date_to_canonical(g_awd_rec(l_pa_request_id).effective_date);
3296               -- FND_DATE.CANONICAL_TO_DATE(g_rpa_rec(l_pa_request_id).effective_date);
3297 
3298       elsif p_input_value ='REM_DESC_0109' then
3299       --Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3300        l_return_value :=SUBSTR(l_value,0,524);
3301       elsif p_input_value ='REM_DESC_01' then
3302         l_return_value :=SUBSTR(l_value,0,222);
3303       elsif p_input_value ='REM_DESC_02' then
3304         l_return_value :=SUBSTR(l_value,223,222);
3305       elsif p_input_value ='REM_DESC_03' then
3306        l_return_value :=SUBSTR(l_value,445,222);
3307       elsif p_input_value ='REM_DESC_04' then
3308        l_return_value :=SUBSTR(l_value,75,149);
3309       elsif p_input_value ='REM_DESC_05' then
3310        l_return_value :=SUBSTR(l_value,150,224);
3311       elsif p_input_value ='REM_DESC_06' then
3312        l_return_value :=SUBSTR(l_value,225,299);
3313       elsif p_input_value ='REM_DESC_07' then
3314        l_return_value :=SUBSTR(l_value,300,374);
3315       elsif p_input_value ='REM_DESC_08' then
3316        l_return_value :=SUBSTR(l_value,375,449);
3317       elsif p_input_value ='REM_DESC_09' then
3318        l_return_value :=SUBSTR(l_value,450,524);
3319       elsif p_input_value ='REM_SSN' then
3320          l_return_value :=
3321                REPLACE(g_awd_rec(l_pa_request_id).employee_national_identifier,'-');
3322       elsif p_input_value ='REM_LN_OCCUR' then
3323        IF l_value IS NOT NULL THEN
3324 	       l_return_value :=LPAD(CEIL(LENGTH(l_value)/74),2,'0');
3325        ELSE
3326 		   l_return_value :='0';
3327        END IF;
3328       elsif p_input_value ='REM_CODE' then
3329          l_return_value := g_aw_req(p_assignment_id).remark_code;
3330       elsif p_input_value ='REM_FIR_NOA_CD' then
3331          l_return_value :=
3332                g_rpa_awd_attr(l_pa_request_id).nat_act_2nd_3pos;
3333       elsif p_input_value ='REM_SEC_NOA_CD' then
3334          l_return_value :=
3335                g_rpa_awd_attr(l_pa_request_id).nat_act_1st_3_pos;
3336       elsif p_input_value ='REM_PAY_PER_NUM' then
3337          l_return_value :=
3338                LPAD(g_rpa_awd_attr(l_pa_request_id).pay_per_num,2,'0');
3339       elsif p_input_value ='REM_RMK_NUM' then
3340          l_return_value := l_rem_code ; --g_remark_cnt;
3341       end  if;
3342     end if;
3343 
3344 	-- End awards
3345 
3346    Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
3347    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
3348 
3349    return l_return_value;
3350 
3351 exception
3352    when others then
3353    p_error_code := sqlcode;
3354    p_error_message := NULL;
3355    Hr_Utility.set_location('SQLERRM: '||sqlerrm, 90);
3356    Hr_Utility.set_location('error Leaving: '||l_proc_name, 90);
3357    return l_return_value;
3358 
3359 end Get_Remarks_Data;
3360 
3361 -- =============================================================================
3362 -- ~ Get_Award_Data:
3363 -- =============================================================================
3364 function Get_Award_Data
3365         (p_assignment_id in number
3366         ,p_input_value   in varchar2
3367         ,p_error_code    in out nocopy varchar2
3368         ,p_error_message in out nocopy varchar2
3369         ) return varchar2 is
3370   l_return_value          varchar2(2000);
3371   l_proc_name    constant varchar2(250) := g_proc_name ||'Get_Award_Data';
3372   l_pa_request_id         number(15);
3373 begin
3374    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
3375 
3376    l_return_value := null;
3377    if g_aw_req.exists(p_assignment_id) then
3378      l_pa_request_id := g_aw_req(p_assignment_id).pa_request_id;
3379    end if;
3380 
3381    Hr_Utility.set_location(' l_pa_request_id: '||l_pa_request_id, 6);
3382    Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3383 
3384 
3385    if (l_pa_request_id is not null and
3386        g_awd_rec.exists(l_pa_request_id))then
3387 
3388       if p_input_value ='AWD_POI' then
3389 
3390          l_return_value := g_awd_rec(l_pa_request_id).personnel_office_id;
3391       elsif p_input_value ='AWD_ALT_REQ' then
3392 
3393          l_return_value := g_awd_rec(l_pa_request_id).altered_pa_request_id;
3394       elsif p_input_value ='AWD_SSN' then
3395 
3396          l_return_value := REPLACE(g_awd_rec(l_pa_request_id).employee_national_identifier,'-');
3397 
3398       elsif p_input_value ='RPA_AWARD_ID' then
3399 
3400          l_return_value := l_pa_request_id;
3401       elsif p_input_value ='AWD_AGCY' then
3402          l_return_value := g_rpa_awd_attr(l_pa_request_id).nfc_agency_code;
3403 
3404       elsif p_input_value ='AWD_PAY_PER_NUM' then
3405 
3406          l_return_value := LPAD(g_rpa_awd_attr(l_pa_request_id).pay_per_num,2,'0');
3407 
3408       elsif p_input_value ='AWD_CAW' then
3409        IF INSTR( g_rpa_awd_attr(l_pa_request_id).current_cash_award,'.') > 0 THEN
3410          l_return_value := LPAD(REPLACE(g_rpa_awd_attr(l_pa_request_id).current_cash_award,'.'),7,'0');
3411        ELSE
3412         IF g_rpa_awd_attr(l_pa_request_id).current_cash_award IS NOT NULL THEN
3413          l_return_value := LPAD(g_rpa_awd_attr(l_pa_request_id).current_cash_award||'00',7,'0');
3414         END IF;
3415        END IF;
3416 
3417 
3418       elsif p_input_value ='AWD_PERS_EFF_DT' then
3419 
3420          l_return_value := FND_DATE.date_to_canonical(g_awd_rec(l_pa_request_id).effective_date);
3421 
3422       elsif p_input_value ='AWD_CSC_OTH_LEG_AUTH' then
3423 
3424          l_return_value := g_awd_rec(l_pa_request_id).FIRST_ACTION_LA_DESC1;
3425       elsif p_input_value ='AWD_CSC_OTH_LEG_AUTH2' then
3426 
3427          l_return_value := g_awd_rec(l_pa_request_id).FIRST_ACTION_LA_DESC2;
3428 
3429       elsif p_input_value ='AWD_DEPT_CD' then
3430 
3431          l_return_value := g_rpa_awd_attr(l_pa_request_id).dept_code;
3432 
3433       elsif p_input_value ='AWD_DT_CSH_AWD_FRM' then
3434         l_return_value := fnd_date.date_to_canonical(g_rpa_awd_attr(l_pa_request_id).dt_cash_awd_from);
3435 
3436       elsif p_input_value ='AWD_DT_CSH_AWD_TO' then
3437 
3438          l_return_value := fnd_date.date_to_canonical(g_rpa_awd_attr(l_pa_request_id).dt_cash_awd_to) ;
3439       elsif p_input_value ='AWD_TANG_BEN' then
3440 
3441          l_return_value := g_rpa_awd_attr(l_pa_request_id).tangible_ben ;
3442 
3443       elsif p_input_value ='AWD_FIR_YR_SAV' then
3444        IF INSTR(g_rpa_awd_attr(l_pa_request_id).awd_fir_yr_sav,'.')> 0 THEN
3445          l_return_value := LPAD(REPLACE(g_rpa_awd_attr(l_pa_request_id).awd_fir_yr_sav,'.'),10,'0') ;
3446        ELSE
3447         IF g_rpa_awd_attr(l_pa_request_id).awd_fir_yr_sav IS NOT NULL THEN
3448          l_return_value := LPAD(g_rpa_awd_attr(l_pa_request_id).awd_fir_yr_sav||'00',10,'0') ;
3449         END IF;
3450        END IF;
3451 
3452       elsif p_input_value ='AWD_INTANG_BEN' then
3453 
3454          l_return_value := g_rpa_awd_attr(l_pa_request_id).intangible_ben ;
3455 
3456 
3457       elsif p_input_value ='AWD_CSH_AWD_AGNCY' then
3458 
3459          l_return_value := g_rpa_awd_attr(l_pa_request_id).cash_award_agency ;
3460 
3461       elsif p_input_value ='AWD_NAT_ACT_POS2' then
3462 
3463          l_return_value := g_rpa_awd_attr(l_pa_request_id).nat_act_2nd_3pos  ;
3464 
3465       elsif p_input_value ='AWD_CSC_AUTH_CD_NOA2' then
3466 
3467          l_return_value := g_rpa_awd_attr(l_pa_request_id).csc_auth_code_2nd_noa  ;
3468 
3469       elsif p_input_value ='AWD_CSC_AUTH_CD_NOA22' then
3470 
3471          l_return_value := g_rpa_awd_attr(l_pa_request_id).csc_auth_2ndcode_2nd_noa  ;
3472 
3473       elsif p_input_value ='AWD_CSH_AWD_CD' then
3474 
3475          l_return_value := g_rpa_awd_attr(l_pa_request_id).awd_csh_awd_cd   ;
3476 
3477      /* elsif p_input_value ='AWD_CSH_AWD_PAY_CD' then
3478 
3479          l_return_value := '0'  ;*/
3480 
3481       elsif p_input_value ='AWD_CHK_MAIL_ADDR_IND' then
3482 
3483          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_ind ;
3484 
3485       elsif p_input_value ='AWD_CHK_MAIL_ADDR_LN1' then
3486 
3487          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_ln1 ;
3488 
3489       elsif p_input_value ='AWD_CHK_MAIL_DES_AGNT' then
3490 
3491          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_desg_agnt ;
3492       elsif p_input_value ='AWD_CHK_MAIL_ADDR_LN2' then
3493 
3494          l_return_value :=g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_ln2 ;
3495 
3496       elsif p_input_value ='AWD_NAT_ACT_POS1' then
3497 
3498          l_return_value :=g_rpa_awd_attr(l_pa_request_id).nat_act_1st_3_pos ;
3499 
3500       elsif p_input_value ='AWD_CSC_AUTH_CD_NOA12' then
3501 
3502          l_return_value := g_rpa_awd_attr(l_pa_request_id).csc_auth_code_2nd_noa1 ;
3503 
3504       elsif p_input_value ='AWD_CSC_AUTH_CD_NOA122' then
3505 
3506          l_return_value := g_rpa_awd_attr(l_pa_request_id).csc_auth_2ndcode_2nd_noa1 ;
3507 
3508       elsif p_input_value ='AWD_CHK_MAIL_ADDR_CITY' then
3509 
3510          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_city_name ;
3511 
3512       elsif p_input_value ='AWD_CHK_MAIL_ADDR_STATE' then
3513 
3514          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_state_name ;
3515 
3516       elsif p_input_value ='AWD_CHK_MAIL_ADDR_ZIP5' then
3517 
3518          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_zip_5 ;
3519 
3520       elsif p_input_value ='AWD_CHK_MAIL_ADDR_ZIP4' then
3521 
3522          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_zip_4 ;
3523 
3524       elsif p_input_value ='AWD_CHK_MAIL_ADDR_ZIP2' then
3525 
3526          l_return_value := g_rpa_awd_attr(l_pa_request_id).chk_mail_addr_zip_2 ;
3527 
3528      elsif p_input_value ='AWD_CASE_NUM' then
3529       l_return_value := g_rpa_awd_attr(l_pa_request_id).awd_case_num ;
3530      elsif p_input_value ='AWD_STORE_ACT_IND' then
3531       l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_store_act_ind;
3532      elsif p_input_value ='AWD_CSH_AWD_TYP_CD' then
3533       l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_csh_awd_typ_cd;
3534      elsif p_input_value ='AWD_CSH_AWD_PAY_CD' then
3535       l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_csh_awd_pay_cd  ;
3536      elsif p_input_value ='AWD_NO_PER_CSH_AWD' then
3537       l_return_value :=LPAD(g_rpa_awd_attr(l_pa_request_id).awd_no_per_csh_awd,3,'0');
3538      elsif p_input_value ='AWD_ACCTG_DIST_FISYR_CD' then
3539       l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_acctg_dist_fisyr_cd;
3540      elsif p_input_value ='AWD_ACCTG_DIST_APPN_CD' then
3541       l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_acctg_dist_appn_cd;
3542      elsif p_input_value ='AWD_AUTH_DT' then
3543       l_return_value :=g_rpa_awd_attr(l_pa_request_id).authentication_dt;
3544     elsif p_input_value ='AWD_CSH_AWD_ACCST_CHG' then
3545      l_return_value :=g_rpa_awd_attr(l_pa_request_id).awd_csh_awd_accst_chg;
3546      elsif p_input_value ='AWD_APP_DT' then
3547       l_return_value := TRUNC(g_awd_rec(l_pa_request_id).approval_date);
3548       -- Bug 4641232 For elements pos-one-two and pos-three-four
3549       elsif p_input_value = 'AWD_POS_ONE_TWO' then
3550       	l_return_value := '67';
3551       elsif p_input_value = 'AWD_POS_THREE_FOUR' then
3552       	l_return_value := '00';
3553       end  if;
3554    end if;
3555    return l_return_value;
3556 exception
3557    when others then
3558    p_error_code := sqlcode;
3559    p_error_message := p_input_value;--sqlerrm;
3560    Hr_Utility.set_location('SQLERRM: '||sqlerrm, 90);
3561    Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
3562    return l_return_value;
3563 
3564 end Get_Award_Data;
3565 -- =============================================================================
3566 -- ~ Get_Address_Data:
3567 -- =============================================================================
3568 function Get_Address_Data
3569         (p_assignment_id in number
3570         ,p_input_value   in varchar2
3571         ,p_error_code    in out nocopy varchar2
3572         ,p_error_message in out nocopy varchar2
3573         ) return varchar2 is
3574 
3575   l_return_value          varchar2(2000);
3576   l_address_id            number;
3577   l_proc_name    constant varchar2(250) := g_proc_name ||'Get_Address_Data';
3578 
3579 begin
3580    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
3581    l_return_value := null;
3582    if g_address_rec.exists(p_assignment_id) then
3583      l_address_id := g_address_rec(p_assignment_id).address_id;
3584    end if;
3585 
3586 
3587    if g_debug then
3588       Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3589       Hr_Utility.set_location(' l_address_id: '||l_address_id, 6);
3590    end if;
3591 
3592    Hr_Utility.set_location(' p_input_value: '||p_input_value, 6);
3593    Hr_Utility.set_location(' l_address_id: '||l_address_id, 6);
3594 
3595    if (l_address_id is not null )then
3596 
3597       if p_input_value ='ADD_EFF_DATE' then
3598 
3599          l_return_value := fnd_date.date_to_canonical(
3600                              g_address_rec(p_assignment_id).effective_date);
3601 
3602       elsif p_input_value ='ADD_LINE1' then
3603 
3604          l_return_value := g_rpa_add_attr(p_assignment_id).address_line1;
3605 
3606       elsif p_input_value ='ADD_LINE2' then
3607 
3608          l_return_value := g_rpa_add_attr(p_assignment_id).address_line2;
3609 
3610       elsif p_input_value ='ADD_LINE3' then
3611 
3612          l_return_value := g_rpa_add_attr(p_assignment_id).address_line3;
3613 
3614       elsif p_input_value ='ADD_CITY' then
3615 
3616       --   l_return_value := g_address_rec(p_assignment_id).town_or_city;
3617            l_return_value := g_rpa_add_attr(p_assignment_id).add_city;
3618 
3619       elsif p_input_value ='ADD_STATE' then
3620 
3621       -- l_return_value := g_address_rec(p_assignment_id).region_2;
3622 
3623          l_return_value := g_rpa_add_attr(p_assignment_id).add_state;
3624 
3625       elsif p_input_value ='ADD_COUNTY' then
3626 
3627         -- l_return_value := SUBSTR (g_address_rec(p_assignment_id).region_1,7,3);
3628        --   l_return_value := g_rpa_add_attr(p_assignment_id).add_county;
3629           l_return_value := SUBSTR(g_rpa_add_attr(p_assignment_id).add_county,7,3);
3630 
3631       elsif p_input_value ='ADD_ZIPCODE' then
3632 
3633          l_return_value :=SUBSTR( g_rpa_add_attr(p_assignment_id).zip_cd,0,5);
3634 
3635      elsif p_input_value ='ADD_ZIP_CD_4' then
3636         --IF LENGTH(g_rpa_add_attr(p_assignment_id).zip_cd) >=9 THEN
3637 
3638          l_return_value := SUBSTR(g_rpa_add_attr(p_assignment_id).zip_cd,LENGTH(g_rpa_add_attr(p_assignment_id).zip_cd)-3);
3639         --END IF;
3640 
3641       elsif p_input_value ='ADD_AGNCY_CD' then
3642 
3643          Hr_Utility.set_location(' Inside Agency CD: '||p_input_value, 6);
3644 
3645          l_return_value :=g_rpa_add_attr(p_assignment_id).nfc_agency_code;
3646 
3647           Hr_Utility.set_location(' l_return_value: '||l_return_value, 6);
3648 
3649       elsif p_input_value ='ADD_POI' then
3650 
3651          l_return_value := g_rpa_add_attr(p_assignment_id).poi;
3652       elsif p_input_value ='ADD_PAY_PER_NUM' then
3653 
3654          l_return_value := LPAD(g_rpa_add_attr(p_assignment_id).pay_per_num,2,'0');
3655       elsif p_input_value ='ADD_DEPT_CODE' then
3656 
3657          l_return_value := g_rpa_add_attr(p_assignment_id).dept_code;
3658       elsif p_input_value ='ADD_SSN' then
3659          l_return_value := g_rpa_add_attr(p_assignment_id).ssn;
3660 
3661 
3662 
3663 
3664 
3665       elsif p_input_value ='ADD_LINE_CHK1' then
3666          l_return_value := g_rpa_add_attr(p_assignment_id).address_line1_chk;
3667 
3668       elsif p_input_value ='ADD_LINE_CHK2' then
3669 
3670          l_return_value := g_rpa_add_attr(p_assignment_id).address_line2_chk;
3671 
3672       elsif p_input_value ='ADD_LINE_CHK3' then
3673 
3674          l_return_value := g_rpa_add_attr(p_assignment_id).address_line3_chk;
3675 
3676       elsif p_input_value ='ADD_CITY_CHK' then
3677 
3678       --   l_return_value := g_address_rec(p_assignment_id).town_or_city;
3679            l_return_value := g_rpa_add_attr(p_assignment_id).add_city_chk;
3680 
3681       elsif p_input_value ='ADD_STATE_CHK' then
3682 
3683       -- l_return_value := g_address_rec(p_assignment_id).region_2;
3684 
3685          l_return_value := g_rpa_add_attr(p_assignment_id).add_state_chk;
3686 
3687       elsif p_input_value ='ADD_COUNTY_CHK' then
3688 
3689           --SUBSTR (g_address_rec(p_assignment_id).region_1,7,3);
3690           l_return_value := SUBSTR(g_rpa_add_attr(p_assignment_id).add_county_chk,7,3);
3691       elsif p_input_value ='ADD_ZIPCODE_CHK' then
3692 
3693          l_return_value :=SUBSTR( g_rpa_add_attr(p_assignment_id).zip_cd_chk,0,5);
3694 
3695      elsif p_input_value ='ADD_ZIP_CD_CHK4' then
3696         --IF LENGTH(g_rpa_add_attr(p_assignment_id).zip_cd_chk) >=9 THEN
3697 
3698          l_return_value := SUBSTR(g_rpa_add_attr(p_assignment_id).zip_cd_chk
3699                             ,LENGTH(g_rpa_add_attr(p_assignment_id).zip_cd_chk)-3);
3700         --END IF;
3701 
3702 
3703 
3704 
3705 
3706 
3707       end if;
3708 
3709    end if;
3710 
3711    if g_debug then
3712       Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
3713       Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
3714    end if;
3715       Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
3716       Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
3717 
3718 
3719    return l_return_value;
3720 
3721 exception
3722    when others then
3723    p_error_code := sqlcode;
3724    p_error_message := p_input_value;--sqlerrm;
3725    Hr_Utility.set_location('SQLERRM: '||sqlerrm, 90);
3726    Hr_Utility.set_location('error Leaving: '||l_proc_name, 90);
3727    return l_return_value;
3728 
3729 end Get_Address_Data;
3730 -- =============================================================================
3731 -- ~ Get_Elmt_Val:
3732 -- =============================================================================
3733 function Get_Elmt_Val
3734          (p_rslt_dtl_id in number
3735          ,p_rslt_id     in number
3736          ,p_rcd_id      in number
3737          ,p_person_id   in number
3738          ,p_col_name    in varchar2
3739          ) return varchar2 as
3740 
3741    type valtyp is ref cursor;
3742    ele_cur       valtyp;
3743 
3744    l_sel_stmt   varchar2(2000);
3745    l_elmt_value varchar2(2000);
3746    l_proc_name  constant varchar2(150) := g_proc_name ||'Get_Elmt_Val';
3747 
3748 begin
3749    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
3750    l_sel_stmt := 'select '||p_col_name ||
3751                  '  from ben_ext_rslt_dtl
3752                   	where ext_rslt_id     = :1
3753                   	  and ext_rslt_dtl_id = :2
3754                   	  and ext_rcd_id      = :3
3755                   			and person_id       = :4';
3756 
3757    open ele_cur for l_sel_stmt
3758   		          using p_rslt_id
3759                    ,p_rslt_dtl_id
3760                    ,p_rcd_id
3761                    ,p_person_id;
3762   	fetch ele_cur into l_elmt_value;
3763   	close ele_cur;
3764   	Hr_Utility.set_location(' p_col_name  : '||p_col_name, 79);
3765 	  Hr_Utility.set_location(' l_elmt_value: '||l_elmt_value, 79);
3766 	  Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
3767 	  return l_elmt_value;
3768 
3769 end Get_Elmt_Val;
3770 -- =============================================================================
3771 -- ~ Update_Record_Values :
3772 -- =============================================================================
3773 procedure Update_Record_Values
3774            (p_ext_rcd_id            in ben_ext_rcd.ext_rcd_id%type
3775            ,p_ext_data_element_name in ben_ext_data_elmt.name%type
3776            ,p_data_element_value    in ben_ext_rslt_dtl.val_01%type
3777            ,p_data_ele_seqnum       in number
3778            ,p_ext_dtl_rec           in out nocopy ben_ext_rslt_dtl%rowtype
3779             ) is
3780    cursor csr_seqnum (c_ext_rcd_id            in ben_ext_rcd.ext_rcd_id%type
3781                      ,c_ext_data_element_name in ben_ext_data_elmt.name%type
3782                       ) is
3783       select der.ext_data_elmt_id,
3784              der.seq_num,
3785              ede.name
3786         from ben_ext_data_elmt_in_rcd der
3787              ,ben_ext_data_elmt        ede
3788        where der.ext_rcd_id = c_ext_rcd_id
3789          and ede.ext_data_elmt_id = der.ext_data_elmt_id
3790          and ede.name             like '%'|| c_ext_data_element_name
3791        order by seq_num;
3792 
3793    l_seqnum_rec        csr_seqnum%rowtype;
3794    l_proc_name         varchar2(150):= g_proc_name||'Update_Record_Values';
3795    l_ext_dtl_rec_nc    ben_ext_rslt_dtl%rowtype;
3796 begin
3797    Hr_Utility.set_location('Entering :'||l_proc_name, 5);
3798    -- nocopy changes
3799    l_ext_dtl_rec_nc := p_ext_dtl_rec;
3800 
3801    if p_data_ele_seqnum is null then
3802       open csr_seqnum ( c_ext_rcd_id            => p_ext_rcd_id
3803                        ,c_ext_data_element_name => p_ext_data_element_name);
3804       fetch csr_seqnum into l_seqnum_rec;
3805       if csr_seqnum%notfound then
3806          close csr_seqnum;
3807       else
3808          close csr_seqnum;
3809       end if;
3810    else
3811       l_seqnum_rec.seq_num := p_data_ele_seqnum;
3812    end if;
3813 
3814    if l_seqnum_rec.seq_num = 1 then
3815       p_ext_dtl_rec.val_01 := p_data_element_value;
3816    elsif l_seqnum_rec.seq_num = 2 then
3817       p_ext_dtl_rec.val_02 := p_data_element_value;
3818    elsif l_seqnum_rec.seq_num = 3 then
3819       p_ext_dtl_rec.val_03 := p_data_element_value;
3820    elsif l_seqnum_rec.seq_num = 4 then
3821       p_ext_dtl_rec.val_04 := p_data_element_value;
3822    elsif l_seqnum_rec.seq_num = 5 then
3823       p_ext_dtl_rec.val_05 := p_data_element_value;
3824    elsif l_seqnum_rec.seq_num = 6 then
3825       p_ext_dtl_rec.val_06 := p_data_element_value;
3826    elsif l_seqnum_rec.seq_num = 7 then
3827       p_ext_dtl_rec.val_07 := p_data_element_value;
3828    elsif l_seqnum_rec.seq_num = 8 then
3829       p_ext_dtl_rec.val_08 := p_data_element_value;
3830    elsif l_seqnum_rec.seq_num = 9 then
3831       p_ext_dtl_rec.val_09 := p_data_element_value;
3832    elsif l_seqnum_rec.seq_num = 10 then
3833       p_ext_dtl_rec.val_10 := p_data_element_value;
3834    elsif l_seqnum_rec.seq_num = 11 then
3835       p_ext_dtl_rec.val_11 := p_data_element_value;
3836    elsif l_seqnum_rec.seq_num = 12 then
3837       p_ext_dtl_rec.val_12 := p_data_element_value;
3838    elsif l_seqnum_rec.seq_num = 13 then
3839       p_ext_dtl_rec.val_13 := p_data_element_value;
3840    elsif l_seqnum_rec.seq_num = 14 then
3841       p_ext_dtl_rec.val_14 := p_data_element_value;
3842    elsif l_seqnum_rec.seq_num = 15 then
3843       p_ext_dtl_rec.val_15 := p_data_element_value;
3844    elsif l_seqnum_rec.seq_num = 16 then
3845       p_ext_dtl_rec.val_16 := p_data_element_value;
3846    elsif l_seqnum_rec.seq_num = 17 then
3847       p_ext_dtl_rec.val_17 := p_data_element_value;
3848    elsif l_seqnum_rec.seq_num = 18 then
3849       p_ext_dtl_rec.val_18 := p_data_element_value;
3850    elsif l_seqnum_rec.seq_num = 19 then
3851       p_ext_dtl_rec.val_19 := p_data_element_value;
3852    elsif l_seqnum_rec.seq_num = 20 then
3853       p_ext_dtl_rec.val_20 := p_data_element_value;
3854    elsif l_seqnum_rec.seq_num = 21 then
3855       p_ext_dtl_rec.val_21 := p_data_element_value;
3856    elsif l_seqnum_rec.seq_num = 22 then
3857       p_ext_dtl_rec.val_22 := p_data_element_value;
3858    elsif l_seqnum_rec.seq_num = 23then
3859       p_ext_dtl_rec.val_23 := p_data_element_value;
3860    elsif l_seqnum_rec.seq_num = 24 then
3861       p_ext_dtl_rec.val_24 := p_data_element_value;
3862    elsif l_seqnum_rec.seq_num = 25 then
3863       p_ext_dtl_rec.val_25 := p_data_element_value;
3864    elsif l_seqnum_rec.seq_num = 26 then
3865       p_ext_dtl_rec.val_26 := p_data_element_value;
3866    elsif l_seqnum_rec.seq_num = 27 then
3867       p_ext_dtl_rec.val_27 := p_data_element_value;
3868    elsif l_seqnum_rec.seq_num = 28 then
3869       p_ext_dtl_rec.val_28 := p_data_element_value;
3870    elsif l_seqnum_rec.seq_num = 29 then
3871       p_ext_dtl_rec.val_29 := p_data_element_value;
3872    elsif l_seqnum_rec.seq_num = 30 then
3873       p_ext_dtl_rec.val_30 := p_data_element_value;
3874    elsif l_seqnum_rec.seq_num = 31 then
3875       p_ext_dtl_rec.val_31 := p_data_element_value;
3876    elsif l_seqnum_rec.seq_num = 32 then
3877       p_ext_dtl_rec.val_32 := p_data_element_value;
3878    elsif l_seqnum_rec.seq_num = 33 then
3879       p_ext_dtl_rec.val_33 := p_data_element_value;
3880    elsif l_seqnum_rec.seq_num = 34 then
3881       p_ext_dtl_rec.val_34 := p_data_element_value;
3882    elsif l_seqnum_rec.seq_num = 35 then
3883       p_ext_dtl_rec.val_35 := p_data_element_value;
3884    elsif l_seqnum_rec.seq_num = 36 then
3885       p_ext_dtl_rec.val_36 := p_data_element_value;
3886    elsif l_seqnum_rec.seq_num = 37 then
3887       p_ext_dtl_rec.val_37 := p_data_element_value;
3888    elsif l_seqnum_rec.seq_num = 38 then
3889       p_ext_dtl_rec.val_38 := p_data_element_value;
3890    elsif l_seqnum_rec.seq_num = 39 then
3891       p_ext_dtl_rec.val_39 := p_data_element_value;
3892    elsif l_seqnum_rec.seq_num = 40 then
3893       p_ext_dtl_rec.val_40 := p_data_element_value;
3894    elsif l_seqnum_rec.seq_num = 41 then
3895       p_ext_dtl_rec.val_41 := p_data_element_value;
3896    elsif l_seqnum_rec.seq_num = 42 then
3897       p_ext_dtl_rec.val_42 := p_data_element_value;
3898    elsif l_seqnum_rec.seq_num = 43 then
3899       p_ext_dtl_rec.val_43 := p_data_element_value;
3900    elsif l_seqnum_rec.seq_num = 44 then
3901       p_ext_dtl_rec.val_44 := p_data_element_value;
3902    elsif l_seqnum_rec.seq_num = 45 then
3903       p_ext_dtl_rec.val_45 := p_data_element_value;
3904    elsif l_seqnum_rec.seq_num = 46 then
3905       p_ext_dtl_rec.val_46 := p_data_element_value;
3906    elsif l_seqnum_rec.seq_num = 47 then
3907       p_ext_dtl_rec.val_47 := p_data_element_value;
3908    elsif l_seqnum_rec.seq_num = 48 then
3909       p_ext_dtl_rec.val_48 := p_data_element_value;
3910    elsif l_seqnum_rec.seq_num = 49 then
3911       p_ext_dtl_rec.val_49 := p_data_element_value;
3912    elsif l_seqnum_rec.seq_num = 50 then
3913       p_ext_dtl_rec.val_50 := p_data_element_value;
3914    elsif l_seqnum_rec.seq_num = 51 then
3915       p_ext_dtl_rec.val_51 := p_data_element_value;
3916    elsif l_seqnum_rec.seq_num = 52 then
3917       p_ext_dtl_rec.val_52 := p_data_element_value;
3918    elsif l_seqnum_rec.seq_num = 53 then
3919       p_ext_dtl_rec.val_53 := p_data_element_value;
3920    elsif l_seqnum_rec.seq_num = 54 then
3921       p_ext_dtl_rec.val_54 := p_data_element_value;
3922    elsif l_seqnum_rec.seq_num = 55 then
3923       p_ext_dtl_rec.val_55 := p_data_element_value;
3924    elsif l_seqnum_rec.seq_num = 56 then
3925       p_ext_dtl_rec.val_56 := p_data_element_value;
3926    elsif l_seqnum_rec.seq_num = 57 then
3927       p_ext_dtl_rec.val_57 := p_data_element_value;
3928    elsif l_seqnum_rec.seq_num = 58 then
3929       p_ext_dtl_rec.val_58 := p_data_element_value;
3930    elsif l_seqnum_rec.seq_num = 58 then
3931       p_ext_dtl_rec.val_58 := p_data_element_value;
3932    elsif l_seqnum_rec.seq_num = 59 then
3933       p_ext_dtl_rec.val_59 := p_data_element_value;
3934    elsif l_seqnum_rec.seq_num = 60 then
3935       p_ext_dtl_rec.val_60 := p_data_element_value;
3936    elsif l_seqnum_rec.seq_num = 61 then
3937       p_ext_dtl_rec.val_61 := p_data_element_value;
3938    elsif l_seqnum_rec.seq_num = 62 then
3939       p_ext_dtl_rec.val_62 := p_data_element_value;
3940    elsif l_seqnum_rec.seq_num = 63 then
3941       p_ext_dtl_rec.val_63 := p_data_element_value;
3942    elsif l_seqnum_rec.seq_num = 64 then
3943       p_ext_dtl_rec.val_64 := p_data_element_value;
3944    elsif l_seqnum_rec.seq_num = 65 then
3945       p_ext_dtl_rec.val_65 := p_data_element_value;
3946    elsif l_seqnum_rec.seq_num = 66 then
3947       p_ext_dtl_rec.val_66 := p_data_element_value;
3948    elsif l_seqnum_rec.seq_num = 67 then
3949       p_ext_dtl_rec.val_67 := p_data_element_value;
3950    elsif l_seqnum_rec.seq_num = 68 then
3951       p_ext_dtl_rec.val_68 := p_data_element_value;
3952    elsif l_seqnum_rec.seq_num = 69 then
3953       p_ext_dtl_rec.val_69 := p_data_element_value;
3954    elsif l_seqnum_rec.seq_num = 70 then
3955       p_ext_dtl_rec.val_70 := p_data_element_value;
3956    elsif l_seqnum_rec.seq_num = 71 then
3957       p_ext_dtl_rec.val_71 := p_data_element_value;
3958    elsif l_seqnum_rec.seq_num = 72 then
3959       p_ext_dtl_rec.val_72 := p_data_element_value;
3960    elsif l_seqnum_rec.seq_num = 73 then
3961       p_ext_dtl_rec.val_73 := p_data_element_value;
3962    elsif l_seqnum_rec.seq_num = 74 then
3963       p_ext_dtl_rec.val_74 := p_data_element_value;
3964    elsif l_seqnum_rec.seq_num = 75 then
3965       p_ext_dtl_rec.val_75 := p_data_element_value;
3966    elsif l_seqnum_rec.seq_num = 76 then
3967       p_ext_dtl_rec.val_76 := p_data_element_value;
3968    elsif l_seqnum_rec.seq_num = 77 then
3969       p_ext_dtl_rec.val_77 := p_data_element_value;
3970    elsif l_seqnum_rec.seq_num = 78 then
3971       p_ext_dtl_rec.val_78 := p_data_element_value;
3972    elsif l_seqnum_rec.seq_num = 79 then
3973       p_ext_dtl_rec.val_79 := p_data_element_value;
3974    elsif l_seqnum_rec.seq_num = 80 then
3975       p_ext_dtl_rec.val_80 := p_data_element_value;
3976      elsif l_seqnum_rec.seq_num = 81 then
3977       p_ext_dtl_rec.val_81 := p_data_element_value;
3978    elsif l_seqnum_rec.seq_num = 82 then
3979       p_ext_dtl_rec.val_82 := p_data_element_value;
3980    elsif l_seqnum_rec.seq_num = 83 then
3981       p_ext_dtl_rec.val_83 := p_data_element_value;
3982    elsif l_seqnum_rec.seq_num = 84 then
3983       p_ext_dtl_rec.val_84 := p_data_element_value;
3984    elsif l_seqnum_rec.seq_num = 85 then
3985       p_ext_dtl_rec.val_85 := p_data_element_value;
3986    elsif l_seqnum_rec.seq_num = 86 then
3987       p_ext_dtl_rec.val_86 := p_data_element_value;
3988    elsif l_seqnum_rec.seq_num = 87 then
3989       p_ext_dtl_rec.val_87 := p_data_element_value;
3990    elsif l_seqnum_rec.seq_num = 88 then
3991       p_ext_dtl_rec.val_88 := p_data_element_value;
3992    elsif l_seqnum_rec.seq_num = 89 then
3993       p_ext_dtl_rec.val_89 := p_data_element_value;
3994    elsif l_seqnum_rec.seq_num = 90 then
3995       p_ext_dtl_rec.val_90 := p_data_element_value;
3996    elsif l_seqnum_rec.seq_num = 91 then
3997       p_ext_dtl_rec.val_91 := p_data_element_value;
3998    elsif l_seqnum_rec.seq_num = 92 then
3999       p_ext_dtl_rec.val_92 := p_data_element_value;
4000    elsif l_seqnum_rec.seq_num = 93 then
4001       p_ext_dtl_rec.val_93 := p_data_element_value;
4002    elsif l_seqnum_rec.seq_num = 94 then
4003       p_ext_dtl_rec.val_94 := p_data_element_value;
4004    elsif l_seqnum_rec.seq_num = 95 then
4005       p_ext_dtl_rec.val_95 := p_data_element_value;
4006    elsif l_seqnum_rec.seq_num = 96 then
4007       p_ext_dtl_rec.val_96 := p_data_element_value;
4008    elsif l_seqnum_rec.seq_num = 97 then
4009       p_ext_dtl_rec.val_97 := p_data_element_value;
4010    elsif l_seqnum_rec.seq_num = 98 then
4011       p_ext_dtl_rec.val_98 := p_data_element_value;
4012    elsif l_seqnum_rec.seq_num = 99 then
4013       p_ext_dtl_rec.val_99 := p_data_element_value;
4014    elsif l_seqnum_rec.seq_num = 100 then
4015       p_ext_dtl_rec.val_100 := p_data_element_value;
4016       elsif l_seqnum_rec.seq_num = 101 then
4017       p_ext_dtl_rec.val_101 := p_data_element_value;
4018    elsif l_seqnum_rec.seq_num = 102 then
4019       p_ext_dtl_rec.val_102 := p_data_element_value;
4020    elsif l_seqnum_rec.seq_num = 103 then
4021       p_ext_dtl_rec.val_103 := p_data_element_value;
4022    elsif l_seqnum_rec.seq_num = 104 then
4023       p_ext_dtl_rec.val_104 := p_data_element_value;
4024    elsif l_seqnum_rec.seq_num = 105 then
4025       p_ext_dtl_rec.val_105 := p_data_element_value;
4026    elsif l_seqnum_rec.seq_num = 106 then
4027       p_ext_dtl_rec.val_106 := p_data_element_value;
4028    elsif l_seqnum_rec.seq_num = 107 then
4029       p_ext_dtl_rec.val_107 := p_data_element_value;
4030    elsif l_seqnum_rec.seq_num = 108 then
4031       p_ext_dtl_rec.val_108 := p_data_element_value;
4032    elsif l_seqnum_rec.seq_num = 109 then
4033       p_ext_dtl_rec.val_109 := p_data_element_value;
4034    elsif l_seqnum_rec.seq_num = 110 then
4035       p_ext_dtl_rec.val_110 := p_data_element_value;
4036       elsif l_seqnum_rec.seq_num = 111 then
4037       p_ext_dtl_rec.val_111 := p_data_element_value;
4038    elsif l_seqnum_rec.seq_num = 112 then
4039       p_ext_dtl_rec.val_112 := p_data_element_value;
4040    elsif l_seqnum_rec.seq_num = 113 then
4041       p_ext_dtl_rec.val_113 := p_data_element_value;
4042    elsif l_seqnum_rec.seq_num = 114 then
4043       p_ext_dtl_rec.val_114 := p_data_element_value;
4044    elsif l_seqnum_rec.seq_num = 115 then
4045       p_ext_dtl_rec.val_115 := p_data_element_value;
4046    elsif l_seqnum_rec.seq_num = 116 then
4047       p_ext_dtl_rec.val_116 := p_data_element_value;
4048    elsif l_seqnum_rec.seq_num = 117 then
4049       p_ext_dtl_rec.val_117 := p_data_element_value;
4050    elsif l_seqnum_rec.seq_num = 118 then
4051       p_ext_dtl_rec.val_118 := p_data_element_value;
4052    elsif l_seqnum_rec.seq_num = 119 then
4053       p_ext_dtl_rec.val_119 := p_data_element_value;
4054    elsif l_seqnum_rec.seq_num = 120 then
4055       p_ext_dtl_rec.val_120 := p_data_element_value;
4056    elsif l_seqnum_rec.seq_num = 121 then
4057       p_ext_dtl_rec.val_121 := p_data_element_value;
4058    elsif l_seqnum_rec.seq_num = 122 then
4059       p_ext_dtl_rec.val_122 := p_data_element_value;
4060    elsif l_seqnum_rec.seq_num = 123 then
4061       p_ext_dtl_rec.val_123 := p_data_element_value;
4062    elsif l_seqnum_rec.seq_num = 124 then
4063       p_ext_dtl_rec.val_124 := p_data_element_value;
4064    elsif l_seqnum_rec.seq_num = 125 then
4065       p_ext_dtl_rec.val_125 := p_data_element_value;
4066    elsif l_seqnum_rec.seq_num = 126 then
4067       p_ext_dtl_rec.val_126 := p_data_element_value;
4068    elsif l_seqnum_rec.seq_num = 127 then
4069       p_ext_dtl_rec.val_127 := p_data_element_value;
4070    elsif l_seqnum_rec.seq_num = 128 then
4071       p_ext_dtl_rec.val_128 := p_data_element_value;
4072    elsif l_seqnum_rec.seq_num = 129 then
4073       p_ext_dtl_rec.val_129 := p_data_element_value;
4074    elsif l_seqnum_rec.seq_num = 130 then
4075       p_ext_dtl_rec.val_130 := p_data_element_value;
4076    elsif l_seqnum_rec.seq_num = 131 then
4077       p_ext_dtl_rec.val_131 := p_data_element_value;
4078    elsif l_seqnum_rec.seq_num = 132 then
4079       p_ext_dtl_rec.val_132 := p_data_element_value;
4080    elsif l_seqnum_rec.seq_num = 133 then
4081       p_ext_dtl_rec.val_133 := p_data_element_value;
4082    elsif l_seqnum_rec.seq_num = 134 then
4083       p_ext_dtl_rec.val_134 := p_data_element_value;
4084    elsif l_seqnum_rec.seq_num = 135 then
4085       p_ext_dtl_rec.val_135 := p_data_element_value;
4086    elsif l_seqnum_rec.seq_num = 136 then
4087       p_ext_dtl_rec.val_136 := p_data_element_value;
4088    elsif l_seqnum_rec.seq_num = 137 then
4089       p_ext_dtl_rec.val_137 := p_data_element_value;
4090    elsif l_seqnum_rec.seq_num = 138 then
4091       p_ext_dtl_rec.val_138 := p_data_element_value;
4092    elsif l_seqnum_rec.seq_num = 139 then
4093       p_ext_dtl_rec.val_139 := p_data_element_value;
4094    elsif l_seqnum_rec.seq_num = 140 then
4095       p_ext_dtl_rec.val_140 := p_data_element_value;
4096    elsif l_seqnum_rec.seq_num = 141 then
4097       p_ext_dtl_rec.val_141 := p_data_element_value;
4098    elsif l_seqnum_rec.seq_num = 142 then
4099       p_ext_dtl_rec.val_142 := p_data_element_value;
4100    elsif l_seqnum_rec.seq_num = 143 then
4101       p_ext_dtl_rec.val_143 := p_data_element_value;
4102    elsif l_seqnum_rec.seq_num = 144 then
4103       p_ext_dtl_rec.val_144 := p_data_element_value;
4104    elsif l_seqnum_rec.seq_num = 145 then
4105       p_ext_dtl_rec.val_145 := p_data_element_value;
4106    elsif l_seqnum_rec.seq_num = 146 then
4107       p_ext_dtl_rec.val_146 := p_data_element_value;
4108    elsif l_seqnum_rec.seq_num = 147 then
4109       p_ext_dtl_rec.val_147 := p_data_element_value;
4110    elsif l_seqnum_rec.seq_num = 148 then
4111       p_ext_dtl_rec.val_148 := p_data_element_value;
4112    elsif l_seqnum_rec.seq_num = 149 then
4113       p_ext_dtl_rec.val_149 := p_data_element_value;
4114    elsif l_seqnum_rec.seq_num = 150 then
4115       p_ext_dtl_rec.val_150 := p_data_element_value;
4116    end if;
4117 
4118    Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
4119    return;
4120 exception
4121    when Others then
4122      -- nocopy changes
4123      p_ext_dtl_rec := l_ext_dtl_rec_nc;
4124      raise;
4125 
4126 end Update_Record_Values;
4127 -- =============================================================================
4128 -- Copy_Rec_Values :
4129 -- =============================================================================
4130 procedure Copy_Rec_Values
4131           (p_rslt_rec   in ben_ext_rslt_dtl%rowtype
4132           ,p_val_tab    in out NOCOPY  ValTabTyp) is
4133 
4134   l_proc_name    varchar2(150) := g_proc_name ||'Copy_Rec_Values ';
4135 begin
4136    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
4137 
4138    p_val_tab(1) := p_rslt_rec.val_01;
4139    p_val_tab(2) := p_rslt_rec.val_02;
4140    p_val_tab(3) := p_rslt_rec.val_03;
4141    p_val_tab(4) := p_rslt_rec.val_04;
4142    p_val_tab(5) := p_rslt_rec.val_05;
4143    p_val_tab(6) := p_rslt_rec.val_06;
4144    p_val_tab(7) := p_rslt_rec.val_07;
4145    p_val_tab(8) := p_rslt_rec.val_08;
4146    p_val_tab(9) := p_rslt_rec.val_09;
4147 
4148    p_val_tab(10) := p_rslt_rec.val_10;
4149    p_val_tab(11) := p_rslt_rec.val_11;
4150    p_val_tab(12) := p_rslt_rec.val_12;
4151    p_val_tab(13) := p_rslt_rec.val_13;
4152    p_val_tab(14) := p_rslt_rec.val_14;
4153    p_val_tab(15) := p_rslt_rec.val_15;
4154    p_val_tab(16) := p_rslt_rec.val_16;
4155    p_val_tab(17) := p_rslt_rec.val_17;
4156    p_val_tab(18) := p_rslt_rec.val_18;
4157    p_val_tab(19) := p_rslt_rec.val_19;
4158 
4159    p_val_tab(20) := p_rslt_rec.val_20;
4160    p_val_tab(21) := p_rslt_rec.val_21;
4161    p_val_tab(22) := p_rslt_rec.val_22;
4162    p_val_tab(23) := p_rslt_rec.val_23;
4163    p_val_tab(24) := p_rslt_rec.val_24;
4164    p_val_tab(25) := p_rslt_rec.val_25;
4165    p_val_tab(26) := p_rslt_rec.val_26;
4166    p_val_tab(27) := p_rslt_rec.val_27;
4167    p_val_tab(28) := p_rslt_rec.val_28;
4168    p_val_tab(29) := p_rslt_rec.val_29;
4169 
4170    p_val_tab(30) := p_rslt_rec.val_30;
4171    p_val_tab(31) := p_rslt_rec.val_31;
4172    p_val_tab(32) := p_rslt_rec.val_32;
4173    p_val_tab(33) := p_rslt_rec.val_33;
4174    p_val_tab(34) := p_rslt_rec.val_34;
4175    p_val_tab(35) := p_rslt_rec.val_35;
4176    p_val_tab(36) := p_rslt_rec.val_36;
4177    p_val_tab(37) := p_rslt_rec.val_37;
4178    p_val_tab(38) := p_rslt_rec.val_38;
4179    p_val_tab(39) := p_rslt_rec.val_39;
4180 
4181    p_val_tab(40) := p_rslt_rec.val_40;
4182    p_val_tab(41) := p_rslt_rec.val_41;
4183    p_val_tab(42) := p_rslt_rec.val_42;
4184    p_val_tab(43) := p_rslt_rec.val_43;
4185    p_val_tab(44) := p_rslt_rec.val_44;
4186    p_val_tab(45) := p_rslt_rec.val_45;
4187    p_val_tab(46) := p_rslt_rec.val_46;
4188    p_val_tab(47) := p_rslt_rec.val_47;
4189    p_val_tab(48) := p_rslt_rec.val_48;
4190    p_val_tab(49) := p_rslt_rec.val_49;
4191 
4192    p_val_tab(50) := p_rslt_rec.val_50;
4193    p_val_tab(51) := p_rslt_rec.val_51;
4194    p_val_tab(52) := p_rslt_rec.val_52;
4195    p_val_tab(53) := p_rslt_rec.val_53;
4196    p_val_tab(54) := p_rslt_rec.val_54;
4197    p_val_tab(55) := p_rslt_rec.val_55;
4198    p_val_tab(56) := p_rslt_rec.val_56;
4199    p_val_tab(57) := p_rslt_rec.val_57;
4200    p_val_tab(58) := p_rslt_rec.val_58;
4201    p_val_tab(59) := p_rslt_rec.val_59;
4202 
4203    p_val_tab(60) := p_rslt_rec.val_60;
4204    p_val_tab(61) := p_rslt_rec.val_61;
4205    p_val_tab(62) := p_rslt_rec.val_62;
4206    p_val_tab(63) := p_rslt_rec.val_63;
4207    p_val_tab(64) := p_rslt_rec.val_64;
4208    p_val_tab(65) := p_rslt_rec.val_65;
4209    p_val_tab(66) := p_rslt_rec.val_66;
4210    p_val_tab(67) := p_rslt_rec.val_67;
4211    p_val_tab(68) := p_rslt_rec.val_68;
4212    p_val_tab(69) := p_rslt_rec.val_69;
4213 
4214    p_val_tab(70) := p_rslt_rec.val_70;
4215    p_val_tab(71) := p_rslt_rec.val_71;
4216    p_val_tab(72) := p_rslt_rec.val_72;
4217    p_val_tab(73) := p_rslt_rec.val_73;
4218    p_val_tab(74) := p_rslt_rec.val_74;
4219    p_val_tab(75) := p_rslt_rec.val_75;
4220 
4221    p_val_tab(76) := p_rslt_rec.val_76;
4222    p_val_tab(77) := p_rslt_rec.val_77;
4223    p_val_tab(78) := p_rslt_rec.val_78;
4224    p_val_tab(79) := p_rslt_rec.val_79;
4225    p_val_tab(80) := p_rslt_rec.val_80;
4226 
4227    p_val_tab(81) := p_rslt_rec.val_81;
4228    p_val_tab(82) := p_rslt_rec.val_82;
4229    p_val_tab(83) := p_rslt_rec.val_83;
4230    p_val_tab(84) := p_rslt_rec.val_84;
4231    p_val_tab(85) := p_rslt_rec.val_85;
4232 
4233    p_val_tab(86) := p_rslt_rec.val_86;
4234    p_val_tab(87) := p_rslt_rec.val_87;
4235    p_val_tab(88) := p_rslt_rec.val_88;
4236    p_val_tab(89) := p_rslt_rec.val_89;
4237    p_val_tab(90) := p_rslt_rec.val_90;
4238 
4239    p_val_tab(91) := p_rslt_rec.val_91;
4240    p_val_tab(92) := p_rslt_rec.val_92;
4241    p_val_tab(93) := p_rslt_rec.val_93;
4242    p_val_tab(94) := p_rslt_rec.val_94;
4243    p_val_tab(95) := p_rslt_rec.val_95;
4244 
4245    p_val_tab(96) := p_rslt_rec.val_96;
4246    p_val_tab(97) := p_rslt_rec.val_97;
4247    p_val_tab(98) := p_rslt_rec.val_98;
4248    p_val_tab(99) := p_rslt_rec.val_99;
4249    p_val_tab(100) := p_rslt_rec.val_100;
4250 
4251    p_val_tab(101) := p_rslt_rec.val_101;
4252    p_val_tab(102) := p_rslt_rec.val_102;
4253    p_val_tab(103) := p_rslt_rec.val_103;
4254    p_val_tab(104) := p_rslt_rec.val_104;
4255    p_val_tab(105) := p_rslt_rec.val_105;
4256 
4257    p_val_tab(106) := p_rslt_rec.val_106;
4258    p_val_tab(107) := p_rslt_rec.val_107;
4259    p_val_tab(108) := p_rslt_rec.val_108;
4260    p_val_tab(109) := p_rslt_rec.val_109;
4261    p_val_tab(110) := p_rslt_rec.val_110;
4262 
4263    p_val_tab(111) := p_rslt_rec.val_111;
4264    p_val_tab(112) := p_rslt_rec.val_112;
4265    p_val_tab(113) := p_rslt_rec.val_113;
4266    p_val_tab(114) := p_rslt_rec.val_114;
4267    p_val_tab(115) := p_rslt_rec.val_115;
4268 
4269    p_val_tab(116) := p_rslt_rec.val_116;
4270    p_val_tab(117) := p_rslt_rec.val_117;
4271    p_val_tab(118) := p_rslt_rec.val_118;
4272    p_val_tab(119) := p_rslt_rec.val_119;
4273    p_val_tab(120) := p_rslt_rec.val_120;
4274 
4275    p_val_tab(121) := p_rslt_rec.val_121;
4276    p_val_tab(122) := p_rslt_rec.val_122;
4277    p_val_tab(123) := p_rslt_rec.val_123;
4278    p_val_tab(124) := p_rslt_rec.val_124;
4279    p_val_tab(125) := p_rslt_rec.val_125;
4280 
4281    p_val_tab(126) := p_rslt_rec.val_126;
4282    p_val_tab(127) := p_rslt_rec.val_127;
4283    p_val_tab(128) := p_rslt_rec.val_128;
4284    p_val_tab(129) := p_rslt_rec.val_129;
4285    p_val_tab(130) := p_rslt_rec.val_130;
4286 
4287    p_val_tab(131) := p_rslt_rec.val_131;
4288    p_val_tab(132) := p_rslt_rec.val_132;
4289    p_val_tab(133) := p_rslt_rec.val_133;
4290    p_val_tab(134) := p_rslt_rec.val_134;
4291    p_val_tab(135) := p_rslt_rec.val_135;
4292 
4293    p_val_tab(136) := p_rslt_rec.val_136;
4294    p_val_tab(137) := p_rslt_rec.val_137;
4295    p_val_tab(138) := p_rslt_rec.val_138;
4296    p_val_tab(139) := p_rslt_rec.val_139;
4297    p_val_tab(140) := p_rslt_rec.val_140;
4298 
4299    p_val_tab(141) := p_rslt_rec.val_141;
4300    p_val_tab(142) := p_rslt_rec.val_142;
4301    p_val_tab(143) := p_rslt_rec.val_143;
4302    p_val_tab(144) := p_rslt_rec.val_144;
4303    p_val_tab(145) := p_rslt_rec.val_145;
4304 
4305    p_val_tab(146) := p_rslt_rec.val_146;
4306    p_val_tab(147) := p_rslt_rec.val_147;
4307    p_val_tab(148) := p_rslt_rec.val_148;
4308    p_val_tab(149) := p_rslt_rec.val_149;
4309    p_val_tab(150) := p_rslt_rec.val_150;
4310 
4311    Hr_Utility.set_location('Leaving: '||l_proc_name, 15);
4312 
4313 end Copy_Rec_Values;
4314 -- =============================================================================
4315 -- Data_Elmt_In_Rcd:
4316 -- =============================================================================
4317 procedure Data_Elmt_In_Rcd
4318           (p_ext_rcd_id            in number
4319           ,p_val_tab               in out NOCOPY ValTabTyp
4320           ,p_exclude_this_rcd_flag out NOCOPY boolean
4321           ,p_raise_warning         out NOCOPY boolean
4322           ,p_rollback_person       out NOCOPY boolean) is
4323   --
4324   cursor c_xer(p_ext_rcd_id in number) is
4325   select xer.seq_num,
4326          xer.sprs_cd,
4327          xer.ext_data_elmt_in_rcd_id,
4328          xdm.name
4329    from  ben_ext_data_elmt_in_rcd xer,
4330          ben_ext_data_elmt        xdm
4331    where ext_rcd_id           = p_ext_rcd_id
4332      and xer.sprs_cd is not null
4333      and xer.ext_data_elmt_id = xdm.ext_data_elmt_id ;
4334   --
4335   cursor c_xwc(p_ext_data_elmt_in_rcd_id in number)  is
4336   select xwc.oper_cd,
4337          xwc.val,
4338          xwc.and_or_cd,
4339          xer.seq_num
4340    from ben_ext_where_clause     xwc,
4341         ben_ext_data_elmt_in_rcd xer
4342   where xwc.ext_data_elmt_in_rcd_id      = p_ext_data_elmt_in_rcd_id
4343     and xwc.cond_ext_data_elmt_in_rcd_id = xer.ext_data_elmt_in_rcd_id
4344     order by xwc.seq_num;
4345   --
4346   l_proc                 varchar2(72) := g_proc_name||'Data_Elmt_In_Rcd';
4347   l_condition            varchar2(1);
4348   l_cnt                  number;
4349   l_value_without_quotes varchar2(500);
4350   l_dynamic_condition    varchar2(9999);
4351   --
4352   l_val_tab_mirror       ValTabTyp;
4353 begin
4354   Hr_Utility.set_location('Entering'||l_proc, 5);
4355   p_exclude_this_rcd_flag := false;
4356   p_raise_warning         := false;
4357   p_rollback_person       := false;
4358   -- Make mirror image of table for evaluation, since values in
4359   -- the real table are changing (being nullified).
4360   l_val_tab_mirror := p_val_tab;
4361   --
4362   for xer in c_xer(p_ext_rcd_id) loop
4363   --
4364   l_cnt := 0;
4365   l_dynamic_condition := 'begin If ';
4366   for xwc in c_xwc(xer.ext_data_elmt_in_rcd_id) loop
4367      l_cnt := l_cnt +1;
4368       -- strip all quotes out of any values.
4369       l_value_without_quotes := REPLACE(l_val_tab_mirror(xwc.seq_num),'''');
4370       l_dynamic_condition := l_dynamic_condition    || '''' ||
4371                              l_value_without_quotes || '''' ||   ' ' ||
4372                              xwc.oper_cd || ' ' ||
4373                              xwc.val || ' ' ||
4374                              xwc.and_or_cd || ' ';
4375   end loop;-- FOR xwc IN c_xwc
4376 
4377   -- If there is no data for advanced conditions, bypass rest of this program.
4378   if l_cnt > 0 then
4379        l_dynamic_condition := l_dynamic_condition ||
4380          ' then :l_condition := ''T''; else :l_condition := ''F''; end if; end;';
4381     begin
4382         execute immediate l_dynamic_condition Using out l_condition;
4383     exception
4384     when Others then
4385       -- this needs replaced with a message for translation.
4386       Fnd_File.put_line(Fnd_File.Log,
4387         'Error in Advanced Conditions while processing this dynamic sql statement: ');
4388       Fnd_File.put_line(Fnd_File.Log, l_dynamic_condition);
4389       raise;  -- such that the error processing in ben_ext_thread occurs.
4390     end;
4391     --
4392     if l_condition = 'T' then
4393        if xer.sprs_cd = 'A' then
4394        -- Rollback Record
4395           p_exclude_this_rcd_flag := true;
4396           exit;
4397        elsif xer.sprs_cd = 'B' then
4398        -- Rollback Person
4399           p_exclude_this_rcd_flag := true;
4400           p_rollback_person       := true;
4401        elsif xer.sprs_cd = 'C' then
4402           -- Rollback person and error
4403           p_exclude_this_rcd_flag := true;
4404           p_rollback_person       := true;
4405        elsif xer.sprs_cd = 'G' then
4406           -- Nullify Data Element
4407           p_val_tab(xer.seq_num) := null;
4408        elsif xer.sprs_cd = 'H' then
4409           -- Signal Warning
4410           p_raise_warning         := false;
4411           Write_Warning ('BEN_92313_EXT_USER_DEFINED_WRN'
4412                          ,92313
4413                          ,xer.name);
4414        elsif xer.sprs_cd = 'I' then
4415           -- Nullify Data Element and Signal Warning
4416           p_val_tab(xer.seq_num) := null;
4417           p_raise_warning        := false;
4418           Write_Warning ('BEN_92313_EXT_USER_DEFINED_WRN'
4419                         ,92313
4420                         ,xer.name);
4421        end if; --IF xer.sprs_cd = 'A'
4422 
4423    else -- l_condition = 'F'
4424        if xer.sprs_cd = 'D' then
4425           -- Rollback record
4426           p_exclude_this_rcd_flag := true;
4427           exit;
4428        elsif xer.sprs_cd = 'E' then
4429           -- Rollback person
4430           p_exclude_this_rcd_flag := true;
4431           p_rollback_person       := true;
4432        elsif xer.sprs_cd = 'F' then
4433           -- Rollback person and error
4434           p_exclude_this_rcd_flag := true;
4435           p_rollback_person       := true;
4436        elsif xer.sprs_cd = 'J' then
4437           -- Nullify data element
4438           p_val_tab(xer.seq_num) := null;
4439        elsif xer.sprs_cd = 'K' then
4440           -- Signal warning
4441           p_raise_warning := false;
4442           Write_Warning ('BEN_92313_EXT_USER_DEFINED_WRN'
4443                          ,92313
4444                          ,xer.name);
4445        elsif xer.sprs_cd = 'L' then
4446           -- Nullify data element and signal warning
4447           p_val_tab(xer.seq_num) := null;
4448           p_raise_warning        := false;
4449           Write_Warning ('BEN_92313_EXT_USER_DEFINED_WRN'
4450                          ,92313
4451                          ,xer.name);
4452        end if; --IF xer.sprs_cd = 'D'
4453     --
4454     end if; -- IF l_condition = 'T'
4455   --
4456   end if;-- IF l_cnt > 0 THEN
4457   --
4458  end loop; -- FOR xer IN c_xer
4459 --
4460 Hr_Utility.set_location('Exiting'||l_proc, 15);
4461 --
4462 end Data_Elmt_In_Rcd;
4463 
4464 -- =============================================================================
4465 -- Rcd_In_File:
4466 -- =============================================================================
4467 procedure Rcd_In_File
4468           (p_ext_rcd_in_file_id    in number
4469           ,p_sprs_cd               in varchar2
4470           ,p_val_tab               in out NOCOPY ValTabTyp
4471           ,p_exclude_this_rcd_flag out NOCOPY boolean
4472           ,p_raise_warning         out NOCOPY boolean
4473           ,p_rollback_person       out NOCOPY boolean) is
4474 
4475   cursor c_xwc(p_ext_rcd_in_file_id in number)  is
4476   select xwc.oper_cd,
4477          xwc.val,
4478          xwc.and_or_cd,
4479          xer.seq_num,
4480          xrc.name,
4481          Substr(xel.frmt_mask_cd,1,1) xel_frmt_mask_cd,
4482          xel.data_elmt_typ_cd,
4483          xel.data_elmt_rl,
4484          xel.ext_fld_id,
4485          fld.frmt_mask_typ_cd
4486     from ben_ext_where_clause     xwc,
4487          ben_ext_data_elmt_in_rcd xer,
4488          ben_ext_rcd              xrc,
4489          ben_ext_data_elmt        xel,
4490          ben_ext_fld              fld
4491    where xwc.ext_rcd_in_file_id           = p_ext_rcd_in_file_id
4492      and xwc.cond_ext_data_elmt_in_rcd_id = xer.ext_data_elmt_in_rcd_id
4493      and xer.ext_rcd_id                   = xrc.ext_rcd_id
4494      and xel.ext_data_elmt_id             = xer.ext_data_elmt_id
4495      and xel.ext_fld_id                   = fld.ext_fld_id(+)
4496      order by xwc.seq_num;
4497    --
4498    l_proc                 varchar2(72) := g_proc_name||'Rcd_In_File';
4499    l_condition            varchar2(1);
4500    l_cnt                  number;
4501    l_value_without_quotes varchar2(500);
4502    l_dynamic_condition    varchar2(9999);
4503    l_rcd_name             ben_ext_rcd.name%type ;
4504    --
4505     --
4506 begin
4507   --
4508   Hr_Utility.set_location('Entering'||l_proc, 5);
4509   --
4510   p_exclude_this_rcd_flag := false;
4511   p_raise_warning         := false;
4512   p_rollback_person       := false;
4513   if p_sprs_cd = null then
4514      return;
4515   end if;
4516   --
4517   l_cnt := 0;
4518   l_dynamic_condition := 'begin If ';
4519   for xwc in c_xwc(p_ext_rcd_in_file_id) loop
4520     l_cnt := l_cnt +1;
4521     -- Strip all quotes out of any values.
4522     l_value_without_quotes := REPLACE(p_val_tab(xwc.seq_num),'''');
4523     --
4524     if (xwc.frmt_mask_typ_cd = 'N' or
4525         xwc.xel_frmt_mask_cd = 'N' or
4526         xwc.data_elmt_typ_cd = 'R')
4527        and
4528        l_value_without_quotes is not null
4529     then
4530        begin
4531           --  Test for numeric value
4532           if xwc.oper_cd = 'IN' then
4533              l_dynamic_condition := l_dynamic_condition ||''''||
4534                                   l_value_without_quotes||'''';
4535           else
4536              l_dynamic_condition := l_dynamic_condition ||
4537                            To_Number(l_value_without_quotes);
4538           end if;
4539 
4540        exception when Others then
4541           -- Quotes needed, not numeric value
4542          l_dynamic_condition := l_dynamic_condition || '''' ||
4543                        l_value_without_quotes|| '''';
4544        end;
4545     else
4546       -- Quotes needed, not Numeric value
4547       l_dynamic_condition := l_dynamic_condition || '''' ||
4548                            l_value_without_quotes|| '''';
4549     end if;
4550 
4551     l_dynamic_condition := l_dynamic_condition || ' ' || xwc.oper_cd   ||
4552                                                   ' ' || xwc.val       ||
4553                                                   ' ' || xwc.and_or_cd ||
4554                                                   ' ';
4555 
4556     l_rcd_name := xwc.name ;
4557   end loop;
4558   -- if there is no data for advanced conditions, exit this program.
4559   if l_cnt = 0 then
4560     return;
4561   end if;
4562   l_dynamic_condition := l_dynamic_condition ||
4563          ' then :l_condition := ''T''; else :l_condition := ''F''; end if; end;';
4564   begin
4565     execute immediate l_dynamic_condition Using out l_condition;
4566     exception
4567     when Others then
4568       Fnd_File.put_line(Fnd_File.Log,
4569         'Error in Advanced Conditions while processing this dynamic sql statement: ');
4570       Fnd_File.put_line(Fnd_File.Log, l_dynamic_condition);
4571       raise;  -- such that the error processing in ben_ext_thread occurs.
4572   end;
4573   --
4574   if l_condition = 'T' then
4575     if p_sprs_cd = 'A' then
4576       -- Rollback Record
4577       p_exclude_this_rcd_flag := true;
4578     elsif p_sprs_cd = 'B' then
4579       -- Rollback Person
4580       p_exclude_this_rcd_flag := true;
4581       p_rollback_person       := true;
4582     elsif p_sprs_cd = 'C' then
4583       -- Rollback Person and Error
4584       p_exclude_this_rcd_flag := true;
4585       p_rollback_person       := true;
4586 
4587       Write_Error
4588       (p_err_name  => 'BEN_92679_EXT_USER_DEFINED_ERR'
4589       ,p_err_no    => 92679
4590       ,p_element   => l_rcd_name);
4591 
4592     elsif p_sprs_cd = 'H' then
4593       -- Signal Warning
4594       p_raise_warning := true;
4595 
4596       Write_Warning ('BEN_92678_EXT_USER_DEFINED_WRN'
4597               ,92678
4598        ,l_rcd_name);
4599 
4600     elsif p_sprs_cd = 'M' then
4601       -- Rollback Record and Signal Warning
4602       p_raise_warning := true;
4603 
4604       Write_Warning ('BEN_92678_EXT_USER_DEFINED_WRN'
4605                      ,92678
4606                      ,l_rcd_name);
4607 
4608       p_exclude_this_rcd_flag := true;
4609     end if; -- IF p_sprs_cd = 'A'
4610 
4611   else -- l_condition = 'F'
4612 
4613     if p_sprs_cd = 'D' then
4614       -- Rollback Record
4615       p_exclude_this_rcd_flag := true;
4616     elsif p_sprs_cd = 'E' then
4617       -- Rollback Person
4618       p_exclude_this_rcd_flag := true;
4619       p_rollback_person       := true;
4620     elsif p_sprs_cd = 'F' then
4621       -- Rollback Person and Error
4622       p_exclude_this_rcd_flag := true;
4623       p_rollback_person       := true;
4624 
4625       Write_Error
4626       (p_err_name  => 'BEN_92679_EXT_USER_DEFINED_ERR'
4627       ,p_err_no    => 92679
4628       ,p_element   => l_rcd_name);
4629 
4630     elsif p_sprs_cd = 'K' then
4631       -- Signal Warning
4632       p_raise_warning := true;
4633       Write_Warning ('BEN_92678_EXT_USER_DEFINED_WRN'
4634               ,92678
4635        ,l_rcd_name);
4636     elsif p_sprs_cd = 'N' then
4637        -- Rollback Record and Signal warning
4638       Write_Warning ('BEN_92678_EXT_USER_DEFINED_WRN'
4639                      ,92678
4640                      ,l_rcd_name);
4641       p_raise_warning         := true;
4642       p_exclude_this_rcd_flag := true;
4643     end if; -- IF p_sprs_cd = 'D'
4644   --
4645   end if; -- IF l_condition = 'T'
4646   --
4647   Hr_Utility.set_location('Exiting'||l_proc, 15);
4648   --
4649 end Rcd_In_File;
4650 -- =============================================================================
4651 -- ~ Ins_Rslt_Dtl : Inserts a record into the results detail record.
4652 -- =============================================================================
4653 procedure Ins_Rslt_Dtl
4654           (p_dtl_rec     in out NOCOPY ben_ext_rslt_dtl%rowtype
4655           ,p_val_tab     in ValTabTyp
4656           ,p_rslt_dtl_id out NOCOPY number
4657           ) is
4658 
4659   l_proc_name   varchar2(150) := g_proc_name||'Ins_Rslt_Dtl';
4660   l_dtl_rec_nc  ben_ext_rslt_dtl%rowtype;
4661 
4662 begin -- ins_rslt_dtl
4663   Hr_Utility.set_location('Entering :'||l_proc_name, 5);
4664   -- nocopy changes
4665   l_dtl_rec_nc := p_dtl_rec;
4666   -- Get the next sequence NUMBER to insert a record into the table
4667   select ben_ext_rslt_dtl_s.nextval into p_dtl_rec.ext_rslt_dtl_id from dual;
4668   insert into ben_ext_rslt_dtl
4669   (ext_rslt_dtl_id
4670   ,ext_rslt_id
4671   ,business_group_id
4672   ,ext_rcd_id
4673   ,person_id
4674   ,val_01
4675   ,val_02
4676   ,val_03
4677   ,val_04
4678   ,val_05
4679   ,val_06
4680   ,val_07
4681   ,val_08
4682   ,val_09
4683   ,val_10
4684   ,val_11
4685   ,val_12
4686   ,val_13
4687   ,val_14
4688   ,val_15
4689   ,val_16
4690   ,val_17
4691   ,val_19
4692   ,val_18
4693   ,val_20
4694   ,val_21
4695   ,val_22
4696   ,val_23
4697   ,val_24
4698   ,val_25
4699   ,val_26
4700   ,val_27
4701   ,val_28
4702   ,val_29
4703   ,val_30
4704   ,val_31
4705   ,val_32
4706   ,val_33
4707   ,val_34
4708   ,val_35
4709   ,val_36
4710   ,val_37
4711   ,val_38
4712   ,val_39
4713   ,val_40
4714   ,val_41
4715   ,val_42
4716   ,val_43
4717   ,val_44
4718   ,val_45
4719   ,val_46
4720   ,val_47
4721   ,val_48
4722   ,val_49
4723   ,val_50
4724   ,val_51
4725   ,val_52
4726   ,val_53
4727   ,val_54
4728   ,val_55
4729   ,val_56
4730   ,val_57
4731   ,val_58
4732   ,val_59
4733   ,val_60
4734   ,val_61
4735   ,val_62
4736   ,val_63
4737   ,val_64
4738   ,val_65
4739   ,val_66
4740   ,val_67
4741   ,val_68
4742   ,val_69
4743   ,val_70
4744   ,val_71
4745   ,val_72
4746   ,val_73
4747   ,val_74
4748   ,val_75
4749   ,val_76
4750   ,val_77
4751   ,val_78
4752   ,val_79
4753   ,val_80
4754   ,val_81
4755   ,val_82
4756   ,val_83
4757   ,val_84
4758   ,val_85
4759   ,val_86
4760   ,val_87
4761   ,val_88
4762   ,val_89
4763   ,val_90
4764   ,val_91
4765   ,val_92
4766   ,val_93
4767   ,val_94
4768   ,val_95
4769   ,val_96
4770   ,val_97
4771   ,val_98
4772   ,val_99
4773   ,val_100
4774   ,val_101
4775   ,val_102
4776   ,val_103
4777   ,val_104
4778   ,val_105
4779   ,val_106
4780   ,val_107
4781   ,val_108
4782   ,val_109
4783   ,val_110
4784   ,val_111
4785   ,val_112
4786   ,val_113
4787   ,val_114
4788   ,val_115
4789   ,val_116
4790   ,val_117
4791   ,val_118
4792   ,val_119
4793   ,val_120
4794   ,val_121
4795   ,val_122
4796   ,val_123
4797   ,val_124
4798   ,val_125
4799   ,val_126
4800   ,val_127
4801   ,val_128
4802   ,val_129
4803   ,val_130
4804   ,val_131
4805   ,val_132
4806   ,val_133
4807   ,val_134
4808   ,val_135
4809   ,val_136
4810   ,val_137
4811   ,val_138
4812   ,val_139
4813   ,val_140
4814   ,val_141
4815   ,val_142
4816   ,val_143
4817   ,val_144
4818   ,val_145
4819   ,val_146
4820   ,val_147
4821   ,val_148
4822   ,val_149
4823   ,val_150
4824   ,created_by
4825   ,creation_date
4826   ,last_update_date
4827   ,last_updated_by
4828   ,last_update_login
4829   ,program_application_id
4830   ,program_id
4831   ,program_update_date
4832   ,request_id
4833   ,object_version_number
4834   ,prmy_sort_val
4835   ,scnd_sort_val
4836   ,thrd_sort_val
4837   ,trans_seq_num
4838   ,rcrd_seq_num
4839   )
4840   values
4841   (p_dtl_rec.ext_rslt_dtl_id
4842   ,p_dtl_rec.ext_rslt_id
4843   ,p_dtl_rec.business_group_id
4844   ,p_dtl_rec.ext_rcd_id
4845   ,p_dtl_rec.person_id
4846   ,p_val_tab(1)
4847   ,p_val_tab(2)
4848   ,p_val_tab(3)
4849   ,p_val_tab(4)
4850   ,p_val_tab(5)
4851   ,p_val_tab(6)
4852   ,p_val_tab(7)
4853   ,p_val_tab(8)
4854   ,p_val_tab(9)
4855   ,p_val_tab(10)
4856   ,p_val_tab(11)
4857   ,p_val_tab(12)
4858   ,p_val_tab(13)
4859   ,p_val_tab(14)
4860   ,p_val_tab(15)
4861   ,p_val_tab(16)
4862   ,p_val_tab(17)
4863   ,p_val_tab(19)
4864   ,p_val_tab(18)
4865   ,p_val_tab(20)
4866   ,p_val_tab(21)
4867   ,p_val_tab(22)
4868   ,p_val_tab(23)
4869   ,p_val_tab(24)
4870   ,p_val_tab(25)
4871   ,p_val_tab(26)
4872   ,p_val_tab(27)
4873   ,p_val_tab(28)
4874   ,p_val_tab(29)
4875   ,p_val_tab(30)
4876   ,p_val_tab(31)
4877   ,p_val_tab(32)
4878   ,p_val_tab(33)
4879   ,p_val_tab(34)
4880   ,p_val_tab(35)
4881   ,p_val_tab(36)
4882   ,p_val_tab(37)
4883   ,p_val_tab(38)
4884   ,p_val_tab(39)
4885   ,p_val_tab(40)
4886   ,p_val_tab(41)
4887   ,p_val_tab(42)
4888   ,p_val_tab(43)
4889   ,p_val_tab(44)
4890   ,p_val_tab(45)
4891   ,p_val_tab(46)
4892   ,p_val_tab(47)
4893   ,p_val_tab(48)
4894   ,p_val_tab(49)
4895   ,p_val_tab(50)
4896   ,p_val_tab(51)
4897   ,p_val_tab(52)
4898   ,p_val_tab(53)
4899   ,p_val_tab(54)
4900   ,p_val_tab(55)
4901   ,p_val_tab(56)
4902   ,p_val_tab(57)
4903   ,p_val_tab(58)
4904   ,p_val_tab(59)
4905   ,p_val_tab(60)
4906   ,p_val_tab(61)
4907   ,p_val_tab(62)
4908   ,p_val_tab(63)
4909   ,p_val_tab(64)
4910   ,p_val_tab(65)
4911   ,p_val_tab(66)
4912   ,p_val_tab(67)
4913   ,p_val_tab(68)
4914   ,p_val_tab(69)
4915   ,p_val_tab(70)
4916   ,p_val_tab(71)
4917   ,p_val_tab(72)
4918   ,p_val_tab(73)
4919   ,p_val_tab(74)
4920   ,p_val_tab(75)
4921   ,p_val_tab(76)
4922   ,p_val_tab(77)
4923   ,p_val_tab(78)
4924   ,p_val_tab(79)
4925   ,p_val_tab(80)
4926   ,p_val_tab(81)
4927   ,p_val_tab(82)
4928   ,p_val_tab(83)
4929   ,p_val_tab(84)
4930   ,p_val_tab(85)
4931   ,p_val_tab(86)
4932   ,p_val_tab(87)
4933   ,p_val_tab(88)
4934   ,p_val_tab(89)
4935   ,p_val_tab(90)
4936   ,p_val_tab(91)
4937   ,p_val_tab(92)
4938   ,p_val_tab(93)
4939   ,p_val_tab(94)
4940   ,p_val_tab(95)
4941   ,p_val_tab(96)
4942   ,p_val_tab(97)
4943   ,p_val_tab(98)
4944   ,p_val_tab(99)
4945   ,p_val_tab(100)
4946   ,p_val_tab(101)
4947   ,p_val_tab(102)
4948   ,p_val_tab(103)
4949   ,p_val_tab(104)
4950   ,p_val_tab(105)
4951   ,p_val_tab(106)
4952   ,p_val_tab(107)
4953   ,p_val_tab(108)
4954   ,p_val_tab(109)
4955   ,p_val_tab(110)
4956   ,p_val_tab(111)
4957   ,p_val_tab(112)
4958   ,p_val_tab(113)
4959   ,p_val_tab(114)
4960   ,p_val_tab(115)
4961   ,p_val_tab(116)
4962   ,p_val_tab(117)
4963   ,p_val_tab(118)
4964   ,p_val_tab(119)
4965   ,p_val_tab(120)
4966   ,p_val_tab(121)
4967   ,p_val_tab(122)
4968   ,p_val_tab(123)
4969   ,p_val_tab(124)
4970   ,p_val_tab(125)
4971   ,p_val_tab(126)
4972   ,p_val_tab(127)
4973   ,p_val_tab(128)
4974   ,p_val_tab(129)
4975   ,p_val_tab(130)
4976   ,p_val_tab(131)
4977   ,p_val_tab(132)
4978   ,p_val_tab(133)
4979   ,p_val_tab(134)
4980   ,p_val_tab(135)
4981   ,p_val_tab(136)
4982   ,p_val_tab(137)
4983   ,p_val_tab(138)
4984   ,p_val_tab(139)
4985   ,p_val_tab(140)
4986   ,p_val_tab(141)
4987   ,p_val_tab(142)
4988   ,p_val_tab(143)
4989   ,p_val_tab(144)
4990   ,p_val_tab(145)
4991   ,p_val_tab(146)
4992   ,p_val_tab(147)
4993   ,p_val_tab(148)
4994   ,p_val_tab(149)
4995   ,p_val_tab(150)
4996   ,p_dtl_rec.created_by
4997   ,p_dtl_rec.creation_date
4998   ,p_dtl_rec.last_update_date
4999   ,p_dtl_rec.last_updated_by
5000   ,p_dtl_rec.last_update_login
5001   ,p_dtl_rec.program_application_id
5002   ,p_dtl_rec.program_id
5003   ,p_dtl_rec.program_update_date
5004   ,p_dtl_rec.request_id
5005   ,p_dtl_rec.object_version_number
5006   ,p_dtl_rec.prmy_sort_val
5007   ,p_dtl_rec.scnd_sort_val
5008   ,p_dtl_rec.thrd_sort_val
5009   ,p_dtl_rec.trans_seq_num
5010   ,p_dtl_rec.rcrd_seq_num
5011   );
5012   Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
5013   return;
5014 
5015 exception
5016   when Others then
5017     Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
5018     p_dtl_rec := l_dtl_rec_nc;
5019     raise;
5020 end Ins_Rslt_Dtl;
5021 -- =============================================================================
5022 -- ~Upd_Rslt_Dtl : Updates the primary assignment record in results detail table
5023 -- =============================================================================
5024 procedure Upd_Rslt_Dtl
5025            (p_dtl_rec     in ben_ext_rslt_dtl%rowtype
5026            ,p_val_tab     in ValTabTyp ) is
5027 
5028   l_proc_name varchar2(150):= g_proc_name||'upd_rslt_dtl';
5029 
5030 begin -- Upd_Rslt_Dtl
5031   update ben_ext_rslt_dtl
5032   set val_01                 = p_val_tab(1)
5033      ,val_02                 = p_val_tab(2)
5034      ,val_03                 = p_val_tab(3)
5035      ,val_04                 = p_val_tab(4)
5036      ,val_05                 = p_val_tab(5)
5037      ,val_06                 = p_val_tab(6)
5038      ,val_07                 = p_val_tab(7)
5039      ,val_08                 = p_val_tab(8)
5040      ,val_09                 = p_val_tab(9)
5041      ,val_10                 = p_val_tab(10)
5042      ,val_11                 = p_val_tab(11)
5043      ,val_12                 = p_val_tab(12)
5044      ,val_13                 = p_val_tab(13)
5045      ,val_14                 = p_val_tab(14)
5046      ,val_15                 = p_val_tab(15)
5047      ,val_16                 = p_val_tab(16)
5048      ,val_17                 = p_val_tab(17)
5049      ,val_19                 = p_val_tab(19)
5050      ,val_18                 = p_val_tab(18)
5051      ,val_20                 = p_val_tab(20)
5052      ,val_21                 = p_val_tab(21)
5053      ,val_22                 = p_val_tab(22)
5054      ,val_23                 = p_val_tab(23)
5055      ,val_24                 = p_val_tab(24)
5056      ,val_25                 = p_val_tab(25)
5057      ,val_26                 = p_val_tab(26)
5058      ,val_27                 = p_val_tab(27)
5059      ,val_28                 = p_val_tab(28)
5060      ,val_29                 = p_val_tab(29)
5061      ,val_30                 = p_val_tab(30)
5062      ,val_31                 = p_val_tab(31)
5063      ,val_32                 = p_val_tab(32)
5064      ,val_33                 = p_val_tab(33)
5065      ,val_34                 = p_val_tab(34)
5066      ,val_35                 = p_val_tab(35)
5067      ,val_36                 = p_val_tab(36)
5068      ,val_37                 = p_val_tab(37)
5069      ,val_38                 = p_val_tab(38)
5070      ,val_39                 = p_val_tab(39)
5071      ,val_40                 = p_val_tab(40)
5072      ,val_41                 = p_val_tab(41)
5073      ,val_42                 = p_val_tab(42)
5074      ,val_43                 = p_val_tab(43)
5075      ,val_44                 = p_val_tab(44)
5076      ,val_45                 = p_val_tab(45)
5077      ,val_46                 = p_val_tab(46)
5078      ,val_47                 = p_val_tab(47)
5079      ,val_48                 = p_val_tab(48)
5080      ,val_49                 = p_val_tab(49)
5081      ,val_50                 = p_val_tab(50)
5082      ,val_51                 = p_val_tab(51)
5083      ,val_52                 = p_val_tab(52)
5084      ,val_53                 = p_val_tab(53)
5085      ,val_54                 = p_val_tab(54)
5086      ,val_55                 = p_val_tab(55)
5087      ,val_56                 = p_val_tab(56)
5088      ,val_57                 = p_val_tab(57)
5089      ,val_58                 = p_val_tab(58)
5090      ,val_59                 = p_val_tab(59)
5091      ,val_60                 = p_val_tab(60)
5092      ,val_61                 = p_val_tab(61)
5093      ,val_62                 = p_val_tab(62)
5094      ,val_63                 = p_val_tab(63)
5095      ,val_64                 = p_val_tab(64)
5096      ,val_65                 = p_val_tab(65)
5097      ,val_66                 = p_val_tab(66)
5098      ,val_67                 = p_val_tab(67)
5099      ,val_68                 = p_val_tab(68)
5100      ,val_69                 = p_val_tab(69)
5101      ,val_70                 = p_val_tab(70)
5102      ,val_71                 = p_val_tab(71)
5103      ,val_72                 = p_val_tab(72)
5104      ,val_73                 = p_val_tab(73)
5105      ,val_74                 = p_val_tab(74)
5106      ,val_75                 = p_val_tab(75)
5107      ,val_76                 = p_val_tab(76)
5108      ,val_77                 = p_val_tab(77)
5109      ,val_78                 = p_val_tab(78)
5110      ,val_79                 = p_val_tab(79)
5111      ,val_80                 = p_val_tab(80)
5112      ,val_81                 = p_val_tab(81)
5113      ,val_82                 = p_val_tab(82)
5114      ,val_83                 = p_val_tab(83)
5115      ,val_84                 = p_val_tab(84)
5116      ,val_85                 = p_val_tab(85)
5117      ,val_86                 = p_val_tab(86)
5118      ,val_87                 = p_val_tab(87)
5119      ,val_88                 = p_val_tab(88)
5120      ,val_89                 = p_val_tab(89)
5121      ,val_90                 = p_val_tab(90)
5122      ,val_91                 = p_val_tab(91)
5123      ,val_92                 = p_val_tab(92)
5124      ,val_93                 = p_val_tab(93)
5125      ,val_94                 = p_val_tab(94)
5126      ,val_95                 = p_val_tab(95)
5127      ,val_96                 = p_val_tab(96)
5128      ,val_97                 = p_val_tab(97)
5129      ,val_98                 = p_val_tab(98)
5130      ,val_99                 = p_val_tab(99)
5131      ,val_100                = p_val_tab(100)
5132      ,val_101                = p_val_tab(101)
5133      ,val_102                = p_val_tab(102)
5134      ,val_103                = p_val_tab(103)
5135      ,val_104                = p_val_tab(104)
5136      ,val_105                = p_val_tab(105)
5137      ,val_106                = p_val_tab(106)
5138      ,val_107                = p_val_tab(107)
5139      ,val_108                = p_val_tab(108)
5140      ,val_109                = p_val_tab(109)
5141      ,val_110                = p_val_tab(110)
5142      ,val_111                = p_val_tab(111)
5143      ,val_112                = p_val_tab(112)
5144      ,val_113                = p_val_tab(113)
5145      ,val_114                = p_val_tab(114)
5146      ,val_115                = p_val_tab(115)
5147      ,val_116                = p_val_tab(116)
5148      ,val_117                = p_val_tab(117)
5149      ,val_118                = p_val_tab(118)
5150      ,val_119                = p_val_tab(119)
5151      ,val_120                = p_val_tab(120)
5152      ,val_121                = p_val_tab(121)
5153      ,val_122                = p_val_tab(122)
5154      ,val_123                = p_val_tab(123)
5155      ,val_124                = p_val_tab(124)
5156      ,val_125                = p_val_tab(125)
5157      ,val_126                = p_val_tab(126)
5158      ,val_127                = p_val_tab(127)
5159      ,val_128                = p_val_tab(128)
5160      ,val_129                = p_val_tab(129)
5161      ,val_130                = p_val_tab(130)
5162      ,val_131                = p_val_tab(131)
5163      ,val_132                = p_val_tab(132)
5164      ,val_133                = p_val_tab(133)
5165      ,val_134                = p_val_tab(134)
5166      ,val_135                = p_val_tab(135)
5167      ,val_136                = p_val_tab(136)
5168      ,val_137                = p_val_tab(137)
5169      ,val_138                = p_val_tab(138)
5170      ,val_139                = p_val_tab(139)
5171      ,val_140                = p_val_tab(140)
5172      ,val_141                = p_val_tab(141)
5173      ,val_142                = p_val_tab(142)
5174      ,val_143                = p_val_tab(143)
5175      ,val_144                = p_val_tab(144)
5176      ,val_145                = p_val_tab(145)
5177      ,val_146                = p_val_tab(146)
5178      ,val_147                = p_val_tab(147)
5179      ,val_148                = p_val_tab(148)
5180      ,val_149                = p_val_tab(149)
5181      ,val_150                = p_val_tab(150)
5182      ,object_version_number  = p_dtl_rec.object_version_number
5183      ,thrd_sort_val          = p_dtl_rec.thrd_sort_val
5184   where ext_rslt_dtl_id = p_dtl_rec.ext_rslt_dtl_id;
5185 
5186   return;
5187 
5188 exception
5189   when Others then
5190   raise;
5191 end Upd_Rslt_Dtl;
5192 -- =============================================================================
5193 -- Process_Ext_Rslt_Dtl_Rec:
5194 -- =============================================================================
5195 procedure  Process_Ext_Rslt_Dtl_Rec
5196           (p_assignment_id    in number
5197           ,p_organization_id  in number
5198           ,p_effective_date   in date
5199           ,p_ext_rcd_id       in number
5200           ,p_rslt_rec         in out nocopy ben_ext_rslt_dtl%rowtype
5201           ,p_total_lines      in out nocopy number
5202           ,p_error_code       out nocopy varchar2
5203           ,p_error_message    out nocopy varchar2) is
5204 
5205    cursor csr_rule_ele(c_ext_rcd_id  in number) is
5206    select  a.ext_data_elmt_in_rcd_id
5207           ,a.seq_num
5208           ,a.sprs_cd
5209           ,a.strt_pos
5210           ,a.dlmtr_val
5211           ,a.rqd_flag
5212           ,b.ext_data_elmt_id
5213           ,b.data_elmt_typ_cd
5214           ,b.data_elmt_rl
5215           ,b.name
5216           ,Hr_General.decode_lookup('BEN_EXT_FRMT_MASK',
5217                                      b.frmt_mask_cd) frmt_mask_cd
5218           ,b.frmt_mask_cd frmt_mask_lookup_cd
5219           ,b.string_val
5220           ,b.dflt_val
5221           ,b.max_length_num
5222           ,b.just_cd
5223      from  ben_ext_data_elmt           b,
5224            ben_ext_data_elmt_in_rcd    a
5225      where a.ext_data_elmt_id = b.ext_data_elmt_id
5226        and b.data_elmt_typ_cd = 'R'
5227        and a.ext_rcd_id       = c_ext_rcd_id
5228      order by a.seq_num;
5229 
5230    cursor csr_ff_type ( c_formula_type_id in ff_formulas_f.formula_id%type
5231                        ,c_effective_date     in date) is
5232     select formula_type_id
5233       from ff_formulas_f
5234      where formula_id = c_formula_type_id
5235        and c_effective_date between effective_start_date
5236                                 and effective_end_date;
5237     --
5238     cursor csr_xrif (c_rcd_id    in number
5239                    ,c_ext_dfn_id in number ) is
5240    select rif.ext_rcd_in_file_id
5241          ,rif.any_or_all_cd
5242          ,rif.seq_num
5243                 ,rif.sprs_cd
5244          ,rif.rqd_flag
5245      from ben_ext_rcd_in_file    rif
5246          ,ben_ext_dfn            dfn
5247     where rif.ext_file_id       = dfn.ext_file_id
5248       and rif.ext_rcd_id        = c_rcd_id
5249       and dfn.ext_dfn_id        = c_ext_dfn_id;
5250   --
5251   l_ben_params             csr_ben%rowtype;
5252   l_proc_name              varchar2(150) := g_proc_name ||'Process_Ext_Rslt_Dtl_Rec';
5253   l_foumula_type_id        ff_formulas_f.formula_id%type;
5254   l_outputs                ff_exec.outputs_t;
5255   l_ff_value               ben_ext_rslt_dtl.val_01%type;
5256   l_ff_value_fmt           ben_ext_rslt_dtl.val_01%type;
5257   l_max_len                number;
5258   l_rqd_elmt_is_present    varchar2(2) := 'Y';
5259   l_person_id              per_all_people_f.person_id%type;
5260   --
5261   l_val_tab                ValTabTyp;
5262   l_exclude_this_rcd_flag  boolean;
5263   l_raise_warning          boolean;
5264   l_rollback_person        boolean;
5265   l_rslt_dtl_id            number;
5266   --
5267 begin
5268    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5269    for i in 1..75
5270    loop
5271      l_val_tab(i) := null;
5272    end loop;
5273 
5274    for i in  csr_rule_ele( c_ext_rcd_id => p_ext_rcd_id)
5275    loop
5276     open  csr_ff_type(c_formula_type_id => i.data_elmt_rl
5277                      ,c_effective_date  => p_effective_date);
5278     fetch csr_ff_type  into l_foumula_type_id;
5279     close csr_ff_type;
5280     if l_foumula_type_id = -413 then -- person level rule
5281        l_outputs := Benutils.formula
5282                    (p_formula_id         => i.data_elmt_rl
5283                    ,p_effective_date     => p_effective_date
5284                    ,p_assignment_id      => p_assignment_id
5285                    ,p_organization_id    => p_organization_id
5286                    ,p_business_group_id  => g_business_group_id
5287                    ,p_jurisdiction_code  => null
5288                    ,p_param1             => 'EXT_DFN_ID'
5289                    ,p_param1_value       => to_char(nvl(ben_ext_thread.g_ext_dfn_id, -1))
5290                    ,p_param2             => 'EXT_RSLT_ID'
5291                    ,p_param2_value       => to_char(nvl(ben_ext_thread.g_ext_rslt_id, -1))
5292                    ,p_param3             => 'EXT_PERSON_ID'
5293                    ,p_param3_value       => to_char(nvl(ben_ext_person.g_person_id, -1))
5294                    ,p_param4             => 'EXT_PROCESS_BUSINESS_GROUP'
5295                    ,p_param4_value       =>  to_char(g_business_group_id)
5296                    ,p_param5             => 'EXT_USER_VALUE'
5297                    ,p_param5_value       =>  i.String_Val
5298                    );
5299         l_ff_value := l_outputs(l_outputs.first).value;
5300         if l_ff_value is null then
5301            l_ff_value := i.dflt_val;
5302         end if;
5303         begin
5304           if i.frmt_mask_lookup_cd is not null and
5305              l_ff_value is not null then
5306              if Substr(i.frmt_mask_lookup_cd,1,1) = 'N' then
5307                Hr_Utility.set_location('..Applying NUMBER format mask :ben_ext_fmt.apply_format_mask',50);
5308                l_ff_value_fmt := Ben_Ext_Fmt.apply_format_mask(To_Number(l_ff_value), i.frmt_mask_cd);
5309                l_ff_value     := l_ff_value_fmt;
5310             elsif Substr(i.frmt_mask_lookup_cd,1,1) = 'D' then
5311                Hr_Utility.set_location('..Applying Date format mask :ben_ext_fmt.apply_format_mask',55);
5312                l_ff_value_fmt := Ben_Ext_Fmt.apply_format_mask(Fnd_Date.canonical_to_date(l_ff_value),
5313                                                                i.frmt_mask_cd);
5314                l_ff_value     := l_ff_value_fmt;
5315             end if;
5316           end  if;
5317         exception  -- incase l_ff_value is not valid for formatting, just don't format it.
5318             when Others then
5319             p_error_message := SQLERRM;
5320         end;
5321         -- Truncate data element if the max. length is given
5322         if i.max_length_num is not null then
5323             l_max_len := Least (Length(l_ff_value),i.max_length_num) ;
5324             -- numbers should always trunc from the left
5325             if Substr(i.frmt_mask_lookup_cd,1,1) = 'N' then
5326                l_ff_value := Substr(l_ff_value, -l_max_len);
5327             else  -- everything else truncs from the right.
5328                l_ff_value := Substr(l_ff_value, 1, i.max_length_num);
5329             end if;
5330             Hr_Utility.set_location('..After  Max Length : '|| l_ff_value,56 );
5331         end if;
5332         -- If the data element is required, and null then exit
5333         -- no need to re-execute the other data-elements in the record.
5334         if i.rqd_flag = 'Y' and (l_ff_value is null) then
5335            l_rqd_elmt_is_present := 'N' ;
5336            exit ;
5337         end if;
5338         -- Update the data-element value at the right seq. num within the
5339         -- record.
5340         Update_Record_Values
5341         (p_ext_rcd_id            => p_ext_rcd_id
5342         ,p_ext_data_element_name => null
5343         ,p_data_element_value    => l_ff_value
5344         ,p_data_ele_seqnum       => i.seq_num
5345         ,p_ext_dtl_rec           => p_rslt_rec);
5346       end if;
5347    end loop; --For i in  csr_rule_ele
5348   -- Copy the data-element values into a PL/SQL table
5349    Copy_Rec_Values
5350   (p_rslt_rec   => p_rslt_rec
5351   ,p_val_tab    => l_val_tab);
5352   -- Check the Adv. Conditions for data elements in record
5353    Data_Elmt_In_Rcd
5354   (p_ext_rcd_id            => p_rslt_rec.ext_rcd_id
5355   ,p_val_tab               => l_val_tab
5356   ,p_exclude_this_rcd_flag => l_exclude_this_rcd_flag
5357   ,p_raise_warning         => l_raise_warning
5358   ,p_rollback_person       => l_rollback_person);
5359    -- Need to remove all the detail records for the person
5360    if l_rollback_person then
5361       p_total_lines := 0;
5362    end if;
5363    -- Check the Adv. Conditions for records in file
5364    for rif in csr_xrif
5365               (c_rcd_id     => p_rslt_rec.ext_rcd_id
5366               ,c_ext_dfn_id => Ben_Ext_Thread.g_ext_dfn_id )
5367    loop
5368        Rcd_In_File
5369       (p_ext_rcd_in_file_id    => rif.ext_rcd_in_file_id
5370       ,p_sprs_cd               => rif.sprs_cd
5371       ,p_val_tab               => l_val_tab
5372       ,p_exclude_this_rcd_flag => l_exclude_this_rcd_flag
5373       ,p_raise_warning         => l_raise_warning
5374       ,p_rollback_person       => l_rollback_person);
5375    end loop;
5376 
5377    -- Need to remove all the detail records for the person
5378    if l_rollback_person then
5379       p_total_lines := 0;
5380    end if;
5381 
5382    -- If exclude record is not true, then insert or update record
5383    if not l_exclude_this_rcd_flag     and
5384           l_rqd_elmt_is_present <> 'N' then
5385      p_total_lines := p_total_lines + 1;
5386      if p_total_lines > 1 then
5387      Ins_Rslt_Dtl(p_dtl_rec      => p_rslt_rec
5388                  ,p_val_tab      => l_val_tab
5389                  ,p_rslt_dtl_id  => l_rslt_dtl_id);
5390      else
5391      Upd_Rslt_Dtl(p_dtl_rec => p_rslt_rec
5392                  ,p_val_tab => l_val_tab);
5393      end if; --IF g_total_dtl_lines
5394    elsif l_exclude_this_rcd_flag then
5395 
5396       open csr_ben (c_ext_dfn_id        => Ben_Ext_Thread.g_ext_dfn_id
5397                    ,c_ext_rslt_id       => Ben_Ext_Thread.g_ext_rslt_id
5398                    ,c_business_group_id => g_business_group_id);
5399       fetch csr_ben into l_ben_params;
5400       close csr_ben;
5401 
5402       Exclude_Person
5403       (p_person_id         => g_person_id
5404       ,p_business_group_id => g_business_group_id
5405       ,p_benefit_action_id => l_ben_params.benefit_action_id
5406       ,p_flag_thread       => 'N');
5407 
5408    end if;
5409    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5410 
5411 exception
5412    when Others then
5413     p_error_message :='SQL-ERRM :'||SQLERRM;
5414     Hr_Utility.set_location('..'||p_error_message,85);
5415     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5416 
5417 end Process_Ext_Rslt_Dtl_Rec;
5418 -- =============================================================================
5419 -- ~ Process_Person_RPAs:
5420 -- =============================================================================
5421 procedure Process_Person_RPAs
5422          (p_ext_rcd_id     in number
5423          ,p_assignment_id  in number
5424          ,p_person_id      in number
5425          ,p_effective_date in date
5426          ,p_error_code     in out nocopy varchar2
5427          ,p_error_message  in out nocopy varchar2
5428          ) as
5429   l_rslt_dtl_rec        csr_rslt_dtl%rowtype;
5430   l_no_per_rpas         number(15);
5431   i                     number(15);
5432   j                     number(15);
5433   l_prv_rpa_id          number(15);
5434   l_proc_name           varchar2(150) := g_proc_name ||'Process_Person_RPAs';
5435   l_total_lines         number(15);
5436   l_processed_rpa_id    number(15);
5437 begin
5438    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5439    open csr_rslt_dtl
5440        (c_person_id      => p_person_id
5441        ,c_ext_rslt_id    => Ben_Ext_Thread.g_ext_rslt_id
5442        ,c_ext_dtl_rcd_id => p_ext_rcd_id);
5443    fetch csr_rslt_dtl into l_rslt_dtl_rec;
5444    close csr_rslt_dtl;
5445    l_no_per_rpas := g_rpa_rec.count;
5446    Hr_Utility.set_location('No Per RPAs: '||l_no_per_rpas, 7);
5447 
5448    if g_pa_req.exists(p_assignment_id) then
5449       l_processed_rpa_id := g_pa_req(p_assignment_id).pa_request_id;
5450    end if;
5451    Hr_Utility.set_location('l_processed_rpa_id : '||l_processed_rpa_id, 9);
5452 
5453    if l_no_per_rpas = 0 then
5454       Hr_Utility.set_location('l_processed_rpa_id : '||l_processed_rpa_id, 9);
5455       delete from ben_ext_rslt_dtl dtl
5456       where dtl.ext_rslt_dtl_id = l_rslt_dtl_rec.ext_rslt_dtl_id;
5457 
5458    elsif l_no_per_rpas > 1 then
5459 
5460         l_total_lines := 1;
5461         i := p_assignment_id;
5462         j := g_rpa_rec.first;
5463         Hr_Utility.set_location('PA Request Id : '||j, 10);
5464         while j is not null
5465         loop
5466           if l_processed_rpa_id <> j then
5467             g_pa_req(i).person_id         := g_rpa_rec(j).person_id;
5468             g_pa_req(i).assignment_id     := g_rpa_rec(j).employee_assignment_id;
5469             g_pa_req(i).effective_date    := g_rpa_rec(j).effective_date;
5470             g_pa_req(i).last_update_date  := g_rpa_rec(j).last_update_date;
5471             g_pa_req(i).pa_request_id     := g_rpa_rec(j).pa_request_id;
5472             g_pa_req(i).pa_notification_id:= g_rpa_rec(j).pa_notification_id;
5473             g_pa_req(i).first_noa_code    := g_rpa_rec(j).first_noa_code;
5474             g_pa_req(i).second_noa_code   := g_rpa_rec(j).second_noa_code;
5475             g_pa_req(i).no_of_rpa         := g_pa_req(i).no_of_rpa + 1;
5476             Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5477            Process_Ext_Rslt_Dtl_Rec
5478            (p_assignment_id    => p_assignment_id
5479            ,p_organization_id  => null
5480            ,p_effective_date   => p_effective_date
5481            ,p_ext_rcd_id       => p_ext_rcd_id
5482            ,p_rslt_rec         => l_rslt_dtl_rec
5483            ,p_total_lines      => l_total_lines
5484            ,p_error_code       => p_error_code
5485            ,p_error_message    => p_error_message);
5486           end if;
5487           l_prv_rpa_id := j;
5488           j     := g_rpa_rec.next(l_prv_rpa_id);
5489           Hr_Utility.set_location('PA Request Id : '||j, 12);
5490         end loop; -- while loop
5491    end if;
5492     Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5493 exception
5494    when others then
5495 
5496     p_error_code := sqlcode;
5497     p_error_message := NULL;
5498     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5499 end Process_Person_RPAs;
5500 -- =============================================================================
5501 -- ~ Process_Address_RPA:
5502 -- =============================================================================
5503 procedure Process_Address_RPA
5504          (p_ext_rcd_id     in number
5505          ,p_assignment_id  in number
5506          ,p_person_id      in number
5507          ,p_effective_date in date
5508          ,p_error_code     in out nocopy varchar2
5509          ,p_error_message  in out nocopy varchar2
5510          ) as
5511   l_rslt_dtl_rec        csr_rslt_dtl%rowtype;
5512   l_no_add_rpas         number(15);
5513   l_proc_name           varchar2(150) := g_proc_name ||'Process_Address_RPA';
5514   l_processed_add_id    number(15);
5515 
5516 begin
5517 
5518    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5519    open csr_rslt_dtl
5520        (c_person_id      => p_person_id
5521        ,c_ext_rslt_id    => Ben_Ext_Thread.g_ext_rslt_id
5522        ,c_ext_dtl_rcd_id => p_ext_rcd_id);
5523    fetch csr_rslt_dtl into l_rslt_dtl_rec;
5524    close csr_rslt_dtl;
5525    l_no_add_rpas := g_address_rec.count;
5526    Hr_Utility.set_location('No Address RPAs: '||l_no_add_rpas, 7);
5527    --
5528    if g_address_rec.exists(p_assignment_id) then
5529       l_processed_add_id := g_address_rec(p_assignment_id).address_id;
5530    end if;
5531    --
5532    if l_no_add_rpas = 0 then
5533 
5534       delete from ben_ext_rslt_dtl dtl
5535       where dtl.ext_rslt_dtl_id = l_rslt_dtl_rec.ext_rslt_dtl_id;
5536 
5537    end if;
5538 
5539    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5540 
5541 exception
5542    when others then
5543     p_error_code := sqlcode;
5544     p_error_message := NULL;
5545     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5546 end Process_Address_RPA;
5547 
5548 -- =============================================================================
5549 -- ~ Process_Award_RPAs:
5550 -- =============================================================================
5551 procedure Process_Award_RPAs
5552          (p_ext_rcd_id     in number
5553          ,p_assignment_id  in number
5554          ,p_person_id      in number
5555          ,p_effective_date in date
5556          ,p_error_code     in out nocopy varchar2
5557          ,p_error_message  in out nocopy varchar2
5558          ) as
5559   l_rslt_dtl_rec        csr_rslt_dtl%rowtype;
5560   l_no_per_awds         number(15);
5561   i                     number(15);
5562   j                     number(15);
5563   l_prv_awd_id          number(15);
5564   l_proc_name           varchar2(150) := g_proc_name ||'Process_Award_RPAs';
5565   l_total_lines         number(15);
5566   l_processed_awd_id    number(15);
5567 begin
5568    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5569    open csr_rslt_dtl
5570        (c_person_id      => p_person_id
5571        ,c_ext_rslt_id    => Ben_Ext_Thread.g_ext_rslt_id
5572        ,c_ext_dtl_rcd_id => p_ext_rcd_id);
5573    fetch csr_rslt_dtl into l_rslt_dtl_rec;
5574    close csr_rslt_dtl;
5575    l_no_per_awds := g_awd_rec.count;
5576    Hr_Utility.set_location(' No Per Awards: '||l_no_per_awds, 7);
5577 
5578    if g_aw_req.exists(p_assignment_id) then
5579       l_processed_awd_id := g_aw_req(p_assignment_id).pa_request_id;
5580    end if;
5581    Hr_Utility.set_location(' l_processed_awd_id : '||l_processed_awd_id, 9);
5582    if l_no_per_awds = 0 then
5583        Hr_Utility.set_location(' l_processed_awd_id : '||l_processed_awd_id, 9);
5584 
5585       delete from ben_ext_rslt_dtl dtl
5586       where dtl.ext_rslt_dtl_id = l_rslt_dtl_rec.ext_rslt_dtl_id;
5587 
5588    elsif l_no_per_awds > 1 then
5589 
5590         l_total_lines := 1;
5591         i := p_assignment_id;
5592         j := g_awd_rec.first;
5593         Hr_Utility.set_location(' Award Request Id : '||j, 10);
5594         while j is not null
5595         loop
5596           if l_processed_awd_id <> j then
5597             g_aw_req(i).person_id         := g_awd_rec(j).person_id;
5598             g_aw_req(i).assignment_id     := g_awd_rec(j).employee_assignment_id;
5599             g_aw_req(i).effective_date    := g_awd_rec(j).effective_date;
5600             g_aw_req(i).last_update_date  := g_awd_rec(j).last_update_date;
5601             g_aw_req(i).pa_request_id     := g_awd_rec(j).pa_request_id;
5602             g_aw_req(i).pa_notification_id:= g_awd_rec(j).pa_notification_id;
5603             g_aw_req(i).first_noa_code    := g_awd_rec(j).first_noa_code;
5604             g_aw_req(i).second_noa_code   := g_awd_rec(j).second_noa_code;
5605             g_aw_req(i).no_of_rpa         := g_aw_req(i).no_of_rpa + 1;
5606             Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5607             Process_Ext_Rslt_Dtl_Rec
5608            (p_assignment_id    => p_assignment_id
5609            ,p_organization_id  => null
5610            ,p_effective_date   => p_effective_date
5611            ,p_ext_rcd_id       => p_ext_rcd_id
5612            ,p_rslt_rec         => l_rslt_dtl_rec
5613            ,p_total_lines      => l_total_lines
5614            ,p_error_code       => p_error_code
5615            ,p_error_message    => p_error_message);
5616           end if;
5617           l_prv_awd_id := j;
5618           j     := g_awd_rec.next(l_prv_awd_id);
5619           Hr_Utility.set_location('PA Request Id : '||j, 12);
5620         end loop; -- while loop
5621    end if;
5622     Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5623 exception
5624    when others then
5625 
5626     p_error_code := sqlcode;
5627     p_error_message := NULL;
5628     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5629 end Process_Award_RPAs;
5630 
5631 -- =============================================================================
5632 -- ~ Process_Remark_RPAs:
5633 -- =============================================================================
5634 procedure Process_Remark_RPAs
5635          (p_ext_rcd_id     in number
5636          ,p_assignment_id  in number
5637          ,p_person_id      in number
5638          ,p_effective_date in date
5639          ,p_error_code     in out nocopy varchar2
5640          ,p_error_message  in out nocopy varchar2
5641          ) as
5642   l_rslt_dtl_rec        csr_rslt_dtl%rowtype;
5643   l_no_per_rpas         NUMBER;
5644   l_no_rpa_rems         NUMBER;
5645   l_no_awd_rpas         NUMBER;
5646   i                     NUMBER;
5647   j                     NUMBER;
5648   l_prv_rpa_id          NUMBER;
5649   l_proc_name           VARCHAR2(150) := g_proc_name ||'Process_Remark_RPAs';
5650   l_total_lines         NUMBER;
5651   l_processed_rpa_id    NUMBER;
5652   l_processed_rmk_id    NUMBER;
5653   l_processed_rmk_cd    NUMBER;
5654   l_processed_awd_id    NUMBER;
5655 begin
5656    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5657    open csr_rslt_dtl
5658        (c_person_id      => p_person_id
5659        ,c_ext_rslt_id    => Ben_Ext_Thread.g_ext_rslt_id
5660        ,c_ext_dtl_rcd_id => p_ext_rcd_id);
5661    fetch csr_rslt_dtl into l_rslt_dtl_rec;
5662    close csr_rslt_dtl;
5663    l_no_per_rpas := g_rpa_rec.COUNT;
5664    l_no_rpa_rems := g_pa_req_remark.COUNT;
5665    l_no_awd_rpas := g_awd_rec.COUNT;
5666 
5667    Hr_Utility.set_location('No Per RPAs: '||l_no_per_rpas, 7);
5668    Hr_Utility.set_location('No RPAs Remarks: '||l_no_rpa_rems, 7);
5669    Hr_Utility.set_location('No Award rpas: '||l_no_awd_rpas, 7);
5670 
5671    if g_pa_req.exists(p_assignment_id) then
5672       l_processed_rpa_id := g_pa_req(p_assignment_id).pa_request_id;
5673    end if;
5674    Hr_Utility.set_location('l_processed_rpa_id : '||l_processed_rpa_id, 9);
5675 
5676    IF g_aw_req.exists(p_assignment_id) THEN
5677 		l_processed_awd_id := g_aw_req(p_assignment_id).pa_request_id;
5678    END IF;
5679 
5680    if (l_no_per_rpas = 0 AND l_no_awd_rpas= 0) or l_no_rpa_rems = 0 then
5681         Hr_Utility.set_location('l_processed_rpa_id : '||l_processed_rpa_id, 9);
5682       delete from ben_ext_rslt_dtl dtl
5683       where dtl.ext_rslt_dtl_id = l_rslt_dtl_rec.ext_rslt_dtl_id;
5684    elsif l_no_per_rpas >= 1 then
5685         l_total_lines := 1;
5686         i := p_assignment_id;
5687 
5688         j := g_rpa_rec.first;
5689         l_processed_rmk_id := g_pa_req(i).pa_remark_id;
5690         l_processed_rmk_cd := g_pa_req(i).remark_code;
5691 
5692         Hr_Utility.set_location('PA Request Id : '||j, 10);
5693         Hr_Utility.set_location('l_processed_rmk_id : '||l_processed_rmk_id, 10);
5694 
5695         while j is not null
5696         loop
5697           if l_processed_rpa_id <> j and
5698              g_pa_req_remark.exists(j) then
5699 
5700             g_pa_req(i).person_id         := g_rpa_rec(j).person_id;
5701             g_pa_req(i).assignment_id     := g_rpa_rec(j).employee_assignment_id;
5702             g_pa_req(i).effective_date    := g_rpa_rec(j).effective_date;
5703             g_pa_req(i).last_update_date  := g_rpa_rec(j).last_update_date;
5704             g_pa_req(i).pa_request_id     := g_rpa_rec(j).pa_request_id;
5705             g_pa_req(i).pa_notification_id:= g_rpa_rec(j).pa_notification_id;
5706             g_pa_req(i).first_noa_code    := g_rpa_rec(j).first_noa_code;
5707             g_pa_req(i).second_noa_code   := g_rpa_rec(j).second_noa_code;
5708             g_pa_req(i).no_of_rpa         := g_pa_req(i).no_of_rpa + 1;
5709             g_pa_req(i).remark_code       := null;
5710             g_pa_req(i).pa_remark_id      := null;
5711 
5712             for rem_rec in csr_rem(j,g_pa_req(i).effective_date)
5713             loop
5714                if ( rem_rec.pa_remark_id <> l_processed_rmk_id) then
5715 
5716                    g_pa_req(i).remark_code  := rem_rec.remark_id;
5717                    g_pa_req(i).pa_remark_id := rem_rec.pa_remark_id;
5718 
5719                    Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5720                    Process_Ext_Rslt_Dtl_Rec
5721                   (p_assignment_id    => p_assignment_id
5722                   ,p_organization_id  => null
5723                   ,p_effective_date   => p_effective_date
5724                   ,p_ext_rcd_id       => p_ext_rcd_id
5725                   ,p_rslt_rec         => l_rslt_dtl_rec
5726                   ,p_total_lines      => l_total_lines
5727                   ,p_error_code       => p_error_code
5728                   ,p_error_message    => p_error_message);
5729                   l_total_lines := l_total_lines + 1;
5730                end if;
5731              end loop;
5732 
5733           elsif  l_processed_rpa_id = j then
5734 
5735             g_pa_req(i).person_id         := g_rpa_rec(j).person_id;
5736             g_pa_req(i).assignment_id     := g_rpa_rec(j).employee_assignment_id;
5737             g_pa_req(i).effective_date    := g_rpa_rec(j).effective_date;
5738             g_pa_req(i).last_update_date  := g_rpa_rec(j).last_update_date;
5739             g_pa_req(i).pa_request_id     := g_rpa_rec(j).pa_request_id;
5740             g_pa_req(i).pa_notification_id:= g_rpa_rec(j).pa_notification_id;
5741             g_pa_req(i).first_noa_code    := g_rpa_rec(j).first_noa_code;
5742             g_pa_req(i).second_noa_code   := g_rpa_rec(j).second_noa_code;
5743             g_pa_req(i).no_of_rpa         := g_pa_req(i).no_of_rpa + 1;
5744             g_pa_req(i).remark_code       := l_processed_rmk_cd;
5745             g_pa_req(i).pa_remark_id      := l_processed_rmk_id;
5746             for rem_rec in csr_rem(j,g_pa_req(i).effective_date)
5747             loop
5748                if (rem_rec.pa_remark_id <> l_processed_rmk_id) then
5749 
5750                    g_pa_req(i).remark_code  := rem_rec.remark_id;
5751                    g_pa_req(i).pa_remark_id := rem_rec.pa_remark_id;
5752 
5753                    Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5754                    Process_Ext_Rslt_Dtl_Rec
5755                   (p_assignment_id    => p_assignment_id
5756                   ,p_organization_id  => null
5757                   ,p_effective_date   => p_effective_date
5758                   ,p_ext_rcd_id       => p_ext_rcd_id
5759                   ,p_rslt_rec         => l_rslt_dtl_rec
5760                   ,p_total_lines      => l_total_lines
5761                   ,p_error_code       => p_error_code
5762                   ,p_error_message    => p_error_message);
5763                   l_total_lines := l_total_lines + 1;
5764 
5765                end if;
5766              end loop;
5767           end if;
5768 
5769           l_prv_rpa_id := j;
5770           j     := g_rpa_rec.next(l_prv_rpa_id);
5771           Hr_Utility.set_location('PA Request Id : '||j, 12);
5772         end loop; -- while loop
5773 	-- Code added for Remarks
5774 	ELSIF l_no_awd_rpas >=1 THEN
5775 		l_total_lines := 1;
5776         i := p_assignment_id;
5777 
5778         j := g_awd_rec.first;
5779         l_processed_rmk_id := g_aw_req(i).pa_remark_id;
5780         l_processed_rmk_cd := g_aw_req(i).remark_code;
5781 
5782         Hr_Utility.set_location('PA Request Id : '||j, 10);
5783         Hr_Utility.set_location('l_processed_rmk_id : '||l_processed_rmk_id, 10);
5784 
5785         while j is not null
5786         loop
5787           if l_processed_awd_id <> j and
5788              g_pa_req_remark.exists(j) then
5789 
5790             g_aw_req(i).person_id         := g_awd_rec(j).person_id;
5791             g_aw_req(i).assignment_id     := g_awd_rec(j).employee_assignment_id;
5792             g_aw_req(i).effective_date    := g_awd_rec(j).effective_date;
5793             g_aw_req(i).last_update_date  := g_awd_rec(j).last_update_date;
5794             g_aw_req(i).pa_request_id     := g_awd_rec(j).pa_request_id;
5795             g_aw_req(i).pa_notification_id:= g_awd_rec(j).pa_notification_id;
5796             g_aw_req(i).first_noa_code    := g_awd_rec(j).first_noa_code;
5797             g_aw_req(i).second_noa_code   := g_awd_rec(j).second_noa_code;
5798             g_aw_req(i).no_of_rpa         := g_aw_req(i).no_of_rpa + 1;
5799             g_aw_req(i).remark_code       := null;
5800             g_aw_req(i).pa_remark_id      := null;
5801 
5802             for rem_rec in csr_rem(j,g_aw_req(i).effective_date)
5803             loop
5804                if ( rem_rec.pa_remark_id <> l_processed_rmk_id) then
5805 
5806                    g_aw_req(i).remark_code  := rem_rec.remark_id;
5807                    g_aw_req(i).pa_remark_id := rem_rec.pa_remark_id;
5808 
5809                    Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5810                    Process_Ext_Rslt_Dtl_Rec
5811                   (p_assignment_id    => p_assignment_id
5812                   ,p_organization_id  => null
5813                   ,p_effective_date   => p_effective_date
5814                   ,p_ext_rcd_id       => p_ext_rcd_id
5815                   ,p_rslt_rec         => l_rslt_dtl_rec
5816                   ,p_total_lines      => l_total_lines
5817                   ,p_error_code       => p_error_code
5818                   ,p_error_message    => p_error_message);
5819                   l_total_lines := l_total_lines + 1;
5820                end if;
5821              end loop;
5822 
5823           elsif  l_processed_awd_id = j then
5824 
5825             g_aw_req(i).person_id         := g_awd_rec(j).person_id;
5826             g_aw_req(i).assignment_id     := g_awd_rec(j).employee_assignment_id;
5827             g_aw_req(i).effective_date    := g_awd_rec(j).effective_date;
5828             g_aw_req(i).last_update_date  := g_awd_rec(j).last_update_date;
5829             g_aw_req(i).pa_request_id     := g_awd_rec(j).pa_request_id;
5830             g_aw_req(i).pa_notification_id:= g_awd_rec(j).pa_notification_id;
5831             g_aw_req(i).first_noa_code    := g_awd_rec(j).first_noa_code;
5832             g_aw_req(i).second_noa_code   := g_awd_rec(j).second_noa_code;
5833             g_aw_req(i).no_of_rpa         := g_aw_req(i).no_of_rpa + 1;
5834             g_aw_req(i).remark_code       := l_processed_rmk_cd;
5835             g_aw_req(i).pa_remark_id      := l_processed_rmk_id;
5836             for rem_rec in csr_rem(j,g_aw_req(i).effective_date)
5837             loop
5838                if (rem_rec.pa_remark_id <> l_processed_rmk_id) then
5839 
5840                    g_aw_req(i).remark_code  := rem_rec.remark_id;
5841                    g_aw_req(i).pa_remark_id := rem_rec.pa_remark_id;
5842 
5843                    Hr_Utility.set_location('Calling Process_Ext_Rslt_Dtl_Rec... ', 11);
5844                    Process_Ext_Rslt_Dtl_Rec
5845                   (p_assignment_id    => p_assignment_id
5846                   ,p_organization_id  => null
5847                   ,p_effective_date   => p_effective_date
5848                   ,p_ext_rcd_id       => p_ext_rcd_id
5849                   ,p_rslt_rec         => l_rslt_dtl_rec
5850                   ,p_total_lines      => l_total_lines
5851                   ,p_error_code       => p_error_code
5852                   ,p_error_message    => p_error_message);
5853                   l_total_lines := l_total_lines + 1;
5854 
5855                end if;
5856              end loop;
5857           end if;
5858 
5859           l_prv_rpa_id := j;
5860           j     := g_awd_rec.next(l_prv_rpa_id);
5861           Hr_Utility.set_location('PA Request Id : '||j, 12);
5862         end loop; -- while loop
5863 
5864 	END IF; -- if l_no_per_rpas = 0
5865     Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5866 
5867 exception
5868    when others then
5869     p_error_code := sqlcode;
5870     p_error_message := NULL;
5871     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5872 end Process_Remark_RPAs;
5873 
5874 -- =============================================================================
5875 -- ~ Process_Multiple_RPAs
5876 -- =============================================================================
5877 function Process_Multiple_RPAs
5878          (p_assignment_id     in number
5879          ,p_person_id         in number
5880          ,p_effective_date    in date
5881          ,p_error_code        in out NOCOPY varchar2
5882          ,p_error_message     in out NOCOPY varchar2)
5883          return varchar2 is
5884 
5885   l_proc_name           varchar2(150) := g_proc_name ||'Process_Multiple_RPAs';
5886   l_ext_rcd_id          number(15);
5887   l_prv_ext_rcd_id      number(15);
5888   l_rpa_type            varchar2(150);
5889   l_return_value        varchar2(2000);
5890 begin
5891    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5892    l_return_value := '0';
5893    l_ext_rcd_id := g_ext_rcd.first;
5894    Hr_Utility.set_location('l_ext_rcd_id: '||l_ext_rcd_id, 6);
5895    while l_ext_rcd_id is not null
5896    loop
5897      if g_ext_rcd.exists(l_ext_rcd_id) then
5898       l_rpa_type := g_ext_rcd(l_ext_rcd_id).data_value;
5899      end if;
5900      Hr_Utility.set_location('l_rpa_type: '||l_rpa_type, 7);
5901      if l_rpa_type ='RPA_REQ_ID' then
5902         Process_Person_RPAs
5903         (p_ext_rcd_id     => l_ext_rcd_id
5904         ,p_assignment_id  => p_assignment_id
5905         ,p_person_id      => p_person_id
5906         ,p_effective_date => p_effective_date
5907         ,p_error_code     => p_error_code
5908         ,p_error_message  => p_error_message
5909         );
5910      elsif l_rpa_type ='RPA_AWARD_ID' THEN ---'RPA_AWD_ID' then
5911         Process_Award_RPAs
5912         (p_ext_rcd_id     => l_ext_rcd_id
5913         ,p_assignment_id  => p_assignment_id
5914         ,p_person_id      => p_person_id
5915         ,p_effective_date => p_effective_date
5916         ,p_error_code     => p_error_code
5917         ,p_error_message  => p_error_message
5918         );
5919      elsif l_rpa_type ='RPA_REMARK_ID' then
5920         Process_Remark_RPAs
5921         (p_ext_rcd_id     => l_ext_rcd_id
5922         ,p_assignment_id  => p_assignment_id
5923         ,p_person_id      => p_person_id
5924         ,p_effective_date => p_effective_date
5925         ,p_error_code     => p_error_code
5926         ,p_error_message  => p_error_message
5927         );
5928      elsif l_rpa_type ='RPA_ADD_ID' then
5929         Process_Address_RPA
5930         (p_ext_rcd_id     => l_ext_rcd_id
5931         ,p_assignment_id  => p_assignment_id
5932         ,p_person_id      => p_person_id
5933         ,p_effective_date => p_effective_date
5934         ,p_error_code     => p_error_code
5935         ,p_error_message  => p_error_message
5936         );
5937      end if;
5938      l_prv_ext_rcd_id := l_ext_rcd_id;
5939      l_ext_rcd_id      := g_ext_rcd.next(l_prv_ext_rcd_id);
5940      Hr_Utility.set_location('l_ext_rcd_id: '||l_ext_rcd_id,10);
5941    end loop; -- while loop
5942    for rcd_rec in csr_ext_rcd
5943                 (c_hide_flag   => 'Y'
5944                 ,c_rcd_type_cd => 'D')
5945    loop
5946       delete
5947         from ben_ext_rslt_dtl dtl
5948        where dtl.ext_rslt_id = Ben_Ext_Thread.g_ext_rslt_id
5949          and dtl.ext_rcd_id = rcd_rec.ext_rcd_id
5950          and dtl.business_group_id = g_business_group_id;
5951    end loop;
5952    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
5953    return l_return_value;
5954 exception
5955    when Others then
5956     l_return_value  := '-1';
5957     p_error_code    := sqlcode;
5958     p_error_message :=' SQL-ERRM :'||NULL;
5959     Hr_Utility.set_location(p_error_message,85);
5960     Hr_Utility.set_location('Leaving: '||l_proc_name, 90);
5961     return l_return_value;
5962 end Process_Multiple_RPAs;
5963 
5964 -- =============================================================================
5965 -- ~ Evaluate_Formula:
5966 -- =============================================================================
5967 function Evaluate_Formula
5968         (p_assignment_id     in number
5969         ,p_effective_date    in date
5970         ,p_business_group_id in number
5971         ,p_input_value       in varchar2
5972         ,p_msg_type          in out NoCopy varchar2
5973         ,p_error_code        in out NoCopy varchar2
5974         ,p_error_message     in out NoCopy varchar2
5975          )
5976          return varchar2 as
5977    l_return_value           varchar2(2000);
5978    l_proc_name  constant    varchar2(250) := g_proc_name ||'Evaluate_Formula';
5979    l_pa_request_id          number;
5980    l_assignment_id number;
5981 begin
5982 
5983    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
5984    Hr_Utility.set_location(' p_input_value: '||p_input_value, 5);
5985    Hr_Utility.set_location(' p_assignment_id: '||p_assignment_id, 5);
5986    Hr_Utility.set_location(' g_assignment_id: '||g_assignment_id, 5);
5987    -- Sundar Changes Bug 4629647
5988    IF p_assignment_id IS NULL OR p_assignment_id = -1 THEN
5989 		l_assignment_id := g_assignment_id;
5990    ELSE
5991 		l_assignment_id := p_assignment_id;
5992    END IF;
5993 
5994    l_return_value := null;
5995    p_error_code      := '0'; p_msg_type := '0';
5996    p_error_message   := '0';
5997    if (p_input_value = 'RPA_REQ_ID' and
5998           g_pa_req.exists(l_assignment_id)) then
5999          l_return_value := g_pa_req(l_assignment_id).pa_request_id;
6000 
6001    elsif (p_input_value = 'RPA_REMARK_ID' and
6002           g_pa_req.exists(l_assignment_id)) then
6003 
6004          l_return_value := g_pa_req(l_assignment_id).pa_request_id;
6005 	-- Bug 4938143
6006    elsif (p_input_value = 'RPA_REMARK_ID' and
6007           g_aw_req.exists(l_assignment_id)) then
6008 		l_return_value := g_aw_req(l_assignment_id).pa_request_id;
6009 	-- Bug 4938143
6010    elsif (p_input_value = 'RPA_AWARD_ID' and
6011           g_aw_req.exists(l_assignment_id)) then
6012 
6013          l_return_value := g_aw_req(l_assignment_id).pa_request_id;
6014 
6015    elsif (p_input_value = 'RPA_ADD_ID' and
6016           g_address_rec.exists(l_assignment_id)) then
6017 
6018          l_return_value := g_address_rec(l_assignment_id).address_id;
6019 
6020    elsif p_input_value = 'RPA_USERID' OR p_input_value = 'AWD_USERID' or
6021          p_input_value = 'ADD_USERID'  then
6022 
6023          l_return_value := g_extract_params(p_business_group_id).user_id;
6024 
6025    elsif p_input_value ='PRO_MULTI_ACT' then
6026 
6027          l_return_value := Process_Multiple_RPAs
6028                           (p_assignment_id  => l_assignment_id
6029                           ,p_person_id      => g_person_id
6030                           ,p_effective_date => p_effective_date
6031                           ,p_error_code     => p_error_code
6032                           ,p_error_message  => p_error_message);
6033 
6034    elsif (p_input_value like 'RPA_RC%' and
6035           g_pa_req.exists(l_assignment_id)) then
6036         l_return_value := Get_Remarks_Id
6037                          (p_assignment_id => l_assignment_id
6038                          ,p_input_value   => p_input_value
6039                          ,p_error_code    => p_error_code
6040                          ,p_error_message => p_error_message
6041                          );
6042 
6043    elsif (p_input_value like 'RPA%' and
6044           g_pa_req.exists(l_assignment_id)
6045           ) then
6046         l_return_value := Get_RPA_Data
6047                          (p_assignment_id => l_assignment_id
6048                          ,p_input_value   => p_input_value
6049                          ,p_error_code    => p_error_code
6050                          ,p_error_message => p_error_message
6051                          );
6052    elsif (p_input_value like 'REM%' and
6053           (g_pa_req.exists(l_assignment_id) OR (g_aw_req.exists(l_assignment_id))
6054           )) then
6055         l_return_value := Get_Remarks_Data
6056                          (p_assignment_id => l_assignment_id
6057                          ,p_input_value   => p_input_value
6058                          ,p_error_code    => p_error_code
6059                          ,p_error_message => p_error_message
6060                          );
6061    elsif (p_input_value like 'AWD%' and
6062           g_aw_req.exists(l_assignment_id)
6063           ) then
6064         l_return_value := Get_Award_Data
6065                          (p_assignment_id => l_assignment_id
6066                          ,p_input_value   => p_input_value
6067                          ,p_error_code    => p_error_code
6068                          ,p_error_message => p_error_message
6069                          );
6070    elsif (p_input_value like 'ADD%' and
6071           g_address_rec.exists(l_assignment_id)
6072           ) then
6073         l_return_value := Get_Address_Data
6074                          (p_assignment_id => l_assignment_id
6075                          ,p_input_value   => p_input_value
6076                          ,p_error_code    => p_error_code
6077                          ,p_error_message => p_error_message
6078                          );
6079    end if;
6080    Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
6081    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
6082    if p_error_code <> '0' then
6083        p_msg_type := 'W';
6084    end if;
6085    return l_return_value;
6086 exception
6087    when Others then
6088     p_error_message := NULL; p_msg_type     := 'E';
6089     p_error_code    := sqlcode; l_return_value := '-1';
6090     Hr_Utility.set_location('error l_return_value: '||l_return_value, 89);
6091     Hr_Utility.set_location('error Leaving: '||l_proc_name, 90);
6092     return l_return_value;
6093 end Evaluate_Formula;
6094 
6095 -- =============================================================================
6096 -- ~ Evaluate_Formula:
6097 -- =============================================================================
6098 function Evaluate_Person_Inclusion
6099         (p_assignment_id     in per_all_assignments_f.assignment_id%type
6100         ,p_effective_date    in date
6101         ,p_business_group_id in per_all_assignments_f.business_group_id%type
6102         ,p_warning_code      in out NoCopy varchar2
6103         ,p_warning_message   in out NoCopy varchar2
6104         ,p_error_code        in out NoCopy varchar2
6105         ,p_error_message     in out NoCopy varchar2
6106          )
6107          return varchar2 as
6108 
6109     -- Cursor to get the person id for the given assignment id.
6110     cursor csr_per_id (c_assignment_id     in number
6111                       ,c_business_group_id in number
6112                       ,c_effective_date    in date) is
6113     select paf.person_id
6114           ,paf.assignment_type
6115       from per_all_assignments_f paf
6116      where paf.assignment_id     = c_assignment_id
6117        and paf.business_group_id = c_business_group_id
6118        and c_effective_date between paf.effective_start_date
6119                                 and paf.effective_end_date;
6120 -- =============================================================================
6121 -- Cursor to get the extract parameters of the last req.
6122 -- =============================================================================
6123    CURSOR csr_req_params ( c_req_id IN NUMBER) IS
6124      SELECT argument7, --Tranmission Type
6125         argument8,  -- Date Criteria
6126 	    argument12,  -- From Date
6127 	    argument13,  -- To Date
6128         argument14,  -- Agency Code
6129 	    argument15, -- Personnel Office Id
6130 	    argument16, -- Transmission Indicator
6131 	    argument17, -- Signon Identification
6132 	    argument18, -- User_ID
6133 	    argument19, -- dept Code
6134 	    argument20, -- Payroll_id
6135 	    argument21 -- Notify
6136        FROM fnd_concurrent_requests
6137       WHERE request_id = c_req_id;
6138 
6139 
6140    l_return_value        varchar2(2000);
6141    i                     number;
6142    l_remark_cnt          number;
6143    l_address_id          number;
6144    l_asg_type            varchar2(30);
6145    l_Has_RPA_actions     boolean;
6146    l_Has_Award_Actions   boolean;
6147    l_Has_Add_chgs        boolean;
6148    l_Asg_has_Rem         boolean;
6149    l_ext_rslt_id        ben_ext_rslt.ext_rslt_id%TYPE;
6150    l_ext_dfn_id         ben_ext_dfn.ext_dfn_id%TYPE;
6151    l_conc_reqest_id     ben_ext_rslt.request_id%TYPE;
6152    l_req_params         csr_req_params%ROWTYPE;
6153    j                    per_all_assignments_f.business_group_id%TYPE;
6154    l_value              Varchar2(150) ;
6155    l_proc_name  constant varchar2(250) := g_proc_name ||'Evaluate_Person_Inclusion';
6156 
6157 begin
6158 
6159    Hr_Utility.set_location('Entering: '||l_proc_name, 5);
6160    g_debug := Hr_Utility.debug_enabled;
6161    g_assignment_id := -1;
6162    -- ===================================================================
6163    -- Initialize all local variables
6164    -- ===================================================================
6165    l_return_value      := 'N';
6166    p_warning_message   := null;  p_error_message := null;
6167    p_warning_code      := '0';   p_error_code    := '0';
6168    l_Has_RPA_actions   := false; l_Asg_has_Rem   := false;
6169    l_Has_Award_Actions := false;
6170    l_Has_Add_chgs      := false;
6171 
6172    l_ext_rslt_id := ben_ext_thread.g_ext_rslt_id;
6173    l_ext_dfn_id  := ben_ext_thread.g_ext_dfn_id;
6174    j := p_business_group_id;
6175    g_business_group_id := p_business_group_id;
6176    g_assignment_id := p_assignment_id; -- Sundar changes.
6177 
6178 
6179    Hr_Utility.set_location('p_business_group_id: '||j, 5);
6180 
6181    IF NOT g_extract_params.EXISTS(i) THEN
6182       -- Get the Conc. request id to get the params
6183       OPEN  csr_org_req(c_ext_rslt_id      => l_ext_rslt_id
6184                       ,c_ext_dfn_id        => l_ext_dfn_id
6185                       ,c_business_group_id => p_business_group_id);
6186       FETCH csr_org_req INTO l_conc_reqest_id;
6187       CLOSE csr_org_req;
6188 
6189       Hr_Utility.set_location('l_conc_reqest_id: '||l_conc_reqest_id, 5);
6190       -- Get the params. based on the conc. request id.
6191       OPEN  csr_req_params(c_req_id  => l_conc_reqest_id);
6192       FETCH csr_req_params INTO l_req_params;
6193       CLOSE csr_req_params;
6194       Hr_Utility.set_location('..Extract params', 15);
6195 
6196       -- Store the params. in a PL/SQL table record
6197       g_extract_params(j).business_group_id      := p_business_group_id;
6198       g_extract_params(j).concurrent_req_id      := l_conc_reqest_id;
6199       g_extract_params(j).ext_dfn_id             := l_ext_dfn_id;
6200       g_extract_params(j).transmission_type      := l_req_params.argument7;
6201       g_extract_params(j).date_criteria          := l_req_params.argument8;
6202       Hr_Utility.set_location('..Extract params', 17);
6203 
6204       g_extract_params(j).from_date              := Fnd_Date.canonical_to_date(l_req_params.argument12);
6205       g_extract_params(j).to_date                := Fnd_Date.canonical_to_date(l_req_params.argument13);
6206       Hr_Utility.set_location('..Extract params', 20);
6207       g_extract_params(j).agency_code            := l_req_params.argument14;
6208       g_extract_params(j).personnel_office_id    := l_req_params.argument15;
6209       g_extract_params(j).transmission_indicator := l_req_params.argument16;
6210       g_extract_params(j).signon_identification  := l_req_params.argument17;
6211       g_extract_params(j).user_id                := l_req_params.argument18;
6212       g_extract_params(j).dept_code              := l_req_params.argument19;
6213       g_extract_params(j).payroll_id             := l_req_params.argument20;
6214       g_extract_params(j).notify                 := l_req_params.argument21;
6215 
6216       Hr_Utility.set_location('..Stored the Conc. Program parameters', 17);
6217    END IF;
6218 
6219    -- Get the extract start and end date
6220   /*
6221    g_ext_start_dt := to_date('01/01/'||to_char(p_effective_date,'YYYY'),
6222                              'DD/MM/YYYY');
6223    g_ext_end_dt        := p_effective_date;
6224    */
6225 
6226 
6227    g_ext_start_dt    :=g_extract_params(j).from_date;
6228 
6229    g_ext_end_dt      :=g_extract_params(j).to_date ;
6230    --
6231 
6232    Get_Rcds_Details;
6233    g_pa_req.delete;      g_aw_req.delete;
6234    g_rpa_rec.delete;     g_awd_rec.delete;
6235    g_address_rec.delete;
6236    g_auth_date :=NULL;
6237    g_pa_req_remark.delete;
6238    g_remark_cnt:=NULL;
6239    g_rpa_id_apt :=NULL;
6240    IF g_rpa_attr.count >0 THEN
6241     g_rpa_attr.delete;
6242    END IF;
6243 
6244    IF g_rpa_awd_attr.count >0 THEN
6245     g_rpa_awd_attr.delete;
6246    END IF;
6247 
6248    Hr_Utility.set_location(' p_assignment_id1: '||p_assignment_id, 6);
6249 
6250    -- Get the person id and bus grp id into pkg global variables
6251    open csr_per_id(c_assignment_id     => p_assignment_id
6252                   ,c_business_group_id => p_business_group_id
6253                   ,c_effective_date    => p_effective_date);
6254    fetch csr_per_id into g_person_id,l_asg_type;
6255    close csr_per_id;
6256    g_effective_date    := p_effective_date;
6257    i := p_assignment_id;
6258 --   if g_debug then
6259 
6260 
6261       Hr_Utility.set_location(' p_business_group_id: '||g_business_group_id, 6);
6262       Hr_Utility.set_location(' g_ext_start_dt : '||g_ext_start_dt, 6);
6263       Hr_Utility.set_location(' p_effective_date : '||p_effective_date, 6);
6264       Hr_Utility.set_location(' g_ext_end_dt: '||g_ext_end_dt, 6);
6265       Hr_Utility.set_location(' g_person_id: '||g_person_id, 6);
6266       Hr_Utility.set_location(' p_assignment_id: '||p_assignment_id, 6);
6267       Hr_Utility.set_location(' l_asg_type: '||l_asg_type, 6);
6268  --  end if;
6269    -- Get the Personnel Actions for the person id within the extract
6270    -- date range
6271    Hr_Utility.set_location(' Getting RPA s for the person.... ', 7);
6272 
6273    for rpa_rec in csr_ghr_per
6274                  (c_person_id      => g_person_id
6275                  ,c_assignment_id  => p_assignment_id
6276                  ,c_ext_start_date => g_ext_start_dt
6277                  ,c_ext_end_date   => g_ext_end_dt)
6278    loop
6279        -- Assign only one as the current request id.
6280 	   -- Sundar Changes Bug 4629647
6281        --if not l_Has_RPA_actions then
6282           g_pa_req(i).person_id          := rpa_rec.person_id;
6283           g_pa_req(i).assignment_id      := rpa_rec.employee_assignment_id;
6284           g_pa_req(i).effective_date     := rpa_rec.effective_date;
6285           g_pa_req(i).last_update_date   := rpa_rec.last_update_date;
6286           g_pa_req(i).pa_request_id      := rpa_rec.pa_request_id;
6287           g_pa_req(i).pa_notification_id := rpa_rec.pa_notification_id;
6288           g_pa_req(i).first_noa_code     := rpa_rec.first_noa_code;
6289           g_pa_req(i).second_noa_code    := rpa_rec.second_noa_code;
6290           g_pa_req(i).no_of_rpa          := g_pa_req(i).no_of_rpa + 1;
6291           l_Has_RPA_actions              := true;
6292           IF  rpa_rec.first_noa_code=100 THEN
6293            g_rpa_id_apt:=100;
6294           END IF;
6295        --end if;
6296        -- Get all the RPA into PL/SQL table for the person id.
6297        --if g_debug then
6298           Hr_Utility.set_location(' pa_request_id  :'||rpa_rec.pa_request_id, 8);
6299           Hr_Utility.set_location(' effective_date :'||rpa_rec.effective_date,8);
6300           Hr_Utility.set_location(' first_noa_code :'||rpa_rec.first_noa_code,8);
6301        --end if;
6302 
6303 
6304 
6305        for multi_rpas in csr_rpa_rec
6306                          (c_pa_request_id => rpa_rec.pa_request_id)
6307        loop
6308           g_rpa_rec(rpa_rec.pa_request_id) := multi_rpas;
6309 
6310           populate_attr (p_person_id              => g_pa_req(i).person_id
6311                        ,p_assignment_id           => g_pa_req(i).assignment_id
6312                        ,p_business_group_id       =>p_business_group_id
6313                        ,p_effective_date          =>rpa_rec.effective_date
6314                        ,p_first_noa_cd            =>rpa_rec.first_noa_code
6315                        ,p_sec_noa_cd              =>rpa_rec.second_noa_code
6316                        ,p_request_id              =>rpa_rec.pa_request_id
6317                        ,p_notification_id         =>rpa_rec.pa_notification_id
6318                        );
6319 
6320           --Checking the Agency Code
6321           l_value :=g_rpa_attr(rpa_rec.pa_request_id).nfc_agency;
6322           IF l_value  <> g_extract_params(j).agency_code THEN
6323             Hr_Utility.set_location('in side not null - l_value' ||l_value , 8);
6324 			Hr_Utility.set_location('in side not null - ' || g_extract_params(j).agency_code, 8);
6325 
6326             Hr_Utility.set_location('in side not null', 8);
6327        	     l_return_value := 'N';
6328 			 return l_return_value;
6329    		 END IF;
6330 
6331 			  --Checking the dept code
6332 		  IF g_extract_params(j).dept_code IS NOT NULL THEN
6333    			l_value :=g_rpa_attr(rpa_rec.pa_request_id).pmso_dept;
6334                 IF l_value <> g_extract_params(j).dept_code THEN
6335                    l_return_value := 'N';
6336 	           return l_return_value;
6337     	        END IF;
6338            END IF;
6339 
6340            --Checking the Personnel Office id
6341            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6342                l_value :=g_rpa_rec(rpa_rec.pa_request_id).personnel_office_id;
6343    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6344    	             l_return_value := 'N';
6345   	             return l_return_value;
6346 	           END IF;
6347            END IF;
6348           Hr_Utility.set_location(' RPA req id details in PL/SQL tab', 8);
6349 
6350        end loop; -- for multi_rpas in csr_rpa_rec
6351 
6352        l_remark_cnt := 0;
6353        -- Get all the Remarks for each RPA
6354        for j in csr_rem(rpa_rec.pa_request_id
6355                         ,g_pa_req(i).effective_date)
6356        loop
6357           l_remark_cnt := l_remark_cnt + 1;
6358 
6359           if l_remark_cnt = 1 then
6360              g_pa_req_remark(j.pa_request_id).remark_code_1 := j.code;
6361              if not l_Asg_has_Rem then
6362                 g_pa_req(i).remark_code  := j.remark_id;
6363                 g_pa_req(i).pa_remark_id := j.pa_remark_id;
6364                 l_Asg_has_Rem := true;
6365              end if;
6366           elsif l_remark_cnt = 2 then
6367              g_pa_req_remark(j.pa_request_id).remark_code_2 := j.code;
6368           elsif l_remark_cnt = 3 then
6369              g_pa_req_remark(j.pa_request_id).remark_code_3 := j.code;
6370           elsif l_remark_cnt = 4 then
6371              g_pa_req_remark(j.pa_request_id).remark_code_4 := j.code;
6372           elsif l_remark_cnt = 5 then
6373              g_pa_req_remark(j.pa_request_id).remark_code_5 := j.code;
6374           elsif l_remark_cnt = 6 then
6375              g_pa_req_remark(j.pa_request_id).remark_code_6 := j.code;
6376           elsif l_remark_cnt = 7 then
6377              g_pa_req_remark(j.pa_request_id).remark_code_7 := j.code;
6378           elsif l_remark_cnt = 8 then
6379              g_pa_req_remark(j.pa_request_id).remark_code_8 := j.code;
6380           elsif l_remark_cnt = 9 then
6381              g_pa_req_remark(j.pa_request_id).remark_code_9 := j.code;
6382           elsif l_remark_cnt = 10 then
6383              g_pa_req_remark(j.pa_request_id).remark_code_10 := j.code;
6384           end if;
6385           exit when l_remark_cnt = 10;
6386        end loop; -- for j in csr_re
6387        g_remark_cnt :=l_remark_cnt ;
6388        Hr_Utility.set_location(' Total remarks found :'||l_remark_cnt,8);
6389    end loop; --  for rpa_rec in csr_ghr_per
6390 
6391    -- Get the Award Actions for the person id within the extract
6392    -- date range
6393    Hr_Utility.set_location(' Getting Awards s for the person.... ', 9);
6394    for awd_rec in csr_ghr_awd
6395                   (c_person_id      => g_person_id
6396                   ,c_assignment_id  => p_assignment_id
6397                   ,c_ext_start_date => g_ext_start_dt
6398                   ,c_ext_end_date   => g_ext_end_dt)
6399    LOOP
6400        -- Assign only one as the current request id.
6401        IF NOT l_Has_Award_Actions THEN
6402           g_aw_req(i).person_id          := awd_rec.person_id;
6403           g_aw_req(i).assignment_id      := awd_rec.employee_assignment_id;
6404           g_aw_req(i).effective_date     := awd_rec.effective_date;
6405           g_aw_req(i).last_update_date   := awd_rec.last_update_date;
6406           g_aw_req(i).pa_request_id      := awd_rec.pa_request_id;
6407           g_aw_req(i).pa_notification_id := awd_rec.pa_notification_id;
6408           g_aw_req(i).first_noa_code     := awd_rec.first_noa_code;
6409           g_aw_req(i).second_noa_code    := awd_rec.second_noa_code;
6410           g_aw_req(i).no_of_rpa          := g_aw_req(i).no_of_rpa + 1;
6411           l_Has_Award_Actions            := true;
6412        END IF;
6413 
6414        if g_debug then
6415           Hr_Utility.set_location(' pa_request_id: '||awd_rec.pa_request_id, 10);
6416           Hr_Utility.set_location(' effective_date : '||awd_rec.effective_date, 10);
6417           Hr_Utility.set_location(' first_noa_code : '||awd_rec.first_noa_code, 10);
6418        end if;
6419        -- Get all the RPA into PL/SQL table for the person id.
6420        FOR multi_rpas IN csr_rpa_rec
6421                          (c_pa_request_id => awd_rec.pa_request_id)
6422        LOOP
6423           g_awd_rec(awd_rec.pa_request_id) := multi_rpas;
6424            populate_awd_attr (p_person_id         => g_aw_req(i).person_id
6425                        ,p_assignment_id           => g_aw_req(i).assignment_id
6426                        ,p_business_group_id       =>p_business_group_id
6427                        ,p_effective_date          =>awd_rec.effective_date
6428                        ,p_first_noa_cd            =>awd_rec.first_noa_code
6429                        ,p_sec_noa_cd              =>awd_rec.second_noa_code
6430                        ,p_request_id              =>awd_rec.pa_request_id
6431                        ,p_notification_id         =>g_aw_req(i).pa_notification_id
6432                        );
6433           Hr_Utility.set_location(' Award req id details in PL/SQL tab', 11);
6434 
6435           --Checking the Agency Code in Awards
6436           l_value :=g_rpa_awd_attr(awd_rec.pa_request_id).nfc_agency_code;
6437           IF l_value  <> g_extract_params(j).agency_code THEN
6438        	     l_return_value := 'N';
6439 			 return l_return_value;
6440    		  END IF;
6441 
6442           --Checking the dept code in Awards
6443 			IF g_extract_params(j).dept_code IS NOT NULL THEN
6444    				l_value :=g_rpa_awd_attr(awd_rec.pa_request_id).dept_code;
6445                 IF l_value <> g_extract_params(j).dept_code THEN
6446                    l_return_value := 'N';
6447 					return l_return_value;
6448     	        END IF;
6449            END IF;
6450 
6451            --Checking the Personnel Office id in awards
6452            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6453                l_value :=g_awd_rec(awd_rec.pa_request_id).personnel_office_id;
6454    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6455    	             l_return_value := 'N';
6456   	             return l_return_value;
6457 	           END IF;
6458            END IF;
6459 
6460        END LOOP; -- for multi_rpas in csr_rpa_rec
6461 
6462 		l_remark_cnt := 0;
6463 		-- Added remark for award actions
6464 	   FOR j IN csr_rem(awd_rec.pa_request_id
6465                         ,g_aw_req(i).effective_date)
6466        LOOP
6467           l_remark_cnt := l_remark_cnt + 1;
6468           g_aw_req(i).pa_request_id := awd_rec.pa_request_id;
6469           IF l_remark_cnt = 1 THEN
6470              g_pa_req_remark(j.pa_request_id).remark_code_1 := j.code;
6471              IF NOT l_Asg_has_Rem THEN
6472                 g_aw_req(i).remark_code  := j.remark_id;
6473                 g_aw_req(i).pa_remark_id := j.pa_remark_id;
6474                 l_Asg_has_Rem := true;
6475              END IF;
6476           ELSIF l_remark_cnt = 2 then
6477 				g_pa_req_remark(j.pa_request_id).remark_code_2 := j.code;
6478           ELSIF l_remark_cnt = 3 then
6479 				g_pa_req_remark(j.pa_request_id).remark_code_3 := j.code;
6480           ELSIF l_remark_cnt = 4 then
6481 				g_pa_req_remark(j.pa_request_id).remark_code_4 := j.code;
6482           ELSIF l_remark_cnt = 5 then
6483 				g_pa_req_remark(j.pa_request_id).remark_code_5 := j.code;
6484           ELSIF l_remark_cnt = 6 then
6485 				g_pa_req_remark(j.pa_request_id).remark_code_6 := j.code;
6486           ELSIF l_remark_cnt = 7 then
6487 				g_pa_req_remark(j.pa_request_id).remark_code_7 := j.code;
6488           ELSIF l_remark_cnt = 8 then
6489 				g_pa_req_remark(j.pa_request_id).remark_code_8 := j.code;
6490           ELSIF l_remark_cnt = 9 then
6491 				g_pa_req_remark(j.pa_request_id).remark_code_9 := j.code;
6492           ELSIF l_remark_cnt = 10 then
6493 				g_pa_req_remark(j.pa_request_id).remark_code_10 := j.code;
6494           END IF;
6495           EXIT WHEN l_remark_cnt = 10;
6496        END LOOP; -- for j in csr_re
6497        g_remark_cnt :=l_remark_cnt ;
6498 	   -- End Remark Award actions
6499 
6500    END LOOP; -- for awd_rec in csr_ghr_awd
6501    -- Get the most recent Address Change with the extract date range.
6502    Hr_Utility.set_location(' Getting Primary Address Changes for the person.... ', 12);
6503 
6504    IF g_rpa_id_apt = 100 THEN
6505 
6506 	Hr_Utility.set_location(' 100 - Getting Primary Address.... ', 12);
6507     open csr_per_add_apt (c_person_id      => g_person_id
6508                          ,c_ext_end_date   => g_ext_end_dt);
6509     fetch csr_per_add_apt into g_address_rec(i);
6510     IF (csr_per_add_apt%found ) then
6511       populate_add_attr (p_person_id             =>g_person_id
6512                        ,p_assignment_id          =>p_assignment_id
6513                        ,p_business_group_id      =>p_business_group_id
6514                        ,p_effective_date         =>p_effective_date
6515                        ,p_request_id             =>NULL
6516                        );
6517       Hr_Utility.set_location(' Person:address_id: '||g_address_rec(i).address_id, 14);
6518       l_Has_Add_chgs := true;
6519      --Checking the criteria validations in Address
6520      --Checking the Agency Code in Address
6521           l_value :=g_rpa_add_attr(p_assignment_id).nfc_agency_code;
6522           IF l_value  <> g_extract_params(j).agency_code THEN
6523        	     l_return_value := 'N';
6524 			return l_return_value;
6525    		  END IF;
6526 
6527           --Checking the dept code in Address
6528 		  IF g_extract_params(j).dept_code IS NOT NULL THEN
6529 			 l_value :=g_rpa_add_attr(p_assignment_id).dept_code;
6530                 IF l_value <> g_extract_params(j).dept_code THEN
6531                    l_return_value := 'N';
6532 					return l_return_value;
6533     	        END IF;
6534            END IF;
6535 
6536            --Checking the Personnel Office id in Address
6537            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6538                l_value :=g_rpa_add_attr(p_assignment_id).poi;
6539    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6540    	             l_return_value := 'N';
6541   	             return l_return_value;
6542 	           END IF;
6543            END IF;
6544     END IF; -- IF (csr_per_add_apt%found )
6545     CLOSE csr_per_add_apt;
6546 
6547    ELSE  -- IF g_rpa_id_apt = 100
6548 	   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ' || l_return_value, 12);
6549     OPEN csr_per_add (c_person_id      => g_person_id
6550                     ,c_ext_start_date => g_ext_start_dt
6551                     ,c_ext_end_date   => g_ext_end_dt);
6552     FETCH csr_per_add into g_address_rec(i);
6553 	Hr_Utility.set_location('Non 100 - After fetching.... ' || l_return_value, 12);
6554     IF (csr_per_add%found ) then
6555       populate_add_attr (p_person_id             =>g_person_id
6556                        ,p_assignment_id          =>p_assignment_id
6557                        ,p_business_group_id      =>p_business_group_id
6558                        ,p_effective_date         =>p_effective_date
6559                        ,p_request_id             =>NULL
6560                        ); --Checking the criteria validations in Address
6561      --Checking the Agency Code in Address
6562           l_value :=g_rpa_add_attr(p_assignment_id).nfc_agency_code;
6563           IF l_value  <> g_extract_params(j).agency_code THEN
6564 			   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 121);
6565        	     l_return_value := 'N';
6566 			return l_return_value;
6567    		END IF;
6568 --Checking the criteria validations in Address
6569      --Checking the Agency Code in Address
6570           l_value :=g_rpa_add_attr(p_assignment_id).nfc_agency_code;
6571           IF l_value  <> g_extract_params(j).agency_code THEN
6572 		   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 122);
6573        	     l_return_value := 'N';
6574 			return l_return_value;
6575    		 END IF;
6576 
6577           --Checking the dept code in Address
6578 		  IF g_extract_params(j).dept_code IS NOT NULL THEN
6579    				l_value :=g_rpa_add_attr(p_assignment_id).dept_code;
6580                 IF l_value <> g_extract_params(j).dept_code THEN
6581 				 Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 123);
6582                    l_return_value := 'N';
6583 					return l_return_value;
6584     	        END IF;
6585            END IF;
6586 
6587            --Checking the Personnel Office id in Address
6588            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6589                l_value :=g_rpa_add_attr(p_assignment_id).poi;
6590    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6591 			   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 124);
6592    	             l_return_value := 'N';
6593   	             return l_return_value;
6594 	           END IF;
6595            END IF;
6596           --Checking the dept code in Address
6597 		   IF g_extract_params(j).dept_code IS NOT NULL THEN
6598    				l_value :=g_rpa_add_attr(p_assignment_id).dept_code;
6599                 IF l_value <> g_extract_params(j).dept_code THEN
6600 				 Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 125);
6601                    l_return_value := 'N';
6602 					RETURN l_return_value;
6603     	        END IF;
6604            END IF;
6605 
6606            --Checking the Personnel Office id in Address
6607            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6608                l_value :=g_rpa_add_attr(p_assignment_id).poi;
6609    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6610 			   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 126);
6611    	             l_return_value := 'N';
6612   	             return l_return_value;
6613 	           END IF;
6614            END IF;
6615       Hr_Utility.set_location(' Person:address_id: '||g_address_rec(i).address_id, 14);
6616       l_Has_Add_chgs := true;
6617      --Checking the criteria validations in Address
6618      --Checking the Agency Code in Address
6619           l_value :=g_rpa_add_attr(p_assignment_id).nfc_agency_code;
6620           IF l_value  <> g_extract_params(j).agency_code THEN
6621 		   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 127);
6622        	     l_return_value := 'N';
6623 	     return l_return_value;
6624    	  END IF;
6625 
6626           --Checking the dept code in Address
6627 	  IF g_extract_params(j).dept_code IS NOT NULL THEN
6628    	     l_value :=g_rpa_add_attr(p_assignment_id).dept_code;
6629                 IF l_value <> g_extract_params(j).dept_code THEN
6630 				 Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 128);
6631                    l_return_value := 'N';
6632 	           return l_return_value;
6633     	        END IF;
6634            END IF;
6635 
6636            --Checking the Personnel Office id in Address
6637            IF g_extract_params(j).personnel_office_id IS NOT NULL THEN
6638                l_value :=g_rpa_add_attr(p_assignment_id).poi;
6639    	          IF l_value <> g_extract_params(j).personnel_office_id THEN
6640 			   Hr_Utility.set_location('Non 100 - Getting Primary Address.... ', 129);
6641    	             l_return_value := 'N';
6642   	             return l_return_value;
6643 	           END IF;
6644            END IF;
6645     end if;
6646     close csr_per_add;
6647 
6648 
6649 
6650    END IF;
6651    -- If person has no RPA, Awards or Addresses changes then the person need
6652    -- not be extracted.
6653    if l_Has_Add_chgs or
6654       l_Has_Award_Actions or
6655       l_Has_RPA_actions then
6656       l_return_value := 'Y';
6657    elsif l_asg_type ='B' then
6658 	   	Hr_Utility.set_location('Non 100 - After fetching.... ' || l_return_value, 12);
6659       l_return_value := 'Y';
6660    end if;
6661 
6662    Hr_Utility.set_location(' l_return_value: '||l_return_value, 79);
6663    Hr_Utility.set_location('Leaving: '||l_proc_name, 80);
6664    return l_return_value;
6665 
6666 exception
6667    when Others then
6668     p_error_code   := sqlcode; p_warning_code   := '-1';
6669     p_error_message:= NULL; p_warning_message:= null;
6670     l_return_value := 'N';
6671 
6672     Hr_Utility.set_location(' l_return_value: '||l_return_value, 89);
6673     Hr_Utility.set_location('error Leaving: '||l_proc_name, 90);
6674 
6675     return l_return_value;
6676 
6677 end Evaluate_Person_Inclusion;
6678 
6679 -- =============================================================================
6680 -- ~ Get_NFC_ConcProg_Information: Common function to get the conc.prg parameters
6681 -- =============================================================================
6682 FUNCTION Get_NFC_ConcProg_Information
6683                      (p_header_type IN VARCHAR2
6684                      ,p_error_message OUT NOCOPY VARCHAR2) RETURN Varchar2 IS
6685 
6686   CURSOR csr_period_num(c_payroll_id     IN per_time_periods.payroll_id%TYPE
6687                        ,c_effective_date IN DATE) IS
6688     SELECT period_num
6689       FROM per_time_periods
6690      WHERE payroll_id = c_payroll_id
6691        AND c_effective_date BETWEEN start_date
6692                                 AND end_date;
6693 
6694 
6695    CURSOR csr_jcl_org_req (c_ext_dfn_id IN NUMBER
6696                           ,c_ext_rslt_id IN NUMBER ) IS
6697     SELECT bba.request_id
6698       FROM ben_benefit_actions bba
6699      WHERE bba.pl_id = c_ext_rslt_id
6700        AND bba.pgm_id = c_ext_dfn_id ;
6701 
6702 
6703   l_proc_name     VARCHAR2(150) := g_proc_name ||'.Get_NFC_ConcProg_Information';
6704   l_return_value  VARCHAR2(1000);
6705   i               per_all_assignments_f.business_group_id%TYPE;
6706   l_period_num    per_time_periods.period_num%TYPE;
6707   l_ext_rslt_id   ben_ext_rslt.ext_rslt_id%TYPE;
6708   l_ext_dfn_id    ben_ext_dfn.ext_dfn_id%TYPE;
6709   l_conc_reqest_id ben_ext_rslt.request_id%TYPE;
6710   l_start_date    DATE;
6711   l_end_date      DATE;
6712   l_position_id   NUMBER;
6713 
6714 BEGIN
6715    Hr_Utility.set_location('Entering :'||l_proc_name, 5);
6716    i := g_business_group_id;
6717 
6718    Hr_Utility.set_location('g_business_group_id :'||g_business_group_id, 5);
6719    Hr_Utility.set_location('p_header_type :'||p_header_type, 5);
6720    Hr_Utility.set_location('g_extract_params(i).agency_code:'||g_extract_params(i).agency_code, 5);
6721 
6722    IF p_header_type = 'AGENCY_CODE' THEN
6723         l_return_value := g_extract_params(i).agency_code;
6724    ELSIF p_header_type = 'PERSONNEL_OFFICE_ID' THEN
6725        l_return_value := g_extract_params(i).personnel_office_id;
6726    ELSIF p_header_type = 'TRANSMISSION_INDICATOR' THEN
6727        l_return_value := g_extract_params(i).transmission_indicator;
6728    ELSIF p_header_type = 'SIGNON_IDENTIFICATION' THEN
6729        l_return_value := g_extract_params(i).signon_identification;
6730    ELSIF p_header_type = 'PAY_PERIOD_NUMBER' THEN
6731      l_period_num:= get_pay_period_number
6732                         (p_person_id           => -1
6733                         ,p_assignment_id       =>-1
6734                         ,p_business_group_id   =>g_business_group_id
6735                         ,p_effective_date      =>g_extract_params(i).to_date
6736                         ,p_position_id         =>l_position_id
6737                         ,p_start_date          =>l_start_date
6738                         ,p_end_date            =>l_end_date
6739                         );
6740          l_return_value := LPAD(l_period_num,2,'0');
6741    END IF;
6742    hr_utility.set_location('l_return_value: '||l_return_value, 45);
6743    hr_utility.set_location('Leaving: '||l_proc_name, 45);
6744   RETURN l_return_value;
6745 EXCEPTION
6746   WHEN Others THEN
6747      p_error_message :='SQL-ERRM :'||SQLERRM;
6748      hr_utility.set_location('Leaving: '||l_proc_name, 45);
6749      RETURN l_return_value;
6750 END Get_NFC_ConcProg_Information;
6751 
6752 
6753 END GHR_US_NFC_EXTRACTS;