DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_PUT_BUS

Source


1 Package Body pay_put_bus as
2 /* $Header: pyputrhi.pkb 115.0 2003/09/23 08:07 tvankayl noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  pay_put_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_user_table_id               number         default null;
15 --
16 --  ---------------------------------------------------------------------------
17 --  |----------------------< set_security_group_id >--------------------------|
18 --  ---------------------------------------------------------------------------
19 --
20 Procedure set_security_group_id
21   (p_user_table_id                        in number
22   ,p_associated_column1                   in varchar2 default null
23   ) is
24   --
25   -- Declare cursor
26   --
27   cursor csr_sec_grp is
28     select pbg.security_group_id
29       from per_business_groups_perf pbg
30          , pay_user_tables put
31      where put.user_table_id = p_user_table_id
32        and pbg.business_group_id = put.business_group_id;
33   --
34   -- Declare local variables
35   --
36   l_security_group_id number;
37   l_proc              varchar2(72)  :=  g_package||'set_security_group_id';
38   --
39 begin
40   --
41   hr_utility.set_location('Entering:'|| l_proc, 10);
42   --
43   -- Ensure that all the mandatory parameter are not null
44   --
45   hr_api.mandatory_arg_error
46     (p_api_name           => l_proc
47     ,p_argument           => 'user_table_id'
48     ,p_argument_value     => p_user_table_id
49     );
50   --
51   open csr_sec_grp;
52   fetch csr_sec_grp into l_security_group_id;
53   --
54   if csr_sec_grp%notfound then
55      --
56      close csr_sec_grp;
57      --
58      -- The primary key is invalid therefore we must error
59      --
60      fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
61      hr_multi_message.add
62        (p_associated_column1
63         => nvl(p_associated_column1,'USER_TABLE_ID')
64        );
65      --
66   else
67     close csr_sec_grp;
68     --
69     -- Set the security_group_id in CLIENT_INFO
70     --
71     hr_api.set_security_group_id
72       (p_security_group_id => l_security_group_id
73       );
74   end if;
75   --
76   hr_utility.set_location(' Leaving:'|| l_proc, 20);
77   --
78 end set_security_group_id;
79 --
80 --  ---------------------------------------------------------------------------
81 --  |---------------------< return_legislation_code >-------------------------|
82 --  ---------------------------------------------------------------------------
83 --
84 Function return_legislation_code
85   (p_user_table_id                        in     number
86   )
87   Return Varchar2 Is
88   --
89   -- Declare cursor
90   --
91   cursor csr_leg_code is
92     select pbg.legislation_code
93       from per_business_groups_perf pbg
94          , pay_user_tables put
95      where put.user_table_id = p_user_table_id
96        and pbg.business_group_id (+) = put.business_group_id;
97   --
98   -- Declare local variables
99   --
100   l_legislation_code  varchar2(150);
101   l_proc              varchar2(72)  :=  g_package||'return_legislation_code';
102   --
103 Begin
104   --
105   hr_utility.set_location('Entering:'|| l_proc, 10);
106   --
107   -- Ensure that all the mandatory parameter are not null
108   --
109   hr_api.mandatory_arg_error
110     (p_api_name           => l_proc
111     ,p_argument           => 'user_table_id'
112     ,p_argument_value     => p_user_table_id
113     );
114   --
115   if ( nvl(pay_put_bus.g_user_table_id, hr_api.g_number)
116        = p_user_table_id) then
117     --
118     -- The legislation code has already been found with a previous
119     -- call to this function. Just return the value in the global
120     -- variable.
121     --
122     l_legislation_code := pay_put_bus.g_legislation_code;
123     hr_utility.set_location(l_proc, 20);
124   else
125     --
126     -- The ID is different to the last call to this function
127     -- or this is the first call to this function.
128     --
129     open csr_leg_code;
130     fetch csr_leg_code into l_legislation_code;
131     --
132     if csr_leg_code%notfound then
133       --
134       -- The primary key is invalid therefore we must error
135       --
136       close csr_leg_code;
137       fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
138       fnd_message.raise_error;
139     end if;
140     hr_utility.set_location(l_proc,30);
141     --
142     -- Set the global variables so the values are
143     -- available for the next call to this function.
144     --
145     close csr_leg_code;
146     pay_put_bus.g_user_table_id               := p_user_table_id;
147     pay_put_bus.g_legislation_code  := l_legislation_code;
148   end if;
149   hr_utility.set_location(' Leaving:'|| l_proc, 40);
150   return l_legislation_code;
151 end return_legislation_code;
152 --
153 -- ----------------------------------------------------------------------------
154 -- |--------------------------< chk_legislation_code>-------------------------|
155 -- ----------------------------------------------------------------------------
156 procedure chk_legislation_code
157 ( p_legislation_code  in varchar2 )
158 is
159 --
160 cursor csr_legislation_code is
161 select null
162 from fnd_territories
163 where territory_code = p_legislation_code ;
164 --
165 l_exists varchar2(1);
166 l_proc   varchar2(100) := g_package || 'chk_legislation_code';
167 begin
168   --
169   hr_utility.set_location('Entering:'|| l_proc, 10);
170 
171   open csr_legislation_code;
172   fetch csr_legislation_code into l_exists ;
173 
174   if csr_legislation_code%notfound then
175     close csr_legislation_code;
176     fnd_message.set_name('PAY', 'PAY_33177_LEG_CODE_INVALID');
177     fnd_message.raise_error;
178   end if;
179   close csr_legislation_code;
180 
181   hr_utility.set_location(' Leaving:'|| l_proc, 20);
182   --
183 exception
184   when app_exception.application_exception then
185     if hr_multi_message.exception_add
186        (p_associated_column1 => 'PAY_USER_TABLES.LEGISLATION_CODE'
187        ) then
188       raise;
189     end if;
190   when others then
191     if csr_legislation_code%isopen then
192       close csr_legislation_code;
193     end if;
194     raise;
195 end chk_legislation_code;
196 --
197 -- ----------------------------------------------------------------------------
198 -- |--------------------------< chk_range_or_match >--------------------------|
199 -- ----------------------------------------------------------------------------
200 procedure chk_range_or_match
201 (p_effective_date in date
202 ,p_range_or_match in varchar2
203 ) is
204 begin
205   if hr_api.not_exists_in_hrstanlookups
206      (p_effective_date => p_effective_date
207      ,p_lookup_type    => 'RANGE_MATCH'
208      ,p_lookup_code    => p_range_or_match
209      ) then
210     pay_put_shd.constraint_error('PAY_UTAB_RANGE_OR_MATCH_CHK');
211   end if;
212 exception
213   when app_exception.application_exception then
214     if hr_multi_message.exception_add
215        (p_associated_column1 => 'PAY_USER_TABLES.RANGE_OR_MATCH'
216        ) then
217       raise;
218     end if;
219 end chk_range_or_match;
220 --
221 -- ----------------------------------------------------------------------------
222 -- |--------------------------< chk_user_key_units >--------------------------|
223 -- ----------------------------------------------------------------------------
224 procedure chk_user_key_units
225 (p_effective_date in date
226 ,p_range_or_match in varchar2
227 ,p_user_key_units in varchar2
228 ) is
229 l_associated_column2 varchar2(80) := null;
230 begin
231   if hr_multi_message.no_exclusive_error
232      (p_check_column1      => 'PAY_USER_TABLES.RANGE_OR_MATCH'
233      ,p_associated_column1 => 'PAY_USER_TABLES.USER_KEY_UNITS'
234      ) then
235     if hr_api.not_exists_in_hrstanlookups
236        (p_effective_date => p_effective_date
237        ,p_lookup_type    => 'DATA_TYPE'
238        ,p_lookup_code    => p_user_key_units
239        ) then
240       pay_put_shd.constraint_error('PAY_UTAB_USER_KEY_UNITS_CHK');
241     elsif p_range_or_match = 'R' and p_user_key_units <> 'N' then
242       l_associated_column2 := 'PAY_USER_TABLES.RANGE_OR_MATCH';
243       fnd_message.set_name('PAY','PAY_33173_UTAB_BAD_RANGE_UNITS');
244       fnd_message.raise_error;
245     end if;
246   end if;
247 exception
248   when app_exception.application_exception then
249     if hr_multi_message.exception_add
250        (p_associated_column1 => 'PAY_USER_TABLES.USER_KEY_UNITS'
251        ,p_associated_column2 => l_associated_column2
252        ) then
253       raise;
254     end if;
255 end chk_user_key_units;
256 --
257 -- ----------------------------------------------------------------------------
258 -- |-------------------------< chk_user_table_name >--------------------------|
259 -- ----------------------------------------------------------------------------
260 procedure chk_user_table_name
261 (p_user_table_id         in number
262 ,p_object_version_number in number
263 ,p_user_table_name       in varchar2
264 ,p_business_group_id     in number
265 ,p_legislation_code      in varchar2
266 ) is
267 --
268 -- GENERIC row name clash.
269 --
270 cursor csr_name_exists_generic
271 (p_user_table_name in varchar2
272 ) is
273 select null
274 from   pay_user_tables put
275 where  upper(put.user_table_name) = p_user_table_name
276 ;
277 --
278 -- STARTUP row name clash.
279 --
280 cursor csr_name_exists_startup
281 (p_user_table_name  in varchar2
282 ,p_legislation_code in varchar2
283 ) is
284 select null
285 from   pay_user_tables put
286 ,      per_business_groups_perf pbg
287 where  upper(put.user_table_name) = p_user_table_name
288 and    ((put.business_group_id = pbg.business_group_id and
289          pbg.legislation_code = p_legislation_code) or
290         (put.legislation_code = p_legislation_code) or
291         (put.legislation_code is null and put.business_group_id is null))
292 ;
293 --
294 -- USER row name clash.
295 --
296 cursor csr_name_exists_user
297 (p_user_table_name   in varchar2
298 ,p_business_group_id in number
299 ) is
300 select null
301 from   pay_user_tables put
302 ,      per_business_groups_perf pbg
303 where  upper(put.user_table_name) = p_user_table_name
304 and    ((put.business_group_id = p_business_group_id) or
305         (pbg.business_group_id = p_business_group_id and
306          pbg.legislation_code = put.legislation_code) or
307         (put.legislation_code is null and put.business_group_id is null))
308 ;
309 --
310 l_proc   varchar2(100) := g_package || 'chk_user_table_name';
311 l_name   varchar2(200);
312 l_exists varchar2(1);
313 begin
314   if not pay_put_shd.api_updating
315          (p_user_table_id         => p_user_table_id
316          ,p_object_version_number => p_object_version_number
317          ) or
318      nvl(p_user_table_name, hr_api.g_varchar2) <>
319      pay_put_shd.g_old_rec.user_table_name then
320     --
321     -- The name is mandatory.
322     --
323     hr_api.mandatory_arg_error
324     (p_api_name       =>  l_proc
325     ,p_argument       =>  'USER_TABLE_NAME'
326     ,p_argument_value =>  p_user_table_name
327     );
328     --
329     l_name := upper(p_user_table_name);
330     if hr_startup_data_api_support.g_startup_mode = 'USER' then
331       open csr_name_exists_user(l_name, p_business_group_id);
332       fetch csr_name_exists_user
333       into l_exists;
334       if csr_name_exists_user%found then
335         l_exists := 'Y';
336       end if;
337       close csr_name_exists_user;
338     elsif hr_startup_data_api_support.g_startup_mode = 'STARTUP' then
339       open csr_name_exists_startup(l_name, p_legislation_code);
340       fetch csr_name_exists_startup
341       into l_exists;
342       if csr_name_exists_startup%found then
343         l_exists := 'Y';
344       end if;
345       close csr_name_exists_startup;
346     elsif hr_startup_data_api_support.g_startup_mode = 'GENERIC' then
347       open csr_name_exists_generic(l_name);
348       fetch csr_name_exists_generic
349       into l_exists;
350       if csr_name_exists_generic%found then
351         l_exists := 'Y';
352       end if;
353       close csr_name_exists_generic;
354     end if;
355     --
356     -- Raise an error if the name already exists.
357     --
358     if l_exists = 'Y' then
359       fnd_message.set_name('PAY','PAY_7689_USER_TAB_TAB_UNIQUE');
360       fnd_message.raise_error;
361     end if;
362   end if;
363 exception
364   when app_exception.application_exception then
365     if hr_multi_message.exception_add
366        (p_associated_column1 => 'PAY_USER_TABLES.USER_TABLE_NAME'
367        ) then
368       raise;
369     end if;
370   when others then
371     if csr_name_exists_user%isopen then
372       close csr_name_exists_user;
373     elsif csr_name_exists_startup%isopen then
374       close csr_name_exists_startup;
375     elsif  csr_name_exists_generic%isopen then
376       close csr_name_exists_generic;
377     end if;
378     raise;
382 -- |-----------------------< chk_non_updateable_args >------------------------|
379 end chk_user_table_name;
380 --
381 -- ----------------------------------------------------------------------------
383 -- ----------------------------------------------------------------------------
384 -- {Start Of Comments}
385 --
386 -- Description:
387 --   This procedure is used to ensure that non updateable attributes have
388 --   not been updated. If an attribute has been updated an error is generated.
389 --
390 -- Pre Conditions:
391 --   g_old_rec has been populated with details of the values currently in
392 --   the database.
393 --
394 -- In Arguments:
395 --   p_rec has been populated with the updated values the user would like the
396 --   record set to.
397 --
398 -- Post Success:
399 --   Processing continues if all the non updateable attributes have not
400 --   changed.
401 --
402 -- Post Failure:
403 --   An application error is raised if any of the non updatable attributes
404 --   have been altered.
405 --
406 -- {End Of Comments}
407 -- ----------------------------------------------------------------------------
408 Procedure chk_non_updateable_args
409   (p_rec in pay_put_shd.g_rec_type
410   ) IS
411 --
412   l_proc     varchar2(72) := g_package || 'chk_non_updateable_args';
413 --
414 Begin
415   --
416   -- Only proceed with the validation if a row exists for the current
417   -- record in the HR Schema.
418   --
419   IF NOT pay_put_shd.api_updating
420       (p_user_table_id                     => p_rec.user_table_id
421       ,p_object_version_number             => p_rec.object_version_number
422       ) THEN
423      fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
424      fnd_message.set_token('PROCEDURE ', l_proc);
425      fnd_message.set_token('STEP ', '5');
426      fnd_message.raise_error;
427   END IF;
428   --
429   if nvl(p_rec.business_group_id, hr_api.g_number) <>
430      nvl(pay_put_shd.g_old_rec.business_group_id, hr_api.g_number) then
431      hr_api.argument_changed_error
432      (p_api_name => l_proc
433      ,p_argument => 'BUSINESS_GROUP_ID'
434      ,p_base_table => pay_put_shd.g_tab_nam
435      );
436   end if;
437   --
438   if nvl(p_rec.legislation_code, hr_api.g_varchar2) <>
439      nvl(pay_put_shd.g_old_rec.legislation_code, hr_api.g_varchar2) then
440      hr_api.argument_changed_error
441      (p_api_name => l_proc
442      ,p_argument => 'LEGISLATION_CODE'
443      ,p_base_table => pay_put_shd.g_tab_nam
444      );
445   end if;
446   --
447   if nvl(p_rec.user_key_units, hr_api.g_varchar2) <>
448      pay_put_shd.g_old_rec.user_key_units then
449      hr_api.argument_changed_error
450      (p_api_name => l_proc
451      ,p_argument => 'USER_KEY_UNITS'
452      ,p_base_table => pay_put_shd.g_tab_nam
453      );
454   end if;
455   --
456   if nvl(p_rec.range_or_match, hr_api.g_varchar2) <>
457      pay_put_shd.g_old_rec.range_or_match then
458      hr_api.argument_changed_error
459      (p_api_name => l_proc
460      ,p_argument => 'RANGE_OR_MATCH'
461      ,p_base_table => pay_put_shd.g_tab_nam
462      );
463   end if;
464 End chk_non_updateable_args;
465 --
466 -- ----------------------------------------------------------------------------
467 -- |------------------------------< chk_delete >------------------------------|
468 -- ----------------------------------------------------------------------------
469 procedure chk_delete
470 (p_user_table_id in number
471 ) is
472 cursor csr_rows_exist
473 (p_user_table_id in number
474 ) is
475 select 'Y'
476 from   pay_user_rows_f pur
477 where  pur.user_table_id = p_user_table_id
478 ;
479 --
480 cursor csr_columns_exist
481 (p_user_table_id in number
482 ) is
483 select null
484 from   pay_user_columns puc
485 where  puc.user_table_id = p_user_table_id
486 ;
487 --
488 l_ret  varchar2(1);
489 begin
490   open csr_rows_exist(p_user_table_id => p_user_table_id);
491   fetch csr_rows_exist
492   into l_ret;
493   if csr_rows_exist%found then
494     close csr_rows_exist;
495     fnd_message.set_name('PAY', 'PAY_6369_USERTAB_ROWS_FIRST');
496     hr_multi_message.add(p_associated_column1 => 'PAY_USER_TABLES.USER_TABLE_ID');
497   else
498     close csr_rows_exist;
499   end if;
500   --
501   open csr_columns_exist(p_user_table_id => p_user_table_id);
502   fetch csr_columns_exist
503   into l_ret;
504   if csr_columns_exist%found then
505     close csr_columns_exist;
506     fnd_message.set_name('PAY', 'PAY_6368_USERTAB_COLUMNS_FIRST');
507     hr_multi_message.add(p_associated_column1 => 'PAY_USER_TABLES.USER_TABLE_ID');
508   else
509     close csr_columns_exist;
510   end if;
511 exception
512   when others then
513     if csr_rows_exist%isopen then
514       close csr_rows_exist;
515     elsif csr_columns_exist%isopen then
516       close csr_columns_exist;
517     end if;
518     raise;
519 end chk_delete;
520 --
521 -- ---------------------------------------------------------------------------
522 -- |----------------------< chk_startup_action >------------------------------|
523 -- ----------------------------------------------------------------------------
524 --
525 -- Description:
526 --  This procedure will check that the current action is allowed according
527 --  to the current startup mode.
528 --
529 -- ----------------------------------------------------------------------------
530 PROCEDURE chk_startup_action
531   (p_insert               IN boolean
532   ,p_business_group_id    IN number
536 BEGIN
533   ,p_legislation_code     IN varchar2
534   ,p_legislation_subgroup IN varchar2 DEFAULT NULL) IS
535 --
537   --
538   -- Call the supporting procedure to check startup mode
539 
540   IF (p_insert) THEN
541 
542     if p_business_group_id is not null and p_legislation_code is not null then
543 	fnd_message.set_name('PAY', 'PAY_33179_BGLEG_INVALID');
544         fnd_message.raise_error;
545     end if;
546 
547     hr_startup_data_api_support.chk_startup_action
548       (p_generic_allowed   => TRUE
549       ,p_startup_allowed   => TRUE
550       ,p_user_allowed      => TRUE
551       ,p_business_group_id => p_business_group_id
552       ,p_legislation_code  => p_legislation_code
553       ,p_legislation_subgroup => p_legislation_subgroup
554       );
555   ELSE
556     hr_startup_data_api_support.chk_upd_del_startup_action
557       (p_generic_allowed   => TRUE
558       ,p_startup_allowed   => TRUE
559       ,p_user_allowed      => TRUE
560       ,p_business_group_id => p_business_group_id
561       ,p_legislation_code  => p_legislation_code
562       ,p_legislation_subgroup => p_legislation_subgroup
563       );
564   END IF;
565   --
566 END chk_startup_action;
567 --
568 -- ----------------------------------------------------------------------------
569 -- |---------------------------< insert_validate >----------------------------|
570 -- ----------------------------------------------------------------------------
571 Procedure insert_validate
572   (p_effective_date               in date
573   ,p_rec                          in pay_put_shd.g_rec_type
574   ) is
575 --
576   l_proc  varchar2(72) := g_package||'insert_validate';
577 --
578 Begin
579   hr_utility.set_location('Entering:'||l_proc, 5);
580   --
581   -- Call all supporting business operations
582   --
583   --
584   chk_startup_action(true
585                     ,p_rec.business_group_id
586                     ,p_rec.legislation_code
587                     );
588   IF hr_startup_data_api_support.g_startup_mode
589                      NOT IN ('GENERIC','STARTUP') THEN
590      --
591      -- Validate Important Attributes
592      --
593      hr_api.validate_bus_grp_id
594        (p_business_group_id => p_rec.business_group_id
595        ,p_associated_column1 => pay_put_shd.g_tab_nam
596                                 || '.BUSINESS_GROUP_ID');
597      --
598      -- after validating the set of important attributes,
599      -- if Multiple Message Detection is enabled and at least
600      -- one error has been found then abort further validation.
601      --
602      hr_multi_message.end_validation_set;
603   END IF;
604   --
605   if hr_startup_data_api_support.g_startup_mode not in ('GENERIC','USER') then
606 
607      --
608      -- Validate Important Attributes
609      --
610         chk_legislation_code(p_legislation_code => p_rec.legislation_code);
611      --
612         hr_multi_message.end_validation_set;
613 
614   end if;
615   --
616   --
617   -- Validate Dependent Attributes
618   --
619   --
620   chk_range_or_match
621   (p_effective_date => p_effective_date
622   ,p_range_or_match => p_rec.range_or_match
623   );
624   --
625   chk_user_key_units
626   (p_effective_date => p_effective_date
627   ,p_range_or_match => p_rec.range_or_match
628   ,p_user_key_units => p_rec.user_key_units
629   );
630   --
631   chk_user_table_name
632   (p_user_table_id         => p_rec.user_table_id
633   ,p_object_version_number => p_rec.object_version_number
634   ,p_user_table_name       => p_rec.user_table_name
635   ,p_business_group_id     => p_rec.business_group_id
636   ,p_legislation_code      => p_rec.legislation_code
637   );
638   --
639   -- ROW_TITLE is not validated.
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_effective_date               in date
649   ,p_rec                          in pay_put_shd.g_rec_type
650   ) is
651 --
652   l_proc  varchar2(72) := g_package||'update_validate';
653 --
654 Begin
655   hr_utility.set_location('Entering:'||l_proc, 5);
656   --
657   -- Call all supporting business operations
658   --
659   --
660   chk_startup_action(false
661                     ,p_rec.business_group_id
662                     ,p_rec.legislation_code
663                     );
664   IF hr_startup_data_api_support.g_startup_mode
665                      NOT IN ('GENERIC','STARTUP') THEN
666      --
667      -- Validate Important Attributes
668      --
669      hr_api.validate_bus_grp_id
670        (p_business_group_id => p_rec.business_group_id
671        ,p_associated_column1 => pay_put_shd.g_tab_nam
672                                 || '.BUSINESS_GROUP_ID');
673      --
674      -- After validating the set of important attributes,
675      -- if Multiple Message Detection is enabled and at least
676      -- one error has been found then abort further validation.
677      --
678      hr_multi_message.end_validation_set;
679   END IF;
680   --
681   --
682   -- Validate Dependent Attributes
683   --
684   chk_non_updateable_args
685     (p_rec              => p_rec
686     );
687   --
688   chk_user_table_name
689   (p_user_table_id         => p_rec.user_table_id
690   ,p_object_version_number => p_rec.object_version_number
691   ,p_user_table_name       => p_rec.user_table_name
692   ,p_business_group_id     => p_rec.business_group_id
693   ,p_legislation_code      => p_rec.legislation_code
694   );
695   --
696   -- ROW_TITLE is not validated.
697   --
698   hr_utility.set_location(' Leaving:'||l_proc, 10);
699 End update_validate;
700 --
701 -- ----------------------------------------------------------------------------
702 -- |---------------------------< delete_validate >----------------------------|
703 -- ----------------------------------------------------------------------------
704 Procedure delete_validate
705   (p_rec                          in pay_put_shd.g_rec_type
706   ) is
707 --
708   l_proc  varchar2(72) := g_package||'delete_validate';
709 --
710 Begin
711   hr_utility.set_location('Entering:'||l_proc, 5);
712   --
713     --
714   chk_startup_action(false
715                     ,pay_put_shd.g_old_rec.business_group_id
716                     ,pay_put_shd.g_old_rec.legislation_code
717                     );
718   IF hr_startup_data_api_support.g_startup_mode
719                      NOT IN ('GENERIC','STARTUP') THEN
720      --
721      -- Validate Important Attributes
722      --
723      --
724      -- After validating the set of important attributes,
725      -- if Multiple Message Detection is enabled and at least
726      -- one error has been found then abort further validation.
727      --
728      hr_multi_message.end_validation_set;
729   END IF;
730   --
731   -- Call all supporting business operations
732   --
733   chk_delete(p_user_table_id => p_rec.user_table_id);
734   hr_utility.set_location(' Leaving:'||l_proc, 10);
735 End delete_validate;
736 --
737 end pay_put_bus;