DBA Data[Home] [Help]

PACKAGE BODY: APPS.GHR_NFC_ERROR_PROC

Source


1 PACKAGE BODY GHR_NFC_ERROR_PROC AS
2 /* $Header: ghrnfcerrext.pkb 120.13 2006/02/06 06:42:16 sumarimu noship $ */
3 
4 --g_proc_name  Varchar2(200) :='GHR_NFC_ERROR_PROC';
5 
6 --=================================================================
7 --upd_Rslt_Dtl
8 --================================================================
9 procedure upd_Rslt_Dtl
10           (p_val_tab     in out NOCOPY ben_ext_rslt_dtl%rowtype
11           ,p_dat_tab     in  ben_ext_rslt_dtl%rowtype
12           ) is
13 
14 l_proc_name     Varchar2(150) := g_proc_name ||'.upd_Rslt_Dtl';
15 BEGIN
16  Hr_Utility.set_location('Entering: '||l_proc_name, 5);
17 ---check for null value and replaces with the original value.
18 
19 
20 
21   IF p_val_tab.val_02 IS NULL THEN
22    p_val_tab.val_02 :=p_dat_tab.val_02;
23   END IF;
24   IF p_val_tab.val_03 IS NULL THEN
25    p_val_tab.val_03 :=p_dat_tab.val_03;
26   END IF;
27   IF p_val_tab.val_04 IS NULL THEN
28    p_val_tab.val_04 :=p_dat_tab.val_04;
29   END IF;
30   IF p_val_tab.val_05 IS NULL THEN
31    p_val_tab.val_05 :=p_dat_tab.val_05;
32   END IF;
33   IF p_val_tab.val_06 IS NULL THEN
34    p_val_tab.val_06 :=p_dat_tab.val_06;
35   END IF;
36   IF p_val_tab.val_07 IS NULL THEN
37    p_val_tab.val_07 :=p_dat_tab.val_07;
38   END IF;
39   IF p_val_tab.val_08 IS NULL THEN
40    p_val_tab.val_08 :=p_dat_tab.val_08;
41   END IF;
42   IF p_val_tab.val_09 IS NULL THEN
43    p_val_tab.val_09 :=p_dat_tab.val_09;
44   END IF;
45   IF p_val_tab.val_10 IS NULL THEN
46    p_val_tab.val_10 :=p_dat_tab.val_10;
47   END IF;
48   IF p_val_tab.val_11 IS NULL THEN
49    p_val_tab.val_11 :=p_dat_tab.val_11;
50   END IF;
51   IF p_val_tab.val_12 IS NULL THEN
52    p_val_tab.val_12 :=p_dat_tab.val_12;
53   END IF;
54   IF p_val_tab.val_13 IS NULL THEN
55    p_val_tab.val_13 :=p_dat_tab.val_13;
56   END IF;
57   IF p_val_tab.val_14 IS NULL THEN
58    p_val_tab.val_14 :=p_dat_tab.val_14;
59   END IF;
60   IF p_val_tab.val_15 IS NULL THEN
61    p_val_tab.val_15 :=p_dat_tab.val_15;
62   END IF;
63   IF p_val_tab.val_16 IS NULL THEN
64    p_val_tab.val_16 :=p_dat_tab.val_16;
65   END IF;
66   IF p_val_tab.val_17 IS NULL THEN
67    p_val_tab.val_17 :=p_dat_tab.val_17;
68   END IF;
69   IF p_val_tab.val_18 IS NULL THEN
70    p_val_tab.val_18 :=p_dat_tab.val_18;
71   END IF;
72   IF p_val_tab.val_19 IS NULL THEN
73    p_val_tab.val_19 :=p_dat_tab.val_19;
74   END IF;
75   IF p_val_tab.val_20 IS NULL THEN
76    p_val_tab.val_20 :=p_dat_tab.val_20;
77   END IF;
78   IF p_val_tab.val_21 IS NULL THEN
79    p_val_tab.val_21 :=p_dat_tab.val_21;
80   END IF;
81   IF p_val_tab.val_22 IS NULL THEN
82    p_val_tab.val_22 :=p_dat_tab.val_22;
83   END IF;
84   IF p_val_tab.val_23 IS NULL THEN
85    p_val_tab.val_23 :=p_dat_tab.val_23;
86   END IF;
87   IF p_val_tab.val_24 IS NULL THEN
88    p_val_tab.val_24 :=p_dat_tab.val_24;
89   END IF;
90   IF p_val_tab.val_25 IS NULL THEN
91    p_val_tab.val_25 :=p_dat_tab.val_25;
92   END IF;
93   IF p_val_tab.val_26 IS NULL THEN
94    p_val_tab.val_26 :=p_dat_tab.val_26;
95   END IF;
96   IF p_val_tab.val_27 IS NULL THEN
97    p_val_tab.val_27 :=p_dat_tab.val_27;
98   END IF;
99   IF p_val_tab.val_28 IS NULL THEN
100    p_val_tab.val_28 :=p_dat_tab.val_28;
101   END IF;
102   IF p_val_tab.val_29 IS NULL THEN
103    p_val_tab.val_29 :=p_dat_tab.val_29;
104   END IF;
105   IF p_val_tab.val_30 IS NULL THEN
106    p_val_tab.val_30 :=p_dat_tab.val_30;
107   END IF;
108   IF p_val_tab.val_31 IS NULL THEN
109    p_val_tab.val_31 :=p_dat_tab.val_31;
110   END IF;
111   IF p_val_tab.val_32 IS NULL THEN
112    p_val_tab.val_32 :=p_dat_tab.val_32;
113   END IF;
114   IF p_val_tab.val_33 IS NULL THEN
115    p_val_tab.val_33 :=p_dat_tab.val_33;
116   END IF;
117   IF p_val_tab.val_34 IS NULL THEN
118    p_val_tab.val_34 :=p_dat_tab.val_34;
119   END IF;
120   IF p_val_tab.val_35 IS NULL THEN
121    p_val_tab.val_35 :=p_dat_tab.val_35;
122   END IF;
123   IF p_val_tab.val_36 IS NULL THEN
124    p_val_tab.val_36 :=p_dat_tab.val_36;
125   END IF;
126   IF p_val_tab.val_37 IS NULL THEN
127    p_val_tab.val_37 :=p_dat_tab.val_37;
128   END IF;
129   IF p_val_tab.val_38 IS NULL THEN
130    p_val_tab.val_38 :=p_dat_tab.val_38;
131   END IF;
132   IF p_val_tab.val_39 IS NULL THEN
133    p_val_tab.val_39 :=p_dat_tab.val_39;
134   END IF;
135 
136   IF p_val_tab.val_40 IS NULL THEN
137    p_val_tab.val_40 :=p_dat_tab.val_40;
138   END IF;
139   IF p_val_tab.val_41 IS NULL THEN
140    p_val_tab.val_41 :=p_dat_tab.val_41;
141   END IF;
142   IF p_val_tab.val_42 IS NULL THEN
143    p_val_tab.val_42 :=p_dat_tab.val_42;
144   END IF;
145   IF p_val_tab.val_43 IS NULL THEN
146    p_val_tab.val_43 :=p_dat_tab.val_43;
147   END IF;
148   IF p_val_tab.val_44 IS NULL THEN
149    p_val_tab.val_44 :=p_dat_tab.val_44;
150   END IF;
151   IF p_val_tab.val_45 IS NULL THEN
152    p_val_tab.val_45 :=p_dat_tab.val_45;
153   END IF;
154   IF p_val_tab.val_46 IS NULL THEN
155    p_val_tab.val_46 :=p_dat_tab.val_46;
156   END IF;
157   IF p_val_tab.val_47 IS NULL THEN
158    p_val_tab.val_47 :=p_dat_tab.val_47;
159   END IF;
160   IF p_val_tab.val_48 IS NULL THEN
161    p_val_tab.val_48 :=p_dat_tab.val_48;
162   END IF;
163   IF p_val_tab.val_49 IS NULL THEN
164    p_val_tab.val_49 :=p_dat_tab.val_49;
165   END IF;
166 
167   IF p_val_tab.val_50 IS NULL THEN
168    p_val_tab.val_50 :=p_dat_tab.val_50;
169   END IF;
170   IF p_val_tab.val_51 IS NULL THEN
171    p_val_tab.val_51 :=p_dat_tab.val_51;
172   END IF;
173   IF p_val_tab.val_52 IS NULL THEN
174    p_val_tab.val_52 :=p_dat_tab.val_52;
175   END IF;
176   IF p_val_tab.val_53 IS NULL THEN
177    p_val_tab.val_53 :=p_dat_tab.val_53;
178   END IF;
179   IF p_val_tab.val_54 IS NULL THEN
180    p_val_tab.val_54 :=p_dat_tab.val_54;
181   END IF;
182   IF p_val_tab.val_55 IS NULL THEN
183    p_val_tab.val_55 :=p_dat_tab.val_55;
184   END IF;
185   IF p_val_tab.val_56 IS NULL THEN
186    p_val_tab.val_56 :=p_dat_tab.val_56;
187   END IF;
188   IF p_val_tab.val_57 IS NULL THEN
189    p_val_tab.val_57 :=p_dat_tab.val_57;
190   END IF;
191   IF p_val_tab.val_58 IS NULL THEN
192    p_val_tab.val_58 :=p_dat_tab.val_58;
193   END IF;
194   IF p_val_tab.val_59 IS NULL THEN
195    p_val_tab.val_59 :=p_dat_tab.val_59;
196   END IF;
197 
198   IF p_val_tab.val_60 IS NULL THEN
199    p_val_tab.val_60 :=p_dat_tab.val_60;
200   END IF;
201   IF p_val_tab.val_61 IS NULL THEN
202    p_val_tab.val_61 :=p_dat_tab.val_61;
203   END IF;
204   IF p_val_tab.val_62 IS NULL THEN
205    p_val_tab.val_62 :=p_dat_tab.val_62;
206   END IF;
207   IF p_val_tab.val_63 IS NULL THEN
208    p_val_tab.val_63 :=p_dat_tab.val_63;
209   END IF;
210   IF p_val_tab.val_64 IS NULL THEN
211    p_val_tab.val_64 :=p_dat_tab.val_64;
212   END IF;
213   IF p_val_tab.val_65 IS NULL THEN
214    p_val_tab.val_65 :=p_dat_tab.val_65;
215   END IF;
216   IF p_val_tab.val_66 IS NULL THEN
217    p_val_tab.val_66 :=p_dat_tab.val_66;
218   END IF;
219   IF p_val_tab.val_67 IS NULL THEN
220    p_val_tab.val_67 :=p_dat_tab.val_67;
221   END IF;
222   IF p_val_tab.val_68 IS NULL THEN
223    p_val_tab.val_68 :=p_dat_tab.val_68;
224   END IF;
225   IF p_val_tab.val_69 IS NULL THEN
226    p_val_tab.val_69 :=p_dat_tab.val_69;
227   END IF;
228 
229   IF p_val_tab.val_70 IS NULL THEN
230    p_val_tab.val_70 :=p_dat_tab.val_70;
231   END IF;
232   IF p_val_tab.val_71 IS NULL THEN
233    p_val_tab.val_71 :=p_dat_tab.val_71;
234   END IF;
235   IF p_val_tab.val_72 IS NULL THEN
236    p_val_tab.val_72 :=p_dat_tab.val_72;
237   END IF;
238   IF p_val_tab.val_73 IS NULL THEN
239    p_val_tab.val_73 :=p_dat_tab.val_73;
240   END IF;
241   IF p_val_tab.val_74 IS NULL THEN
242    p_val_tab.val_74 :=p_dat_tab.val_74;
243   END IF;
244   IF p_val_tab.val_75 IS NULL THEN
245    p_val_tab.val_75 :=p_dat_tab.val_75;
246   END IF;
247   IF p_val_tab.val_76 IS NULL THEN
248    p_val_tab.val_76 :=p_dat_tab.val_76;
249   END IF;
250   IF p_val_tab.val_77 IS NULL THEN
251    p_val_tab.val_77 :=p_dat_tab.val_77;
252   END IF;
253   IF p_val_tab.val_78 IS NULL THEN
254    p_val_tab.val_78 :=p_dat_tab.val_78;
255   END IF;
256   IF p_val_tab.val_79 IS NULL THEN
257    p_val_tab.val_79 :=p_dat_tab.val_79;
258   END IF;
259 
260   IF p_val_tab.val_80 IS NULL THEN
261    p_val_tab.val_80 :=p_dat_tab.val_80;
262   END IF;
263   IF p_val_tab.val_81 IS NULL THEN
264    p_val_tab.val_81 :=p_dat_tab.val_81;
265   END IF;
266   IF p_val_tab.val_82 IS NULL THEN
267    p_val_tab.val_82 :=p_dat_tab.val_82;
268   END IF;
269   IF p_val_tab.val_83 IS NULL THEN
270    p_val_tab.val_83 :=p_dat_tab.val_83;
271   END IF;
272   IF p_val_tab.val_84 IS NULL THEN
273    p_val_tab.val_84 :=p_dat_tab.val_84;
274   END IF;
275   IF p_val_tab.val_85 IS NULL THEN
276    p_val_tab.val_85 :=p_dat_tab.val_85;
277   END IF;
278   IF p_val_tab.val_86 IS NULL THEN
279    p_val_tab.val_86 :=p_dat_tab.val_86;
280   END IF;
281   IF p_val_tab.val_87 IS NULL THEN
282    p_val_tab.val_87 :=p_dat_tab.val_87;
283   END IF;
284   IF p_val_tab.val_88 IS NULL THEN
285    p_val_tab.val_88 :=p_dat_tab.val_88;
286   END IF;
287   IF p_val_tab.val_89 IS NULL THEN
288    p_val_tab.val_89 :=p_dat_tab.val_89;
289   END IF;
290 
291   IF p_val_tab.val_90 IS NULL THEN
292    p_val_tab.val_90 :=p_dat_tab.val_90;
293   END IF;
294   IF p_val_tab.val_91 IS NULL THEN
295    p_val_tab.val_91 :=p_dat_tab.val_91;
296   END IF;
297   IF p_val_tab.val_92 IS NULL THEN
298    p_val_tab.val_92 :=p_dat_tab.val_92;
299   END IF;
300   IF p_val_tab.val_93 IS NULL THEN
301    p_val_tab.val_93 :=p_dat_tab.val_93;
302   END IF;
303   IF p_val_tab.val_94 IS NULL THEN
304    p_val_tab.val_94 :=p_dat_tab.val_94;
305   END IF;
306   IF p_val_tab.val_95 IS NULL THEN
307    p_val_tab.val_95 :=p_dat_tab.val_95;
308   END IF;
309   IF p_val_tab.val_96 IS NULL THEN
310    p_val_tab.val_96 :=p_dat_tab.val_96;
311   END IF;
312   IF p_val_tab.val_97 IS NULL THEN
313    p_val_tab.val_97 :=p_dat_tab.val_97;
314   END IF;
315   IF p_val_tab.val_98 IS NULL THEN
316    p_val_tab.val_98 :=p_dat_tab.val_98;
317   END IF;
318   IF p_val_tab.val_99 IS NULL THEN
319    p_val_tab.val_99 :=p_dat_tab.val_99;
320   END IF;
321 
322   IF p_val_tab.val_100 IS NULL THEN
323    p_val_tab.val_100 :=p_dat_tab.val_100;
324   END IF;
325   IF p_val_tab.val_101 IS NULL THEN
326    p_val_tab.val_101 :=p_dat_tab.val_101;
327   END IF;
328   IF p_val_tab.val_102 IS NULL THEN
329    p_val_tab.val_102 :=p_dat_tab.val_102;
330   END IF;
331   IF p_val_tab.val_103 IS NULL THEN
332    p_val_tab.val_103 :=p_dat_tab.val_103;
333   END IF;
334   IF p_val_tab.val_104 IS NULL THEN
335    p_val_tab.val_104 :=p_dat_tab.val_104;
336   END IF;
337   IF p_val_tab.val_105 IS NULL THEN
338    p_val_tab.val_105 :=p_dat_tab.val_105;
339   END IF;
340   IF p_val_tab.val_106 IS NULL THEN
341    p_val_tab.val_106 :=p_dat_tab.val_106;
342   END IF;
343   IF p_val_tab.val_107 IS NULL THEN
344    p_val_tab.val_107 :=p_dat_tab.val_107;
345   END IF;
346   IF p_val_tab.val_108 IS NULL THEN
347    p_val_tab.val_108 :=p_dat_tab.val_108;
348   END IF;
349   IF p_val_tab.val_109 IS NULL THEN
350    p_val_tab.val_109 :=p_dat_tab.val_109;
351   END IF;
352 
353   IF p_val_tab.val_110 IS NULL THEN
354    p_val_tab.val_110 :=p_dat_tab.val_110;
355   END IF;
356   IF p_val_tab.val_111 IS NULL THEN
357    p_val_tab.val_111 :=p_dat_tab.val_111;
358   END IF;
359   IF p_val_tab.val_112 IS NULL THEN
360    p_val_tab.val_112 :=p_dat_tab.val_112;
361   END IF;
362   IF p_val_tab.val_113 IS NULL THEN
363    p_val_tab.val_113 :=p_dat_tab.val_113;
364   END IF;
365   IF p_val_tab.val_114 IS NULL THEN
366    p_val_tab.val_114 :=p_dat_tab.val_114;
367   END IF;
368   IF p_val_tab.val_115 IS NULL THEN
369    p_val_tab.val_115 :=p_dat_tab.val_115;
370   END IF;
371   IF p_val_tab.val_116 IS NULL THEN
372    p_val_tab.val_116 :=p_dat_tab.val_116;
373   END IF;
374   IF p_val_tab.val_117 IS NULL THEN
375    p_val_tab.val_117 :=p_dat_tab.val_117;
376   END IF;
377   IF p_val_tab.val_118 IS NULL THEN
378    p_val_tab.val_118 :=p_dat_tab.val_118;
379   END IF;
380   IF p_val_tab.val_119 IS NULL THEN
381    p_val_tab.val_119 :=p_dat_tab.val_119;
382   END IF;
383 
384   IF p_val_tab.val_120 IS NULL THEN
385    p_val_tab.val_120 :=p_dat_tab.val_120;
386   END IF;
387   IF p_val_tab.val_121 IS NULL THEN
388    p_val_tab.val_121 :=p_dat_tab.val_121;
389   END IF;
390   IF p_val_tab.val_122 IS NULL THEN
391    p_val_tab.val_122 :=p_dat_tab.val_122;
392   END IF;
393   IF p_val_tab.val_123 IS NULL THEN
394    p_val_tab.val_123 :=p_dat_tab.val_123;
395   END IF;
396   IF p_val_tab.val_124 IS NULL THEN
397    p_val_tab.val_124 :=p_dat_tab.val_124;
398   END IF;
399   IF p_val_tab.val_125 IS NULL THEN
400    p_val_tab.val_125 :=p_dat_tab.val_125;
401   END IF;
402   IF p_val_tab.val_126 IS NULL THEN
403    p_val_tab.val_126 :=p_dat_tab.val_126;
404   END IF;
405   IF p_val_tab.val_127 IS NULL THEN
406    p_val_tab.val_127 :=p_dat_tab.val_127;
407   END IF;
408   IF p_val_tab.val_128 IS NULL THEN
409    p_val_tab.val_128 :=p_dat_tab.val_128;
410   END IF;
411   IF p_val_tab.val_129 IS NULL THEN
412    p_val_tab.val_129 :=p_dat_tab.val_129;
413   END IF;
414 
415   IF p_val_tab.val_130 IS NULL THEN
416    p_val_tab.val_130 :=p_dat_tab.val_130;
417   END IF;
418   IF p_val_tab.val_131 IS NULL THEN
419    p_val_tab.val_131 :=p_dat_tab.val_131;
420   END IF;
421   IF p_val_tab.val_132 IS NULL THEN
422    p_val_tab.val_132 :=p_dat_tab.val_132;
423   END IF;
424   IF p_val_tab.val_133 IS NULL THEN
425    p_val_tab.val_133 :=p_dat_tab.val_133;
426   END IF;
427   IF p_val_tab.val_134 IS NULL THEN
428    p_val_tab.val_134 :=p_dat_tab.val_134;
429   END IF;
430   IF p_val_tab.val_135 IS NULL THEN
431    p_val_tab.val_135 :=p_dat_tab.val_135;
432   END IF;
433   IF p_val_tab.val_136 IS NULL THEN
434    p_val_tab.val_136 :=p_dat_tab.val_136;
435   END IF;
436   IF p_val_tab.val_137 IS NULL THEN
437    p_val_tab.val_137 :=p_dat_tab.val_137;
438   END IF;
439   IF p_val_tab.val_138 IS NULL THEN
440    p_val_tab.val_138 :=p_dat_tab.val_138;
441   END IF;
442   IF p_val_tab.val_139 IS NULL THEN
443    p_val_tab.val_139 :=p_dat_tab.val_139;
444   END IF;
445 
446   IF p_val_tab.val_140 IS NULL THEN
447    p_val_tab.val_140 :=p_dat_tab.val_140;
448   END IF;
449   IF p_val_tab.val_141 IS NULL THEN
450    p_val_tab.val_141 :=p_dat_tab.val_141;
451   END IF;
452   IF p_val_tab.val_142 IS NULL THEN
453    p_val_tab.val_142 :=p_dat_tab.val_142;
454   END IF;
455   IF p_val_tab.val_143 IS NULL THEN
456    p_val_tab.val_143 :=p_dat_tab.val_143;
457   END IF;
458   IF p_val_tab.val_144 IS NULL THEN
459    p_val_tab.val_144 :=p_dat_tab.val_144;
460   END IF;
461   IF p_val_tab.val_145 IS NULL THEN
462    p_val_tab.val_145 :=p_dat_tab.val_145;
463   END IF;
464   IF p_val_tab.val_146 IS NULL THEN
465    p_val_tab.val_146 :=p_dat_tab.val_146;
466   END IF;
467   IF p_val_tab.val_147 IS NULL THEN
468    p_val_tab.val_147 :=p_dat_tab.val_147;
469   END IF;
470   IF p_val_tab.val_148 IS NULL THEN
471    p_val_tab.val_148 :=p_dat_tab.val_148;
472   END IF;
473   IF p_val_tab.val_149 IS NULL THEN
474    p_val_tab.val_149 :=p_dat_tab.val_149;
475   END IF;
476   IF p_val_tab.val_150 IS NULL THEN
477    p_val_tab.val_150 :=p_dat_tab.val_150;
478   END IF;
479   Hr_Utility.set_location('Leaving: '||l_proc_name, 5);
480 
481 END;
482 --=================================================================
483 --Ins_Rslt_Dtl
484 --================================================================
485 procedure Ins_Rslt_Dtl
486           (p_val_tab     in out NOCOPY ben_ext_rslt_dtl%rowtype
487           ,p_rslt_dtl_id out NOCOPY number
488           ) is
489 
490   l_proc_name   varchar2(150) := g_proc_name||'Ins_Rslt_Dtl';
491   l_dtl_rec_nc  ben_ext_rslt_dtl%rowtype;
492 
493 begin -- ins_rslt_dtl
494   Hr_Utility.set_location('Entering :'||l_proc_name, 5);
495   -- nocopy changes
496   --l_dtl_rec_nc := p_dtl_rec;
497   -- Get the next sequence NUMBER to insert a record into the table
498   select ben_ext_rslt_dtl_s.nextval into p_val_tab.ext_rslt_dtl_id from dual;
499   insert into ben_ext_rslt_dtl
500   (ext_rslt_dtl_id
501   ,ext_rslt_id
502   ,business_group_id
503   ,ext_rcd_id
504   ,person_id
505   ,val_01
506   ,val_02
507   ,val_03
508   ,val_04
509   ,val_05
510   ,val_06
511   ,val_07
512   ,val_08
513   ,val_09
514   ,val_10
515   ,val_11
516   ,val_12
517   ,val_13
518   ,val_14
519   ,val_15
520   ,val_16
521   ,val_17
522   ,val_19
523   ,val_18
524   ,val_20
525   ,val_21
526   ,val_22
527   ,val_23
528   ,val_24
529   ,val_25
530   ,val_26
531   ,val_27
532   ,val_28
533   ,val_29
534   ,val_30
535   ,val_31
536   ,val_32
537   ,val_33
538   ,val_34
539   ,val_35
540   ,val_36
541   ,val_37
542   ,val_38
543   ,val_39
544   ,val_40
545   ,val_41
546   ,val_42
547   ,val_43
548   ,val_44
549   ,val_45
550   ,val_46
551   ,val_47
552   ,val_48
553   ,val_49
554   ,val_50
555   ,val_51
556   ,val_52
557   ,val_53
558   ,val_54
559   ,val_55
560   ,val_56
561   ,val_57
562   ,val_58
563   ,val_59
564   ,val_60
565   ,val_61
566   ,val_62
567   ,val_63
568   ,val_64
569   ,val_65
570   ,val_66
571   ,val_67
572   ,val_68
573   ,val_69
574   ,val_70
575   ,val_71
576   ,val_72
577   ,val_73
578   ,val_74
579   ,val_75
580   ,val_76
581   ,val_77
582   ,val_78
583   ,val_79
584   ,val_80
585   ,val_81
586   ,val_82
587   ,val_83
588   ,val_84
589   ,val_85
590   ,val_86
591   ,val_87
592   ,val_88
593   ,val_89
594   ,val_90
595   ,val_91
596   ,val_92
597   ,val_93
598   ,val_94
599   ,val_95
600   ,val_96
601   ,val_97
602   ,val_98
603   ,val_99
604   ,val_100
605   ,val_101
606   ,val_102
607   ,val_103
608   ,val_104
609   ,val_105
610   ,val_106
611   ,val_107
612   ,val_108
613   ,val_109
614   ,val_110
615   ,val_111
616   ,val_112
617   ,val_113
618   ,val_114
619   ,val_115
620   ,val_116
621   ,val_117
622   ,val_118
623   ,val_119
624   ,val_120
625   ,val_121
626   ,val_122
627   ,val_123
628   ,val_124
629   ,val_125
630   ,val_126
631   ,val_127
632   ,val_128
633   ,val_129
634   ,val_130
635   ,val_131
636   ,val_132
637   ,val_133
638   ,val_134
639   ,val_135
640   ,val_136
641   ,val_137
642   ,val_138
643   ,val_139
644   ,val_140
645   ,val_141
646   ,val_142
647   ,val_143
648   ,val_144
649   ,val_145
650   ,val_146
651   ,val_147
652   ,val_148
653   ,val_149
654   ,val_150
655   ,created_by
656   ,creation_date
657   ,last_update_date
658   ,last_updated_by
659   ,last_update_login
660   ,program_application_id
661   ,program_id
662   ,program_update_date
663   ,request_id
664   ,object_version_number
665   ,prmy_sort_val
666   ,scnd_sort_val
667   ,thrd_sort_val
668   ,trans_seq_num
669   ,rcrd_seq_num
670   )
671   values
672   (p_val_tab.ext_rslt_dtl_id
673   ,p_val_tab.ext_rslt_id
674   ,p_val_tab.business_group_id
675   ,p_val_tab.ext_rcd_id
676   ,p_val_tab.person_id
677   ,p_val_tab.val_01
678   ,p_val_tab.val_02
679   ,p_val_tab.val_03
680   ,p_val_tab.val_04
681   ,p_val_tab.val_05
682   ,p_val_tab.val_06
683   ,p_val_tab.val_07
684   ,p_val_tab.val_08
685   ,p_val_tab.val_09
686   ,p_val_tab.val_10
687   ,p_val_tab.val_11
688   ,p_val_tab.val_12
689   ,p_val_tab.val_13
690   ,p_val_tab.val_14
691   ,p_val_tab.val_15
692   ,p_val_tab.val_16
693   ,p_val_tab.val_17
694   ,p_val_tab.val_18
695   ,p_val_tab.val_19
696   ,p_val_tab.val_20
697   ,p_val_tab.val_21
698   ,p_val_tab.val_22
699   ,p_val_tab.val_23
700   ,p_val_tab.val_24
701   ,p_val_tab.val_25
702   ,p_val_tab.val_26
703   ,p_val_tab.val_27
704   ,p_val_tab.val_28
705   ,p_val_tab.val_29
706   ,p_val_tab.val_30
707   ,p_val_tab.val_31
708   ,p_val_tab.val_32
709   ,p_val_tab.val_33
710   ,p_val_tab.val_34
711   ,p_val_tab.val_35
712   ,p_val_tab.val_36
713   ,p_val_tab.val_37
714   ,p_val_tab.val_38
715   ,p_val_tab.val_39
716   ,p_val_tab.val_40
717   ,p_val_tab.val_41
718   ,p_val_tab.val_42
719   ,p_val_tab.val_43
720   ,p_val_tab.val_44
721   ,p_val_tab.val_45
722   ,p_val_tab.val_46
723   ,p_val_tab.val_47
724   ,p_val_tab.val_48
725   ,p_val_tab.val_49
726   ,p_val_tab.val_50
727   ,p_val_tab.val_51
728   ,p_val_tab.val_52
729   ,p_val_tab.val_53
730   ,p_val_tab.val_54
731   ,p_val_tab.val_55
732   ,p_val_tab.val_56
733   ,p_val_tab.val_57
734   ,p_val_tab.val_58
735   ,p_val_tab.val_59
736   ,p_val_tab.val_60
737   ,p_val_tab.val_61
738   ,p_val_tab.val_62
739   ,p_val_tab.val_63
740   ,p_val_tab.val_64
741   ,p_val_tab.val_65
742   ,p_val_tab.val_66
743   ,p_val_tab.val_67
744   ,p_val_tab.val_68
745   ,p_val_tab.val_69
746   ,p_val_tab.val_70
747   ,p_val_tab.val_71
748   ,p_val_tab.val_72
749   ,p_val_tab.val_73
750   ,p_val_tab.val_74
751   ,p_val_tab.val_75
752   ,p_val_tab.val_76
753   ,p_val_tab.val_77
754   ,p_val_tab.val_78
755   ,p_val_tab.val_79
756   ,p_val_tab.val_80
757   ,p_val_tab.val_81
758   ,p_val_tab.val_82
759   ,p_val_tab.val_83
760   ,p_val_tab.val_84
761   ,p_val_tab.val_85
762   ,p_val_tab.val_86
763   ,p_val_tab.val_87
764   ,p_val_tab.val_88
765   ,p_val_tab.val_89
766   ,p_val_tab.val_90
767   ,p_val_tab.val_91
768   ,p_val_tab.val_92
769   ,p_val_tab.val_93
770   ,p_val_tab.val_94
771   ,p_val_tab.val_95
772   ,p_val_tab.val_96
773   ,p_val_tab.val_97
774   ,p_val_tab.val_98
775   ,p_val_tab.val_99
776   ,p_val_tab.val_100
777   ,p_val_tab.val_101
778   ,p_val_tab.val_102
779   ,p_val_tab.val_103
780   ,p_val_tab.val_104
781   ,p_val_tab.val_105
782   ,p_val_tab.val_106
783   ,p_val_tab.val_107
784   ,p_val_tab.val_108
785   ,p_val_tab.val_109
786   ,p_val_tab.val_110
787   ,p_val_tab.val_111
788   ,p_val_tab.val_112
789   ,p_val_tab.val_113
790   ,p_val_tab.val_114
791   ,p_val_tab.val_115
792   ,p_val_tab.val_116
793   ,p_val_tab.val_117
794   ,p_val_tab.val_118
795   ,p_val_tab.val_119
796   ,p_val_tab.val_120
797   ,p_val_tab.val_121
798   ,p_val_tab.val_122
799   ,p_val_tab.val_123
800   ,p_val_tab.val_124
801   ,p_val_tab.val_125
802   ,p_val_tab.val_126
803   ,p_val_tab.val_127
804   ,p_val_tab.val_128
805   ,p_val_tab.val_129
806   ,p_val_tab.val_130
807   ,p_val_tab.val_131
808   ,p_val_tab.val_132
809   ,p_val_tab.val_133
810   ,p_val_tab.val_134
811   ,p_val_tab.val_135
812   ,p_val_tab.val_136
813   ,p_val_tab.val_137
814   ,p_val_tab.val_138
815   ,p_val_tab.val_139
816   ,p_val_tab.val_140
817   ,p_val_tab.val_141
818   ,p_val_tab.val_142
819   ,p_val_tab.val_143
820   ,p_val_tab.val_144
821   ,p_val_tab.val_145
822   ,p_val_tab.val_146
823   ,p_val_tab.val_147
824   ,p_val_tab.val_148
825   ,p_val_tab.val_149
826   ,p_val_tab.val_150
827   ,p_val_tab.created_by
828   ,p_val_tab.creation_date
829   ,p_val_tab.last_update_date
830   ,p_val_tab.last_updated_by
831   ,p_val_tab.last_update_login
832   ,p_val_tab.program_application_id
833   ,p_val_tab.program_id
834   ,p_val_tab.program_update_date
835   ,p_val_tab.request_id
836   ,p_val_tab.object_version_number
837   ,p_val_tab.prmy_sort_val
838   ,p_val_tab.scnd_sort_val
839   ,p_val_tab.thrd_sort_val
840   ,p_val_tab.trans_seq_num
841   ,p_val_tab.rcrd_seq_num
842   );
843   Hr_Utility.set_location('Leaving :'||l_proc_name, 25);
844   return;
845 
846 exception
847   when Others then
848     Hr_Utility.set_location('Leaving - Error :'||sqlerrm|| l_proc_name, 25);
849     --p_dtl_rec := l_dtl_rec_nc;
850     raise;
851 end Ins_Rslt_Dtl;
852 ---============================================================================
853 --PROCEDURE chk_dual_action
854 ---===========================================================================
855 PROCEDURE chk_dual_action (p_request_id  IN NUMBER
856                           ,p_rslt_id     IN NUMBER
857                           )
858 IS
859 
860 CURSOR c_get_dual_action (cp_request_id  NUMBER
861                          ,cp_rslt_id     NUMBER
862                           )
863 IS
864 SELECT  COUNT (person_id) cnt
865   FROM ben_ext_rslt_dtl berd
866  WHERE berd.request_id =cp_request_id
867    AND berd.ext_rslt_id =cp_rslt_id
868    AND berd.val_29      ='352'
869    AND berd.val_30      ='825'
870    AND berd.val_03      ='063';
871 
872 l_rslt_dtl     ben_ext_rslt_dtl%ROWTYPE;
873 l_count        NUMBER;
874 l_proc_name     Varchar2(150) := g_proc_name ||'.chk_dual_action';
875 BEGIN
876  Hr_Utility.set_location('Entering :'||l_proc_name, 5);
877  OPEN c_get_dual_action (p_request_id
878                         ,p_rslt_id
879                          );
880  FETCH c_get_dual_action INTO l_count;
881  CLOSE c_get_dual_action;
882  Hr_Utility.set_location('l_count: '||l_count, 5);
883 
884  IF l_count > 0 THEN
885   UPDATE ben_ext_rslt_dtl berd
886      SET berd.val_30 = NULL
887    WHERE berd.request_id =p_request_id
888      AND berd.ext_rslt_id =p_rslt_id
889      AND berd.val_29      ='352'
890      AND berd.val_30      ='825'
891      AND berd.val_03      ='063' ;
892  END IF;
893  Hr_Utility.set_location('Leaving :'||l_proc_name, 5);
894 
895 END;
896 
897 ---============================================================================
898 --PROCEDURE chk_same_day_act
899 --This procedure checks for the original action and correction occured
900 --on the same day.
901 --When the original action is corrected, the report should have only one row
902 --with original action but having the corrected value.
903 --If the origibnal action is cancelled, then both the rows are not sent.
904 ---===========================================================================
905 PROCEDURE chk_same_day_act_nfc (p_request_id  IN NUMBER
906                            ,p_rslt_id     IN NUMBER
907                            )
908 IS
909 CURSOR c_chk_dup_action (cp_request_id NUMBER
910                          ,cp_rslt_id     NUMBER
911                          )
912 IS
913 SELECT berd.*
914   FROM  ben_ext_rslt_dtl berd
915        ,ben_ext_rslt_dtl berd1
916  WHERE berd.request_id  =cp_request_id
917    AND berd.request_id  =berd1.request_id
918    AND berd.ext_rslt_id =cp_rslt_id
919    AND berd.ext_rslt_id =berd1.ext_rslt_id
920    AND ( (berd.val_03   ='063'
921    AND berd.val_03      =berd1.val_03
922    AND  berd.val_30     =berd1.val_29
923    AND berd.val_29      IN ('001','002')
924    AND berd.val_150     =berd1.val_01)
925     OR (berd.val_03     ='110'
926    AND berd.val_03      =berd1.val_03
927    AND  berd.val_30     =berd1.val_30
928    AND berd.val_38      IN ('001','002')
929    AND berd.val_55      =berd1.val_01)
930    )
931    ORDER BY berd.person_id;
932 
933 CURSOR c_get_dup_act (cp_pa_req_id NUMBER
934                       ,cp_alt_req_id NUMBER
935                      ,cp_date      DATE
936                       )
937 IS
938 SELECT *
939  FROM ghr_pa_requests gpa
940 WHERE pa_request_id=cp_alt_req_id;
941 
942 CURSOR c_chk_same_action (cp_request_id NUMBER
943                          ,cp_rslt_id     NUMBER
944                          )
945 IS
946 SELECT berd.*
947   FROM  ben_ext_rslt_dtl berd
948        ,ben_ext_rslt_dtl berd1
949  WHERE berd.request_id  =cp_request_id
950    AND berd.request_id  =berd1.request_id
951    AND berd.ext_rslt_id =cp_rslt_id
952    AND berd.ext_rslt_id =berd1.ext_rslt_id
953    AND ( (berd.val_03   ='063'
954    AND berd.val_03      =berd1.val_03
955    AND  berd.val_30     =berd1.val_29
956    AND berd.val_29      IN ('001','002')
957    AND berd.val_150     =berd1.val_01)
958     OR (berd.val_03     ='110'
959    AND berd.val_03      =berd1.val_03
960    AND  berd.val_30     =berd1.val_30
961    AND berd.val_38      IN ('001','002')
962    AND berd.val_55      =berd1.val_01)
963    )
964    ORDER BY berd.person_id;
965 
966 CURSOR c_get_orig_action_pa (cp_request_id    NUMBER
967                             ,cp_rslt_id       NUMBER
968                             ,cp_person_id     NUMBER
969                             ,cp_noa           VARCHAR2
970                             ,cp_pa_request_id VARCHAR2
971                            )
972 IS
973 SELECT *
974   FROM ben_ext_rslt_dtl berd
975  WHERE berd.request_id  =cp_request_id
976    AND berd.ext_rslt_id =cp_rslt_id
977    AND berd.val_03   ='063'
978    AND berd.person_id=cp_person_id
979    AND berd.val_29 =cp_noa
980    AND berd.val_01=cp_pa_request_id;
981 
982 CURSOR c_get_orig_action_aw(cp_request_id    NUMBER
983                             ,cp_rslt_id       NUMBER
984                             ,cp_person_id     NUMBER
985                             ,cp_noa           VARCHAR2
986                             ,cp_pa_request_id VARCHAR2
987                            )
988 IS
989 SELECT *
990   FROM ben_ext_rslt_dtl berd
991  WHERE berd.request_id  =cp_request_id
992    AND berd.ext_rslt_id =cp_rslt_id
993    AND berd.val_03   ='110'
994    AND berd.person_id=cp_person_id
995    AND berd.val_30 =cp_noa
996    AND berd.val_01=cp_pa_request_id;
997 
998 l_chk_dup_action   c_chk_dup_action%ROWTYPE;
999 l_get_dup_act      c_get_dup_act%ROWTYPE;
1000 l_get_orig_action_pa c_get_orig_action_pa%ROWTYPE;
1001 l_get_orig_action_aw  c_get_orig_action_aw%ROWTYPE;
1002 l_flg    VARCHAR2(1);
1003 l_chk_same_action c_chk_same_action%ROWTYPE;
1004 l_person_id   NUMBER;
1005 l_rslt_dtl    ben_ext_rslt_dtl%ROWTYPE;
1006 l_rslt        NUMBER;
1007 TYPE t_rslt_dtl IS TABLE OF ben_ext_rslt_dtl%ROWTYPE
1008      INDEX BY BINARY_INTEGER;
1009 l_rslt_dtl_pa  t_rslt_dtl;
1010 l_rslt_dtl_aw  t_rslt_dtl;
1011 l_rslt_dtl_tmp  t_rslt_dtl;
1012 l_count   NUMBER;
1013 l_upd_flg  VARCHAR2(1);
1014 l_proc_name     Varchar2(150) := g_proc_name ||'.chk_same_day_act';
1015 
1016 BEGIN
1017   Hr_Utility.set_location('Entering :'||l_proc_name, 5);
1018 
1019  OPEN c_chk_dup_action (p_request_id
1020                          ,p_rslt_id
1021                          );
1022  LOOP
1023   FETCH c_chk_dup_action INTO l_chk_dup_action;
1024   EXIT WHEN c_chk_dup_action%NOTFOUND;
1025    OPEN c_get_dup_act (l_chk_dup_action.val_01
1026                        ,l_chk_dup_action.val_150
1027                        ,ghr_us_nfc_extracts.g_ext_start_dt
1028                       );
1029     FETCH c_get_dup_act INTO l_get_dup_act;
1030 
1031 /*The extract pulls two records when the correction is done for
1032   the original action, one of orginial and other one of correction.
1033   since the orginal action would have already been transmitted
1034   if it both actions have not happened on the same day.
1035   Since we dont need to send the original action, it has to be
1036   deleted and the only way to know that the original action
1037   has been created before the current tranmission date is to look at
1038   approval date.
1039   Caveat is there could be an approval date for future action and
1040   this may happen in a very rare case.
1041 */
1042     IF TRUNC(l_get_dup_act.approval_date) < ghr_us_nfc_extracts.g_ext_start_dt THEN
1043      DELETE from  ben_ext_rslt_dtl berd
1044       WHERE berd.request_id=p_request_id
1045         AND berd.ext_rslt_id=p_rslt_id
1046         AND berd.person_id=l_chk_dup_action.person_id
1047         AND berd.Val_01 = l_chk_dup_action.val_150;
1048 
1049     END IF;
1050    CLOSE c_get_dup_act;
1051  END LOOP;
1052  CLOSE c_chk_dup_action;
1053 
1054  l_upd_flg :='N';
1055  l_count :=0;
1056  l_person_id:=-1;
1057  l_flg :='O';
1058  OPEN c_chk_same_action (p_request_id
1059                          ,p_rslt_id
1060                          );
1061  LOOP
1062  FETCH c_chk_same_action INTO l_chk_same_action;
1063  EXIT WHEN c_chk_same_action%NOTFOUND;
1064 
1065   IF l_person_id =-1 THEN
1066    l_person_id:=l_chk_same_action.person_id;
1067   END IF;
1068 
1069   IF l_chk_same_action.val_03 ='063' THEN
1070    l_rslt_dtl_pa(l_rslt_dtl_pa.count+1) := l_chk_same_action;
1071   ELSIF l_chk_same_action.val_03 ='110' THEN
1072    l_rslt_dtl_aw(l_rslt_dtl_aw.count+1) := l_chk_same_action;
1073   END IF;
1074 
1075   IF l_chk_same_action.person_id <> l_person_id THEN
1076    FOR i in 1..l_rslt_dtl_pa.count
1077    LOOP
1078     IF  l_rslt_dtl_pa(i).val_29='001' THEN
1079      DELETE from  ben_ext_rslt_dtl berd
1080       WHERE berd.request_id=p_request_id
1081         AND berd.ext_rslt_id=p_rslt_id
1082         AND berd.person_id=l_person_id
1083         AND (berd.Val_150 = l_rslt_dtl_pa(i).val_150
1084              OR berd.val_29=l_rslt_dtl_pa(i).val_150);
1085 
1086 
1087     ELSIF  l_rslt_dtl_pa(i).val_29='002'  THEN
1088      FOR j in 1..l_rslt_dtl_tmp.count
1089      LOOP
1090       IF l_rslt_dtl_tmp(j).val_150 =l_rslt_dtl_pa(i).val_150 THEN
1091        upd_Rslt_Dtl
1092           (p_val_tab     =>l_rslt_dtl_tmp(j)
1093           ,p_dat_tab =>l_rslt_dtl_pa(i)
1094           ) ;
1095 
1096        l_rslt_dtl_tmp(j).val_111:=l_rslt_dtl_pa(i).val_111;
1097        l_upd_flg :='Y' ;
1098       END IF;
1099      END LOOP;
1100      IF l_upd_flg='N' THEN
1101       l_rslt_dtl_tmp(l_rslt_dtl_tmp.count+1):=l_rslt_dtl_pa(i);
1102      END IF;
1103     END IF;
1104     l_upd_flg:='N';
1105    END LOOP;
1106 
1107 
1108    FOR k in 1..l_rslt_dtl_tmp.count
1109    LOOP
1110     OPEN c_get_orig_action_pa (p_request_id
1111                             ,p_rslt_id
1112                             ,l_rslt_dtl_tmp(k).person_id
1113                             ,l_rslt_dtl_tmp(k).val_29
1114                             ,l_rslt_dtl_tmp(k).val_150
1115                            );
1116     FETCH c_get_orig_action_pa INTO l_rslt_dtl;
1117      upd_Rslt_Dtl
1118       (p_val_tab     =>l_rslt_dtl_tmp(k)
1119       ,p_dat_tab =>l_rslt_dtl
1120       ) ;
1121      ins_Rslt_Dtl
1122       (p_val_tab     =>l_rslt_dtl_tmp(k)
1123       ,p_rslt_dtl_id =>l_rslt
1124       ) ;
1125     CLOSE c_get_orig_action_pa;
1126     DELETE from ben_ext_rslt_dtl berd
1127      WHERE berd.ext_rslt_dtl_id IN (l_rslt_dtl.ext_rslt_dtl_id
1128                                   ,l_rslt_dtl_tmp(k).ext_rslt_dtl_id);
1129    END LOOP;
1130 
1131    IF l_rslt_dtl_pa.count > 0 THEN
1132    l_rslt_dtl_pa.delete;
1133    END IF;
1134    IF l_rslt_dtl_tmp.count > 0 THEN
1135     l_rslt_dtl_tmp.delete;
1136    END IF;
1137 
1138 
1139  Hr_Utility.set_location('Check for award duplicate row', 5);
1140 
1141    ---Check for award duplicate row
1142    FOR i in 1..l_rslt_dtl_aw.count
1143    LOOP
1144     IF  l_rslt_dtl_aw(i).val_38='001' THEN
1145      DELETE from  ben_ext_rslt_dtl berd
1146       WHERE berd.request_id=p_request_id
1147         AND berd.ext_rslt_id=p_rslt_id
1148         AND berd.person_id=l_person_id
1149         AND (berd.Val_55 = l_rslt_dtl_aw(i).val_55
1150              OR berd.val_38=l_rslt_dtl_aw(i).val_55);
1151 
1152 
1153     ELSIF  l_rslt_dtl_aw(i).val_38='002'  THEN
1154      FOR j in 1..l_rslt_dtl_tmp.count
1155      LOOP
1156       IF l_rslt_dtl_tmp(j).val_55 =l_rslt_dtl_aw(i).val_55 THEN
1157        upd_Rslt_Dtl
1158           (p_val_tab     =>l_rslt_dtl_tmp(j)
1159           ,p_dat_tab =>l_rslt_dtl_aw(i)
1160           ) ;
1161        l_rslt_dtl_tmp(j).val_49 :=l_rslt_dtl_aw(i).val_49;
1162        l_upd_flg :='Y' ;
1163       END IF;
1164       IF l_upd_flg='N' THEN
1165       l_rslt_dtl_tmp(l_rslt_dtl_tmp.count+1):=l_rslt_dtl_aw(i);
1166       END IF;
1167      END LOOP;
1168     END IF;
1169     l_upd_flg:='N';
1170    END LOOP;
1171 
1172    FOR k in 1..l_rslt_dtl_tmp.count
1173    LOOP
1174     OPEN c_get_orig_action_pa (p_request_id
1175                             ,p_rslt_id
1176                             ,l_rslt_dtl_tmp(k).person_id
1177                             ,l_rslt_dtl_tmp(k).val_38
1178                             ,l_rslt_dtl_tmp(k).val_55
1179                            );
1180     FETCH c_get_orig_action_pa INTO l_rslt_dtl;
1181      upd_Rslt_Dtl
1182         (p_val_tab     =>l_rslt_dtl_tmp(k)
1183         ,p_dat_tab     =>l_rslt_dtl
1184          ) ;
1185 
1186      ins_Rslt_Dtl
1187         (p_val_tab     =>l_rslt_dtl_tmp(k)
1188         ,p_rslt_dtl_id =>l_rslt
1189         ) ;
1190 
1191     CLOSE c_get_orig_action_pa;
1192     DELETE from ben_ext_rslt_dtl berd
1193      WHERE berd.ext_rslt_dtl_id IN (l_rslt_dtl.ext_rslt_dtl_id
1194                                    ,l_rslt_dtl_tmp(k).ext_rslt_dtl_id);
1195 
1196    END LOOP;
1197    IF l_rslt_dtl_aw.count > 0 THEN
1198    l_rslt_dtl_aw.delete;
1199    END IF;
1200    IF l_rslt_dtl_tmp.count > 0 THEN
1201     l_rslt_dtl_tmp.delete;
1202    END IF;
1203   END IF;
1204 
1205   IF l_person_id<> l_chk_same_action.person_id THEN
1206    l_person_id:=l_chk_same_action.person_id;
1207    l_count :=0;
1208   END IF;
1209  END LOOP;
1210  CLOSE c_chk_same_action;
1211 
1212  Hr_Utility.set_location('check for remaining data', 5);
1213 ----check for remaining data
1214  IF l_rslt_dtl_pa.count > 0 THEN
1215   FOR i in 1..l_rslt_dtl_pa.count
1216    LOOP
1217     IF  l_rslt_dtl_pa(i).val_29='001' THEN
1218      DELETE from  ben_ext_rslt_dtl berd
1219       WHERE berd.request_id=p_request_id
1220         AND berd.ext_rslt_id=p_rslt_id
1221         AND berd.person_id=l_person_id
1222         AND (berd.Val_150 = l_rslt_dtl_pa(i).val_150
1223              OR berd.val_01=l_rslt_dtl_pa(i).val_150);
1224 
1225 
1226     ELSIF  l_rslt_dtl_pa(i).val_29='002'  THEN
1227      FOR j in 1..l_rslt_dtl_tmp.count
1228      LOOP
1229       IF l_rslt_dtl_tmp(j).val_150 =l_rslt_dtl_pa(i).val_150 THEN
1230        upd_Rslt_Dtl
1231           (p_val_tab     =>l_rslt_dtl_tmp(j)
1232           ,p_dat_tab =>l_rslt_dtl_pa(i)
1233           ) ;
1234        l_rslt_dtl_tmp(j).val_111:=l_rslt_dtl_pa(i).val_111;
1235        l_upd_flg :='Y' ;
1236       END IF;
1237      END LOOP;
1238      IF l_upd_flg='N' THEN
1239       l_rslt_dtl_tmp(l_rslt_dtl_tmp.count+1):=l_rslt_dtl_pa(i);
1240      END IF;
1241     END IF;
1242     l_upd_flg:='N';
1243    END LOOP;
1244  FOR k in 1..l_rslt_dtl_tmp.count
1245    LOOP
1246     OPEN c_get_orig_action_pa (p_request_id
1247                             ,p_rslt_id
1248                             ,l_rslt_dtl_tmp(k).person_id
1249                             ,l_rslt_dtl_tmp(k).val_30
1250                             ,l_rslt_dtl_tmp(k).val_150
1251                            );
1252     FETCH c_get_orig_action_pa INTO l_rslt_dtl;
1253      upd_Rslt_Dtl
1254       (p_val_tab     =>l_rslt_dtl_tmp(k)
1255       ,p_dat_tab =>l_rslt_dtl
1256       ) ;
1257      l_rslt_dtl_tmp(k).val_29:=l_rslt_dtl_tmp(k).val_30;
1258      l_rslt_dtl_tmp(k).val_30:=NULL;
1259      l_rslt_dtl_tmp(k).val_150:=NULL;
1260 
1261      ins_Rslt_Dtl
1262       (p_val_tab     =>l_rslt_dtl_tmp(k)
1263       ,p_rslt_dtl_id =>l_rslt
1264       ) ;
1265     CLOSE c_get_orig_action_pa;
1266     DELETE from ben_ext_rslt_dtl berd
1267      WHERE (berd.ext_rslt_dtl_id IN (l_rslt_dtl.ext_rslt_dtl_id)
1268        OR berd.val_150 =l_rslt_dtl.val_01)
1269        AND berd.ext_rslt_dtl_id NOT IN (
1270                                   l_rslt_dtl_tmp(k).ext_rslt_dtl_id);
1271    END LOOP;
1272 
1273    IF l_rslt_dtl_pa.count > 0 THEN
1274    l_rslt_dtl_pa.delete;
1275    END IF;
1276    IF l_rslt_dtl_tmp.count > 0 THEN
1277     l_rslt_dtl_tmp.delete;
1278    END IF;
1279  END IF;
1280  IF l_rslt_dtl_aw.count > 0 THEN
1281   FOR i in 1..l_rslt_dtl_aw.count
1282    LOOP
1283     IF  l_rslt_dtl_aw(i).val_38='001' THEN
1284      DELETE from  ben_ext_rslt_dtl berd
1285       WHERE berd.request_id=p_request_id
1286         AND berd.ext_rslt_id=p_rslt_id
1287         AND berd.person_id=l_person_id
1288         AND (berd.Val_55 = l_rslt_dtl_aw(i).val_55
1289              OR berd.val_38=l_rslt_dtl_aw(i).val_55);
1290 
1291 
1292     ELSIF  l_rslt_dtl_aw(i).val_38='002'  THEN
1293      FOR j in 1..l_rslt_dtl_tmp.count
1294      LOOP
1295       IF l_rslt_dtl_tmp(j).val_55 =l_rslt_dtl_aw(i).val_55 THEN
1296        upd_Rslt_Dtl
1297           (p_val_tab     =>l_rslt_dtl_tmp(j)
1298           ,p_dat_tab =>l_rslt_dtl_aw(i)
1299           ) ;
1300        l_rslt_dtl_tmp(j).val_49:=l_rslt_dtl_aw(i).val_49;
1301        l_upd_flg :='Y' ;
1302       END IF;
1303       IF l_upd_flg='N' THEN
1304        l_rslt_dtl_tmp(l_rslt_dtl_tmp.count+1):=l_rslt_dtl_aw(i);
1305       END IF;
1306      END LOOP;
1307     END IF;
1308       l_upd_flg:='N';
1309    END LOOP;
1310  FOR k in 1..l_rslt_dtl_tmp.count
1311    LOOP
1312     OPEN c_get_orig_action_pa (p_request_id
1313                             ,p_rslt_id
1314                             ,l_rslt_dtl_tmp(k).person_id
1315                             ,l_rslt_dtl_tmp(k).val_38
1316                             ,l_rslt_dtl_tmp(k).val_55
1317                            );
1318     FETCH c_get_orig_action_pa INTO l_rslt_dtl;
1319      upd_Rslt_Dtl
1320         (p_val_tab     =>l_rslt_dtl_tmp(k)
1321         ,p_dat_tab     =>l_rslt_dtl
1322          ) ;
1323 
1324      ins_Rslt_Dtl
1325         (p_val_tab     =>l_rslt_dtl_tmp(k)
1326         ,p_rslt_dtl_id =>l_rslt
1327         ) ;
1328 
1329     CLOSE c_get_orig_action_pa;
1330     DELETE from ben_ext_rslt_dtl berd
1331      WHERE berd.ext_rslt_dtl_id IN (l_rslt_dtl.ext_rslt_dtl_id
1332                                    ,l_rslt_dtl_tmp(k).ext_rslt_dtl_id);
1333 
1334    END LOOP;
1335    IF l_rslt_dtl_aw.count > 0 THEN
1336    l_rslt_dtl_aw.delete;
1337    END IF;
1338    IF l_rslt_dtl_tmp.count > 0 THEN
1339     l_rslt_dtl_tmp.delete;
1340    END IF;
1341  END IF;
1342 -------
1343   Hr_Utility.set_location('Leaving :'||l_proc_name, 5);
1344 
1345 END;
1346 
1347 
1348 
1349 
1350 
1351 
1352 ---============================================================================
1353 --PROCEDURE chk_for_err_data_pa
1354 --Check if the error data is present in the error table and then does series
1355 --of checks to see if the error data has been included or not, if included it checks
1356 --for the nature of action code .
1357 ---===========================================================================
1358 PROCEDURE chk_for_err_data_pa (p_request_id     IN NUMBER
1359                                 ,p_rslt_id        IN NUMBER
1360                                )
1361 IS
1362 
1363 CURSOR c_chk_err_exist
1364 IS
1365 SELECT count(err_doc_type) cnt
1366       ,gpid.err_doc_type doc_typ
1367   FROM ghr_pa_interface_err_dtls gpid
1368  WHERE gpid.err_doc_type IN ('063','110','347')
1369 
1370 GROUP BY gpid.err_doc_type;
1371 
1372 
1373 CURSOR c_chk_add_in_file
1374 IS
1375 SELECT gpid.person_id
1376       ,gpid.result_dtl_id
1377       ,gpid.result_id
1378       ,gpid.ext_request_id
1379 	  ,gpid.pa_interface_err_dtl_id
1380  FROM  ghr_pa_interface_err_dtls gpid
1381 WHERE  gpid.err_doc_type='347'
1382   AND  NOT EXISTS
1383   (SELECT 'Xl'
1384     FROM ben_ext_rslt_dtl berd
1385    WHERE berd.person_id=gpid.person_id
1386      AND berd.val_03=gpid.err_doc_type
1387      AND berd.request_id=p_request_id
1388      AND berd.ext_rslt_id=p_rslt_id);
1389 
1390 
1391 ---get previous value from the ext result for address
1392 
1393 CURSOR c_get_prev_val_add (cp_person_id     NUMBER
1394                           ,cp_result_dtl_id NUMBER
1395                           ,cp_request_id    NUMBER
1396                           ,cp_rslt_id       NUMBER
1397                           )
1398 IS
1399 SELECT *
1400   FROM  ben_ext_rslt_dtl berd
1401  WHERE berd.person_id=cp_person_id
1402    AND berd.ext_rslt_dtl_id = cp_result_dtl_id
1403    AND berd.val_03='347'
1404    AND berd.request_id=cp_request_id
1405    AND berd.ext_rslt_id=cp_rslt_id;
1406 
1407 --check for pers action
1408 CURSOR c_chk_data_in_file (cp_doc_typ  VARCHAR2)
1409 IS
1410 SELECT gpid.person_id
1411       ,gpid.ext_request_id
1412       ,gpid.result_id
1413       ,gpid.result_dtl_id
1414       ,gpid.record_id
1415       ,gpid.pa_request_id
1416       ,gpid.err_doc_type
1417       ,gpid.err_ssn_no
1418       ,gpid.err_agency
1419       ,gpid.err_dept_code
1420       ,gpid.nat_act_1st_3_pos
1421       ,gpid.nat_act_2nd_3_pos
1422       ,gpid.alt_pa_request_id
1423       ,gpid.err_eff_dt
1424       ,gpid.err_auth_dt
1425       ,NULL request_id
1426       ,NULL alt_req_id
1427       ,NULL  noa1
1428       ,NULL  noa2
1429       ,NULL  ext_rslt_dtl_id
1430       ,NULL  ex_ssno
1431       ,NULL ex_eff_dt
1432       ,NULL ex_auth_dt
1433       ,NULL ex_agncy
1434       ,NULL dept_code
1435       ,NULL ext_doc_typ
1436       ,NULL business_group_id
1437       ,'N' identifier
1438 	  ,gpid.pa_interface_err_dtl_id
1439  FROM ghr_pa_interface_err_dtls gpid
1440  WHERE gpid.err_doc_type=cp_doc_typ
1441    AND  NOT EXISTS
1442  (SELECT 'X'
1443     FROM ben_ext_rslt_dtl berd
1444   WHERE gpid.person_id=berd.person_id
1445    AND gpid.err_doc_type=berd.val_03
1446   AND (gpid.nat_act_1st_3_pos = berd.val_29
1447    OR gpid.nat_act_1st_3_pos=berd.val_30 )
1448   AND berd.ext_rcd_id=gpid.record_id
1449   AND gpid.pa_request_id=NVL(berd.val_150,gpid.pa_request_id)
1450   AND berd.request_id=p_request_id
1451   AND berd.ext_rslt_id=p_rslt_id
1452   )
1453 UNION
1454 SELECT gpid.person_id
1455       ,gpid.ext_request_id
1456       ,gpid.result_id
1457       ,gpid.result_dtl_id
1458       ,gpid.record_id
1459       ,gpid.pa_request_id
1460       ,gpid.err_doc_type
1461       ,gpid.err_ssn_no
1462       ,gpid.err_agency
1463       ,gpid.err_dept_code
1464       ,gpid.nat_act_1st_3_pos
1465       ,gpid.nat_act_2nd_3_pos
1466       ,gpid.alt_pa_request_id
1467       ,gpid.err_eff_dt
1468       ,gpid.err_auth_dt
1469       ,berd.request_id
1470       ,berd.val_150 alt_req_id
1471       ,berd.val_29  noa1
1472       ,berd.val_30  noa2
1473       ,berd.ext_rslt_dtl_id ext_rslt_dtl_id
1474       ,val_07 ex_ssno
1475       ,val_34 ex_eff_dt
1476       ,val_111 ex_auth_dt
1477       ,val_04 ex_agncy
1478       ,val_10 dept_code
1479       ,berd.val_03  ext_doc_typ
1480       ,berd.business_group_id
1481       ,DECODE(berd.val_29,'001','D','002','C') identifier
1482 	  ,gpid.pa_interface_err_dtl_id
1483  FROM ghr_pa_interface_err_dtls gpid
1484      ,ben_ext_rslt_dtl berd
1485 WHERE gpid.err_doc_type=cp_doc_typ
1486   AND  gpid.person_id=berd.person_id
1487   AND gpid.err_doc_type=berd.val_03
1488   AND berd.val_29 IN ( '001','002')
1489   AND gpid.nat_act_1st_3_pos = berd.val_30
1490   AND gpid.pa_request_id = berd.val_150
1491   AND berd.ext_rcd_id=gpid.record_id
1492   AND berd.request_id=p_request_id
1493   AND berd.ext_rslt_id=p_rslt_id;
1494 
1495 ---Chk for award
1496 CURSOR c_chk_data_in_file_aw
1497 IS
1498 SELECT gpid.person_id
1499       ,gpid.ext_request_id
1500       ,gpid.result_id
1501       ,gpid.result_dtl_id
1502       ,gpid.record_id
1503       ,gpid.pa_request_id
1504       ,gpid.err_doc_type
1505       ,gpid.err_ssn_no
1506       ,gpid.err_agency
1507       ,gpid.err_dept_code
1508       ,gpid.nat_act_1st_3_pos
1509       ,gpid.nat_act_2nd_3_pos
1510       ,gpid.alt_pa_request_id
1511       ,gpid.err_eff_dt
1512       ,gpid.err_auth_dt
1513       ,NULL request_id
1514       ,NULL alt_req_id
1515       ,NULL  noa1
1516       ,NULL  noa2
1517       ,NULL  ext_rslt_dtl_id
1518       ,NULL  ex_ssno
1519       ,NULL ex_eff_dt
1520       ,NULL ex_auth_dt
1521       ,NULL ex_agncy
1522       ,NULL dept_code
1523       ,NULL ext_doc_typ
1524       ,null business_group_id
1525       ,'N' identifier
1526 	  ,gpid.pa_interface_err_dtl_id
1527  FROM ghr_pa_interface_err_dtls gpid
1528  WHERE gpid.err_doc_type='110'
1529    AND  NOT EXISTS
1530  (SELECT 'X'
1531     FROM ben_ext_rslt_dtl berd
1532   WHERE gpid.person_id=berd.person_id
1533   AND gpid.err_doc_type=berd.val_03
1534   AND (gpid.nat_act_1st_3_pos = berd.val_38
1535    OR gpid.nat_act_1st_3_pos=berd.val_30 )
1536   AND berd.ext_rcd_id=gpid.record_id
1537   AND gpid.pa_request_id=NVL(berd.val_55,gpid.pa_request_id)
1538   AND berd.request_id=p_request_id
1539   AND berd.ext_rslt_id=p_rslt_id
1540   )
1541 UNION
1542 SELECT gpid.person_id
1543       ,gpid.ext_request_id
1544       ,gpid.result_id
1545       ,gpid.result_dtl_id
1546       ,gpid.record_id
1547       ,gpid.pa_request_id
1548       ,gpid.err_doc_type
1549       ,gpid.err_ssn_no
1550       ,gpid.err_agency
1551       ,gpid.err_dept_code
1552       ,gpid.nat_act_1st_3_pos
1553       ,gpid.nat_act_2nd_3_pos
1554       ,gpid.alt_pa_request_id
1555       ,gpid.err_eff_dt
1556       ,gpid.err_auth_dt
1557       ,berd.request_id
1558       ,berd.val_150 alt_req_id
1559       ,berd.val_38  noa1
1560       ,berd.val_30  noa2
1561       ,berd.ext_rslt_dtl_id ext_rslt_dtl_id
1562       ,val_09 ex_ssno
1563       ,val_32 ex_eff_dt
1564       ,val_48 ex_auth_dt
1565       ,val_04 ex_agncy
1566       ,val_10 dept_code
1567       ,berd.val_03  ext_doc_typ
1568       ,berd.business_group_id
1569       ,DECODE(berd.val_38,'001','D','002','C') identifier
1570 	  ,gpid.pa_interface_err_dtl_id
1571  FROM ghr_pa_interface_err_dtls gpid
1572      ,ben_ext_rslt_dtl berd
1573 WHERE gpid.err_doc_type='110'
1574   AND  gpid.person_id=berd.person_id
1575   AND gpid.err_doc_type=berd.val_03
1576   AND berd.val_38 IN ( '001','002')
1577   AND gpid.nat_act_1st_3_pos = berd.val_30
1578   AND gpid.pa_request_id = berd.val_55
1579   AND berd.ext_rcd_id=gpid.record_id
1580   AND berd.request_id=p_request_id
1581   AND berd.ext_rslt_id=p_rslt_id;
1582 --Get data from the previous sesult.
1583 CURSOR c_get_prev_data (cp_request_id  NUMBER
1584                      ,cp_rslt_dtl_id NUMBER
1585                      ,cp_rcd_id      NUMBER
1586                      ,cp_rslt_id     NUMBER
1587                      )
1588 IS
1589 SELECT *
1590   FROM ben_ext_rslt_dtl berd
1591  WHERE berd.request_id = cp_request_id
1592    AND berd.ext_rslt_dtl_id = cp_rslt_dtl_id
1593    AND berd.ext_rslt_id     =cp_rslt_id
1594    AND berd.ext_rcd_id      =cp_rcd_id
1595    ;
1596 
1597 CURSOR c_get_prev_rmk_data (cp_request_id  NUMBER
1598                      ,cp_pa_req            VARCHAR2
1599                      ,cp_person_id         NUMBER
1600                       )
1601 IS
1602 SELECT *
1603   FROM ben_ext_rslt_dtl berd
1604  WHERE berd.request_id = cp_request_id
1605    AND berd.val_02='RMK'
1606     AND berd.val_01=cp_pa_req
1607    AND berd.person_id=cp_person_id
1608    ;
1609 
1610 l_chk_data_in_file_aw c_chk_data_in_file_aw%ROWTYPE;
1611 l_rslt_dtl         ben_ext_rslt_dtl%ROWTYPE;
1612 l_get_prev_data    c_get_prev_data%ROWTYPE;
1613 l_chk_err_exist    c_chk_err_exist%ROWTYPE;
1614 l_chk_data_in_file c_chk_data_in_file%ROWTYPE;
1615 l_get_prev_rmk_data c_get_prev_rmk_data%ROWTYPE;
1616 l_rslt_dtl_id      NUMBER;
1617 l_chk_add_in_file  c_chk_add_in_file%ROWTYPE;
1618 l_rslt_dtl_temp    ben_ext_rslt_dtl%ROWTYPE;
1619 l_proc_name     Varchar2(150) := g_proc_name ||'.c_get_prev_val_add';
1620 
1621 BEGIN
1622  Hr_Utility.set_location('Entering: '||l_proc_name, 5);
1623 ---Chances of picking a new action is there and need to be tested.
1624 --Ex: when the action comes back as an error and next day there is a cancellation
1625 --and then a same new action is created. Now the error data may pick the new action as same
1626 
1627  OPEN c_chk_err_exist;
1628  LOOP
1629   FETCH c_chk_err_exist INTO l_chk_err_exist;
1630   EXIT WHEN c_chk_err_exist%NOTFOUND;
1631   IF l_chk_err_exist.doc_typ ='063' THEN
1632    OPEN c_chk_data_in_file (l_chk_err_exist.doc_typ);
1633     LOOP
1634     FETCH c_chk_data_in_file INTO l_chk_data_in_file ;
1635     EXIT WHEN c_chk_data_in_file%NOTFOUND;
1636      IF l_chk_data_in_file.identifier ='N' THEN
1637       OPEN c_get_prev_data (l_chk_data_in_file.ext_request_id
1638                            ,l_chk_data_in_file.result_dtl_id
1639                            ,l_chk_data_in_file.record_id
1640                            ,l_chk_data_in_file.result_id
1641                            );
1642       FETCH c_get_prev_data INTO l_rslt_dtl;--l_get_prev_data;
1643       CLOSE c_get_prev_data;
1644       l_rslt_dtl.val_02:='S';
1645       l_rslt_dtl.request_id  :=p_request_id;
1646       l_rslt_dtl.ext_rslt_id :=p_rslt_id;
1647      -- l_rslt_dtl.business_group_id :=l_get_prev_data.business_group_id;
1648        Ins_Rslt_Dtl
1649           (p_val_tab     =>l_rslt_dtl
1650           ,p_rslt_dtl_id =>l_rslt_dtl_id
1651           ) ;
1652 
1653       OPEN c_get_prev_rmk_data (l_chk_data_in_file.ext_request_id
1654                                  ,l_rslt_dtl.val_01
1655                                  ,l_rslt_dtl.person_id
1656                                  );
1657        LOOP
1658         FETCH c_get_prev_rmk_data INTO l_get_prev_rmk_data;
1659         EXIT WHEN c_get_prev_rmk_data%NOTFOUND;
1660         l_get_prev_rmk_data.request_id  :=p_request_id;
1661         l_get_prev_rmk_data.ext_rslt_id :=p_rslt_id;
1662         Ins_Rslt_Dtl
1663           (p_val_tab     =>l_get_prev_rmk_data
1664           ,p_rslt_dtl_id =>l_rslt_dtl_id
1665           ) ;
1666        END LOOP;
1667        CLOSE c_get_prev_rmk_data;
1668 
1669       l_rslt_dtl:=l_rslt_dtl_temp;
1670 		--- Bug 5012619
1671 	   DELETE FROM ghr_pa_interface_err_dtls perr
1672        WHERE pa_interface_err_dtl_id = l_chk_data_in_file.pa_interface_err_dtl_id;
1673 	   --
1674      ELSIF l_chk_data_in_file.identifier='C' THEN
1675       UPDATE ben_ext_rslt_dtl berd
1676         SET berd.val_29 = l_chk_data_in_file.nat_act_1st_3_pos
1677            ,berd.val_30=NULL
1678            ,berd.val_150=null
1679        WHERE berd.request_id=p_request_id
1680          AND berd.ext_rslt_id=p_rslt_id
1681          AND berd.ext_rcd_id=l_chk_data_in_file.record_id
1682          AND berd.ext_rslt_dtl_id=l_chk_data_in_file.ext_rslt_dtl_id;
1683 
1684 
1685      ELSIF l_chk_data_in_file.identifier='D' THEN
1686       DELETE FROM ben_ext_rslt_dtl berd
1687        WHERE berd.ext_rslt_dtl_id=l_chk_data_in_file.ext_rslt_dtl_id;
1688 
1689      END IF;
1690     END LOOP;
1691    CLOSE c_chk_data_in_file;
1692   ELSIF l_chk_err_exist.doc_typ ='110' THEN
1693    OPEN c_chk_data_in_file_aw ;
1694     LOOP
1695     FETCH c_chk_data_in_file_aw INTO l_chk_data_in_file_aw ;
1696     EXIT WHEN c_chk_data_in_file_aw%NOTFOUND;
1697      IF l_chk_data_in_file_aw.identifier ='N' THEN
1698       OPEN c_get_prev_data (l_chk_data_in_file_aw.ext_request_id
1699                            ,l_chk_data_in_file_aw.result_dtl_id
1700                            ,l_chk_data_in_file_aw.record_id
1701                            ,l_chk_data_in_file_aw.result_id
1702                            );
1703       FETCH c_get_prev_data INTO l_rslt_dtl;
1704       CLOSE c_get_prev_data;
1705 
1706       l_rslt_dtl.val_02:='S';
1707       l_rslt_dtl.request_id  :=p_request_id;
1708       l_rslt_dtl.ext_rslt_id :=p_rslt_id;
1709 
1710        Ins_Rslt_Dtl
1711           (p_val_tab     =>l_rslt_dtl
1712           ,p_rslt_dtl_id =>l_rslt_dtl_id
1713           ) ;
1714 
1715       l_rslt_dtl:=l_rslt_dtl_temp;
1716 	  --- Bug 5012619
1717 	   DELETE FROM ghr_pa_interface_err_dtls perr
1718        WHERE pa_interface_err_dtl_id = l_chk_data_in_file_aw.pa_interface_err_dtl_id;
1719 	   --
1720      ELSIF l_chk_data_in_file_aw.identifier='C' THEN
1721       UPDATE ben_ext_rslt_dtl berd
1722         SET berd.val_38=NULL
1723            --,  berd.val_38 = l_chk_data_in_file.nat_act_1st_3_pos
1724            --,berd.val_30=NULL
1725            ,berd.val_55=NULL
1726        WHERE berd.request_id=p_request_id
1727          AND berd.ext_rslt_id=p_rslt_id
1728          AND berd.ext_rcd_id=l_chk_data_in_file_aw.record_id
1729          AND berd.ext_rslt_dtl_id=l_chk_data_in_file_aw.ext_rslt_dtl_id;
1730 
1731 
1732      ELSIF l_chk_data_in_file_aw.identifier='D' THEN
1733       DELETE FROM ben_ext_rslt_dtl berd
1734        WHERE berd.ext_rslt_dtl_id=l_chk_data_in_file_aw.ext_rslt_dtl_id;
1735 
1736      END IF;
1737     END LOOP;
1738    CLOSE c_chk_data_in_file_aw;
1739 
1740   ELSIF l_chk_err_exist.doc_typ='347' THEN
1741    NULL;
1742    OPEN c_chk_add_in_file;
1743    LOOP
1744     FETCH c_chk_add_in_file INTO l_chk_add_in_file;
1745     EXIT WHEN c_chk_add_in_file%NOTFOUND;
1746     OPEN c_get_prev_val_add (l_chk_add_in_file.person_id
1747                             ,l_chk_add_in_file.result_dtl_id
1748                             ,l_chk_add_in_file.ext_request_id
1749                             ,l_chk_add_in_file.result_id
1750                           );
1751     FETCH c_get_prev_val_add INTO l_rslt_dtl;
1752      l_rslt_dtl.val_02:='S';
1753      l_rslt_dtl.request_id  :=p_request_id;
1754      l_rslt_dtl.ext_rslt_id :=p_rslt_id;
1755      Ins_Rslt_Dtl
1756           (p_val_tab     =>l_rslt_dtl
1757           ,p_rslt_dtl_id =>l_rslt_dtl_id
1758           ) ;
1759 	   --- Bug 5012619
1760 	   DELETE FROM ghr_pa_interface_err_dtls perr
1761        WHERE pa_interface_err_dtl_id = l_chk_add_in_file.pa_interface_err_dtl_id;
1762 	   --
1763     CLOSE c_get_prev_val_add;
1764    END LOOP;
1765    CLOSE c_chk_add_in_file;
1766 
1767   END IF;
1768 
1769  END LOOP;
1770  CLOSE c_chk_err_exist;
1771  Hr_Utility.set_location('Leaving: '||l_proc_name, 5);
1772 
1773 END;
1774 
1775 
1776 ---============================================================================
1777 --PROCEDURE chk_for_err_data_pos
1778 ---===========================================================================
1779 PROCEDURE chk_for_err_data_pos (p_request_id     IN NUMBER
1780                                 ,p_rslt_id        IN NUMBER
1781                                )
1782 
1783 
1784 IS
1785 --Pick from the previous result.
1786 CURSOR c_prev_ext_rslt (cp_request_id      NUMBER
1787                        ,cp_result_dtl_id   NUMBER
1788                        ,cp_record_id       NUMBER
1789                        )
1790 IS
1791 SELECT *
1792  FROM ben_ext_rslt_dtl berd
1793 WHERE berd.request_id = cp_request_id
1794   AND berd.ext_rslt_dtl_id=cp_result_dtl_id
1795   AND berd.ext_rcd_id     =cp_record_id;
1796 
1797 --Check error table if the master record exists
1798 CURSOR c_chk_mast_exist
1799 IS
1800 SELECT count(*) cnt
1801   FROM ghr_pos_interface_err_dtls gpid
1802  WHERE gpid.susp_mast_indv='2055';
1803 --Check for master error record.
1804 CURSOR c_chk_mast_err
1805 IS
1806 SELECT  berd.val_71 position_id,
1807         berd.val_26 f_function_cd,
1808         gpid.susp_function_cd e_function_cd,
1809 		gpid.pos_interface_err_dtl_id
1810   FROM  ben_ext_rslt_dtl berd
1811        ,ghr_pos_interface_err_dtls gpid
1812  WHERE TO_CHAR(gpid.position_id) = berd.val_71
1813    AND gpid.susp_mast_indv ='2055'
1814    AND gpid.susp_mast_indv=berd.val_02
1815    AND berd.request_id=p_request_id
1816    AND berd.ext_rcd_id=gpid.record_id;
1817 
1818 --Check the record that is not is the transmission file.
1819 CURSOR c_chk_unpick_mast
1820 IS
1821 SELECT *
1822   FROM  ghr_pos_interface_err_dtls gpid
1823  WHERE NOT EXISTS (
1824    SELECT 'X'
1825      FROM ben_ext_rslt_dtl berd
1826     WHERE to_char(gpid.position_id) = berd.val_71
1827       AND gpid.susp_mast_indv ='2055'
1828       AND gpid.susp_mast_indv=berd.val_02
1829       AND berd.request_id=p_request_id
1830       AND berd.ext_rcd_id=gpid.record_id)
1831    AND gpid.susp_mast_indv ='2055';
1832 
1833 --Check error table if the detail record exists
1834 CURSOR c_chk_ind_exist
1835 IS
1836 SELECT COUNT(*) cnt
1837   FROM ghr_pos_interface_err_dtls gpid
1838  WHERE gpid.susp_mast_indv='2056';
1839 
1840 --Check for detail error record.
1841 CURSOR c_chk_ind_err
1842 IS
1843 SELECT  berd.val_71 position_id,
1844         berd.val_45 f_function_cd,
1845         gpid.susp_function_cd e_function_cd,
1846 		gpid.pos_interface_err_dtl_id
1847   FROM  ben_ext_rslt_dtl berd
1848        ,ghr_pos_interface_err_dtls gpid
1849  WHERE to_char(gpid.position_id) = berd.val_71
1850    AND gpid.susp_mast_indv ='2056'
1851    AND gpid.susp_mast_indv=berd.val_02
1852    AND berd.request_id=p_request_id
1853    AND berd.ext_rcd_id=gpid.record_id;
1854 
1855 
1856 --Check the detail record that is not is the transmission file.
1857 CURSOR c_chk_unpick_ind
1858 IS
1859 SELECT *
1860   FROM  ghr_pos_interface_err_dtls gpid
1861  WHERE NOT EXISTS (
1862    SELECT 'X'
1863      FROM ben_ext_rslt_dtl berd
1864     WHERE to_char(gpid.position_id) = berd.val_71
1865       AND gpid.susp_mast_indv ='2056'
1866       AND gpid.susp_mast_indv=berd.val_02
1867       AND berd.request_id=p_request_id
1868       AND berd.ext_rcd_id=gpid.record_id)
1869    AND gpid.susp_mast_indv ='2056';
1870 
1871 
1872 l_chk_unpick_mast  c_chk_unpick_mast%ROWTYPE;
1873 l_chk_mast_exist   c_chk_mast_exist%ROWTYPE;
1874 l_chk_ind_exist    c_chk_ind_exist%ROWTYPE;
1875 l_chk_ind_err      c_chk_ind_err%ROWTYPE;
1876 l_chk_mast_err     c_chk_mast_err%ROWTYPE;
1877 l_rslt_dtl         ben_ext_rslt_dtl%ROWTYPE;
1878 l_prev_ext_rslt    c_prev_ext_rslt%ROWTYPE;
1879 l_rslt_dtl_id      NUMBER;
1880 l_chk_unpick_ind   c_chk_unpick_ind%ROWTYPE;
1881 l_proc_name     Varchar2(150) := g_proc_name ||'.chk_for_err_data_pos';
1882 
1883 BEGIN
1884  Hr_Utility.set_location('Entering: '||l_proc_name, 5);
1885  OPEN c_chk_mast_exist;
1886  FETCH c_chk_mast_exist INTO l_chk_mast_exist;
1887  CLOSE c_chk_mast_exist;
1888  IF l_chk_mast_exist.cnt > 0 THEN
1889   OPEN c_chk_mast_err;
1890   LOOP
1891    FETCH c_chk_mast_err INTO l_chk_mast_err;
1892    EXIT WHEN c_chk_mast_err%NOTFOUND;
1893    IF l_chk_mast_err.e_function_cd <> l_chk_mast_err.f_function_cd THEN
1894 
1895     UPDATE ben_ext_rslt_dtl berd
1896        SET berd.val_26=l_chk_mast_err.e_function_cd
1897      WHERE berd.val_71 = to_char(l_chk_mast_err.position_id)
1898        AND berd.request_id=p_request_id
1899        AND berd.val_02='2055';
1900 
1901    END IF;
1902 
1903 
1904   END LOOP;
1905   CLOSE c_chk_mast_err;
1906 
1907   OPEN c_chk_unpick_mast;
1908   LOOP
1909    FETCH c_chk_unpick_mast INTO l_chk_unpick_mast;
1910    EXIT WHEN c_chk_unpick_mast%NOTFOUND;
1911    OPEN  c_prev_ext_rslt (l_chk_unpick_mast.request_id
1912                          ,l_chk_unpick_mast.result_dtl_id
1913                          ,l_chk_unpick_mast.record_id
1914                          );
1915    FETCH c_prev_ext_rslt INTO l_rslt_dtl;
1916     l_rslt_dtl.val_01 :='S';
1917     l_rslt_dtl.request_id:=p_request_id;
1918     l_rslt_dtl.ext_rslt_id:=p_rslt_id;
1919     Ins_Rslt_Dtl
1920           (p_val_tab      =>l_rslt_dtl
1921           ,p_rslt_dtl_id  => l_rslt_dtl_id
1922           ) ;
1923    CLOSE c_prev_ext_rslt;
1924 	-- Bug 5012619
1925 	DELETE FROM ghr_pos_interface_err_dtls perr
1926        WHERE pos_interface_err_dtl_id = l_chk_unpick_mast.pos_interface_err_dtl_id;
1927 
1928   END LOOP;
1929   CLOSE c_chk_unpick_mast;
1930 
1931 
1932  END IF;
1933 --Check for individual record.
1934  OPEN c_chk_ind_exist;
1935  FETCH c_chk_ind_exist INTO l_chk_ind_exist;
1936  CLOSE c_chk_ind_exist;
1937 
1938  IF l_chk_ind_exist.cnt > 0 THEN
1939   OPEN c_chk_ind_err;
1940   LOOP
1941    FETCH c_chk_ind_err INTO l_chk_ind_err;
1942    EXIT WHEN c_chk_ind_err%NOTFOUND;
1943    IF l_chk_ind_err.e_function_cd <> l_chk_ind_err.f_function_cd THEN
1944 
1945     UPDATE ben_ext_rslt_dtl berd
1946        SET berd.val_45=l_chk_ind_err.e_function_cd
1947      WHERE berd.val_71 =TO_CHAR( l_chk_ind_err.position_id)
1948        AND berd.request_id=p_request_id
1949        AND berd.val_02='2056';
1950 
1951    END IF;
1952 
1953 
1954   END LOOP;
1955   CLOSE c_chk_ind_err;
1956 
1957   OPEN c_chk_unpick_ind;
1958   LOOP
1959    FETCH c_chk_unpick_ind INTO l_chk_unpick_ind;
1960    EXIT WHEN c_chk_unpick_ind%NOTFOUND;
1961    OPEN  c_prev_ext_rslt (l_chk_unpick_ind.request_id
1962                          ,l_chk_unpick_ind.result_dtl_id
1963                          ,l_chk_unpick_ind.record_id
1964                          );
1965    FETCH c_prev_ext_rslt INTO l_rslt_dtl;
1966     l_rslt_dtl.val_01 :='S';
1967     l_rslt_dtl.request_id:=p_request_id;
1968     l_rslt_dtl.ext_rslt_id:=p_rslt_id;
1969     Ins_Rslt_Dtl
1970           (p_val_tab      =>l_rslt_dtl
1971           ,p_rslt_dtl_id  => l_rslt_dtl_id
1972           ) ;
1973 
1974    CLOSE c_prev_ext_rslt;
1975 	-- Bug 5012619
1976 	DELETE FROM ghr_pos_interface_err_dtls perr
1977        WHERE pos_interface_err_dtl_id = l_chk_unpick_ind.pos_interface_err_dtl_id;
1978 
1979   END LOOP;
1980   CLOSE c_chk_unpick_ind;
1981 
1982  END IF;
1983  Hr_Utility.set_location('Leaving: '||l_proc_name, 5);
1984 
1985 END;
1986 ---============================================================================
1987 --PROCEDURE populate_pa_error_tab
1988 ---===========================================================================
1989 
1990 PROCEDURE populate_pa_error_tab (p_request_id     IN NUMBER
1991                              ,p_record_id         IN NUMBER
1992                              ,p_person_id         IN NUMBER
1993                              ,p_business_group_id IN NUMBER
1994                              ,p_status            IN VARCHAR2
1995                              ,p_indicator         IN VARCHAR2
1996                              ,p_department_code   IN VARCHAR2
1997                              ,p_agency_code       IN VARCHAR2
1998                              ,p_poi               IN VARCHAR2
1999                              ,p_ssn               IN VARCHAR2
2000                              ,p_pay_per_num       IN VARCHAR2
2001                              ,p_auth_dt           IN VARCHAR2
2002                              ,p_noa1              IN VARCHAR2
2003                              ,p_noa2              IN VARCHAR2
2004                              ,p_eff_dt            IN VARCHAR2
2005                              ,p_doc_typ           IN VARCHAR2
2006                              )
2007 IS
2008 TYPE curtyp is ref cursor;
2009 l_cur       curtyp;
2010 l_result_dtl_id   NUMBER;
2011 l_result_id       NUMBER;
2012 l_rcd_id          NUMBER;
2013 l_indicator       VARCHAR2(4);
2014 l_department_code VARCHAR2(20);
2015 l_agency_code     VARCHAR2(20);
2016 l_poi             VARCHAR2(40);
2017 l_ssn             VARCHAR2(90);
2018 l_noa1            VARCHAR2(30);
2019 l_noa2            VARCHAR2(30);
2020 l_pay_per_num     VARCHAR2(20);
2021 l_auth_dt         VARCHAR2(20);
2022 l_doc_typ         VARCHAR2(30);
2023 l_eff_dt          VARCHAR2(20);
2024 l_stmt            VARCHAR2(4000);
2025 l_person_id       NUMBER;
2026 l_pa_req          VARCHAR2(20);
2027 BEGIN
2028 l_stmt := 'select  ext_rslt_dtl_id
2029            , ext_rslt_id
2030            ,ext_rcd_id
2031            ,val_01
2032            ,person_id'||','
2033            ||p_indicator ||','
2034            ||p_department_code||','
2035            ||p_agency_code||','
2036            ||p_poi||','
2037            ||p_ssn||','
2038            ||p_noa1||','
2039            ||p_noa2||','
2040            ||p_pay_per_num||','
2041            ||p_auth_dt||','
2042            ||p_doc_typ||','
2043            ||p_eff_dt||
2044            '  from ben_ext_rslt_dtl
2045               where request_id     = :1
2046                 and ext_rcd_id     = :2
2047                 and '||p_status||'  = '||'''E''' ;
2048 
2049 --insert into a values (l_stmt);
2050  open l_cur for l_stmt
2051   using p_request_id
2052         ,p_record_id;
2053 
2054   LOOP
2055    fetch l_cur into l_result_dtl_id
2056                         ,l_result_id
2057                         ,l_rcd_id
2058                         ,l_pa_req
2059                         ,l_person_id
2060                         ,l_indicator
2061                         ,l_department_code
2062                         ,l_agency_code
2063                         ,l_poi
2064                         ,l_ssn
2065                         ,l_noa1
2066                         ,l_noa2
2067                         ,l_pay_per_num
2068                         ,l_auth_dt
2069                         ,l_doc_typ
2070                         ,l_eff_dt
2071                          ;
2072   EXIT WHEN l_cur%NOTFOUND;
2073   IF l_indicator ='110' THEN
2074    IF l_noa1 IS NULL THEN
2075 
2076     l_noa1 := l_noa2;
2077     l_noa2:=NULL;
2078    END IF;
2079 
2080   END IF;
2081   INSERT INTO ghr_pa_interface_err_dtls
2082   (         pa_interface_err_dtl_id
2083            ,ext_request_id
2084            ,result_id
2085            ,result_dtl_id
2086            ,record_id
2087            ,business_group_id
2088            ,person_id
2089            ,assignment_id
2090            ,pa_request_id
2091            ,err_ssn_no
2092            ,err_agency
2093            ,err_emp_off
2094            ,err_dept_code
2095            ,err_doc_type
2096            ,err_pay_period
2097            ,err_auth_dt
2098            ,nat_act_1st_3_pos
2099            ,nat_act_2nd_3_pos
2100            ,err_eff_dt
2101            ,err_batch_no
2102            ,err_oper_code
2103            ,error_code
2104            ,error_msg
2105            ,error_element_name
2106            ,error_elem_content
2107  )
2108  VALUES
2109   (
2110            ghr_pa_interface_err_dtls_s.nextval
2111            ,p_request_id
2112            ,l_result_id
2113            ,l_result_dtl_id
2114            ,p_record_id
2115            ,null
2116            ,l_person_id
2117            ,null
2118            ,l_pa_req
2119            ,l_ssn
2120            ,l_agency_code
2121            ,l_poi
2122            ,l_department_code
2123            ,l_indicator
2124            ,l_pay_per_num
2125            ,l_auth_dt
2126            ,l_noa1
2127            ,l_noa2
2128            ,l_eff_dt
2129            ,l_doc_typ
2130            ,null
2131            ,null
2132            ,null
2133            ,null
2134            ,null
2135            );
2136 
2137   END LOOP;
2138  CLOSE l_cur;
2139 END;
2140 ---============================================================================
2141 
2142 ---===========================================================================
2143 
2144 PROCEDURE populate_pos_error_tab (p_request_id        IN NUMBER
2145                              ,p_record_id         IN NUMBER
2146                              ,p_position_id       IN NUMBER
2147                              ,p_business_group_id IN NUMBER
2148                              ,p_status            IN VARCHAR2
2149                              ,p_indicator         IN VARCHAR2
2150                              ,p_function_code     IN VARCHAR2
2151                              ,p_department_code   IN VARCHAR2
2152                              ,p_agency_code       IN VARCHAR2
2153                              ,p_poi               IN VARCHAR2
2154                              ,p_mrn               IN VARCHAR2
2155                              ,p_grade             IN VARCHAR2
2156                              ,p_pos_num           IN VARCHAR2
2157                              ,p_incumbant_ssn     IN VARCHAR2
2158                              ,p_oblig_ssn         IN VARCHAR2
2159                             )
2160 IS
2161 
2162 TYPE curtyp is ref cursor;
2163 l_cur       curtyp;
2164 l_indicator VARCHAR2(11) ;
2165 l_function_code VARCHAR2(12);
2166 l_agency_code   VARCHAR2(12);
2167 l_poi           VARCHAR2(12);
2168 l_mrn           VARCHAR2(16);
2169 l_grade         VARCHAR2(12);
2170 l_department_code VARCHAR2(12);
2171 l_stmt   varchar2(4000);
2172 l_result_dtl_id    NUMBER;
2173 l_result_id        NUMBER;
2174 l_rcd_id           NUMBER;
2175 l_pos_num          VARCHAR2(8);
2176 l_incumbant_ssn    VARCHAR2(9);
2177 l_position_id      VARCHAR2(9);
2178 l_proc_name     Varchar2(150) := g_proc_name ||'.populate_pos_error_tab';
2179 
2180 BEGIN
2181   Hr_Utility.set_location('Entering: '||l_proc_name, 5);
2182 
2183  l_stmt := 'select  ext_rslt_dtl_id
2184            , ext_rslt_id
2185            ,ext_rcd_id
2186            ,val_71'||','
2187            ||p_indicator ||','
2188            ||p_function_code||','
2189            ||p_department_code||','
2190            ||p_agency_code||','
2191            ||p_poi||','
2192            ||p_mrn||','
2193            ||p_grade||','
2194            ||p_pos_num||','
2195            ||p_incumbant_ssn||
2196            '  from ben_ext_rslt_dtl
2197               where request_id     = :1
2198                 and ext_rcd_id     = :2
2199               	and '||p_status||'  = '||'''E''' ;
2200   open l_cur for l_stmt
2201   using p_request_id
2202         ,p_record_id;
2203   LOOP
2204   	fetch l_cur into l_result_dtl_id
2205                         ,l_result_id
2206                         ,l_rcd_id
2207                         ,l_position_id
2208                          ,l_indicator
2209                          ,l_function_code
2210                          ,l_department_code
2211                          ,l_agency_code
2212                          ,l_poi
2213                          ,l_mrn
2214                          ,l_grade
2215                          ,l_pos_num
2216                          ,l_incumbant_ssn
2217                          ;
2218 
2219   EXIT WHEN l_cur%NOTFOUND;
2220   INSERT INTO ghr_pos_interface_err_dtls
2221     ( pos_interface_err_dtl_id
2222      ,request_id
2223      ,result_id
2224      ,result_dtl_id
2225      ,record_id
2226      ,business_group_id
2227      ,position_id
2228      ,susp_user_id
2229      ,susp_mast_indv
2230      ,susp_function_cd
2231      ,susp_dept
2232      ,susp_agcy
2233      ,susp_poi
2234      ,susp_mast_rec_num
2235      ,susp_grd
2236      ,susp_indv_pos_num
2237      ,susp_incum_ssn
2238      ,susp_oblig_ssn
2239      ,susp_pay_period
2240      ,susp_pass_num
2241      ,susp_error_msg_num
2242      ,susp_error_msg
2243      ,susp_elem_name_num
2244      ,susp_elem_name
2245      ,susp_data_field
2246      ,susp_serv_agcy
2247       )
2248     VALUES
2249       (ghr_pos_interface_err_dtls_s.nextval
2250       ,p_request_id
2251       ,l_result_id
2252       ,l_result_dtl_id
2253       ,p_record_id
2254       ,null
2255       ,TO_NUMBER(l_position_id)
2256       ,null
2257       ,l_indicator
2258       ,l_function_code
2259       ,l_department_code
2260       ,l_agency_code
2261       ,l_poi
2262       ,l_mrn
2263       ,l_grade
2264       ,l_pos_num
2265       ,null
2266       ,null
2267       ,null
2268       ,null
2269       ,null
2270       ,null
2271       ,null
2272       ,null
2273       ,null
2274       ,null
2275       );
2276  END LOOP;
2277   close l_cur;
2278  Hr_Utility.set_location('Leaving: '||l_proc_name, 5);
2279 
2280 END;
2281 
2282 
2283 
2284 -- =============================================================================
2285 -- ~ NFC_Extract_Process: This is called by the conc. program as is a
2286 -- ~ wrapper around the benefits conc. program Extract Process.
2287 -- =============================================================================
2288 PROCEDURE NFC_Error_Process
2289            (errbuf                        OUT NOCOPY  VARCHAR2
2290            ,retcode                       OUT NOCOPY  VARCHAR2
2291            ,p_business_group_id           IN  NUMBER
2292            ,p_file_type                   IN  VARCHAR2
2293            ,p_pos_dummy                   IN  VARCHAR2
2294            ,p_pa_dummy                    IN  VARCHAR2
2295            ,p_dummy                       IN  VARCHAR2
2296            ,p_request_id                  IN  NUMBER
2297            )
2298 
2299 IS
2300 
2301 CURSOR c_get_info_mast
2302 IS
2303  select beder.seq_num
2304        ,bede.string_val
2305        ,ber.ext_rcd_id record_id
2306   from ben_ext_rslt  bes
2307       ,ben_ext_dfn  bed
2308       ,ben_ext_file bef
2309       ,ben_ext_rcd_in_file  berf
2310       ,ben_ext_rcd  ber
2311       ,ben_ext_data_elmt_in_rcd   beder
2312       ,ben_ext_data_elmt  bede
2313  where bes.request_id=p_request_id
2314    and   bes.ext_dfn_id=bed.ext_dfn_id
2315    and bed.ext_file_id =bef.ext_file_id
2316    and bef.ext_file_id=berf.ext_file_id
2317    and ber.ext_rcd_id = berf.ext_rcd_id
2318   /* and (ber.name like '%SHRL Master Position Data Element Record - (NFC PO)'
2319     OR  ber.name like '%SHRL Detail Position Data Element Record - (NFC PO)'
2320     OR  ber.name like 'DRL Individual Data Element Record - (NFC PO)')*/
2321    and ber.ext_rcd_id=beder.ext_rcd_id
2322    and bede.ext_data_elmt_id = beder.ext_data_elmt_id
2323    and bede.string_val in ('S','Master Record Number06','2055'
2324                             ,'Function Code26','Function Code46','Department Code03'
2325                             ,'Agency Code04','Personnel Office Identifier05'
2326                             ,'Grade07','2056','Position Number08','IncumbentSSN50')
2327    ORDER BY ber.ext_rcd_id;
2328 
2329 
2330 
2331 CURSOR c_get_pa_info
2332 IS
2333 select beder.seq_num
2334        ,bede.string_val
2335        ,ber.ext_rcd_id record_id
2336   from ben_ext_rslt  bes
2337       ,ben_ext_dfn  bed
2338       ,ben_ext_file bef
2339       ,ben_ext_rcd_in_file  berf
2340       ,ben_ext_rcd  ber
2341       ,ben_ext_data_elmt_in_rcd   beder
2342       ,ben_ext_data_elmt  bede
2343  where bes.request_id=p_request_id
2344    and   bes.ext_dfn_id=bed.ext_dfn_id
2345    and bed.ext_file_id =bef.ext_file_id
2346    and bef.ext_file_id=berf.ext_file_id
2347    and ber.ext_rcd_id = berf.ext_rcd_id
2348 --   and (ber.name like '%DRL Personnel Actions [RPA] - (NFC PA)'
2349 --    OR  ber.name like '%DRL Personnel Actions Remarks [RMK] - (NFC PA)'
2350 --    OR  ber.name like 'DRL Personnel Actions Awards [AWD] - (NFC PA)'
2351  --   OR ber.name like '%DRL Address Change Record [ADD] - (NFC PA)')
2352    and ber.ext_rcd_id=beder.ext_rcd_id
2353    and bede.ext_data_elmt_id = beder.ext_data_elmt_id
2354    and bede.string_val in ('S','RPA_SSN','RPA_NFC_AGENCY','RPA_POI','RPA_PMSO_DEPT','063'
2355                            ,'RPA_PAY_PERIOD_NUM','RPA_AUTH_DT','RPA_SEC_NOA_CD',
2356                            'RPA_FIRST_NOA_CD','RPA_EFF_DATE','6700','110','347','REM_SSN',
2357                             'REM_AGNCY_CD','REM_POI','REM_PAY_PER_NUM','REM_DEPT_CD','AWD_AUTH_DT'
2358                             ,'AWD_PERS_EFF_DT','AWD_NAT_ACT_POS1','AWD_NAT_ACT_POS2',
2359                             'ADD_AGNCY_CD','ADD_POI','ADD_SSN','ADD_PAY_PER_NUM','ADD_DEPT_CODE'
2360                             )
2361   ORDER BY ber.ext_rcd_id;
2362 /*CURSOR c_get_info_ind
2363 IS
2364  select beder.seq_num
2365        ,bede.string_val
2366        ,ber.ext_rcd_id record_id
2367   from ben_ext_rslt  bes
2368       ,ben_ext_dfn  bed
2369       ,ben_ext_file bef
2370       ,ben_ext_rcd_in_file  berf
2371       ,ben_ext_rcd  ber
2372       ,ben_ext_data_elmt_in_rcd   beder
2373       ,ben_ext_data_elmt  bede
2374  where bes.request_id=p_request_id
2375    and   bes.ext_dfn_id=bed.ext_dfn_id
2376    and bed.ext_file_id =bef.ext_file_id
2377    and bef.ext_file_id=berf.ext_file_id
2378    and ber.ext_rcd_id = berf.ext_rcd_id
2379    and ( ber.name like '%SHRL Detail Position Data Element Record - (NFC PO)'
2380     OR  ber.name like 'DRL Individual Data Element Record - (NFC PO)'
2381    and ber.ext_rcd_id=beder.ext_rcd_id
2382    and bede.ext_data_elmt_id = beder.ext_data_elmt_id
2383    and bede.string_val in ('S','Master Record Number06','2056'
2384                             ,'Function Code26','Department Code03'
2385                             ,'Agency Code04','Personnel Office Identifier05'
2386                             ,'Grade07','Position Number08','Incumbent SSN50');
2387 */
2388 
2389 
2390 l_get_info c_get_info_mast%ROWTYPE;
2391 --l_get_info_ind c_get_info_ind%ROWTYPE;
2392 l_get_pa_info c_get_pa_info%ROWTYPE;
2393 l_val   VARCHAR2(30);
2394 l_val1  VARCHAR2(30);
2395 TYPE r_attr IS RECORD (
2396  status             VARCHAR2(10)
2397 ,indicator          VARCHAR2(10)
2398 ,function_code      VARCHAR2(10)
2399 ,department_code    VARCHAR2(10)
2400 ,agency_code        VARCHAR2(10)
2401 ,poi                VARCHAR2(10)
2402 ,mrn                VARCHAR2(10)
2403 ,grade              VARCHAR2(10)
2404 ,pos_num            VARCHAR2(10)
2405 ,incumbant_ssn      VARCHAR2(10)
2406 ,oblig_ssn          VARCHAR2(10)
2407 ,pay_per_num        VARCHAR2(10)
2408 );
2409 
2410 TYPE r_attr_pa IS RECORD (
2411  status             VARCHAR2(10)
2412 ,indicator          VARCHAR2(10)
2413 ,person_id          number
2414 ,department_code    VARCHAR2(10)
2415 ,agency_code        VARCHAR2(10)
2416 ,poi                VARCHAR2(10)
2417 ,mrn                VARCHAR2(10)
2418 ,pos_num            VARCHAR2(10)
2419 ,ssno               VARCHAR2(10)
2420 ,oblig_ssn          VARCHAR2(10)
2421 ,pay_per_num        VARCHAR2(10)
2422 ,auth_dt            VARCHAr2(10)
2423 ,noa1               VARCHAR2(10)
2424 ,noa2               VARCHAR2(10)
2425 ,eff_dt             VARCHAR2(10)
2426 ,doc_typ            VARCHAr2(10)
2427 );
2428 
2429 
2430 TYPE t_attr IS TABLE OF r_attr
2431   INDEX BY binary_integer;
2432 TYPE t_attr_pa IS TABLE OF r_attr_pa
2433   INDEX BY binary_integer;
2434 l_attr               t_attr;
2435 l_attr_pa            t_attr_pa;
2436 l_status             VARCHAR2(10):='NULL';
2437 l_indicator          VARCHAR2(10):='NULL';
2438 l_function_code      VARCHAR2(10):='NULL';
2439 l_department_code    VARCHAR2(10):='NULL';
2440 l_agency_code        VARCHAR2(10):='NULL';
2441 l_poi                VARCHAR2(10):='NULL';
2442 l_mrn                VARCHAR2(10):='NULL';
2443 l_grade              VARCHAR2(10):='NULL';
2444 l_pos_num            VARCHAR2(10):='NULL';
2445 l_incumbant_ssn      VARCHAR2(10):='NULL';
2446 l_oblig_ssn          VARCHAR2(10):='NULL';
2447 l_pay_per_num        VARCHAR2(10):='NULL';
2448 l_auth_dt            VARCHAR2(10):='NULL';
2449 l_noa1               VARCHAR2(10);
2450 l_noa2               VARCHAR2(10);
2451 l_eff_dt             VARCHAR2(10);
2452 l_doc_typ            VARCHAR2(10);
2453 l_temp_rcd_id        NUMBER;
2454 l_count   NUMBER;
2455 l_count1   NUMBER;
2456 l_proc_name     Varchar2(150) := g_proc_name ||'.NFC_Error_Process';
2457 BEGIN
2458  Hr_Utility.set_location('Entering: '||l_proc_name, 5);
2459 
2460  l_temp_rcd_id :=-1;
2461  l_val:='VAL_';
2462  l_val1:='VAL_0';
2463 
2464  IF p_file_type='PMSO' THEN
2465   DELETE FROM  ghr_pos_interface_err_dtls;
2466   OPEN c_get_info_mast;
2467   LOOP
2468    FETCH c_get_info_mast INTO l_get_info;
2469    EXIT WHEN c_get_info_mast%NOTFOUND;
2470    IF l_temp_rcd_id <> l_get_info.record_id THEN
2471     l_temp_rcd_id := l_get_info.record_id;
2472    END IF;
2473    IF l_get_info.string_val='S' THEN
2474     IF l_get_info.seq_num >10 THEN
2475      l_attr(l_get_info.record_id).status := l_val||l_get_info.seq_num;
2476     ELSE
2477      l_attr(l_get_info.record_id).status := l_val1||l_get_info.seq_num;
2478     END IF;
2479    ELSIF l_get_info.string_val='Master Record Number06' THEN
2480     IF l_get_info.seq_num >10 THEN
2481      l_attr(l_get_info.record_id).mrn :=l_val||l_get_info.seq_num;
2482     ELSE
2483      l_attr(l_get_info.record_id).mrn:= l_val1||l_get_info.seq_num;
2484     END IF;
2485    ELSIF l_get_info.string_val='2055' OR l_get_info.string_val='2056' THEN
2486     IF l_get_info.seq_num >10 THEN
2487      l_attr(l_get_info.record_id).indicator  := l_val||l_get_info.seq_num;
2488     ELSE
2489      l_attr(l_get_info.record_id).indicator  := l_val1||l_get_info.seq_num;
2490     END IF;
2491    ELSIF l_get_info.string_val='Function Code26'
2492       OR l_get_info.string_val='Function Code46' THEN
2493     IF l_get_info.seq_num >10 THEN
2494      l_attr(l_get_info.record_id).function_code   := l_val||l_get_info.seq_num;
2495     ELSE
2496      l_attr(l_get_info.record_id).function_code   := l_val1||l_get_info.seq_num;
2497     END IF;
2498    ELSIF l_get_info.string_val='Department Code03' THEN
2499     IF l_get_info.seq_num >10 THEN
2500      l_attr(l_get_info.record_id).department_code := l_val||l_get_info.seq_num;
2501     ELSE
2502      l_attr(l_get_info.record_id).department_code := l_val1||l_get_info.seq_num;
2503     END IF;
2504 
2505    ELSIF l_get_info.string_val='Agency Code04' THEN
2506     IF l_get_info.seq_num >10 THEN
2507      l_attr(l_get_info.record_id).agency_code := l_val||l_get_info.seq_num;
2508     ELSE
2509      l_attr(l_get_info.record_id).agency_code := l_val1||l_get_info.seq_num;
2510     END IF;
2511 
2512    ELSIF l_get_info.string_val= 'Personnel Office Identifier05' THEN
2513 
2514     IF l_get_info.seq_num >10 THEN
2515      l_attr(l_get_info.record_id).poi := l_val||l_get_info.seq_num;
2516     ELSE
2517      l_attr(l_get_info.record_id).poi := l_val1||l_get_info.seq_num;
2518     END IF;
2519 
2520    ELSIF l_get_info.string_val= 'Grade07' THEN
2521 
2522     IF l_get_info.seq_num >10 THEN
2523      l_attr(l_get_info.record_id).grade := l_val||l_get_info.seq_num;
2524     ELSE
2525      l_attr(l_get_info.record_id).grade := l_val1||l_get_info.seq_num;
2526     END IF;
2527    ELSIF l_get_info.string_val= 'Position Number08' THEN
2528     IF l_get_info.seq_num >10 THEN
2529      l_attr(l_get_info.record_id).pos_num := l_val||l_get_info.seq_num;
2530     ELSE
2531      l_attr(l_get_info.record_id).pos_num := l_val1||l_get_info.seq_num;
2532     END IF;
2533    ELSIF l_get_info.string_val= 'IncumbentSSN50' THEN
2534     IF l_get_info.seq_num >10 THEN
2535      l_attr(l_get_info.record_id).incumbant_ssn := l_val||l_get_info.seq_num;
2536     ELSE
2537      l_attr(l_get_info.record_id).incumbant_ssn := l_val1||l_get_info.seq_num;
2538     END IF;
2539    END IF;
2540   END LOOP;
2541   CLOSE c_get_info_mast;
2542   l_count:=l_attr.first;
2543   IF l_count > 0 THEN
2544    WHILE  l_count <= l_attr.last
2545    LOOP
2546     populate_pos_error_tab (p_request_id        =>p_request_id
2547                     ,p_record_id         =>l_count
2548                     ,p_position_id       =>NULL
2549                     ,p_business_group_id =>p_business_group_id
2550                     ,p_status            =>NVL(l_attr(l_count).status,'NULL')
2551                     ,p_indicator         =>NVL(l_attr(l_count).indicator,'NULL')
2552                     ,p_function_code     =>NVL(l_attr(l_count).function_code,'NULL')
2553                     ,p_department_code   =>NVL(l_attr(l_count).department_code,'NULL')
2554                     ,p_agency_code       =>NVL(l_attr(l_count).agency_code,'NULL')
2555                     ,p_poi               =>NVL(l_attr(l_count).poi,'NULL')
2556                     ,p_mrn               =>NVL(l_attr(l_count).mrn,'NULL')
2557                     ,p_grade             =>NVL(l_attr(l_count).grade,'NULL')
2558                     ,p_pos_num           =>NVL(l_attr(l_count).pos_num,'NULL')
2559                     ,p_incumbant_ssn     =>NVL(l_attr(l_count).incumbant_ssn,'NULL')
2560                     ,p_oblig_ssn         =>NULL
2561                      );
2562 
2563    l_count :=l_attr.next(l_count);
2564    END LOOP;
2565   END IF;
2566  ELSE
2567   DELETE FROM  ghr_pa_interface_err_dtls;
2568   OPEN c_get_pa_info;
2569   LOOP
2570    FETCH c_get_pa_info INTO l_get_pa_info;
2571    EXIT WHEN c_get_pa_info%NOTFOUND;
2572    IF l_temp_rcd_id <> l_get_pa_info.record_id THEN
2573     l_temp_rcd_id := l_get_pa_info.record_id;
2574    END IF;
2575    IF l_get_pa_info.string_val='S' THEN
2576     IF l_get_pa_info.seq_num >9 THEN
2577      l_attr_pa(l_get_pa_info.record_id).status := l_val||l_get_pa_info.seq_num;
2578     ELSE
2579      l_attr_pa(l_get_pa_info.record_id).status := l_val1||l_get_pa_info.seq_num;
2580     END IF;
2581    ELSIF l_get_pa_info.string_val='RPA_SSN' OR l_get_pa_info.string_val= 'REM_SSN'
2582      OR l_get_pa_info.string_val= 'ADD_SSN' THEN
2583     IF l_get_pa_info.seq_num >9 THEN
2584      l_attr_pa(l_get_pa_info.record_id).ssno := l_val||l_get_pa_info.seq_num;
2585     ELSE
2586      l_attr_pa(l_get_pa_info.record_id).ssno := l_val1||l_get_pa_info.seq_num;
2587     END IF;
2588    ELSIF l_get_pa_info.string_val='RPA_NFC_AGENCY' OR l_get_pa_info.string_val= 'REM_AGNCY_CD'
2589      OR l_get_pa_info.string_val= 'ADD_AGNCY_CD' THEN
2590     IF l_get_pa_info.seq_num >9 THEN
2591      l_attr_pa(l_get_pa_info.record_id).agency_code := l_val||l_get_pa_info.seq_num;
2592     ELSE
2593      l_attr_pa(l_get_pa_info.record_id).agency_code := l_val1||l_get_pa_info.seq_num;
2594     END IF;
2595 
2596    ELSIF l_get_pa_info.string_val='RPA_PMSO_DEPT' OR l_get_pa_info.string_val= 'REM_DEPT_CD' OR
2597     l_get_pa_info.string_val= 'ADD_DEPT_CODE' THEN
2598     IF l_get_pa_info.seq_num >9 THEN
2599      l_attr_pa(l_get_pa_info.record_id).department_code := l_val||l_get_pa_info.seq_num;
2600     ELSE
2601      l_attr_pa(l_get_pa_info.record_id).department_code := l_val1||l_get_pa_info.seq_num;
2602     END IF;
2603    ELSIF l_get_pa_info.string_val= 'RPA_POI' OR l_get_pa_info.string_val= 'REM_POI'
2604       OR l_get_pa_info.string_val= 'ADD_POI'  THEN
2605 
2606     IF l_get_pa_info.seq_num >9 THEN
2607      l_attr_pa(l_get_pa_info.record_id).poi := l_val||l_get_pa_info.seq_num;
2608     ELSE
2609      l_attr_pa(l_get_pa_info.record_id).poi := l_val1||l_get_pa_info.seq_num;
2610     END IF;
2611    ELSIF l_get_pa_info.string_val='063' OR l_get_pa_info.string_val='110'
2612         OR l_get_pa_info.string_val='347' THEN
2613     IF l_get_pa_info.seq_num >9 THEN
2614      l_attr_pa(l_get_pa_info.record_id).indicator  := l_val||l_get_pa_info.seq_num;
2615     ELSE
2616      l_attr_pa(l_get_pa_info.record_id).indicator  := l_val1||l_get_pa_info.seq_num;
2617     END IF;
2618 
2619    ELSIF l_get_pa_info.string_val='RPA_PAY_PERIOD_NUM' OR l_get_pa_info.string_val= 'REM_PAY_PER_NUM'
2620       OR l_get_pa_info.string_val= 'ADD_PAY_PER_NUM' THEN
2621     IF l_get_pa_info.seq_num >9 THEN
2622      l_attr_pa(l_get_pa_info.record_id).pay_per_num  := l_val||l_get_pa_info.seq_num;
2623     ELSE
2624      l_attr_pa(l_get_pa_info.record_id).pay_per_num  := l_val1||l_get_pa_info.seq_num;
2625     END IF;
2626 
2627    ELSIF l_get_pa_info.string_val='RPA_AUTH_DT' OR l_get_pa_info.string_val= 'AWD_AUTH_DT'  THEN
2628     IF l_get_pa_info.seq_num >9 THEN
2629      l_attr_pa(l_get_pa_info.record_id).auth_dt  := l_val||l_get_pa_info.seq_num;
2630     ELSE
2631      l_attr_pa(l_get_pa_info.record_id).auth_dt  := l_val1||l_get_pa_info.seq_num;
2632     END IF;
2633    ELSIF l_get_pa_info.string_val='RPA_FIRST_NOA_CD'
2634       OR l_get_pa_info.string_val= 'AWD_NAT_ACT_POS1' THEN
2635     IF l_get_pa_info.seq_num >9 THEN
2636      l_attr_pa(l_get_pa_info.record_id).noa1  := l_val||l_get_pa_info.seq_num;
2637     ELSE
2638      l_attr_pa(l_get_pa_info.record_id).noa1  := l_val1||l_get_pa_info.seq_num;
2639     END IF;
2640    ELSIF l_get_pa_info.string_val='RPA_SEC_NOA_CD' OR l_get_pa_info.string_val='AWD_NAT_ACT_POS2' THEN
2641     IF l_get_pa_info.seq_num >9 THEN
2642      l_attr_pa(l_get_pa_info.record_id).noa2  := l_val||l_get_pa_info.seq_num;
2643     ELSE
2644      l_attr_pa(l_get_pa_info.record_id).noa2  := l_val1||l_get_pa_info.seq_num;
2645     END IF;
2646    ELSIF l_get_pa_info.string_val='RPA_EFF_DATE' OR l_get_pa_info.string_val='AWD_PERS_EFF_DT'
2647     OR l_get_pa_info.string_val='ADD_EFF_DATE' THEN
2648     IF l_get_pa_info.seq_num >9 THEN
2649      l_attr_pa(l_get_pa_info.record_id).eff_dt  := l_val||l_get_pa_info.seq_num;
2650     ELSE
2651      l_attr_pa(l_get_pa_info.record_id).eff_dt  := l_val1||l_get_pa_info.seq_num;
2652     END IF;
2653    ELSIF l_get_pa_info.string_val='6700' THEN
2654     IF l_get_pa_info.seq_num >9 THEN
2655      l_attr_pa(l_get_pa_info.record_id).doc_typ  := l_val||l_get_pa_info.seq_num;
2656     ELSE
2657      l_attr_pa(l_get_pa_info.record_id).doc_typ  := l_val1||l_get_pa_info.seq_num;
2658     END IF;
2659    END IF;
2660   END LOOP;
2661   CLOSE c_get_pa_info;
2662   l_count:=l_attr_pa.first;
2663   l_count1:=l_attr_pa.count;
2664   IF l_count > 0 THEN
2665    WHILE  l_count <= l_attr_pa.last
2666    LOOP
2667    populate_pa_error_tab (p_request_id          =>p_request_id
2668                              ,p_record_id         =>l_count
2669                              ,p_person_id         =>NULL
2670                              ,p_business_group_id =>p_business_group_id
2671                              ,p_status            =>NVL(l_attr_pa(l_count).status,'NULL')
2672                              ,p_indicator         =>NVL(l_attr_pa(l_count).indicator,'NULL')
2673                              ,p_department_code   =>NVL(l_attr_pa(l_count).department_code,'NULL')
2674                              ,p_agency_code       =>NVL(l_attr_pa(l_count).agency_code,'NULL')
2675                              ,p_poi               =>NVL(l_attr_pa(l_count).poi,'NULL')
2676                              ,p_ssn               =>NVL(l_attr_pa(l_count).ssno,'NULL')
2677                              ,p_pay_per_num       =>NVL(l_attr_pa(l_count).pay_per_num,'NULL')
2678                              ,p_auth_dt           =>NVL(l_attr_pa(l_count).auth_dt,'NULL')
2679                              ,p_noa1              =>NVL(l_attr_pa(l_count).noa1,'NULL')
2680                              ,p_noa2              =>NVL(l_attr_pa(l_count).noa2,'NULL')
2681                              ,p_eff_dt            =>NVL(l_attr_pa(l_count).eff_dt,'NULL')
2682                              ,p_doc_typ           =>NVL(l_attr_pa(l_count).doc_typ,'NULL')
2683                              );
2684    l_count :=l_attr_pa.next(l_count);
2685    END LOOP;
2686   END IF;
2687  END IF;
2688   Hr_Utility.set_location('Leaving: '||l_proc_name, 5);
2689 
2690 END;
2691 
2692 
2693 
2694 ---============================================================================
2695 --PROCEDURE CHK_SAME_DAY_ACT_sun
2696 --This procedure checks for the original action and correction occured
2697 --on the same day.
2698 --When the original action is corrected, the report should have only one row
2699 --with original action but having the corrected value.
2700 --If the original action is cancelled, then both the rows are not sent.
2701 ---===========================================================================
2702 PROCEDURE CHK_SAME_DAY_ACT (p_request_id  IN NUMBER
2703                            ,p_rslt_id     IN NUMBER
2704                            )
2705 IS
2706 
2707 CURSOR c_chk_dup_action (cp_request_id NUMBER
2708                          ,cp_rslt_id     NUMBER
2709                          )
2710 IS
2711 SELECT berd.*
2712   FROM  ben_ext_rslt_dtl berd
2713  WHERE berd.request_id  =cp_request_id
2714    AND berd.ext_rslt_id =cp_rslt_id
2715    AND ( (berd.val_03   ='063'
2716    AND berd.val_29      IN ('001','002')
2717 		)
2718     OR (berd.val_03     ='110'
2719    AND berd.val_38      IN ('001','002')
2720 		)
2721    )
2722    ORDER BY berd.person_id, TO_DATE(berd.val_34,'MMDDYYYY') desc, to_number(berd.val_01) desc ; -- Bug 4923152
2723 
2724  CURSOR c_berd_values(cp_request_id NUMBER,
2725 					  cp_rslt_id NUMBER,
2726 					  cp_val_01 VARCHAR2) IS
2727   SELECT berd.*
2728 	FROM  ben_ext_rslt_dtl berd
2729 	WHERE berd.request_id  =cp_request_id
2730 	AND berd.ext_rslt_id =cp_rslt_id
2731 	AND berd.val_01 = cp_val_01;
2732 
2733  CURSOR c_rpa_values(c_pa_request_id ghr_pa_requests.pa_request_id%type) IS
2734  SELECT par.*
2735 	FROM ghr_pa_requests par
2736 	WHERE pa_request_id = c_pa_request_id;
2737 
2738  CURSOR c_rpa_for_person(c_person_id ghr_pa_requests.person_id%type,
2739 						 c_canc_rpa_id ghr_pa_requests.pa_request_id%type,
2740 						 c_approval_date ghr_pa_requests.approval_date%type)
2741 	IS
2742 	SELECT pa_request_id
2743 	FROM ghr_pa_requests
2744 	WHERE person_id = c_person_id
2745 	AND first_noa_cancel_or_correct = 'CANCEL'
2746 	AND pa_request_id < c_canc_rpa_id
2747 	AND TRUNC(approval_date) = c_approval_date;
2748 
2749  CURSOR c_child_rpas(c_pa_request_id  ghr_pa_requests.pa_request_id%type) IS
2750  SELECT pa_request_id
2751 	FROM ghr_pa_requests
2752 	WHERE pa_notification_id IS NOT NULL
2753 	START WITH pa_request_id = c_pa_request_id
2754 	CONNECT BY PRIOR pa_request_id = altered_pa_request_id; -- Bug 4923152
2755 
2756  CURSOR c_child_rpas_correct(c_pa_request_id  ghr_pa_requests.pa_request_id%type) IS
2757  SELECT pa_request_id
2758 	FROM ghr_pa_requests
2759 	WHERE pa_notification_id IS NOT NULL
2760 	START WITH pa_request_id = c_pa_request_id
2761 	CONNECT BY PRIOR altered_pa_request_id = pa_request_id; -- Bug 4923152
2762 
2763 TYPE t_del_rec IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
2764 l_del_rec t_del_rec;
2765 l_del_corr_rec t_del_rec;
2766 l_orig_pa ghr_pa_requests%rowtype;
2767 l_canc_pa ghr_pa_requests%rowtype;
2768 l_orig_pa_request_id ghr_pa_requests.pa_request_id%type;
2769 l_canc_pa_request_id ghr_pa_requests.pa_request_id%type;
2770 l_first_noa_code ghr_pa_requests.first_noa_code%type;
2771 l_second_noa_code ghr_pa_requests.second_noa_code%type;
2772 l_person_id ghr_pa_requests.person_id%type;
2773 l_berd_original ben_ext_rslt_dtl%rowtype;
2774 l_berd_corrected ben_ext_rslt_dtl%rowtype;
2775 TYPE t_correct_records IS TABLE OF ben_ext_rslt_dtl%rowtype INDEX BY PLS_INTEGER;
2776 l_correct_records t_correct_records;
2777 l_result NUMBER;
2778 TYPE t_skip_records IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
2779 l_skip_records t_skip_records;
2780 l_skip_this BOOLEAN;
2781 l_skip_person_id ghr_pa_requests.person_id%type;
2782 l_effective_date ghr_pa_requests.effective_date%type;
2783 
2784 PROCEDURE debug_prg(txt varchar2) IS
2785 BEGIN
2786 	hr_utility.set_location(txt,120);
2787 END debug_prg;
2788 
2789 BEGIN
2790 -- Loop through Cancellation and Correction actions.
2791 
2792 l_skip_person_id := -1;
2793 l_skip_records.delete;
2794 l_skip_this := FALSE;
2795 --delete from sun_temp;
2796 
2797 debug_prg('Before for loop');
2798 
2799 FOR l_chk_dup_action IN c_chk_dup_action(p_request_id,p_rslt_id) LOOP
2800 	-- If Cancellation action, check if original action was created on the same date
2801 	-- If yes and also if extract date is greater than approval date, delete both actions.
2802 
2803 		-- Initialise Values to NULL
2804 		l_orig_pa := NULL;
2805 		l_canc_pa := NULL;
2806 		l_first_noa_code := NULL;
2807 		l_second_noa_code := NULL;
2808 		l_orig_pa_request_id := NULL;
2809 		l_canc_pa_request_id := NULL;
2810 		l_person_id := NULL;
2811 		l_berd_original := NULL;
2812 		l_berd_corrected := NULL;
2813 		-- For Personnel actions other than Award
2814 		IF l_chk_dup_action.val_03 ='063' THEN
2815 			debug_prg('Before assigning values');
2816 			-- Assign values
2817 			l_first_noa_code := l_chk_dup_action.val_29;
2818 			l_second_noa_code := l_chk_dup_action.val_30;
2819 			l_effective_date := TO_DATE(l_chk_dup_action.val_34,'MMDDYYYY');
2820 			l_orig_pa_request_id := TO_NUMBER(l_chk_dup_action.val_150);
2821 			l_canc_pa_request_id := TO_NUMBER(l_chk_dup_action.val_01);
2822 			l_person_id := l_chk_dup_action.person_id;
2823 			debug_prg('Current RPA ID: ' || l_canc_pa_request_id);
2824 		ELSIF l_chk_dup_action.val_03 ='110' THEN
2825 			-- Assign values
2826 			l_first_noa_code := l_chk_dup_action.val_30;
2827 			l_second_noa_code := l_chk_dup_action.val_39;
2828 			l_effective_date := TO_DATE(l_chk_dup_action.val_33,'MMDDYYYY');
2829 			l_orig_pa_request_id := TO_NUMBER(l_chk_dup_action.val_55);
2830 			l_canc_pa_request_id := TO_NUMBER(l_chk_dup_action.val_01);
2831 			l_person_id := l_chk_dup_action.person_id;
2832 --			l_approval_date := l_chk_dup_action.val_57;
2833 			debug_prg('Current RPA ID: ' || l_canc_pa_request_id);
2834 		END IF; -- IF l_chk_dup_action.val_03 ='063' THEN
2835 
2836 		debug_prg('l_person_id: ' || l_person_id);
2837 		debug_prg('l_skip_person_id: ' || l_skip_person_id);
2838 
2839 		IF l_person_id = l_skip_person_id THEN
2840 			-- Ignore records already added to the list
2841 			IF l_skip_records.COUNT > 0 THEN
2842 				FOR l_already_del IN l_skip_records.FIRST .. l_skip_records.LAST LOOP
2843 					debug_prg('In Collection ' || l_skip_records(l_already_del));
2844 					debug_prg('Corr RPA ID ' || l_canc_pa_request_id);
2845 					IF l_canc_pa_request_id = l_skip_records(l_already_del) THEN
2846 						l_skip_this := TRUE;
2847 						EXIT;
2848 					END IF;
2849 					l_skip_this := FALSE;
2850 				END LOOP;
2851 			END IF;
2852 		ELSE
2853 			l_skip_records.DELETE;
2854 		END IF; -- 	IF l_person_id = l_skip_person_id
2855         debug_prg('Before l_skip_this = FALSE ');
2856 
2857 		IF l_skip_this = FALSE THEN
2858 			FOR l_orig_values IN c_rpa_values(l_orig_pa_request_id) LOOP
2859 				l_orig_pa := l_orig_values;
2860 			END LOOP;
2861 
2862 			FOR l_canc_values IN c_rpa_values(l_canc_pa_request_id) LOOP
2863 				l_canc_pa := l_canc_values;
2864 			END LOOP;
2865 
2866 			IF l_first_noa_code = '001' THEN
2867 				debug_prg('Before comparing dates');
2868 				-- If Actions done on the same date, add them to delete record.
2869 --				IF ghr_us_nfc_extracts.g_ext_start_dt >= TRUNC(l_orig_pa.approval_date) AND
2870 				IF (
2871 					(TRUNC(l_orig_pa.approval_date)
2872 					BETWEEN TRUNC(ghr_us_nfc_extracts.g_ext_start_dt) AND TRUNC(NVL(ghr_us_nfc_extracts.g_ext_end_dt,ghr_us_nfc_extracts.g_ext_start_dt))
2873 					)
2874 					OR
2875 					(TRUNC(l_orig_pa.effective_date)
2876 					BETWEEN TRUNC(ghr_us_nfc_extracts.g_ext_start_dt) AND TRUNC(NVL(ghr_us_nfc_extracts.g_ext_end_dt,ghr_us_nfc_extracts.g_ext_start_dt))
2877 					)
2878 					)
2879 				AND	TRUNC(l_orig_pa.approval_date) = TRUNC(l_canc_pa.approval_date) THEN
2880 					-- If it's Appointment action, delete all old actions done between appt and cancellation.
2881 					debug_prg('IF l_second_noa_code = 100');
2882 					IF l_second_noa_code = '100' THEN
2883 						l_del_rec(l_del_rec.count+1) := l_canc_pa_request_id;
2884 						FOR l_canc_appt IN c_rpa_for_person(l_person_id,l_canc_pa_request_id, TRUNC(l_canc_pa.approval_date)) LOOP
2885 							l_del_rec(l_del_rec.count+1) := l_canc_appt.pa_request_id;
2886 							l_skip_records(l_skip_records.count+1) := l_canc_appt.pa_request_id;
2887 						END LOOP;
2888 					ELSE
2889 						--l_del_rec(l_del_rec.count+1) := l_orig_pa_request_id;
2890 						-- Delete child records(canc/corr) too
2891 						FOR l_child_rpas IN c_child_rpas(l_orig_pa_request_id) LOOP
2892 							l_del_rec(l_del_rec.count+1) := l_child_rpas.pa_request_id;
2893 							debug_prg('Recs to be deleted1: ' || l_child_rpas.pa_request_id);
2894 							l_skip_records(l_skip_records.count+1) := l_child_rpas.pa_request_id;
2895 						END LOOP;
2896 					END IF; -- IF l_second_noa_code = '100' THEN
2897 					l_skip_person_id := l_person_id;
2898 				END IF; -- IF ghr_us_nfc_extracts.g_ext_star
2899 			-- Correction action goes here...
2900 			ELSIF l_first_noa_code = '002' THEN
2901 				----------
2902 				-- Berd corrected
2903 				l_berd_corrected := l_chk_dup_action;
2904 				-- Change sysdate after testing.
2905 				IF (
2906 					(TRUNC(l_orig_pa.approval_date)
2907 					BETWEEN TRUNC(ghr_us_nfc_extracts.g_ext_start_dt) AND TRUNC(NVL(ghr_us_nfc_extracts.g_ext_end_dt,ghr_us_nfc_extracts.g_ext_start_dt))
2908 					)
2909 					OR
2910 					(TRUNC(l_orig_pa.effective_date)
2911 					BETWEEN TRUNC(ghr_us_nfc_extracts.g_ext_start_dt) AND TRUNC(NVL(ghr_us_nfc_extracts.g_ext_end_dt,ghr_us_nfc_extracts.g_ext_start_dt))
2912 					)
2913 					)
2914 				AND	TRUNC(l_orig_pa.approval_date) = TRUNC(l_canc_pa.approval_date) THEN
2915 							--l_del_rec(l_del_corr_rec.count+1) := l_orig_pa_request_id;
2916 						-- Delete child records(canc/corr) too
2917 
2918 						FOR l_child_rpas IN c_child_rpas_correct(l_canc_pa_request_id) LOOP
2919 							l_del_rec(l_del_rec.count+1) := l_child_rpas.pa_request_id;
2920 							debug_prg('Recs to be deleted2: ' || l_child_rpas.pa_request_id);
2921 							l_skip_records(l_skip_records.count+1) := l_child_rpas.pa_request_id;
2922 							l_orig_pa_request_id := l_child_rpas.pa_request_id;
2923 						END LOOP;
2924 
2925 
2926 						-- Berd Original
2927 						FOR l_berd_org IN c_berd_values(p_request_id,p_rslt_id,l_orig_pa_request_id) LOOP
2928 							l_berd_original := l_berd_org;
2929 						END LOOP;
2930 
2931 						debug_prg('Before update: ' || l_berd_corrected.val_29);
2932 						upd_Rslt_Dtl(l_berd_corrected,l_berd_original);
2933 						debug_prg('After update: ' || l_berd_corrected.val_29);
2934 						l_correct_records(l_correct_records.count+1)  := l_berd_corrected;
2935 						l_skip_person_id := l_person_id;
2936 				END IF; -- IF ... >= TRUNC(l_orig_pa.approval_date)
2937 
2938 			END IF; -- IF l_first_noa_code = '001' THEN
2939 		END IF; -- IF l_skip_this = FALSE THE
2940 
2941 END LOOP; -- FOR l_chk_dup_action IN (
2942 
2943 -- For deletion
2944 IF l_del_rec.COUNT > 0 THEN
2945 
2946 	FOR l_recs IN l_del_rec.FIRST..l_del_rec.LAST LOOP
2947 	   debug_prg('RPA Id: ' || l_del_rec(l_recs));
2948 		-- Deletion code here
2949 		DELETE
2950 			FROM ben_ext_rslt_dtl berd
2951 			WHERE berd.request_id= p_request_id
2952 			AND berd.ext_rslt_id = p_rslt_id
2953 			AND val_01 = TO_CHAR(l_del_rec(l_recs));
2954 		-- -- Bug 4937846
2955 		DELETE
2956 			FROM ghr_pa_interface_err_dtls perr
2957 			WHERE perr.ext_request_id= p_request_id
2958 			AND perr.result_id = p_rslt_id
2959 			AND pa_request_id = l_del_rec(l_recs);
2960 
2961 	END LOOP;
2962 
2963 END IF;
2964 
2965 -- For updation of records.
2966 IF l_correct_records.COUNT > 0 THEN
2967 	FOR l_ins_recs IN l_correct_records.FIRST .. l_correct_records.LAST LOOP
2968 		debug_prg('RPA Id: ' || l_correct_records(l_ins_recs).val_01);
2969 		Ins_Rslt_Dtl(l_correct_records(l_ins_recs),l_result);
2970 		debug_prg('ins result: ' || l_result);
2971 	END LOOP;
2972 END IF;
2973 
2974 EXCEPTION
2975 WHEN OTHERS THEN
2976 	debug_prg('Sql code' || sqlcode || ' : ' || sqlerrm);
2977 	RAISE;
2978 END CHK_SAME_DAY_ACT;
2979 
2980 END ghr_nfc_error_proc;