DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_SIR_BUS

Source


4 -- ----------------------------------------------------------------------------
1 Package Body pay_sir_bus as
2 /* $Header: pysirrhi.pkb 115.4 2003/02/05 17:11:09 arashid noship $ */
3 --
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  pay_sir_bus.';  -- Global package name
9 --
10 --
11 -- ----------------------------------------------------------------------------
12 -- |-----------------------< chk_non_updateable_args >------------------------|
13 -- ----------------------------------------------------------------------------
14 -- {Start Of Comments}
15 --
16 -- Description:
17 --   This procedure is used to ensure that non updateable attributes have
18 --   not been updated. If an attribute has been updated an error is generated.
19 --
20 -- Pre Conditions:
21 --   g_old_rec has been populated with details of the values currently in
22 --   the database.
23 --
24 -- In Arguments:
25 --   p_rec has been populated with the updated values the user would like the
26 --   record set to.
27 --
28 -- Post Success:
29 --   Processing continues if all the non updateable attributes have not
30 --   changed.
31 --
32 -- Post Failure:
33 --   An application error is raised if any of the non updatable attributes
34 --   have been altered.
35 --
36 -- {End Of Comments}
37 -- ----------------------------------------------------------------------------
38 Procedure chk_non_updateable_args
39   (p_rec in pay_sir_shd.g_rec_type
40   ) IS
41 --
42   l_proc     varchar2(72) := g_package || 'chk_non_updateable_args';
43   l_error    EXCEPTION;
44   l_argument varchar2(30);
45 --
46 Begin
47   --
48   -- Only proceed with the validation if a row exists for the current
49   -- record in the HR Schema.
50   --
51   IF NOT pay_sir_shd.api_updating
52       (p_iterative_rule_id                    => p_rec.iterative_rule_id
53       ,p_object_version_number                => p_rec.object_version_number
54       ) THEN
55      fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
56      fnd_message.set_token('PROCEDURE ', l_proc);
57      fnd_message.set_token('STEP ', '5');
58      fnd_message.raise_error;
59   END IF;
60   --
61   -- p_element_type_id
62   --
63   if nvl(p_rec.element_type_id, hr_api.g_number) <>
64 	nvl(pay_sir_shd.g_old_rec.element_type_id, hr_api.g_number)
65   then
66   l_argument := 'p_element_type_id';
67   raise l_error;
68   end if;
69   --
70   EXCEPTION
71     WHEN l_error THEN
72        hr_api.argument_changed_error
73          (p_api_name => l_proc
74          ,p_argument => l_argument);
75     WHEN OTHERS THEN
76        RAISE;
77 End chk_non_updateable_args;
78 -- ----------------------------------------------------------------------------
79 -- |-------------------------< chk_element_type_id >--------------------------|
80 -- ----------------------------------------------------------------------------
81 Procedure chk_element_type_id
82   (p_element_type_id     in number
83   ) is
84   --
85   -- Cursor to check that the element type exists.
86   --
87   cursor c_element_type_exists is
88   select null
89   from   pay_shadow_element_types pset
90   where  pset.element_type_id = p_element_type_id;
91 --
92   l_proc varchar2(72) := g_package||'chk_element_type_id';
93   l_exists varchar2(1);
94 --
95 Begin
96   hr_utility.set_location('Entering:'||l_proc, 5);
97   --
98   -- Check that the element type is not null.
99   --
100   hr_api.mandatory_arg_error
101   (p_api_name          => l_proc
102   ,p_argument          => 'ELEMENT_TYPE_ID'
103   ,p_argument_value    => p_element_type_id
104   );
105   --
106   -- Check that the element type exists
107   --
108   open c_element_type_exists;
109   fetch c_element_type_exists into l_exists;
110   if c_element_type_exists%notfound then
111     close c_element_type_exists;
112     fnd_message.set_name('PAY', 'PAY_50095_ETM_INVALID_ELE_TYPE');
113     fnd_message.raise_error;
114   end if;
115   close c_element_type_exists;
116   hr_utility.set_location('Leaving:'||l_proc, 10);
117 End chk_element_type_id;
118 --
119 -- ----------------------------------------------------------------------------
120 -- |------------------------< chk_result_name >-------------------------------|
121 -- ----------------------------------------------------------------------------
122 Procedure chk_result_name
123   (p_result_name           in varchar2
124   ,p_iterative_rule_id     in number
125   ,p_object_version_number in number
126   ) is
127 --
128   l_proc     varchar2(72) := g_package||'chk_result_name';
129   l_legislation_code   varchar2(2000);
130   l_exists             varchar2(1);
131   l_value              varchar2(2000);
132   l_output             varchar2(2000);
133   l_rgeflg             varchar2(2000);
134   l_api_updating       boolean;
135 --
136 Begin
140   ,p_object_version_number => p_object_version_number
137   hr_utility.set_location('Entering:'||l_proc, 5);
138   l_api_updating := pay_sir_shd.api_updating
139   (p_iterative_rule_id => p_iterative_rule_id
141   );
142   if (l_api_updating and nvl(p_result_name, hr_api.g_varchar2) <>
143 	 nvl(pay_sir_shd.g_old_rec.result_name, hr_api.g_varchar2)) or
144 	 not l_api_updating
145   then
146     --
147     -- Check that the name format is correct (not null database item name).
148     --
149     l_value := p_result_name;
150     hr_chkfmt.checkformat
151     (value   => l_value
152     ,format  => 'PAY_NAME'
153     ,output  => l_output
154     ,minimum => null
155     ,maximum => null
156     ,nullok  => 'N'
157     ,rgeflg  => l_rgeflg
158     ,curcode => null
159     );
160   end if;
161   hr_utility.set_location('Leaving:'||l_proc, 10);
162 End chk_result_name;
163 --
164 -- ----------------------------------------------------------------------------
165 -- |-------------------------< chk_input_value_id >---------------------------|
166 -- ----------------------------------------------------------------------------
167 Procedure chk_input_value_id
168   (p_input_value_id     in number
169   ,p_element_type_id    in number
170   ,p_iterative_rule_id  in number
171   ,p_object_version_number in number
172   ) is
173   --
174   -- Cursor to check that the input value exists (and is in the same
175   -- template as the element type).
176   --
177   cursor c_input_value_exists is
178   select null
179   from   pay_shadow_element_types pset
180   ,      pay_shadow_element_types pset1
181   ,      pay_shadow_input_values  psiv
182   where  pset.element_type_id = p_element_type_id
183   and    pset1.template_id    = pset.template_id
184   and    psiv.input_value_id  = p_input_value_id
185   and    psiv.element_type_id = pset1.element_type_id;
186 --
187   l_proc  varchar2(72)  := g_package||'chk_input_value_id';
188   l_exists   varchar2(1);
189   l_api_updating  boolean;
190 --
191 Begin
192   hr_utility.set_location('Entering:'||l_proc, 5);
193   l_api_updating := pay_sir_shd.api_updating
194     (p_iterative_rule_id    => p_iterative_rule_id
195     ,p_object_version_number => p_object_version_number
196     );
197   if (l_api_updating and nvl(p_input_value_id, hr_api.g_number) <>
198      nvl(pay_sir_shd.g_old_rec.input_value_id, hr_api.g_number)) or
199 	not l_api_updating
200   then
201     if p_input_value_id is not null then
202 	 --
203 	 -- Check that the input value exists
204 	 --
205 	 open c_input_value_exists;
206 	 fetch c_input_value_exists into l_exists;
207 	 if c_input_value_exists%notfound then
208 	   close c_input_value_exists;
209 	   fnd_message.set_name('PAY', 'PAY_50098_ETM_INVALID_INP_VAL');
210 	   fnd_message.raise_error;
211       end if;
212 	 close c_input_value_exists;
213     end if;
214   end if;
215   hr_utility.set_location('Leaving:'||l_proc, 10);
216 End chk_input_value_id;
217 --
218 -- ----------------------------------------------------------------------------
219 -- |------------------------< chk_iterative_rule_type >-----------------------|
220 -- ----------------------------------------------------------------------------
221 Procedure chk_iterative_rule_type
222   (p_effective_date         in date
223   ,p_iterative_rule_type    in varchar2
224   ,p_iterative_rule_id      in number
225   ,p_object_version_number  in number
226   ) is
227 --
228   l_proc          varchar2(72)  := g_package||'chk_iterative_rule_type';
229   l_api_updating  boolean;
230 --
231 Begin
232   hr_utility.set_location('Entering:'||l_proc, 5);
233   l_api_updating := pay_sir_shd.api_updating
234   (p_iterative_rule_id    => p_iterative_rule_id
235   ,p_object_version_number => p_object_version_number
236   );
237   if (l_api_updating and nvl(p_iterative_rule_type, hr_api.g_varchar2) <>
238 	nvl(pay_sir_shd.g_old_rec.iterative_rule_type, hr_api.g_varchar2)) or
239 	not l_api_updating
240   then
241 	--
242 	-- Iterative rule type is mandatory.
243 	--
244 	hr_api.mandatory_arg_error
245 	(p_api_name          => l_proc
246 	,p_argument          => 'ITERATIVE_RULE_TYPE'
247 	,p_argument_value    => p_iterative_rule_type
248 	);
249 	--
250 	-- Validate against hr_lookups.
251 	--
252 	if hr_api.not_exists_in_hr_lookups
253 	   (p_effective_date => p_effective_date
254 	   ,p_lookup_type    => 'ITERATIVE_RULE_TYPE'
255 	   ,p_lookup_code    => p_iterative_rule_type
256 	   )
257      then
258        fnd_message.set_name('PAY', 'HR_52966_INVALID_LOOKUP');
259        fnd_message.set_token('LOOKUP_TYPE', 'ITERATIVE_RULE_TYPE');
260        fnd_message.set_token('COLUMN', 'ITERATIVE_RULE_TYPE');
261        fnd_message.raise_error;
262      end if;
263   end if;
264   hr_utility.set_location('Leaving:'||l_proc, 10);
265 End chk_iterative_rule_type;
266 --
267 -- ----------------------------------------------------------------------------
268 -- ---------------------------< chk_severity_level >--------------------------|
269 -- ----------------------------------------------------------------------------
270 Procedure chk_severity_level
271   (p_effective_date     in date
272   ,p_severity_level     in varchar2
273   ,p_iterative_rule_id  in number
274   ,p_object_version_number in number
275   ) is
276 --
277   l_proc   varchar2(72) := g_package||'chk_severity_level';
278   l_api_updating boolean;
279 --
280 Begin
281   hr_utility.set_location('Entering:'||l_proc, 5);
282   l_api_updating := pay_sir_shd.api_updating
286   --
283   (p_iterative_rule_id     => p_iterative_rule_id
284   ,p_object_version_number => p_object_version_number
285   );
287   if (l_api_updating and nvl(p_severity_level, hr_api.g_varchar2) <>
288 	nvl(pay_sir_shd.g_old_rec.severity_level, hr_api.g_varchar2)) or
289 	not l_api_updating
290   then
291     if p_severity_level is not null then
292       --
293       -- Validate against hr_lookups.
294       --
295       if hr_api.not_exists_in_hr_lookups
296       	 (p_effective_date => p_effective_date
297 	 ,p_lookup_type    => 'MESSAGE_LEVEL'
298 	 ,p_lookup_code    => p_severity_level
299 	 )
300       then
301 	 fnd_message.set_name('PAY', 'HR_52966_INVALID_LOOKUP');
302 	 fnd_message.set_token('LOOKUP_TYPE', 'MESSAGE_LEVEL');
303 	 fnd_message.set_token('COLUMN', 'SEVERITY_LEVEL');
304 	 fnd_message.raise_error;
305       end if;
306     end if;
307   end if;
308   hr_utility.set_location('Leaving:'||l_proc, 10);
309 End chk_severity_level;
310 --
311 -- ----------------------------------------------------------------------------
312 -- |-------------------------< chk_exclusion_rule_id >------------------------|
313 -- ----------------------------------------------------------------------------
314 Procedure chk_exclusion_rule_id
315   (p_exclusion_rule_id     in number
316   ,p_element_type_id       in number
317   ,p_iterative_rule_id     in number
318   ,p_object_version_number in number
319   ) is
320   --
321   -- Cursor to check that the exclusion rule is valid.
322   --
323   cursor c_exclusion_rule_is_valid is
324   select null
325   from   pay_shadow_element_types     pset
326   ,      pay_template_exclusion_rules ter
327   where  pset.element_type_id  = p_element_type_id
328   and    ter.template_id       = pset.template_id
329   and    ter.exclusion_rule_id = p_exclusion_rule_id;
330 --
331   l_proc varchar2(72)  := g_package||'chk_exclusion_rule_id';
332   l_api_updating  boolean;
333   l_valid	  varchar2(1);
334 --
335 Begin
336   hr_utility.set_location('Entering:'||l_proc, 5);
337   l_api_updating := pay_sir_shd.api_updating
338   (p_iterative_rule_id     => p_iterative_rule_id
339   ,p_object_version_number => p_object_version_number
340   );
341   if (l_api_updating and nvl(p_exclusion_rule_id, hr_api.g_number) <>
342 	nvl(pay_sir_shd.g_old_rec.exclusion_rule_id, hr_api.g_number)) or
343 	not l_api_updating
344   then
345     if p_exclusion_rule_id is not null then
346 	 open c_exclusion_rule_is_valid;
347 	 fetch c_exclusion_rule_is_valid into l_valid;
348 	 if c_exclusion_rule_is_valid%notfound then
349 	   close c_exclusion_rule_is_valid;
350 	   fnd_message.set_name('PAY', 'PAY_50100_ETM_INVALID_EXC_RULE');
351 	   fnd_message.raise_error;
352       end if;
353 	 close c_exclusion_rule_is_valid;
354     end if;
355   end if;
356   hr_utility.set_location('Leaving:'||l_proc, 10);
357 End chk_exclusion_rule_id;
358 --
359 -- ----------------------------------------------------------------------------
360 -- |----------------------------< chk_delete >--------------------------------|
361 -- ----------------------------------------------------------------------------
362 Procedure chk_delete
363   (p_iterative_rule_id  in number
364   ) is
365   --
366   -- Cursor to check for rows referencing the iterative rule.
367   --
368   cursor c_core_objects is
369   select null
370   from   pay_template_core_objects tco
371   where  tco.core_object_type = pay_tco_shd.g_sir_lookup_type
372   and    tco.shadow_object_id = p_iterative_rule_id;
373 --
374   l_proc varchar2(72) := g_package||'chk_delete';
375   l_error exception;
376   l_exists varchar2(1);
377 --
378 Begin
379   hr_utility.set_location('Entering:'||l_proc, 5);
380   --
381   open c_core_objects;
382   fetch c_core_objects into l_exists;
383   if c_core_objects%found then
384     close c_core_objects;
385     raise l_error;
386   end if;
387   close c_core_objects;
388   hr_utility.set_location('Leaving:'||l_proc, 10);
389 exception
390   when l_error then
391     fnd_message.set_name('PAY', 'PAY_50112_SIR_INVALID_DELETE');
392     fnd_message.raise_error;
393   when others then
394     hr_utility.set_location('Leaving:'||l_proc, 15);
395     raise;
396 End chk_delete;
397 --
398 -- ----------------------------------------------------------------------------
399 -- |---------------------------< insert_validate >----------------------------|
400 -- ----------------------------------------------------------------------------
401 Procedure insert_validate
402   (p_effective_date               in date
403   ,p_rec                          in pay_sir_shd.g_rec_type
404   ) is
405 --
406   l_proc  varchar2(72) := g_package||'insert_validate';
407 --
408 Begin
409   hr_utility.set_location('Entering:'||l_proc, 5);
410   --
411   -- Call all supporting business operations
412   --
413   chk_element_type_id(p_rec.element_type_id);
414   --
415   chk_result_name
416   (p_result_name           => p_rec.result_name
417   ,p_iterative_rule_id     => p_rec.iterative_rule_id
418   ,p_object_version_number => p_rec.object_version_number
419   );
420   --
421   chk_input_value_id
422   (p_input_value_id        => p_rec.input_value_id
423   ,p_element_type_id       => p_rec.element_type_id
424   ,p_iterative_rule_id     => p_rec.iterative_rule_id
425   ,p_object_version_number => p_rec.object_version_number
426   );
427   --
428   chk_iterative_rule_type
432   ,p_object_version_number => p_rec.object_version_number
429   (p_effective_date        => p_effective_date
430   ,p_iterative_rule_type   => p_rec.iterative_rule_type
431   ,p_iterative_rule_id     => p_rec.iterative_rule_id
433   );
434   --
435   chk_severity_level
436   (p_effective_date        => p_effective_date
437   ,p_severity_level        => p_rec.severity_level
438   ,p_iterative_rule_id     => p_rec.iterative_rule_id
439   ,p_object_version_number => p_rec.object_version_number
440   );
441   --
442   chk_exclusion_rule_id
443   (p_exclusion_rule_id     => p_rec.exclusion_rule_id
444   ,p_element_type_id       => p_rec.element_type_id
445   ,p_iterative_rule_id     => p_rec.iterative_rule_id
446   ,p_object_version_number => p_rec.object_version_number
447   );
448   --
449   hr_utility.set_location(' Leaving:'||l_proc, 10);
450 End insert_validate;
451 --
452 -- ----------------------------------------------------------------------------
453 -- |---------------------------< update_validate >----------------------------|
454 -- ----------------------------------------------------------------------------
455 Procedure update_validate
456   (p_effective_date             in date
457   ,p_rec                        in pay_sir_shd.g_rec_type
458   ) is
459 --
460   l_proc  varchar2(72) := g_package||'update_validate';
461 --
462 Begin
463   hr_utility.set_location('Entering:'||l_proc, 5);
464   --
465   -- Call all supporting business operations
466   --
467   chk_non_updateable_args(p_rec);
468   --
469   chk_result_name
470   (p_result_name           => p_rec.result_name
471   ,p_iterative_rule_id     => p_rec.iterative_rule_id
472   ,p_object_version_number => p_rec.object_version_number
473   );
474   --
475   chk_input_value_id
476   (p_input_value_id        => p_rec.input_value_id
477   ,p_element_type_id       => p_rec.element_type_id
478   ,p_iterative_rule_id     => p_rec.iterative_rule_id
479   ,p_object_version_number => p_rec.object_version_number
480   );
481   --
482   chk_iterative_rule_type
483   (p_effective_date        => p_effective_date
484   ,p_iterative_rule_type   => p_rec.iterative_rule_type
485   ,p_iterative_rule_id     => p_rec.iterative_rule_id
486   ,p_object_version_number => p_rec.object_version_number
487    );
488   --
489   chk_severity_level
490   (p_effective_date        => p_effective_date
491   ,p_severity_level        => p_rec.severity_level
492   ,p_iterative_rule_id     => p_rec.iterative_rule_id
493   ,p_object_version_number => p_rec.object_version_number
494   );
495   --
496   chk_exclusion_rule_id
497   (p_exclusion_rule_id     => p_rec.exclusion_rule_id
498   ,p_element_type_id       => p_rec.element_type_id
499   ,p_iterative_rule_id     => p_rec.iterative_rule_id
500   ,p_object_version_number => p_rec.object_version_number
501   );
502   --
503   hr_utility.set_location(' Leaving:'||l_proc, 10);
504 End update_validate;
505 --
506 -- ----------------------------------------------------------------------------
507 -- |---------------------------< delete_validate >----------------------------|
508 -- ----------------------------------------------------------------------------
509 Procedure delete_validate
510   (p_rec                          in pay_sir_shd.g_rec_type) is
511 --
512   l_proc  varchar2(72) := g_package||'delete_validate';
513 --
514 Begin
515   hr_utility.set_location('Entering:'||l_proc, 5);
516   --
517   -- Call all supporting business operations
518   --
519   chk_delete(p_rec.iterative_rule_id);
520   --
521   hr_utility.set_location(' Leaving:'||l_proc, 10);
522 End delete_validate;
523 --
524 end pay_sir_bus;