DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_PL_PERSON_EXTRA_INFO

Source


1 PACKAGE BODY PER_PL_PERSON_EXTRA_INFO AS
2 /* $Header: peplpeip.pkb 120.1 2006/09/13 12:43:30 mseshadr noship $ */
3 
4 
5 
6 PROCEDURE CHK_PERSON_TYPE(P_PERSON_ID        NUMBER,
7                           P_FLEX_START_DATE  VARCHAR2,
8                           P_FLEX_END_DATE    VARCHAR2,
9                           P_INFORMATION_TYPE VARCHAR2) IS
10 
11 
12 cursor csr_chk_contact is
13    select 1 from
14       per_people_f pap,per_person_types ppf,per_person_type_usages_f ptu
15    where pap.person_id = P_PERSON_ID and
16          pap.person_id = ptu.person_id and
17          ppf.person_type_id = ptu.person_type_id and
18          ppf.SEEDED_PERSON_TYPE_KEY = 'CONTACT' and
19          pap.effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE) and
20          pap.effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY')) and
21          ptu.effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE) and
22          ptu.effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'));
23 
24 person_type number;
25 
26 BEGIN
27 
28   open csr_chk_contact;
29     fetch csr_chk_contact into person_type;
30      if csr_chk_contact%NOTFOUND then
31         hr_utility.set_message(800,'HR_CON_INVALID_DETAILS_PL');
32         hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_INFORMATION_TYPE||'_FLEX'));
33         hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
34         hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
35         -- This message will be 'These details can be entered only for a Contact. Person type is not a Contact for the date range'
36         hr_utility.raise_error;
37      end if;
38   close csr_chk_contact;
39 
40 END CHK_PERSON_TYPE;
41 
42 
43 
44 PROCEDURE CREATE_CON_DATE_CHK(P_PERSON_ID        NUMBER,
45                               P_FLEX_START_DATE  VARCHAR2,
46                               P_FLEX_END_DATE    VARCHAR2,
47                               P_INFORMATION_TYPE VARCHAR2) IS
48 
49 cursor csr_overlap_rec is
50   select 1 from per_people_extra_info where
51       person_id = P_PERSON_ID and
52       information_type = P_INFORMATION_TYPE and
53       (fnd_date.canonical_to_date(P_FLEX_START_DATE) between fnd_date.canonical_to_date(PEI_INFORMATION1)
54                                  and  nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) or
55 	        nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))
56                     between fnd_date.canonical_to_date(PEI_INFORMATION1)
57                                  and  nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) or
58                 fnd_date.canonical_to_date(PEI_INFORMATION1) between fnd_date.canonical_to_date(P_FLEX_START_DATE) and
59                                 nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY')) or
60                 nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) between
61                                  fnd_date.canonical_to_date(P_FLEX_START_DATE) and
62                                nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY')));
63 
64 cursor cur_inherit is select per_information2 from per_all_people_f where person_id =P_PERSON_ID
65 and effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE)
66 and effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))
67 and per_information2 ='Y';
68 
69 overlap_found  number;
70 vInherit per_all_people_f.per_information2%type;
71 BEGIN
72 
73    if (fnd_date.canonical_to_date(P_FLEX_START_DATE) >
74            nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))) then
75          hr_utility.set_message(800,'HR_ORG_START_DATE_PL');
76          -- This message will be 'Please enter a Start date >= End date
77          hr_utility.raise_error;
78   end if;
79 
80 open cur_inherit;
81  fetch cur_inherit into vInherit;
82 
83   if cur_inherit%notfound then
84       hr_utility.set_message(800,'HR_CONTACT_INSURED_FLEX_PL');
85       hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_INFORMATION_TYPE||'_FLEX'));
86       hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
87       hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
88       hr_utility.raise_error;
89   end if;
90 
91  close cur_inherit;
92 
93 open csr_overlap_rec;
94   fetch csr_overlap_rec into overlap_found;
95    if csr_overlap_rec%found then
96       hr_utility.set_message(800,'HR_CONTACT_OVERLAP_REC_PL');
97       hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_INFORMATION_TYPE||'_FLEX'));
98       hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
99       hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
100       hr_utility.raise_error;
101    end if;
102 close csr_overlap_rec;
103 
104 
105 END CREATE_CON_DATE_CHK;
106 
107 PROCEDURE UPDATE_CON_DATE_CHK(P_PERSON_EXTRA_INFO_ID     NUMBER
108                              ,P_PEI_INFORMATION_CATEGORY VARCHAR2
109                              ,P_FLEX_START_DATE          VARCHAR2
110                              ,P_FLEX_END_DATE            VARCHAR2) IS
111 
112 
113 -- This cursor checks if the Start/End Dates are not overlapping with other records
114 
115 cursor csr_overlap_upd_rec is
116   select 1 from per_people_extra_info where
117       pei_information_category = P_PEI_INFORMATION_CATEGORY and
118       (fnd_date.canonical_to_date(P_FLEX_START_DATE) between fnd_date.canonical_to_date(PEI_INFORMATION1)
119                                  and  nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) or
120 	        nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))
121                     between fnd_date.canonical_to_date(PEI_INFORMATION1)
122                                  and  nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) or
123                 fnd_date.canonical_to_date(PEI_INFORMATION1) between fnd_date.canonical_to_date(P_FLEX_START_DATE) and
124                                 nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY')) or
125                 nvl(fnd_date.canonical_to_date(PEI_INFORMATION2),to_date('31/12/4712','DD/MM/YYYY')) between
126                                  fnd_date.canonical_to_date(P_FLEX_START_DATE) and
127                                nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))) and
128                person_id in (select person_id from per_people_extra_info where person_extra_info_id = P_PERSON_EXTRA_INFO_ID) and
129                person_extra_info_id <> P_PERSON_EXTRA_INFO_ID;
130 
131 
132 
133 -- This cursor checks if the Updated Dates are within the Start/End Dates of the 'Contact'
134 
135 cursor csr_chk_contact_date is
136    select 1 from
137       per_people_f pap,per_person_types ppf,per_person_type_usages_f ptu
138    where pap.person_id in (select person_id from per_people_extra_info where person_extra_info_id = P_PERSON_EXTRA_INFO_ID) and
139          pap.person_id = ptu.person_id and
140          ppf.person_type_id = ptu.person_type_id and
141          ppf.SEEDED_PERSON_TYPE_KEY = 'CONTACT' and
142          pap.effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE) and
143          pap.effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY')) and
144          ptu.effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE) and
145          ptu.effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'));
146 
147 cursor cur_inherit is select per_information2 from per_all_people_f where
148  person_id in (select person_id from per_people_extra_info where person_extra_info_id = P_PERSON_EXTRA_INFO_ID)
149 and effective_start_date <= fnd_date.canonical_to_date(P_FLEX_START_DATE)
150 and effective_end_date >= nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))
151 and per_information2 ='Y';
152 
153 vInherit per_all_people_f.per_information2%type;
154 
155 overlap_upd_found   number;
156 valid_contact_dates number;
157 
158 
159 BEGIN
160 
161    if (fnd_date.canonical_to_date(P_FLEX_START_DATE) >
162            nvl(fnd_date.canonical_to_date(P_FLEX_END_DATE),to_date('31/12/4712','DD/MM/YYYY'))) then
163          hr_utility.set_message(800,'HR_ORG_START_DATE_PL');
164          -- This message will be 'Please enter a Start date >= End date
165          hr_utility.raise_error;
166   end if;
167 
168   open cur_inherit;
169  fetch cur_inherit into vInherit;
170 
171   if cur_inherit%notfound then
172       hr_utility.set_message(800,'HR_CONTACT_INSURED_FLEX_PL');
173       hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_PEI_INFORMATION_CATEGORY||'_FLEX'));
174       hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
175       hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
176       hr_utility.raise_error;
177   end if;
178 
179  close cur_inherit;
180 
181 open csr_chk_contact_date;
182   fetch csr_chk_contact_date into valid_contact_dates;
183    if csr_chk_contact_date%NOTFOUND then
184         hr_utility.set_message(800,'HR_CON_INVALID_DETAILS_PL');
185         hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_PEI_INFORMATION_CATEGORY||'_FLEX'));
186         hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
187         hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
188         -- This message will be 'These details can be entered only for a Contact. Person type is not a Contact for the date range'
189         hr_utility.raise_error;
190      end if;
191 close csr_chk_contact_date;
192 
193 
194 open csr_overlap_upd_rec;
195   fetch csr_overlap_upd_rec into overlap_upd_found;
196    if csr_overlap_upd_rec%found then
197       hr_utility.set_message(800,'HR_CONTACT_OVERLAP_REC_PL');
198       hr_utility.set_message_token('CONTACTFLEX',hr_general.decode_lookup('PL_FORM_LABELS',P_PEI_INFORMATION_CATEGORY||'_FLEX'));
199       hr_utility.set_message_token('STARTDATE',to_char(fnd_date.canonical_to_date(P_FLEX_START_DATE),'DD/MM/RRRR'));
200       hr_utility.set_message_token('ENDDATE',nvl(to_char(fnd_date.canonical_to_date(P_FLEX_END_DATE),'DD/MM/RRRR'),'31/12/4712'));
201       hr_utility.raise_error;
202    end if;
203 close csr_overlap_upd_rec;
204 
205 
206 
207 END UPDATE_CON_DATE_CHK;
208 
209 
210 PROCEDURE CREATE_PL_PERSON_EXTRA_INFO
211     (P_PERSON_ID                in NUMBER
212     ,P_INFORMATION_TYPE         in VARCHAR2
213     ,P_PEI_INFORMATION_CATEGORY in VARCHAR2
214     ,P_PEI_INFORMATION1         in VARCHAR2
215     ,P_PEI_INFORMATION2         in VARCHAR2
216     ,P_PEI_INFORMATION3         in VARCHAR2
217     ,P_PEI_INFORMATION4         in VARCHAR2
218     ,P_PEI_INFORMATION5         in VARCHAR2
219     ,P_PEI_INFORMATION6         in VARCHAR2
220     ,P_PEI_INFORMATION7         in VARCHAR2
221     ,P_PEI_INFORMATION8         in VARCHAR2
222     ,P_PEI_INFORMATION9         in VARCHAR2
223     ,P_PEI_INFORMATION10        in VARCHAR2
224     ,P_PEI_INFORMATION11        in VARCHAR2
225     ,P_PEI_INFORMATION12        in VARCHAR2
226     ,P_PEI_INFORMATION13        in VARCHAR2
227     ,P_PEI_INFORMATION14        in VARCHAR2
228     ,P_PEI_INFORMATION15        in VARCHAR2
229     ,P_PEI_INFORMATION16        in VARCHAR2
230     ,P_PEI_INFORMATION17        in VARCHAR2
231     ,P_PEI_INFORMATION18        in VARCHAR2
232     ,P_PEI_INFORMATION19        in VARCHAR2
233     ,P_PEI_INFORMATION20        in VARCHAR2
234     ,P_PEI_INFORMATION21        in VARCHAR2
235     ,P_PEI_INFORMATION22        in VARCHAR2
236     ,P_PEI_INFORMATION23        in VARCHAR2
237     ,P_PEI_INFORMATION24        in VARCHAR2
238     ,P_PEI_INFORMATION25        in VARCHAR2
239     ,P_PEI_INFORMATION26        in VARCHAR2
240     ,P_PEI_INFORMATION27        in VARCHAR2
241     ,P_PEI_INFORMATION28        in VARCHAR2
242     ,P_PEI_INFORMATION29        in VARCHAR2
243     ,P_PEI_INFORMATION30        in VARCHAR2) IS
244 
245 BEGIN
246     /* Added for GSI Bug 5472781 */
247 IF NOT hr_utility.chk_product_install('Oracle Human Resources', 'PL') THEN
248    hr_utility.trace('PL not installed.Leaving CREATE_PL_PERSON_EXTRA_INFO');
249    return;
250 END IF;
251 
252  if P_INFORMATION_TYPE = 'PL_CON_HEALTH_INS' then
253 
254         CHK_PERSON_TYPE(P_PERSON_ID,
255                         P_PEI_INFORMATION1,
256                         P_PEI_INFORMATION2,
257                         P_INFORMATION_TYPE);
258 
259         CREATE_CON_DATE_CHK(P_PERSON_ID,
260                             P_PEI_INFORMATION1,
261                             P_PEI_INFORMATION2,
262                             P_INFORMATION_TYPE);
263 
264  elsif P_INFORMATION_TYPE = 'PL_CON_HOUSEKEEPING' then
265 
266         CHK_PERSON_TYPE(P_PERSON_ID,
267                         P_PEI_INFORMATION1,
268                         P_PEI_INFORMATION2,
269                         P_INFORMATION_TYPE);
270 
271         CREATE_CON_DATE_CHK(P_PERSON_ID,
272                             P_PEI_INFORMATION1,
273                             P_PEI_INFORMATION2,
274                             P_INFORMATION_TYPE);
275 
276 
277 
278  end if;
279 
280 
281 END CREATE_PL_PERSON_EXTRA_INFO;
282 
283 
284 PROCEDURE UPDATE_PL_PERSON_EXTRA_INFO
285    (P_PERSON_EXTRA_INFO_ID     in NUMBER
286    ,P_PEI_INFORMATION_CATEGORY in VARCHAR2
287    ,P_PEI_INFORMATION1         in VARCHAR2
288    ,P_PEI_INFORMATION2         in VARCHAR2
289    ,P_PEI_INFORMATION3         in VARCHAR2
290    ,P_PEI_INFORMATION4         in VARCHAR2
291    ,P_PEI_INFORMATION5         in VARCHAR2
292    ,P_PEI_INFORMATION6         in VARCHAR2
293    ,P_PEI_INFORMATION7         in VARCHAR2
294    ,P_PEI_INFORMATION8         in VARCHAR2
295    ,P_PEI_INFORMATION9         in VARCHAR2
296    ,P_PEI_INFORMATION10        in VARCHAR2
297    ,P_PEI_INFORMATION11        in VARCHAR2
298    ,P_PEI_INFORMATION12        in VARCHAR2
299    ,P_PEI_INFORMATION13        in VARCHAR2
300    ,P_PEI_INFORMATION14        in VARCHAR2
301    ,P_PEI_INFORMATION15        in VARCHAR2
302    ,P_PEI_INFORMATION16        in VARCHAR2
303    ,P_PEI_INFORMATION17        in VARCHAR2
304    ,P_PEI_INFORMATION18        in VARCHAR2
305    ,P_PEI_INFORMATION19        in VARCHAR2
306    ,P_PEI_INFORMATION20        in VARCHAR2
307    ,P_PEI_INFORMATION21        in VARCHAR2
308    ,P_PEI_INFORMATION22        in VARCHAR2
309    ,P_PEI_INFORMATION23        in VARCHAR2
310    ,P_PEI_INFORMATION24        in VARCHAR2
311    ,P_PEI_INFORMATION25        in VARCHAR2
312    ,P_PEI_INFORMATION26        in VARCHAR2
313    ,P_PEI_INFORMATION27        in VARCHAR2
314    ,P_PEI_INFORMATION28        in VARCHAR2
315    ,P_PEI_INFORMATION29        in VARCHAR2
316    ,P_PEI_INFORMATION30        in VARCHAR2) IS
317 
318 BEGIN
319   /* Added for GSI Bug 5472781 */
320 IF NOT hr_utility.chk_product_install('Oracle Human Resources', 'PL') THEN
321    hr_utility.trace('PL not installed.Leaving UPDATE_PL_PERSON_EXTRA_INFO');
322    return;
323 END IF;
324 
325  if P_PEI_INFORMATION_CATEGORY = 'PL_CON_HEALTH_INS' then
326 
327      UPDATE_CON_DATE_CHK(P_PERSON_EXTRA_INFO_ID
328                         ,P_PEI_INFORMATION_CATEGORY
329                         ,P_PEI_INFORMATION1
330                         ,P_PEI_INFORMATION2);
331 
332 
333  elsif P_PEI_INFORMATION_CATEGORY = 'PL_CON_HOUSEKEEPING' then
334 
335      UPDATE_CON_DATE_CHK(P_PERSON_EXTRA_INFO_ID
336                         ,P_PEI_INFORMATION_CATEGORY
337                         ,P_PEI_INFORMATION1
338                         ,P_PEI_INFORMATION2);
339 
340  end if;
341 
342 END UPDATE_PL_PERSON_EXTRA_INFO;
343 
344   --
345 END PER_PL_PERSON_EXTRA_INFO;