DBA Data[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;