DBA Data[Home] [Help]

PACKAGE BODY: APPS.BEN_CWB_UTILS

Source


1 package body ben_cwb_utils as
2 /* $Header: bencwbutils.pkb 120.17.12010000.2 2008/10/20 12:42:23 sgnanama ship $ */
3 FUNCTION get_task_access (
4       p_hidden_cd            IN   VARCHAR2,
5       p_task_access_cd       IN   VARCHAR2,
6       p_plan_access_cd       IN   VARCHAR2,
7       p_wksht_grp_cd         IN   VARCHAR2,
8       p_population_cd        IN   VARCHAR2,
9       p_status_cd            IN   VARCHAR2,
10       p_dist_bdgt_iss_dt     IN   DATE,
11       p_ss_update_start_dt   IN   DATE,
12       p_ss_update_end_dt     IN   DATE,
13       p_effective_dt         IN   DATE
14    )
15       RETURN VARCHAR2
16    IS
17       l_access_cd   VARCHAR2 (2);
18    BEGIN
19       l_access_cd := 'UP';
20 
21       IF (p_status_cd = 'NA')
22       THEN
23          --No Access
24          l_access_cd := 'NA';
25       ELSIF (p_wksht_grp_cd = 'BDGT' AND p_dist_bdgt_iss_dt IS NULL)
26       THEN
27          l_access_cd := 'NA';
28       ELSIF (   p_hidden_cd = 'NA'
29              OR p_task_access_cd = 'NA'
30              OR p_plan_access_cd = 'NA'
31             )
32       THEN
33          l_access_cd := 'NA';
34       ELSIF (   p_hidden_cd = 'RO'
35              OR p_task_access_cd = 'RO'
36              OR p_plan_access_cd = 'RO'
37             )
38       THEN
39          IF (p_wksht_grp_cd = 'BDGT' AND p_population_cd IS NULL)
40          THEN
41             l_access_cd := 'NA';
42          ELSE
43             l_access_cd := 'RO';
44          END IF;
45       ELSIF p_effective_dt NOT BETWEEN p_ss_update_start_dt AND p_ss_update_end_dt
46       THEN
47          l_access_cd := 'RO';
48       END IF;
49 
50       RETURN l_access_cd;
51    END get_task_access;
52 --
53 FUNCTION is_task_enabled
54   	 (p_access_cd 		in varchar2,
55 	  p_population_cd 	in varchar2,
56 	  p_status_cd 		in varchar2,
57 	  p_dist_bdgt_iss_dt 	in date,
58 	  p_wksht_grp_cd	in varchar2)
59 return varchar2
60 is
61 begin
62 if(p_status_cd = 'NA')
63 then
64  return 'D';
65 else
66  if (p_wksht_grp_cd = 'BDGT')
67  then
68   if (p_dist_bdgt_iss_dt is null)
69   then
70    return 'D';
71   elsif (nvl(p_access_cd,'NA') = 'RO' and p_population_cd is null) then
72    return 'D';
73   end if;
74  /*elsif (p_wksht_grp_cd = 'RVW')
75  then
76    if (p_status_cd = 'NS')
77    then
78    return 'D';
79    end if;*/
80  end if;
81  return 'Y';
82 end if;
83 end is_task_enabled;
84 --
85 FUNCTION get_manager_name(p_emp_per_in_ler_id in number,
86 	                  p_level in number)
87 return varchar2
88   is
89 
90   Cursor csr_mgr_name
91   is
92   Select bcpi.full_name,
93 	 	 bcpi.brief_name,
94          bcpi.custom_name
95     From ben_cwb_person_info bcpi,
96          ben_cwb_group_hrchy bcgh
97    where bcgh.emp_per_in_ler_id = p_emp_per_in_ler_id
98      and bcgh.lvl_num = (select max(lvl_num) - p_level + 1
99                            from ben_cwb_group_hrchy
100                           where emp_per_in_ler_id = p_emp_per_in_ler_id)
101      and bcgh.lvl_num > 0
102      and bcgh.mgr_per_in_ler_id = bcpi.group_per_in_ler_id;
103 
104   name_profile varchar2(2000);
105   manager_names csr_mgr_name%rowtype;
106 
107 begin
108 
109    name_profile := get_profile ('BEN_DISPLAY_EMPLOYEE_NAME');
110 
111    open csr_mgr_name;
112    fetch csr_mgr_name into manager_names;
113    close csr_mgr_name;
114 
115    if('FN' = name_profile)
116    then
117     return manager_names.full_name;
118    elsif ('CN' = name_profile)
119    then
120     return manager_names.custom_name;
121    else
122     return manager_names.brief_name;
123    end if;
124 
125 end get_manager_name;
126 --
127 
128 FUNCTION get_eligibility(p_plan_status in varchar2,
129                          p_opt1_status in varchar2,
130                          p_opt2_status in varchar2,
131                          p_opt3_status in varchar2,
132                          p_opt4_status in varchar2
133                         )
134 return varchar2
135 is
136  l_elig_count number := 0;
137  l_inelig_count number := 0;
138 begin
139 
140   IF p_plan_status is not null THEN
141      IF p_plan_status = 'Y' THEN
142         l_elig_count := l_elig_count +1;
143      ELSE
144         l_inelig_count := l_inelig_count + 1;
145      END IF;
146   END IF;
147 
148   IF p_opt1_status is not null THEN
149      IF p_opt1_status = 'Y' THEN
150         l_elig_count := l_elig_count +1;
151      ELSE
152         l_inelig_count := l_inelig_count + 1;
153      END IF;
154   END IF;
155 
156   IF p_opt2_status is not null THEN
157      IF p_opt2_status = 'Y' THEN
158         l_elig_count := l_elig_count +1;
159      ELSE
160         l_inelig_count := l_inelig_count + 1;
161      END IF;
162   END IF;
163 
164   IF p_opt3_status is not null THEN
165      IF p_opt3_status = 'Y' THEN
166         l_elig_count := l_elig_count +1;
167      ELSE
168         l_inelig_count := l_inelig_count + 1;
169      END IF;
170   END IF;
171 
172   IF p_opt4_status is not null THEN
173      IF p_opt4_status = 'Y' THEN
174         l_elig_count := l_elig_count +1;
175      ELSE
176         l_inelig_count := l_inelig_count + 1;
177      END IF;
178   END IF;
179 
180   IF l_elig_count > 0 AND l_inelig_count > 0 THEN
181     return 'BOTH';
182   END IF;
183 
184   IF l_elig_count = 0 AND l_inelig_count = 0 THEN
185     return 'BOTH';
186   END IF;
187 
188   IF l_elig_count > 0 AND l_inelig_count = 0 THEN
189     return 'Y';
190   END IF;
191 
192   IF l_elig_count = 0 AND l_inelig_count > 0 THEN
193     return 'N';
194   END IF;
195 
196 end;
197 
198 FUNCTION get_profile(p_profile_name in varchar2)
199 return varchar2
200 is
201 name_profile varchar2(2000);
202 begin
203     fnd_profile.get (p_profile_name, name_profile);
204     return name_profile;
205 end get_profile;
206 --
207 PROCEDURE  get_site_profile (
208                   p_profile_1                in varchar2 default null,
209                   p_value_1                  out nocopy varchar2)
210 IS
211 
212 l_defined_z boolean;
213 
214 CURSOR value_site_profile(v_name varchar2)
215 IS
216     SELECT valu.profile_option_value
217     FROM fnd_profile_options options
218         ,fnd_profile_option_values valu
219     WHERE options.profile_option_name = upper(v_name)
220     AND options.start_date_active  <= sysdate
221     AND nvl(options.end_date_active, sysdate) >= sysdate
222     AND options.profile_option_id = valu.profile_option_id
223     AND	valu.level_id = 10001;
224 
225 BEGIN
226 if(p_profile_1 is not null) then
227     open value_site_profile(p_profile_1);
228     fetch value_site_profile
229     into p_value_1;
230     close value_site_profile;
231 end if;
232 END get_site_profile;
233 --
234 --
235 PROCEDURE  get_resp_profile (
236                   p_resp_id                  in number default null,
237                   p_profile_1                in varchar2 default null,
238                   p_value_1                  out nocopy varchar2)
239 IS
240 
241 l_defined_z boolean;
242 
243 CURSOR value_resp_profile(v_name varchar2, v_resp_id number)
244 IS
245     SELECT valu.profile_option_value
246     FROM fnd_profile_options options
247         ,fnd_profile_option_values valu
248     WHERE options.profile_option_name = upper(v_name)
249     AND options.start_date_active  <= sysdate
250     AND nvl(options.end_date_active, sysdate) >= sysdate
251     AND options.profile_option_id = valu.profile_option_id
252     AND valu.level_value_application_id = 800
253     AND	valu.level_id = 10003
254     AND valu.level_value = v_resp_id;
255 
256 BEGIN
257 if(p_profile_1 is not null) then
258     open value_resp_profile(p_profile_1,p_resp_id);
259     fetch value_resp_profile
260     into p_value_1;
261     close value_resp_profile;
262 end if;
263 END get_resp_profile;
264 --
265 PROCEDURE  get_user_profile (
266                   p_user_id                  in number default null,
267                   p_profile_1                in varchar2 default null,
268                   p_profile_2                in varchar2 default null,
269                   p_profile_3                in varchar2 default null,
270                   p_profile_4                in varchar2 default null,
271                   p_profile_5                in varchar2 default null,
272                   p_profile_6                in varchar2 default null,
273                   p_profile_7                in varchar2 default null,
274                   p_profile_8                in varchar2 default null,
275                   p_profile_9                in varchar2 default null,
276                   p_profile_10               in varchar2 default null,
277                   p_value_1                  out nocopy varchar2,
278                   p_value_2                  out nocopy varchar2,
279                   p_value_3                  out nocopy varchar2,
280                   p_value_4                  out nocopy varchar2,
281                   p_value_5                  out nocopy varchar2,
282                   p_value_6                  out nocopy varchar2,
283                   p_value_7                  out nocopy varchar2,
284                   p_value_8                  out nocopy varchar2,
285                   p_value_9                  out nocopy varchar2,
286                   p_value_10                 out nocopy varchar2)
287 IS
288 
289 l_defined_z boolean;
290 
291 CURSOR value_user_profile(v_name varchar2, v_user_id number)
292 IS
293     SELECT valu.profile_option_value
294     FROM fnd_profile_options options
295         ,fnd_profile_option_values valu
296     WHERE options.profile_option_name = upper(v_name)
297     AND options.start_date_active  <= sysdate
298     AND nvl(options.end_date_active, sysdate) >= sysdate
299     AND options.profile_option_id = valu.profile_option_id
300 	AND valu.application_id = 805
301 	AND	valu.level_id = 10004
302 	AND	valu.level_value = v_user_id;
303 
304 BEGIN
305 if(p_profile_1 is not null) then
306     open value_user_profile(p_profile_1,p_user_id);
307     fetch value_user_profile
308     into p_value_1;
309     close value_user_profile;
310 end if;
311 if(p_profile_2 is not null) then
312     open value_user_profile(p_profile_2,p_user_id);
313     fetch value_user_profile
314     into p_value_2;
315     close value_user_profile;
316 end if;
317 if(p_profile_3 is not null) then
318     open value_user_profile(p_profile_3,p_user_id);
319     fetch value_user_profile
320     into p_value_3;
321     close value_user_profile;
322 end if;
323 if(p_profile_4 is not null) then
324     open value_user_profile(p_profile_4,p_user_id);
325     fetch value_user_profile
326     into p_value_4;
327     close value_user_profile;
328 end if;
329 if(p_profile_5 is not null) then
330     open value_user_profile(p_profile_5,p_user_id);
331     fetch value_user_profile
332     into p_value_5;
333     close value_user_profile;
334 end if;
335 if(p_profile_6 is not null) then
336     open value_user_profile(p_profile_6,p_user_id);
337     fetch value_user_profile
338     into p_value_6;
339     close value_user_profile;
340 end if;
341 if(p_profile_7 is not null) then
342     open value_user_profile(p_profile_7,p_user_id);
343     fetch value_user_profile
344     into p_value_7;
345     close value_user_profile;
346 end if;
347 if(p_profile_8 is not null) then
348     open value_user_profile(p_profile_8,p_user_id);
349     fetch value_user_profile
350     into p_value_8;
351     close value_user_profile;
352 end if;
353 if(p_profile_9 is not null) then
354     open value_user_profile(p_profile_9,p_user_id);
355     fetch value_user_profile
356     into p_value_9;
357     close value_user_profile;
358 end if;
359 if(p_profile_10 is not null) then
360     open value_user_profile(p_profile_10,p_user_id);
361     fetch value_user_profile
362     into p_value_10;
363     close value_user_profile;
364 end if;
365 END get_user_profile;
366 --
367 FUNCTION get_bdgt_pct_of_elig_sal_decs return number is
368   l_return_value number;
369 begin
370   l_return_value :=  to_number(get_profile('BEN_CWB_BS_PCT_ES_DECS_DISP'));
371   if l_return_value is null then
372     return 2;
373   elsif l_return_value > 10 then
374     return 10;
375   else
376     return l_return_value;
377   end if;
378 exception
379   when others then
380     return 2;
381 end get_bdgt_pct_of_elig_sal_decs;
382 --
383 FUNCTION get_alloc_pct_of_elig_sal_decs return number is
384   l_return_value number;
385 begin
386   l_return_value :=  to_number(get_profile('BEN_CWB_WS_PCT_ES_DECS_DISP'));
387   if l_return_value is null then
388     return 2;
389   elsif l_return_value > 10 then
390     return 10;
391   else
392     return l_return_value;
393   end if;
394 exception
395   when others then
396     return 2;
397 end get_alloc_pct_of_elig_sal_decs;
398 --
399 FUNCTION is_person_switchable(p_person_id in number,
400                               p_effective_date in date)
401 return varchar2
402 is
403 CURSOR is_person_in_secured_view
404 is
405 SELECT 'x'
406   FROM per_people_f ppf,
407        per_person_types ppt
408  WHERE ppf.person_id = p_person_id
409    AND ppt.person_type_id  = ppf.person_type_id
410    AND ppt.system_person_type <> 'EX_EMP_APL'
411    AND p_effective_date between ppf.effective_start_date and ppf.effective_end_date;
412 
413 l_switch varchar2(1);
414 
415 begin
416 OPEN is_person_in_secured_view;
417 FETCH is_person_in_secured_view INTO l_switch;
418 if is_person_in_secured_view%NOTFOUND then
419  CLOSE is_person_in_secured_view;
420  return 'N';
421 else
422  CLOSE is_person_in_secured_view;
423  return 'Y';
424 end if;
425 END is_person_switchable;
426 
427 
428 function add_number_with_null_check(p_orig_val in number,
429                                     p_new_val  in number) return number is
430 begin
431   if p_orig_val is null then
432     return p_new_val;
433   else
434     return p_orig_val + nvl(p_new_val,0);
435   end if;
436 end add_number_with_null_check;
437 
438 
439 
440 /* ---------------------------------------------------------------------
441    Procedures/Functions Below are defined for Document Management
442    Enhancements to support Printable Documents (PDF)
443    BEGIN
444    --------------------------------------------------------------------- */
445 
446 
447 Function get_option1_name(
448       p_group_plan_id in number,
449       p_lf_evnt_ocrd_dt in Date,
450       p_oipl_id        in number,
451       p_group_per_in_ler_id in number,
452       p_pl_id            in number,
453       p_ws_sub_acty_typ_cd in varchar2) return varchar2
454 is
455   cursor cur_option1_name is
456     Select name
457     From  ben_cwb_pl_dsgn
458     Where pl_id = p_group_plan_id
459     and   group_pl_id = p_group_plan_id
460     And   lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
461     --And   oipl_id  <> -1
465    l_option1_name varchar2(240);
462     --And   opt_count = 1;
463     and  oipl_ordr_num = 1;
464 
466 Begin
467 
468      open cur_option1_name;
469      fetch  cur_option1_name into l_option1_name;
470      close  cur_option1_name;
471      return l_option1_name;
472 End;
473 
474 
475 Procedure populate_person_option1_rec(
476       p_group_plan_id in number,
477       p_lf_evt_ocrd_dt in Date,
478       p_oipl_id        in number,
479       p_group_per_in_ler_id in number,
480       p_pl_id            in number,
481       p_ws_sub_acty_typ_cd in varchar2)
482 Is
483     cursor cur_option1_rate is
484       Select bcpr.*
485       From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
486       Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
487       And   bcpd.group_pl_id    = p_group_plan_id
488      -- AND   bcpd.pl_id          = p_group_plan_id
489       And   bcpd.lf_evt_ocrd_dt = p_lf_evt_ocrd_dt
490       --And   bcpd.oipl_id        <> -1
491       --And   bcpd.opt_count      = 1
492       and oipl_ordr_num = 1
493       And   bcpr.pl_id          = bcpd.pl_id
494       And   bcpr.group_pl_id    = bcpd.group_pl_id
495       And   bcpr.oipl_id        = bcpd.oipl_id
496       And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
497       and   bcpr.elig_flag = 'Y';
498 Begin
499 
500        g_opt1_person_rates_rec := null;
501        open cur_option1_rate;
502        fetch cur_option1_rate into  g_opt1_person_rates_rec;
503        close cur_option1_rate;
504 
505 End;
506 
507 Function get_option1_rate_ws_amt(
508       p_group_plan_id in number,
509       p_lf_evnt_ocrd_dt in Date,
510       p_oipl_id        in number,
511       p_group_per_in_ler_id in number,
512       p_pl_id            in number,
513       p_ws_sub_acty_typ_cd in varchar2) return number
514 is
515 Begin
516    populate_person_option1_rec(
517                      p_group_plan_id,
518                      p_lf_evnt_ocrd_dt,
519                      p_oipl_id,
520                      p_group_per_in_ler_id,
521                      p_pl_id,
522                      p_ws_sub_acty_typ_cd);
523    return  g_opt1_person_rates_rec.ws_val;
524 
525 End get_option1_rate_ws_amt;
526 
527 Function get_option1_unit(
528       p_group_plan_id in number,
529       p_lf_evnt_ocrd_dt in Date,
530       p_oipl_id        in number,
531       p_group_per_in_ler_id in number,
532       p_pl_id            in number,
533       p_ws_sub_acty_typ_cd in varchar2) return varchar2
534 Is
535  --- ws_nmmntry_uom need to be decode from lookup table
536     Cursor cur_option1_units is
537        Select decode(ws_nnmntry_uom,null,currency, hr_general.decode_lookup('BEN_NNMNTRY_UOM',ws_nnmntry_uom) )
538        From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
539                          Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
540                          And   bcpd.group_pl_id    = p_group_plan_id
541                          And   bcpd.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
542                          And   bcpr.pl_id          = bcpd.pl_id
543                          And   bcpr.group_pl_id    = bcpd.group_pl_id
544                          And   bcpr.oipl_id        = bcpd.oipl_id
545                          And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
546                          and   bcpr.elig_flag = 'Y'
547             and   oipl_ordr_num = 1;
548 
549   l_option1_unit  varchar2(30);
550 Begin
551   open  cur_option1_units;
552   fetch cur_option1_units into l_option1_unit;
553   close cur_option1_units;
554   return l_option1_unit;
555 End get_option1_unit;
556 
557 
558 Function get_option1_elg_sal(
559       p_group_plan_id in number,
560       p_lf_evnt_ocrd_dt in Date,
561       p_oipl_id        in number,
562       p_group_per_in_ler_id in number,
563       p_pl_id            in number,
564       p_ws_sub_acty_typ_cd in varchar2) return number
565 is
566 Begin
567    populate_person_option1_rec(
568                      p_group_plan_id,
569                      p_lf_evnt_ocrd_dt,
570                      p_oipl_id,
571                      p_group_per_in_ler_id,
572                      p_pl_id,
573                      p_ws_sub_acty_typ_cd);
574    return  g_opt1_person_rates_rec.ELIG_SAL_VAL;
575 
576 End get_option1_elg_sal;
577 
578 Function get_option1_elg_per_sal(
579       p_group_plan_id in number,
580       p_lf_evnt_ocrd_dt in Date,
581       p_oipl_id        in number,
582       p_group_per_in_ler_id in number,
583       p_pl_id            in number,
584       p_ws_sub_acty_typ_cd in varchar2) return number
585 Is
586 Begin
587 
588 	populate_person_option1_rec(
589 	                     p_group_plan_id,
590 	                     p_lf_evnt_ocrd_dt,
591 	                     p_oipl_id,
592 	                     p_group_per_in_ler_id,
593 	                     p_pl_id,
594                      p_ws_sub_acty_typ_cd);
595 
596   if (g_opt1_person_rates_rec.elig_sal_val <> 0) then
597   	return round( (g_opt1_person_rates_rec.ws_val / g_opt1_person_rates_rec.elig_sal_val) * 100,2);
598   else
599   	return to_number(null);
603 
600   end if;
601 
602 End get_option1_elg_per_sal;
604 Function get_option1_rate_reco_amt(
605       p_group_plan_id in number,
606       p_lf_evnt_ocrd_dt in Date,
607       p_oipl_id        in number,
608       p_group_per_in_ler_id in number,
609       p_pl_id            in number,
610       p_ws_sub_acty_typ_cd in varchar2) return number
611 is
612 Begin
613    populate_person_option1_rec(
614                      p_group_plan_id,
615                      p_lf_evnt_ocrd_dt,
616                      p_oipl_id,
617                      p_group_per_in_ler_id,
618                      p_pl_id,
619                      p_ws_sub_acty_typ_cd);
620    return  g_opt1_person_rates_rec.REC_VAL;
621 
622 End get_option1_rate_reco_amt;
623 
624 Function get_option1_rate_oth_sal(
625       p_group_plan_id in number,
626       p_lf_evnt_ocrd_dt in Date,
627       p_oipl_id        in number,
628       p_group_per_in_ler_id in number,
629       p_pl_id            in number,
630       p_ws_sub_acty_typ_cd in varchar2) return number
631 is
632 Begin
633    populate_person_option1_rec(
634                      p_group_plan_id,
635                      p_lf_evnt_ocrd_dt,
636                      p_oipl_id,
637                      p_group_per_in_ler_id,
638                      p_pl_id,
639                      p_ws_sub_acty_typ_cd);
640    return  g_opt1_person_rates_rec.OTH_COMP_VAL;
641 
642 End get_option1_rate_oth_sal;
643 
644 Function get_option1_rate_sta_sal(
645       p_group_plan_id in number,
646       p_lf_evnt_ocrd_dt in Date,
647       p_oipl_id        in number,
648       p_group_per_in_ler_id in number,
649       p_pl_id            in number,
650       p_ws_sub_acty_typ_cd in varchar2) return number
651 is
652 Begin
653    populate_person_option1_rec(
654                      p_group_plan_id,
655                      p_lf_evnt_ocrd_dt,
656                      p_oipl_id,
657                      p_group_per_in_ler_id,
658                      p_pl_id,
659                      p_ws_sub_acty_typ_cd);
660    return  g_opt1_person_rates_rec.STAT_SAL_VAL;
661 
662 End get_option1_rate_sta_sal;
663 
664 Function get_option1_rate_tot_comp(
665       p_group_plan_id in number,
666       p_lf_evnt_ocrd_dt in Date,
667       p_oipl_id        in number,
668       p_group_per_in_ler_id in number,
669       p_pl_id            in number,
670       p_ws_sub_acty_typ_cd in varchar2) return number
671 is
672 Begin
673    populate_person_option1_rec(
674                      p_group_plan_id,
675                      p_lf_evnt_ocrd_dt,
676                      p_oipl_id,
677                      p_group_per_in_ler_id,
678                      p_pl_id,
679                      p_ws_sub_acty_typ_cd);
680    return  g_opt1_person_rates_rec.TOT_COMP_VAL;
681 
682 End get_option1_rate_tot_comp;
683 
684 
685 Function get_option1_rate_misc1(
686       p_group_plan_id in number,
687       p_lf_evnt_ocrd_dt in Date,
688       p_oipl_id        in number,
689       p_group_per_in_ler_id in number,
690       p_pl_id            in number,
691       p_ws_sub_acty_typ_cd in varchar2) return number
692 is
693 Begin
694    populate_person_option1_rec(
695                      p_group_plan_id,
696                      p_lf_evnt_ocrd_dt,
697                      p_oipl_id,
698                      p_group_per_in_ler_id,
699                      p_pl_id,
700                      p_ws_sub_acty_typ_cd);
701    return  g_opt1_person_rates_rec.MISC1_VAL;
702 
703 End get_option1_rate_misc1;
704 
705 Function get_option1_rate_misc2(
706       p_group_plan_id in number,
707       p_lf_evnt_ocrd_dt in Date,
708       p_oipl_id        in number,
709       p_group_per_in_ler_id in number,
710       p_pl_id            in number,
711       p_ws_sub_acty_typ_cd in varchar2) return number
712 is
713 Begin
714    populate_person_option1_rec(
715                      p_group_plan_id,
716                      p_lf_evnt_ocrd_dt,
717                      p_oipl_id,
718                      p_group_per_in_ler_id,
719                      p_pl_id,
720                      p_ws_sub_acty_typ_cd);
721    return  g_opt1_person_rates_rec.MISC2_VAL;
722 
723 End get_option1_rate_misc2;
724 
725 Function get_option1_rate_misc3(
726       p_group_plan_id in number,
727       p_lf_evnt_ocrd_dt in Date,
728       p_oipl_id        in number,
729       p_group_per_in_ler_id in number,
730       p_pl_id            in number,
731       p_ws_sub_acty_typ_cd in varchar2) return number
732 is
733 Begin
734    populate_person_option1_rec(
735                      p_group_plan_id,
736                      p_lf_evnt_ocrd_dt,
737                      p_oipl_id,
738                      p_group_per_in_ler_id,
739                      p_pl_id,
740                      p_ws_sub_acty_typ_cd);
741    return  g_opt1_person_rates_rec.MISC3_VAL;
742 
743 End get_option1_rate_misc3;
744 
745 
746 Function get_option2_name(
747       p_group_plan_id in number,
748       p_lf_evnt_ocrd_dt in Date,
749       p_oipl_id        in number,
753 is
750       p_group_per_in_ler_id in number,
751       p_pl_id            in number,
752       p_ws_sub_acty_typ_cd in varchar2) return varchar2
754   cursor cur_option2_name is
755     Select name
756     From  ben_cwb_pl_dsgn
757     Where pl_id = p_group_plan_id
758     And   group_pl_id = p_group_plan_id
759     And   lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
760    -- And   oipl_id  <> -1
761     -- And   opt_count = 2;
762     and oipl_ordr_num = 2;
763 
764    l_option2_name varchar2(240);
765 Begin
766 
767      open cur_option2_name;
768      fetch  cur_option2_name into l_option2_name;
769      close  cur_option2_name;
770      return l_option2_name;
771 End;
772 
773 Procedure populate_person_option2_rec(
774       p_group_plan_id in number,
775       p_lf_evt_ocrd_dt in Date,
776       p_oipl_id        in number,
777       p_group_per_in_ler_id in number,
778       p_pl_id            in number,
779       p_ws_sub_acty_typ_cd in varchar2)
780 Is
781     cursor cur_option2_rate is
782       Select bcpr.*
783       From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
784       Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
785       And   bcpd.group_pl_id = p_group_plan_id
786       --AND   bcpd.pl_id       = p_group_plan_id
787       And   bcpd.lf_evt_ocrd_dt= p_lf_evt_ocrd_dt
788       --And   bcpd.oipl_id  <> -1
789      -- And   bcpd.opt_count = 2
790            and oipl_ordr_num = 2
791       And   bcpd.pl_id = bcpr.pl_id
792       And   bcpd.group_pl_id  = bcpr.group_pl_id
793       And   bcpd.oipl_id = bcpr.oipl_id
794       And   bcpd.lf_evt_ocrd_dt = bcpr.lf_evt_ocrd_dt
795       and   bcpr.elig_flag = 'Y';
796 Begin
797 
798       	     g_opt2_person_rates_rec := null;
799              open cur_option2_rate;
800              fetch cur_option2_rate into  g_opt2_person_rates_rec;
801              close cur_option2_rate;
802 
803 End populate_person_option2_rec;
804 
805 Function get_option2_rate_ws_amt(
806       p_group_plan_id in number,
807       p_lf_evnt_ocrd_dt in Date,
808       p_oipl_id        in number,
809       p_group_per_in_ler_id in number,
810       p_pl_id            in number,
811       p_ws_sub_acty_typ_cd in varchar2) return number
812 is
813 Begin
814    populate_person_option2_rec(
815                      p_group_plan_id,
816                      p_lf_evnt_ocrd_dt,
817                      p_oipl_id,
818                      p_group_per_in_ler_id,
819                      p_pl_id,
820                      p_ws_sub_acty_typ_cd);
821    return  g_opt2_person_rates_rec.ws_val;
822 
823 End get_option2_rate_ws_amt;
824 
825 Function get_option2_unit(
826       p_group_plan_id in number,
827       p_lf_evnt_ocrd_dt in Date,
828       p_oipl_id        in number,
829       p_group_per_in_ler_id in number,
830       p_pl_id            in number,
831       p_ws_sub_acty_typ_cd in varchar2) return varchar2
832 Is
833 ----- ws_nnmntry_uom needs to be decoded from lookup table
834     Cursor cur_option2_units is
835        Select decode(ws_nnmntry_uom,null,currency,hr_general.decode_lookup('BEN_NNMNTRY_UOM',ws_nnmntry_uom))
836         From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
837                           Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
838                           And   bcpd.group_pl_id    = p_group_plan_id
839                           And   bcpd.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
840                           And   bcpr.pl_id          = bcpd.pl_id
841                           And   bcpr.group_pl_id    = bcpd.group_pl_id
842                           And   bcpr.oipl_id        = bcpd.oipl_id
843                           And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
844                           and   bcpr.elig_flag = 'Y'
845              and   oipl_ordr_num = 2;
846 
847   l_option2_unit  varchar2(30);
848 Begin
849   open  cur_option2_units;
850   fetch cur_option2_units into l_option2_unit;
851   close cur_option2_units;
852   return l_option2_unit;
853 End get_option2_unit;
854 
855 
856 Function get_option2_elg_sal(
857       p_group_plan_id in number,
858       p_lf_evnt_ocrd_dt in Date,
859       p_oipl_id        in number,
860       p_group_per_in_ler_id in number,
861       p_pl_id            in number,
862       p_ws_sub_acty_typ_cd in varchar2) return number
863 is
864 Begin
865 
866    populate_person_option2_rec(
867                      p_group_plan_id,
868                      p_lf_evnt_ocrd_dt,
869                      p_oipl_id,
870                      p_group_per_in_ler_id,
871                      p_pl_id,
872                      p_ws_sub_acty_typ_cd);
873    return  g_opt2_person_rates_rec.ELIG_SAL_VAL;
874 
875 End get_option2_elg_sal;
876 
877 Function get_option2_elg_per_sal(
878       p_group_plan_id in number,
879       p_lf_evnt_ocrd_dt in Date,
880       p_oipl_id        in number,
881       p_group_per_in_ler_id in number,
882       p_pl_id            in number,
883       p_ws_sub_acty_typ_cd in varchar2) return number
884 Is
885 Begin
886 
887 	 populate_person_option2_rec(
888 	                     p_group_plan_id,
892 	                     p_pl_id,
889 	                     p_lf_evnt_ocrd_dt,
890 	                     p_oipl_id,
891 	                     p_group_per_in_ler_id,
893                      p_ws_sub_acty_typ_cd);
894 
895 if (g_opt2_person_rates_rec.elig_sal_val <> 0) then
896   return round( (g_opt2_person_rates_rec.ws_val / g_opt2_person_rates_rec.elig_sal_val) * 100,2);
897 else
898   return to_number(null);
899 end if;
900 
901 End get_option2_elg_per_sal;
902 
903 Function get_option2_rate_reco_amt(
904       p_group_plan_id in number,
905       p_lf_evnt_ocrd_dt in Date,
906       p_oipl_id        in number,
907       p_group_per_in_ler_id in number,
908       p_pl_id            in number,
909       p_ws_sub_acty_typ_cd in varchar2) return number
910 is
911 Begin
912    populate_person_option2_rec(
913                      p_group_plan_id,
914                      p_lf_evnt_ocrd_dt,
915                      p_oipl_id,
916                      p_group_per_in_ler_id,
917                      p_pl_id,
918                      p_ws_sub_acty_typ_cd);
919    return  g_opt2_person_rates_rec.REC_VAL;
920 
921 End get_option2_rate_reco_amt;
922 
923 Function get_option2_rate_oth_sal(
924       p_group_plan_id in number,
925       p_lf_evnt_ocrd_dt in Date,
926       p_oipl_id        in number,
927       p_group_per_in_ler_id in number,
928       p_pl_id            in number,
929       p_ws_sub_acty_typ_cd in varchar2) return number
930 is
931 Begin
932    populate_person_option2_rec(
933                      p_group_plan_id,
934                      p_lf_evnt_ocrd_dt,
935                      p_oipl_id,
936                      p_group_per_in_ler_id,
937                      p_pl_id,
938                      p_ws_sub_acty_typ_cd);
939    return  g_opt2_person_rates_rec.OTH_COMP_VAL;
940 
941 End get_option2_rate_oth_sal;
942 
943 Function get_option2_rate_sta_sal(
944       p_group_plan_id in number,
945       p_lf_evnt_ocrd_dt in Date,
946       p_oipl_id        in number,
947       p_group_per_in_ler_id in number,
948       p_pl_id            in number,
949       p_ws_sub_acty_typ_cd in varchar2) return number
950 is
951 Begin
952    populate_person_option2_rec(
953                      p_group_plan_id,
954                      p_lf_evnt_ocrd_dt,
955                      p_oipl_id,
956                      p_group_per_in_ler_id,
957                      p_pl_id,
958                      p_ws_sub_acty_typ_cd);
959    return  g_opt2_person_rates_rec.STAT_SAL_VAL;
960 
961 End get_option2_rate_sta_sal;
962 
963 Function get_option2_rate_tot_comp(
964       p_group_plan_id in number,
965       p_lf_evnt_ocrd_dt in Date,
966       p_oipl_id        in number,
967       p_group_per_in_ler_id in number,
968       p_pl_id            in number,
969       p_ws_sub_acty_typ_cd in varchar2) return number
970 is
971 Begin
972    populate_person_option2_rec(
973                      p_group_plan_id,
974                      p_lf_evnt_ocrd_dt,
975                      p_oipl_id,
976                      p_group_per_in_ler_id,
977                      p_pl_id,
978                      p_ws_sub_acty_typ_cd);
979    return  g_opt2_person_rates_rec.TOT_COMP_VAL;
980 
981 End get_option2_rate_tot_comp;
982 
983 
984 Function get_option2_rate_misc1(
985       p_group_plan_id in number,
986       p_lf_evnt_ocrd_dt in Date,
987       p_oipl_id        in number,
988       p_group_per_in_ler_id in number,
989       p_pl_id            in number,
990       p_ws_sub_acty_typ_cd in varchar2) return number
991 is
992 Begin
993    populate_person_option2_rec(
994                      p_group_plan_id,
995                      p_lf_evnt_ocrd_dt,
996                      p_oipl_id,
997                      p_group_per_in_ler_id,
998                      p_pl_id,
999                      p_ws_sub_acty_typ_cd);
1000    return  g_opt2_person_rates_rec.MISC1_VAL;
1001 
1002 End get_option2_rate_misc1;
1003 
1004 Function get_option2_rate_misc2(
1005       p_group_plan_id in number,
1006       p_lf_evnt_ocrd_dt in Date,
1007       p_oipl_id        in number,
1008       p_group_per_in_ler_id in number,
1009       p_pl_id            in number,
1010       p_ws_sub_acty_typ_cd in varchar2) return number
1011 is
1012 Begin
1013    populate_person_option2_rec(
1014                      p_group_plan_id,
1015                      p_lf_evnt_ocrd_dt,
1016                      p_oipl_id,
1017                      p_group_per_in_ler_id,
1018                      p_pl_id,
1019                      p_ws_sub_acty_typ_cd);
1020    return  g_opt2_person_rates_rec.MISC2_VAL;
1021 
1022 End get_option2_rate_misc2;
1023 
1024 Function get_option2_rate_misc3(
1025       p_group_plan_id in number,
1026       p_lf_evnt_ocrd_dt in Date,
1027       p_oipl_id        in number,
1028       p_group_per_in_ler_id in number,
1029       p_pl_id            in number,
1030       p_ws_sub_acty_typ_cd in varchar2) return number
1031 is
1032 Begin
1033    populate_person_option2_rec(
1034                      p_group_plan_id,
1035                      p_lf_evnt_ocrd_dt,
1036                      p_oipl_id,
1040    return  g_opt2_person_rates_rec.MISC3_VAL;
1037                      p_group_per_in_ler_id,
1038                      p_pl_id,
1039                      p_ws_sub_acty_typ_cd);
1041 
1042 End get_option2_rate_misc3;
1043 
1044 
1045 Function get_option3_name(
1046       p_group_plan_id in number,
1047       p_lf_evnt_ocrd_dt in Date,
1048       p_oipl_id        in number,
1049       p_group_per_in_ler_id in number,
1050       p_pl_id            in number,
1051       p_ws_sub_acty_typ_cd in varchar2) return varchar2
1052 is
1053   cursor cur_option3_name is
1054     Select name
1055     From  ben_cwb_pl_dsgn
1056     Where pl_id = p_group_plan_id
1057     And   group_pl_id = p_group_plan_id
1058     And   lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1059     -- And   oipl_id  <> -1
1060    -- And   opt_count = 3;
1061    and oipl_ordr_num = 3;
1062 
1063    l_option3_name varchar2(240);
1064 Begin
1065 
1066      open cur_option3_name;
1067      fetch  cur_option3_name into l_option3_name;
1068      close  cur_option3_name;
1069      return l_option3_name;
1070 End get_option3_name;
1071 
1072 Procedure populate_person_option3_rec(
1073       p_group_plan_id in number,
1074       p_lf_evt_ocrd_dt in Date,
1075       p_oipl_id        in number,
1076       p_group_per_in_ler_id in number,
1077       p_pl_id            in number,
1078       p_ws_sub_acty_typ_cd in varchar2)
1079 Is
1080     cursor cur_option3_rate is
1081       Select bcpr.*
1082       From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
1083       Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
1084       And   bcpd.group_pl_id = p_group_plan_id
1085      -- AND   bcpd.pl_id       = p_group_plan_id
1086       And   bcpd.lf_evt_ocrd_dt = p_lf_evt_ocrd_dt
1087       --And   bcpd.oipl_id  <> -1
1088       --And   bcpd.opt_count = 3
1089        and oipl_ordr_num = 3
1090       And   bcpd.pl_id = bcpr.pl_id
1091       And   bcpd.group_pl_id  = bcpr.group_pl_id
1092       And   bcpd.oipl_id = bcpr.oipl_id
1093       And   bcpd.lf_evt_ocrd_dt = bcpr.lf_evt_ocrd_dt
1094       and   bcpr.elig_flag = 'Y';
1095 Begin
1096 
1097             g_opt3_person_rates_rec := null;
1098             open cur_option3_rate;
1099             fetch cur_option3_rate into  g_opt3_person_rates_rec;
1100             close cur_option3_rate;
1101 
1102 End populate_person_option3_rec;
1103 
1104 Function get_option3_rate_ws_amt(
1105       p_group_plan_id in number,
1106       p_lf_evnt_ocrd_dt in Date,
1107       p_oipl_id        in number,
1108       p_group_per_in_ler_id in number,
1109       p_pl_id            in number,
1110       p_ws_sub_acty_typ_cd in varchar2) return number
1111 is
1112 Begin
1113    populate_person_option3_rec(
1114                      p_group_plan_id,
1115                      p_lf_evnt_ocrd_dt,
1116                      p_oipl_id,
1117                      p_group_per_in_ler_id,
1118                      p_pl_id,
1119                      p_ws_sub_acty_typ_cd);
1120    return  g_opt3_person_rates_rec.ws_val;
1121 
1122 End get_option3_rate_ws_amt;
1123 
1124 Function get_option3_unit(
1125       p_group_plan_id in number,
1126       p_lf_evnt_ocrd_dt in Date,
1127       p_oipl_id        in number,
1128       p_group_per_in_ler_id in number,
1129       p_pl_id            in number,
1130       p_ws_sub_acty_typ_cd in varchar2) return varchar2
1131 Is
1132 -- ws_nnmntry_uom needs to be decoded from lookup table
1133     Cursor cur_option3_units is
1134        Select decode(ws_nnmntry_uom,null,currency,hr_general.decode_lookup('BEN_NNMNTRY_UOM',ws_nnmntry_uom))
1135        From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
1136                          Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
1137                          And   bcpd.group_pl_id    = p_group_plan_id
1138                          And   bcpd.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1139                          And   bcpr.pl_id          = bcpd.pl_id
1140                          And   bcpr.group_pl_id    = bcpd.group_pl_id
1141                          And   bcpr.oipl_id        = bcpd.oipl_id
1142                          And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
1143                          and   bcpr.elig_flag = 'Y'
1144             and   oipl_ordr_num = 3;
1145 
1146   l_option3_unit  varchar2(30);
1147 Begin
1148   open  cur_option3_units;
1149   fetch cur_option3_units into l_option3_unit;
1150   close cur_option3_units;
1151   return l_option3_unit;
1152 End get_option3_unit;
1153 
1154 
1155 Function get_option3_elg_sal(
1156       p_group_plan_id in number,
1157       p_lf_evnt_ocrd_dt in Date,
1158       p_oipl_id        in number,
1159       p_group_per_in_ler_id in number,
1160       p_pl_id            in number,
1161       p_ws_sub_acty_typ_cd in varchar2) return number
1162 is
1163 Begin
1164 
1165    populate_person_option3_rec(
1166                      p_group_plan_id,
1167                      p_lf_evnt_ocrd_dt,
1168                      p_oipl_id,
1169                      p_group_per_in_ler_id,
1170                      p_pl_id,
1171                      p_ws_sub_acty_typ_cd);
1172    return  g_opt3_person_rates_rec.ELIG_SAL_VAL;
1173 
1174 End get_option3_elg_sal;
1175 
1176 Function get_option3_elg_per_sal(
1180       p_group_per_in_ler_id in number,
1177       p_group_plan_id in number,
1178       p_lf_evnt_ocrd_dt in Date,
1179       p_oipl_id        in number,
1181       p_pl_id            in number,
1182       p_ws_sub_acty_typ_cd in varchar2) return number
1183 Is
1184 Begin
1185 
1186    populate_person_option3_rec(
1187                      p_group_plan_id,
1188                      p_lf_evnt_ocrd_dt,
1189                      p_oipl_id,
1190                      p_group_per_in_ler_id,
1191                      p_pl_id,
1192                      p_ws_sub_acty_typ_cd);
1193 if (g_opt3_person_rates_rec.elig_sal_val <> 0) then
1194   return round( (g_opt3_person_rates_rec.ws_val / g_opt3_person_rates_rec.elig_sal_val) * 100,2);
1195 else
1196   return to_number(null);
1197 end if;
1198 
1199 
1200 End get_option3_elg_per_sal;
1201 
1202 Function get_option3_rate_reco_amt(
1203       p_group_plan_id in number,
1204       p_lf_evnt_ocrd_dt in Date,
1205       p_oipl_id        in number,
1206       p_group_per_in_ler_id in number,
1207       p_pl_id            in number,
1208       p_ws_sub_acty_typ_cd in varchar2) return number
1209 is
1210 Begin
1211    populate_person_option3_rec(
1212                      p_group_plan_id,
1213                      p_lf_evnt_ocrd_dt,
1214                      p_oipl_id,
1215                      p_group_per_in_ler_id,
1216                      p_pl_id,
1217                      p_ws_sub_acty_typ_cd);
1218    return  g_opt3_person_rates_rec.REC_VAL;
1219 
1220 End get_option3_rate_reco_amt;
1221 
1222 Function get_option3_rate_oth_sal(
1223       p_group_plan_id in number,
1224       p_lf_evnt_ocrd_dt in Date,
1225       p_oipl_id        in number,
1226       p_group_per_in_ler_id in number,
1227       p_pl_id            in number,
1228       p_ws_sub_acty_typ_cd in varchar2) return number
1229 is
1230 Begin
1231    populate_person_option3_rec(
1232                      p_group_plan_id,
1233                      p_lf_evnt_ocrd_dt,
1234                      p_oipl_id,
1235                      p_group_per_in_ler_id,
1236                      p_pl_id,
1237                      p_ws_sub_acty_typ_cd);
1238    return  g_opt3_person_rates_rec.OTH_COMP_VAL;
1239 
1240 End get_option3_rate_oth_sal;
1241 
1242 Function get_option3_rate_sta_sal(
1243       p_group_plan_id in number,
1244       p_lf_evnt_ocrd_dt in Date,
1245       p_oipl_id        in number,
1246       p_group_per_in_ler_id in number,
1247       p_pl_id            in number,
1248       p_ws_sub_acty_typ_cd in varchar2) return number
1249 is
1250 Begin
1251    populate_person_option3_rec(
1252                      p_group_plan_id,
1253                      p_lf_evnt_ocrd_dt,
1254                      p_oipl_id,
1255                      p_group_per_in_ler_id,
1256                      p_pl_id,
1257                      p_ws_sub_acty_typ_cd);
1258    return  g_opt3_person_rates_rec.STAT_SAL_VAL;
1259 
1260 End get_option3_rate_sta_sal;
1261 
1262 Function get_option3_rate_tot_comp(
1263       p_group_plan_id in number,
1264       p_lf_evnt_ocrd_dt in Date,
1265       p_oipl_id        in number,
1266       p_group_per_in_ler_id in number,
1267       p_pl_id            in number,
1268       p_ws_sub_acty_typ_cd in varchar2) return number
1269 is
1270 Begin
1271    populate_person_option3_rec(
1272                      p_group_plan_id,
1273                      p_lf_evnt_ocrd_dt,
1274                      p_oipl_id,
1275                      p_group_per_in_ler_id,
1276                      p_pl_id,
1277                      p_ws_sub_acty_typ_cd);
1278    return  g_opt3_person_rates_rec.TOT_COMP_VAL;
1279 
1280 End get_option3_rate_tot_comp;
1281 
1282 
1283 Function get_option3_rate_misc1(
1284       p_group_plan_id in number,
1285       p_lf_evnt_ocrd_dt in Date,
1286       p_oipl_id        in number,
1287       p_group_per_in_ler_id in number,
1288       p_pl_id            in number,
1289       p_ws_sub_acty_typ_cd in varchar2) return number
1290 is
1291 Begin
1292    populate_person_option3_rec(
1293                      p_group_plan_id,
1294                      p_lf_evnt_ocrd_dt,
1295                      p_oipl_id,
1296                      p_group_per_in_ler_id,
1297                      p_pl_id,
1298                      p_ws_sub_acty_typ_cd);
1299    return  g_opt3_person_rates_rec.MISC1_VAL;
1300 
1301 End get_option3_rate_misc1;
1302 
1303 Function get_option3_rate_misc2(
1304       p_group_plan_id in number,
1305       p_lf_evnt_ocrd_dt in Date,
1306       p_oipl_id        in number,
1307       p_group_per_in_ler_id in number,
1308       p_pl_id            in number,
1309       p_ws_sub_acty_typ_cd in varchar2) return number
1310 is
1311 Begin
1312    populate_person_option3_rec(
1313                      p_group_plan_id,
1314                      p_lf_evnt_ocrd_dt,
1315                      p_oipl_id,
1316                      p_group_per_in_ler_id,
1317                      p_pl_id,
1318                      p_ws_sub_acty_typ_cd);
1319    return  g_opt3_person_rates_rec.MISC2_VAL;
1320 
1321 End get_option3_rate_misc2;
1322 
1323 Function get_option3_rate_misc3(
1324       p_group_plan_id in number,
1328       p_pl_id              in number,
1325       p_lf_evnt_ocrd_dt in Date,
1326       p_oipl_id        in number,
1327       p_group_per_in_ler_id in number,
1329       p_ws_sub_acty_typ_cd in varchar2) return number
1330 is
1331 Begin
1332    populate_person_option3_rec(
1333                      p_group_plan_id,
1334                      p_lf_evnt_ocrd_dt,
1335                      p_oipl_id,
1336                      p_group_per_in_ler_id,
1337                      p_pl_id,
1338                      p_ws_sub_acty_typ_cd);
1339    return  g_opt3_person_rates_rec.MISC3_VAL;
1340 End get_option3_rate_misc3;
1341 
1342 Function get_option4_name(
1343       p_group_plan_id in number,
1344       p_lf_evnt_ocrd_dt in Date,
1345       p_oipl_id        in number,
1346       p_group_per_in_ler_id in number,
1347       p_pl_id            in number,
1348       p_ws_sub_acty_typ_cd in varchar2) return varchar2
1349 is
1350   cursor cur_option4_name is
1351     Select name
1352     From  ben_cwb_pl_dsgn
1353     Where pl_id = p_group_plan_id
1354     And   group_pl_id = p_group_plan_id
1355     And   lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1356    -- And   oipl_id  <> -1
1357    -- And   opt_count = 4;
1358     and oipl_ordr_num = 4 ;
1359 
1360    l_option4_name varchar2(240);
1361 Begin
1362 
1363      open cur_option4_name;
1364      fetch  cur_option4_name into l_option4_name;
1365      close  cur_option4_name;
1366      return l_option4_name;
1367 End get_option4_name;
1368 
1369 Procedure populate_person_option4_rec(
1370       p_group_plan_id in number,
1371       p_lf_evt_ocrd_dt in Date,
1372       p_oipl_id        in number,
1373       p_group_per_in_ler_id in number,
1374       p_pl_id            in number,
1375       p_ws_sub_acty_typ_cd in varchar2)
1376 Is
1377     cursor cur_option4_rate is
1378       Select bcpr.*
1379       From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
1380       Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
1381       And   bcpd.group_pl_id = p_group_plan_id
1382      -- AND   bcpd.pl_id       = p_group_plan_id
1383       And   bcpd.lf_evt_ocrd_dt = p_lf_evt_ocrd_dt
1384       --And   bcpd.oipl_id  <> -1
1385      -- And   bcpd.opt_count = 4
1386            and oipl_ordr_num = 4
1387       And   bcpd.pl_id = bcpr.pl_id
1388       And   bcpd.group_pl_id  = bcpr.group_pl_id
1389       And   bcpd.oipl_id = bcpr.oipl_id
1390       And   bcpd.lf_evt_ocrd_dt = bcpr.lf_evt_ocrd_dt
1391       and   bcpr.elig_flag = 'Y';
1392 Begin
1393             g_opt4_person_rates_rec := null;
1394             open cur_option4_rate;
1395             fetch cur_option4_rate into  g_opt4_person_rates_rec;
1396             close cur_option4_rate;
1397 
1398 End populate_person_option4_rec;
1399 
1400 Function get_option4_rate_ws_amt(
1401       p_group_plan_id in number,
1402       p_lf_evnt_ocrd_dt in Date,
1403       p_oipl_id        in number,
1404       p_group_per_in_ler_id in number,
1405       p_pl_id            in number,
1406       p_ws_sub_acty_typ_cd in varchar2) return number
1407 is
1408 Begin
1409    populate_person_option4_rec(
1410                      p_group_plan_id,
1411                      p_lf_evnt_ocrd_dt,
1412                      p_oipl_id,
1413                      p_group_per_in_ler_id,
1414                      p_pl_id,
1415                      p_ws_sub_acty_typ_cd);
1416    return  g_opt4_person_rates_rec.ws_val;
1417 
1418 End get_option4_rate_ws_amt;
1419 
1420 Function get_option4_unit(
1421       p_group_plan_id in number,
1422       p_lf_evnt_ocrd_dt in Date,
1423       p_oipl_id        in number,
1424       p_group_per_in_ler_id in number,
1425       p_pl_id            in number,
1426       p_ws_sub_acty_typ_cd in varchar2) return varchar2
1427 Is
1428 -- ws_nnmntry_uom needs to be decoded from lookup table
1429     Cursor cur_option4_units is
1430        Select decode(ws_nnmntry_uom,null,currency,hr_general.decode_lookup('BEN_NNMNTRY_UOM',ws_nnmntry_uom))
1431         From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
1432                           Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
1433                           And   bcpd.group_pl_id    = p_group_plan_id
1434                           And   bcpd.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1435                           And   bcpr.pl_id          = bcpd.pl_id
1436                           And   bcpr.group_pl_id    = bcpd.group_pl_id
1437                           And   bcpr.oipl_id        = bcpd.oipl_id
1438                           And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
1439                           and   bcpr.elig_flag = 'Y'
1440              and   oipl_ordr_num = 4;
1441 
1442   l_option4_unit  varchar2(30);
1443 Begin
1444   open  cur_option4_units;
1445   fetch cur_option4_units into l_option4_unit;
1446   close cur_option4_units;
1447   return l_option4_unit;
1448 End get_option4_unit;
1449 
1450 
1451 Function get_option4_elg_sal(
1452       p_group_plan_id in number,
1453       p_lf_evnt_ocrd_dt in Date,
1454       p_oipl_id        in number,
1455       p_group_per_in_ler_id in number,
1456       p_pl_id            in number,
1457       p_ws_sub_acty_typ_cd in varchar2) return number
1458 is
1459 Begin
1460 
1461    populate_person_option4_rec(
1465                      p_group_per_in_ler_id,
1462                      p_group_plan_id,
1463                      p_lf_evnt_ocrd_dt,
1464                      p_oipl_id,
1466                      p_pl_id,
1467                      p_ws_sub_acty_typ_cd);
1468    return  g_opt4_person_rates_rec.ELIG_SAL_VAL;
1469 
1470 End get_option4_elg_sal;
1471 
1472 Function get_option4_elg_per_sal(
1473       p_group_plan_id in number,
1474       p_lf_evnt_ocrd_dt in Date,
1475       p_oipl_id        in number,
1476       p_group_per_in_ler_id in number,
1477       p_pl_id            in number,
1478       p_ws_sub_acty_typ_cd in varchar2) return number
1479 Is
1480 Begin
1481 
1482 	 populate_person_option4_rec(
1483                      p_group_plan_id,
1484                      p_lf_evnt_ocrd_dt,
1485                      p_oipl_id,
1486                      p_group_per_in_ler_id,
1487                      p_pl_id,
1488                      p_ws_sub_acty_typ_cd);
1489 if (g_opt4_person_rates_rec.elig_sal_val <> 0) then
1490   return round( (g_opt4_person_rates_rec.ws_val / g_opt4_person_rates_rec.elig_sal_val) * 100,2);
1491 else
1492   return to_number(null);
1493 end if;
1494 
1495 End get_option4_elg_per_sal;
1496 
1497 Function get_option4_rate_reco_amt(
1498       p_group_plan_id in number,
1499       p_lf_evnt_ocrd_dt in Date,
1500       p_oipl_id        in number,
1501       p_group_per_in_ler_id in number,
1502       p_pl_id            in number,
1503       p_ws_sub_acty_typ_cd in varchar2) return number
1504 is
1505 Begin
1506    populate_person_option4_rec(
1507                      p_group_plan_id,
1508                      p_lf_evnt_ocrd_dt,
1509                      p_oipl_id,
1510                      p_group_per_in_ler_id,
1511                      p_pl_id,
1512                      p_ws_sub_acty_typ_cd);
1513    return  g_opt4_person_rates_rec.REC_VAL;
1514 
1515 End get_option4_rate_reco_amt;
1516 
1517 Function get_option4_rate_oth_sal(
1518       p_group_plan_id in number,
1519       p_lf_evnt_ocrd_dt in Date,
1520       p_oipl_id        in number,
1521       p_group_per_in_ler_id in number,
1522       p_pl_id            in number,
1523       p_ws_sub_acty_typ_cd in varchar2) return number
1524 is
1525 Begin
1526    populate_person_option4_rec(
1527                      p_group_plan_id,
1528                      p_lf_evnt_ocrd_dt,
1529                      p_oipl_id,
1530                      p_group_per_in_ler_id,
1531                      p_pl_id,
1532                      p_ws_sub_acty_typ_cd);
1533    return  g_opt4_person_rates_rec.OTH_COMP_VAL;
1534 
1535 End get_option4_rate_oth_sal;
1536 
1537 Function get_option4_rate_sta_sal(
1538       p_group_plan_id in number,
1539       p_lf_evnt_ocrd_dt in Date,
1540       p_oipl_id        in number,
1541       p_group_per_in_ler_id in number,
1542       p_pl_id            in number,
1543       p_ws_sub_acty_typ_cd in varchar2) return number
1544 is
1545 Begin
1546    populate_person_option4_rec(
1547                      p_group_plan_id,
1548                      p_lf_evnt_ocrd_dt,
1549                      p_oipl_id,
1550                      p_group_per_in_ler_id,
1551                      p_pl_id,
1552                      p_ws_sub_acty_typ_cd);
1553    return  g_opt4_person_rates_rec.STAT_SAL_VAL;
1554 
1555 End get_option4_rate_sta_sal;
1556 
1557 Function get_option4_rate_tot_comp(
1558       p_group_plan_id in number,
1559       p_lf_evnt_ocrd_dt in Date,
1560       p_oipl_id        in number,
1561       p_group_per_in_ler_id in number,
1562       p_pl_id            in number,
1563       p_ws_sub_acty_typ_cd in varchar2) return number
1564 is
1565 Begin
1566    populate_person_option4_rec(
1567                      p_group_plan_id,
1568                      p_lf_evnt_ocrd_dt,
1569                      p_oipl_id,
1570                      p_group_per_in_ler_id,
1571                      p_pl_id,
1572                      p_ws_sub_acty_typ_cd);
1573    return  g_opt4_person_rates_rec.TOT_COMP_VAL;
1574 
1575 End get_option4_rate_tot_comp;
1576 
1577 
1578 Function get_option4_rate_misc1(
1579       p_group_plan_id in number,
1580       p_lf_evnt_ocrd_dt in Date,
1581       p_oipl_id        in number,
1582       p_group_per_in_ler_id in number,
1583       p_pl_id            in number,
1584       p_ws_sub_acty_typ_cd in varchar2) return number
1585 is
1586 Begin
1587    populate_person_option4_rec(
1588                      p_group_plan_id,
1589                      p_lf_evnt_ocrd_dt,
1590                      p_oipl_id,
1591                      p_group_per_in_ler_id,
1592                      p_pl_id,
1593                      p_ws_sub_acty_typ_cd);
1594    return  g_opt4_person_rates_rec.MISC1_VAL;
1595 
1596 End get_option4_rate_misc1;
1597 
1598 Function get_option4_rate_misc2(
1599       p_group_plan_id in number,
1600       p_lf_evnt_ocrd_dt in Date,
1601       p_oipl_id        in number,
1602       p_group_per_in_ler_id in number,
1603       p_pl_id            in number,
1604       p_ws_sub_acty_typ_cd in varchar2) return number
1605 is
1606 Begin
1607    populate_person_option4_rec(
1608                      p_group_plan_id,
1612                      p_pl_id,
1609                      p_lf_evnt_ocrd_dt,
1610                      p_oipl_id,
1611                      p_group_per_in_ler_id,
1613                      p_ws_sub_acty_typ_cd);
1614    return  g_opt4_person_rates_rec.MISC2_VAL;
1615 
1616 End get_option4_rate_misc2;
1617 
1618 Function get_option4_rate_misc3(
1619       p_group_plan_id in number,
1620       p_lf_evnt_ocrd_dt in Date,
1621       p_oipl_id        in number,
1622       p_group_per_in_ler_id in number,
1623       p_pl_id              in number,
1624       p_ws_sub_acty_typ_cd in varchar2) return number
1625 is
1626 Begin
1627    populate_person_option4_rec(
1628                      p_group_plan_id,
1629                      p_lf_evnt_ocrd_dt,
1630                      p_oipl_id,
1631                      p_group_per_in_ler_id,
1632                      p_pl_id,
1633                      p_ws_sub_acty_typ_cd);
1634    return  g_opt4_person_rates_rec.MISC3_VAL;
1635 End get_option4_rate_misc3;
1636 
1637 
1638 --
1639 PROCEDURE populate_person_rates_rec(
1640       p_group_plan_id in number,
1641       p_lf_evt_ocrd_dt in Date,
1642       p_oipl_id        in number,
1643       p_group_per_in_ler_id in number,
1644       p_pl_id            in number,
1645       p_ws_sub_acty_typ_cd in varchar2,
1646       p_new_or_prior in varchar2  ) is
1647 
1648 -- *********
1649 -- This next cursor never retreives any record as the person
1650 -- always gets a new group_per_in_ler_id for each cycle. So for
1651 -- one group_per_in_ler_id, we can find only one lf_evt_ocrd_dt
1652 cursor c_prior_person_rate_dt is
1653       select max(lf_evt_ocrd_dt)
1654       from ben_cwb_person_rates
1655       where group_per_in_ler_id = p_group_per_in_ler_id
1656       and   group_pl_id = p_group_plan_id
1657       --and   pl_id  =    p_pl_id
1658       and   lf_evt_ocrd_dt < p_lf_evt_ocrd_dt
1659       and   elig_flag = 'Y';
1660 
1661 -- *** change here. commented out group_pl_id and using pl_id
1662 cursor c_person_rates (c_lf_evt_ocrd_dt Date) is
1663       select * from ben_cwb_person_rates
1664       where group_per_in_ler_id = p_group_per_in_ler_id
1665       and   group_pl_id = p_group_plan_id
1666       --and    pl_id  =    p_pl_id
1667       and    oipl_id =  p_oipl_id
1668       and   lf_evt_ocrd_dt = c_lf_evt_ocrd_dt
1669       and   elig_flag = 'Y';
1670 
1671 
1672  l_lf_evt_ocrd_dt date;
1673 begin
1674   hr_utility.set_location('Entering populate_person_rates_rec. p_ws_sub_acty_typ_cd='||p_ws_sub_acty_typ_cd,10);
1675  -- if (p_ws_sub_acty_typ_cd ='ICM7') then -- Salary Plan
1676   hr_utility.set_location('p_new_or_prior='||p_ws_sub_acty_typ_cd,10);
1677     if (p_new_or_prior ='NEW') then
1678 
1679       g_person_rates_rec := null;
1680       open  c_person_rates (p_lf_evt_ocrd_dt);
1681       fetch c_person_rates into g_person_rates_rec;
1682       close c_person_rates;
1683 
1684     elsif (p_new_or_prior ='PRIOR') then
1685       open  c_prior_person_rate_dt;
1686       fetch c_prior_person_rate_dt into l_lf_evt_ocrd_dt;
1687       close c_prior_person_rate_dt;
1688 
1689       if (l_lf_evt_ocrd_dt is not null) then
1690         g_prior_person_rates_rec := null;
1691         open  c_person_rates (l_lf_evt_ocrd_dt);
1692         fetch c_person_rates into g_prior_person_rates_rec;
1693         close c_person_rates;
1694       end if;
1695 
1696     end if;
1697  -- end if;  then -- Salary Plan
1698 end;
1699 
1700 FUNCTION get_pay_rate (
1701      		  p_group_plan_id in number,
1702     		  p_lf_evnt_ocrd_dt in Date,
1703     		  p_oipl_id        in number,
1704     		  p_group_per_in_ler_id in number,
1705    		  p_pl_id            in number,
1706   		  p_ws_sub_acty_typ_cd in varchar2,
1707    		  p_new_or_prior  in varchar2) return number is
1708 
1709 
1710       l_proposed_salary number := 0;
1711 
1712       cursor c_pay_proposal is
1713             select max(nvl(proposed_salary_n,0))
1714             from per_pay_proposals ppp  ,ben_cwb_person_rates rts
1715             where rts.pay_proposal_id = ppp.pay_proposal_id
1716             and   rts.group_per_in_ler_id = p_group_per_in_ler_id
1717             and   rts.group_pl_id =  p_group_plan_id
1718             and   rts.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1719             and   rts.ws_val is not null
1720       	    and   rts.elig_flag = 'Y';
1721       cursor c_prior_pay_proposal is
1722       	select nvl(base_salary,0)
1723       	from ben_cwb_person_info
1724       	where group_per_in_ler_id = p_group_per_in_ler_id;
1725 
1726 begin
1727 
1728    if (p_new_or_prior = 'NEW') then
1729       open c_pay_proposal;
1730       fetch c_pay_proposal into l_proposed_salary;
1731       close c_pay_proposal;
1732    else
1733       -- we need to get the prior salary
1734       open c_prior_pay_proposal;
1735       fetch c_prior_pay_proposal into l_proposed_salary;
1736       close c_prior_pay_proposal;
1737    end if;
1738    return l_proposed_salary;
1739 end get_pay_rate;
1740 
1741 
1742 
1743 FUNCTION get_pay_rate_change_amount (
1744       p_group_plan_id in number,
1745       p_lf_evt_ocrd_dt in Date,
1746       p_oipl_id        in number,
1747       p_group_per_in_ler_id in number,
1748       p_pl_id            in number,
1752       l_prior_proposed_salary number;
1749       p_ws_sub_acty_typ_cd in varchar2) return number is
1750 
1751       l_new_proposed_salary   number;
1753       l_pay_proposal          varchar2(30);
1754 begin
1755    l_new_proposed_salary :=
1756    get_pay_rate (
1757     p_group_plan_id,p_lf_evt_ocrd_dt,
1758     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1759     p_ws_sub_acty_typ_cd, 'NEW');
1760 
1761    l_prior_proposed_salary :=
1762    get_pay_rate (
1763      p_group_plan_id,p_lf_evt_ocrd_dt,
1764     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1765     p_ws_sub_acty_typ_cd, 'PRIOR');
1766 
1767    if (l_new_proposed_salary = l_prior_proposed_salary) then
1768       return 0;
1769    else
1770       return l_new_proposed_salary - l_prior_proposed_salary;
1771    end if;
1772 end get_pay_rate_change_amount;
1773 
1774 
1775 FUNCTION get_pay_rate_change_percent (
1776       p_group_plan_id in number,
1777       p_lf_evt_ocrd_dt in Date,
1778       p_oipl_id        in number,
1779       p_group_per_in_ler_id in number,
1780       p_pl_id            in number,
1781       p_ws_sub_acty_typ_cd in varchar2) return number is
1782 
1783       l_new_proposed_salary   number;
1784       l_prior_proposed_salary number;
1785       l_pay_proposal          varchar2(30);
1786 begin
1787    l_new_proposed_salary :=
1788    get_pay_rate (
1789     p_group_plan_id,p_lf_evt_ocrd_dt,
1790     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1791     p_ws_sub_acty_typ_cd, 'NEW');
1792 
1793    l_prior_proposed_salary :=
1794    get_pay_rate (
1795      p_group_plan_id,p_lf_evt_ocrd_dt,
1796     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1797     p_ws_sub_acty_typ_cd, 'PRIOR');
1798 
1799 
1800   if (l_new_proposed_salary = l_prior_proposed_salary) then
1801       return 0;
1802    else
1803       if (l_new_proposed_salary = 0 ) then
1804          return 0;
1805       elsif (l_prior_proposed_salary = 0) then
1806         return 100;
1807       end if;
1808       return round(((l_new_proposed_salary - l_prior_proposed_salary) / l_prior_proposed_salary) * 100,2);
1809    end if;
1810 end get_pay_rate_change_percent;
1811 
1812 FUNCTION get_pay_rate_change_date (
1813       p_group_plan_id in number,
1814       p_lf_evnt_ocrd_dt in Date,
1815       p_oipl_id        in number,
1816       p_group_per_in_ler_id in number,
1817       p_pl_id            in number,
1818       p_ws_sub_acty_typ_cd in varchar2,
1819       p_new_or_prior  in varchar2) return varchar2 is
1820 
1821 
1822       l_change_date varchar2(30);
1823 
1824       -- return the comp_posting_date
1825       cursor c_pay_proposal_date is
1826                  select max(change_date)
1827                  from per_pay_proposals ppp
1828                      ,ben_cwb_person_rates rts
1829                  where rts.pay_proposal_id = ppp.pay_proposal_id
1830                  and   rts.group_per_in_ler_id = p_group_per_in_ler_id
1831                  and   rts.group_pl_id =  p_group_plan_id
1832                  and   rts.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
1833                  and   rts.ws_val is not null
1834       	  	 and   rts.elig_flag = 'Y';
1835 
1836 
1837       cursor c_prior_pay_proposal_date is
1838       select BASE_SALARY_CHANGE_DATE
1839       from ben_cwb_person_info
1840       where group_per_in_ler_id = p_group_per_in_ler_id;
1841 
1842 begin
1843 -- *********
1844    if (p_new_or_prior = 'NEW') then
1845       open c_pay_proposal_date;
1846       fetch c_pay_proposal_date into l_change_date;
1847       close c_pay_proposal_date;
1848    else
1849       -- we need to get the prior salary
1850       open c_prior_pay_proposal_date;
1851       fetch c_prior_pay_proposal_date into l_change_date;
1852       close c_prior_pay_proposal_date;
1853    end if;
1854 
1855    return l_change_date;
1856 
1857 end get_pay_rate_change_date;
1858 
1859 
1860 FUNCTION get_pay_rate_basis (
1861       p_group_plan_id in number,
1862       p_lf_evnt_ocrd_dt in Date,
1863       p_oipl_id        in number,
1864       p_group_per_in_ler_id in number,
1865       p_pl_id            in number,
1866       p_ws_sub_acty_typ_cd in varchar2) return Varchar2 is
1867 
1868 Cursor c_pay_rate_basis is
1869 select initcap(pay_basis)
1870 from   per_pay_bases ppb,
1871        per_all_assignments_f  paaf
1872 where  ppb.pay_basis_id = paaf.pay_basis_id
1873 and    sysdate between paaf.effective_start_date and paaf.effective_end_date
1874 and    paaf.primary_flag = 'Y'
1875 and    paaf.assignment_id = g_person_rates_rec.assignment_id;
1876 
1877 l_pay_basis  per_pay_bases.pay_basis%Type;
1878 BEGIN
1879 
1880    populate_person_rates_rec (
1881     p_group_plan_id,p_lf_evnt_ocrd_dt,
1882     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1883     p_ws_sub_acty_typ_cd, 'NEW');
1884 
1885    OPEN  c_pay_rate_basis;
1886    fetch c_pay_rate_basis into l_pay_basis;
1887    close c_pay_rate_basis;
1888 
1889    return l_pay_basis;
1890 end get_pay_rate_basis;
1891 
1892 FUNCTION get_plan_rate_ws_amt (
1893       p_group_plan_id in number,
1894       p_lf_evnt_ocrd_dt in Date,
1895       p_oipl_id        in number,
1896       p_group_per_in_ler_id in number,
1897       p_pl_id            in number,
1901      p_group_plan_id,p_lf_evnt_ocrd_dt,
1898       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1899 begin
1900    populate_person_rates_rec (
1902     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1903     p_ws_sub_acty_typ_cd, 'NEW');
1904 
1905    return g_person_rates_rec.ws_val;
1906 end get_plan_rate_ws_amt;
1907 
1908 FUNCTION get_plan_rate_elig_sal (
1909       p_group_plan_id in number,
1910       p_lf_evnt_ocrd_dt in Date,
1911       p_oipl_id        in number,
1912       p_group_per_in_ler_id in number,
1913       p_pl_id            in number,
1914       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1915 begin
1916    populate_person_rates_rec (
1917      p_group_plan_id,p_lf_evnt_ocrd_dt,
1918     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1919     p_ws_sub_acty_typ_cd, 'NEW');
1920 
1921    return g_person_rates_rec.elig_sal_val;
1922 end get_plan_rate_elig_sal;
1923 
1924 FUNCTION get_plan_percent_elig_sal (
1925       p_group_plan_id in number,
1926       p_lf_evnt_ocrd_dt in Date,
1927       p_oipl_id        in number,
1928       p_group_per_in_ler_id in number,
1929       p_pl_id            in number,
1930       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1931 begin
1932    populate_person_rates_rec (
1933     p_group_plan_id,p_lf_evnt_ocrd_dt,
1934     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1935     p_ws_sub_acty_typ_cd, 'NEW');
1936 
1937 if (g_person_rates_rec.elig_sal_val <>0 ) then
1938    return round( (g_person_rates_rec.ws_val / g_person_rates_rec.elig_sal_val) * 100,2);
1939 else
1940    return to_number(null);
1941 end if;
1942 
1943 end get_plan_percent_elig_sal;
1944 
1945 FUNCTION get_plan_rate_rec_amt (
1946       p_group_plan_id in number,
1947       p_lf_evnt_ocrd_dt in Date,
1948       p_oipl_id        in number,
1949       p_group_per_in_ler_id in number,
1950       p_pl_id            in number,
1951       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1952 begin
1953    populate_person_rates_rec (
1954      p_group_plan_id,p_lf_evnt_ocrd_dt,
1955     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1956     p_ws_sub_acty_typ_cd, 'NEW');
1957 
1958    return g_person_rates_rec.rec_val;
1959 end get_plan_rate_rec_amt;
1960 
1961 FUNCTION get_plan_rate_other_sal (
1962       p_group_plan_id in number,
1963       p_lf_evnt_ocrd_dt in Date,
1964       p_oipl_id        in number,
1965       p_group_per_in_ler_id in number,
1966       p_pl_id            in number,
1967       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1968 begin
1969    populate_person_rates_rec (
1970      p_group_plan_id,p_lf_evnt_ocrd_dt,
1971     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1972     p_ws_sub_acty_typ_cd, 'NEW');
1973 
1974    return g_person_rates_rec.oth_comp_val;
1975 end get_plan_rate_other_sal;
1976 
1977 FUNCTION get_plan_rate_stat_sal (
1978       p_group_plan_id in number,
1979       p_lf_evnt_ocrd_dt in Date,
1980       p_oipl_id        in number,
1981       p_group_per_in_ler_id in number,
1982       p_pl_id            in number,
1983       p_ws_sub_acty_typ_cd in varchar2 ) return number is
1984 begin
1985    populate_person_rates_rec (
1986      p_group_plan_id,p_lf_evnt_ocrd_dt,
1987     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
1988     p_ws_sub_acty_typ_cd, 'NEW');
1989 
1990    return g_person_rates_rec.stat_sal_val;
1991 end get_plan_rate_stat_sal;
1992 
1993 FUNCTION get_plan_rate_total_comp (
1994       p_group_plan_id in number,
1995       p_lf_evnt_ocrd_dt in Date,
1996       p_oipl_id        in number,
1997       p_group_per_in_ler_id in number,
1998       p_pl_id            in number,
1999       p_ws_sub_acty_typ_cd in varchar2 ) return number is
2000 begin
2001    populate_person_rates_rec (
2002      p_group_plan_id,p_lf_evnt_ocrd_dt,
2003     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
2004     p_ws_sub_acty_typ_cd, 'NEW');
2005 
2006    return g_person_rates_rec.tot_comp_val;
2007 end get_plan_rate_total_comp;
2008 
2009 FUNCTION get_plan_rate_misc1 (
2010       p_group_plan_id in number,
2011       p_lf_evnt_ocrd_dt in Date,
2012       p_oipl_id        in number,
2013       p_group_per_in_ler_id in number,
2014       p_pl_id            in number,
2015       p_ws_sub_acty_typ_cd in varchar2 ) return number is
2016 begin
2017    populate_person_rates_rec (
2018      p_group_plan_id,p_lf_evnt_ocrd_dt,
2019     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
2020     p_ws_sub_acty_typ_cd, 'NEW');
2021 
2022    return g_person_rates_rec.misc1_val;
2023 end get_plan_rate_misc1;
2024 
2025 FUNCTION get_plan_rate_misc2 (
2026       p_group_plan_id in number,
2027       p_lf_evnt_ocrd_dt in Date,
2028       p_oipl_id        in number,
2029       p_group_per_in_ler_id in number,
2030       p_pl_id            in number,
2031       p_ws_sub_acty_typ_cd in varchar2 ) return number is
2032 begin
2033    populate_person_rates_rec (
2034      p_group_plan_id,p_lf_evnt_ocrd_dt,
2035     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
2036     p_ws_sub_acty_typ_cd, 'NEW');
2037 
2038    return g_person_rates_rec.misc2_val;
2039 end get_plan_rate_misc2;
2040 
2041 FUNCTION get_plan_rate_misc3 (
2042       p_group_plan_id in number,
2046       p_pl_id            in number,
2043       p_lf_evnt_ocrd_dt in Date,
2044       p_oipl_id        in number,
2045       p_group_per_in_ler_id in number,
2047       p_ws_sub_acty_typ_cd in varchar2 ) return number is
2048 begin
2049    populate_person_rates_rec (
2050      p_group_plan_id,p_lf_evnt_ocrd_dt,
2051     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
2052     p_ws_sub_acty_typ_cd, 'NEW');
2053 
2054    return g_person_rates_rec.misc3_val;
2055 end get_plan_rate_misc3;
2056 
2057 PROCEDURE  populate_asgn_txn_rec (
2058     p_assignment_id     in number,
2059     p_asg_updt_eff_date in date) IS
2060 
2061 BEGIN
2062 
2063    --IF (nvl(g_asgn_txn_rec.assignment_id,-1) <> p_assignment_id OR
2064    --    nvl(to_date(g_asgn_txn_rec.asg_updt_eff_date,'RRRR/MM/DD'),hr_general.start_of_time  ) <> p_asg_updt_eff_date ) THEN
2065 
2066        g_asgn_txn_rec := null;
2067        OPEN  g_cursor_asgn_txn (p_assignment_id, to_char(p_asg_updt_eff_date,'RRRR/MM/DD'));
2068        FETCH g_cursor_asgn_txn into g_asgn_txn_rec;
2069        CLOSE g_cursor_asgn_txn;
2070 
2071    --END IF;
2072 END populate_asgn_txn_rec;
2073 
2074 FUNCTION get_new_job (
2075     p_assignment_id     in number,
2076     p_asg_updt_eff_date in date) return varchar2 IS
2077 begin
2078      populate_asgn_txn_rec (p_assignment_id, p_asg_updt_eff_date);
2079 
2080      if ( g_asgn_txn_rec.job_id is not null) then
2081         return ( hr_general.decode_job(g_asgn_txn_rec.job_id));
2082      end if;
2083 
2084      return null;
2085 end get_new_job;
2086 
2087 FUNCTION get_new_position (
2088     p_assignment_id     in number,
2089     p_asg_updt_eff_date in date) return varchar2 IS
2090 begin
2091      populate_asgn_txn_rec (p_assignment_id, p_asg_updt_eff_date);
2092      -- Using DECODE_POSITION_LATEST_NAME instead of DECODE_POSITION  : Anadi
2093      if ( g_asgn_txn_rec.position_id is not null) then
2094         return ( hr_general.DECODE_POSITION_LATEST_NAME(g_asgn_txn_rec.position_id));
2095      end if;
2096 
2097      return null;
2098 end get_new_position;
2099 
2100 FUNCTION get_new_grade (
2101     p_assignment_id     in number,
2102     p_asg_updt_eff_date in date) return varchar2 IS
2103 begin
2104      populate_asgn_txn_rec (p_assignment_id, p_asg_updt_eff_date);
2105 
2106      if ( g_asgn_txn_rec.grade_id is not null) then
2107         return ( hr_general.decode_grade (g_asgn_txn_rec.grade_id));
2108      end if;
2109 
2110      return null;
2111 end get_new_grade ;
2112 
2113 
2114 FUNCTION get_new_people_group(
2115     p_assignment_id     in number,
2116     p_asg_updt_eff_date in date) return varchar2 IS
2117 begin
2118      populate_asgn_txn_rec (p_assignment_id, p_asg_updt_eff_date);
2119 
2120      if ( g_asgn_txn_rec.people_group_id is not null) then
2121         return ( hr_general.decode_people_group (g_asgn_txn_rec.people_group_id));
2122      end if;
2123 
2124      return null;
2125 end get_new_people_group ;
2126 
2127 FUNCTION get_new_asgn_flex(
2128     p_assignment_id     in number,
2129     p_asg_updt_eff_date in date,
2130     p_asg_flex_num      in number
2131     ) return varchar2 IS
2132 
2133     l_asgn_flex  ben_transaction.attribute11%Type;
2134 begin
2135      populate_asgn_txn_rec (p_assignment_id, p_asg_updt_eff_date);
2136 
2137      if (p_asg_flex_num = 1) then
2138        l_asgn_flex := g_asgn_txn_rec.asgn_flex1;
2139      elsif (p_asg_flex_num = 2) then
2140        l_asgn_flex := g_asgn_txn_rec.asgn_flex2;
2141      elsif (p_asg_flex_num = 3) then
2142        l_asgn_flex := g_asgn_txn_rec.asgn_flex3;
2143      elsif (p_asg_flex_num = 4) then
2144        l_asgn_flex := g_asgn_txn_rec.asgn_flex4;
2145      elsif (p_asg_flex_num = 5) then
2146        l_asgn_flex := g_asgn_txn_rec.asgn_flex5;
2147      elsif (p_asg_flex_num = 6) then
2148        l_asgn_flex := g_asgn_txn_rec.asgn_flex6;
2149      elsif (p_asg_flex_num = 7) then
2150        l_asgn_flex := g_asgn_txn_rec.asgn_flex7;
2151      elsif (p_asg_flex_num = 8) then
2152        l_asgn_flex := g_asgn_txn_rec.asgn_flex8;
2153      elsif (p_asg_flex_num = 9) then
2154        l_asgn_flex := g_asgn_txn_rec.asgn_flex9;
2155      elsif (p_asg_flex_num = 10) then
2156        l_asgn_flex := g_asgn_txn_rec.asgn_flex10;
2157      elsif (p_asg_flex_num = 11) then
2158        l_asgn_flex := g_asgn_txn_rec.asgn_flex11;
2159      elsif (p_asg_flex_num = 12) then
2160        l_asgn_flex := g_asgn_txn_rec.asgn_flex12;
2161      elsif (p_asg_flex_num = 13) then
2162        l_asgn_flex := g_asgn_txn_rec.asgn_flex13;
2163      elsif (p_asg_flex_num = 14) then
2164        l_asgn_flex := g_asgn_txn_rec.asgn_flex14;
2165      elsif (p_asg_flex_num = 15) then
2166        l_asgn_flex := g_asgn_txn_rec.asgn_flex15;
2167      elsif (p_asg_flex_num = 16) then
2168        l_asgn_flex := g_asgn_txn_rec.asgn_flex16;
2169      elsif (p_asg_flex_num = 17) then
2170        l_asgn_flex := g_asgn_txn_rec.asgn_flex17;
2171      elsif (p_asg_flex_num = 18) then
2172        l_asgn_flex := g_asgn_txn_rec.asgn_flex18;
2173      elsif (p_asg_flex_num = 19) then
2174        l_asgn_flex := g_asgn_txn_rec.asgn_flex19;
2175      elsif (p_asg_flex_num = 20) then
2176        l_asgn_flex := g_asgn_txn_rec.asgn_flex20;
2177      elsif (p_asg_flex_num = 21) then
2178        l_asgn_flex := g_asgn_txn_rec.asgn_flex21;
2182        l_asgn_flex := g_asgn_txn_rec.asgn_flex23;
2179      elsif (p_asg_flex_num = 22) then
2180        l_asgn_flex := g_asgn_txn_rec.asgn_flex22;
2181      elsif (p_asg_flex_num = 23) then
2183      elsif (p_asg_flex_num = 24) then
2184        l_asgn_flex := g_asgn_txn_rec.asgn_flex24;
2185      elsif (p_asg_flex_num = 25) then
2186        l_asgn_flex := g_asgn_txn_rec.asgn_flex25;
2187      elsif (p_asg_flex_num = 26) then
2188        l_asgn_flex := g_asgn_txn_rec.asgn_flex26;
2189      elsif (p_asg_flex_num = 27) then
2190        l_asgn_flex := g_asgn_txn_rec.asgn_flex27;
2191      elsif (p_asg_flex_num = 28) then
2192        l_asgn_flex := g_asgn_txn_rec.asgn_flex28;
2193      elsif (p_asg_flex_num = 29) then
2194        l_asgn_flex := g_asgn_txn_rec.asgn_flex29;
2195      elsif (p_asg_flex_num = 30) then
2196        l_asgn_flex := g_asgn_txn_rec.asgn_flex30;
2197      end if;
2198 
2199      return l_asgn_flex;
2200 
2201 end get_new_asgn_flex;
2202 
2203 function get_new_perf_rating (
2204     p_assignment_id     in number,
2205     p_perf_revw_strt_dt in date,
2206     p_emp_interview_typ_cd in varchar2 ) return varchar2 IS
2207 
2208 CURSOR c_perf_rate  is
2209 select hr_general.decode_lookup('PERFORMANCE_RATING',attribute3)
2210 From  ben_transaction
2211 where transaction_id = p_assignment_id
2212 and   transaction_type = 'CWBPERF'||to_char(p_perf_revw_strt_dt,'rrrr/mm/dd')
2213 ||p_emp_interview_typ_cd;
2214 
2215 l_perf_rating ben_transaction.attribute3%Type;
2216 begin
2217    open  c_perf_rate;
2218    fetch c_perf_rate into l_perf_rating;
2219    close c_perf_rate;
2220 
2221    return l_perf_rating;
2222 
2223 end get_new_perf_rating;
2224 
2225 --
2226 function get_group_short_name (
2227                  p_plan_id                in number ,
2228                  p_lf_evt_ocrd_dt         in date   ) return varchar2 is
2229 cursor c_doc_short_name is
2230 select pqh_document_short_name
2231 from   ben_cwb_pl_dsgn
2232 where  pl_id    = p_plan_id
2233 and    oipl_id =  -1
2234 and    lf_evt_ocrd_dt = p_lf_evt_ocrd_dt;
2235 
2236 l_short_name  pqh_documents_f.short_name%type;
2237  begin
2238 
2239      if (p_plan_id is null) then
2240        return null;
2241      end if;
2242 
2243      open c_doc_short_name;
2244      fetch c_doc_short_name into l_short_name;
2245      close c_doc_short_name;
2246 
2247       return l_short_name;
2248 end get_group_short_name;
2249 
2250 
2251 procedure  populate_ws_mgr(p_group_per_in_ler_id in number) is
2252 
2253     cursor c_ws_mgr_name is
2254         select info.full_name, info.brief_name, info.custom_name
2255         from   ben_cwb_person_info info,
2256                 ben_cwb_group_hrchy hrchy
2257         where  hrchy.emp_per_in_ler_id = p_group_per_in_ler_id
2258         and    hrchy.mgr_per_in_ler_id = info.group_per_in_ler_id
2259         and    hrchy.lvl_num = 1;
2260 begin
2261 
2262 	open c_ws_mgr_name;
2263 	g_ws_mgr_full_name := null;
2264 	g_ws_mgr_brief_name := null;
2265 	g_ws_mgr_custom_name := null;
2266         fetch c_ws_mgr_name  into g_ws_mgr_full_name,g_ws_mgr_brief_name,g_ws_mgr_custom_name;
2267         close c_ws_mgr_name;
2268 
2269 end  populate_ws_mgr;
2270 
2271 
2272 function get_ws_mgr_full_name(p_group_per_in_ler_id in number) return varchar2 is
2273 begin
2274 	  --if (g_ws_mgr_full_name is null) then
2275 	        populate_ws_mgr(p_group_per_in_ler_id);
2276 	  --end if;
2277 	  return g_ws_mgr_full_name;
2278 end  get_ws_mgr_full_name;
2279 
2280 
2281 function get_ws_mgr_brief_name(p_group_per_in_ler_id in number) return varchar2 is
2282 	begin
2283 	  --if (g_ws_mgr_brief_name is null) then
2284 	        populate_ws_mgr(p_group_per_in_ler_id);
2285 	  --end if;
2286 	  return g_ws_mgr_brief_name;
2287 end  get_ws_mgr_brief_name;
2288 
2289 
2290 function get_ws_mgr_custom_name(p_group_per_in_ler_id in number) return varchar2 is
2291 begin
2292 	  --if (g_ws_mgr_custom_name is null) then
2293 	        populate_ws_mgr(p_group_per_in_ler_id);
2294 	  --end if;
2295 	  return g_ws_mgr_custom_name;
2296 end  get_ws_mgr_custom_name;
2297 
2298 
2299 --
2300 
2301 Function get_option_currency(
2302       p_group_plan_id in number,
2303       p_lf_evnt_ocrd_dt in Date,
2304       p_oipl_id        in number,
2305       p_group_per_in_ler_id in number,
2306       p_pl_id            in number,
2307       p_ws_sub_acty_typ_cd in varchar2,
2308       p_oipl_ordr_num in number) return varchar2
2309 Is
2310 
2311     Cursor cur_option_currency is
2312        Select currency
2313        From  ben_cwb_person_rates bcpr,ben_cwb_pl_dsgn  bcpd
2314        Where bcpr.group_per_in_ler_id = p_group_per_in_ler_id
2315                And   bcpd.group_pl_id    = p_group_plan_id
2316                And   bcpd.lf_evt_ocrd_dt = p_lf_evnt_ocrd_dt
2317                And   bcpr.pl_id          = bcpd.pl_id
2318                And   bcpr.group_pl_id    = bcpd.group_pl_id
2319                And   bcpr.oipl_id        = bcpd.oipl_id
2320                And   bcpr.lf_evt_ocrd_dt = bcpd.lf_evt_ocrd_dt
2321                And   bcpr.elig_flag = 'Y'
2322                And   oipl_ordr_num = p_oipl_ordr_num;
2323 
2324   l_option_currency  varchar2(30);
2325 Begin
2326   open  cur_option_currency;
2327   fetch cur_option_currency into l_option_currency;
2328   close cur_option_currency;
2329   return l_option_currency;
2330 End get_option_currency;
2331 
2332 
2333 
2334 Function get_option1_currency(
2335       p_group_plan_id in number,
2336       p_lf_evnt_ocrd_dt in Date,
2337       p_oipl_id        in number,
2338       p_group_per_in_ler_id in number,
2339       p_pl_id            in number,
2340       p_ws_sub_acty_typ_cd in varchar2) return varchar2
2341 Is
2342     l_option1_currency  varchar2(30);
2343 Begin
2344   l_option1_currency := get_option_currency(p_group_plan_id,p_lf_evnt_ocrd_dt,
2345   					    p_oipl_id,p_group_per_in_ler_id,
2346   					    p_pl_id,p_ws_sub_acty_typ_cd,1);
2347   return l_option1_currency;
2348 End get_option1_currency;
2349 
2350 Function get_option2_currency(
2351       p_group_plan_id in number,
2352       p_lf_evnt_ocrd_dt in Date,
2353       p_oipl_id        in number,
2354       p_group_per_in_ler_id in number,
2355       p_pl_id            in number,
2356       p_ws_sub_acty_typ_cd in varchar2) return varchar2
2357 Is
2358     l_option2_currency  varchar2(30);
2359 Begin
2360   l_option2_currency := get_option_currency(p_group_plan_id,p_lf_evnt_ocrd_dt,
2361   					    p_oipl_id,p_group_per_in_ler_id,
2362   					    p_pl_id,p_ws_sub_acty_typ_cd,2);
2363   return l_option2_currency;
2364 End get_option2_currency;
2365 
2366 Function get_option3_currency(
2367       p_group_plan_id in number,
2368       p_lf_evnt_ocrd_dt in Date,
2369       p_oipl_id        in number,
2370       p_group_per_in_ler_id in number,
2371       p_pl_id            in number,
2372       p_ws_sub_acty_typ_cd in varchar2) return varchar2
2373 Is
2374     l_option3_currency  varchar2(30);
2375 Begin
2376   l_option3_currency := get_option_currency(p_group_plan_id,p_lf_evnt_ocrd_dt,
2377   					    p_oipl_id,p_group_per_in_ler_id,
2378   					    p_pl_id,p_ws_sub_acty_typ_cd,3);
2379   return l_option3_currency;
2380 End get_option3_currency;
2381 
2382 Function get_option4_currency(
2383       p_group_plan_id in number,
2384       p_lf_evnt_ocrd_dt in Date,
2385       p_oipl_id        in number,
2386       p_group_per_in_ler_id in number,
2387       p_pl_id            in number,
2388       p_ws_sub_acty_typ_cd in varchar2) return varchar2
2389 Is
2390     l_option4_currency  varchar2(30);
2391 Begin
2392   l_option4_currency := get_option_currency(p_group_plan_id,p_lf_evnt_ocrd_dt,
2393   					    p_oipl_id,p_group_per_in_ler_id,
2394   					    p_pl_id,p_ws_sub_acty_typ_cd,4);
2395   return l_option4_currency;
2396 End get_option4_currency;
2397 
2398 FUNCTION get_plan_rate_start_dt (
2399       p_group_plan_id in number,
2400       p_lf_evnt_ocrd_dt in Date,
2404       p_ws_sub_acty_typ_cd in varchar2 ) return varchar2 is
2401       p_oipl_id        in number,
2402       p_group_per_in_ler_id in number,
2403       p_pl_id            in number,
2405 begin
2406    populate_person_rates_rec (
2407      p_group_plan_id,p_lf_evnt_ocrd_dt,
2408     p_oipl_id,p_group_per_in_ler_id, p_pl_id,
2409     p_ws_sub_acty_typ_cd, 'NEW');
2410    return g_person_rates_rec.ws_rt_start_date;
2411 end get_plan_rate_start_dt;
2412 
2413 Function get_option1_rate_start_dt(
2414       p_group_plan_id in number,
2415       p_lf_evnt_ocrd_dt in Date,
2416       p_oipl_id        in number,
2417       p_group_per_in_ler_id in number,
2418       p_pl_id            in number,
2419       p_ws_sub_acty_typ_cd in varchar2) return varchar2 is
2420 Begin
2421    populate_person_option1_rec(
2422                      p_group_plan_id,
2423                      p_lf_evnt_ocrd_dt,
2424                      p_oipl_id,
2425                      p_group_per_in_ler_id,
2426                      p_pl_id,
2427                      p_ws_sub_acty_typ_cd);
2428    return  g_opt1_person_rates_rec.ws_rt_start_date;
2429 end get_option1_rate_start_dt;
2430 
2431 Function get_option2_rate_start_dt(
2432       p_group_plan_id in number,
2433       p_lf_evnt_ocrd_dt in Date,
2434       p_oipl_id        in number,
2435       p_group_per_in_ler_id in number,
2436       p_pl_id            in number,
2437       p_ws_sub_acty_typ_cd in varchar2) return varchar2 is
2438 Begin
2439    populate_person_option2_rec(
2440                      p_group_plan_id,
2441                      p_lf_evnt_ocrd_dt,
2442                      p_oipl_id,
2443                      p_group_per_in_ler_id,
2444                      p_pl_id,
2445                      p_ws_sub_acty_typ_cd);
2446    return  g_opt2_person_rates_rec.ws_rt_start_date;
2447 end get_option2_rate_start_dt;
2448 
2449 Function get_option3_rate_start_dt(
2450       p_group_plan_id in number,
2451       p_lf_evnt_ocrd_dt in Date,
2452       p_oipl_id        in number,
2453       p_group_per_in_ler_id in number,
2454       p_pl_id            in number,
2455       p_ws_sub_acty_typ_cd in varchar2) return varchar2 is
2456 Begin
2457    populate_person_option3_rec(
2458                      p_group_plan_id,
2459                      p_lf_evnt_ocrd_dt,
2460                      p_oipl_id,
2461                      p_group_per_in_ler_id,
2462                      p_pl_id,
2463                      p_ws_sub_acty_typ_cd);
2464    return  g_opt3_person_rates_rec.ws_rt_start_date;
2465 end get_option3_rate_start_dt;
2466 
2467 Function get_option4_rate_start_dt(
2468       p_group_plan_id in number,
2469       p_lf_evnt_ocrd_dt in Date,
2470       p_oipl_id        in number,
2471       p_group_per_in_ler_id in number,
2472       p_pl_id            in number,
2473       p_ws_sub_acty_typ_cd in varchar2) return varchar2 is
2474 Begin
2475    populate_person_option4_rec(
2476                      p_group_plan_id,
2477                      p_lf_evnt_ocrd_dt,
2478                      p_oipl_id,
2479                      p_group_per_in_ler_id,
2480                      p_pl_id,
2481                      p_ws_sub_acty_typ_cd);
2482    return  g_opt4_person_rates_rec.ws_rt_start_date;
2483 end get_option4_rate_start_dt;
2484 
2485 
2486 --
2487 
2488 /* ---------------------------------------------------------------------
2489    END -- Changes for Printable document
2490    --------------------------------------------------------------------- */
2491 END;