[Home] [Help]
PACKAGE BODY: APPS.PER_PJU_BUS
Source
1 Package Body per_pju_bus as
2 /* $Header: pepjurhi.pkb 115.14 2002/12/04 10:55:38 eumenyio ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_pju_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_job_usage_id number default null;
15 --
16 -- ----------------------------------------------------------------------------
17 -- |----------------------< chk_previous_employer_id >------------------------|
18 -- ----------------------------------------------------------------------------
19 -- {Start Of Comments}
20 --
21 -- Description:
22 -- This procedure ensures that previous_employer_id is valid.
23 --
24 -- Pre Conditions:
25 -- g_old_rec has been populated with details of the values currently in
26 -- the database.
27 --
28 -- In Arguments:
29 -- p_previous_employer_id
30 -- p_previous_job_usage_id
31 -- p_object_version_number
32 --
33 -- Post Success:
34 -- Processing continues if previous_employer_id is valid
35 --
36 --
37 -- Post Failure:
38 -- An application error is raised if previous_employer_id is not valid.
39 --
40 -- {End Of Comments}
41 -- ----------------------------------------------------------------------------
42 procedure chk_previous_employer_id
43 (p_previous_employer_id
44 in per_previous_employers.previous_employer_id%type
45 ,p_previous_job_usage_id
46 in per_previous_job_usages.previous_job_usage_id%type
47 ,p_object_version_number
48 in per_previous_job_usages.object_version_number%type) is
49 cursor csr_previous_employer_id is
50 select previous_employer_id
51 from per_previous_employers
52 where previous_employer_id = p_previous_employer_id
53 and all_assignments = 'N';
54 l_previous_employer_id per_previous_employers.previous_employer_id%type;
55 --
56 l_proc varchar2(72) := g_package||'chk_previous_employer_id';
57 l_api_updating boolean;
58 begin
59 hr_utility.set_location('Entering:'||l_proc, 5);
60 --
61 hr_utility.set_location(l_proc, 10);
62 if p_previous_employer_id is not null then
63 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
64 => p_previous_job_usage_id
65 ,p_object_version_number
66 => p_object_version_number
67 );
68 if ((l_api_updating
69 and nvl(per_pju_shd.g_old_rec.previous_employer_id, hr_api.g_number)
70 <> nvl(p_previous_employer_id,hr_api.g_number))
71 or
72 (not l_api_updating)) then
73 hr_utility.set_location(l_proc, 15);
74 open csr_previous_employer_id;
75 fetch csr_previous_employer_id into l_previous_employer_id;
76 if csr_previous_employer_id%notfound then
77 hr_utility.set_location(l_proc, 20);
78 close csr_previous_employer_id;
79 fnd_message.set_name('PER','HR_289537_PJO_VALID_PR_EMPR_ID');
80 fnd_message.raise_error;
81 end if;
82 if csr_previous_employer_id%isopen then
83 close csr_previous_employer_id;
84 end if;
85 end if;
86 end if;
87 --
88 hr_utility.set_location('Leaving:'||l_proc, 25);
89 exception
90 when others then
91 raise;
92 end chk_previous_employer_id;
93 --
94 -- ----------------------------------------------------------------------------
95 -- |---------------------------< chk_previous_job_id >------------------------|
96 -- ----------------------------------------------------------------------------
97 -- {Start Of Comments}
98 --
99 -- Description:
100 -- This procedure ensures that previous_job_id is valid.
101 --
102 -- Pre Conditions:
103 -- g_old_rec has been populated with details of the values currently in
104 -- the database.
105 --
106 -- In Arguments:
107 -- p_previous_job_id
108 -- p_previous_job_usage_id
109 -- p_object_version_number
110 --
111 -- Post Success:
112 -- Processing continues if previous_job_id is valid with all assignments
113 -- is set to "N"
114 --
115 --
116 -- Post Failure:
117 -- An application error is raised if previous_job_id is not valid.
118 --
119 -- {End Of Comments}
120 -- ----------------------------------------------------------------------------
121 procedure chk_previous_job_id
122 (p_previous_job_id
123 in per_previous_jobs.previous_job_id%type
124 ,p_previous_job_usage_id
125 in per_previous_job_usages.previous_job_usage_id%type
126 ,p_object_version_number
127 in per_previous_job_usages.object_version_number%type) is
128 cursor csr_previous_job_id is
129 select previous_job_id
130 from per_previous_jobs
131 where previous_job_id = p_previous_job_id
132 and all_assignments = 'N';
133 l_previous_job_id per_previous_jobs.previous_job_id%type;
134 --
135 l_proc varchar2(72) := g_package||'chk_previous_job_id';
136 l_api_updating boolean;
137 begin
138 hr_utility.set_location('Entering:'||l_proc, 5);
139 --
140 hr_utility.set_location(l_proc, 10);
141 if p_previous_job_id is not null then
142 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
143 => p_previous_job_usage_id
144 ,p_object_version_number
145 => p_object_version_number
146 );
147 if ((l_api_updating
148 and nvl(per_pju_shd.g_old_rec.previous_job_id, hr_api.g_number)
149 <> nvl(p_previous_job_id,hr_api.g_number))
150 or
151 (not l_api_updating)) then
152 hr_utility.set_location(l_proc, 15);
153 open csr_previous_job_id;
154 fetch csr_previous_job_id into l_previous_job_id;
155 if csr_previous_job_id%notfound then
156 hr_utility.set_location(l_proc, 20);
157 close csr_previous_job_id;
158 fnd_message.set_name('PER','HR_289540_PJI_INV_PREV_JOB_ID');
159 fnd_message.raise_error;
160 end if;
161 if csr_previous_job_id%isopen then
162 close csr_previous_job_id;
163 end if;
164 end if;
165 end if;
166 --
167 hr_utility.set_location('Leaving:'||l_proc, 25);
168 exception
169 when others then
170 raise;
171 end chk_previous_job_id;
172 --
173 -- ----------------------------------------------------------------------------
174 -- |---------------------------< chk_assignment_id >--------------------------|
175 -- ----------------------------------------------------------------------------
176 -- {Start Of Comments}
177 --
178 -- Description:
179 -- This procedure ensures that assignment_id is valid
180 --
181 -- Pre Conditions:
182 -- g_old_rec has been populated with details of the values currently in
183 -- the database.
184 --
185 -- In Arguments:
186 -- p_previous_job_usage_id
187 -- p_object_version_number
188 -- p_all_assignments
189 --
190 -- Post Success:
191 -- Processing continues if assignment_id is valid for the current period.
192 --
193 --
194 -- Post Failure:
195 -- An application error is raised if assignment_id is not valid for the
196 -- current period
197 --
198 -- {End Of Comments}
199 -- ----------------------------------------------------------------------------
200 procedure chk_assignment_id
201 (p_previous_job_usage_id
202 in per_previous_job_usages.previous_job_usage_id%type
203 ,p_object_version_number
204 in per_previous_job_usages.object_version_number%type
205 ,p_assignment_id
206 in per_previous_job_usages.assignment_id%type) is
207 cursor csr_assignment_id is
208 select assignment_id
209 from per_all_assignments_f
210 where assignment_id = p_assignment_id;
211 l_assignment_id per_previous_job_usages.assignment_id%type;
212 --
213 l_proc varchar2(72) := g_package||'chk_assignment_id';
214 l_api_updating boolean;
215 begin
216 hr_utility.set_location('Entering:'||l_proc, 5);
217 --
218 hr_utility.set_location(l_proc, 10);
219 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
220 => p_previous_job_usage_id
221 ,p_object_version_number
222 => p_object_version_number
223 );
224 if ((l_api_updating
225 and nvl(per_pju_shd.g_old_rec.assignment_id, hr_api.g_number)
226 <> nvl(p_assignment_id,hr_api.g_number))
227 or
228 (not l_api_updating)) then
229 hr_utility.set_location(l_proc, 15);
230 -- Check for valid Assignment ID.
231 open csr_assignment_id;
232 fetch csr_assignment_id into l_assignment_id;
233 if csr_assignment_id%notfound then
234 hr_utility.set_location(l_proc, 20);
235 close csr_assignment_id;
236 fnd_message.set_name('PER','HR_289541_PJU_INV_ASG_ID');
237 fnd_message.raise_error;
238 end if;
239 if csr_assignment_id%isopen then
240 close csr_assignment_id;
241 end if;
242 end if;
243 --
244 hr_utility.set_location('Leaving:'||l_proc, 30);
245 exception
246 when others then
247 raise;
248 end chk_assignment_id;
249 --
250 -- ----------------------------------------------------------------------------
251 -- |---------------------------< chk_valid_job_dates>-------------------------|
252 -- ----------------------------------------------------------------------------
253 -- {Start Of Comments}
254 --
255 -- Description:
256 -- This procedure ensures that end_date is greater than start_date
257 --
258 -- Pre Conditions:
259 -- g_old_rec has been populated with details of the values currently in
260 -- the database.
261 --
262 -- In Arguments:
263 -- p_previous_job_usage_id
264 -- p_object_version_number
265 -- p_start_date
266 -- p_end_date
267 --
268 -- Post Success:
269 -- Processing continues if end_date is greater than start_date
270 --
271 --
272 -- Post Failure:
273 -- An application error is raised if start_date is greater than end_date
274 --
275 -- {End Of Comments}
276 -- ----------------------------------------------------------------------------
277 procedure chk_valid_job_dates
278 (p_previous_job_usage_id
279 in per_previous_job_usages.previous_job_usage_id%type
280 ,p_object_version_number
281 in per_previous_job_usages.object_version_number%type
282 ,p_start_date
283 in per_previous_job_usages.start_date%type
284 ,p_end_date
285 in per_previous_job_usages.end_date%type) is
286 l_proc varchar2(72) := g_package||'chk_valid_job_dates';
287 l_api_updating boolean;
288 begin
289 hr_utility.set_location('Entering:'||l_proc, 5);
290 --
291 if p_start_date is not null and p_end_date is not null then
292 hr_utility.set_location(l_proc, 10);
293 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
294 => p_previous_job_usage_id
295 ,p_object_version_number
296 => p_object_version_number
297 );
298 if ((l_api_updating
299 and (nvl(per_pju_shd.g_old_rec.start_date, hr_api.g_sot)
300 <> nvl(p_start_date,hr_api.g_sot)
301 or
302 nvl(per_pju_shd.g_old_rec.end_date, hr_api.g_eot)
303 <> nvl(p_end_date,hr_api.g_eot))
304 )
305 or
306 (not l_api_updating)) then
307 hr_utility.set_location(l_proc, 15);
308 if nvl(p_start_date,hr_api.g_sot) > nvl(p_end_date,hr_api.g_eot) then
309 hr_utility.set_location(l_proc, 20);
310 fnd_message.set_name('PER','HR_289530_PEM_STRT_END_DATES');
311 fnd_message.set_token('START_DATE',TO_CHAR(p_start_date,'DD-MON-YYYY'),true);
312 fnd_message.set_token('END_DATE',TO_CHAR(p_end_date,'DD-MON-YYYY'),true);
313 fnd_message.raise_error;
314 end if;
315 end if;
316 end if;
317 --
318 hr_utility.set_location('Leaving:'||l_proc, 25);
319 exception
320 when others then
321 raise;
322 end chk_valid_job_dates;
323 --
324 -- ----------------------------------------------------------------------------
325 -- |---------------------------< chk_period_years >---------------------------|
326 -- ----------------------------------------------------------------------------
327 -- {Start Of Comments}
328 --
329 -- Description:
330 -- This procedure ensures that period_years is with in the range 0 and 99.
331 --
332 -- Pre Conditions:
333 -- g_old_rec has been populated with details of the values currently in
334 -- the database.
335 --
336 -- In Arguments:
337 -- p_period_years
338 -- p_previous_job_usage_id
339 -- p_object_version_number
340 --
341 -- Post Success:
342 -- Processing continues if period_years is out of 0 and 99 range.
343 --
344 --
345 -- Post Failure:
346 -- An application error is raised if period_years range is out of 0 and 99.
347 --
348 -- {End Of Comments}
349 -- ----------------------------------------------------------------------------
350 procedure chk_period_years
351 (p_period_years
352 in per_previous_job_usages.period_years%type
353 ,p_previous_job_usage_id
354 in per_previous_job_usages.previous_job_usage_id%type
355 ,p_object_version_number
356 in per_previous_job_usages.object_version_number%type) is
357 l_proc varchar2(72) := g_package||'chk_period_years';
358 l_api_updating boolean;
359 begin
360 hr_utility.set_location('Entering:'||l_proc, 5);
361 --
362 if p_period_years is not null then
363 hr_utility.set_location(l_proc, 10);
364 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
365 => p_previous_job_usage_id
366 ,p_object_version_number
367 => p_object_version_number);
368 hr_utility.set_location(l_proc, 15);
369 if ((l_api_updating and
370 ( nvl(p_period_years,hr_api.g_number)
371 <> nvl(per_pju_shd.g_old_rec.period_years,hr_api.g_number)
372 )
373 ) or
374 (not l_api_updating)) then
375 hr_utility.set_location(l_proc, 20);
376 if p_period_years not between 0 and 99 then
377 hr_utility.set_location(l_proc, 25);
378 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
379 fnd_message.set_token('RANGE_START',0,true);
380 fnd_message.set_token('RANGE_END',99,true);
381 fnd_message.raise_error;
382 end if;
383 end if;
384 end if;
385 --
386 hr_utility.set_location('Leaving:'||l_proc, 30);
387 exception
388 when others then
389 raise;
390 end chk_period_years;
391 --
392 -- ----------------------------------------------------------------------------
393 -- |---------------------------< chk_period_months >--------------------------|
397 -- Description:
394 -- ----------------------------------------------------------------------------
395 -- {Start Of Comments}
396 --
398 -- This procedure ensures that period_months is with in the range 0 and 11.
399 --
400 -- Pre Conditions:
401 -- g_old_rec has been populated with details of the values currently in
402 -- the database.
403 --
404 -- In Arguments:
405 -- p_period_months
406 -- p_previous_job_usage_id
407 -- p_object_version_number
408 --
409 -- Post Success:
410 -- Processing continues if period_months is out of 0 and 11 range.
411 --
412 --
413 -- Post Failure:
414 -- An application error is raised if period_months range is out of 0 and 11.
415 --
416 -- {End Of Comments}
417 -- ----------------------------------------------------------------------------
418 procedure chk_period_months
419 (p_period_months
420 in per_previous_job_usages.period_months%type
421 ,p_previous_job_usage_id
422 in per_previous_job_usages.previous_job_usage_id%type
423 ,p_object_version_number
424 in per_previous_job_usages.object_version_number%type) is
425 l_proc varchar2(72) := g_package||'chk_period_months';
426 l_api_updating boolean;
427 begin
428 hr_utility.set_location('Entering:'||l_proc, 5);
429 --
430 if p_period_months is not null then
431 hr_utility.set_location(l_proc, 10);
432 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
433 => p_previous_job_usage_id
434 ,p_object_version_number
435 => p_object_version_number);
436 hr_utility.set_location(l_proc, 15);
437 if ((l_api_updating and
438 ( nvl(p_period_months ,hr_api.g_number)
439 <> nvl(per_pju_shd.g_old_rec.period_months ,hr_api.g_number)
440 )
441 ) or
442 (not l_api_updating)) then
443 hr_utility.set_location(l_proc, 20);
444 if p_period_months not between 0 and 11 then
445 hr_utility.set_location(l_proc, 25);
446 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
447 fnd_message.set_token('RANGE_START',0,true);
448 fnd_message.set_token('RANGE_END',11,true);
449 fnd_message.raise_error;
450 end if;
451 end if;
452 end if;
453 --
454 hr_utility.set_location('Leaving:'||l_proc, 30);
455 exception
456 when others then
457 raise;
458 end chk_period_months;
459 --
460 -- ----------------------------------------------------------------------------
461 -- |---------------------------< chk_period_days >----------------------------|
462 -- ----------------------------------------------------------------------------
463 -- {Start Of Comments}
464 --
465 -- Description:
466 -- This procedure ensures that period_days is with in the range 0 and 365.
467 --
468 -- Pre Conditions:
469 -- g_old_rec has been populated with details of the values currently in
470 -- the database.
471 --
472 -- In Arguments:
473 -- p_period_days
474 -- p_previous_job_usage_id
475 -- p_object_version_number
476 --
477 -- Post Success:
478 -- Processing continues if period_days is out of 0 and 365 range.
479 --
480 --
481 -- Post Failure:
482 -- An application error is raised if period_days range is out of 0 and 365.
483 --
484 -- {End Of Comments}
485 -- ----------------------------------------------------------------------------
486 procedure chk_period_days
487 (p_period_days
488 in per_previous_job_usages.period_days%type
489 ,p_previous_job_usage_id
490 in per_previous_job_usages.previous_job_usage_id%type
491 ,p_object_version_number
492 in per_previous_job_usages.object_version_number%type) is
493 l_proc varchar2(72) := g_package||'chk_period_days';
494 l_api_updating boolean;
495 begin
496 hr_utility.set_location('Entering:'||l_proc, 5);
497 --
498 if p_period_days is not null then
499 hr_utility.set_location(l_proc, 10);
500 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
501 => p_previous_job_usage_id
502 ,p_object_version_number
503 => p_object_version_number);
504 hr_utility.set_location(l_proc, 15);
505 if ((l_api_updating and
506 ( nvl(p_period_days ,hr_api.g_number)
507 <> nvl(per_pju_shd.g_old_rec.period_days ,hr_api.g_number)
508 )
509 ) or
510 (not l_api_updating)) then
511 hr_utility.set_location(l_proc, 20);
512 if p_period_days not between 0 and 365 then
513 hr_utility.set_location(l_proc, 25);
514 fnd_message.set_name('PER','HR_289534_PEM_VALID_PRD_RANGE');
515 fnd_message.set_token('RANGE_START',0,true);
516 fnd_message.set_token('RANGE_END',365,true);
517 fnd_message.raise_error;
518 end if;
519 end if;
520 end if;
521 --
522 hr_utility.set_location('Leaving:'||l_proc, 30);
523 exception
524 when others then
525 raise;
526 end chk_period_days;
527 --
531 -- {Start Of Comments}
528 -- ----------------------------------------------------------------------------
529 -- |---------------------------< chk_pju_start_end_dates >--------------------|
530 -- ----------------------------------------------------------------------------
532 --
533 -- Description:
534 -- This procedure ensures that start_date and end_date is with in the range
535 -- of start_date and end_date of previous_employer with which the assignment
536 -- is mapped to.
537 --
538 -- Pre Conditions:
539 -- g_old_rec has been populated with details of the values currently in
540 -- the database.
541 --
542 -- In Arguments:
543 -- p_previous_job_usage_id
544 -- p_object_version_number
545 -- p_previous_employer_id
546 -- p_start_date
547 -- p_end_date
548 --
549 -- Post Success:
550 -- Processing continues if start_date and end_date are with in start_date
551 -- and end_date of previous_employer.
552 --
553 --
554 -- Post Failure:
555 -- An application error is raised if start_date or end_date is out of
556 -- the range of previous_employer mapped to this assignment.
557 --
558 -- {End Of Comments}
559 -- ----------------------------------------------------------------------------
560 procedure chk_pju_start_end_dates
561 (p_previous_job_usage_id
562 in per_previous_job_usages.previous_job_usage_id%type
563 ,p_object_version_number
564 in per_previous_job_usages.object_version_number%type
565 ,p_previous_employer_id
566 in per_previous_job_usages.previous_employer_id%type
567 ,p_start_date
568 in per_previous_job_usages.start_date%type
569 ,p_end_date
570 in per_previous_job_usages.end_date%type) is
571 cursor csr_pem_start_end_dates is
572 select previous_employer_id
573 from per_previous_employers
574 where previous_employer_id = p_previous_employer_id
575 and ( p_start_date not between nvl(start_date,hr_api.g_sot)
576 and nvl(end_date,hr_api.g_eot)
577 or p_end_date not between nvl(start_date,hr_api.g_sot)
578 and nvl(end_date,hr_api.g_eot));
579 l_previous_employer_id per_previous_employers.previous_employer_id%type;
580 --
581 l_api_updating boolean;
582 l_proc varchar2(72) := g_package||'chk_pju_start_end_dates';
583 begin
584 hr_utility.set_location('Entering:'||l_proc, 5);
585 --
586 if p_start_date is not null or p_end_date is not null then
587 hr_utility.set_location(l_proc, 10);
588 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
589 => p_previous_job_usage_id
590 ,p_object_version_number
591 => p_object_version_number
592 );
593 if ((l_api_updating
594 and (nvl(per_pju_shd.g_old_rec.start_date, hr_api.g_sot)
595 <> nvl(p_start_date,hr_api.g_sot)
596 or
597 nvl(per_pju_shd.g_old_rec.end_date, hr_api.g_eot)
598 <> nvl(p_end_date,hr_api.g_eot))
599 )
600 or
601 (not l_api_updating)) then
602 hr_utility.set_location(l_proc, 15);
603 open csr_pem_start_end_dates;
604 fetch csr_pem_start_end_dates into l_previous_employer_id;
605 if csr_pem_start_end_dates%found then
606 hr_utility.set_location(l_proc, 20);
607 close csr_pem_start_end_dates;
608 fnd_message.set_name('PER','HR_289550_PJU_DATES');
609 fnd_message.raise_error;
610 end if;
611 if csr_pem_start_end_dates%isopen then
612 close csr_pem_start_end_dates;
613 end if;
614 end if;
615 end if;
616 --
617 hr_utility.set_location('Leaving:'||l_proc, 25);
618 exception
619 when others then
620 raise;
621 end chk_pju_start_end_dates;
622 --
623 -- ----------------------------------------------------------------------------
624 -- |---------------------------< chk_assignment_job >-------------------------|
625 -- ----------------------------------------------------------------------------
626 -- {Start Of Comments}
627 --
628 -- Description:
629 -- This procedure ensures that the assignment and job mappings are not
630 -- duplicated.
631 --
632 -- Pre Conditions:
633 -- g_old_rec has been populated with details of the values currently in
634 -- the database.
635 --
636 -- In Arguments:
637 -- p_previous_job_usage_id
638 -- p_object_version_number
639 -- p_previous_job_id
640 -- p_assignment_id
641 --
642 -- Post Success:
643 -- Processing continues if there is no record already existing with the
644 -- same assignment_id and previous_job_id
645 --
646 --
647 -- Post Failure:
648 -- An application error is raised if assignment_id and previous_job_id
649 -- is already existing in the table.
650 --
651 -- {End Of Comments}
652 -- ----------------------------------------------------------------------------
653 procedure chk_assignment_job
654 (p_previous_job_usage_id
655 in per_previous_job_usages.previous_employer_id%type
659 in per_previous_job_usages.previous_job_id%type
656 ,p_object_version_number
657 in per_previous_job_usages.object_version_number%type
658 ,p_previous_job_id
660 ,p_assignment_id
661 in per_previous_job_usages.assignment_id%type
662 ) is
663 -- Declare local cursors.
664 cursor csr_asg_job is
665 select previous_job_usage_id
666 from per_previous_job_usages
667 where assignment_id = p_assignment_id
668 and previous_job_id = p_previous_job_id;
669 -- Declare local variables
670 l_previous_job_usage_id per_previous_job_usages.previous_job_usage_id%type;
671 l_proc varchar2(72) := g_package||'chk_assignment_job';
672 l_api_updating boolean;
673 begin
674 hr_utility.set_location('Entering:'||l_proc, 5);
675 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
676 => p_previous_job_usage_id
677 ,p_object_version_number
678 => p_object_version_number
679 );
680 if ((l_api_updating
681 and (nvl(per_pju_shd.g_old_rec.assignment_id, hr_api.g_number)
682 <> nvl(p_assignment_id,hr_api.g_number)
683 or nvl(per_pju_shd.g_old_rec.previous_job_id, hr_api.g_number)
684 <> nvl(p_previous_job_id, hr_api.g_number)
685 )
686 )
687 or
688 (not l_api_updating)) then
689 hr_utility.set_location(l_proc, 15);
690 open csr_asg_job;
691 fetch csr_asg_job into l_previous_job_usage_id;
692 if not csr_asg_job%notfound then
693 hr_utility.set_location(l_proc, 10);
694 close csr_asg_job;
695 fnd_message.set_name('PER','HR_289551_PJU_ASG_JOB_DUP');
696 fnd_message.raise_error;
697 end if;
698 if csr_asg_job%isopen then
699 hr_utility.set_location(l_proc, 15);
700 close csr_asg_job;
701 end if;
702 end if;
703 --
704 hr_utility.set_location(l_proc, 20);
705 --
706 exception
707 when others then
708 raise;
709 end chk_assignment_job;
710 --
711 -- ----------------------------------------------------------------------------
712 -- |---------------------------< get_previous_job_dates >---------------------|
713 -- ----------------------------------------------------------------------------
714 -- {Start Of Comments}
715 --
716 -- Description:
717 -- This procedure fetches the default values for the per_previous_job_usages
718 -- table. The default values are start_date,end_date,period_years,
719 -- period_months,period_days.
720 --
721 -- In Arguments:
722 -- p_previous_employer_id
723 -- p_previous_job_id
724 -- p_start_date
725 -- p_end_date
726 -- p_period_years
727 -- p_period_months
728 -- p_period_days
729 --
730 -- Post Success:
731 -- The default values are set into the out parameters.
732 --
733 --
734 -- Post Failure:
735 -- An application error is raised if previous_job_id is not existing
736 -- in per_previous_jobs
737 --
738 -- {End Of Comments}
739 -- ----------------------------------------------------------------------------
740 procedure get_previous_job_dates
741 (p_previous_employer_id
742 in per_previous_job_usages.previous_employer_id%type
743 ,p_previous_job_id
744 in per_previous_job_usages.previous_job_id%type
745 ,p_start_date
746 out nocopy per_previous_job_usages.start_date%type
747 ,p_end_date
748 out nocopy per_previous_job_usages.end_date%type
749 ,p_period_years
750 out nocopy per_previous_job_usages.period_years%type
751 ,p_period_months
752 out nocopy per_previous_job_usages.period_months%type
753 ,p_period_days
754 out nocopy per_previous_job_usages.period_days%type
755 ) is
756 -- Declare local variables
757 l_proc varchar2(72) := g_package||'get_previous_job_dates';
758 -- Declare local cursor
759 cursor csr_previous_job_dates is
760 select start_date
761 ,end_date
762 ,period_years
763 ,period_months
764 ,period_days
765 from per_previous_jobs pjo
766 where pjo.previous_employer_id = p_previous_employer_id
767 and pjo.previous_job_id = p_previous_job_id;
768 --
769 begin
770 hr_utility.set_location('Entering : '||l_proc, 5);
771 if p_previous_employer_id is not null and p_previous_job_id is not null then
772 hr_utility.set_location(l_proc, 10);
773 open csr_previous_job_dates;
774 fetch csr_previous_job_dates into p_start_date
775 ,p_end_date
776 ,p_period_years
777 ,p_period_months
778 ,p_period_days;
779 hr_utility.set_location(l_proc, 15);
780 if csr_previous_job_dates%notfound then
781 hr_utility.set_location(l_proc, 20);
782 close csr_previous_job_dates;
783 fnd_message.set_name('PER','HR_289540_PJI_INV_PREV_JOB_ID');
787 hr_utility.set_location(l_proc, 25);
784 fnd_message.raise_error;
785 end if;
786 if csr_previous_job_dates%isopen then
788 close csr_previous_job_dates;
789 end if;
790 end if;
791 --
792 hr_utility.set_location('Leaving : '||l_proc, 30);
793 --
794 end get_previous_job_dates;
795 --
796 -- ---------------------------------------------------------------------------
797 -- |----------------------< chk_asg_job_start_date >-------------------------|
798 -- ---------------------------------------------------------------------------
799 -- {Start Of Comments}
800 --
801 -- Description:
802 -- This procedure checks the start_date of the previous job should be before
803 -- the effective_start_date of the assignment to which it is mapped.
804 --
805 -- In Arguments:
806 -- p_previous_job_usage_id
807 -- p_object_version_number
808 -- p_assignment_id
809 -- p_previous_job_id
810 --
811 -- Post Success:
812 -- Proceeds with the process
813 --
814 --
815 -- Post Failure:
816 -- An application error is raised if start_date of the previous job is not
817 -- before the effective_start_date of the assignment to which the
818 -- previous job is mapped.
819 --
820 -- {End Of Comments}
821 -- ----------------------------------------------------------------------------
822 procedure chk_asg_job_start_date
823 (p_previous_job_usage_id
824 in per_previous_job_usages.previous_job_usage_id%type
825 ,p_object_version_number
826 in per_previous_job_usages.object_version_number%type
827 ,p_assignment_id
828 in per_previous_job_usages.assignment_id%type
829 ,p_previous_job_id
830 in per_previous_job_usages.previous_job_id%type
831 )
832 is
833 -- Declare local procedure name
834 l_proc varchar2(72) := g_package||'chk_asg_job_start_date';
835 -- Declare local cursors
836 cursor csr_asg_job_start_date is
837 select 'x' from per_previous_jobs pjo
838 ,per_all_assignments_f asg
839 where pjo.start_date >= asg.effective_start_date
840 and pjo.previous_job_id = p_previous_job_id
841 and asg.assignment_id = p_assignment_id;
842 -- Declare local variables
843 l_x varchar2(10);
844 l_api_updating boolean;
845 --
846 begin
847 if p_assignment_id is not null and p_previous_job_id is not null then
848 l_api_updating := per_pju_shd.api_updating(p_previous_job_usage_id
849 => p_previous_job_usage_id
850 ,p_object_version_number
851 => p_object_version_number
852 );
853 if ((l_api_updating
854 and (nvl(per_pju_shd.g_old_rec.assignment_id, hr_api.g_number)
855 <> nvl(p_assignment_id,hr_api.g_number)
856 or nvl(per_pju_shd.g_old_rec.previous_job_id, hr_api.g_number)
857 <> nvl(p_previous_job_id, hr_api.g_number)
858 )
859 )
860 or
861 (not l_api_updating)) then
862 open csr_asg_job_start_date;
863 fetch csr_asg_job_start_date into l_x;
864 if csr_asg_job_start_date%found then
865 close csr_asg_job_start_date;
866 fnd_message.set_name('PER','HR_289543_ASG_PJO_START_DATE');
867 fnd_message.raise_error;
868 end if;
869 if csr_asg_job_start_date%isopen then
870 close csr_asg_job_start_date;
871 end if;
872 end if;
873 end if;
874 exception
875 when others then
876 raise;
877 end chk_asg_job_start_date;
878 --
879 -- ---------------------------------------------------------------------------
880 -- |----------------------< set_security_group_id >--------------------------|
881 -- ---------------------------------------------------------------------------
882 Procedure set_security_group_id
883 (p_previous_job_usage_id in number
884 ) is
885 --
886 -- Declare cursor
887 cursor csr_sec_grp is
888 select pbg.security_group_id
889 from per_business_groups pbg
890 , per_previous_job_usages pju
891 , per_previous_jobs pjo
892 , per_previous_employers pem
893 where pju.previous_job_usage_id = p_previous_job_usage_id
894 and pju.previous_job_id(+) = pjo.previous_job_id
895 and pjo.previous_employer_id = pem.previous_employer_id
896 and pbg.business_group_id = pem.business_group_id;
897 --
898 -- Declare local variables
899 --
900 l_security_group_id number;
901 l_proc varchar2(72) := g_package||'set_security_group_id';
902 --
903 begin
904 --
905 hr_utility.set_location('Entering:'|| l_proc, 10);
906 --
907 -- Ensure that all the mandatory parameter are not null
908 --
909 hr_api.mandatory_arg_error
910 (p_api_name => l_proc
911 ,p_argument => 'previous_job_usage_id'
912 ,p_argument_value => p_previous_job_usage_id
913 );
914 --
915 open csr_sec_grp;
916 fetch csr_sec_grp into l_security_group_id;
920 close csr_sec_grp;
917 --
918 if csr_sec_grp%notfound then
919 --
921 --
922 -- The primary key is invalid therefore we must error
923 --
924 fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
925 fnd_message.raise_error;
926 --
927 end if;
928 close csr_sec_grp;
929 --
930 -- Set the security_group_id in CLIENT_INFO
931 --
932 hr_api.set_security_group_id
933 (p_security_group_id => l_security_group_id
934 );
935 --
936 hr_utility.set_location(' Leaving:'|| l_proc, 20);
937 --
938 end set_security_group_id;
939 --
940 -- ---------------------------------------------------------------------------
941 -- |---------------------< return_legislation_code >-------------------------|
942 -- ---------------------------------------------------------------------------
943 --
944 Function return_legislation_code
945 (p_previous_job_usage_id in number
946 )
947 Return Varchar2 Is
948 --
949 -- Declare cursor
950 cursor csr_leg_code is
951 select pbg.legislation_code
952 from per_business_groups pbg
953 , per_previous_job_usages pju
954 , per_previous_employers pem
955 where pju.previous_job_usage_id = p_previous_job_usage_id
956 and pju.previous_employer_id = pem.previous_employer_id(+)
957 and pem.business_group_id = pbg.business_group_id(+);
958 --
959 -- Declare local variables
960 --
961 l_legislation_code varchar2(150);
962 l_proc varchar2(72) := g_package||'return_legislation_code';
963 --
964 Begin
965 --
966 hr_utility.set_location('Entering:'|| l_proc, 10);
967 --
968 -- Ensure that all the mandatory parameter are not null
969 --
970 hr_api.mandatory_arg_error
971 (p_api_name => l_proc
972 ,p_argument => 'previous_job_usage_id'
973 ,p_argument_value => p_previous_job_usage_id
974 );
975 --
976 if ( nvl(per_pju_bus.g_previous_job_usage_id, hr_api.g_number)
977 = p_previous_job_usage_id) then
978 --
979 -- The legislation code has already been found with a previous
980 -- call to this function. Just return the value in the global
981 -- variable.
982 --
983 l_legislation_code := per_pju_bus.g_legislation_code;
984 hr_utility.set_location(l_proc, 20);
985 else
986 --
987 -- The ID is different to the last call to this function
988 -- or this is the first call to this function.
989 --
990 open csr_leg_code;
991 fetch csr_leg_code into l_legislation_code;
992 --
993 if csr_leg_code%notfound then
994 --
995 -- The primary key is invalid therefore we must error
996 --
997 close csr_leg_code;
998 fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
999 fnd_message.raise_error;
1000 end if;
1001 hr_utility.set_location(l_proc,30);
1002 --
1003 -- Set the global variables so the values are
1004 -- available for the next call to this function.
1005 --
1006 close csr_leg_code;
1007 per_pju_bus.g_previous_job_usage_id := p_previous_job_usage_id;
1008 per_pju_bus.g_legislation_code := l_legislation_code;
1009 end if;
1010 hr_utility.set_location(' Leaving:'|| l_proc, 40);
1011 return l_legislation_code;
1012 end return_legislation_code;
1013 --
1014 -- ----------------------------------------------------------------------------
1015 -- |-----------------------------< chk_ddf >----------------------------------|
1016 -- ----------------------------------------------------------------------------
1017 --
1018 -- Description:
1019 -- Validates all the Developer Descriptive Flexfield values.
1020 --
1021 -- Prerequisites:
1022 -- All other columns have been validated. Must be called as the
1023 -- last step from insert_validate and update_validate.
1024 --
1025 -- In Arguments:
1026 -- p_rec
1027 --
1028 -- Post Success:
1029 -- If the Developer Descriptive Flexfield structure column and data values
1030 -- are all valid this procedure will end normally and processing will
1031 -- continue.
1032 --
1033 -- Post Failure:
1034 -- If the Developer Descriptive Flexfield structure column value or any of
1035 -- the data values are invalid then an application error is raised as
1036 -- a PL/SQL exception.
1037 --
1038 -- Access Status:
1039 -- Internal Row Handler Use Only.
1040 --
1041 -- ----------------------------------------------------------------------------
1042 procedure chk_ddf
1043 (p_rec in per_pju_shd.g_rec_type
1044 ) is
1045 --
1046 l_proc varchar2(72) := g_package || 'chk_ddf';
1047 --
1048 begin
1049 hr_utility.set_location('Entering:'||l_proc,10);
1050 --
1051 if ((p_rec.previous_job_usage_id is not null) and (
1052 nvl(per_pju_shd.g_old_rec.pju_information_category, hr_api.g_varchar2) <>
1053 nvl(p_rec.pju_information_category, hr_api.g_varchar2) or
1054 nvl(per_pju_shd.g_old_rec.pju_information1, hr_api.g_varchar2) <>
1055 nvl(p_rec.pju_information1, hr_api.g_varchar2) or
1056 nvl(per_pju_shd.g_old_rec.pju_information2, hr_api.g_varchar2) <>
1060 nvl(per_pju_shd.g_old_rec.pju_information4, hr_api.g_varchar2) <>
1057 nvl(p_rec.pju_information2, hr_api.g_varchar2) or
1058 nvl(per_pju_shd.g_old_rec.pju_information3, hr_api.g_varchar2) <>
1059 nvl(p_rec.pju_information3, hr_api.g_varchar2) or
1061 nvl(p_rec.pju_information4, hr_api.g_varchar2) or
1062 nvl(per_pju_shd.g_old_rec.pju_information5, hr_api.g_varchar2) <>
1063 nvl(p_rec.pju_information5, hr_api.g_varchar2) or
1064 nvl(per_pju_shd.g_old_rec.pju_information6, hr_api.g_varchar2) <>
1065 nvl(p_rec.pju_information6, hr_api.g_varchar2) or
1066 nvl(per_pju_shd.g_old_rec.pju_information7, hr_api.g_varchar2) <>
1067 nvl(p_rec.pju_information7, hr_api.g_varchar2) or
1068 nvl(per_pju_shd.g_old_rec.pju_information8, hr_api.g_varchar2) <>
1069 nvl(p_rec.pju_information8, hr_api.g_varchar2) or
1070 nvl(per_pju_shd.g_old_rec.pju_information9, hr_api.g_varchar2) <>
1071 nvl(p_rec.pju_information9, hr_api.g_varchar2) or
1072 nvl(per_pju_shd.g_old_rec.pju_information10, hr_api.g_varchar2) <>
1073 nvl(p_rec.pju_information10, hr_api.g_varchar2) or
1074 nvl(per_pju_shd.g_old_rec.pju_information11, hr_api.g_varchar2) <>
1075 nvl(p_rec.pju_information11, hr_api.g_varchar2) or
1076 nvl(per_pju_shd.g_old_rec.pju_information12, hr_api.g_varchar2) <>
1077 nvl(p_rec.pju_information12, hr_api.g_varchar2) or
1078 nvl(per_pju_shd.g_old_rec.pju_information13, hr_api.g_varchar2) <>
1079 nvl(p_rec.pju_information13, hr_api.g_varchar2) or
1080 nvl(per_pju_shd.g_old_rec.pju_information14, hr_api.g_varchar2) <>
1081 nvl(p_rec.pju_information14, hr_api.g_varchar2) or
1082 nvl(per_pju_shd.g_old_rec.pju_information15, hr_api.g_varchar2) <>
1083 nvl(p_rec.pju_information15, hr_api.g_varchar2) or
1084 nvl(per_pju_shd.g_old_rec.pju_information16, hr_api.g_varchar2) <>
1085 nvl(p_rec.pju_information16, hr_api.g_varchar2) or
1086 nvl(per_pju_shd.g_old_rec.pju_information17, hr_api.g_varchar2) <>
1087 nvl(p_rec.pju_information17, hr_api.g_varchar2) or
1088 nvl(per_pju_shd.g_old_rec.pju_information18, hr_api.g_varchar2) <>
1089 nvl(p_rec.pju_information18, hr_api.g_varchar2) or
1090 nvl(per_pju_shd.g_old_rec.pju_information19, hr_api.g_varchar2) <>
1091 nvl(p_rec.pju_information19, hr_api.g_varchar2) or
1092 nvl(per_pju_shd.g_old_rec.pju_information20, hr_api.g_varchar2) <>
1093 nvl(p_rec.pju_information20, hr_api.g_varchar2) ))
1094 or (p_rec.previous_job_usage_id is null) then
1095 --
1096 -- Only execute the validation if absolutely necessary:
1097 -- a) During update, the structure column value or any
1098 -- of the attribute values have actually changed.
1099 -- b) During insert.
1100 --
1101 hr_dflex_utility.ins_or_upd_descflex_attribs
1102 (p_appl_short_name => 'PER'
1103 ,p_descflex_name => 'Prev Job Usage Developer DF'
1104 ,p_attribute_category => p_rec.pju_information_category
1105 ,p_attribute1_name => 'PJU_INFORMATION1'
1106 ,p_attribute1_value => p_rec.pju_information1
1107 ,p_attribute2_name => 'PJU_INFORMATION2'
1108 ,p_attribute2_value => p_rec.pju_information2
1109 ,p_attribute3_name => 'PJU_INFORMATION3'
1110 ,p_attribute3_value => p_rec.pju_information3
1111 ,p_attribute4_name => 'PJU_INFORMATION4'
1112 ,p_attribute4_value => p_rec.pju_information4
1113 ,p_attribute5_name => 'PJU_INFORMATION5'
1114 ,p_attribute5_value => p_rec.pju_information5
1115 ,p_attribute6_name => 'PJU_INFORMATION6'
1116 ,p_attribute6_value => p_rec.pju_information6
1117 ,p_attribute7_name => 'PJU_INFORMATION7'
1118 ,p_attribute7_value => p_rec.pju_information7
1119 ,p_attribute8_name => 'PJU_INFORMATION8'
1120 ,p_attribute8_value => p_rec.pju_information8
1121 ,p_attribute9_name => 'PJU_INFORMATION9'
1122 ,p_attribute9_value => p_rec.pju_information9
1123 ,p_attribute10_name => 'PJU_INFORMATION10'
1124 ,p_attribute10_value => p_rec.pju_information10
1125 ,p_attribute11_name => 'PJU_INFORMATION11'
1126 ,p_attribute11_value => p_rec.pju_information11
1127 ,p_attribute12_name => 'PJU_INFORMATION12'
1128 ,p_attribute12_value => p_rec.pju_information12
1129 ,p_attribute13_name => 'PJU_INFORMATION13'
1130 ,p_attribute13_value => p_rec.pju_information13
1131 ,p_attribute14_name => 'PJU_INFORMATION14'
1132 ,p_attribute14_value => p_rec.pju_information14
1133 ,p_attribute15_name => 'PJU_INFORMATION15'
1134 ,p_attribute15_value => p_rec.pju_information15
1135 ,p_attribute16_name => 'PJU_INFORMATION16'
1136 ,p_attribute16_value => p_rec.pju_information16
1137 ,p_attribute17_name => 'PJU_INFORMATION17'
1138 ,p_attribute17_value => p_rec.pju_information17
1139 ,p_attribute18_name => 'PJU_INFORMATION18'
1140 ,p_attribute18_value => p_rec.pju_information18
1141 ,p_attribute19_name => 'PJU_INFORMATION19'
1142 ,p_attribute19_value => p_rec.pju_information19
1143 ,p_attribute20_name => 'PJU_INFORMATION20'
1147 --
1144 ,p_attribute20_value => p_rec.pju_information20
1145 );
1146 end if;
1148 hr_utility.set_location(' Leaving:'||l_proc,20);
1149 end chk_ddf;
1150 --
1151 -- ----------------------------------------------------------------------------
1152 -- |------------------------------< chk_df >----------------------------------|
1153 -- ----------------------------------------------------------------------------
1154 --
1155 -- Description:
1156 -- Validates all the Descriptive Flexfield values.
1157 --
1158 -- Prerequisites:
1159 -- All other columns have been validated. Must be called as the
1160 -- last step from insert_validate and update_validate.
1161 --
1162 -- In Arguments:
1163 -- p_rec
1164 --
1165 -- Post Success:
1166 -- If the Descriptive Flexfield structure column and data values are
1167 -- all valid this procedure will end normally and processing will
1168 -- continue.
1169 --
1170 -- Post Failure:
1171 -- If the Descriptive Flexfield structure column value or any of
1172 -- the data values are invalid then an application error is raised as
1173 -- a PL/SQL exception.
1174 --
1175 -- Access Status:
1176 -- Internal Row Handler Use Only.
1177 --
1178 -- ----------------------------------------------------------------------------
1179 procedure chk_df
1180 (p_rec in per_pju_shd.g_rec_type
1181 ) is
1182 --
1183 l_proc varchar2(72) := g_package || 'chk_df';
1184 --
1185 begin
1186 hr_utility.set_location('Entering:'||l_proc,10);
1187 --
1188 if ((p_rec.previous_job_usage_id is not null) and (
1189 nvl(per_pju_shd.g_old_rec.pju_attribute_category, hr_api.g_varchar2) <>
1190 nvl(p_rec.pju_attribute_category, hr_api.g_varchar2) or
1191 nvl(per_pju_shd.g_old_rec.pju_attribute1, hr_api.g_varchar2) <>
1192 nvl(p_rec.pju_attribute1, hr_api.g_varchar2) or
1193 nvl(per_pju_shd.g_old_rec.pju_attribute2, hr_api.g_varchar2) <>
1194 nvl(p_rec.pju_attribute2, hr_api.g_varchar2) or
1195 nvl(per_pju_shd.g_old_rec.pju_attribute3, hr_api.g_varchar2) <>
1196 nvl(p_rec.pju_attribute3, hr_api.g_varchar2) or
1197 nvl(per_pju_shd.g_old_rec.pju_attribute4, hr_api.g_varchar2) <>
1198 nvl(p_rec.pju_attribute4, hr_api.g_varchar2) or
1199 nvl(per_pju_shd.g_old_rec.pju_attribute5, hr_api.g_varchar2) <>
1200 nvl(p_rec.pju_attribute5, hr_api.g_varchar2) or
1201 nvl(per_pju_shd.g_old_rec.pju_attribute6, hr_api.g_varchar2) <>
1202 nvl(p_rec.pju_attribute6, hr_api.g_varchar2) or
1203 nvl(per_pju_shd.g_old_rec.pju_attribute7, hr_api.g_varchar2) <>
1204 nvl(p_rec.pju_attribute7, hr_api.g_varchar2) or
1205 nvl(per_pju_shd.g_old_rec.pju_attribute8, hr_api.g_varchar2) <>
1206 nvl(p_rec.pju_attribute8, hr_api.g_varchar2) or
1207 nvl(per_pju_shd.g_old_rec.pju_attribute9, hr_api.g_varchar2) <>
1208 nvl(p_rec.pju_attribute9, hr_api.g_varchar2) or
1209 nvl(per_pju_shd.g_old_rec.pju_attribute10, hr_api.g_varchar2) <>
1210 nvl(p_rec.pju_attribute10, hr_api.g_varchar2) or
1211 nvl(per_pju_shd.g_old_rec.pju_attribute11, hr_api.g_varchar2) <>
1212 nvl(p_rec.pju_attribute11, hr_api.g_varchar2) or
1213 nvl(per_pju_shd.g_old_rec.pju_attribute12, hr_api.g_varchar2) <>
1214 nvl(p_rec.pju_attribute12, hr_api.g_varchar2) or
1215 nvl(per_pju_shd.g_old_rec.pju_attribute13, hr_api.g_varchar2) <>
1216 nvl(p_rec.pju_attribute13, hr_api.g_varchar2) or
1217 nvl(per_pju_shd.g_old_rec.pju_attribute14, hr_api.g_varchar2) <>
1218 nvl(p_rec.pju_attribute14, hr_api.g_varchar2) or
1219 nvl(per_pju_shd.g_old_rec.pju_attribute15, hr_api.g_varchar2) <>
1220 nvl(p_rec.pju_attribute15, hr_api.g_varchar2) or
1221 nvl(per_pju_shd.g_old_rec.pju_attribute16, hr_api.g_varchar2) <>
1222 nvl(p_rec.pju_attribute16, hr_api.g_varchar2) or
1223 nvl(per_pju_shd.g_old_rec.pju_attribute17, hr_api.g_varchar2) <>
1224 nvl(p_rec.pju_attribute17, hr_api.g_varchar2) or
1225 nvl(per_pju_shd.g_old_rec.pju_attribute18, hr_api.g_varchar2) <>
1226 nvl(p_rec.pju_attribute18, hr_api.g_varchar2) or
1227 nvl(per_pju_shd.g_old_rec.pju_attribute19, hr_api.g_varchar2) <>
1228 nvl(p_rec.pju_attribute19, hr_api.g_varchar2) or
1229 nvl(per_pju_shd.g_old_rec.pju_attribute20, hr_api.g_varchar2) <>
1230 nvl(p_rec.pju_attribute20, hr_api.g_varchar2) ))
1231 or (p_rec.previous_job_usage_id is null) then
1232 --
1233 -- Only execute the validation if absolutely necessary:
1234 -- a) During update, the structure column value or any
1235 -- of the attribute values have actually changed.
1236 -- b) During insert.
1237 --
1238 hr_dflex_utility.ins_or_upd_descflex_attribs
1239 (p_appl_short_name => 'PER'
1240 ,p_descflex_name => 'PER_PREVIOUS_JOB_USAGES'
1241 ,p_attribute_category => p_rec.pju_attribute_category
1242 ,p_attribute1_name => 'PJU_ATTRIBUTE1'
1243 ,p_attribute1_value => p_rec.pju_attribute1
1244 ,p_attribute2_name => 'PJU_ATTRIBUTE2'
1245 ,p_attribute2_value => p_rec.pju_attribute2
1246 ,p_attribute3_name => 'PJU_ATTRIBUTE3'
1247 ,p_attribute3_value => p_rec.pju_attribute3
1248 ,p_attribute4_name => 'PJU_ATTRIBUTE4'
1249 ,p_attribute4_value => p_rec.pju_attribute4
1250 ,p_attribute5_name => 'PJU_ATTRIBUTE5'
1251 ,p_attribute5_value => p_rec.pju_attribute5
1255 ,p_attribute7_value => p_rec.pju_attribute7
1252 ,p_attribute6_name => 'PJU_ATTRIBUTE6'
1253 ,p_attribute6_value => p_rec.pju_attribute6
1254 ,p_attribute7_name => 'PJU_ATTRIBUTE7'
1256 ,p_attribute8_name => 'PJU_ATTRIBUTE8'
1257 ,p_attribute8_value => p_rec.pju_attribute8
1258 ,p_attribute9_name => 'PJU_ATTRIBUTE9'
1259 ,p_attribute9_value => p_rec.pju_attribute9
1260 ,p_attribute10_name => 'PJU_ATTRIBUTE10'
1261 ,p_attribute10_value => p_rec.pju_attribute10
1262 ,p_attribute11_name => 'PJU_ATTRIBUTE11'
1263 ,p_attribute11_value => p_rec.pju_attribute11
1264 ,p_attribute12_name => 'PJU_ATTRIBUTE12'
1265 ,p_attribute12_value => p_rec.pju_attribute12
1266 ,p_attribute13_name => 'PJU_ATTRIBUTE13'
1267 ,p_attribute13_value => p_rec.pju_attribute13
1268 ,p_attribute14_name => 'PJU_ATTRIBUTE14'
1269 ,p_attribute14_value => p_rec.pju_attribute14
1270 ,p_attribute15_name => 'PJU_ATTRIBUTE15'
1271 ,p_attribute15_value => p_rec.pju_attribute15
1272 ,p_attribute16_name => 'PJU_ATTRIBUTE16'
1273 ,p_attribute16_value => p_rec.pju_attribute16
1274 ,p_attribute17_name => 'PJU_ATTRIBUTE17'
1275 ,p_attribute17_value => p_rec.pju_attribute17
1276 ,p_attribute18_name => 'PJU_ATTRIBUTE18'
1277 ,p_attribute18_value => p_rec.pju_attribute18
1278 ,p_attribute19_name => 'PJU_ATTRIBUTE19'
1279 ,p_attribute19_value => p_rec.pju_attribute19
1280 ,p_attribute20_name => 'PJU_ATTRIBUTE20'
1281 ,p_attribute20_value => p_rec.pju_attribute20
1282 );
1283 end if;
1284 --
1285 hr_utility.set_location(' Leaving:'||l_proc,20);
1286 end chk_df;
1287 --
1288 -- ----------------------------------------------------------------------------
1289 -- |-----------------------< chk_non_updateable_args >------------------------|
1290 -- ----------------------------------------------------------------------------
1291 -- {Start Of Comments}
1292 --
1293 -- Description:
1294 -- This procedure is used to ensure that non updateable attributes have
1295 -- not been updated. If an attribute has been updated an error is generated.
1296 --
1297 -- Pre Conditions:
1298 -- g_old_rec has been populated with details of the values currently in
1299 -- the database.
1300 --
1301 -- In Arguments:
1302 -- p_rec has been populated with the updated values the user would like the
1303 -- record set to.
1304 --
1305 -- Post Success:
1306 -- Processing continues if all the non updateable attributes have not
1307 -- changed.
1308 --
1309 -- Post Failure:
1310 -- An application error is raised if any of the non updatable attributes
1311 -- have been altered.
1312 --
1313 -- {End Of Comments}
1314 -- ----------------------------------------------------------------------------
1315 Procedure chk_non_updateable_args
1316 (p_rec in per_pju_shd.g_rec_type
1317 ) IS
1318 --
1319 l_proc varchar2(72) := g_package || 'chk_non_updateable_args';
1320 l_error EXCEPTION;
1321 l_argument varchar2(30);
1322 --
1323 Begin
1324 --
1325 -- Only proceed with the validation if a row exists for the current
1326 -- record in the HR Schema.
1327 --
1328 IF NOT per_pju_shd.api_updating
1329 (p_previous_job_usage_id => p_rec.previous_job_usage_id
1330 ,p_object_version_number => p_rec.object_version_number
1331 ) THEN
1332 fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
1333 fnd_message.set_token('PROCEDURE ', l_proc);
1334 fnd_message.set_token('STEP ', '5');
1335 fnd_message.raise_error;
1336 END IF;
1337 -- Check for non updateable args
1338 if per_pju_shd.g_old_rec.previous_job_usage_id <> p_rec.previous_job_usage_id
1339 then
1340 hr_api.argument_changed_error
1341 (p_api_name => l_proc
1342 ,p_argument => 'previous_job_usage_id'
1343 );
1344 end if;
1345 --
1346 if per_pju_shd.g_old_rec.previous_employer_id <> p_rec.previous_employer_id
1347 then
1348 hr_api.argument_changed_error
1349 (p_api_name => l_proc
1350 ,p_argument => 'previous_employer_id'
1351 );
1352 end if;
1353 --
1354 EXCEPTION
1355 WHEN l_error THEN
1356 hr_api.argument_changed_error
1357 (p_api_name => l_proc
1358 ,p_argument => l_argument);
1359 WHEN OTHERS THEN
1360 RAISE;
1361 End chk_non_updateable_args;
1362 --
1363 -- ----------------------------------------------------------------------------
1364 -- |---------------------------< insert_validate >----------------------------|
1365 -- ----------------------------------------------------------------------------
1366 Procedure insert_validate
1367 (p_rec in per_pju_shd.g_rec_type
1368 ) is
1369 --
1370 l_proc varchar2(72) := g_package||'insert_validate';
1371 --
1372 Begin
1373 hr_utility.set_location('Entering:'||l_proc, 5);
1374 --
1378 chk_assignment_id(p_previous_job_usage_id
1375 -- Call all supporting business operations
1376 -- Check whether the Assignment Id is Valid
1377 hr_utility.set_location(l_proc, 10);
1379 => p_rec.previous_job_usage_id
1380 ,p_object_version_number
1381 => p_rec.object_version_number
1382 ,p_assignment_id
1383 => p_rec.assignment_id);
1384 -- Check whether the Previous Employer Id is Valid
1385 hr_utility.set_location(l_proc, 15);
1386 chk_previous_employer_id(p_previous_employer_id
1387 => p_rec.previous_employer_id
1388 ,p_previous_job_usage_id
1389 => p_rec.previous_job_usage_id
1390 ,p_object_version_number
1391 => p_rec.object_version_number);
1392 -- Check whether the Previous Job Id is Valid
1393 hr_utility.set_location(l_proc, 20);
1394 chk_previous_job_id(p_previous_job_id
1395 => p_rec.previous_job_id
1396 ,p_previous_job_usage_id
1397 => p_rec.previous_job_usage_id
1398 ,p_object_version_number
1399 => p_rec.object_version_number);
1400 -- Check whether the Start Date is Valid
1401 hr_utility.set_location(l_proc, 25);
1402 chk_assignment_job(p_previous_job_usage_id
1403 => p_rec.previous_job_usage_id
1404 ,p_object_version_number
1405 => p_rec.object_version_number
1406 ,p_previous_job_id
1407 => p_rec.previous_job_id
1408 ,p_assignment_id
1409 => p_rec.assignment_id
1410 );
1411 --
1412 hr_utility.set_location(l_proc, 30);
1413 chk_valid_job_dates(p_previous_job_usage_id
1414 => p_rec.previous_job_usage_id
1415 ,p_object_version_number
1416 => p_rec.object_version_number
1417 ,p_start_date
1418 => p_rec.start_date
1419 ,p_end_date
1420 => p_rec.end_date);
1421 --
1422 hr_utility.set_location(l_proc, 35);
1423 chk_asg_job_start_date
1424 (p_previous_job_usage_id
1425 => p_rec.previous_job_usage_id
1426 ,p_object_version_number
1427 => p_rec.object_version_number
1428 ,p_assignment_id
1429 => p_rec.assignment_id
1430 ,p_previous_job_id
1431 => p_rec.previous_job_id
1432 );
1433 --
1434 hr_utility.set_location(l_proc, 40);
1435 chk_pju_start_end_dates(p_previous_job_usage_id
1436 => p_rec.previous_job_usage_id
1437 ,p_object_version_number
1438 => p_rec.object_version_number
1439 ,p_previous_employer_id
1440 => p_rec.previous_employer_id
1441 ,p_start_date
1442 => p_rec.start_date
1443 ,p_end_date
1444 => p_rec.end_date);
1445 -- Check whether the Period Years is Valid
1446 hr_utility.set_location(l_proc, 45);
1447 chk_period_years(p_period_years
1448 => p_rec.period_years
1449 ,p_previous_job_usage_id
1450 => p_rec.previous_job_usage_id
1451 ,p_object_version_number
1452 => p_rec.object_version_number);
1453 -- Check whether the Period Months is Valid
1454 hr_utility.set_location(l_proc, 50);
1455 chk_period_months(p_period_months
1456 => p_rec.period_months
1457 ,p_previous_job_usage_id
1458 => p_rec.previous_job_usage_id
1459 ,p_object_version_number
1460 => p_rec.object_version_number);
1461 -- Check whether the Period Days is Valid
1462 hr_utility.set_location(l_proc, 55);
1463 chk_period_days(p_period_days
1464 => p_rec.period_days
1465 ,p_previous_job_usage_id
1466 => p_rec.previous_job_usage_id
1467 ,p_object_version_number
1468 => p_rec.object_version_number);
1469 --
1470 hr_utility.set_location(l_proc, 60);
1471 per_pju_bus.chk_ddf(p_rec);
1472 --
1473 hr_utility.set_location(l_proc, 65);
1474 per_pju_bus.chk_df(p_rec);
1475 --
1476 hr_utility.set_location(' Leaving:'||l_proc, 70);
1477 End insert_validate;
1478 --
1479 -- ----------------------------------------------------------------------------
1480 -- |---------------------------< update_validate >----------------------------|
1481 -- ----------------------------------------------------------------------------
1482 Procedure update_validate
1483 (p_rec in per_pju_shd.g_rec_type
1484 ) is
1485 --
1486 l_proc varchar2(72) := g_package||'update_validate';
1487 --
1488 Begin
1489 hr_utility.set_location('Entering:'||l_proc, 5);
1490 --
1491 -- Call all supporting business operations
1492 hr_api.mandatory_arg_error
1496 );
1493 (p_api_name => l_proc
1494 ,p_argument => 'assignment_id'
1495 ,p_argument_value => p_rec.assignment_id
1497 --
1501 chk_assignment_id(p_rec.previous_job_usage_id
1498 chk_non_updateable_args(p_rec => p_rec);
1499 -- Check whether the Assignment Id is Valid
1500 hr_utility.set_location(l_proc, 10);
1502 ,p_rec.object_version_number
1503 ,p_rec.assignment_id);
1504 -- Check whether the Previous Job Id is Valid
1505 hr_utility.set_location(l_proc, 20);
1506 chk_previous_job_id(p_previous_job_id
1507 => p_rec.previous_job_id
1508 ,p_previous_job_usage_id
1509 => p_rec.previous_job_usage_id
1510 ,p_object_version_number
1511 => p_rec.object_version_number);
1512 --
1513 hr_utility.set_location(l_proc, 25);
1514 chk_assignment_job(p_previous_job_usage_id
1515 => p_rec.previous_job_usage_id
1516 ,p_object_version_number
1517 => p_rec.object_version_number
1518 ,p_previous_job_id
1519 => p_rec.previous_job_id
1520 ,p_assignment_id
1521 => p_rec.assignment_id
1522 );
1523 -- Check whether the Start Date is Valid
1524 hr_utility.set_location(l_proc, 30);
1525 chk_valid_job_dates(p_rec.previous_job_usage_id
1526 ,p_rec.object_version_number
1527 ,p_rec.start_date
1528 ,p_rec.end_date);
1529 -- Check whether the Start Date is before the Start Date of the
1530 -- Assignment mapped with.
1531 hr_utility.set_location(l_proc, 35);
1532 chk_asg_job_start_date
1533 (p_previous_job_usage_id
1534 => p_rec.previous_job_usage_id
1535 ,p_object_version_number
1536 => p_rec.object_version_number
1537 ,p_assignment_id
1538 => p_rec.assignment_id
1539 ,p_previous_job_id
1540 => p_rec.previous_job_id
1541 );
1542 -- Check whether the Period Years is Valid
1543 hr_utility.set_location(l_proc, 40);
1544 chk_period_years(p_period_years
1545 => p_rec.period_years
1546 ,p_previous_job_usage_id
1547 => p_rec.previous_job_usage_id
1548 ,p_object_version_number
1549 => p_rec.object_version_number);
1550 -- Check whether the Period Months is Valid
1551 hr_utility.set_location(l_proc, 45);
1552 chk_period_months(p_period_months
1553 => p_rec.period_months
1554 ,p_previous_job_usage_id
1555 => p_rec.previous_job_usage_id
1556 ,p_object_version_number
1557 => p_rec.object_version_number);
1558 -- Check whether the Period Days is Valid
1559 hr_utility.set_location(l_proc, 50);
1560 chk_period_days(p_period_days
1561 => p_rec.period_days
1562 ,p_previous_job_usage_id
1563 => p_rec.previous_job_usage_id
1564 ,p_object_version_number
1565 => p_rec.object_version_number);
1566 --
1567 hr_utility.set_location(l_proc, 55);
1568 chk_pju_start_end_dates(p_previous_job_usage_id
1569 => p_rec.previous_job_usage_id
1570 ,p_object_version_number
1571 => p_rec.object_version_number
1572 ,p_previous_employer_id
1573 => p_rec.previous_employer_id
1574 ,p_start_date
1575 => p_rec.start_date
1576 ,p_end_date
1577 => p_rec.end_date);
1578 --
1579 hr_utility.set_location(l_proc, 60);
1580 per_pju_bus.chk_ddf(p_rec);
1581 --
1582 hr_utility.set_location(l_proc, 65);
1583 per_pju_bus.chk_df(p_rec);
1584 --
1585 hr_utility.set_location(' Leaving:'||l_proc, 70);
1586 End update_validate;
1587 --
1588 -- ----------------------------------------------------------------------------
1589 -- |---------------------------< delete_validate >----------------------------|
1590 -- ----------------------------------------------------------------------------
1591 Procedure delete_validate
1592 (p_rec in per_pju_shd.g_rec_type
1593 ) is
1594 --
1595 l_proc varchar2(72) := g_package||'delete_validate';
1596 --
1597 Begin
1598 hr_utility.set_location('Entering:'||l_proc, 5);
1599 --
1600 -- Call all supporting business operations
1601 --
1602 hr_utility.set_location(' Leaving:'||l_proc, 10);
1603 End delete_validate;
1604 --
1605 end per_pju_bus;