DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_GRS_BUS

Source


1 Package Body per_grs_bus as
2 /* $Header: pegrsrhi.pkb 115.3 2002/12/05 17:40:37 pkakar ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  per_grs_bus.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |-------------------< chk_cagr_grade_structure_id >------------------------|
12 -- ----------------------------------------------------------------------------
13 --
14 -- Description
15 --   This procedure is used to check that the primary key for the table
16 --   is created properly. It should be null on insert and
17 --   should not be able to be updated.
18 --
19 -- Pre Conditions
20 --   None.
21 --
22 -- In Parameters
23 --   cagr_grade_structure_id PK of record being inserted or updated.
24 --   object_version_number Object version number of record being
25 --                         inserted or updated.
26 --
27 -- Post Success
28 --   Processing continues
29 --
30 -- Post Failure
31 --   Errors handled by the procedure
32 --
33 -- Access Status
34 --   Internal table handler use only.
35 --
36 Procedure chk_cagr_grade_structure_id(p_cagr_grade_structure_id                in number,
37                                       p_object_version_number       in number,
38                                       p_effective_date 		in date) is
39   --
40   l_proc         varchar2(72) := g_package||'chk_cagr_grade_structure_id';
41   l_api_updating boolean;
42   --
43 Begin
44   --
45   hr_utility.set_location('Entering:'||l_proc, 5);
46   --
47   l_api_updating := per_grs_shd.api_updating
48     (p_cagr_grade_structure_id                => p_cagr_grade_structure_id,
49      p_object_version_number       => p_object_version_number,
50      p_effective_date		=>  p_effective_date);
51   --
52   if (l_api_updating
53      and nvl(p_cagr_grade_structure_id,hr_api.g_number)
54      <>  per_grs_shd.g_old_rec.cagr_grade_structure_id) then
55     --
56     -- raise error as PK has changed
57     --
58     per_grs_shd.constraint_error('PER_CAGR_GRADE_STRUCTURES_PK');
59     --
60   elsif not l_api_updating then
61     --
62     -- check if PK is null
63     --
64     if p_cagr_grade_structure_id is not null then
65       --
66       -- raise error as PK is not null
67       --
68       per_grs_shd.constraint_error('PER_CAGR_GRADE_STRUCTURES_PK');
69       --
70     end if;
71     --
72   end if;
73   --
74   hr_utility.set_location('Leaving:'||l_proc, 10);
75   --
76 End chk_cagr_grade_structure_id;
77 --
78 -- ----------------------------------------------------------------------------
79 -- |--------------------< chk_collective_agreement_id >-----------------------|
80 -- ----------------------------------------------------------------------------
81 --
82 --  Desciption :
83 --
84 --    Validates that COLLECTIVE_AGREEMENT_ID is not null
85 --
86 --    Validates that values enterd for this column exist in the PER_COLLECTIVE_AGREEMENTS
87 --    table.
88 --
89 --  Pre-conditions:
90 --
91 --  In Arguments :
92 --    p_collective_agreement_id
93 --
94 --  Post Success :
95 --    If the above business rules are satisfied, processing continues
96 --
97 --  Post Failure :
98 --    If the above business rules are violated, an application error
99 --    is raised and processing terminates
100 --
101 --  Access Status :
102 --    Internal Table Handler Use only.
103 --
104 -- {End of Comments}
105 --
106 -- -----------------------------------------------------------------------
107 Procedure chk_collective_agreement_id
108  (p_collective_agreement_id   in per_cagr_grade_structures.collective_agreement_id%TYPE
109   ) is
110 --
111   l_proc                 varchar2(72) := g_package||'chk_collective_agreement_id';
112   l_exists 		 varchar2(2);
113 --
114   --
115   -- Cursor to check that COLLECTIVE_AGREEMENT_ID exists
116   --
117   cursor csr_valid_cagr_id is
118     select   '1'
119       from   per_collective_agreements   per
120      where   per.collective_agreement_id   = p_collective_agreement_id;
121 --
122 begin
123   hr_utility.set_location('Entering:'||l_proc,5);
124   --
125   -- Perform COLLECTIVE_AGREEMENT_ID mandatory check
126   --
127   hr_api.mandatory_arg_error
128     (p_api_name       => l_proc
129     ,p_argument       => 'collective_agreement_id'
130     ,p_argument_value => p_collective_agreement_id
131    );
132   --
133   hr_utility.set_location(l_proc,10);
134   --
135   --  Check for valid COLLECTIVE_AGREEMENT_ID
136   --
137   open csr_valid_cagr_id;
138   fetch csr_valid_cagr_id
139         into l_exists;
140   if (csr_valid_cagr_id%notfound) then
141     --
142     close csr_valid_cagr_id;
143     --
144     hr_utility.set_message(800,'PER_52816_COLLECTIVE_AGREEMENT');
145     hr_utility.raise_error;
146   end if;
147   --
148   close csr_valid_cagr_id;
149   --
150     hr_utility.set_location('Leaving:'|| l_proc, 20);
151 end chk_collective_agreement_id;
152 --
153 -- ----------------------------------------------------------------------------
154 -- |--------------------< chk_id_flex_num >-----------------------------------|
155 -- ----------------------------------------------------------------------------
156 --
157 --  Desciption :
158 --
159 --    Validates that ID_FLEX_NUM is not null.
160 --
161 --    Validates that values enterd for this column exist in the
162 --    FND_ID_FLEX_STRUCTURES table.
163 --
164 --  Pre-conditions:
165 --
166 --  In Arguments :
167 --
168 --    p_id_flex_num
169 --
170 --  Post Success :
171 --    If the above business rules are satisfied, processing continues
172 --
173 --  Post Failure :
174 --    If the above business rules are violated, an application error
175 --    is raised and processing terminates
176 --
177 --  Access Status :
178 --    Internal Table Handler Use only.
179 --
180 -- {End of Comments}
181 --
182 -- -----------------------------------------------------------------------
183 Procedure chk_id_flex_num
184        (p_id_flex_num           in fnd_id_flex_structures.id_flex_num%TYPE
185        ) is
186   --
187   l_proc           varchar2(72) := g_package||'chk_id_flex_num';
188   l_exists 		 varchar2(2);
189   --
190   -- Cursor to check that ID_FLEX_NUM exists
191   --
192   cursor csr_valid_id_flex_num is
193     select   '1'
194       from   fnd_id_flex_structures   fnd
195      where   fnd.id_flex_num   = p_id_flex_num;
196   --
197 begin
198   hr_utility.set_location('Entering:'||l_proc,5);
199   --
200   -- Perform id_flex_num mandatory check
201   --
202   hr_api.mandatory_arg_error
203     (p_api_name       => l_proc
204     ,p_argument       => 'id_flex_num'
205     ,p_argument_value => p_id_flex_num
206    );
207   --
208   hr_utility.set_location(l_proc,10);
209   --
210   --  Check for valid ID_FLEX_NUM
211   --
212   open csr_valid_id_flex_num;
213   fetch csr_valid_id_flex_num
214         into l_exists;
215   if (csr_valid_id_flex_num%notfound) then
216     --
217     close csr_valid_id_flex_num;
218     --
219     hr_utility.set_message(800,'HR_51741_ANC_FLEX_NOT_EXIST');
220     hr_utility.raise_error;
221   end if;
222   --
223   close csr_valid_id_flex_num;
224   --
225   hr_utility.set_location('Leaving:'||l_proc, 10);
226 end chk_id_flex_num;
227 --
228 -- ----------------------------------------------------------------------------
229 -- |--------------------< chk_comb_flex_cagr >--------------------------------|
230 -- ----------------------------------------------------------------------------
231 --
232 --  Desciption :
233 --
234 --    Validates that the combinaison 'id_flex_num - collective_agreement_id'
235 --    does not exist.
236 --
237 --  Pre-conditions:
238 --
239 --  In Arguments :
240 --
241 --    p_id_flex_num
242 --    p_collective_agreement_id
243 --
244 --  Post Success :
245 --    If the above business rules are satisfied, processing continues
246 --
247 --  Post Failure :
248 --    If the above business rules are violated, an application error
249 --    is raised and processing terminates
250 --
251 --  Access Status :
252 --    Internal Table Handler Use only.
253 --
254 -- {End of Comments}
255 --
256 -- -----------------------------------------------------------------------
257 Procedure chk_comb_flex_cagr
258  (p_id_flex_num               in per_cagr_grade_structures.id_flex_num%TYPE,
259   p_collective_agreement_id   in per_cagr_grade_structures.collective_agreement_id%TYPE
260   ) is
261   --
262   l_proc           varchar2(72) := g_package||'chk_comb_flex_cagr';
263   l_exists 		 varchar2(2);
264   --
265   -- Cursor to check that ID_FLEX_NUM exists
266   --
267   cursor csr_comb_flex_cagr is
268     select   '1'
269       from   per_cagr_grade_structures  pcg
270      where   pcg.id_flex_num   = p_id_flex_num
271      and     pcg.collective_agreement_id = p_collective_agreement_id;
272   --
273 begin
274   hr_utility.set_location('Entering:'||l_proc,5);
275   --
276   -- Perform id_flex_num mandatory check
277   --
278   hr_api.mandatory_arg_error
279     (p_api_name       => l_proc
280     ,p_argument       => 'id_flex_num'
281     ,p_argument_value => p_id_flex_num
282    );
283   --
284   hr_utility.set_location(l_proc,10);
285   --
286   -- Perform COLLECTIVE_AGREEMENT_ID mandatory check
287   --
288   hr_api.mandatory_arg_error
289     (p_api_name       => l_proc
290     ,p_argument       => 'collective_agreement_id'
291     ,p_argument_value => p_collective_agreement_id
292    );
293   --
294   hr_utility.set_location(l_proc,15);
295   --
296   --  Check for valid combinaison
297   --
298   open csr_comb_flex_cagr;
299   fetch csr_comb_flex_cagr
300         into l_exists;
301   if (csr_comb_flex_cagr%found) then
302     --
303     close csr_comb_flex_cagr;
304     --
305     hr_utility.set_message(800,'PER_52808_CAGR_GRADE_EXISTS');
306     hr_utility.raise_error;
307   end if;
308   --
309   close csr_comb_flex_cagr;
310   --
311   hr_utility.set_location('Leaving:'||l_proc, 20);
312 end chk_comb_flex_cagr;
313 --
314 -- -----------------------------------------------------------------------
315 -- |------------------------------< chk_df >-----------------------------|
316 -- -----------------------------------------------------------------------
317 --
318 -- Description:
319 --   Validates the all Descriptive Flexfield values.
320 --
321 -- Pre-conditions:
322 --   All other columns have been validated. Must be called as the
323 --   last step from insert_validate and update_validate.
324 --
325 -- In Arguments:
326 --   p_rec
327 --
328 -- Post Success:
329 --   If the Descriptive Flexfield structure column and data values are
330 --   all valid this procedure will end normally and processing will
331 --   continue.
332 --
333 -- Post Failure:
334 --   If the Descriptive Flexfield structure column value or any of
335 --   the data values are invalid then an application error is raised as
336 --   a PL/SQL exception.
337 --
338 -- Access Status:
339 --   Internal Row Handler Use Only.
340 --
341 procedure chk_df
342   (p_rec in per_grs_shd.g_rec_type) is
343 --
344   l_proc    varchar2(72) := g_package||'chk_df';
345 --
346 begin
347   hr_utility.set_location('Entering:'||l_proc, 10);
348   --
349   if ((p_rec.cagr_grade_structure_id is not null) and (
350      nvl(per_grs_shd.g_old_rec.attribute_category, hr_api.g_varchar2) <>
351      nvl(p_rec.attribute_category, hr_api.g_varchar2) or
352      nvl(per_grs_shd.g_old_rec.attribute1, hr_api.g_varchar2) <>
353      nvl(p_rec.attribute1, hr_api.g_varchar2) or
354      nvl(per_grs_shd.g_old_rec.attribute2, hr_api.g_varchar2) <>
355      nvl(p_rec.attribute2, hr_api.g_varchar2) or
356      nvl(per_grs_shd.g_old_rec.attribute3, hr_api.g_varchar2) <>
357      nvl(p_rec.attribute3, hr_api.g_varchar2) or
358      nvl(per_grs_shd.g_old_rec.attribute4, hr_api.g_varchar2) <>
359      nvl(p_rec.attribute4, hr_api.g_varchar2) or
360      nvl(per_grs_shd.g_old_rec.attribute5, hr_api.g_varchar2) <>
361      nvl(p_rec.attribute5, hr_api.g_varchar2) or
362      nvl(per_grs_shd.g_old_rec.attribute6, hr_api.g_varchar2) <>
363      nvl(p_rec.attribute6, hr_api.g_varchar2) or
364      nvl(per_grs_shd.g_old_rec.attribute7, hr_api.g_varchar2) <>
365      nvl(p_rec.attribute7, hr_api.g_varchar2) or
366      nvl(per_grs_shd.g_old_rec.attribute8, hr_api.g_varchar2) <>
367      nvl(p_rec.attribute8, hr_api.g_varchar2) or
368      nvl(per_grs_shd.g_old_rec.attribute9, hr_api.g_varchar2) <>
369      nvl(p_rec.attribute9, hr_api.g_varchar2) or
370      nvl(per_grs_shd.g_old_rec.attribute10, hr_api.g_varchar2) <>
371      nvl(p_rec.attribute10, hr_api.g_varchar2) or
372      nvl(per_grs_shd.g_old_rec.attribute11, hr_api.g_varchar2) <>
373      nvl(p_rec.attribute11, hr_api.g_varchar2) or
374      nvl(per_grs_shd.g_old_rec.attribute12, hr_api.g_varchar2) <>
375      nvl(p_rec.attribute12, hr_api.g_varchar2) or
376      nvl(per_grs_shd.g_old_rec.attribute13, hr_api.g_varchar2) <>
377      nvl(p_rec.attribute13, hr_api.g_varchar2) or
378      nvl(per_grs_shd.g_old_rec.attribute14, hr_api.g_varchar2) <>
379      nvl(p_rec.attribute14, hr_api.g_varchar2) or
380      nvl(per_grs_shd.g_old_rec.attribute15, hr_api.g_varchar2) <>
381      nvl(p_rec.attribute15, hr_api.g_varchar2) or
382      nvl(per_grs_shd.g_old_rec.attribute16, hr_api.g_varchar2) <>
383      nvl(p_rec.attribute16, hr_api.g_varchar2) or
384      nvl(per_grs_shd.g_old_rec.attribute17, hr_api.g_varchar2) <>
385      nvl(p_rec.attribute17, hr_api.g_varchar2) or
386      nvl(per_grs_shd.g_old_rec.attribute18, hr_api.g_varchar2) <>
387      nvl(p_rec.attribute18, hr_api.g_varchar2) or
388      nvl(per_grs_shd.g_old_rec.attribute19, hr_api.g_varchar2) <>
389      nvl(p_rec.attribute19, hr_api.g_varchar2) or
390      nvl(per_grs_shd.g_old_rec.attribute20, hr_api.g_varchar2) <>
391      nvl(p_rec.attribute20, hr_api.g_varchar2)))
392      or
393      (p_rec.cagr_grade_structure_id is null) then
394     --
395     -- Only execute the validation if absolutely necessary:
396     -- a) During update, the structure column value or any
397     --    of the attribute values have actually changed.
398     -- b) During insert.
399     --
400     hr_dflex_utility.ins_or_upd_descflex_attribs
401       (p_appl_short_name    => 'PER'
402       ,p_descflex_name      => 'PER_CAGR_GRADE_STRUCTURES'
403       ,p_attribute_category => p_rec.attribute_category
404       ,p_attribute1_name    => 'ATTRIBUTE1'
405       ,p_attribute1_value   => p_rec.attribute1
406       ,p_attribute2_name    => 'ATTRIBUTE2'
407       ,p_attribute2_value   => p_rec.attribute2
408       ,p_attribute3_name    => 'ATTRIBUTE3'
409       ,p_attribute3_value   => p_rec.attribute3
410       ,p_attribute4_name    => 'ATTRIBUTE4'
411       ,p_attribute4_value   => p_rec.attribute4
412       ,p_attribute5_name    => 'ATTRIBUTE5'
413       ,p_attribute5_value   => p_rec.attribute5
414       ,p_attribute6_name    => 'ATTRIBUTE6'
415       ,p_attribute6_value   => p_rec.attribute6
416       ,p_attribute7_name    => 'ATTRIBUTE7'
417       ,p_attribute7_value   => p_rec.attribute7
418       ,p_attribute8_name    => 'ATTRIBUTE8'
419       ,p_attribute8_value   => p_rec.attribute8
420       ,p_attribute9_name    => 'ATTRIBUTE9'
424       ,p_attribute11_name   => 'ATTRIBUTE11'
421       ,p_attribute9_value   => p_rec.attribute9
422       ,p_attribute10_name   => 'ATTRIBUTE10'
423       ,p_attribute10_value  => p_rec.attribute10
425       ,p_attribute11_value  => p_rec.attribute11
426       ,p_attribute12_name   => 'ATTRIBUTE12'
427       ,p_attribute12_value  => p_rec.attribute12
428       ,p_attribute13_name   => 'ATTRIBUTE13'
429       ,p_attribute13_value  => p_rec.attribute13
430       ,p_attribute14_name   => 'ATTRIBUTE14'
431       ,p_attribute14_value  => p_rec.attribute14
432       ,p_attribute15_name   => 'ATTRIBUTE15'
433       ,p_attribute15_value  => p_rec.attribute15
434       ,p_attribute16_name   => 'ATTRIBUTE16'
435       ,p_attribute16_value  => p_rec.attribute16
436       ,p_attribute17_name   => 'ATTRIBUTE17'
437       ,p_attribute17_value  => p_rec.attribute17
438       ,p_attribute18_name   => 'ATTRIBUTE18'
439       ,p_attribute18_value  => p_rec.attribute18
440       ,p_attribute19_name   => 'ATTRIBUTE19'
441       ,p_attribute19_value  => p_rec.attribute19
442       ,p_attribute20_name   => 'ATTRIBUTE20'
443       ,p_attribute20_value  => p_rec.attribute20
444       );
445   end if;
446   --
447   hr_utility.set_location(' Leaving:'||l_proc, 20);
448 end chk_df;
449 --
450 --  ---------------------------------------------------------------------------
451 --  |-----------------< chk_dynamic_insert_allowed >--------------------------|
452 --  ---------------------------------------------------------------------------
453 --
454 --  Description:
455 --    Check that the passed in lookup code exists in fnd_lookups for the with an
456 --    enabled flag set to 'Y' .
457 --
458 --  Pre-conditions:
459 --    None
460 --
461 --  In Arguments:
462 --    p_dynamic_insert_allowed
463 --    p_effective_date
464 --
465 --  Post Success:
466 --    If lookup exists and can be derived then processing
467 --    continues
468 --
469 --  Post Failure:
470 --    If lookup is not valid or cannot be derived then an
471 --    application error is raised and processing is terminated
472 --
473 --  Access Status:
474 --    Internal Row Handler Use Only.
475 --
476 procedure chk_dynamic_insert_allowed
477  (p_cagr_grade_structure_id in     per_cagr_grade_structures.cagr_grade_structure_id%TYPE
478  ,p_dynamic_insert_allowed  in     per_cagr_grade_structures.dynamic_insert_allowed%TYPE
479  ,p_effective_date          in     date
480  ,p_object_version_number   in     per_cagr_grade_structures.object_version_number%TYPE
481  ) is
482 --
483    l_proc           varchar2(72)  :=  g_package||'chk_dynamic_insert_allowed';
484    l_exists         varchar2(1);
485    l_api_updating   boolean;
486 --
487 begin
488   hr_utility.set_location('Entering:'|| l_proc, 10);
489   --
490   -- Check mandatory parameters have been set
491   --
492   hr_api.mandatory_arg_error
493     (p_api_name       => l_proc
494     ,p_argument       => 'effective_date'
495     ,p_argument_value => p_effective_date
496     );
497   --
498   hr_api.mandatory_arg_error
499     (p_api_name       =>  l_proc
500     ,p_argument       =>  'dynamic_insert_allowed'
501     ,p_argument_value =>  p_dynamic_insert_allowed
502     );
503   --
504   hr_utility.set_location(l_proc, 20);
505   --
506   l_api_updating := per_grs_shd.api_updating
507          (p_cagr_grade_structure_id   => p_cagr_grade_structure_id
508          ,p_object_version_number     => p_object_version_number
509          ,p_effective_date	      => p_effective_date
510          );
511   --
512   hr_utility.set_location(l_proc, 30);
513   --
514   if ((l_api_updating and
515        nvl(per_grs_shd.g_old_rec.dynamic_insert_allowed, hr_api.g_varchar2)<>
516        nvl(p_dynamic_insert_allowed, hr_api.g_varchar2))
517     or (NOT l_api_updating))
518   then
519     hr_utility.set_location(l_proc, 40);
520     --
521       --
522       -- Check that the type exists in hr_lookups for the
523       -- lookup type 'YES_NO' with an enabled flag set to 'Y'.
524       --
525       if hr_api.not_exists_in_fnd_lookups
526         (p_effective_date        => p_effective_date
527         ,p_lookup_type           => 'YES_NO'
528         ,p_lookup_code           => p_dynamic_insert_allowed
529         )
530       then
531         --
532         hr_utility.set_message(800, 'PER_52614_GRS_INV_DYNAMIC_INS');
533         hr_utility.raise_error;
534         --
535       end if;
536      --
537      end if;
538      --
539     hr_utility.set_location(' Leaving:'|| l_proc, 60);
540   --
541 end chk_dynamic_insert_allowed;
542 --
543 --  ---------------------------------------------------------------------------
544 --  |-----------------------< chk_cagr_grades_exists>------------------------|
545 --  ---------------------------------------------------------------------------
546 --
547 --  Description:
548 --    Procedure checks whether the given cagr grade structures is referenced by
549 --    any cagr grades.
550 --
551 --  Pre-conditions:
552 --    None
553 --
554 --  In Arguments:
555 --    p_cagr_grade_structure_id
556 --
560 --  Post Failure :
557 --  Post Success :
558 --    If the above business rules are satisfied, processing continues
559 --
561 --    If the above business rules are violated, an application error
562 --    is raised and processing terminates
563 --
564 --  Access Status:
565 --    Internal Development Use Only.
566 --
567 Procedure chk_cagr_grades_exists
568  (p_cagr_grade_structure_id in per_cagr_grades.cagr_grade_structure_id%TYPE) is
569    --
570    cursor csr_cagr_grade is
571     select '1' from per_cagr_grades
572     where cagr_grade_structure_id = p_cagr_grade_structure_id;
573    --
574    l_proc           varchar2(72)  :=  g_package||'chk_cagr_grades_exists';
575    l_exists         varchar2(1);
576 --
577 begin
578   --
579   hr_utility.set_location('Entering:'|| l_proc, 10);
580   --
581   -- Perform CAGR_GRADE_STRUCTURE_ID mandatory check
582   --
583   hr_api.mandatory_arg_error
584     (p_api_name       => l_proc
585     ,p_argument       => 'cagr_grade_structure_id'
586     ,p_argument_value => p_cagr_grade_structure_id
587    );
588   --
589   hr_utility.set_location(l_proc,10);
590   --
591   --  Check for valid CAGR_GRADE_STRUCTURE_ID
592   --
593   open csr_cagr_grade;
594   fetch csr_cagr_grade
595         into l_exists;
596   if (csr_cagr_grade%found) then
597     --
598     close csr_cagr_grade;
599     --
600     hr_utility.set_message(800,'PER_52615_GRS_DEL_GRA');
601     hr_utility.raise_error;
602   end if;
603   --
604   close csr_cagr_grade;
605   --
606     hr_utility.set_location('Leaving:'|| l_proc, 20);
607   --
608 end chk_cagr_grades_exists;
609 --
610 -- ----------------------------------------------------------------------------
611 -- |---------------------------< insert_validate >----------------------------|
612 -- ----------------------------------------------------------------------------
613 Procedure insert_validate(p_effective_date in date,
614 			  p_rec in per_grs_shd.g_rec_type) is
615 --
616   l_proc  varchar2(72) := g_package||'insert_validate';
617 --
618 Begin
619   hr_utility.set_location('Entering:'||l_proc, 5);
620   --
621   -- Call all supporting business operations
622   --
623   chk_cagr_grade_structure_id
624   (p_cagr_grade_structure_id    => p_rec.cagr_grade_structure_id,
625    p_object_version_number 	=> p_rec.object_version_number,
626    p_effective_date		=> p_effective_date);
627   --
628   chk_collective_agreement_id
629   (p_collective_agreement_id	=> p_rec.collective_agreement_id);
630   --
631   chk_id_flex_num
632   (p_id_flex_num 		=> p_rec.id_flex_num);
633   --
634   chk_comb_flex_cagr
635   (p_collective_agreement_id	=> p_rec.collective_agreement_id,
636    p_id_flex_num 		=> p_rec.id_flex_num);
637   --
638   chk_df
639   (p_rec	=> p_rec);
640   --
641   chk_dynamic_insert_allowed
642   (p_cagr_grade_structure_id  	=> p_rec.cagr_grade_structure_id
643   ,p_dynamic_insert_allowed  	=> p_rec.dynamic_insert_allowed
644   ,p_effective_date          	=> p_effective_date
645   ,p_object_version_number   	=> p_rec.object_version_number
646   );
647   --
648   --
649   --
650   hr_utility.set_location(' Leaving:'||l_proc, 10);
651 End insert_validate;
652 --
653 -- ----------------------------------------------------------------------------
654 -- |---------------------------< update_validate >----------------------------|
655 -- ----------------------------------------------------------------------------
656 Procedure update_validate( p_effective_date in date,
657 			   p_rec in per_grs_shd.g_rec_type) is
658 --
659   l_proc  varchar2(72) := g_package||'update_validate';
660 --
661 Begin
662   hr_utility.set_location('Entering:'||l_proc, 5);
663   --
664   -- Call all supporting business operations
665   --
666   chk_cagr_grade_structure_id
667   (p_cagr_grade_structure_id          => p_rec.cagr_grade_structure_id,
668    p_object_version_number 	      => p_rec.object_version_number,
669    p_effective_date		      => p_effective_date);
670   --
671   chk_collective_agreement_id
672   (p_collective_agreement_id	=> p_rec.collective_agreement_id);
673   --
674   chk_id_flex_num
675   (p_id_flex_num 		=> p_rec.id_flex_num);
676   --
677   chk_df
678   (p_rec	=> p_rec);
679   --
680   chk_dynamic_insert_allowed
681   (p_cagr_grade_structure_id  	=> p_rec.cagr_grade_structure_id
682   ,p_dynamic_insert_allowed  	=> p_rec.dynamic_insert_allowed
683   ,p_effective_date          	=> p_effective_date
684   ,p_object_version_number   	=> p_rec.object_version_number);
685   --
686   hr_utility.set_location(' Leaving:'||l_proc, 10);
687 --
688 End update_validate;
689 --
690 -- ----------------------------------------------------------------------------
691 -- |---------------------------< delete_validate >----------------------------|
692 -- ----------------------------------------------------------------------------
693 Procedure delete_validate(p_effective_date in date,
694 			  p_rec in per_grs_shd.g_rec_type) is
695 --
696   l_proc  varchar2(72) := g_package||'delete_validate';
697 --
698 Begin
699   hr_utility.set_location('Entering:'||l_proc, 5);
700   --
701   -- Call all supporting business operations
702   --
706   hr_utility.set_location(' Leaving:'||l_proc, 10);
703   chk_cagr_grades_exists
704   (p_cagr_grade_structure_id => p_rec.cagr_grade_structure_id);
705   --
707 End delete_validate;
708 --
709 end per_grs_bus;