DBA Data[Home] [Help]

PACKAGE BODY: APPS.BEN_DM_DELETE

Source


1 PACKAGE BODY ben_dm_delete AS
2 /* $Header: benfdmpmdel.pkb 120.1 2006/06/13 15:23:29 nkkrishn noship $ */
3 
4 procedure main(
5  errbuf                 out nocopy  varchar2,
6  retcode                out nocopy  number ,
7  p_migration_id         in   number ,
8  p_concurrent_process   in   varchar2 default 'Y',
9  p_last_migration_date  in   varchar2,
10  p_process_number       in   number ,
11  p_dir_name             in   varchar2,
12  p_file_name            in   varchar2,
13  p_delimiter            in   varchar2,
14  p_business_group_id    in   number default null) is
15 
16 l_no_of_threads           number;
17 l_person_id               number;
18 
19 cursor c1 is
20 select distinct per.person_id, dif.group_order
21   from ben_dm_phase_items itm,
22        ben_dm_phases  phs,
23        ben_dm_input_file dif,
24        per_all_people_f per,
25        per_business_groups bg
26  where phs.migration_id = p_migration_id
27    and phs.phase_id     = itm.phase_id
28    and phs.phase_name   = 'UP' --use UP phase for now
29    and mod(itm.phase_item_id,l_no_of_threads) + 1 = p_process_number
30 --added check for person records only
31    and dif.person_type = 'P'
32    and dif.group_order = itm.group_order
33    and per.national_identifier = nvl(dif.target_national_identifier,dif.source_national_identifier)
34    and bg.name = dif.target_business_group_name
35    and per.business_group_id = bg.business_group_id;
36 
37 --New Cursor to identify dependent records to be deleted for each person
38 --being migrated
39 cursor c2(p_group_order varchar2
40          ,p_person_id    number) is
41 select distinct per.person_id
42   from ben_dm_phase_items itm,
43        ben_dm_phases  phs,
44        ben_dm_input_file dif,
45        per_all_people_f per,
46        per_business_groups bg,
47        per_contact_relationships pcr
48  where phs.migration_id = p_migration_id
49    and phs.phase_id     = itm.phase_id
50    and phs.phase_name   = 'UP' --use UP phase for now
51    and mod(itm.phase_item_id,l_no_of_threads) + 1 = p_process_number
52    and dif.person_type = 'D'
53    and dif.group_order = p_group_order
54    and dif.group_order = itm.group_order
55    and per.national_identifier = nvl(dif.target_national_identifier,dif.source_national_identifier)
56    and per.person_id = pcr.contact_person_id
57    and pcr.person_id = p_person_id
58    and bg.name = dif.target_business_group_name
59    and per.business_group_id = bg.business_group_id;
60 
61 Type personRec is Record
62 (person_id           number,
63  group_order         number);
64 Type personTab is Table of personRec index by binary_integer;
65 
66 l_person_rec      personTab;
67 
68 begin
69 
70  l_no_of_threads := ben_dm_utility.number_of_threads(p_business_group_id);
71  if l_no_of_threads is null then
72     l_no_of_threads := 3 ;
73  end  if ;
74  open c1;
75  fetch c1 bulk collect into l_person_rec;
76  close c1;
77  if l_person_rec.count > 0 then
78  --Delete the person and dependent records from the target business group
79  for i in 1..l_person_rec.count
80    loop
81      --Delete all dependents of the person
82      open c2(l_person_rec(i).group_order, l_person_rec(i).person_id);
83      loop
84        fetch c2 into l_person_id;
85        if c2%notfound then
86           exit;
87        end if;
88        delete_person(l_person_id);
89        commit;
90      end loop;
91      --Delete the person record
92      delete_person(p_person_id   =>  l_person_rec(i).person_id);
93      close c2;
94    end loop;
95  commit;
96  end if;
97 end main;
98 
99 procedure delete_person(p_person_id number) is
100 begin
101 
102 hr_general.g_data_migrator_mode := 'Y';
103 
104 delete from ben_le_clsn_n_rstr
105 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
106 where person_id =p_person_id);
107 
108 delete from ben_per_bnfts_bal_f where person_id = p_person_id;
109 
110 delete from ben_cbr_per_in_ler cpl where cpl.cbr_quald_bnf_id in
111 (select cbf.cbr_quald_bnf_id from ben_cbr_quald_bnf cbf where cbf.quald_bnf_person_id = p_person_id);
112 
113 delete from ben_cbr_quald_bnf where quald_bnf_person_id = p_person_id;
114 
115 delete from ben_prmry_care_prvdr_f pcp
116 where pcp.prtt_enrt_rslt_id in
117 (select pen.prtt_enrt_rslt_id
118    from ben_prtt_enrt_rslt_f pen
119   where pen.person_id = p_person_id);
120 
121 delete from ben_prmry_care_prvdr_f pcp
122 where pcp.elig_cvrd_dpnt_id in
123 (select egd.elig_cvrd_dpnt_id
124    from ben_elig_cvrd_dpnt_f egd,
125         ben_prtt_enrt_rslt_f pen
126   where pen.person_id = p_person_id
127     and egd.prtt_enrt_rslt_id = pen.prtt_enrt_rslt_id);
128 
129 delete from ben_enrt_rt
130 where elig_per_elctbl_chc_id in
131 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
132 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
133 where person_id =p_person_id));
134 
135 delete from ben_enrt_prem
136 where elig_per_elctbl_chc_id in
137 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
138 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
139 where person_id =p_person_id));
140 
141 delete from ben_enrt_rt
142 where enrt_bnft_id in
143 (select enrt_bnft_id from ben_enrt_bnft
144 where elig_per_elctbl_chc_id in
145 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
146 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
147 where person_id =p_person_id)));
148 
149 delete from BEN_ELCTBL_CHC_CTFN
150 where elig_per_elctbl_chc_id in
151 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
152 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
153 where person_id =p_person_id));
154 
155 delete from BEN_ELCTBL_CHC_CTFN
156 where enrt_bnft_id in
157 (select enrt_bnft_id from ben_enrt_bnft
158 where elig_per_elctbl_chc_id in
159 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
160 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
161 where person_id =p_person_id)));
162 
163 delete from ben_enrt_bnft
164 where elig_per_elctbl_chc_id in
165 (select elig_per_elctbl_chc_id from ben_elig_per_elctbl_chc
166 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
167 where person_id =p_person_id));
168 
169 delete from ben_elig_per_elctbl_chc
170 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
171 where person_id =p_person_id);
172 
173 delete from ben_pil_elctbl_chc_popl
174 where per_in_ler_id in (select per_in_ler_id from ben_per_in_ler
175 where person_id =p_person_id);
176 
177 delete from PAY_ELEMENT_ENTRY_VALUES_F
178 where element_entry_id
179 in (select element_entry_id
180 from pay_element_entries_f
181 where assignment_id in
182 (select assignment_id
183 from per_all_assignments_f
184 where person_id =p_person_id));
185 
186 delete from PAY_ELEMENT_ENTRIES_F
187 where assignment_id in
188 (select assignment_id
189 from per_all_assignments_f
190 where person_id =p_person_id);
191 
192 delete from ben_prtt_prem_f
193 where prtt_enrt_rslt_id in
194 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
195 delete from ben_prtt_rt_val where prtt_enrt_rslt_id in
196 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
197 
198 delete from ben_bnft_prvdd_ldgr_f where prtt_enrt_rslt_id in
199 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
200 
201 delete from ben_prtt_enrt_actn_f where prtt_enrt_rslt_id in
202 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
203 
204 delete from ben_prtt_enrt_actn_f where elig_cvrd_dpnt_id in
205 (select elig_cvrd_dpnt_id from ben_elig_cvrd_dpnt_f where prtt_enrt_rslt_id in
206 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id));
207 
208 delete from ben_prtt_enrt_actn_f where pl_bnf_id in
209 (select pl_bnf_id from ben_pl_bnf_f where prtt_enrt_rslt_id in
210 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id));
211 
212 delete from ben_prtt_enrt_ctfn_prvdd_f where prtt_enrt_rslt_id in
213 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
214 
215 delete from ben_cvrd_dpnt_ctfn_prvdd_f where elig_cvrd_dpnt_id in
216 (select elig_cvrd_dpnt_id from ben_elig_cvrd_dpnt_f where prtt_enrt_rslt_id in
217 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id));
218 
219 delete from ben_elig_cvrd_dpnt_f where prtt_enrt_rslt_id in
220 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
221 
222 delete from ben_elig_dpnt where per_in_ler_id in
223 (select per_in_ler_id from ben_per_in_ler where person_id =p_person_id);
224 
225 delete from ben_pl_bnf_ctfn_prvdd_f where pl_bnf_id in
226 (select pl_bnf_id from ben_pl_bnf_f where prtt_enrt_rslt_id in
227 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id));
228 
229 delete from ben_pl_bnf_f where prtt_enrt_rslt_id in
230 (select prtt_enrt_rslt_id from ben_prtt_enrt_rslt_f where person_id =p_person_id);
231 
232 delete from ben_prtt_enrt_rslt_f where person_id =p_person_id;
233 
234 delete from ben_per_cm_prvdd_f where per_cm_id in
235 (select per_cm_id from ben_per_cm_f where person_id =p_person_id);
236 
237 delete from ben_per_cm_trgr_f where per_cm_id in
238 (select per_cm_id from ben_per_cm_f where person_id =p_person_id);
239 
240 delete from ben_per_cm_usg_f where per_cm_id in
241 (select per_cm_id from ben_per_cm_f where person_id =p_person_id);
242 
243 delete from ben_per_cm_f where person_id =p_person_id;
244 
245 delete from ben_per_in_ler where person_id =p_person_id;
246 
247 delete from ben_ptnl_ler_for_per where person_id =p_person_id;
248 
249 delete from ben_elig_per_opt_f where elig_per_id in
250 (select elig_per_id from ben_elig_per_f where person_id =p_person_id);
251 
252 delete from ben_elig_per_f where person_id =p_person_id;
253 
254 -- delete from extrat
255 delete from ben_ext_rslt_dtl      where person_id=p_person_id;
256 delete from ben_ext_rslt_err      where person_id=p_person_id;
257 delete from ben_ext_chg_evt_log   where person_id=p_person_id;
258 --
259 
260 delete from per_addresses where person_id=p_person_id;
261 delete from per_assignment_extra_info  where assignment_id in
262 (select assignment_id from per_all_assignments_f where person_id=p_person_id);
263 
264 
265 delete from per_all_assignments_f where person_id=p_person_id;
266 delete from per_person_type_usages_f where person_id=p_person_id;
267 delete from per_periods_of_service where person_id=p_person_id;
268 delete from per_contact_relationships where person_id=p_person_id;
269 delete from per_absence_attendances where person_id=p_person_id;
270 delete from per_all_people_f where person_id=p_person_id;
271 
272 hr_general.g_data_migrator_mode := 'N';
273 
274 exception
275   when others then
276        rollback;
277        raise;
278 end delete_person;
279 
280 end ben_dm_delete;