[Home] [Help]
PACKAGE BODY: APPS.PQH_RFT_BUS
Source
1 Package Body pqh_rft_bus as
2 /* $Header: pqrftrhi.pkb 120.2 2005/10/12 20:19:02 srajakum noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' pqh_rft_bus.'; -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------< chk_ref_template_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 -- ref_template_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_ref_template_id(p_ref_template_id in number,
37 p_object_version_number in number) is
38 --
39 l_proc varchar2(72) := g_package||'chk_ref_template_id';
40 l_api_updating boolean;
41 --
42 Begin
43 --
44 hr_utility.set_location('Entering:'||l_proc, 5);
45 --
46 l_api_updating := pqh_rft_shd.api_updating
47 (p_ref_template_id => p_ref_template_id,
48 p_object_version_number => p_object_version_number);
49 --
50 if (l_api_updating
51 and nvl(p_ref_template_id,hr_api.g_number)
52 <> pqh_rft_shd.g_old_rec.ref_template_id) then
53 --
54 -- raise error as PK has changed
55 --
56 pqh_rft_shd.constraint_error('PQH_REF_TEMPLATES_PK');
57 --
58 elsif not l_api_updating then
59 --
60 -- check if PK is null
61 --
62 if p_ref_template_id is not null then
63 --
64 -- raise error as PK is not null
65 --
66 pqh_rft_shd.constraint_error('PQH_REF_TEMPLATES_PK');
67 --
68 end if;
69 --
70 end if;
71 --
72 hr_utility.set_location('Leaving:'||l_proc, 10);
73 --
74 End chk_ref_template_id;
75 --
76 -- ----------------------------------------------------------------------------
77 -- |------< chk_base_template_id >------|
78 -- ----------------------------------------------------------------------------
79 --
80 -- Description
81 -- This procedure checks that a referenced foreign key actually exists
82 -- in the referenced table.
83 --
84 -- Pre-Conditions
85 -- None.
86 --
87 -- In Parameters
88 -- p_ref_template_id PK
89 -- p_base_template_id ID of FK column
90 -- p_object_version_number object version number
91 --
92 -- Post Success
93 -- Processing continues
94 --
95 -- Post Failure
96 -- Error raised.
97 --
98 -- Access Status
99 -- Internal table handler use only.
100 --
101 Procedure chk_base_template_id (p_ref_template_id in number,
102 p_base_template_id in number,
103 p_reference_type_cd in varchar2,
104 p_object_version_number in number) is
105 --
106 l_proc varchar2(72) := g_package||'chk_base_template_id';
107 l_api_updating boolean;
108 l_dummy varchar2(1);
109 l_enable_flag pqh_templates.enable_flag%type;
110 l_attribute_only_flag pqh_templates.attribute_only_flag%type;
111 l_freeze_status_cd pqh_templates.freeze_status_cd%type;
112 --
113 cursor c1 is
114 select nvl(enable_flag,hr_api.g_varchar2),
115 nvl(attribute_only_flag,hr_api.g_varchar2),
116 nvl(freeze_status_cd ,hr_api.g_varchar2)
117 from pqh_templates a
118 where a.template_id = p_base_template_id;
119 --
120 Begin
121 --
122 hr_utility.set_location('Entering:'||l_proc,5);
123 --
124 l_api_updating := pqh_rft_shd.api_updating
125 (p_ref_template_id => p_ref_template_id,
126 p_object_version_number => p_object_version_number);
127 --
128 if (l_api_updating
129 and nvl(p_base_template_id,hr_api.g_number)
130 <> nvl(pqh_rft_shd.g_old_rec.base_template_id,hr_api.g_number)
131 or not l_api_updating) then
132
133 --
134 -- check if base_template_id value exists in pqh_templates table
135 --
136 open c1;
137 --
138 fetch c1 into l_enable_flag,l_attribute_only_flag,l_freeze_status_cd;
139 -- fetch c1 into l_dummy;
140 if c1%notfound then
141 --
142 close c1;
143 --
144 -- raise error as FK does not relate to PK in pqh_templates
145 -- table.
146 --
147 pqh_rft_shd.constraint_error('PQH_REF_TEMPLATES_FK2');
148 --
149 end if;
150 --
151 close c1;
152 --
153 -- The referenced template must be enabled .
154 --
155 if l_enable_flag <> 'Y' then
156 if p_reference_type_cd = 'REFERENCE' then
157 hr_utility.set_message(8302,'PQH_RFT_NOT_ENABLED');
158 hr_utility.raise_error;
159 Else
160 hr_utility.set_message(8302,'PQH_COPY_TEM_NOT_ENABLED');
161 hr_utility.raise_error;
162 End if;
163 end if;
164 --
165 -- Can refernce only templates marked as reference templates.
166 --
167 if p_reference_type_cd = 'REFERENCE' and l_attribute_only_flag <> 'Y' then
168 hr_utility.set_message(8302,'PQH_INVALID_RFT');
169 hr_utility.raise_error;
170 end if;
171
172 end if;
173 --
174 hr_utility.set_location('Leaving:'||l_proc,10);
175 --
176 End chk_base_template_id;
177 --
178 -- ----------------------------------------------------------------------------
179 -- |------< chk_parent_template_id >------|
180 -- ----------------------------------------------------------------------------
181 --
182 -- Description
183 -- This procedure checks that a referenced foreign key actually exists
184 -- in the referenced table.
185 --
186 -- Pre-Conditions
187 -- None.
188 --
189 -- In Parameters
190 -- p_ref_template_id PK
191 -- p_parent_template_id ID of FK column
192 -- p_object_version_number object version number
193 --
194 -- Post Success
195 -- Processing continues
196 --
197 -- Post Failure
198 -- Error raised.
199 --
200 -- Access Status
201 -- Internal table handler use only.
202 --
203 Procedure chk_parent_template_id (p_ref_template_id in number,
204 p_parent_template_id in number,
205 p_reference_type_cd in varchar2,
206 p_object_version_number in number) is
207 --
208 l_proc varchar2(72) := g_package||'chk_parent_template_id';
209 l_api_updating boolean;
210 l_dummy varchar2(1);
211 l_freeze_status_cd pqh_templates.freeze_status_cd%type;
212 l_attribute_only_flag pqh_templates.attribute_only_flag%type;
213 --
214 cursor c1 is
215 select nvl(freeze_status_cd,hr_api.g_varchar2) ,
216 nvl(attribute_only_flag,hr_api.g_varchar2)
217 from pqh_templates a
218 where a.template_id = p_parent_template_id;
219 --
220 Begin
221 --
222 hr_utility.set_location('Entering:'||l_proc,5);
223 --
224 l_api_updating := pqh_rft_shd.api_updating
225 (p_ref_template_id => p_ref_template_id,
226 p_object_version_number => p_object_version_number);
227 --
228 if (l_api_updating
229 and nvl(p_parent_template_id,hr_api.g_number)
230 <> nvl(pqh_rft_shd.g_old_rec.parent_template_id,hr_api.g_number)
231 or not l_api_updating) and
232 p_parent_template_id is not null then
233 --
234 -- check if parent_template_id value exists in pqh_templates table
235 --
236 open c1;
237 --
238 fetch c1 into l_freeze_status_cd,l_attribute_only_flag;
239 if c1%notfound then
240 --
241 close c1;
242 --
243 -- raise error as FK does not relate to PK in pqh_templates
244 -- table.
245 --
246 pqh_rft_shd.constraint_error('PQH_REF_TEMPLATES_FK1');
247 --
248 end if;
249 --
250 close c1;
251 --
252 -- If inserting reference template to a parent reference template
253 -- raise error
254 --
255 if l_attribute_only_flag = 'Y' and p_reference_type_cd = 'REFERENCE' then
256 hr_utility.set_message(8302,'PQH_PARENT_TEM_IS_ATTR_ONLY');
257 hr_utility.raise_error;
258 End if;
259 --
260 end if;
261 --
262 if l_freeze_status_cd = 'FREEZE_TEMPLATE' then
263 hr_utility.set_message(8302,'PQH_NO_ADD_REF_TO_PARENT');
264 hr_utility.raise_error;
265 end if;
266 hr_utility.set_location('Leaving:'||l_proc,10);
267 --
268 End chk_parent_template_id;
269 --
270 -- Check the compatability of the legislation code of the parent/base templates
271 --
272 Procedure chk_legislation_code (p_ref_template_id in number,
273 p_parent_template_id in number,
274 p_base_template_id in number,
275 p_object_version_number in number) is
276 --
277 l_proc varchar2(72) := g_package||'chk_legislation_code';
278 l_api_updating boolean;
279 l_dummy varchar2(1);
280 --
281 l_base_leg_code varchar2(30);
282 l_base_template_name varchar2(100);
283 l_parent_leg_code varchar2(30);
284 l_parent_template_name varchar2(100);
285 --
286 cursor c1(p_template_id number) is
287 select legislation_code, template_name
288 from pqh_templates_vl
289 where template_id = p_template_id;
290 --
291 Begin
292 --
293 hr_utility.set_location('Entering:'||l_proc,5);
294 --
295
296 l_api_updating := pqh_rft_shd.api_updating
297 (p_ref_template_id => p_ref_template_id,
298 p_object_version_number => p_object_version_number);
299 --
300 if (l_api_updating
301 and nvl(p_base_template_id,hr_api.g_number)
302 <> nvl(pqh_rft_shd.g_old_rec.base_template_id,hr_api.g_number)
303 or not l_api_updating) then
304 --
305 open c1(p_parent_template_id);
306 fetch c1 into l_parent_leg_code, l_parent_template_name;
307 close c1;
308 open c1(p_base_template_id);
309 fetch c1 into l_base_leg_code, l_base_template_name;
310 close c1;
311 --
312 if l_parent_leg_code is null then
313 if l_base_leg_code is not null then
314 hr_utility.set_message(8302,'PQH_NO_LEG_REF_TEM');
315 hr_utility.set_message_token('REF_TEMPLATE', l_base_template_name);
316 hr_utility.set_message_token('PARENT_TEMPLATE', l_parent_template_name);
317 hr_utility.raise_error;
318 end if;
319 else
320 if nvl(l_base_leg_code,l_parent_leg_code) <> l_parent_leg_code then
321 hr_utility.set_message(8302,'PQH_REF_TEM_LEG_NE_PAR_TEM');
322 hr_utility.set_message_token('REF_TEMPLATE', l_base_template_name);
323 hr_utility.set_message_token('PARENT_TEMPLATE', l_parent_template_name);
324 hr_utility.raise_error;
325 end if;
326 end if;
327 --
328 --
329 end if;
330 --
331 hr_utility.set_location('Leaving:'||l_proc,10);
332 --
333 End chk_legislation_code;
334 --
335 --
336 -- ----------------------------------------------------------------------------
337 -- |------< chk_reference_type_cd >------|
338 -- ----------------------------------------------------------------------------
339 --
340 -- Description
341 -- This procedure is used to check that the lookup value is valid.
342 --
343 -- Pre Conditions
344 -- None.
345 --
346 -- In Parameters
347 -- ref_template_id PK
348 -- reference_type_cd lookup
349 -- effective_date effective date
350 -- object_version_number Object version number of record being
351 -- inserted or updated.
352 --
353 -- Post Success
354 -- Processing continues
355 --
356 -- Post Failure
357 -- Error handled by procedure
358 --
359 -- Access Status
360 -- Internal table handler use only.
361 --
362 Procedure chk_reference_type_cd(
363 p_ref_template_id in number,
364 p_reference_type_cd in varchar2,
365 p_effective_date in date,
366 p_object_version_number in number) is
367 --
368 l_proc varchar2(72) := g_package||'chk_reference_type_cd';
369 l_api_updating boolean;
370 --
371 Begin
372 --
373 hr_utility.set_location('Entering:'||l_proc, 5);
374 --
375 l_api_updating := pqh_rft_shd.api_updating
376 (p_ref_template_id => p_ref_template_id,
377 p_object_version_number => p_object_version_number);
378 --
379 if (l_api_updating
380 and p_reference_type_cd
381 <> nvl(pqh_rft_shd.g_old_rec.reference_type_cd,hr_api.g_varchar2)
382 or not l_api_updating) then
383 --
384 -- check if value of lookup falls within lookup type.
385 --
386 if hr_api.not_exists_in_hr_lookups
387 (p_lookup_type => 'PQH_REFERENCE_TYPE',
388 p_lookup_code => p_reference_type_cd,
389 p_effective_date => p_effective_date) then
390 --
391 -- raise error as does not exist as lookup
392 --
393 hr_utility.set_message(801,'HR_LOOKUP_DOES_NOT_EXIST');
394 hr_utility.raise_error;
395 --
396 end if;
397 --
398 end if;
399 --
400 hr_utility.set_location('Leaving:'||l_proc,10);
401 --
402 end chk_reference_type_cd;
403 --
404 --
405 -- ----------------------------------------------------------------------------
406 -- |------< chk_rft_tct >------|
407 -- ----------------------------------------------------------------------------
408 -- Description
409 -- This procedure checks if the parent template and base template have the
410 -- same transaction category id.
411 --
415 -- In Parameters
412 -- Pre-Conditions
413 -- None.
414 --
416 -- p_ref_template_id PK
417 -- p_parent_template_id ID of FK column
418 -- p_base_template_id ID of FK column
419 -- p_object_version_number object version number
420 --
421 -- Post Success
422 -- Processing continues
423 --
424 -- Post Failure
425 -- Error raised.
426 --
427 -- Access Status
428 -- Internal table handler use only.
429 Procedure chk_rft_tct (p_ref_template_id in number,
430 p_parent_template_id in number,
431 p_base_template_id in number,
432 p_object_version_number in number) is
433 --
434 l_proc varchar2(72) := g_package||'chk_rft_tct';
435 l_api_updating boolean;
436 l_dummy varchar2(1);
437 l_parent_tct pqh_templates.transaction_category_id%type;
438 l_base_tct pqh_templates.transaction_category_id%type;
439 --
440 cursor c1 is
441 select transaction_category_id
442 from pqh_templates a
443 where a.template_id = p_parent_template_id;
444
445 cursor c2 is
446 select transaction_category_id
447 from pqh_templates a
448 where a.template_id = p_base_template_id;
449 Begin
450 --
451 hr_utility.set_location('Entering:'||l_proc,5);
452 --
453 l_api_updating := pqh_rft_shd.api_updating
454 (p_ref_template_id => p_ref_template_id,
455 p_object_version_number => p_object_version_number);
456 --
457 if (l_api_updating
458 and nvl(p_parent_template_id,hr_api.g_number)
459 <> nvl(pqh_rft_shd.g_old_rec.parent_template_id,hr_api.g_number)
460 or not l_api_updating) and
461 p_parent_template_id is not null then
462 --
463 --
464 open c1;
465 fetch c1 into l_parent_tct;
466 close c1;
467
468 open c2;
469 fetch c2 into l_base_tct;
470 close c2;
471 --
472
473 if l_base_tct <> l_parent_tct then
474 hr_utility.set_message(8302,'PQH_RFT_TCT_MISMATCH');
475 hr_utility.raise_error;
476 End if;
477 end if;
478 --
479 hr_utility.set_location('Leaving:'||l_proc,10);
480 --
481 End chk_rft_tct;
482
483 -- ----------------------------------------------------------------------------
484 -- |---------------------------< insert_validate >----------------------------|
485 -- ----------------------------------------------------------------------------
486 Procedure insert_validate(p_rec in pqh_rft_shd.g_rec_type
487 ,p_effective_date in date) is
488 --
489 l_proc varchar2(72) := g_package||'insert_validate';
490 --
491 Begin
492 hr_utility.set_location('Entering:'||l_proc, 5);
493 --
494 -- Call all supporting business operations
495 --
496 chk_ref_template_id
497 (p_ref_template_id => p_rec.ref_template_id,
498 p_object_version_number => p_rec.object_version_number);
499 --
500 chk_base_template_id
501 (p_ref_template_id => p_rec.ref_template_id,
502 p_base_template_id => p_rec.base_template_id,
503 p_reference_type_cd => p_rec.reference_type_cd,
504 p_object_version_number => p_rec.object_version_number);
505 --
506 chk_parent_template_id
507 (p_ref_template_id => p_rec.ref_template_id,
508 p_parent_template_id => p_rec.parent_template_id,
509 p_reference_type_cd => p_rec.reference_type_cd,
510 p_object_version_number => p_rec.object_version_number);
511 --
512 chk_reference_type_cd
513 (p_ref_template_id => p_rec.ref_template_id,
514 p_reference_type_cd => p_rec.reference_type_cd,
515 p_effective_date => p_effective_date,
516 p_object_version_number => p_rec.object_version_number);
517 --
518 chk_rft_tct
519 (p_ref_template_id => p_rec.ref_template_id,
520 p_parent_template_id => p_rec.parent_template_id,
521 p_base_template_id => p_rec.base_template_id,
522 p_object_version_number => p_rec.object_version_number);
523 --
524 --
525 --
526 chk_legislation_code
527 (p_ref_template_id => p_rec.ref_template_id,
528 p_parent_template_id => p_rec.parent_template_id,
529 p_base_template_id => p_rec.base_template_id,
530 p_object_version_number => p_rec.object_version_number);
531 --
532 hr_utility.set_location(' Leaving:'||l_proc, 10);
533 End insert_validate;
534 --
535 -- ----------------------------------------------------------------------------
536 -- |---------------------------< update_validate >----------------------------|
537 -- ----------------------------------------------------------------------------
538 Procedure update_validate(p_rec in pqh_rft_shd.g_rec_type
539 ,p_effective_date in date) is
540 --
541 l_proc varchar2(72) := g_package||'update_validate';
542 --
543 Begin
544 hr_utility.set_location('Entering:'||l_proc, 5);
545 --
546 -- Call all supporting business operations
547 --
548 chk_ref_template_id
549 (p_ref_template_id => p_rec.ref_template_id,
550 p_object_version_number => p_rec.object_version_number);
551 --
552 chk_base_template_id
553 (p_ref_template_id => p_rec.ref_template_id,
554 p_base_template_id => p_rec.base_template_id,
555 p_reference_type_cd => p_rec.reference_type_cd,
556 p_object_version_number => p_rec.object_version_number);
557 --
558 chk_parent_template_id
559 (p_ref_template_id => p_rec.ref_template_id,
560 p_parent_template_id => p_rec.parent_template_id,
561 p_reference_type_cd => p_rec.reference_type_cd,
562 p_object_version_number => p_rec.object_version_number);
563 --
564 --
565 chk_reference_type_cd
566 (p_ref_template_id => p_rec.ref_template_id,
567 p_reference_type_cd => p_rec.reference_type_cd,
568 p_effective_date => p_effective_date,
569 p_object_version_number => p_rec.object_version_number);
570 --
571 chk_rft_tct
572 (p_ref_template_id => p_rec.ref_template_id,
573 p_parent_template_id => p_rec.parent_template_id,
574 p_base_template_id => p_rec.base_template_id,
575 p_object_version_number => p_rec.object_version_number);
576 --
577 --
578 chk_legislation_code
579 (p_ref_template_id => p_rec.ref_template_id,
580 p_parent_template_id => p_rec.parent_template_id,
581 p_base_template_id => p_rec.base_template_id,
582 p_object_version_number => p_rec.object_version_number);
583 --
584 --
585 --
586 hr_utility.set_location(' Leaving:'||l_proc, 10);
587 End update_validate;
588 --
589 -- ----------------------------------------------------------------------------
590 -- |---------------------------< delete_validate >----------------------------|
591 -- ----------------------------------------------------------------------------
592 Procedure delete_validate(p_rec in pqh_rft_shd.g_rec_type
593 ,p_effective_date in date) is
594 --
595 l_proc varchar2(72) := g_package||'delete_validate';
596 --
597 Begin
598 hr_utility.set_location('Entering:'||l_proc, 5);
599 --
600 -- Call all supporting business operations
601 --
602 hr_utility.set_location(' Leaving:'||l_proc, 10);
603 End delete_validate;
604 --
605 end pqh_rft_bus;