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