[Home] [Help]
PACKAGE BODY: APPS.PER_PEM_BUS
Source
1 Package Body per_pem_bus as
2 /* $Header: pepemrhi.pkb 120.1.12010000.2 2008/08/06 09:21:48 ubhat ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_pem_bus.'; -- Global package name
9 --
10 -- The following two global variables are only to be
11 -- used by the return_legislation_code function.
12 --
13 g_legislation_code varchar2(150) default null;
14 g_previous_employer_id number default null;
15 --
16 -- -----------------------------------------------------------------------
17 -- |---------------------------< get_period_values >---------------------|
18 -- -----------------------------------------------------------------------
19 procedure get_period_values
20 (p_start_date in per_previous_employers.start_date%type
21 ,p_end_date in per_previous_employers.end_date%type
22 ,p_period_years out nocopy per_previous_employers.period_years%type
23 ,p_period_months out nocopy per_previous_employers.period_months%type
24 ,p_period_days out nocopy per_previous_employers.period_days%type
25 ) is
26 l_proc varchar2(72) := g_package||'get_period_values';
27 l_period_years number; -- Don't change the datatype
28 l_start_date per_previous_employers.start_date%type;
29 l_end_date per_previous_employers.end_date%type;
30 begin
31 hr_utility.set_location('Entering:'||l_proc, 5);
32 --
33 -- Truncate all date datatypes
34 l_start_date := trunc(p_start_date);
35 l_end_date := trunc(p_end_date+1);
36 --
37 if l_start_date is not null and l_end_date is not null then
38 hr_utility.set_location(l_proc, 10);
39 l_period_years := trunc(trunc(months_between(l_end_date,l_start_date))/12);
40 if l_period_years between 0 and 99 then
41 hr_utility.set_location(l_proc, 15);
42 p_period_years := trunc(trunc(months_between(l_end_date
43 ,l_start_date))/12);
44 hr_utility.set_location(l_proc, 20);
45 p_period_months:= mod(trunc(months_between(l_end_date
46 ,l_start_date)),12);
47 hr_utility.set_location(l_proc, 25);
48 --
49 -- 3635308: Added the if - else condition.
50 --
51 -- 3635308 start here
52 if (add_months(l_start_date,trunc(months_between(l_end_date,l_start_date)))
53 <= l_end_date) then
54 p_period_days := trunc(l_end_date
55 - add_months(l_start_date
56 ,trunc(months_between(l_end_date
57 ,l_start_date))));
58 hr_utility.set_location(l_proc, 26);
59 else
60 p_period_days := trunc(l_end_date
61 - add_months(l_start_date
62 ,trunc(months_between(l_end_date
63 ,l_start_date)-1)));
64 p_period_months := p_period_months - 1;
65
66 hr_utility.set_location(l_proc, 28);
67 end if;
68 --
69 -- 3635308 end here
70 --
71 hr_utility.set_location(l_proc, 30);
72 else
73 /*Error message changed for the bug 5686794*/
74 hr_utility.set_location(l_proc, 35);
75 fnd_message.set_name('PER','HR_289530_PEM_STRT_END_DATES');
76 fnd_message.set_token('START_DATE',TO_CHAR(p_start_date,'DD-MON-YYYY'),true);
77 fnd_message.set_token('END_DATE',TO_CHAR(p_end_date,'DD-MON-YYYY'),true);
78 fnd_message.raise_error;
79
80 /*hr_utility.set_location(l_proc, 35);
81 fnd_message.set_name('PER','HR_289552_NOVALD_DATES_DIFF');
82 fnd_message.raise_error;*/-- Error msg changed & Commented for bug 5686794
83
84 end if;
85 end if;
86 --
87 hr_utility.set_location('Leaving:'||l_proc, 40);
88 end get_period_values;
89 --
90 -- ---------------------------------------------------------------------------
91 -- |----------------------< set_security_group_id >--------------------------|
92 -- ---------------------------------------------------------------------------
93 --
94 Procedure set_security_group_id
95 (p_previous_employer_id in number
96 ,p_associated_column1 in varchar2 default null
97 ) is
98 --
99 -- Declare cursor
100 --
101 cursor csr_sec_grp is
102 select pbg.security_group_id
103 from per_business_groups pbg
104 , per_previous_employers pem
105 where pem.previous_employer_id = p_previous_employer_id
106 and pbg.business_group_id = pem.business_group_id;
107 --
108 -- Declare local variables
109 --
110 l_security_group_id number;
111 l_proc varchar2(72) := g_package||'set_security_group_id';
112 --
113 begin
114 --
115 hr_utility.set_location('Entering:'|| l_proc, 10);
116 --
117 -- Ensure that all the mandatory parameter are not null
118 --
119 hr_api.mandatory_arg_error
120 (p_api_name => l_proc
121 ,p_argument => 'previous_employer_id'
122 ,p_argument_value => p_previous_employer_id
123 );
124 --
125 open csr_sec_grp;
126 fetch csr_sec_grp into l_security_group_id;
127 --
128 if csr_sec_grp%notfound then
129 --
130 close csr_sec_grp;
131 --
132 -- The primary key is invalid therefore we must error
133 --
134 fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
135 hr_multi_message.add
136 (p_associated_column1 => nvl(p_associated_column1,'PREVIOUS_EMPLOYER_ID')
137 );
138 else
139 close csr_sec_grp;
140 --
141 -- Set the security_group_id in CLIENT_INFO
142 --
143 hr_api.set_security_group_id
144 (p_security_group_id => l_security_group_id
145 );
146 end if;
147 --
148 hr_utility.set_location(' Leaving:'|| l_proc, 20);
149 --
150 end set_security_group_id;
151 --
152 -- ---------------------------------------------------------------------------
153 -- |---------------------< return_legislation_code >-------------------------|
154 -- ---------------------------------------------------------------------------
155 --
156 Function return_legislation_code
157 (p_previous_employer_id in number
158 )
159 Return Varchar2 Is
160 --
161 -- Declare cursor
162 --
163 cursor csr_leg_code is
164 select pbg.legislation_code
165 from per_business_groups pbg
166 , per_previous_employers pem
167 where pem.previous_employer_id = p_previous_employer_id
168 and pbg.business_group_id (+) = pem.business_group_id;
169 --
170 -- Declare local variables
171 --
172 l_legislation_code varchar2(150);
173 l_proc varchar2(72) := g_package||'return_legislation_code';
174 --
175 Begin
176 --
177 hr_utility.set_location('Entering:'|| l_proc, 10);
178 --
179 -- Ensure that all the mandatory parameter are not null
180 --
181 hr_api.mandatory_arg_error
182 (p_api_name => l_proc
183 ,p_argument => 'previous_employer_id'
184 ,p_argument_value => p_previous_employer_id
185 );
186 --
187 if ( nvl(per_pem_bus.g_previous_employer_id, hr_api.g_number)
188 = p_previous_employer_id) then
189 --
190 -- The legislation code has already been found with a previous
191 -- call to this function. Just return the value in the global
192 -- variable.
193 --
194 l_legislation_code := per_pem_bus.g_legislation_code;
195 hr_utility.set_location(l_proc, 20);
196 else
197 --
198 -- The ID is different to the last call to this function
199 -- or this is the first call to this function.
200 --
201 open csr_leg_code;
202 fetch csr_leg_code into l_legislation_code;
203 --
204 if csr_leg_code%notfound then
205 --
206 -- The primary key is invalid therefore we must error
207 --
208 close csr_leg_code;
209 fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
210 fnd_message.raise_error;
211 end if;
212 hr_utility.set_location(l_proc,30);
213 --
214 -- Set the global variables so the values are
215 -- available for the next call to this function.
216 --
217 close csr_leg_code;
218 per_pem_bus.g_previous_employer_id := p_previous_employer_id;
219 per_pem_bus.g_legislation_code := l_legislation_code;
220 end if;
221 hr_utility.set_location(' Leaving:'|| l_proc, 40);
222 return l_legislation_code;
223 end return_legislation_code;
224 --
225 -- ----------------------------------------------------------------------------
226 -- |-----------------------------< chk_ddf >----------------------------------|
227 -- ----------------------------------------------------------------------------
228 --
229 -- Description:
230 -- Validates all the Developer Descriptive Flexfield values.
231 --
232 -- Prerequisites:
233 -- All other columns have been validated. Must be called as the
234 -- last step from insert_validate and update_validate.
235 --
236 -- In Arguments:
237 -- p_rec
238 --
239 -- Post Success:
240 -- If the Developer Descriptive Flexfield structure column and data values
241 -- are all valid this procedure will end normally and processing will
242 -- continue.
243 --
244 -- Post Failure:
245 -- If the Developer Descriptive Flexfield structure column value or any of
246 -- the data values are invalid then an application error is raised as
247 -- a PL/SQL exception.
248 --
249 -- Access Status:
250 -- Internal Row Handler Use Only.
251 --
252 -- ----------------------------------------------------------------------------
253 procedure chk_ddf
254 (p_rec in per_pem_shd.g_rec_type
255 ) is
256 --
257 l_proc varchar2(72) := g_package || 'chk_ddf';
258 --
259 begin
260 hr_utility.set_location('Entering:'||l_proc,10);
261 --
262 if ((p_rec.previous_employer_id is not null) and (
263 nvl(per_pem_shd.g_old_rec.pem_information_category, hr_api.g_varchar2) <>
264 nvl(p_rec.pem_information_category, hr_api.g_varchar2) or
265 nvl(per_pem_shd.g_old_rec.pem_information1, hr_api.g_varchar2) <>
266 nvl(p_rec.pem_information1, hr_api.g_varchar2) or
267 nvl(per_pem_shd.g_old_rec.pem_information2, hr_api.g_varchar2) <>
268 nvl(p_rec.pem_information2, hr_api.g_varchar2) or
269 nvl(per_pem_shd.g_old_rec.pem_information3, hr_api.g_varchar2) <>
270 nvl(p_rec.pem_information3, hr_api.g_varchar2) or
271 nvl(per_pem_shd.g_old_rec.pem_information4, hr_api.g_varchar2) <>
272 nvl(p_rec.pem_information4, hr_api.g_varchar2) or
273 nvl(per_pem_shd.g_old_rec.pem_information5, hr_api.g_varchar2) <>
274 nvl(p_rec.pem_information5, hr_api.g_varchar2) or
275 nvl(per_pem_shd.g_old_rec.pem_information6, hr_api.g_varchar2) <>
276 nvl(p_rec.pem_information6, hr_api.g_varchar2) or
277 nvl(per_pem_shd.g_old_rec.pem_information7, hr_api.g_varchar2) <>
278 nvl(p_rec.pem_information7, hr_api.g_varchar2) or
279 nvl(per_pem_shd.g_old_rec.pem_information8, hr_api.g_varchar2) <>
280 nvl(p_rec.pem_information8, hr_api.g_varchar2) or
281 nvl(per_pem_shd.g_old_rec.pem_information9, hr_api.g_varchar2) <>
282 nvl(p_rec.pem_information9, hr_api.g_varchar2) or
283 nvl(per_pem_shd.g_old_rec.pem_information10, hr_api.g_varchar2) <>
284 nvl(p_rec.pem_information10, hr_api.g_varchar2) or
285 nvl(per_pem_shd.g_old_rec.pem_information11, hr_api.g_varchar2) <>
286 nvl(p_rec.pem_information11, hr_api.g_varchar2) or
287 nvl(per_pem_shd.g_old_rec.pem_information12, hr_api.g_varchar2) <>
288 nvl(p_rec.pem_information12, hr_api.g_varchar2) or
289 nvl(per_pem_shd.g_old_rec.pem_information13, hr_api.g_varchar2) <>
290 nvl(p_rec.pem_information13, hr_api.g_varchar2) or
291 nvl(per_pem_shd.g_old_rec.pem_information14, hr_api.g_varchar2) <>
292 nvl(p_rec.pem_information14, hr_api.g_varchar2) or
293 nvl(per_pem_shd.g_old_rec.pem_information15, hr_api.g_varchar2) <>
294 nvl(p_rec.pem_information15, hr_api.g_varchar2) or
295 nvl(per_pem_shd.g_old_rec.pem_information16, hr_api.g_varchar2) <>
296 nvl(p_rec.pem_information16, hr_api.g_varchar2) or
297 nvl(per_pem_shd.g_old_rec.pem_information17, hr_api.g_varchar2) <>
298 nvl(p_rec.pem_information17, hr_api.g_varchar2) or
299 nvl(per_pem_shd.g_old_rec.pem_information18, hr_api.g_varchar2) <>
300 nvl(p_rec.pem_information18, hr_api.g_varchar2) or
301 nvl(per_pem_shd.g_old_rec.pem_information19, hr_api.g_varchar2) <>
302 nvl(p_rec.pem_information19, hr_api.g_varchar2) or
303 nvl(per_pem_shd.g_old_rec.pem_information20, hr_api.g_varchar2) <>
304 nvl(p_rec.pem_information20, hr_api.g_varchar2) or
305 nvl(per_pem_shd.g_old_rec.pem_information21, hr_api.g_varchar2) <>
306 nvl(p_rec.pem_information21, hr_api.g_varchar2) or
307 nvl(per_pem_shd.g_old_rec.pem_information22, hr_api.g_varchar2) <>
308 nvl(p_rec.pem_information22, hr_api.g_varchar2) or
309 nvl(per_pem_shd.g_old_rec.pem_information23, hr_api.g_varchar2) <>
310 nvl(p_rec.pem_information23, hr_api.g_varchar2) or
311 nvl(per_pem_shd.g_old_rec.pem_information24, hr_api.g_varchar2) <>
312 nvl(p_rec.pem_information24, hr_api.g_varchar2) or
313 nvl(per_pem_shd.g_old_rec.pem_information25, hr_api.g_varchar2) <>
314 nvl(p_rec.pem_information25, hr_api.g_varchar2) or
315 nvl(per_pem_shd.g_old_rec.pem_information26, hr_api.g_varchar2) <>
316 nvl(p_rec.pem_information26, hr_api.g_varchar2) or
317 nvl(per_pem_shd.g_old_rec.pem_information27, hr_api.g_varchar2) <>
318 nvl(p_rec.pem_information27, hr_api.g_varchar2) or
319 nvl(per_pem_shd.g_old_rec.pem_information28, hr_api.g_varchar2) <>
320 nvl(p_rec.pem_information28, hr_api.g_varchar2) or
321 nvl(per_pem_shd.g_old_rec.pem_information29, hr_api.g_varchar2) <>
322 nvl(p_rec.pem_information29, hr_api.g_varchar2) or
323 nvl(per_pem_shd.g_old_rec.pem_information30, hr_api.g_varchar2) <>
324 nvl(p_rec.pem_information30, hr_api.g_varchar2) ))
325 or (p_rec.previous_employer_id is null) then
326 --
327 -- Only execute the validation if absolutely necessary:
328 -- a) During update, the structure column value or any
329 -- of the attribute values have actually changed.
330 -- b) During insert.
331 --
332 hr_dflex_utility.ins_or_upd_descflex_attribs
333 (p_appl_short_name => 'PER'
334 ,p_descflex_name => 'Previous Employer Developer DF'
335 ,p_attribute_category => p_rec.pem_information_category
336 ,p_attribute1_name => 'PEM_INFORMATION1'
337 ,p_attribute1_value => p_rec.pem_information1
338 ,p_attribute2_name => 'PEM_INFORMATION2'
339 ,p_attribute2_value => p_rec.pem_information2
340 ,p_attribute3_name => 'PEM_INFORMATION3'
341 ,p_attribute3_value => p_rec.pem_information3
342 ,p_attribute4_name => 'PEM_INFORMATION4'
343 ,p_attribute4_value => p_rec.pem_information4
344 ,p_attribute5_name => 'PEM_INFORMATION5'
345 ,p_attribute5_value => p_rec.pem_information5
346 ,p_attribute6_name => 'PEM_INFORMATION6'
347 ,p_attribute6_value => p_rec.pem_information6
348 ,p_attribute7_name => 'PEM_INFORMATION7'
349 ,p_attribute7_value => p_rec.pem_information7
350 ,p_attribute8_name => 'PEM_INFORMATION8'
351 ,p_attribute8_value => p_rec.pem_information8
352 ,p_attribute9_name => 'PEM_INFORMATION9'
353 ,p_attribute9_value => p_rec.pem_information9
354 ,p_attribute10_name => 'PEM_INFORMATION10'
358 ,p_attribute12_name => 'PEM_INFORMATION12'
355 ,p_attribute10_value => p_rec.pem_information10
356 ,p_attribute11_name => 'PEM_INFORMATION11'
357 ,p_attribute11_value => p_rec.pem_information11
359 ,p_attribute12_value => p_rec.pem_information12
360 ,p_attribute13_name => 'PEM_INFORMATION13'
361 ,p_attribute13_value => p_rec.pem_information13
362 ,p_attribute14_name => 'PEM_INFORMATION14'
363 ,p_attribute14_value => p_rec.pem_information14
364 ,p_attribute15_name => 'PEM_INFORMATION15'
365 ,p_attribute15_value => p_rec.pem_information15
366 ,p_attribute16_name => 'PEM_INFORMATION16'
367 ,p_attribute16_value => p_rec.pem_information16
368 ,p_attribute17_name => 'PEM_INFORMATION17'
369 ,p_attribute17_value => p_rec.pem_information17
370 ,p_attribute18_name => 'PEM_INFORMATION18'
371 ,p_attribute18_value => p_rec.pem_information18
372 ,p_attribute19_name => 'PEM_INFORMATION19'
373 ,p_attribute19_value => p_rec.pem_information19
374 ,p_attribute20_name => 'PEM_INFORMATION20'
375 ,p_attribute20_value => p_rec.pem_information20
376 ,p_attribute21_name => 'PEM_INFORMATION21'
377 ,p_attribute21_value => p_rec.pem_information21
378 ,p_attribute22_name => 'PEM_INFORMATION22'
379 ,p_attribute22_value => p_rec.pem_information22
380 ,p_attribute23_name => 'PEM_INFORMATION23'
381 ,p_attribute23_value => p_rec.pem_information23
382 ,p_attribute24_name => 'PEM_INFORMATION24'
383 ,p_attribute24_value => p_rec.pem_information24
384 ,p_attribute25_name => 'PEM_INFORMATION25'
385 ,p_attribute25_value => p_rec.pem_information25
386 ,p_attribute26_name => 'PEM_INFORMATION26'
387 ,p_attribute26_value => p_rec.pem_information26
388 ,p_attribute27_name => 'PEM_INFORMATION27'
389 ,p_attribute27_value => p_rec.pem_information27
390 ,p_attribute28_name => 'PEM_INFORMATION28'
391 ,p_attribute28_value => p_rec.pem_information28
392 ,p_attribute29_name => 'PEM_INFORMATION29'
393 ,p_attribute29_value => p_rec.pem_information29
394 ,p_attribute30_name => 'PEM_INFORMATION30'
395 ,p_attribute30_value => p_rec.pem_information30
396 );
397 end if;
398 --
399 hr_utility.set_location(' Leaving:'||l_proc,20);
400 end chk_ddf;
401 --
402 -- ----------------------------------------------------------------------------
403 -- |------------------------------< chk_df >----------------------------------|
404 -- ----------------------------------------------------------------------------
405 --
406 -- Description:
407 -- Validates all the Descriptive Flexfield values.
408 --
409 -- Prerequisites:
410 -- All other columns have been validated. Must be called as the
411 -- last step from insert_validate and update_validate.
412 --
413 -- In Arguments:
414 -- p_rec
415 --
416 -- Post Success:
417 -- If the Descriptive Flexfield structure column and data values are
418 -- all valid this procedure will end normally and processing will
419 -- continue.
420 --
421 -- Post Failure:
422 -- If the Descriptive Flexfield structure column value or any of
423 -- the data values are invalid then an application error is raised as
424 -- a PL/SQL exception.
425 --
426 -- Access Status:
427 -- Internal Row Handler Use Only.
428 --
429 -- ----------------------------------------------------------------------------
430 procedure chk_df
431 (p_rec in per_pem_shd.g_rec_type
432 ) is
433 --
434 l_proc varchar2(72) := g_package || 'chk_df';
435 --
436 begin
437 hr_utility.set_location('Entering:'||l_proc,10);
438 --
439 if ((p_rec.previous_employer_id is not null) and (
440 nvl(per_pem_shd.g_old_rec.pem_attribute_category, hr_api.g_varchar2) <>
441 nvl(p_rec.pem_attribute_category, hr_api.g_varchar2) or
442 nvl(per_pem_shd.g_old_rec.pem_attribute1, hr_api.g_varchar2) <>
443 nvl(p_rec.pem_attribute1, hr_api.g_varchar2) or
444 nvl(per_pem_shd.g_old_rec.pem_attribute2, hr_api.g_varchar2) <>
445 nvl(p_rec.pem_attribute2, hr_api.g_varchar2) or
446 nvl(per_pem_shd.g_old_rec.pem_attribute3, hr_api.g_varchar2) <>
447 nvl(p_rec.pem_attribute3, hr_api.g_varchar2) or
448 nvl(per_pem_shd.g_old_rec.pem_attribute4, hr_api.g_varchar2) <>
449 nvl(p_rec.pem_attribute4, hr_api.g_varchar2) or
450 nvl(per_pem_shd.g_old_rec.pem_attribute5, hr_api.g_varchar2) <>
451 nvl(p_rec.pem_attribute5, hr_api.g_varchar2) or
452 nvl(per_pem_shd.g_old_rec.pem_attribute6, hr_api.g_varchar2) <>
453 nvl(p_rec.pem_attribute6, hr_api.g_varchar2) or
454 nvl(per_pem_shd.g_old_rec.pem_attribute7, hr_api.g_varchar2) <>
455 nvl(p_rec.pem_attribute7, hr_api.g_varchar2) or
456 nvl(per_pem_shd.g_old_rec.pem_attribute8, hr_api.g_varchar2) <>
457 nvl(p_rec.pem_attribute8, hr_api.g_varchar2) or
458 nvl(per_pem_shd.g_old_rec.pem_attribute9, hr_api.g_varchar2) <>
462 nvl(per_pem_shd.g_old_rec.pem_attribute11, hr_api.g_varchar2) <>
459 nvl(p_rec.pem_attribute9, hr_api.g_varchar2) or
460 nvl(per_pem_shd.g_old_rec.pem_attribute10, hr_api.g_varchar2) <>
461 nvl(p_rec.pem_attribute10, hr_api.g_varchar2) or
463 nvl(p_rec.pem_attribute11, hr_api.g_varchar2) or
464 nvl(per_pem_shd.g_old_rec.pem_attribute12, hr_api.g_varchar2) <>
465 nvl(p_rec.pem_attribute12, hr_api.g_varchar2) or
466 nvl(per_pem_shd.g_old_rec.pem_attribute13, hr_api.g_varchar2) <>
467 nvl(p_rec.pem_attribute13, hr_api.g_varchar2) or
468 nvl(per_pem_shd.g_old_rec.pem_attribute14, hr_api.g_varchar2) <>
469 nvl(p_rec.pem_attribute14, hr_api.g_varchar2) or
470 nvl(per_pem_shd.g_old_rec.pem_attribute15, hr_api.g_varchar2) <>
471 nvl(p_rec.pem_attribute15, hr_api.g_varchar2) or
472 nvl(per_pem_shd.g_old_rec.pem_attribute16, hr_api.g_varchar2) <>
473 nvl(p_rec.pem_attribute16, hr_api.g_varchar2) or
474 nvl(per_pem_shd.g_old_rec.pem_attribute17, hr_api.g_varchar2) <>
475 nvl(p_rec.pem_attribute17, hr_api.g_varchar2) or
476 nvl(per_pem_shd.g_old_rec.pem_attribute18, hr_api.g_varchar2) <>
477 nvl(p_rec.pem_attribute18, hr_api.g_varchar2) or
478 nvl(per_pem_shd.g_old_rec.pem_attribute19, hr_api.g_varchar2) <>
479 nvl(p_rec.pem_attribute19, hr_api.g_varchar2) or
480 nvl(per_pem_shd.g_old_rec.pem_attribute20, hr_api.g_varchar2) <>
481 nvl(p_rec.pem_attribute20, hr_api.g_varchar2) or
482 nvl(per_pem_shd.g_old_rec.pem_attribute21, hr_api.g_varchar2) <>
483 nvl(p_rec.pem_attribute21, hr_api.g_varchar2) or
484 nvl(per_pem_shd.g_old_rec.pem_attribute22, hr_api.g_varchar2) <>
485 nvl(p_rec.pem_attribute22, hr_api.g_varchar2) or
486 nvl(per_pem_shd.g_old_rec.pem_attribute23, hr_api.g_varchar2) <>
487 nvl(p_rec.pem_attribute23, hr_api.g_varchar2) or
488 nvl(per_pem_shd.g_old_rec.pem_attribute24, hr_api.g_varchar2) <>
489 nvl(p_rec.pem_attribute24, hr_api.g_varchar2) or
490 nvl(per_pem_shd.g_old_rec.pem_attribute25, hr_api.g_varchar2) <>
491 nvl(p_rec.pem_attribute25, hr_api.g_varchar2) or
492 nvl(per_pem_shd.g_old_rec.pem_attribute26, hr_api.g_varchar2) <>
493 nvl(p_rec.pem_attribute26, hr_api.g_varchar2) or
494 nvl(per_pem_shd.g_old_rec.pem_attribute27, hr_api.g_varchar2) <>
495 nvl(p_rec.pem_attribute27, hr_api.g_varchar2) or
496 nvl(per_pem_shd.g_old_rec.pem_attribute28, hr_api.g_varchar2) <>
497 nvl(p_rec.pem_attribute28, hr_api.g_varchar2) or
498 nvl(per_pem_shd.g_old_rec.pem_attribute29, hr_api.g_varchar2) <>
499 nvl(p_rec.pem_attribute29, hr_api.g_varchar2) or
500 nvl(per_pem_shd.g_old_rec.pem_attribute30, hr_api.g_varchar2) <>
501 nvl(p_rec.pem_attribute30, hr_api.g_varchar2) ))
502 or (p_rec.previous_employer_id is null) then
503 --
504 -- Only execute the validation if absolutely necessary:
505 -- a) During update, the structure column value or any
506 -- of the attribute values have actually changed.
507 -- b) During insert.
508 --
509 hr_dflex_utility.ins_or_upd_descflex_attribs
510 (p_appl_short_name => 'PER'
511 ,p_descflex_name => 'PER_PREVIOUS_EMPLOYERS'
512 ,p_attribute_category => p_rec.pem_attribute_category
513 ,p_attribute1_name => 'PEM_ATTRIBUTE1'
514 ,p_attribute1_value => p_rec.pem_attribute1
515 ,p_attribute2_name => 'PEM_ATTRIBUTE2'
516 ,p_attribute2_value => p_rec.pem_attribute2
517 ,p_attribute3_name => 'PEM_ATTRIBUTE3'
518 ,p_attribute3_value => p_rec.pem_attribute3
519 ,p_attribute4_name => 'PEM_ATTRIBUTE4'
520 ,p_attribute4_value => p_rec.pem_attribute4
521 ,p_attribute5_name => 'PEM_ATTRIBUTE5'
522 ,p_attribute5_value => p_rec.pem_attribute5
523 ,p_attribute6_name => 'PEM_ATTRIBUTE6'
524 ,p_attribute6_value => p_rec.pem_attribute6
525 ,p_attribute7_name => 'PEM_ATTRIBUTE7'
526 ,p_attribute7_value => p_rec.pem_attribute7
527 ,p_attribute8_name => 'PEM_ATTRIBUTE8'
528 ,p_attribute8_value => p_rec.pem_attribute8
529 ,p_attribute9_name => 'PEM_ATTRIBUTE9'
530 ,p_attribute9_value => p_rec.pem_attribute9
531 ,p_attribute10_name => 'PEM_ATTRIBUTE10'
532 ,p_attribute10_value => p_rec.pem_attribute10
533 ,p_attribute11_name => 'PEM_ATTRIBUTE11'
534 ,p_attribute11_value => p_rec.pem_attribute11
535 ,p_attribute12_name => 'PEM_ATTRIBUTE12'
536 ,p_attribute12_value => p_rec.pem_attribute12
537 ,p_attribute13_name => 'PEM_ATTRIBUTE13'
538 ,p_attribute13_value => p_rec.pem_attribute13
539 ,p_attribute14_name => 'PEM_ATTRIBUTE14'
540 ,p_attribute14_value => p_rec.pem_attribute14
541 ,p_attribute15_name => 'PEM_ATTRIBUTE15'
542 ,p_attribute15_value => p_rec.pem_attribute15
543 ,p_attribute16_name => 'PEM_ATTRIBUTE16'
544 ,p_attribute16_value => p_rec.pem_attribute16
545 ,p_attribute17_name => 'PEM_ATTRIBUTE17'
546 ,p_attribute17_value => p_rec.pem_attribute17
547 ,p_attribute18_name => 'PEM_ATTRIBUTE18'
551 ,p_attribute20_name => 'PEM_ATTRIBUTE20'
548 ,p_attribute18_value => p_rec.pem_attribute18
549 ,p_attribute19_name => 'PEM_ATTRIBUTE19'
550 ,p_attribute19_value => p_rec.pem_attribute19
552 ,p_attribute20_value => p_rec.pem_attribute20
553 ,p_attribute21_name => 'PEM_ATTRIBUTE21'
554 ,p_attribute21_value => p_rec.pem_attribute21
555 ,p_attribute22_name => 'PEM_ATTRIBUTE22'
556 ,p_attribute22_value => p_rec.pem_attribute22
557 ,p_attribute23_name => 'PEM_ATTRIBUTE23'
558 ,p_attribute23_value => p_rec.pem_attribute23
559 ,p_attribute24_name => 'PEM_ATTRIBUTE24'
560 ,p_attribute24_value => p_rec.pem_attribute24
561 ,p_attribute25_name => 'PEM_ATTRIBUTE25'
562 ,p_attribute25_value => p_rec.pem_attribute25
563 ,p_attribute26_name => 'PEM_ATTRIBUTE26'
564 ,p_attribute26_value => p_rec.pem_attribute26
565 ,p_attribute27_name => 'PEM_ATTRIBUTE27'
566 ,p_attribute27_value => p_rec.pem_attribute27
567 ,p_attribute28_name => 'PEM_ATTRIBUTE28'
568 ,p_attribute28_value => p_rec.pem_attribute28
569 ,p_attribute29_name => 'PEM_ATTRIBUTE29'
570 ,p_attribute29_value => p_rec.pem_attribute29
571 ,p_attribute30_name => 'PEM_ATTRIBUTE30'
572 ,p_attribute30_value => p_rec.pem_attribute30
573 );
574 end if;
575 --
576 hr_utility.set_location(' Leaving:'||l_proc,20);
577 end chk_df;
578 --
579 -- ----------------------------------------------------------------------------
580 -- |-----------------------< chk_non_updateable_args >------------------------|
581 -- ----------------------------------------------------------------------------
582 -- {Start Of Comments}
583 --
584 -- Description:
585 -- This procedure is used to ensure that non updateable attributes have
586 -- not been updated. If an attribute has been updated an error is generated.
587 --
588 -- Pre Conditions:
589 -- g_old_rec has been populated with details of the values currently in
590 -- the database.
591 --
592 -- In Arguments:
593 -- p_rec has been populated with the updated values the user would like the
594 -- record set to.
595 --
596 -- Post Success:
597 -- Processing continues if all the non updateable attributes have not
598 -- changed.
599 --
600 -- Post Failure:
601 -- An application error is raised if any of the non updatable attributes
602 -- have been altered.
603 --
604 -- {End Of Comments}
605 -- ----------------------------------------------------------------------------
606 Procedure chk_non_updateable_args
607 (p_effective_date in date
608 ,p_rec in per_pem_shd.g_rec_type
609 ) IS
610 --
611 l_proc varchar2(72) := g_package || 'chk_non_updateable_args';
612 --
613 Begin
614 hr_utility.set_location('Entering : '||l_proc,5);
615 --
616 -- Only proceed with the validation if a row exists for the current
617 -- record in the HR Schema.
618 --
619 IF NOT per_pem_shd.api_updating
620 (p_previous_employer_id => p_rec.previous_employer_id
621 ,p_object_version_number => p_rec.object_version_number
622 ) THEN
623 fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
624 fnd_message.set_token('PROCEDURE ', l_proc);
625 fnd_message.set_token('STEP ', '5');
626 fnd_message.raise_error;
627 END IF;
628 --
629 -- Add checks to ensure non-updateable args have
630 -- not been updated.
631 hr_utility.set_location(l_proc,10);
632 if per_pem_shd.g_old_rec.previous_employer_id <> p_rec.previous_employer_id
633 then
634 hr_api.argument_changed_error
635 (p_api_name => l_proc
636 ,p_argument => 'previous_employer_id'
637 ,p_base_table => per_pem_shd.g_tab_nam
638 );
639 end if;
640 --
641 hr_utility.set_location(l_proc,15);
642 if per_pem_shd.g_old_rec.person_id <> p_rec.person_id
643 then
644 hr_api.argument_changed_error
645 (p_api_name => l_proc
646 ,p_argument => 'person_id'
647 ,p_base_table => per_pem_shd.g_tab_nam
648 );
649 end if;
650 --
651 hr_utility.set_location(l_proc,20);
652 if nvl(per_pem_shd.g_old_rec.party_id,p_rec.party_id) <>
653 nvl(p_rec.party_id,per_pem_shd.g_old_rec.party_id)
654 then
655 hr_api.argument_changed_error
656 (p_api_name => l_proc
657 ,p_argument => 'party_id'
658 ,p_base_table => per_pem_shd.g_tab_nam
659 );
660 end if;
661 hr_utility.set_location(l_proc,25);
662 --
663 -- start commented code for business_group_id is
664 -- updateable if previously null.
665 --
666 /*
667 if per_pem_shd.g_old_rec.business_group_id <> p_rec.business_group_id
668 then
669 hr_api.argument_changed_error
670 (p_api_name => l_proc
671 ,p_argument => 'business_group_id'
672 ,p_base_table => per_pem_shd.g_tab_nam
673 );
677 --
674 end if;
675 --
676 */
678 -- end commented code
679 --
680 hr_utility.set_location('Leaving : '||l_proc,30);
681 End chk_non_updateable_args;
682 --
683 -- ----------------------------------------------------------------------------
684 -- |----------------------------< chk_person_id >-----------------------------|
685 -- ----------------------------------------------------------------------------
686 -- {Start Of Comments}
687 --
688 -- Description:
689 -- This procedure ensures that person_id value is valid.
690 --
691 -- Pre Conditions:
692 -- g_old_rec has been populated with details of the values currently in
693 -- the database.
694 --
695 -- In Arguments:
696 -- p_person_id
697 -- p_previous_employer_id
698 -- p_object_version_number
699 -- p_effective_date
700 --
701 -- Post Success:
702 -- Processing continues if person_id is valid employee
703 --
704 -- Post Failure:
705 -- An application error is raised person_id is not valid
706 -- or person is not an employee or if the person is not valid
707 -- for the current period.
708 --
709 -- {End Of Comments}
710 -- ----------------------------------------------------------------------------
711 procedure chk_person_id(p_person_id
712 in per_previous_employers.person_id%type
713 ,p_previous_employer_id
714 in per_previous_employers.previous_employer_id%type
715 ,p_object_version_number
716 in per_previous_employers.object_version_number%type
717 ,p_effective_date
718 in date)
719 is
720 -- Define the cursor for the person_id
721 cursor csr_person_id is
722 select person_id
723 from per_all_people_f
724 where person_id = p_person_id;
725 --
726 cursor csr_effective_person_id is
727 select person_id
728 from per_all_people_f
729 where person_id = p_person_id
730 and p_effective_date
731 between effective_start_date and effective_end_date;
732 --
733 --
734 l_person_id per_all_people_f.person_id%type;
735 --
736 l_proc varchar2(72) := g_package||'chk_person_id';
737 l_api_updating boolean;
738 --
739 begin
740 hr_utility.set_location('Entering:'||l_proc, 5);
741 if p_person_id is not null then
742 hr_utility.set_location(l_proc, 10);
743 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
744 => p_previous_employer_id
745 ,p_object_version_number
746 => p_object_version_number
747 );
748 if ((l_api_updating
749 and nvl(per_pem_shd.g_old_rec.person_id, hr_api.g_number)
750 <> nvl(p_person_id,hr_api.g_number))
751 or
752 (not l_api_updating))
753 then
754 -- Check for invalid person_id
755 hr_utility.set_location(l_proc, 15);
756 open csr_person_id;
757 fetch csr_person_id into l_person_id;
758 if csr_person_id%notfound then
759 hr_utility.set_location(l_proc, 20);
760 close csr_person_id;
761 fnd_message.set_name('PER','HR_289535_PEM_VALID_PERSON_ID');
762 fnd_message.raise_error;
763 end if;
764 if csr_person_id%isopen then
765 close csr_person_id;
766 end if;
767 -- Check for person_id with effective dates
768 hr_utility.set_location(l_proc, 25);
769 open csr_effective_person_id;
770 fetch csr_effective_person_id into l_person_id;
771 if csr_effective_person_id%notfound then
772 hr_utility.set_location(l_proc, 30);
773 close csr_effective_person_id;
774 fnd_message.set_name('PER','HR_289547_PEM_DATE_PERSON_ID');
775 fnd_message.raise_error;
776 end if;
777 if csr_effective_person_id%isopen then
778 close csr_effective_person_id;
779 end if;
780 --
781 end if;
782 end if;
783 hr_utility.set_location('Leaving:'||l_proc, 40);
784 exception
785 when app_exception.application_exception then
786 if hr_multi_message.exception_add
787 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PERSON_ID'
788 ) then
789 hr_utility.set_location('Leaving:'||l_proc, 50);
790 raise;
791 end if;
792 hr_utility.set_location('Leaving:'||l_proc,60);
793 end chk_person_id;
794 --
795 -- ----------------------------------------------------------------------------
796 -- |-----------------------------< chk_party_id >-----------------------------|
797 -- ----------------------------------------------------------------------------
798 -- {Start Of Comments}
799 --
800 -- Description:
801 -- This procedure ensures that party_id value is valid.
802 --
803 -- Pre Conditions:
804 -- g_old_rec has been populated with details of the values currently in
805 -- the database.
806 --
807 -- In Arguments:
808 -- p_party_id
809 -- p_previous_employer_id
810 -- p_object_version_number
811 --
812 -- Post Success:
816 -- An application error is raised party_id is not valid
813 -- Processing continues if party_id is valid.
814 --
815 -- Post Failure:
817 --
818 -- {End Of Comments}
819 -- ----------------------------------------------------------------------------
820 procedure chk_party_id(p_party_id
821 in per_previous_employers.party_id%type
822 ,p_previous_employer_id
823 in per_previous_employers.previous_employer_id%type
824 ,p_object_version_number
825 in per_previous_employers.object_version_number%type) is
826 --Define the cursor for party_id
827 cursor csr_party_id is
828 select party_id
829 from hz_parties
830 where party_id = p_party_id;
831 l_party_id hz_parties.party_id%type;
832 --
833 l_proc varchar2(72) := g_package||'chk_party_id';
834 l_api_updating boolean;
835 begin
836 hr_utility.set_location('Entering:'||l_proc, 5);
837 --
838 if p_party_id is not null then
839 hr_utility.set_location(l_proc, 10);
840 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
841 => p_previous_employer_id
842 ,p_object_version_number
843 => p_object_version_number
844 );
845 if ((l_api_updating
846 and nvl(per_pem_shd.g_old_rec.party_id, hr_api.g_number)
847 <> nvl(p_party_id,hr_api.g_number))
848 or
849 (not l_api_updating))
850 then
851 hr_utility.set_location(l_proc, 15);
852 open csr_party_id;
853 fetch csr_party_id into l_party_id;
854 if csr_party_id%notfound then
855 hr_utility.set_location(l_proc, 20);
856 close csr_party_id;
857 fnd_message.set_name('PER','HR_289536_PEM_VALID_PARTY_ID');
858 fnd_message.raise_error;
859 end if;
860 if csr_party_id%isopen then
861 close csr_party_id;
862 end if;
863 end if;
864 end if;
865 --
866 hr_utility.set_location('Leaving:'||l_proc, 25);
867 exception
868 when app_exception.application_exception then
869 if hr_multi_message.exception_add
870 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PARTY_ID'
871 ) then
872 hr_utility.set_location('Leaving:'||l_proc,30);
873 raise;
874 end if;
875 hr_utility.set_location('Leaving:'||l_proc,40);
876 end chk_party_id;
877 --
878 -- ----------------------------------------------------------------------------
879 -- |-------------------------< chk_employer_country >-------------------------|
880 -- ----------------------------------------------------------------------------
881 -- {Start Of Comments}
882 --
883 -- Description:
884 -- This procedure ensures that employer_country has valid lookup
885 --
886 -- Pre Conditions:
887 -- g_old_rec has been populated with details of the values currently in
888 -- the database.
889 --
890 -- In Arguments:
891 -- p_previous_employer_id
892 -- p_object_version_number
893 -- p_employer_country
894 --
895 -- Post Success:
896 -- Processing continues if employer_country has valid value
897 -- in fnd_territories
898 --
899 -- Post Failure:
900 -- An application error is raised if employer country is not valid
901 --
902 -- {End Of Comments}
903 -- ----------------------------------------------------------------------------
904 procedure chk_employer_country
905 (p_previous_employer_id
906 in per_previous_employers.previous_employer_id%type
907 ,p_object_version_number
908 in per_previous_employers.object_version_number%type
909 ,p_employer_country
910 in per_previous_employers.employer_country%type) is
911 cursor csr_employer_country is
912 select territory_code
913 from fnd_territories_vl
914 where territory_code = p_employer_country;
915 l_employer_country per_previous_employers.employer_country%type;
916 --
917 l_proc varchar2(72) := g_package||'chk_employer_country';
918 l_api_updating boolean;
919 begin
920 hr_utility.set_location('Entering:'||l_proc, 5);
921 --
922 if p_employer_country is not null then
923 hr_utility.set_location(l_proc, 10);
924 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
925 => p_previous_employer_id
926 ,p_object_version_number
927 => p_object_version_number
928 );
929 if ((l_api_updating
930 and nvl(per_pem_shd.g_old_rec.employer_country, hr_api.g_varchar2)
931 <> nvl(p_employer_country,hr_api.g_varchar2))
932 or
933 (not l_api_updating))
934 then
935 hr_utility.set_location(l_proc, 15);
936 open csr_employer_country;
937 fetch csr_employer_country into l_employer_country;
938 if csr_employer_country%notfound then
939 hr_utility.set_location(l_proc, 20);
940 close csr_employer_country;
944 if csr_employer_country%isopen then
941 fnd_message.set_name('PER','HR_289531_PEM_VALD_EMPR_CNTRY');
942 fnd_message.raise_error;
943 end if;
945 close csr_employer_country;
946 end if;
947 end if;
948 end if;
949 --
950 hr_utility.set_location('Leaving:'||l_proc, 25);
951 exception
952 when app_exception.application_exception then
953 if hr_multi_message.exception_add
954 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.EMPLOYER_COUNTRY'
955 ) then
956 hr_utility.set_location('Leaving:'||l_proc, 30);
957 raise;
958 end if;
959 hr_utility.set_location('Leaving:'||l_proc,40);
960 end chk_employer_country;
961 --
962 -- ----------------------------------------------------------------------------
963 -- |--------------------------< chk_employer_type >---------------------------|
964 -- ----------------------------------------------------------------------------
965 -- {Start Of Comments}
966 --
967 -- Description:
968 -- This procedure ensures that employer_type has valid lookup
969 --
970 -- Pre Conditions:
971 -- g_old_rec has been populated with details of the values currently in
972 -- the database.
973 --
974 -- In Arguments:
975 -- p_previous_employer_id
976 -- p_object_version_number
977 -- p_employer_type
978 -- p_effective_date
979 --
980 -- Post Success:
981 -- Processing continues if employer_type has valid lookup
982 --
983 -- Post Failure:
984 -- An application error is raised if employer_type has no valid lookup
985 --
986 -- {End Of Comments}
987 -- ----------------------------------------------------------------------------
988 procedure chk_employer_type
989 (p_previous_employer_id
990 in per_previous_employers.previous_employer_id%type
991 ,p_object_version_number
992 in per_previous_employers.object_version_number%type
993 ,p_employer_type
994 in per_previous_employers.employer_type%type
995 ,p_effective_date in date) is
996 l_proc varchar2(72) := g_package||'chk_employer_type';
997 l_no_lookup boolean;
998 l_effective_date date := p_effective_date;
999 l_lookup_type fnd_lookups.lookup_type%type := 'PREV_EMP_TYPE';
1000 l_lookup_code per_previous_employers.employer_type%type
1001 := p_employer_type;
1002 l_api_updating boolean;
1003 begin
1004 hr_utility.set_location('Entering:'||l_proc, 5);
1005 --
1006 if p_employer_type is not null then
1007 hr_utility.set_location(l_proc, 10);
1008 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1009 => p_previous_employer_id
1010 ,p_object_version_number
1011 => p_object_version_number
1012 );
1013 if ((l_api_updating and
1014 nvl(p_employer_type,hr_api.g_varchar2)
1015 <> nvl(per_pem_shd.g_old_rec.employer_type, hr_api.g_varchar2))
1016 or
1017 (not l_api_updating)) then
1018 hr_utility.set_location(l_proc, 15);
1019 l_no_lookup := hr_api.not_exists_in_leg_lookups
1020 (p_effective_date => l_effective_date
1021 ,p_lookup_type => l_lookup_type
1022 ,p_lookup_code => l_lookup_code
1023 );
1024 if l_no_lookup = true then
1025 hr_utility.set_location(l_proc, 20);
1026 fnd_message.set_name('PER','HR_289532_PEM_VALID_EMPR_TYPE');
1027 fnd_message.raise_error;
1028 end if;
1029 end if;
1030 end if;
1031 --
1032 hr_utility.set_location('Leaving:'||l_proc, 25);
1033 exception
1034 when app_exception.application_exception then
1035 if hr_multi_message.exception_add
1036 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.EMPLOYER_TYPE'
1037 ) then
1038 hr_utility.set_location('Leaving:'||l_proc, 30);
1039 raise;
1040 end if;
1041 hr_utility.set_location('Leaving:'||l_proc,40);
1042 end chk_employer_type;
1043 --
1044 -- ----------------------------------------------------------------------------
1045 -- |-------------------------< chk_employer_subtype >-------------------------|
1046 -- ----------------------------------------------------------------------------
1047 -- {Start Of Comments}
1048 --
1049 -- Description:
1050 -- This procedure ensures that employer_subtype has valid lookup
1051 --
1052 -- Pre Conditions:
1053 -- g_old_rec has been populated with details of the values currently in
1054 -- the database.
1055 --
1056 -- In Arguments:
1057 -- p_previous_employer_id
1058 -- p_object_version_number
1059 -- p_employer_type
1060 -- p_employer_subtype
1061 -- p_effective_date
1062 --
1063 -- Post Success:
1064 -- Processing continues if employer_subtype has valid lookup
1065 --
1066 -- Post Failure:
1067 -- An application error is raised if employer_subtype has no valid lookup
1068 --
1069 -- {End Of Comments}
1070 -- ----------------------------------------------------------------------------
1071 procedure chk_employer_subtype
1072 (p_previous_employer_id
1076 ,p_employer_type
1073 in per_previous_employers.previous_employer_id%type
1074 ,p_object_version_number
1075 in per_previous_employers.object_version_number%type
1077 in per_previous_employers.employer_type%type
1078 ,p_employer_subtype
1079 in per_previous_employers.employer_subtype%type
1080 ,p_effective_date in date) is
1081 --
1082 cursor csr_employer_subtype is
1083 select lookup_code
1084 from hr_leg_lookups
1085 where lookup_type = 'PREV_EMP_SUBTYPE'
1086 and lookup_code like p_employer_type||'_%'
1087 and lookup_code = p_employer_subtype;
1088 --
1089 l_proc varchar2(72) := g_package||'chk_employer_subtype';
1090 l_no_lookup boolean;
1091 l_effective_date date := p_effective_date;
1092 l_lookup_type fnd_lookups.lookup_type%type := 'PREV_EMP_SUBTYPE';
1093 l_lookup_code fnd_lookups.lookup_code%type := p_employer_subtype;
1094 l_employer_subtype hr_leg_lookups.lookup_code%type;
1095 --
1096 l_api_updating boolean;
1097 begin
1098 hr_utility.set_location('Entering:'||l_proc, 5);
1099 --
1100 --Only proceed with employer_subtype validation when multiple message list
1101 --does not already contain an error associated with employer type column.
1102 --
1103 if hr_multi_message.no_exclusive_error
1104 (p_check_column1 => 'PER_PREVIOUS_EMPLOYERS.EMPLOYER_TYPE'
1105 ) then
1106 if p_employer_subtype is not null then
1107 hr_utility.set_location(l_proc, 10);
1108 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1109 => p_previous_employer_id
1110 ,p_object_version_number
1111 => p_object_version_number
1112 );
1113 if ((l_api_updating and
1114 nvl(p_employer_subtype,hr_api.g_varchar2)
1115 <> nvl(per_pem_shd.g_old_rec.employer_subtype
1116 , hr_api.g_varchar2))
1117 or
1118 (not l_api_updating)) then
1119 hr_utility.set_location(l_proc, 15);
1120 -- Check for standard lookup
1121 l_no_lookup := hr_api.not_exists_in_leg_lookups
1122 (p_effective_date => l_effective_date
1123 ,p_lookup_type => l_lookup_type
1124 ,p_lookup_code => l_lookup_code
1125 );
1126 if l_no_lookup = true then
1127 hr_utility.set_location(l_proc, 20);
1128 fnd_message.set_name('PER','HR_289533_PEM_VALID_EMPR_SBTP');
1129 fnd_message.raise_error;
1130 end if;
1131 -- Check for the dependency on employer type
1132 hr_utility.set_location(l_proc, 25);
1133 open csr_employer_subtype;
1134 fetch csr_employer_subtype into l_employer_subtype;
1135 if csr_employer_subtype%notfound then
1136 hr_utility.set_location(l_proc, 30);
1137 close csr_employer_subtype;
1138 fnd_message.set_name('PER','HR_289533_PEM_VALID_EMPR_SBTP');
1139 fnd_message.raise_error;
1140 end if;
1141 if csr_employer_subtype%isopen then
1142 close csr_employer_subtype;
1143 end if;
1144 end if;
1145 end if;
1146 end if;
1147 --
1148 hr_utility.set_location('Leaving:'||l_proc, 35);
1149 exception
1150 when app_exception.application_exception then
1151 if hr_multi_message.exception_add
1152 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.EMPLOYER_TYPE'
1153 ,p_associated_column2 => 'PER_PREVIOUS_EMPLOYERS.EMPLOYER_SUBTYPE'
1154 ) then
1155 hr_utility.set_location('Leaving:'||l_proc, 40);
1156 raise;
1157 end if;
1158 hr_utility.set_location('Leaving:'||l_proc,50);
1159 end chk_employer_subtype;
1160 --
1161 -- -----------------------------------------------------------------------
1162 -- |---------------------------< chk_start_end_dates >-------------------|
1163 -- -----------------------------------------------------------------------
1164 -- {Start Of Comments}
1165 --
1166 -- Description:
1167 -- This procedure ensures that end_date is greater than start_date
1168 --
1169 -- Pre Conditions:
1170 -- g_old_rec has been populated with details of the values currently in
1171 -- the database.
1172 --
1173 -- In Arguments:
1174 -- p_previous_employer_id
1175 -- p_object_version_number
1176 -- p_start_date
1177 -- p_end_date
1178 --
1179 -- Post Success:
1180 -- Processing continues if end_date is greater than start_date
1181 --
1182 -- Post Failure:
1183 -- An application error is raised if start_date is greater than end_date
1184 --
1185 -- {End Of Comments}
1186 -- ----------------------------------------------------------------------------
1187 procedure chk_start_end_dates
1188 (p_previous_employer_id
1189 in per_previous_employers.previous_employer_id%type
1190 ,p_object_version_number
1191 in per_previous_employers.object_version_number%type
1192 ,p_start_date
1193 in per_previous_employers.start_date%type
1194 ,p_end_date
1195 in per_previous_employers.end_date%TYPE
1196 ,p_effective_date
1200 begin
1197 IN per_previous_employers.start_date%type) is
1198 l_proc varchar2(72) := g_package||'chk_start_end_dates';
1199 l_api_updating boolean;
1201 hr_utility.set_location('Entering:'||l_proc, 5);
1202 --
1203 -- This If condition added for bug 7112425
1204
1205 IF p_start_date is not null AND p_start_date > p_effective_date THEN
1206 fnd_message.set_name('PER','HR_INVAL_ST_DT_PEM');
1207 fnd_message.raise_error;
1208 END IF ;
1209 hr_utility.set_location('Entering:'||l_proc, 6);
1210
1211 if p_start_date is not null and p_end_date is not null then
1212 hr_utility.set_location(l_proc, 10);
1213 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1214 => p_previous_employer_id
1215 ,p_object_version_number
1216 => p_object_version_number
1217 );
1218 if ((l_api_updating and
1219 ( nvl(p_start_date,hr_api.g_sot)
1220 <> nvl(per_pem_shd.g_old_rec.start_date, hr_api.g_sot)
1221 or
1222 nvl(p_end_date,hr_api.g_eot)
1223 <> nvl(per_pem_shd.g_old_rec.end_date, hr_api.g_eot)
1224 ))
1225 or
1226 (not l_api_updating)) then
1227 hr_utility.set_location(l_proc, 15);
1228 if p_start_date > p_end_date then
1229 hr_utility.set_location(l_proc, 20);
1230 fnd_message.set_name('PER','HR_289530_PEM_STRT_END_DATES');
1231 fnd_message.set_token('START_DATE',TO_CHAR(p_start_date,'DD-MON-YYYY'),true);
1232 fnd_message.set_token('END_DATE',TO_CHAR(p_end_date,'DD-MON-YYYY'),true);
1233 fnd_message.raise_error;
1234 end if;
1235 end if;
1236 end if;
1237 --
1238 hr_utility.set_location('Leaving:'||l_proc, 25);
1239 /*exception
1240 when app_exception.application_exception then
1241 if hr_multi_message.exception_add
1242 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.START_DATE'
1243 ,p_associated_column2 => 'PER_PREVIOUS_EMPLOYERS.END_DATE'
1244 ) then
1245 hr_utility.set_location('Leaving:'||l_proc, 30);
1246 raise;
1247 end if;
1248 hr_utility.set_location('Leaving:'||l_proc,40);*/--commented for the bug 5686794
1249 end chk_start_end_dates;
1250 --
1251 -- -----------------------------------------------------------------------
1252 -- |---------------------------< chk_period_years >----------------------|
1253 -- -----------------------------------------------------------------------
1254 -- {Start Of Comments}
1255 --
1256 -- Description:
1257 -- This procedure ensures that period_years is between 0 and 99
1258 --
1259 -- Pre Conditions:
1260 -- g_old_rec has been populated with details of the values currently in
1261 -- the database.
1262 --
1263 -- In Arguments:
1264 -- p_period_years
1265 -- p_previous_employer_id
1266 -- p_object_version_number
1267 --
1268 -- Post Success:
1269 -- Processing continues if period_years is between 0 and 99
1270 --
1271 -- Post Failure:
1272 -- An application error is raised if period_years value is not in range
1273 -- of 0 and 99.
1274 --
1275 -- {End Of Comments}
1276 -- ----------------------------------------------------------------------------
1277 procedure chk_period_years
1278 (p_period_years
1279 in per_previous_employers.period_years%type
1280 ,p_previous_employer_id
1281 in per_previous_employers.previous_employer_id%type
1282 ,p_object_version_number
1283 in per_previous_employers.object_version_number%type) is
1284 l_proc varchar2(72) := g_package||'chk_period_years';
1285 l_api_updating boolean;
1286 begin
1287 hr_utility.set_location('Entering:'||l_proc, 5);
1288 --
1289 if p_period_years is not null then
1290 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1291 => p_previous_employer_id
1292 ,p_object_version_number
1293 => p_object_version_number);
1294 hr_utility.set_location(l_proc, 10);
1295 if ((l_api_updating and
1296 ( nvl(p_period_years,hr_api.g_number)
1297 <> nvl(per_pem_shd.g_old_rec.period_years, hr_api.g_number)
1298 )
1299 ) or
1300 (not l_api_updating)) then
1301 hr_utility.set_location(l_proc, 15);
1302 if p_period_years not between 0 and 99 then
1303 hr_utility.set_location(l_proc, 20);
1304 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
1305 fnd_message.set_token('RANGE_START','0',true);
1306 fnd_message.set_token('RANGE_END','99',true);
1307 fnd_message.raise_error;
1308 end if;
1309 end if;
1310 end if;
1311 --
1312 hr_utility.set_location('Leaving:'||l_proc, 25);
1313 exception
1314 when app_exception.application_exception then
1315 if hr_multi_message.exception_add
1316 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PERIOD_YEARS'
1317 ) then
1318 hr_utility.set_location('Leaving:'||l_proc, 30);
1319 raise;
1320 end if;
1321 hr_utility.set_location('Leaving:'||l_proc,40);
1322 end chk_period_years;
1323 --
1324 -- -----------------------------------------------------------------------
1328 --
1325 -- |---------------------------< chk_period_months >---------------------|
1326 -- -----------------------------------------------------------------------
1327 -- {Start Of Comments}
1329 -- Description:
1330 -- This procedure ensures that period_months is between 0 and 11
1331 --
1332 -- Pre Conditions:
1333 -- g_old_rec has been populated with details of the values currently in
1334 -- the database.
1335 --
1336 -- In Arguments:
1337 -- p_period_months
1338 -- p_previous_employer_id
1339 -- p_object_version_number
1340 --
1341 -- Post Success:
1342 -- Processing continues if period_years is between 0 and 11
1343 --
1344 -- Post Failure:
1345 -- An application error is raised if period_months value is not in range
1346 -- of 0 and 11.
1347 --
1348 -- {End Of Comments}
1349 -- ----------------------------------------------------------------------------
1350 procedure chk_period_months
1351 (p_period_months
1352 in per_previous_employers.period_months%type
1353 ,p_previous_employer_id
1354 in per_previous_employers.previous_employer_id%type
1355 ,p_object_version_number
1356 in per_previous_employers.object_version_number%type) is
1357 l_proc varchar2(72) := g_package||'chk_period_months';
1358 l_api_updating boolean;
1359 begin
1360 hr_utility.set_location('Entering:'||l_proc, 5);
1361 --
1362 if p_period_months is not null then
1363 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1364 => p_previous_employer_id
1365 ,p_object_version_number
1366 => p_object_version_number);
1367 hr_utility.set_location(l_proc, 10);
1368 if ((l_api_updating and
1369 ( nvl(p_period_months,hr_api.g_number)
1370 <> nvl(per_pem_shd.g_old_rec.period_months,hr_api.g_number)
1371 )
1372 ) or
1373 (not l_api_updating)) then
1374 hr_utility.set_location(l_proc, 15);
1375 if p_period_months not between 0 and 11 then
1376 hr_utility.set_location(l_proc, 20);
1377 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
1378 fnd_message.set_token('RANGE_START','0',true);
1379 fnd_message.set_token('RANGE_END','11',true);
1380 fnd_message.raise_error;
1381 end if;
1382 end if;
1383 end if;
1384 --
1385 hr_utility.set_location('Leaving:'||l_proc, 25);
1386 exception
1387 when app_exception.application_exception then
1388 if hr_multi_message.exception_add
1389 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PERIOD_MONTHS'
1390 ) then
1391 hr_utility.set_location('Leaving:'||l_proc, 30);
1392 raise;
1393 end if;
1394 hr_utility.set_location('Leaving:'||l_proc,40);
1395 end chk_period_months;
1396 --
1397 -- -----------------------------------------------------------------------
1398 -- |---------------------------< chk_period_days >-----------------------|
1399 -- -----------------------------------------------------------------------
1400 -- {Start Of Comments}
1401 --
1402 -- Description:
1403 -- This procedure ensures that period_days is between 0 and 365
1404 --
1405 -- Pre Conditions:
1406 -- g_old_rec has been populated with details of the values currently in
1407 -- the database.
1408 --
1409 -- In Arguments:
1410 -- p_period_days
1411 -- p_previous_employer_id
1412 -- p_object_version_number
1413 --
1414 -- Post Success:
1415 -- Processing continues if period_days is between 0 and 365
1416 --
1417 -- Post Failure:
1418 -- An application error is raised if period_days value is not in range
1419 -- of 0 and 365.
1420 --
1421 -- {End Of Comments}
1422 -- ----------------------------------------------------------------------------
1423 procedure chk_period_days
1424 (p_period_days
1425 in per_previous_employers.period_days%type
1426 ,p_previous_employer_id
1427 in per_previous_employers.previous_employer_id%type
1428 ,p_object_version_number
1429 in per_previous_employers.object_version_number%type) is
1430 l_proc varchar2(72) := g_package||'chk_period_days';
1431 l_api_updating boolean;
1432 begin
1433 hr_utility.set_location('Entering:'||l_proc, 5);
1434 --
1435 if p_period_days is not null then
1436 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1437 => p_previous_employer_id
1438 ,p_object_version_number
1439 => p_object_version_number);
1440 hr_utility.set_location(l_proc, 10);
1441 if ((l_api_updating and
1442 ( nvl(p_period_days,hr_api.g_number)
1443 <> nvl(per_pem_shd.g_old_rec.period_days,hr_api.g_number)
1444 )
1445 ) or
1446 (not l_api_updating)) then
1447 hr_utility.set_location(l_proc, 15);
1448 if p_period_days not between 0 and 365 then
1449 hr_utility.set_location(l_proc, 20);
1450 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
1451 fnd_message.set_token('RANGE_START','0',true);
1452 fnd_message.set_token('RANGE_END','365',true);
1453 fnd_message.raise_error;
1454 end if;
1455 end if;
1456 end if;
1457 --
1461 if hr_multi_message.exception_add
1458 hr_utility.set_location('Leaving:'||l_proc, 25);
1459 exception
1460 when app_exception.application_exception then
1462 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PERIOD_DAYS'
1463 ) then
1464 hr_utility.set_location('Leaving:'||l_proc, 30);
1465 raise;
1466 end if;
1467 hr_utility.set_location('Leaving:'||l_proc,40);
1468 end chk_period_days;
1469 --
1470 -- ----------------------------------------------------------------------------
1471 -- |---------------------------< chk_all_assignments >------------------------|
1472 -- ----------------------------------------------------------------------------
1473 -- {Start Of Comments}
1474 --
1475 -- Description:
1476 -- This procedure ensures that all_assignments is valid value and
1477 -- this previous employer is not associated with any assignments.
1478 -- Valid values for all_assignments are 'Y' and 'N'
1479 --
1480 -- Pre Conditions:
1481 -- g_old_rec has been populated with details of the values currently in
1482 -- the database.
1483 --
1484 -- In Arguments:
1485 -- p_previous_employer_id
1486 -- p_object_version_number
1487 -- p_all_assignments
1488 --
1489 -- Post Success:
1490 -- Processing continues if all_assignments value is valid and
1491 -- this previous employer is not mapped to any assignment
1492 --
1493 --
1494 -- Post Failure:
1495 -- An application error is raised if all_assignments value is not valid
1496 -- if there are any assignments mapped to this previous employer
1497 --
1498 -- {End Of Comments}
1499 -- ----------------------------------------------------------------------------
1500 procedure chk_all_assignments
1501 (p_previous_employer_id
1502 in per_previous_employers.previous_employer_id%type
1503 ,p_object_version_number
1504 in per_previous_employers.object_version_number%type
1505 ,p_all_assignments
1506 in per_previous_employers.all_assignments%type) is
1507 cursor csr_pem_assignments is
1508 select previous_job_usage_id
1509 from per_previous_job_usages
1510 where previous_employer_id = p_previous_employer_id;
1511 l_previous_job_usage_id per_previous_job_usages.previous_job_usage_id%type;
1512 --
1513 l_proc varchar2(72) := g_package||'chk_all_assignments';
1514 l_api_updating boolean;
1515 begin
1516 hr_utility.set_location('Entering:'||l_proc, 5);
1517 --
1518 if p_all_assignments is not null then
1519 hr_utility.set_location(l_proc, 10);
1520 l_api_updating := per_pem_shd.api_updating(p_previous_employer_id
1521 => p_previous_employer_id
1522 ,p_object_version_number
1523 => p_object_version_number
1524 );
1525
1526 if ((l_api_updating and
1527 nvl(p_all_assignments,hr_api.g_varchar2)
1528 <> nvl(per_pem_shd.g_old_rec.all_assignments, hr_api.g_varchar2))
1529 or
1530 (not l_api_updating)) then
1531 hr_utility.set_location(l_proc, 15);
1532 if p_all_assignments = 'Y' or p_all_assignments = 'N' then
1533 hr_utility.set_location(l_proc, 20);
1534 if p_all_assignments = 'Y' then
1535 hr_utility.set_location(l_proc, 25);
1536 open csr_pem_assignments;
1537 fetch csr_pem_assignments into l_previous_job_usage_id;
1538 if csr_pem_assignments%found then
1539 hr_utility.set_location(l_proc, 30);
1540 close csr_pem_assignments;
1541 fnd_message.set_name('PER','HR_289546_PEM_ALL_ASG_MOD_NA');
1542 hr_multi_message.add
1543 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.PREVIOUS_EMPLOYER_ID'
1544 );
1545 end if;
1546 if csr_pem_assignments%isopen then
1547 close csr_pem_assignments;
1548 end if;
1549 end if;
1550 else
1551 hr_utility.set_location(l_proc, 35);
1552 fnd_message.set_name('PER','HR_289545_PEM_VALID_ASGMT_FLAG');
1553 hr_multi_message.add
1554 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.ALL_ASSIGNMENTS'
1555 );
1556 end if;
1557 end if;
1558 end if;
1559 --
1560 hr_utility.set_location('Leaving:'||l_proc, 40);
1561 end chk_all_assignments;
1562 --
1563 -- ----------------------------------------------------------------------------
1564 -- |-------------------------< chk_business_group_id >------------------------|
1565 -- ----------------------------------------------------------------------------
1566 -- {Start Of Comments}
1567 --
1568 -- Description:
1569 -- This procedure ensures that business_group_id value is valid.
1570 --
1571 -- Pre Conditions:
1572 -- g_old_rec has been populated with details of the values currently in
1573 -- the database.
1574 --
1575 -- In Arguments:
1576 -- p_business_group_id
1577 -- p_previous_employer_id
1578 -- p_object_version_number
1579 -- p_effective_date
1580 --
1581 -- Post Success:
1582 -- Processing continues if business_group_id is valid and if updating,
1583 -- old_rec.business_group_id is null
1584 --
1585 -- Post Failure:
1586 -- An application error is raised
1587 -- if updating and old_rec.business_group_id is not null, or
1588 -- business_group_id is not valid.
1589 --
1593 (p_business_group_id
1590 -- {End Of Comments}
1591 -- ----------------------------------------------------------------------------
1592 procedure chk_business_group_id
1594 in per_previous_employers.business_group_id%type
1595 ,p_previous_employer_id
1596 in per_previous_employers.previous_employer_id%type
1597 ,p_object_version_number
1598 in per_previous_employers.object_version_number%type
1599 ,p_effective_date in date) is
1600 --
1601 l_proc varchar2(72) := g_package||'chk_business_group_id';
1602 l_api_updating boolean;
1603 --
1604 begin
1605 hr_utility.set_location('Entering:'||l_proc, 5);
1606 if p_business_group_id is not null then
1607 hr_utility.set_location(l_proc, 10);
1608 --
1609 --validate business_group_id
1610 --
1611 hr_api.validate_bus_grp_id(p_business_group_id);
1612 --
1613 end if;
1614 --
1615 --
1616 --update only if null
1617 --
1618 l_api_updating := per_pem_shd.api_updating
1619 (p_previous_employer_id => p_previous_employer_id
1620 ,p_object_version_number => p_object_version_number );
1621 if (l_api_updating
1622 and per_pem_shd.g_old_rec.business_group_id is not null
1623 and per_pem_shd.g_old_rec.business_group_id <> p_business_group_id ) then
1624 --
1625 hr_utility.set_message(800, 'HR_289947_INV_UPD_BG_ID');
1626 hr_utility.raise_error;
1627 --
1628 end if;
1629 --
1630 hr_utility.set_location('Leaving:'||l_proc, 40);
1631 exception
1632 when app_exception.application_exception then
1633 if hr_multi_message.exception_add
1634 (p_associated_column1 => 'PER_PREVIOUS_EMPLOYERS.BUSINESS_GROUP_ID'
1635 ) then
1636 hr_utility.set_location('Leaving:'||l_proc, 50);
1637 raise;
1638 end if;
1639 hr_utility.set_location('Leaving:'||l_proc,60);
1640 end chk_business_group_id;
1641 --
1642 -- ----------------------------------------------------------------------------
1643 -- |---------------------------< insert_validate >----------------------------|
1644 -- ----------------------------------------------------------------------------
1645 Procedure insert_validate
1646 (p_effective_date in date
1647 ,p_rec in per_pem_shd.g_rec_type
1648 ) is
1649 --
1650 l_proc varchar2(72) := g_package||'insert_validate';
1651 --
1652 Begin
1653 hr_utility.set_location('Entering:'||l_proc, 5);
1654 --
1655 --Validate Important Attributes
1656 --
1657 hr_utility.set_location(l_proc, 10);
1658 hr_api.mandatory_arg_error
1659 (p_api_name => l_proc
1660 ,p_argument => 'EFFECTIVE_DATE'
1661 ,p_argument_value => p_effective_date
1662 );
1663 -- Call all supporting business operations
1664 hr_utility.set_location(l_proc, 15);
1665 --
1666 if p_rec.party_id is null and p_rec.business_group_id is not null then
1667 hr_api.validate_bus_grp_id
1668 (p_business_group_id => p_rec.business_group_id
1669 ,p_associated_column1 =>per_pem_shd.g_tab_nam || '.BUSINESS_GROUP_ID'
1670 ); -- Validate Bus Grp
1671 end if;
1672 --After validating the set of important attributes,
1673 --if multiple message detection is enabled and atleast
1674 --one error has been found then abort further validation.
1675 --
1676 hr_multi_message.end_validation_set;
1677 --
1678 --validate dependent attributes
1679 --
1680 hr_utility.set_location(l_proc, 18);
1681 chk_business_group_id(p_business_group_id => p_rec.business_group_id
1682 ,p_previous_employer_id => p_rec.previous_employer_id
1683 ,p_object_version_number => p_rec.object_version_number
1684 ,p_effective_date => p_effective_date);
1685 --
1686 hr_utility.set_location(l_proc, 20);
1687 chk_person_id(p_person_id => p_rec.person_id
1688 ,p_effective_date => p_effective_date
1689 ,p_previous_employer_id => p_rec.previous_employer_id
1690 ,p_object_version_number => p_rec.object_version_number);
1691 --
1692 hr_utility.set_location(l_proc, 25);
1693 chk_party_id(p_party_id => p_rec.party_id
1694 ,p_previous_employer_id => p_rec.previous_employer_id
1695 ,p_object_version_number => p_rec.object_version_number);
1696 --
1697 hr_utility.set_location(l_proc, 30);
1698 chk_employer_country(p_previous_employer_id => p_rec.previous_employer_id
1699 ,p_object_version_number => p_rec.object_version_number
1700 ,p_employer_country => p_rec.employer_country);
1701 --
1702 hr_utility.set_location(l_proc, 35);
1703 chk_employer_type(p_previous_employer_id => p_rec.previous_employer_id
1704 ,p_object_version_number => p_rec.object_version_number
1705 ,p_employer_type => p_rec.employer_type
1706 ,p_effective_date => p_effective_date);
1707 --
1708 hr_utility.set_location(l_proc, 40);
1709 chk_employer_subtype(p_previous_employer_id => p_rec.previous_employer_id
1710 ,p_object_version_number => p_rec.object_version_number
1714 --
1711 ,p_employer_type => p_rec.employer_type
1712 ,p_employer_subtype => p_rec.employer_subtype
1713 ,p_effective_date => p_effective_date);
1715 hr_utility.set_location(l_proc, 50);
1716 chk_start_end_dates(p_previous_employer_id => p_rec.previous_employer_id
1717 ,p_object_version_number => p_rec.object_version_number
1718 ,p_start_date => p_rec.start_date
1719 ,p_end_date => p_rec.end_date
1720 ,p_effective_date => p_effective_date); -- bug 7112425
1721 --
1722 hr_utility.set_location(l_proc, 55);
1723 chk_period_years(p_period_years
1724 => p_rec.period_years
1725 ,p_previous_employer_id
1726 => p_rec.previous_employer_id
1727 ,p_object_version_number
1728 => p_rec.object_version_number);
1729 --
1730 hr_utility.set_location(l_proc, 60);
1731 chk_period_months(p_period_months
1732 => p_rec.period_months
1733 ,p_previous_employer_id
1734 => p_rec.previous_employer_id
1735 ,p_object_version_number
1736 => p_rec.object_version_number);
1737 --
1738 hr_utility.set_location(l_proc, 65);
1739 chk_period_days(p_period_days
1740 => p_rec.period_days
1741 ,p_previous_employer_id
1742 => p_rec.previous_employer_id
1743 ,p_object_version_number
1744 => p_rec.object_version_number);
1745 --
1746 hr_utility.set_location(l_proc, 70);
1747 chk_all_assignments(p_previous_employer_id => p_rec.previous_employer_id
1748 ,p_object_version_number => p_rec.object_version_number
1749 ,p_all_assignments => p_rec.all_assignments);
1750 --
1751 hr_utility.set_location(l_proc, 75);
1752 per_pem_bus.chk_ddf(p_rec);
1753 --
1754 hr_utility.set_location(l_proc, 80);
1755 per_pem_bus.chk_df(p_rec);
1756 --
1757 hr_utility.set_location(' Leaving:'||l_proc, 85);
1758 End insert_validate;
1759 --
1760 -- ----------------------------------------------------------------------------
1761 -- |---------------------------< update_validate >----------------------------|
1762 -- ----------------------------------------------------------------------------
1763 Procedure update_validate
1764 (p_effective_date in date
1765 ,p_rec in per_pem_shd.g_rec_type
1766 ) is
1767 --
1768 l_proc varchar2(72) := g_package||'update_validate';
1769 --
1770 Begin
1771 hr_utility.set_location('Entering:'||l_proc, 5);
1772 --
1773 -- Call all supporting business operations
1774 --
1775 hr_utility.set_location(l_proc, 10);
1776 hr_api.mandatory_arg_error
1777 (p_api_name => l_proc
1778 ,p_argument => 'EFFECTIVE_DATE'
1779 ,p_argument_value => p_effective_date
1780 );
1781 --
1782 chk_non_updateable_args
1783 (p_effective_date => p_effective_date
1784 ,p_rec => p_rec
1785 );
1786 --
1787 hr_utility.set_location(l_proc, 15);
1788 if p_rec.party_id is null and p_rec.business_group_id is not null then
1789 hr_api.validate_bus_grp_id
1790 (p_business_group_id => p_rec.business_group_id
1791 ,p_associated_column1 =>per_pem_shd.g_tab_nam || '.BUSINESS_GROUP_ID'
1792 ); -- Validate Bus Grp
1793 end if;
1794 --
1795 --After validating the set of important attributes,
1796 --if multiple message detection is enabled and atleast
1797 --one error has been found then abort further validation.
1798 --
1799 hr_multi_message.end_validation_set;
1800 --
1801 --validate dependent attributes
1802 --
1803 hr_utility.set_location(l_proc, 18);
1804 chk_business_group_id(p_business_group_id => p_rec.business_group_id
1805 ,p_previous_employer_id => p_rec.previous_employer_id
1806 ,p_object_version_number => p_rec.object_version_number
1807 ,p_effective_date => p_effective_date);
1808 --
1809 hr_utility.set_location(l_proc, 20);
1810 chk_employer_country(p_previous_employer_id => p_rec.previous_employer_id
1811 ,p_object_version_number => p_rec.object_version_number
1812 ,p_employer_country => p_rec.employer_country);
1813 --
1814 hr_utility.set_location(l_proc, 25);
1815 chk_employer_type(p_previous_employer_id => p_rec.previous_employer_id
1816 ,p_object_version_number => p_rec.object_version_number
1817 ,p_employer_type => p_rec.employer_type
1818 ,p_effective_date => p_effective_date);
1819 --
1820 hr_utility.set_location(l_proc, 30);
1821 chk_employer_subtype(p_previous_employer_id => p_rec.previous_employer_id
1822 ,p_object_version_number => p_rec.object_version_number
1823 ,p_employer_type => p_rec.employer_type
1824 ,p_employer_subtype => p_rec.employer_subtype
1825 ,p_effective_date => p_effective_date);
1826 --
1827 hr_utility.set_location(l_proc, 40);
1828 chk_start_end_dates(p_previous_employer_id => p_rec.previous_employer_id
1829 ,p_object_version_number => p_rec.object_version_number
1830 ,p_start_date => p_rec.start_date
1831 ,p_end_date => p_rec.end_date
1832 ,p_effective_date => p_effective_date); -- bug 7112425
1833 --
1834 hr_utility.set_location(l_proc, 45);
1835 chk_period_years(p_period_years
1836 => p_rec.period_years
1837 ,p_previous_employer_id
1838 => p_rec.previous_employer_id
1839 ,p_object_version_number
1840 => p_rec.object_version_number);
1841 --
1842 hr_utility.set_location(l_proc, 50);
1843 chk_period_months(p_period_months
1844 => p_rec.period_months
1845 ,p_previous_employer_id
1846 => p_rec.previous_employer_id
1847 ,p_object_version_number
1848 => p_rec.object_version_number);
1849 --
1850 hr_utility.set_location(l_proc, 55);
1851 chk_period_days(p_period_days
1852 => p_rec.period_days
1853 ,p_previous_employer_id
1854 => p_rec.previous_employer_id
1855 ,p_object_version_number
1856 => p_rec.object_version_number);
1857 --
1858 hr_utility.set_location(l_proc, 60);
1859 chk_all_assignments(p_previous_employer_id => p_rec.previous_employer_id
1860 ,p_object_version_number => p_rec.object_version_number
1861 ,p_all_assignments => p_rec.all_assignments);
1862 --
1863 hr_utility.set_location(l_proc, 65);
1864 per_pem_bus.chk_ddf(p_rec);
1865 --
1866 hr_utility.set_location(l_proc, 70);
1867 per_pem_bus.chk_df(p_rec);
1868 --
1869 hr_utility.set_location(' Leaving:'||l_proc, 75);
1870 End update_validate;
1871 --
1872 -- ----------------------------------------------------------------------------
1873 -- |---------------------------< delete_validate >----------------------------|
1874 -- ----------------------------------------------------------------------------
1875 Procedure delete_validate
1876 (p_rec in per_pem_shd.g_rec_type
1877 ) is
1878 --
1879 l_proc varchar2(72) := g_package||'delete_validate';
1880 --
1881 Begin
1882 hr_utility.set_location('Entering:'||l_proc, 5);
1883 --
1884 -- Call all supporting business operations
1885 --
1886 hr_utility.set_location(' Leaving:'||l_proc, 10);
1887 End delete_validate;
1888 --
1889 end per_pem_bus;