DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_KR_SAMPLE_SEP_PKG

Source


1 package body pay_kr_sample_sep_pkg as
2 /*$Header: pykrsepl.pkb 115.8 2004/01/07 22:07:29 vborhade noship $ */
3 
4 --
5 -- Global Variables.
6 --
7 g_debug                boolean  :=  hr_utility.debug_enabled;
8 g_business_group_id    number;
9 g_legislation_code     varchar2(2);
10 g_assignment_id        number;
11 g_balance_type_id      number;
12 g_assignment_action_id number;
13 type start_date_tbl is table of date index by binary_integer;
14 type end_date_tbl is table of date index by binary_integer;
15 type wkpd_tbl is table of varchar2(6) index by binary_integer;
16 type working_period_rec is record(
17   start_date     start_date_tbl,
18   end_date       end_date_tbl,
19   wkpd           wkpd_tbl);
20 g_working_period working_period_rec;
21 --
22 type avg_val_rec is record(
23   base_assignment_action_id number,
24   base_action_sequence      number,
25   base_start_date           date,
26   base_end_date             date,
27   assignment_id             number,
28   effective_date            date,
29   assignment_action_id      number,
30   action_sequence           number,
31   assignment_action_id1     number,
32   avg_sal1                  number,
33   avg_sal1_std              date,
34   avg_sal1_edd              date,
35   avg_sal1_wkd              number,
36   assignment_action_id2     number,
37   avg_sal2                  number,
38   avg_sal2_std              date,
39   avg_sal2_edd              date,
40   avg_sal2_wkd              number,
41   assignment_action_id3     number,
42   avg_sal3                  number,
43   avg_sal3_std              date,
44   avg_sal3_edd              date,
45   avg_sal3_wkd              number,
46   assignment_action_id4     number,
47   avg_sal4                  number,
48   avg_sal4_std              date,
49   avg_sal4_edd              date,
50   avg_sal4_wkd              number,
51   assignment_action_idb     number,
52   action_sequenceb          number,
53   avg_bon                   number,
54   avg_bon_std               date,
55   avg_bon_edd               date,
56   assignment_action_ida     number,
57   action_sequencea          number,
58   avg_alr                   number,
59   avg_alr_std               date,
60   avg_alr_edd               date);
61 g_avg_val avg_val_rec;
62 --
63 type assignment_action_id_tbl is table of number index by binary_integer;
64 type action_sequence_tbl is table of number index by binary_integer;
65 type assignment_id_tbl is table of number index by binary_integer;
66 type effective_date_tbl is table of date index by binary_integer;
67 type base_assignment_action_id_tbl is table of number index by binary_integer;
68 type base_action_sequence_tbl is table of number index by binary_integer;
69 type base_start_date_tbl is table of date index by binary_integer;
70 type base_end_date_tbl is table of date index by binary_integer;
71 type target_start_date_tbl is table of date index by binary_integer;
72 type target_end_date_tbl is table of date index by binary_integer;
73 type past_action_rec is record(
74   assignment_action_id      assignment_action_id_tbl,
75   action_sequence           action_sequence_tbl,
76   assignment_id             assignment_id_tbl,
77   effective_date            effective_date_tbl,
78   base_assignment_action_id base_assignment_action_id_tbl,
79   base_action_sequence      base_action_sequence_tbl,
80   base_start_date           base_start_date_tbl,
81   base_end_date             base_end_date_tbl,
82   target_start_date         target_start_date_tbl,
83   target_end_date           target_end_date_tbl);
84 g_mth_past_action past_action_rec;
85 g_bon_past_action past_action_rec;
86 g_alr_past_action past_action_rec;
87 --
88 g_avg_yearly_divide_num number;
89 g_avg_mth_divide_num number;
90 --
91 -- Constant on each business group level
92 -- (if these are defined on each business place level,
93 --  Org information or Payroll information may be proper storage.)
94 --
95 c_mode            varchar2(5) := 'MONTH'; /* MONTH, DAY */
96 c_wp_for_sep_unit varchar2(5) := 'MONTH'; /* YEAR, MONTH, DAY */
97 c_dly_yy_unit     number := 365;
98 c_dly_mm_unit     number := 30;
99 --
100 --------------------------------------------------------------------------------
101 function get_wkpd(p_start_date  in date,
102                   p_end_date    in date) return varchar2
103 --------------------------------------------------------------------------------
104 is
105 --
106   l_yy number;
107   l_mm number;
108   l_mb number;
109   l_dd number;
110   l_wp varchar2(6);
111 --
112 begin
113 --
114   if c_mode = 'MONTH' then
115     l_mb := months_between(p_end_date , p_start_date );
116 /*    l_mm := to_number(to_char(p_end_date,'MM')) + 12 - to_number(to_char(p_start_date,'MM'));*/
117     if l_mb -12 >= 0 then
118       l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY'));
119       l_mm := l_mb - 12;
120     else
121       l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY')) - 1;
122       --l_mm := l_mm;
123     end if;
124     /* 2000/11/14,2001/01/12       */
125     /* --------------------------- */
126     /* l_mm = 01 + 12 - 11 = 02    */
127     /* l_mm - 12 < 0               */
128     /* l_yy = 2001 - 2000 - 1 = 00 */
129     /* yymm = 0002                 */
130     l_wp := lpad(to_char(l_yy),2,'0')||lpad(to_char(l_mm),2,'0');
131   else
132     l_dd := (trunc(p_end_date,'DD') - add_months(trunc(p_end_date,'MM'),-1) + 1) - to_number(to_char(p_start_date,'DD'));
133     if l_dd - c_dly_mm_unit >= 0 then
134       l_dd := l_dd - c_dly_mm_unit;
135       l_mm := to_number(to_char(p_end_date,'MM')) + 12 - to_number(to_char(p_start_date,'MM'));
136       if l_mm - 12 >= 0 then
137         l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY'));
138         l_mm := l_mm - 12;
139       else
140         l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY')) - 1;
141         --l_mm := l_mm;
142       end if;
143     else
144       --l_dd := l_dd;
145       l_mm := (to_number(to_char(p_end_date,'MM')) -1) + 12 - to_number(to_char(p_start_date,'MM'));
146       if l_mm -12 >= 0 then
147         l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY'));
148         l_mm := l_mm - 12;
149       else
150         l_yy := to_number(to_char(p_end_date,'YYYY')) - to_number(to_char(p_start_date,'YYYY')) - 1;
151         --l_mm := l_mm;
152       end if;
153     end if;
154     /* 2000/11/14,2001/01/12                                    */
155     /* -------------------------------------------------------- */
156     /* l_dd = (2001/01/12 - 2000/12/01 + 1) - 14 = 43 - 14 = 29 */
157     /* c_dly_mm_unit = 30                                       */
158     /* l_dd - 30 < 0                                            */
159     /* l_dd = 29                                                */
160     /* l_mm = 01 - 1 + 12 - 11 = 1                              */
161     /* l_mm - 12 < 0                                            */
162     /* l_yy = 2001 - 2000 - 1 = 00                              */
163     /* l_mm = 1                                                 */
164     /* yymmdd = 000129                                          */
165     l_wp := lpad(to_char(l_yy),2,'0')||lpad(to_char(l_mm),2,'0')||lpad(to_char(l_dd),2,'0');
166   end if;
167 return	l_wp;
168 end get_wkpd;
169 --------------------------------------------------------------------------------
170 function get_wkpd_exclude(p_assignment_id in number,
171                           p_start_date    in date,
172                           p_end_date      in date,
173                           p_exclude_flag  in varchar2) return varchar2
174 --------------------------------------------------------------------------------
175 is
176   cursor csr_exclude_period
177   is
178   select greatest(pa.effective_start_date,p_start_date)	effective_start_date,
179          least(pa.effective_end_date,p_end_date)        effective_end_date
180   from   per_assignment_status_types	past,
181          per_assignments_f		pa
182   where  pa.assignment_id = p_assignment_id
183   and    pa.effective_end_date >= p_start_date
184   and    pa.effective_start_date <= p_end_date
185   and    past.assignment_status_type_id = pa.assignment_status_type_id
186   -- This enhancement was denied by core team.
187   --and  past.past_information_context = 'KR'
188   --and  past.past_information1 <> 'Y'
189   --and  past.pay_system_status <> 'P'
190   and    past.per_system_status <> 'ACTIVE_ASSIGN';
191 --
192   l_csr_exclude_period csr_exclude_period%rowtype;
193 --
194   type exclude_wp_tbl is table of varchar2(6) index by binary_integer;
195 --
196   exclude_wp     exclude_wp_tbl;
197   sum_exclude_yy number := 0;
198   sum_exclude_mm number := 0;
199   sum_exclude_dd number := 0;
200   wp_yy          number;
201   wp_mm          number;
202   wp_dd          number;
203   l_wp           varchar2(6);
204 --
205   l_exc_cnt      number := 0;
206   l_index binary_integer;
207   l_found boolean := FALSE;
208 --
209 begin
210 --
211   if g_assignment_id is null or p_assignment_id <> g_assignment_id then
212     g_working_period.start_date.delete;
213     g_working_period.end_date.delete;
214     g_working_period.wkpd.delete;
215     g_assignment_id := p_assignment_id;
216   end if;
217 --
218   l_index := g_working_period.start_date.count;
219   for i in 1..l_index loop
220     if g_working_period.start_date(i) = p_start_date
221        and g_working_period.end_date(i) = p_end_date then
222       l_wp := g_working_period.wkpd(i);
223       l_found := TRUE;
224       exit;
225     end if;
226   end loop;
227 --
228   if not l_found then
229     if p_exclude_flag = 'Y' then
230       open csr_exclude_period;
231       loop
232       fetch csr_exclude_period into l_csr_exclude_period;
233       exit when csr_exclude_period%notfound;
234       exclude_wp(l_exc_cnt) := get_wkpd(p_start_date  => l_csr_exclude_period.effective_start_date,
235                                         p_end_date    => l_csr_exclude_period.effective_end_date);
236       if l_exc_cnt > 0 then
237         sum_exclude_yy := to_number(substrb(exclude_wp(l_exc_cnt -1),1,2)) + to_number(substrb(exclude_wp(l_exc_cnt),1,2));
238         sum_exclude_mm := to_number(substrb(exclude_wp(l_exc_cnt -1),3,4)) + to_number(substrb(exclude_wp(l_exc_cnt),3,4));
239         if c_mode = 'MONTH' then
240           if sum_exclude_mm >= 12 then
241             sum_exclude_yy := sum_exclude_yy + 1;
242             sum_exclude_mm := sum_exclude_mm - 12;
243           end if;
244         else
245           if sum_exclude_dd >= c_dly_mm_unit then
246             sum_exclude_mm := sum_exclude_mm + 1;
247             sum_exclude_dd := sum_exclude_dd - c_dly_mm_unit;
248           end if;
249           if sum_exclude_mm >= 12 then
250             sum_exclude_yy := sum_exclude_yy + 1;
251             sum_exclude_mm := sum_exclude_mm - 12;
252           end if;
253         end if;
254       end if;
255       l_exc_cnt := l_exc_cnt + 1;
256       end loop;
257       close csr_exclude_period;
258       l_wp := get_wkpd(p_start_date  => p_start_date,
259                        p_end_date    => p_end_date);
260       if c_mode = 'MONTH' then
261         wp_mm := to_number(substrb(l_wp,3,4)) + 12 - sum_exclude_mm;
262         wp_yy := to_number(substrb(l_wp,1,2)) - sum_exclude_yy;
263         if wp_mm - 12 >= 0 then
264           wp_mm := wp_mm - 12;
265           --wp_yy := wp_yy;
266         else
267           --wp_mm := wp_mm;
268           wp_yy := wp_yy -1;
269         end if;
270       else
271         wp_dd := to_number(substrb(l_wp,5,6)) + c_dly_mm_unit - sum_exclude_dd;
272         wp_mm := to_number(substrb(l_wp,3,4));
273         if wp_dd - c_dly_mm_unit >= 0 then
274           wp_dd := wp_dd - c_dly_mm_unit;
275           --wp_mm := wp_mm;
276         else
277           wp_dd := wp_dd;
278           --wp_mm := wp_mm - 1;
279         end if;
280         wp_mm := wp_mm + 12 - sum_exclude_mm;
281         wp_yy := to_number(substrb(l_wp,1,2)) - sum_exclude_yy;
282         if wp_mm - 12 >= 0 then
283           wp_mm := wp_mm - 12;
284           --wp_yy := wp_yy;
285         else
286           --wp_mm := wp_mm;
287           wp_yy := wp_yy -1;
288         end if;
289       end if;
290       l_wp := lpad(to_char(wp_yy),2,'0')||lpad(to_char(wp_mm),2,'0')||lpad(to_char(wp_dd),2,'0');
291     else
292       l_wp := get_wkpd(p_start_date  => p_start_date,
293                        p_end_date    => p_end_date);
294     end if;
295     g_working_period.start_date(l_index + 1) := p_start_date;
296     g_working_period.end_date(l_index + 1) := p_end_date;
297     g_working_period.wkpd(l_index + 1) := l_wp;
298   end if;
299 --
300 return  l_wp;
301 end  get_wkpd_exclude;
302 --------------------------------------------------------------------------------
303 function get_wkpd_for_calc(p_assignment_id  in number,
304                            p_working_period in varchar2,
305                            p_wp_format_flag in varchar2, /* Y(YYMMDD), N(XXX) */
306                            p_type           in varchar2) /* EARNING, TAX */ return number
307 --------------------------------------------------------------------------------
308 is
309   l_wp_yy                 number;
310   l_wp_mm                 number;
311   l_wp_dd                 number;
312   l_target                number;
313 --
314 begin
315 --
316   if g_avg_mth_divide_num is null
317      or g_avg_yearly_divide_num is null then
318     if c_mode = 'MONTH' then
319       g_avg_mth_divide_num := 3;
320       g_avg_yearly_divide_num := 12;
321     elsif c_mode = 'DAY' then
322       g_avg_mth_divide_num := c_dly_mm_unit;
323       g_avg_yearly_divide_num := c_dly_yy_unit;
324     end if;
325   end if;
326 --
327   if p_type = 'EARNING' then
328   /* l_target unit is year */
329     /* calculation for YYMMDD format */
330     if p_wp_format_flag = 'Y' then
331       --
332       l_wp_yy := to_number(substrb(p_working_period,1,2));
333       l_wp_mm := to_number(substrb(p_working_period,3,4));
334       --
335       if c_wp_for_sep_unit = 'YEAR' then
336         l_target := l_wp_yy + round(l_wp_mm/12,0);
337       elsif c_wp_for_sep_unit = 'MONTH' then
338         l_target := (l_wp_yy * 12 + l_wp_mm)/12;
339       else
340         l_wp_dd := to_number(substrb(p_working_period,5,6));
341         l_target := (l_wp_yy * c_dly_yy_unit + l_wp_mm * c_dly_mm_unit + l_wp_dd)/c_dly_yy_unit;
342       end if;
343     /* calculation for XXXX format */
344     else
345       if c_wp_for_sep_unit = 'YEAR' then
346         l_target := to_number(p_working_period);
347       elsif c_wp_for_sep_unit = 'MONTH' then
348         l_target := to_number(p_working_period)/12;
349       else
350         l_target := to_number(p_working_period)/c_dly_yy_unit;
351       end if;
352     end if;
353   elsif p_type = 'TAX' then
354   /* l_target unit is month */
355     /* calculation for YYMMDD format */
356     if p_wp_format_flag = 'Y' then
357       --
358       l_wp_yy := to_number(substrb(p_working_period,1,2));
359       l_wp_mm := to_number(substrb(p_working_period,3,4));
360       --
361       l_target := l_wp_yy * 12 + l_wp_mm;
362       if c_mode = 'DAY' then
363         l_wp_dd := to_number(substrb(p_working_period,5,6));
364         if l_wp_dd - 15 > 0 then
365           l_target := l_target + 1;
366         --else
367         --  l_target := l_target;
368         end if;
369       end if;
370     /* calculation for XXXX format */
371     else
372       if c_wp_for_sep_unit = 'YEAR' then
373         l_target := to_number(p_working_period) * 12;
374         if l_target - trunc(l_target,0) > 0 then
375           l_target := l_target + 1;
376         --else
377         --  l_target := l_target;
378         end if;
379       elsif c_wp_for_sep_unit = 'MONTH' then
380         l_target := to_number(p_working_period);
381         if l_target - trunc(l_target,0) > 0 then
382           l_target := l_target + 1;
383         --else
384         --  l_target := l_target;
385         end if;
386       else
387         if c_mode = 'DAY' then
388           l_target := to_number(p_working_period)/c_dly_mm_unit;
389           if l_target - trunc(l_target,0) > 0 then
390             l_target := l_target + 1;
391           --else
392           --  l_target := l_target;
393           end if;
394         end if;
395       end if;
396     end if;
397   end if;
398 --
399 return	l_target;
400 end get_wkpd_for_calc;
401 --------------------------------------------------------------------------------
402 function get_avg_sal(p_assignment_id        in number,
403                      p_type                 in varchar2, /* MTH,BON,ALR */
404                      p_effective_date       in date,
405                      p_base_action_sequence in number,
406                      p_action_sequence4     in number,
407                      p_target_start_date    in date,
408                      p_target_end_date      in date,
409                      p_balance_type_id      in number) return number
410 --------------------------------------------------------------------------------
411 is
412 --
413 	l_target_value	number;
414 --
415 	cursor	csr_value
416 	is
417 	select
418 		nvl(sum(fnd_number.canonical_to_number(prrv.result_value) * pbf.scale),0)
419 	from	pay_balance_feeds_f		pbf,
420 		pay_run_result_values		prrv,
421 		pay_run_results			prr,
422 		(select /*+ INDEX(ppa PAY_PAYROLL_ACTIONS_N5)  */
423                         paa.assignment_action_id	assignment_action_id,
424 			ppa.effective_date		effective_date
425 		from
426 	--		per_time_periods		ptp,
427 			per_assignment_status_types	past,
428 			per_assignments_f		pa,
429 			pay_payroll_actions		ppa,
430 			pay_run_types_f			prt,
431 			pay_assignment_actions		paa
432 		where	paa.assignment_id = p_assignment_id
433 		and	paa.action_status = 'C'
434 		and	prt.run_type_id = paa.run_type_id
435 		and	p_effective_date
436 			between prt.effective_start_date and prt.effective_end_date
437 		and	prt.run_type_name like decode(p_type,
438 						'BON','BON%',
439 						'ALR','BON_ALR',
440 						'MTH')
441 		and	not exists(
442 				select	null
443 				from	pay_run_types_f	prt2
444 				where	prt2.run_type_id = prt.run_type_id
445 				and	prt2.effective_start_date = prt.effective_start_date
446 				and	prt2.effective_end_date = prt.effective_end_date
447 				and	prt2.run_type_name = decode(p_type,
448 									'BON','BON_ALR',
449 									'XXX'))
450 		and	paa.action_sequence >= decode(p_type,
451 						'MTH',p_action_sequence4,
452 						'BON',paa.action_sequence)
453 		and	paa.action_sequence < p_base_action_sequence
454 		and	ppa.payroll_action_id = paa.payroll_action_id
455 		and	ppa.effective_date
456 			between p_target_start_date and p_target_end_date
457 		and	pa.assignment_id = paa.assignment_id
458 		and	ppa.effective_date
459 			between pa.effective_start_date and pa.effective_end_date
460 		and	past.assignment_status_type_id = pa.assignment_status_type_id
461 		/* Denied this enhancement by Core Team */
462 	--	and	past.past_information_context = 'KR'
463 	--	and	past.past_information1 = 'Y'
464 	--	and	past.pay_system_status = 'P'
465 		and	past.per_system_status = 'ACTIVE_ASSIGN')	V1
466 	--	and	ptp.time_period_id = ppa.time_period_id)	V1
467 	where	prr.assignment_action_id = V1.assignment_action_id
468 	and	prr.status in ('P','PA')
469 	and	prrv.run_result_id = prr.run_result_id
470 	and	nvl(prrv.result_value,'0') <> '0'
471 	and	pbf.balance_type_id = p_balance_type_id
472 	and	pbf.input_value_id = prrv.input_value_id
473 	and	V1.effective_date
474 		between pbf.effective_start_date and pbf.effective_end_date;
475 --
476 begin
477 --
478   open  csr_value;
479   fetch csr_value into l_target_value;
480   close csr_value;
481 
482   if g_debug then
483     hr_utility.trace('p_base_action_sequence ' || p_base_action_sequence);
484     hr_utility.trace('p_target_start_date  ' || p_target_start_date);
485     hr_utility.trace('p_target_end_date  ' || p_target_end_date);
486     hr_utility.trace('p_action_sequence4 ' || p_action_sequence4);
487     hr_utility.trace('p_type ' || p_type);
488     hr_utility.trace('l_targe_value ' || l_target_value);
489   end if;
490 --
491 return l_target_value;
492 end get_avg_sal;
493 --------------------------------------------------------------------------------
494 function get_avg_val(p_business_group_id     in number,
495                      p_assignment_action_id  in number,
496                      p_performance_flag      in varchar2,
497                      p_assignment_action_id1 out nocopy number,
498                      p_avg_sal1              out nocopy number,
499                      p_avg_sal1_std          out nocopy date,
500                      p_avg_sal1_edd          out nocopy date,
501                      p_avg_sal1_wkd          out nocopy number,
502                      p_assignment_action_id2 out nocopy number,
503                      p_avg_sal2              out nocopy number,
504                      p_avg_sal2_std          out nocopy date,
505                      p_avg_sal2_edd          out nocopy date,
506                      p_avg_sal2_wkd          out nocopy number,
507                      p_assignment_action_id3 out nocopy number,
508                      p_avg_sal3              out nocopy number,
509                      p_avg_sal3_std          out nocopy date,
510                      p_avg_sal3_edd          out nocopy date,
511                      p_avg_sal3_wkd          out nocopy number,
512                      p_assignment_action_id4 out nocopy number,
513                      p_avg_sal4              out nocopy number,
514                      p_avg_sal4_std          out nocopy date,
515                      p_avg_sal4_edd          out nocopy date,
516                      p_avg_sal4_wkd          out nocopy number,
517                      p_assignment_action_idb out nocopy number,
518                      p_avg_bon               out nocopy number,
519                      p_assignment_action_ida out nocopy number,
520                      p_avg_alr               out nocopy number) return number
521 --------------------------------------------------------------------------------
522 is
523   l_type			varchar2(3);
524   l_end_date			date;
525   l_row_cnt			number;
526   l_prev_action_cnt		number := 4;
527   l_rate			number := 1;
528   l_found                       boolean := FALSE;
529   l_dummy			number := 0;
530   l_mth_index			binary_integer;
531   l_bon_index			binary_integer;
532   l_alr_index			binary_integer;
533 --
534 	cursor	csr_balance_type_id
535 	is
536 	select	balance_type_id
537 	from	pay_balance_types
538 	where	legislation_code = g_legislation_code
539 	and	balance_name = 'EARNINGS_SUBJ_AVG';
540 --
541 	cursor	csr_past_action
542 	is
543 	select	paa.assignment_action_id	assignment_action_id,
544 		paa.action_sequence		action_sequence,
545 		bpaa.assignment_id		assignment_id,
546 		bppa.effective_date		effective_date,
547 		bpaa.assignment_action_id	base_assignment_action_id,
548 		bpaa.action_sequence		base_action_sequence,
549 	 	to_date('01/04/2002','DD/MM/YYYY') base_start_date,
550 		to_date('30/04/2002','DD/MM/YYYY') base_end_date,
551 		ptp.start_date			target_start_date,
552 		ptp.end_date			target_end_date
553 	from	per_time_periods		ptp,
554 		per_assignment_status_types	past,
555 		per_assignments_f		pa,
556 		pay_payroll_actions		ppa,
557 		pay_run_types_f			prt,
558 		pay_assignment_actions		paa,
559 --		per_time_periods		bptp,
560 		pay_payroll_actions		bppa,
561 		pay_assignment_actions		bpaa
562 	where	bpaa.assignment_action_id = p_assignment_action_id
563 	and	bppa.payroll_action_id = bpaa.payroll_action_id
564 --	and	bptp.time_period_id = bppa.time_period_id
565 	and	paa.assignment_id = bpaa.assignment_id
566 	and	paa.action_status = 'C'
567 	and	prt.run_type_id = paa.run_type_id
568 	and	prt.run_type_name like decode(l_type,
569 						'BON','BON%',
570 						'ALR','BON_ALR',
571 						'MTH')
572 	and	not exists(
573 			select	null
574 			from	pay_run_types_f	prt2
575 			where	prt2.run_type_id = prt.run_type_id
576 			and	prt2.effective_start_date = prt.effective_start_date
577 			and	prt2.effective_end_date = prt.effective_end_date
578 			and	prt2.run_type_name = decode(l_type,
579 								'BON','BON_ALR',
580 								'XXX'))
581 	and	bppa.effective_date
582 		between prt.effective_start_date and prt.effective_end_date
583 	and	paa.action_sequence < bpaa.action_sequence
584 	and	ppa.payroll_action_id = paa.payroll_action_id
585 --	and	ppa.effective_date <= bptp.end_date
586 	and	ppa.effective_date >= decode(l_type,
587 					'MTH',decode(p_performance_flag,
588 							'N',ppa.effective_date,
589 							add_months(bppa.effective_date -1,-12)),
590 					'BON',add_months(bppa.effective_date -1,-12),
591 					'ALR',add_months(bppa.effective_date -1,-12))
592 	and	ppa.action_type <> 'V'
593 	and	not exists(
594 			select	null
595 			from	pay_payroll_actions	rppa,
596 				pay_assignment_actions	rpaa,
597 				pay_action_interlocks	pai
598 			where	pai.locked_action_id = paa.assignment_action_id
599 			and	rpaa.assignment_action_id = pai.locking_action_id
600 			and	rppa.payroll_action_id = rpaa.payroll_action_id
601 			and	rppa.action_type = 'V')
602 	and	pa.assignment_id = paa.assignment_id
603 	and	ppa.effective_date
604 		between pa.effective_start_date and pa.effective_end_date
605 	and	past.assignment_status_type_id = pa.assignment_status_type_id
606 	/* Denied this enhancement by Core Team */
607 --	and	past.past_information_context = 'KR'
608 --	and	past.past_information1 = 'Y'
609 --	and	past.pay_system_status = 'P'
610 	and	past.per_system_status = 'ACTIVE_ASSIGN'
611 	and	ptp.time_period_id = ppa.time_period_id
612 	order by paa.action_sequence desc;
613 --
614 begin
615 --
616 -- Initialize
617 --
618 --  p_assignment_action_id1 := -1;
619 --  p_avg_sal1              := 0;
620 --  p_avg_sal1_std          := hr_api.g_sot;
621 --  p_avg_sal1_edd          := hr_api.g_sot;
622 --  p_avg_sal1_wkd          := 0;
623 --  p_assignment_action_id2 := -1;
624 --  p_avg_sal2              := 0;
625 --  p_avg_sal2_std          := hr_api.g_sot;
626 --  p_avg_sal2_edd          := hr_api.g_sot;
627 --  p_avg_sal2_wkd          := 0;
628 --  p_assignment_action_id3 := -1;
629 --  p_avg_sal3              := 0;
630 --  p_avg_sal3_std          := hr_api.g_sot;
631 --  p_avg_sal3_edd          := hr_api.g_sot;
632 --  p_avg_sal3_wkd          := 0;
633 --  p_assignment_action_id4 := -1;
634 --  p_avg_sal4              := 0;
635 --  p_avg_sal4_std          := hr_api.g_sot;
636 --  p_avg_sal4_edd          := hr_api.g_sot;
637 --  p_avg_sal4_wkd          := 0;
638 --  p_assignment_action_idb := -1;
639 --  p_avg_bon               := 0;
640 --  p_assignment_action_ida := -1;
641 --  p_avg_alr               := 0;
642 --
643   if g_business_group_id is null or g_business_group_id <> p_business_group_id then
644     g_legislation_code := pay_kr_report_pkg.legislation_code(p_business_group_id);
645     g_business_group_id := p_business_group_id;
646     --
647     open  csr_balance_type_id;
648     fetch csr_balance_type_id into g_balance_type_id;
649     close csr_balance_type_id;
650     --
651   end if;
652 --
653 
654   if g_debug then
655     hr_utility.trace('g_balance_type_id' || g_balance_type_id);
656     hr_utility.trace('p_business_group_id' || p_business_group_id);
657     hr_utility.trace('p_performance_flag ' || p_performance_flag);
658     hr_utility.trace('p_assignment_action_id ' || p_assignment_action_id);
659     hr_utility.trace('g_avg_val.base_assignment_action_id' || g_avg_val.base_assignment_action_id);
660   end if;
661 
662   if g_avg_val.base_assignment_action_id is null or g_avg_val.base_assignment_action_id <> p_assignment_action_id then
663     g_avg_val.base_assignment_action_id := p_assignment_action_id;
664     g_avg_val.base_action_sequence  := -1;
665     g_avg_val.base_start_date       := hr_api.g_sot;
666     g_avg_val.base_end_date         := hr_api.g_sot;
667     g_avg_val.assignment_id         := -1;
668     g_avg_val.effective_date        := hr_api.g_sot;
669     g_avg_val.assignment_action_id  := -1;
670     g_avg_val.action_sequence       := -1;
671     g_avg_val.assignment_action_id1 := -1;
672     g_avg_val.avg_sal1              := 0;
673     g_avg_val.avg_sal1_std          := hr_api.g_sot;
674     g_avg_val.avg_sal1_edd          := hr_api.g_sot;
675     g_avg_val.avg_sal1_wkd          := 0;
676     g_avg_val.assignment_action_id2 := -1;
677     g_avg_val.avg_sal2              := 0;
678     g_avg_val.avg_sal2_std          := hr_api.g_sot;
679     g_avg_val.avg_sal2_edd          := hr_api.g_sot;
680     g_avg_val.avg_sal2_wkd          := 0;
681     g_avg_val.assignment_action_id3 := -1;
682     g_avg_val.avg_sal3              := 0;
683     g_avg_val.avg_sal3_std          := hr_api.g_sot;
684     g_avg_val.avg_sal3_edd          := hr_api.g_sot;
685     g_avg_val.avg_sal3_wkd          := 0;
686     g_avg_val.assignment_action_id4 := -1;
687     g_avg_val.avg_sal4              := 0;
688     g_avg_val.avg_sal4_std          := hr_api.g_sot;
689     g_avg_val.avg_sal4_edd          := hr_api.g_sot;
690     g_avg_val.avg_sal4_wkd          := 0;
691     g_avg_val.assignment_action_idb := -1;
692     g_avg_val.action_sequenceb      := -1;
693     g_avg_val.avg_bon               := 0;
694     g_avg_val.avg_bon_std           := hr_api.g_sot;
695     g_avg_val.avg_bon_edd           := hr_api.g_sot;
696     g_avg_val.assignment_action_ida := -1;
697     g_avg_val.action_sequencea      := -1;
698     g_avg_val.avg_alr               := 0;
699     g_avg_val.avg_alr_std           := hr_api.g_sot;
700     g_avg_val.avg_alr_edd           := hr_api.g_sot;
701   --
702     g_mth_past_action.assignment_action_id.delete;
703     g_mth_past_action.action_sequence.delete;
704     g_mth_past_action.assignment_id.delete;
705     g_mth_past_action.effective_date.delete;
706     g_mth_past_action.base_assignment_action_id.delete;
707     g_mth_past_action.base_action_sequence.delete;
708     g_mth_past_action.base_start_date.delete;
709     g_mth_past_action.base_end_date.delete;
710     g_mth_past_action.target_start_date.delete;
711     g_mth_past_action.target_end_date.delete;
712   --
713     g_bon_past_action.assignment_action_id.delete;
714     g_bon_past_action.action_sequence.delete;
715     g_bon_past_action.assignment_id.delete;
716     g_bon_past_action.effective_date.delete;
717     g_bon_past_action.base_assignment_action_id.delete;
718     g_bon_past_action.base_action_sequence.delete;
719     g_bon_past_action.base_start_date.delete;
720     g_bon_past_action.base_end_date.delete;
721     g_bon_past_action.target_start_date.delete;
722     g_bon_past_action.target_end_date.delete;
723   --
724     g_alr_past_action.assignment_action_id.delete;
725     g_alr_past_action.action_sequence.delete;
726     g_alr_past_action.assignment_id.delete;
727     g_alr_past_action.effective_date.delete;
728     g_alr_past_action.base_assignment_action_id.delete;
729     g_alr_past_action.base_action_sequence.delete;
730     g_alr_past_action.base_start_date.delete;
731     g_alr_past_action.base_end_date.delete;
732     g_alr_past_action.target_start_date.delete;
733     g_alr_past_action.target_end_date.delete;
734   --
735   else
736     l_found := TRUE;
737   end if;
738 --
739   if not l_found then
740     l_type := 'MTH';
741     l_end_date := hr_api.g_eot;
742     l_row_cnt := 0;
743   --
744     if g_debug then
745       hr_utility.trace('l_end_date' || l_end_date);
746     end if;
747 
748     l_mth_index := g_mth_past_action.assignment_action_id.count;
749 
750     if g_debug then
751       hr_utility.trace('l_mth_index ' || l_mth_index);
752     end if;
753 
754     for i in 1..l_mth_index loop
755       if g_mth_past_action.target_end_date(i) <> l_end_date then
756          l_end_date := g_mth_past_action.target_end_date(i);
757          l_row_cnt := l_row_cnt + 1;
758          if l_row_cnt > l_prev_action_cnt then
759            exit;
760          end if;
761          l_found := TRUE;
762       end if;
763       g_avg_val.assignment_action_id := g_mth_past_action.assignment_action_id(i);
764       g_avg_val.action_sequence := g_mth_past_action.action_sequence(i);
765       if l_row_cnt = 1 then
766         g_avg_val.assignment_action_id1     := g_mth_past_action.assignment_action_id(i);
767         g_avg_val.assignment_id             := g_mth_past_action.assignment_id(i);
768         g_avg_val.effective_date            := g_mth_past_action.effective_date(i);
769         g_avg_val.base_assignment_action_id := g_mth_past_action.base_assignment_action_id(i);
770         g_avg_val.base_action_sequence      := g_mth_past_action.base_action_sequence(i);
771         g_avg_val.base_start_date           := g_mth_past_action.base_start_date(i);
772         g_avg_val.base_end_date             := g_mth_past_action.base_end_date(i);
773         g_avg_val.avg_sal1_std              := g_mth_past_action.target_start_date(i);
774         g_avg_val.avg_sal1_edd              := g_mth_past_action.target_end_date(i);
775         g_avg_val.avg_sal1_wkd              := g_avg_val.avg_sal1_edd - g_avg_val.avg_sal1_std + 1;
776       elsif l_row_cnt = 2 then
777         g_avg_val.assignment_action_id2     := g_mth_past_action.assignment_action_id(i);
778         g_avg_val.avg_sal2_std              := g_mth_past_action.target_start_date(i);
779         g_avg_val.avg_sal2_edd              := g_mth_past_action.target_end_date(i);
780         g_avg_val.avg_sal2_wkd              := g_avg_val.avg_sal2_edd - g_avg_val.avg_sal2_std + 1;
781       elsif l_row_cnt = 3 then
782         g_avg_val.assignment_action_id3     := g_mth_past_action.assignment_action_id(i);
783         g_avg_val.avg_sal3_std              := g_mth_past_action.target_start_date(i);
784         g_avg_val.avg_sal3_edd              := g_mth_past_action.target_end_date(i);
785         g_avg_val.avg_sal3_wkd              := g_avg_val.avg_sal3_edd - g_avg_val.avg_sal3_std + 1;
786       elsif l_row_cnt = 4 then
787         g_avg_val.assignment_action_id4     := g_mth_past_action.assignment_action_id(i);
788         g_avg_val.avg_sal4_std              := g_mth_past_action.target_start_date(i);
789         g_avg_val.avg_sal4_edd              := g_mth_past_action.target_end_date(i);
790         g_avg_val.avg_sal4_wkd              := g_avg_val.avg_sal4_edd - g_avg_val.avg_sal4_std + 1;
791       end if;
792     end loop;
793   --
794     l_end_date := hr_api.g_eot;
795     l_row_cnt := 0;
796   --
797     if not l_found then
798       open  csr_past_action;
799       fetch csr_past_action bulk collect into g_mth_past_action.assignment_action_id,
800                                               g_mth_past_action.action_sequence,
801                                               g_mth_past_action.assignment_id,
802                                               g_mth_past_action.effective_date,
803                                               g_mth_past_action.base_assignment_action_id,
804                                               g_mth_past_action.base_action_sequence,
805                                               g_mth_past_action.base_start_date,
806                                               g_mth_past_action.base_end_date,
807                                               g_mth_past_action.target_start_date,
808                                               g_mth_past_action.target_end_date;
809       close csr_past_action;
810       for i in 1..g_mth_past_action.assignment_action_id.count loop
811         if g_mth_past_action.target_end_date(i) <> l_end_date then
812            l_end_date := g_mth_past_action.target_end_date(i);
813            l_row_cnt := l_row_cnt + 1;
814            if l_row_cnt > l_prev_action_cnt then
815              exit;
816            end if;
817            l_found := TRUE;
818         end if;
819         g_avg_val.assignment_action_id := g_mth_past_action.assignment_action_id(i);
820         g_avg_val.action_sequence := g_mth_past_action.action_sequence(i);
821         if l_row_cnt = 1 then
822           g_avg_val.assignment_action_id1     := g_mth_past_action.assignment_action_id(i);
823           g_avg_val.assignment_id             := g_mth_past_action.assignment_id(i);
824           g_avg_val.effective_date            := g_mth_past_action.effective_date(i);
825           g_avg_val.base_assignment_action_id := g_mth_past_action.base_assignment_action_id(i);
826           g_avg_val.base_action_sequence      := g_mth_past_action.base_action_sequence(i);
827           g_avg_val.base_start_date           := g_mth_past_action.base_start_date(i);
828           g_avg_val.base_end_date             := g_mth_past_action.base_end_date(i);
829           g_avg_val.avg_sal1_std              := g_mth_past_action.target_start_date(i);
830           g_avg_val.avg_sal1_edd              := g_mth_past_action.target_end_date(i);
831           g_avg_val.avg_sal1_wkd              := g_avg_val.avg_sal1_edd - g_avg_val.avg_sal1_std + 1;
832         elsif l_row_cnt = 2 then
833           g_avg_val.assignment_action_id2     := g_mth_past_action.assignment_action_id(i);
834           g_avg_val.avg_sal2_std              := g_mth_past_action.target_start_date(i);
835           g_avg_val.avg_sal2_edd              := g_mth_past_action.target_end_date(i);
836           g_avg_val.avg_sal2_wkd              := g_avg_val.avg_sal2_edd - g_avg_val.avg_sal2_std + 1;
837         elsif l_row_cnt = 3 then
838           g_avg_val.assignment_action_id3     := g_mth_past_action.assignment_action_id(i);
839           g_avg_val.avg_sal3_std              := g_mth_past_action.target_start_date(i);
840           g_avg_val.avg_sal3_edd              := g_mth_past_action.target_end_date(i);
841           g_avg_val.avg_sal3_wkd              := g_avg_val.avg_sal3_edd - g_avg_val.avg_sal3_std + 1;
842         elsif l_row_cnt = 4 then
843           g_avg_val.assignment_action_id4     := g_mth_past_action.assignment_action_id(i);
844           g_avg_val.avg_sal4_std              := g_mth_past_action.target_start_date(i);
845           g_avg_val.avg_sal4_edd              := g_mth_past_action.target_end_date(i);
846           g_avg_val.avg_sal4_wkd              := g_avg_val.avg_sal4_edd - g_avg_val.avg_sal4_std + 1;
847         end if;
848       end loop;
849     end if;
850   --
851     g_avg_val.avg_sal1 := get_avg_sal(
852   				p_assignment_id		=> g_avg_val.assignment_id,
853   				p_type			=> l_type,
854   				p_effective_date	=> g_avg_val.effective_date,
855   				p_action_sequence4	=> g_avg_val.action_sequence,
856   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
857   				p_target_start_date	=> g_avg_val.avg_sal1_std,
858   				p_target_end_date	=> g_avg_val.avg_sal1_edd,
859   				p_balance_type_id	=> g_balance_type_id);
860   --
861     g_avg_val.avg_sal2 := get_avg_sal(
862   				p_assignment_id		=> g_avg_val.assignment_id,
863   				p_type			=> l_type,
864   				p_effective_date	=> g_avg_val.effective_date,
865   				p_action_sequence4	=> g_avg_val.action_sequence,
866   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
867   				p_target_start_date	=> g_avg_val.avg_sal2_std,
868   				p_target_end_date	=> g_avg_val.avg_sal2_edd,
869   				p_balance_type_id	=> g_balance_type_id);
870   --
871     g_avg_val.avg_sal3 := get_avg_sal(
872   				p_assignment_id		=> g_avg_val.assignment_id,
873   				p_type			=> l_type,
874   				p_effective_date	=> g_avg_val.effective_date,
875   				p_action_sequence4	=> g_avg_val.action_sequence,
876   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
877   				p_target_start_date	=> g_avg_val.avg_sal3_std,
878   				p_target_end_date	=> g_avg_val.avg_sal3_edd,
879   				p_balance_type_id	=> g_balance_type_id);
880   --
881     if c_mode = 'DAY' then
882       g_avg_val.avg_sal4 := get_avg_sal(
883   				p_assignment_id		=> g_avg_val.assignment_id,
884   				p_type			=> l_type,
885   				p_effective_date	=> g_avg_val.effective_date,
886   				p_action_sequence4	=> g_avg_val.action_sequence,
887   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
888   				p_target_start_date	=> g_avg_val.avg_sal4_std,
889   				p_target_end_date	=> g_avg_val.avg_sal4_edd,
890   				p_balance_type_id	=> g_balance_type_id);
891       if l_rate is null then
892         /* 4th period is same to the period from effective date to 1st Period end date. */
893         l_rate := round((g_avg_val.avg_sal1_edd - g_avg_val.effective_date + 1) / (g_avg_val.avg_sal1_edd - g_avg_val.avg_sal1_std),2);
894       end if;
895       g_avg_val.avg_sal4 := g_avg_val.avg_sal4 * l_rate;
896     end if;
897   --
898     l_type := 'BON';
899     l_end_date := hr_api.g_eot;
900     l_row_cnt := 0;
901     l_found := FALSE;
902   --
903     l_bon_index := g_bon_past_action.assignment_action_id.count;
904     for i in 1..l_bon_index loop
905       g_avg_val.assignment_action_idb := g_bon_past_action.assignment_action_id(i);
906       g_avg_val.action_sequenceb := g_bon_past_action.action_sequence(i);
907   --    g_avg_val.assignment_id := g_bon_past_action.assignment_id(i);
908   --    g_avg_val.effective_date := g_bon_past_action.effective_date(i);
909   --    g_avg_val.base_assignment_action_id := g_bon_past_action.base_assignment_action_id(i);
910   --    g_avg_val.base_action_sequence := g_bon_past_action.base_action_sequence(i);
911   --    g_avg_val.base_start_date := g_bon_past_action.base_start_date(i);
912   --    g_avg_val.base_end_date := g_bon_past_action.base_end_date(i);
913       g_avg_val.avg_bon_std := g_bon_past_action.target_start_date(i);
914       g_avg_val.avg_bon_edd := g_avg_val.effective_date;
915       l_found := TRUE;
916     end loop;
917 
918     if not l_found then
919       open  csr_past_action;
920       fetch csr_past_action bulk collect into g_bon_past_action.assignment_action_id,
921                                               g_bon_past_action.action_sequence,
922                                               g_bon_past_action.assignment_id,
923                                               g_bon_past_action.effective_date,
924                                               g_bon_past_action.base_assignment_action_id,
925                                               g_bon_past_action.base_action_sequence,
926                                               g_bon_past_action.base_start_date,
927                                               g_bon_past_action.base_end_date,
928                                               g_bon_past_action.target_start_date,
929                                               g_bon_past_action.target_end_date;
930       close csr_past_action;
931       for i in 1..g_bon_past_action.assignment_action_id.count loop
932         g_avg_val.assignment_action_idb := g_bon_past_action.assignment_action_id(i);
933         g_avg_val.action_sequenceb := g_bon_past_action.action_sequence(i);
934   --      g_avg_val.assignment_id := g_bon_past_action.assignment_id(i);
935   --      g_avg_val.effective_date := g_bon_past_action.effective_date(i);
936   --      g_avg_val.base_assignment_action_id := g_bon_past_action.base_assignment_action_id(i);
937   --      g_avg_val.base_action_sequence := g_bon_past_action.base_action_sequence(i);
938   --      g_avg_val.base_start_date := g_bon_past_action.base_start_date(i);
939   --      g_avg_val.base_end_date := g_bon_past_action.base_end_date(i);
940         g_avg_val.avg_bon_std := g_bon_past_action.target_start_date(i);
941         g_avg_val.avg_bon_edd := g_avg_val.effective_date;
942         l_found := TRUE;
943       end loop;
944     end if;
945     --
946     g_avg_val.avg_bon := get_avg_sal(
947   				p_assignment_id		=> g_avg_val.assignment_id,
948   				p_type			=> l_type,
949   				p_effective_date	=> g_avg_val.effective_date,
950   				p_action_sequence4	=> g_avg_val.action_sequenceb,
951   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
952   				p_target_start_date	=> g_avg_val.avg_bon_std,
953   				p_target_end_date	=> g_avg_val.avg_bon_edd,
954   				p_balance_type_id	=> g_balance_type_id);
955   --
956     l_type := 'ALR';
957     l_end_date := hr_api.g_eot;
958     l_row_cnt := 0;
959     l_found := FALSE;
960   --
961     l_alr_index := g_alr_past_action.assignment_action_id.count;
962     for i in 1..l_alr_index loop
963       g_avg_val.assignment_action_ida := g_alr_past_action.assignment_action_id(i);
964       g_avg_val.action_sequencea := g_alr_past_action.action_sequence(i);
965   --    g_avg_val.assignment_id := g_alr_past_action.assignment_id(i);
966   --    g_avg_val.effective_date := g_alr_past_action.effective_date(i);
967   --    g_avg_val.base_assignment_action_id := g_alr_past_action.base_assignment_action_id(i);
968   --    g_avg_val.base_action_sequence := g_alr_past_action.base_action_sequence(i);
969   --    g_avg_val.base_start_date := g_alr_past_action.base_start_date(i);
970   --    g_avg_val.base_end_date := g_alr_past_action.base_end_date(i);
971       g_avg_val.avg_alr_std := g_alr_past_action.target_start_date(i);
972       g_avg_val.avg_alr_edd := g_avg_val.effective_date;
973       l_found := TRUE;
974     end loop;
975 
976     if not l_found then
977       open  csr_past_action;
978       fetch csr_past_action bulk collect into g_alr_past_action.assignment_action_id,
979                                               g_alr_past_action.action_sequence,
980                                               g_alr_past_action.assignment_id,
981                                               g_alr_past_action.effective_date,
982                                               g_alr_past_action.base_assignment_action_id,
983                                               g_alr_past_action.base_action_sequence,
984                                               g_alr_past_action.base_start_date,
985                                               g_alr_past_action.base_end_date,
986                                               g_alr_past_action.target_start_date,
987                                               g_alr_past_action.target_end_date;
988       close csr_past_action;
989       for i in 1..g_alr_past_action.assignment_action_id.count loop
990         g_avg_val.assignment_action_ida := g_alr_past_action.assignment_action_id(i);
991         g_avg_val.action_sequencea := g_alr_past_action.action_sequence(i);
992   --      g_avg_val.assignment_id := g_alr_past_action.assignment_id(i);
993   --      g_avg_val.effective_date := g_alr_past_action.effective_date(i);
994   --      g_avg_val.base_assignment_action_id := g_alr_past_action.base_assignment_action_id(i);
995   --      g_avg_val.base_action_sequence := g_alr_past_action.base_action_sequence(i);
996   --      g_avg_val.base_start_date := g_alr_past_action.base_start_date(i);
997   --      g_avg_val.base_end_date := g_alr_past_action.base_end_date(i);
998         g_avg_val.avg_alr_std := g_alr_past_action.target_start_date(i);
999         g_avg_val.avg_alr_edd := g_avg_val.effective_date;
1000         l_found := TRUE;
1001       end loop;
1002     end if;
1003     --
1004     g_avg_val.avg_alr := get_avg_sal(
1005   				p_assignment_id		=> g_avg_val.assignment_id,
1006   				p_type			=> l_type,
1007   				p_effective_date	=> g_avg_val.effective_date,
1008   				p_action_sequence4	=> g_avg_val.action_sequencea,
1009   				p_base_action_sequence	=> g_avg_val.base_action_sequence,
1010   				p_target_start_date	=> g_avg_val.avg_alr_std,
1011   				p_target_end_date	=> g_avg_val.avg_alr_edd,
1012   				p_balance_type_id	=> g_balance_type_id);
1013   --
1014   end if;
1015   --
1016   p_assignment_action_id1 := g_avg_val.assignment_action_id1;
1017   p_avg_sal1              := g_avg_val.avg_sal1;
1018   p_avg_sal1_std          := g_avg_val.avg_sal1_std;
1019   p_avg_sal1_edd          := g_avg_val.avg_sal1_edd;
1020   p_avg_sal1_wkd          := g_avg_val.avg_sal1_wkd;
1021   p_assignment_action_id2 := g_avg_val.assignment_action_id2;
1022   p_avg_sal2              := g_avg_val.avg_sal2;
1023   p_avg_sal2_std          := g_avg_val.avg_sal2_std;
1024   p_avg_sal2_edd          := g_avg_val.avg_sal2_edd;
1025   p_avg_sal2_wkd          := g_avg_val.avg_sal2_wkd;
1026   p_assignment_action_id3 := g_avg_val.assignment_action_id3;
1027   p_avg_sal3              := g_avg_val.avg_sal3;
1028   p_avg_sal3_std          := g_avg_val.avg_sal3_std;
1029   p_avg_sal3_edd          := g_avg_val.avg_sal3_edd;
1030   p_avg_sal3_wkd          := g_avg_val.avg_sal3_wkd;
1031   p_assignment_action_id4 := g_avg_val.assignment_action_id4;
1032   p_avg_sal4              := g_avg_val.avg_sal4;
1033   p_avg_sal4_std          := g_avg_val.avg_sal4_std;
1034   p_avg_sal4_edd          := g_avg_val.avg_sal4_edd;
1035   p_avg_sal4_wkd          := g_avg_val.avg_sal4_wkd;
1036   p_assignment_action_idb := g_avg_val.assignment_action_idb;
1037   p_avg_bon               := g_avg_val.avg_bon;
1038   p_assignment_action_ida := g_avg_val.assignment_action_ida;
1039   p_avg_alr               := g_avg_val.avg_alr;
1040   --
1041 return	l_dummy;
1042 end get_avg_val;
1043 end pay_kr_sample_sep_pkg;