DBA Data[Home] [Help]

PACKAGE BODY: APPS.AME_APG_BUS

Source


1 Package Body ame_apg_bus as
2 /* $Header: amapgrhi.pkb 120.6 2006/10/05 16:02:47 pvelugul noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  ame_apg_bus.';  -- Global package name
9 --
10 
11 
12 -- ----------------------------------------------------------------------------
13 -- |-------------------------< CHK_NAME >---------------------------|
14 -- ----------------------------------------------------------------------------
15 -- {Start Of Comments}
16 --
17 -- Description:
18 --  This procedure validates the uniqueness of approval group's name.
19 --
20 -- Pre-Requisites:
24 --   p_name
21 --   None
22 --
23 -- In Parameters:
25 --   p_effective_date
26 --
27 -- Post Success:
28 --   Processing continues if a valid name has been entered.
29 --
30 -- Post Failure:
31 --   An application error is raised if the name is not unique.
32 --
33 -- Access Status:
34 --   Internal Row Handler Use Only.
35 --
36 -- {End Of Comments}
37 -- ----------------------------------------------------------------------------
38 procedure chk_name(p_name                in   varchar2
39                   ) IS
40 --
41   l_proc     varchar2(72) := g_package || 'CHK_NAME';
42   Begin
43     hr_utility.set_location('Entering:'||l_proc,10);
44     hr_api.mandatory_arg_error(p_api_name           => l_proc
45                               ,p_argument           => 'NAME'
46                               ,p_argument_value     => p_name
47                               );
48     hr_utility.set_location(' Leaving:'||l_proc,30);
49   exception
50     when app_exception.application_exception then
51       if hr_multi_message.exception_add
52                      (p_associated_column1 => 'AME_APPROVAL_GROUPS.NAME'
53                      ) then
54         hr_utility.set_location(' Leaving:'||l_proc, 40);
55         raise;
56       end if;
57       hr_utility.set_location( ' Leaving:'||l_proc,50 );
58   End chk_name;
59 
60 procedure chk_delete(p_approval_group_id in number
61                     ,p_effective_date in date) is
62   l_proc     varchar2(72) := g_package || 'CHK_DELETE';
63   l_count    number;
64   cursor c_sel1 is
65     select null
66       from ame_approval_groups
67       where ame_utility_pkg.check_seeddb = 'N'
68         and ame_utility_pkg.is_seed_user(created_by) = ame_util.seededDataCreatedById
69         and approval_group_id = p_approval_group_id
70         and p_effective_date between start_date and
71              nvl(end_date -(1/86400), p_effective_date);
72 begin
73     hr_utility.set_location('Entering:'||l_proc,10);
74     --+
75     hr_utility.set_location(' Leaving:'||l_proc,30);
76   exception
77     when app_exception.application_exception then
78       if hr_multi_message.exception_add
79                      (p_associated_column1 => 'AME_APPROVAL_GROUPS.DELETE'
80                      ) then
81         hr_utility.set_location(' Leaving:'||l_proc, 40);
82         raise;
83       end if;
84       hr_utility.set_location( ' Leaving:'||l_proc,50 );
85 end chk_delete;
86 -- ----------------------------------------------------------------------------
87 -- |-------------------------< CHK_UNIQUE >---------------------------|
88 -- ----------------------------------------------------------------------------
89 -- {Start Of Comments}
90 --
91 -- Description:
92 --  This procedure validates the uniqueness of approval group's name.
93 --
94 -- Pre-Requisites:
95 --   None
96 --
97 -- In Parameters:
98 --   p_name
99 --   p_effective_date
100 --
101 -- Post Success:
102 --   Processing continues if a valid name has been entered.
103 --
104 -- Post Failure:
105 --   An application error is raised if the name is not unique.
106 --
107 -- Access Status:
108 --   Internal Row Handler Use Only.
109 --
110 -- {End Of Comments}
111 -- ----------------------------------------------------------------------------
112 procedure chk_unique(p_name                in   varchar2
113                     ,p_effective_date      in   date
114                   ) IS
115 --
116   l_proc     varchar2(72) := g_package || 'CHK_UNIQUE';
117   l_count    number;
118 --
119 -- Cursor to find number of groups with name=p_name
120 --
121   Cursor C_Sel1 Is
122     select count(name)
123     from   ame_approval_groups t
124     where t.name = p_name
125     and p_effective_date between t.start_date and t.end_date;
126 
127   Begin
128     hr_utility.set_location('Entering:'||l_proc,10);
129     -- Check if the name is already in use by another approval group
130     open C_Sel1;
131     fetch C_Sel1 into l_count;
132     close C_Sel1;
133     if l_count <> 0 then
134       fnd_message.set_name('PER','AME_400561_APG_NAME_NOT_UNQ');
135       fnd_message.raise_error;
136     end if;
137     hr_utility.set_location(' Leaving:'||l_proc,30);
138   exception
139     when app_exception.application_exception then
140       if hr_multi_message.exception_add
141                      (p_associated_column1 => 'AME_APPROVAL_GROUPS.NAME'
142                      ) then
143         hr_utility.set_location(' Leaving:'||l_proc, 40);
144         raise;
145       end if;
146       hr_utility.set_location( ' Leaving:'||l_proc,50 );
147   End chk_unique;
148 
149 -- ----------------------------------------------------------------------------
150 -- |-------------------------< CHK_IS_STATIC >---------------------------|
151 -- ----------------------------------------------------------------------------
152 -- {Start Of Comments}
153 --
154 -- Description:
155 --  This procedure validates is_static which should be in ('Y','N')
156 --
157 -- Pre-Requisites:
161 --   p_is_static
158 --   None
159 --
160 -- In Parameters:
162 --
163 -- Post Success:
164 --   Processing continues if is_static is in ('Y','N').
165 --
166 -- Post Failure:
167 --   An application error is raised.
168 --
169 -- Access Status:
170 --   Internal Row Handler Use Only.
171 --
172 -- {End Of Comments}
173 -- ----------------------------------------------------------------------------
174 procedure chk_is_static(p_is_static           in   varchar2
175                        ) IS
176 --
177   l_proc     varchar2(72) := g_package || 'CHK_IS_STATIC';
178 --
179 
180   Begin
181     hr_utility.set_location('Entering:'||l_proc,10);
182     hr_api.mandatory_arg_error(p_api_name           => l_proc
183                               ,p_argument           => 'IS_STATIC'
184                               ,p_argument_value     => p_is_static
185                               );
186     if p_is_static not in('Y','N') then
187       fnd_message.set_name('PER','AME_400562_APG_INVALID_USG_TYP');
188       fnd_message.raise_error;
189     end if;
190     hr_utility.set_location(' Leaving:'||l_proc,30);
191   exception
192     when app_exception.application_exception then
193       if hr_multi_message.exception_add
194                      (p_associated_column1 => 'AME_APPROVAL_GROUPS.IS_STATIC'
195                      ) then
196         hr_utility.set_location(' Leaving:'||l_proc, 40);
197         raise;
198       end if;
199       hr_utility.set_location( ' Leaving:'||l_proc,50 );
200   End chk_is_static;
201 
202 
203 -- ----------------------------------------------------------------------------
204 -- |-------------------------< CHK_QUERY_STRING >---------------------------|
205 -- ----------------------------------------------------------------------------
206 -- {Start Of Comments}
207 --
208 -- Description:
209 --  This procedure checks if query string is not null when is_static ='Y'.
210 --
211 -- Pre-Requisites:
212 --   None
213 --
214 -- In Parameters:
215 --   p_is_static
216 --   p_query_string
217 --
218 -- Post Success:
219 --   Processing continues if query_string is not null when is_static = 'Y'.
220 --
221 -- Post Failure:
222 --   An application error is raised.
223 --
224 -- Access Status:
225 --   Internal Row Handler Use Only.
226 --
227 -- {End Of Comments}
228 -- ----------------------------------------------------------------------------
229 procedure chk_query_string(p_is_static           in   varchar2
230                           ,p_query_string        in   varchar2
231                           ) IS
232 --
233   l_proc      varchar2(72) := g_package || 'CHK_QUERY_STRING';
234   l_validated varchar2(1);
235   tempInt integer;
236   transIdPlaceholderPosition integer;
237   transIdPlaceholderPosition2 integer;
238   upperTransIdPlaceholder      varchar2(100);
239   querystring ame_approval_groups.query_string%type;
240   l_valid  varchar2(1000);
241 --
242 
243   Begin
244     hr_utility.set_location('Entering:'||l_proc,10);
245     if (p_is_static = 'Y' and p_query_string is not null) then
246       fnd_message.set_name('PER','AME_400563_APG_INV_USG_QRY_CMB');
247       fnd_message.raise_error;
248     end if;
249     if (p_is_static = 'N' and p_query_string is null) then
250       fnd_message.set_name('PER','AME_400556_APG_EMPTY_QUERY');
251       fnd_message.raise_error;
252     end if;
253     if(p_is_static = 'N') then
254       if(instrb(p_query_string, ';', 1, 1) > 0) or
255          (instrb(p_query_string, '--', 1, 1) > 0) or
256          (instrb(p_query_string, '/*', 1, 1) > 0) or
260       end if;
257          (instrb(p_query_string, '*/', 1, 1) > 0) then
258           fnd_message.set_name('PER','AME_400165_ATT_DYN_USG_COMM');
259           fnd_message.raise_error;
261       tempInt := 1;
262       queryString := upper(p_query_string);
263       upperTransIdPlaceholder := upper(ame_util.transactionIdPlaceholder);
264       loop
265         transIdPlaceholderPosition :=
266             instrb(queryString, upperTransIdPlaceholder, 1, tempInt);
267         if(transIdPlaceholderPosition = 0) then
268           exit;
269         end if;
270         transIdPlaceholderPosition2 :=
271             instrb(p_query_string, ame_util.transactionIdPlaceholder, 1, tempInt);
272         if(transIdPlaceholderPosition <> transIdPlaceholderPosition2) then
273           fnd_message.set_name('PER','AME_400635_APG_QRY_STR_BND_VAR');
274           fnd_message.raise_error;
275         end if;
276         tempInt := tempInt + 1;
277       end loop;
278       /*if(ame_util.isArgumentTooLong(tableNameIn => 'ame_approval_groups',
279                                     columnNameIn => 'query_string',
280                                     argumentIn => p_query_string)) then
281           fnd_message.set_name('PER','AME_400163_ATT_USAGE_LONG');
282           fnd_message.raise_error;
283       end if;*/
284       /* The following utility handles the error. So nothing needs to be done here */
285       ame_util.checkForSqlInjection(queryStringIn => queryString);
286       l_valid := ame_utility_pkg.validate_query(p_query_string  => p_query_string
287                                              ,p_columns       => 1
288                                              ,p_object        => ame_util2.approverGroupObject
289                                              );
290       if l_valid <> 'Y' then
291       fnd_message.raise_error;
292       end if;
293     end if;
294     hr_utility.set_location(' Leaving:'||l_proc,30);
295   exception
296     when app_exception.application_exception then
297       if hr_multi_message.exception_add
298                      (p_associated_column1 => 'AME_APPROVAL_GROUPS.QUERY_STRING'
299                      ) then
300         hr_utility.set_location(' Leaving:'||l_proc, 40);
301         raise;
302       end if;
303       hr_utility.set_location( ' Leaving:'||l_proc,50 );
304   End chk_query_string;
305 
306 
307 -- ----------------------------------------------------------------------------
308 -- |-----------------------< chk_non_updateable_args >------------------------|
309 -- ----------------------------------------------------------------------------
310 -- {Start Of Comments}
311 --
312 -- Description:
313 --   This procedure is used to ensure that non updateable attributes have
314 --   not been updated. If an attribute has been updated an error is generated.
315 --
316 -- Pre Conditions:
317 --   g_old_rec has been populated with details of the values currently in
318 --   the database.
319 --
320 -- In Arguments:
321 --   p_rec has been populated with the updated values the user would like the
322 --   record set to.
323 --
324 -- Post Success:
325 --   Processing continues if all the non updateable attributes have not
326 --   changed.
327 --
328 -- Post Failure:
329 --   An application error is raised if any of the non updatable attributes
330 --   have been altered.
331 --
332 -- {End Of Comments}
333 -- ----------------------------------------------------------------------------
334 Procedure chk_non_updateable_args
335   (p_effective_date  in date
336   ,p_rec             in ame_apg_shd.g_rec_type
337   ) IS
338 --
339   l_proc     varchar2(72) := g_package || 'chk_non_updateable_args';
340   l_created_by          ame_approval_groups.created_by%TYPE;
341 --
342 --
343 -- Cursor to find created_by value for the row
344 --
345 --  Cursor C_Sel1 Is
346 --    select t.created_by
347 --    from   ame_approval_groups t
348 --    where t.approval_group_id = p_rec.approval_group_id
349 --    and p_effective_date between t.start_date and t.end_date;
350 Begin
351   --
352   -- Only proceed with the validation if a row exists for the current
353   -- record in the HR Schema.
354   --
355   IF NOT ame_apg_shd.api_updating
356       (p_approval_group_id =>  p_rec.approval_group_id
357       ,p_effective_date                   => p_effective_date
358       ,p_object_version_number            => p_rec.object_version_number
359       ) THEN
360      fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
361      fnd_message.set_token('PROCEDURE ', l_proc);
362      fnd_message.set_token('STEP ', '5');
363      fnd_message.raise_error;
364   END IF;
365   --
366   -- EDIT_HERE: Add checks to ensure non-updateable args have
367   --            not been updated.
368   --
369   --
370   -- If the group is seeded, do not allow updation of the group values
371   --
372   --open C_Sel1;
373   --fetch C_Sel1 into l_created_by;
374   --close C_Sel1;
375   --
376   -- NAME is non-updateable if the group is seeded
377 
378   --if l_created_by = ame_util.seededDataCreatedById and
379     if nvl(p_rec.name, hr_api.g_varchar2) <>
380        nvl(ame_apg_shd.g_old_rec.name,hr_api.g_varchar2)then
381      hr_api.argument_changed_error
382           (p_api_name   => l_proc
383           ,p_argument   => 'NAME'
384           ,p_base_table => ame_con_shd.g_tab_nam
385           );
386   end if;
387   --
388   -- DESCRIPTION is non-updateable if the group is seeded
389 
390   -- if l_created_by = ame_util.seededDataCreatedById and
391   --     nvl(p_rec.description, hr_api.g_varchar2) <>
392   --     nvl(ame_apg_shd.g_old_rec.description,hr_api.g_varchar2)then
393   --   hr_api.argument_changed_error
397   --        );
394   --        (p_api_name   => l_proc
395   --        ,p_argument   => 'DESCRIPTION'
396   --        ,p_base_table => ame_con_shd.g_tab_nam
398   --end if;
399   --
400   -- IS_STATIC is non-updateable if the group is seeded
401 
402   --if l_created_by = ame_util.seededDataCreatedById and
403   --     nvl(p_rec.is_static, hr_api.g_varchar2) <>
404   --     nvl(ame_apg_shd.g_old_rec.is_static,hr_api.g_varchar2)then
405   --   hr_api.argument_changed_error
406   --        (p_api_name   => l_proc
407   --        ,p_argument   => 'IS_STATIC'
408   --        ,p_base_table => ame_con_shd.g_tab_nam
409   --        );
410   --end if;
411   --
412   -- QUERY_STRING is non-updateable if the group is seeded
413 
414   -- if l_created_by = ame_util.seededDataCreatedById and
415   --     nvl(p_rec.query_string, hr_api.g_varchar2) <>
416   --     nvl(ame_apg_shd.g_old_rec.query_string,hr_api.g_varchar2)then
417   --   hr_api.argument_changed_error
418   --        (p_api_name   => l_proc
419   --        ,p_argument   => 'QUERY_STRING'
420   --        ,p_base_table => ame_con_shd.g_tab_nam
421   --        );
422   --end if;
423 End chk_non_updateable_args;
424 --
425 -- ----------------------------------------------------------------------------
426 -- |--------------------------< dt_update_validate >--------------------------|
427 -- ----------------------------------------------------------------------------
428 -- {Start Of Comments}
429 --
430 -- Description:
431 --   This procedure is used for referential integrity of datetracked
432 --   parent entities when a datetrack update operation is taking place
433 --   and where there is no cascading of update defined for this entity.
434 --
435 -- Prerequisites:
436 --   This procedure is called from the update_validate.
437 --
438 -- In Parameters:
439 --
440 -- Post Success:
441 --   Processing continues.
442 --
443 -- Post Failure:
444 --
445 -- Developer Implementation Notes:
446 --   This procedure should not need maintenance unless the HR Schema model
447 --   changes.
448 --
449 -- Access Status:
450 --   Internal Row Handler Use Only.
451 --
452 -- {End Of Comments}
453 -- ----------------------------------------------------------------------------
454 Procedure dt_update_validate
455   (p_datetrack_mode                in varchar2
456   ,p_validation_start_date         in date
457   ,p_validation_end_date           in date
458   ) Is
459 --
460   l_proc  varchar2(72) := g_package||'dt_update_validate';
461 --
462 Begin
463   --
464   -- Ensure that the p_datetrack_mode argument is not null
465   --
466   hr_api.mandatory_arg_error
467     (p_api_name       => l_proc
468     ,p_argument       => 'datetrack_mode'
469     ,p_argument_value => p_datetrack_mode
470     );
471   --
472   -- Mode will be valid, as this is checked at the start of the upd.
473   --
474   -- Ensure the arguments are not null
475   --
476   hr_api.mandatory_arg_error
477     (p_api_name       => l_proc
478     ,p_argument       => 'validation_start_date'
479     ,p_argument_value => p_validation_start_date
480     );
481   --
482   /*hr_api.mandatory_arg_error
483     (p_api_name       => l_proc
484     ,p_argument       => 'validation_end_date'
485     ,p_argument_value => p_validation_end_date
486     );*/
487   --
488 Exception
489   When Others Then
490     --
491     -- An unhandled or unexpected error has occurred which
492     -- we must report
493     --
494     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
495     fnd_message.set_token('PROCEDURE', l_proc);
496     fnd_message.set_token('STEP','15');
497     fnd_message.raise_error;
498 End dt_update_validate;
499 --
500 -- ----------------------------------------------------------------------------
504 --
501 -- |--------------------------< dt_delete_validate >--------------------------|
502 -- ----------------------------------------------------------------------------
503 -- {Start Of Comments}
505 -- Description:
506 --   This procedure is used for referential integrity of datetracked
507 --   child entities when either a datetrack DELETE or ZAP is in operation
508 --   and where there is no cascading of delete defined for this entity.
509 --   For the datetrack mode of DELETE or ZAP we must ensure that no
510 --   datetracked child rows exist between the validation start and end
511 --   dates.
512 --
513 -- Prerequisites:
514 --   This procedure is called from the delete_validate.
515 --
516 -- In Parameters:
517 --
518 -- Post Success:
519 --   Processing continues.
520 --
521 -- Post Failure:
522 --   If a row exists by determining the returning Boolean value from the
523 --   generic dt_api.rows_exist function then we must supply an error via
524 --   the use of the local exception handler l_rows_exist.
525 --
526 -- Developer Implementation Notes:
527 --   This procedure should not need maintenance unless the HR Schema model
528 --   changes.
529 --
530 -- Access Status:
531 --   Internal Row Handler Use Only.
532 --
533 -- {End Of Comments}
534 -- ----------------------------------------------------------------------------
535 Procedure dt_delete_validate
536   (p_approval_group_id                in number
537   ,p_datetrack_mode                   in varchar2
538   ,p_validation_start_date            in date
539   ,p_validation_end_date              in date
540   ) Is
541 --
542   l_proc        varchar2(72)    := g_package||'dt_delete_validate';
543 --
544 Begin
545   --
546   -- Ensure that the p_datetrack_mode argument is not null
547   --
548   hr_api.mandatory_arg_error
549     (p_api_name       => l_proc
550     ,p_argument       => 'datetrack_mode'
551     ,p_argument_value => p_datetrack_mode
552     );
553   --
554   -- Only perform the validation if the datetrack mode is either
555   -- DELETE or ZAP
556   --
557   If (p_datetrack_mode = hr_api.g_delete or
558       p_datetrack_mode = hr_api.g_zap) then
559     --
560     --
561     -- Ensure the arguments are not null
562     --
563     hr_api.mandatory_arg_error
564       (p_api_name       => l_proc
565       ,p_argument       => 'validation_start_date'
566       ,p_argument_value => p_validation_start_date
567       );
568     --
569     /*hr_api.mandatory_arg_error
570       (p_api_name       => l_proc
571       ,p_argument       => 'validation_end_date'
572       ,p_argument_value => p_validation_end_date
573       );*/
574     --
575     hr_api.mandatory_arg_error
576       (p_api_name       => l_proc
577       ,p_argument       => 'approval_group_id'
578       ,p_argument_value => p_approval_group_id
579       );
580     --
581   ame_apg_shd.child_rows_exist
582 (p_ => p_approval_group_id
583 ,p_start_date => p_validation_start_date
584 ,p_end_date   => p_validation_end_date);
585 --
586     --
587   End If;
588   --
589 Exception
590   When Others Then
591     --
592     -- An unhandled or unexpected error has occurred which
593     -- we must report
594     --
595     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
596     fnd_message.set_token('PROCEDURE', l_proc);
597     fnd_message.set_token('STEP','15');
598     fnd_message.raise_error;
599   --
600 End dt_delete_validate;
601 --
602 -- ----------------------------------------------------------------------------
603 -- |---------------------------< insert_validate >----------------------------|
604 -- ----------------------------------------------------------------------------
605 Procedure insert_validate
606   (p_rec                   in ame_apg_shd.g_rec_type
607   ,p_effective_date        in date
608   ,p_datetrack_mode        in varchar2
609   ,p_validation_start_date in date
610   ,p_validation_end_date   in date
611   ) is
612 --
613   l_proc        varchar2(72) := g_package||'insert_validate';
614 --
615 Begin
616   hr_utility.set_location('Entering:'||l_proc, 5);
617   --
618   -- Validate Dependent Attributes
619   --
620   --
621   -- User Entered calls to validate procedures
622   hr_api.mandatory_arg_error(p_api_name       => l_proc
623                             ,p_argument       => 'description'
624                             ,p_argument_value => p_rec.description
625                             );
626   chk_name (
627             p_name            => p_rec.name
628            );
629   chk_unique (
630             p_name            => p_rec.name
631            ,p_effective_date  => p_effective_date
632            );
633   chk_is_static(
634                 p_is_static => p_rec.is_static
635                );
636   chk_query_string(
637                    p_is_static    => p_rec.is_static
638                   ,p_query_string => p_rec.query_string
639                   );
640 
641   hr_utility.set_location(' Leaving:'||l_proc, 10);
642 End insert_validate;
643 --
644 -- ----------------------------------------------------------------------------
645 -- |---------------------------< update_validate >----------------------------|
646 -- ----------------------------------------------------------------------------
647 Procedure update_validate
648   (p_rec                     in ame_apg_shd.g_rec_type
649   ,p_effective_date          in date
650   ,p_datetrack_mode          in varchar2
651   ,p_validation_start_date   in date
652   ,p_validation_end_date     in date
653   ) is
654 --
655   l_proc        varchar2(72) := g_package||'update_validate';
656 --
657 Begin
658   hr_utility.set_location('Entering:'||l_proc, 5);
659   --
660   -- Validate Dependent Attributes
661   --
662   -- Call the datetrack update integrity operation
663   --
664   dt_update_validate
665     (p_datetrack_mode                 => p_datetrack_mode
666     ,p_validation_start_date          => p_validation_start_date
667     ,p_validation_end_date            => p_validation_end_date
668     );
669   --
670   chk_non_updateable_args
671     (p_effective_date  => p_effective_date
672     ,p_rec             => p_rec
673     );
674   --
675   --
676 
677   hr_api.mandatory_arg_error(p_api_name       => l_proc
678                             ,p_argument       => 'description'
679                             ,p_argument_value => p_rec.description
680                             );
681       -- User Entered calls to validate procedures
682   chk_name (
683             p_name            => p_rec.name
684            );
685  --name is non updateable, so following code is commented
686  /*if (p_rec.name <> ame_apg_shd.g_old_rec.name) then
687     chk_unique (
688             p_name            => p_rec.name
689            ,p_effective_date  => p_effective_date
690            );
691  end if;*/
692 
693   chk_is_static(
694                 p_is_static => p_rec.is_static
695                );
696   chk_query_string(
697                    p_is_static    => p_rec.is_static
698                   ,p_query_string => p_rec.query_string
699                   );
700 
701   hr_utility.set_location(' Leaving:'||l_proc, 10);
702 End update_validate;
703 --
704 -- ----------------------------------------------------------------------------
705 -- |---------------------------< delete_validate >----------------------------|
706 -- ----------------------------------------------------------------------------
707 Procedure delete_validate
708   (p_rec                    in ame_apg_shd.g_rec_type
709   ,p_effective_date         in date
710   ,p_datetrack_mode         in varchar2
711   ,p_validation_start_date  in date
712   ,p_validation_end_date    in date
713   ) is
714 --
715   l_proc        varchar2(72) := g_package||'delete_validate';
716 --
717 Begin
718   hr_utility.set_location('Entering:'||l_proc, 5);
719   --
720   -- Call all supporting business operations
721   --
722   dt_delete_validate
723     (p_datetrack_mode                   => p_datetrack_mode
724     ,p_validation_start_date            => p_validation_start_date
725     ,p_validation_end_date              => p_validation_end_date
726     ,p_approval_group_id =>  p_rec.approval_group_id
727     );
728   chk_delete(p_approval_group_id => p_rec.approval_group_id
729             ,p_effective_date => p_effective_date);
730   --
731   hr_utility.set_location(' Leaving:'||l_proc, 10);
732 End delete_validate;
733 --
734 end ame_apg_bus;