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