[Home] [Help]
PACKAGE BODY: APPS.BEN_EXT_ELIG_DPNT
Source
1 package body BEN_EXT_ELIG_DPNT as
2 /* $Header: benxeldp.pkb 120.2 2007/07/16 23:46:52 tjesumic noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' ben_ext_elig_dpnt.'; -- Global package name
9
10
11 TYPE t_number IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12 TYPE t_varchar2_30 IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
13 TYPE t_varchar2_600 IS TABLE OF VARCHAR2(600) INDEX BY BINARY_INTEGER;
14 TYPE t_date IS TABLE OF Date INDEX BY BINARY_INTEGER;
15
16 --
17 -- procedure to initialize the globals - May, 99
18 -- ----------------------------------------------------------------------------
19 -- |---------------------< initialize_globals >-------------------------------|
20 -- ----------------------------------------------------------------------------
21 PROCEDURE initialize_globals IS
22 --
23 l_proc varchar2(72) := g_package||'initialize_globals';
24 --
25 Begin
26 --
27 --
28 hr_utility.set_location('Entering'||l_proc, 5);
29 --
30 --
31 ben_ext_person.g_elig_dpnt_elig_strt_dt := null;
32 ben_ext_person.g_elig_dpnt_elig_thru_dt := null;
33 ben_ext_person.g_elig_dpnt_create_dt := null;
34 ben_ext_person.g_elig_dpnt_ovrdn_flag := null;
35 ben_ext_person.g_elig_dpnt_ovrdn_thru_dt := null;
36 ben_ext_person.g_elig_dpnt_rlshp_type := null;
37 ben_ext_person.g_elig_dpnt_contact_seq_num := null;
38 ben_ext_person.g_elig_dpnt_shared_resd_flag := null;
39 ben_ext_person.g_elig_dpnt_national_ident := null;
40 ben_ext_person.g_elig_dpnt_last_name := null;
41 ben_ext_person.g_elig_dpnt_first_name := null;
42 ben_ext_person.g_elig_dpnt_middle_names := null;
43 ben_ext_person.g_elig_dpnt_full_name := null;
44 ben_ext_person.g_elig_dpnt_suffix := null;
45 ben_ext_person.g_elig_dpnt_title := null;
46 ben_ext_person.g_elig_dpnt_date_of_birth := null;
47 ben_ext_person.g_elig_dpnt_marital_status := null;
48 ben_ext_person.g_elig_dpnt_sex := null;
49 ben_ext_person.g_elig_dpnt_disabled_flag := null;
50 ben_ext_person.g_elig_dpnt_student_status := null;
51 ben_ext_person.g_elig_dpnt_date_of_death := null;
52 ben_ext_person.g_elig_dpnt_language := null;
53 ben_ext_person.g_elig_dpnt_nationality := null;
54 ben_ext_person.g_elig_dpnt_email_address := null;
55 ben_ext_person.g_elig_dpnt_known_as := null;
56 ben_ext_person.g_elig_dpnt_pre_name_adjunct := null;
57 ben_ext_person.g_elig_dpnt_tobacco_usage := null;
58 ben_ext_person.g_elig_dpnt_prev_last_name := null;
59 ben_ext_person.g_elig_dpnt_prim_address1 := null;
60 ben_ext_person.g_elig_dpnt_prim_address2 := null;
61 ben_ext_person.g_elig_dpnt_prim_address3 := null;
62 ben_ext_person.g_elig_dpnt_prim_city := null;
63 ben_ext_person.g_elig_dpnt_prim_state := null;
64 ben_ext_person.g_elig_dpnt_prim_postal_code := null;
65 ben_ext_person.g_elig_dpnt_prim_country := null;
66 ben_ext_person.g_elig_dpnt_prim_effect_date := null;
67 ben_ext_person.g_elig_dpnt_prim_region := null;
68 ben_ext_person.g_elig_dpnt_home_phone := null;
69 ben_ext_person.g_elig_dpnt_work_phone := null;
70 ben_ext_person.g_elig_dpnt_fax := null;
71 ben_ext_person.g_elig_dpnt_mobile := null;
72 ben_ext_person.g_elig_dpnt_id := null;
73 --
74 --
75 hr_utility.set_location('Exiting'||l_proc, 15);
76 --
77 End initialize_globals;
78 --
79 -- ----------------------------------------------------------------------------
80 -- |---------------------< main >---------------------------------------------|
81 -- ----------------------------------------------------------------------------
82 PROCEDURE main
83 ( p_person_id in number,
84 p_elig_per_elctbl_chc_id in number,
85 p_ext_rslt_id in number,
86 p_ext_file_id in number,
87 p_data_typ_cd in varchar2,
88 p_ext_typ_cd in varchar2,
89 p_chg_evt_cd in varchar2,
90 p_business_group_id in number,
91 p_effective_date in date) is
92 --
93 l_proc varchar2(72) := g_package||'main';
94 -- Declare bulk bind variable
95 l_dpel_create_dt_va t_date ;
96 l_dpel_elig_cvrd_dpnt_id_va t_number ;
97 l_dpel_elig_strt_dt_va t_date ;
98 l_dpel_elig_thru_dt_va t_date ;
99 l_dpel_ovrdn_flag_va t_varchar2_30 ;
100 l_dpel_ovrdn_thru_dt_va t_date ;
101 l_dpel_dpnt_person_id_va t_number ;
102 l_dpel_elig_dpnt_id_va t_number ;
103 l_dpel_contact_type_va t_varchar2_30 ;
104 l_dpel_sequence_number_va t_number ;
105 l_dpel_rltd_per_dsgntr_flag_va t_varchar2_30 ;
106 l_dpel_last_name_va t_varchar2_600 ;
107 l_dpel_correspondence_lang_va t_varchar2_600 ;
108 l_dpel_date_of_birth_va t_date ;
109 l_dpel_email_address_va t_varchar2_600 ;
110 l_dpel_first_name_va t_varchar2_600 ;
111 l_dpel_full_name_va t_varchar2_600 ;
112 l_dpel_marital_status_va t_varchar2_30 ;
113 l_dpel_middle_names_va t_varchar2_600 ;
114 l_dpel_nationality_va t_varchar2_600 ;
115 l_dpel_national_identifier_va t_varchar2_30 ;
116 l_dpel_disabled_flag_va t_varchar2_30 ;
117 l_dpel_sex_va t_varchar2_30 ;
118 l_dpel_student_status_va t_varchar2_30 ;
119 l_dpel_suffix_va t_varchar2_30 ;
120 l_dpel_title_va t_varchar2_30 ;
121 l_dpel_date_of_death_va t_date ;
122 l_dpel_known_as_va t_varchar2_600 ;
123 l_dpel_pre_name_adjunct_va t_varchar2_30 ;
124 l_dpel_uses_tobacco_flag_va t_varchar2_30 ;
125 l_dpel_previous_last_name_va t_varchar2_600 ;
126 --
127
128 --
129 cursor c_dpnt (l_elig_per_elctbl_chc_id number) is
130 select
131 a.create_dt
132 , a.elig_cvrd_dpnt_id
133 , a.elig_strt_dt
134 , a.elig_thru_dt
135 , a.ovrdn_flag
136 , a.ovrdn_thru_dt
137 , a.dpnt_person_id
138 , a.elig_dpnt_id
139 , b.contact_type
140 , b.sequence_number
141 , b.rltd_per_rsds_w_dsgntr_flag
142 , c.last_name
143 , c.correspondence_language
144 , c.date_of_birth
145 , c.email_address
146 , c.first_name
147 , c.full_name
148 , c.marital_status
149 , c.middle_names
150 , c.nationality
151 , c.national_identifier
152 , c.registered_disabled_flag
153 , c.sex
154 , c.student_status
155 , c.suffix
156 , c.title
157 , c.date_of_death
158 , c.known_as
159 , c.pre_name_adjunct
160 , c.uses_tobacco_flag
161 , c.previous_last_name
162 from ben_elig_dpnt a,
163 per_contact_relationships b,
164 per_all_people_f c
165 where
166 a.elig_per_elctbl_chc_id = l_elig_per_elctbl_chc_id
167 and a.dpnt_inelig_flag = 'N'
168 and a.dpnt_person_id = b.contact_person_id
169 and b.person_id = p_person_id
170 and c.person_id = a.dpnt_person_id
171 and p_effective_date between c.effective_start_date
172 and c.effective_end_date
173 and p_effective_date between b.date_start
174 and nvl( b.date_end,p_effective_date)
175 ;
176
177 --
178 cursor prim_address_c(p_dpnt_person_id number) is
179 select
180 a.address_line1
181 , a.address_line2
182 , a.address_line3
183 , a.town_or_city
184 , a.region_2
185 , a.postal_code
186 , a.country
187 , a.date_from
188 , a.region_3
189 from per_addresses a
190 where
191 a.person_id = p_dpnt_person_id
192 and p_effective_date between nvl(a.date_from, p_effective_date)
193 and nvl(a.date_to, p_effective_date)
194 and a.primary_flag = 'Y'
195 ;
196 --
197 cursor prim_rltd_address_c(p_dpnt_person_id number) is
198 select
199 a.address_line1
200 , a.address_line2
201 , a.address_line3
202 , a.town_or_city
203 , a.region_2
204 , a.postal_code
205 , a.country
206 , a.date_from
207 , a.region_3
208 from per_addresses a,
209 per_contact_relationships r
210 where
211 r.contact_person_id = p_dpnt_person_id
212 and r.person_id = p_person_id
213 and r.person_id = a.person_id
214 and p_effective_date between nvl(a.date_from, p_effective_date)
215 and nvl(a.date_to, p_effective_date)
216 and a.primary_flag = 'Y'
217 and r.rltd_per_rsds_w_dsgntr_flag = 'Y'
218 ;
219 --
220 cursor ext_phone_c (p_dpnt_person_id number) is
221 select
222 h.phone_number phone_home
223 , w.phone_number phone_work
224 , f.phone_number phone_fax
225 , m.phone_number phone_mobile
226 from per_all_people_f p
227 , per_phones h
228 , per_phones w
229 , per_phones f
230 , per_phones m
231 where p.person_id = p_dpnt_person_id
232 and p_effective_date between nvl(p.effective_start_date, p_effective_date)
233 and nvl(p.effective_end_date, p_effective_date)
234 and h.parent_id (+) = p.person_id
235 and w.parent_id (+) = p.person_id
236 and f.parent_id (+) = p.person_id
237 and m.parent_id (+) = p.person_id
238 and h.parent_table (+) = 'PER_ALL_PEOPLE_F'
239 and w.parent_table (+) = 'PER_ALL_PEOPLE_F'
240 and f.parent_table (+) = 'PER_ALL_PEOPLE_F'
241 and m.parent_table (+) = 'PER_ALL_PEOPLE_F'
242 and h.phone_type (+) = 'H1'
243 and w.phone_type (+) = 'W1'
244 and f.phone_type (+) = 'WF'
245 and m.phone_type (+) = 'M'
246 and p_effective_date between nvl(h.date_from, p_effective_date)
247 and nvl(h.date_to, p_effective_date)
248 and p_effective_date between nvl(w.date_from, p_effective_date)
249 and nvl(w.date_to, p_effective_date)
250 and p_effective_date between nvl(f.date_from, p_effective_date)
251 and nvl(f.date_to, p_effective_date)
252 and p_effective_date between nvl(m.date_from, p_effective_date)
253 and nvl(m.date_to, p_effective_date)
254 ;
255 --
256 BEGIN
257 --
258 hr_utility.set_location('Entering'||l_proc, 5);
259 --
260 --FOR dpnt IN c_dpnt(p_elig_per_elctbl_chc_id) LOOP
261 open c_dpnt(p_elig_per_elctbl_chc_id) ;
262 fetch c_dpnt bulk collect into
263 l_dpel_create_dt_va ,
264 l_dpel_elig_cvrd_dpnt_id_va ,
265 l_dpel_elig_strt_dt_va ,
266 l_dpel_elig_thru_dt_va ,
267 l_dpel_ovrdn_flag_va ,
268 l_dpel_ovrdn_thru_dt_va ,
269 l_dpel_dpnt_person_id_va ,
270 l_dpel_elig_dpnt_id_va ,
271 l_dpel_contact_type_va ,
272 l_dpel_sequence_number_va ,
273 l_dpel_rltd_per_dsgntr_flag_va ,
274 l_dpel_last_name_va ,
275 l_dpel_correspondence_lang_va ,
276 l_dpel_date_of_birth_va ,
277 l_dpel_email_address_va ,
278 l_dpel_first_name_va ,
279 l_dpel_full_name_va ,
280 l_dpel_marital_status_va ,
281 l_dpel_middle_names_va ,
282 l_dpel_nationality_va ,
283 l_dpel_national_identifier_va ,
284 l_dpel_disabled_flag_va ,
285 l_dpel_sex_va ,
286 l_dpel_student_status_va ,
287 l_dpel_suffix_va ,
288 l_dpel_title_va ,
289 l_dpel_date_of_death_va ,
290 l_dpel_known_as_va ,
291 l_dpel_pre_name_adjunct_va ,
292 l_dpel_uses_tobacco_flag_va ,
293 l_dpel_previous_last_name_va ;
294
295 close c_dpnt ;
296 --
297 for i in 1 .. l_dpel_elig_dpnt_id_va.count
298 Loop
299
300 initialize_globals;
301 --
302 -- fetch dependent information into globals
303 --
304 ben_ext_person.g_elig_dpnt_id := l_dpel_elig_dpnt_id_va(i) ;
305 ben_ext_person.g_elig_dpnt_create_dt := l_dpel_create_dt_va(i) ;
306 ben_ext_person.g_elig_dpnt_elig_strt_dt := l_dpel_elig_strt_dt_va(i) ;
307 ben_ext_person.g_elig_dpnt_elig_thru_dt := l_dpel_elig_thru_dt_va(i) ;
308 ben_ext_person.g_elig_dpnt_ovrdn_flag := l_dpel_ovrdn_flag_va(i) ;
309 ben_ext_person.g_elig_dpnt_ovrdn_thru_dt := l_dpel_ovrdn_thru_dt_va(i) ;
310 ben_ext_person.g_elig_dpnt_rlshp_type := l_dpel_contact_type_va(i) ;
311 ben_ext_person.g_elig_dpnt_contact_seq_num := l_dpel_sequence_number_va(i) ;
312 ben_ext_person.g_elig_dpnt_shared_resd_flag := l_dpel_rltd_per_dsgntr_flag_va(i) ;
313 ben_ext_person.g_elig_dpnt_national_ident := l_dpel_national_identifier_va(i) ;
314 ben_ext_person.g_elig_dpnt_last_name := l_dpel_last_name_va(i) ;
315 ben_ext_person.g_elig_dpnt_first_name := l_dpel_first_name_va(i) ;
316 ben_ext_person.g_elig_dpnt_middle_names := l_dpel_middle_names_va(i) ;
317 ben_ext_person.g_elig_dpnt_full_name := l_dpel_full_name_va(i) ;
318 ben_ext_person.g_elig_dpnt_suffix := l_dpel_suffix_va(i) ;
319 ben_ext_person.g_elig_dpnt_title := l_dpel_title_va(i) ;
320 ben_ext_person.g_elig_dpnt_date_of_birth := l_dpel_date_of_birth_va(i) ;
321 ben_ext_person.g_elig_dpnt_marital_status := l_dpel_marital_status_va(i) ;
322 ben_ext_person.g_elig_dpnt_sex := l_dpel_sex_va(i) ;
323 ben_ext_person.g_elig_dpnt_disabled_flag := l_dpel_disabled_flag_va(i) ;
324 ben_ext_person.g_elig_dpnt_student_status := l_dpel_student_status_va(i) ;
325 ben_ext_person.g_elig_dpnt_date_of_death := l_dpel_date_of_death_va(i) ;
326 ben_ext_person.g_elig_dpnt_language := l_dpel_correspondence_lang_va(i) ;
327 ben_ext_person.g_elig_dpnt_nationality := l_dpel_nationality_va(i) ;
328 ben_ext_person.g_elig_dpnt_email_address := l_dpel_email_address_va(i) ;
329 ben_ext_person.g_elig_dpnt_known_as := l_dpel_known_as_va(i) ;
330 ben_ext_person.g_elig_dpnt_pre_name_adjunct := l_dpel_pre_name_adjunct_va(i) ;
331 ben_ext_person.g_elig_dpnt_tobacco_usage := l_dpel_uses_tobacco_flag_va(i) ;
332 ben_ext_person.g_elig_dpnt_prev_last_name := l_dpel_previous_last_name_va(i) ;
333 --
334 -- retrieve dependent address info if required
335 if ben_extract.g_eda_csr = 'Y' then
336 open prim_address_c (l_dpel_dpnt_person_id_va(i));
337 fetch prim_address_c into ben_ext_person.g_elig_dpnt_prim_address1
338 ,ben_ext_person.g_elig_dpnt_prim_address2
339 ,ben_ext_person.g_elig_dpnt_prim_address3
340 ,ben_ext_person.g_elig_dpnt_prim_city
341 ,ben_ext_person.g_elig_dpnt_prim_state
342 ,ben_ext_person.g_elig_dpnt_prim_postal_code
343 ,ben_ext_person.g_elig_dpnt_prim_country
344 ,ben_ext_person.g_elig_dpnt_prim_effect_date
345 ,ben_ext_person.g_elig_dpnt_prim_region;
346 if prim_address_c%notfound then
347 open prim_rltd_address_c(l_dpel_dpnt_person_id_va(i));
348 fetch prim_rltd_address_c into ben_ext_person.g_elig_dpnt_prim_address1
349 , ben_ext_person.g_elig_dpnt_prim_address2
350 , ben_ext_person.g_elig_dpnt_prim_address3
351 , ben_ext_person.g_elig_dpnt_prim_city
352 , ben_ext_person.g_elig_dpnt_prim_state
353 , ben_ext_person.g_elig_dpnt_prim_postal_code
354 , ben_ext_person.g_elig_dpnt_prim_country
355 , ben_ext_person.g_elig_dpnt_prim_effect_date
356 , ben_ext_person.g_elig_dpnt_prim_region;
357 close prim_rltd_address_c;
358 end if;
359 close prim_address_c;
360 end if;
361 --
362 -- retrieve dependent phone numbers if required
363 if ben_extract.g_edp_csr = 'Y' then
364 open ext_phone_c(l_dpel_dpnt_person_id_va(i));
365 fetch ext_phone_c into ben_ext_person.g_elig_dpnt_home_phone
366 ,ben_ext_person.g_elig_dpnt_work_phone
367 ,ben_ext_person.g_elig_dpnt_fax
368 ,ben_ext_person.g_elig_dpnt_mobile;
369 close ext_phone_c;
370 end if;
371 --
372 -- format and write
373 --
374 ben_ext_fmt.process_ext_recs(p_ext_rslt_id => p_ext_rslt_id,
375 p_ext_file_id => p_ext_file_id,
376 p_data_typ_cd => p_data_typ_cd,
377 p_ext_typ_cd => p_ext_typ_cd,
378 p_rcd_typ_cd => 'D',
379 p_low_lvl_cd => 'ED',--eligible dependent
380 p_person_id => p_person_id,
381 p_chg_evt_cd => p_chg_evt_cd,
382 p_business_group_id => p_business_group_id,
383 p_effective_date => p_effective_date
384 );
385 --
386 END LOOP;
387 --
388 hr_utility.set_location('Exiting'||l_proc, 15);
389
390 END; -- main
391 --
392 END; -- package