[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_HASH_PKG
Source
1 PACKAGE BODY xla_cmp_hash_pkg AS
2 /* $Header: xlacphsh.pkb 120.19.12010000.4 2010/07/05 13:47:31 karamakr ship $ */
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | PACKAGE NAME |
9 | xla_cmp_hash_pkg |
10 | |
11 | DESCRIPTION |
12 | |
13 | |
14 | HISTORY |
15 | 25-JUL-2002 K.Boussema Created |
16 | 11-FEB-2003 K.Boussema Added Drop package API |
17 | 18-FEB-2003 K.Boussema Added Hash product rule code API |
18 | 18-MAR-2003 K.Boussema Added amb_context_code column |
19 | 22-APR-2003 K.Boussema Included error messages |
20 | 22-JUN-2003 K.Boussema Updated error messages |
21 | 17-JUL-2003 K.Boussema Reviewd the code |
22 | 23-FEB-2004 K.Boussema Made changes for the FND_LOG. |
23 | 17-MAR-2004 K.Boussema Reviewed GetPADHashId to handle multiple AADs|
24 | with the same name (same product_rule_code) |
25 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls|
26 | and the procedure. |
27 | 11-MAY-2004 K.Boussema Removed the call to XLA trace routine from |
28 | trace() procedure |
29 | 24-JUN-2005 K.Boussema Redefined the GetPADHashId function as an |
30 | autonomous transaction |
31 | 26-JUN-2005 W.Chan Add application_id and product_rule_type_code |
32 | when looking up the hash id for the aad. |
33 | 12-AUG-2005 W.Chan bug 4549711 - Redefined the GetPADHashId |
34 | function as an non-autonomous transaction |
35 | 31-AUG-2005 W.Chan bug 4585458 - Fix GetPADHashId to not to |
36 | update the xla_product_rules_b with |
37 | product_rule_hash_id if one is not found |
38 +===========================================================================*/
39 --
40 --
41 --
42 --=============================================================================
43 -- *********** Local Trace Routine **********
44 --=============================================================================
45
46 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
47 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
48 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
49 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
50 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
51 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
52
53 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
54 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_hash_pkg';
55
56 g_log_level NUMBER;
57 g_log_enabled BOOLEAN;
58 g_product_rule_hash_id NUMBER;
59 g_application_id NUMBER;
60 g_product_rule_code VARCHAR2(30);
61 g_product_rule_type_code VARCHAR2(30);
62 g_amb_context_code VARCHAR2(30);
63
64 PROCEDURE trace
65 (p_msg IN VARCHAR2
66 ,p_level IN NUMBER
67 ,p_module IN VARCHAR2 DEFAULT C_DEFAULT_MODULE) IS
68 BEGIN
69 ----------------------------------------------------------------------------
70 -- Following is for FND log.
71 ----------------------------------------------------------------------------
72 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
73 fnd_log.message(p_level, p_module);
74 ELSIF p_level >= g_log_level THEN
75 fnd_log.string(p_level, p_module, p_msg);
76 END IF;
77
78 EXCEPTION
79 WHEN xla_exceptions_pkg.application_exception THEN
80 RAISE;
81 WHEN OTHERS THEN
82 xla_exceptions_pkg.raise_message
83 (p_location => 'xla_cmp_hash_pkg.trace');
84 END trace;
85 --+==========================================================================+
86 --| |
87 --| OVERVIEW of private procedures and functions |
88 --| |
89 --+==========================================================================+
90 --
91
92 --
93 /*======================================================================+
94 | |
95 | Public Function |
96 | |
97 | GetPADHashId |
98 | |
99 | Determines the product hash id associated to the current product rule |
100 | code, returns a number |
101 | |
102 | Parameters: |
103 | 1 IN p_product_rule_code VARCHAR2 product rule |
104 | 2 IN p_amb_context_code VARCHAR2 AMB context |
105 +======================================================================*/
106 --
107 FUNCTION GetPADHashId (p_product_rule_code IN VARCHAR2
108 ,p_amb_context_code IN VARCHAR2
109 ,p_application_id IN INTEGER
110 ,p_product_rule_type_code IN VARCHAR2)
111 RETURN NUMBER
112 IS
113 l_HashID NUMBER;
114 l_log_module VARCHAR2(240);
115 BEGIN
116 IF g_log_enabled THEN
117 l_log_module := C_DEFAULT_MODULE||'.GetPADHashId';
118 END IF;
119
120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121 trace
122 (p_msg => 'BEGIN of GetPADHashId'
123 ,p_level => C_LEVEL_PROCEDURE
124 ,p_module => l_log_module);
125 END IF;
126
127 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128
129 trace
130 (p_msg => 'p_product_rule_code = '||p_product_rule_code ||
131 ' - p_amb_context_code = '|| p_amb_context_code
132 ,p_level => C_LEVEL_STATEMENT
133 ,p_module => l_log_module);
134
135 trace
136 (p_msg => 'SQL - select from xla_product_rules_b'
137 ,p_level => C_LEVEL_STATEMENT
138 ,p_module => l_log_module);
139
140 END IF;
141
142 BEGIN
143
144 SELECT DISTINCT product_rule_hash_id
145 INTO l_HashID
146 FROM xla_product_rules_b
147 WHERE product_rule_code = p_product_rule_code
148 AND amb_context_code = p_amb_context_code
149 AND application_id = p_application_id
150 AND product_rule_type_code = p_product_rule_type_code
151 AND product_rule_hash_id IS NOT NULL
152 ;
153
154 EXCEPTION
155
156 WHEN NO_DATA_FOUND THEN
157
158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159 trace
160 (p_msg => 'SQL - update xla_product_rules_b'
161 ,p_level => C_LEVEL_STATEMENT
162 ,p_module => l_log_module);
163
164 END IF;
165
166 -- Fix bug 4585458
167 -- When this is called by xla_cmp_hash_pkg.BuildPADName in the
168 -- xla_accounting_cashe_pkg.load_application_ledgers, it error with ORA-14551
169 /*
170 UPDATE xla_product_rules_b xprb
171 SET xprb.product_rule_hash_id = (SELECT NVL(MAX(xpr.product_rule_hash_id),0) + 1
172 FROM xla_product_rules_b xpr)
173 WHERE xprb.amb_context_code = p_amb_context_code
174 AND xprb.product_rule_code = p_product_rule_code
175 AND xprb.application_id = p_application_id
176 AND xprb.product_rule_type_code = p_product_rule_type_code
177 RETURNING xprb.product_rule_hash_id INTO l_HashID
178 ;
179 */
180
181 /*
182 SELECT NVL(MAX(product_rule_hash_id),0) + 1
183 INTO l_HashID
184 FROM xla_product_rules_b;
185 */
186
187 -- Fix bug 9325005
188 -- When 2 AADs are being Validated from 2 different machines at same time, the NVL((MAX)+1)
189 -- fetches same value for the 2 new AADs.
190 -- Thereby, the 2 new AADs will have same product rule hash id and only 1 package would
191 -- get created for both of these AADs.
192 --
193 -- Hence creating a new sequence for the same.
194 IF g_product_rule_hash_id is NULL
195 OR nvl(g_product_rule_code,' ') <> p_product_rule_code
196 OR nvl(g_product_rule_type_code,' ') <> p_product_rule_type_code
197 OR nvl(g_amb_context_code,' ') <> p_amb_context_code
198 OR nvl(g_application_id,-1) <> p_application_id
199 THEN
200 SELECT xla_prod_rule_hash_s.nextval
201 INTO l_HashID
202 FROM dual;
203 g_product_rule_hash_id := l_HashID;
204 g_product_rule_code := p_product_rule_code;
205 g_product_rule_type_code := p_product_rule_type_code;
206 g_amb_context_code := p_amb_context_code;
207 g_application_id := p_application_id;
208 ELSE
209 l_HashID := g_product_rule_hash_id;
210 END IF;
211
212
213 WHEN TOO_MANY_ROWS THEN
214
215 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
216 trace
217 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR: TWO OR MORE HASH_ID FOR THE SAME AAD code'
218 ,p_level => C_LEVEL_EXCEPTION
219 ,p_module => l_log_module);
220 END IF;
221
222 l_HashID:= NULL;
223
224 END ;
225
226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
227 trace
228 (p_msg => 'return value. = '||l_HashID
229 ,p_level => C_LEVEL_PROCEDURE
230 ,p_module => l_log_module);
231
232 trace
233 (p_msg => 'END of GetPADHashId'
234 ,p_level => C_LEVEL_PROCEDURE
235 ,p_module => l_log_module);
236
237 END IF;
238
239 RETURN l_HashID;
240 EXCEPTION
241 WHEN xla_exceptions_pkg.application_exception THEN
242 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
243 trace
244 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR: FAILED TO CREATE THE AAD HASH_ID VALUE'
245 ,p_level => C_LEVEL_EXCEPTION
246 ,p_module => l_log_module);
247 END IF;
248 RAISE;
249 WHEN OTHERS THEN
250 xla_exceptions_pkg.raise_message
251 (p_location => 'xla_cmp_hash_pkg.GetPADHashId');
252 END GetPADHashId;
253 --
254
255 --
256 /*======================================================================+
257 | |
258 | Public Function |
259 | |
260 | GetPackageName |
261 | |
262 | Get package name |
263 | |
264 | Parameters |
265 | 1 IN p_application_id NUMBER application id |
266 | 2 IN p_product_rule_type_code VARCHAR2 product rule type |
267 | 3 IN p_product_rule_hash_id NUMBER product rule hash id|
268 +======================================================================*/
269 FUNCTION GetPackageName ( p_application_id IN NUMBER
270 ,p_product_rule_type_code IN VARCHAR2
271 ,p_product_rule_hash_id IN NUMBER )
272 RETURN VARCHAR2
273 IS
274 --
275 l_name VARCHAR2(30);
276 l_hashApplication VARCHAR2(30);
277 l_HashRuleCode VARCHAR2(30);
278 l_log_module VARCHAR2(240);
279 --
280 BEGIN
281 IF g_log_enabled THEN
282 l_log_module := C_DEFAULT_MODULE||'.GetPackageName';
283 END IF;
284
285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
286 trace
287 (p_msg => 'BEGIN of GetPackageName'
288 ,p_level => C_LEVEL_PROCEDURE
289 ,p_module => l_log_module);
290 END IF;
291
292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
293 trace
294 (p_msg => 'p_application_id = '||p_application_id ||
295 ' - p_product_rule_type_code = '||p_product_rule_type_code ||
296 ' - p_product_rule_hash_id = '||p_product_rule_hash_id
297 ,p_level => C_LEVEL_PROCEDURE
298 ,p_module => l_log_module);
299 END IF;
300
301 l_hashApplication := LPAD(SUBSTR(TO_CHAR(ABS(p_application_id)), 1, 5), 5, '0');
302 l_HashRuleCode := LPAD(SUBSTR(TO_CHAR(p_product_rule_hash_id), 1, 6), 6, '0');
303
304 l_name := C_PACKAGE_NAME;
305 l_name := REPLACE(l_name,'$id1$',l_hashApplication);
306 l_name := REPLACE(l_name,'$id2$',p_product_rule_type_code);
307 l_name := REPLACE(l_name,'$id3$',l_HashRuleCode);
308
309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
310 trace
311 (p_msg => 'return value. package_name = '||l_name
312 ,p_level => C_LEVEL_PROCEDURE
316 ,p_level => C_LEVEL_PROCEDURE
313 ,p_module => l_log_module);
314 trace
315 (p_msg => 'END of GetPackageName'
317 ,p_module => l_log_module);
318 END IF;
319 RETURN l_name;
320 EXCEPTION
321 WHEN xla_exceptions_pkg.application_exception THEN
322 RAISE;
323 WHEN OTHERS THEN
324 xla_exceptions_pkg.raise_message
325 (p_location => 'xla_cmp_hash_pkg.GetPackageName');
326 END GetPackageName;
327 --
328 --
329 /*======================================================================+
330 | |
331 | Private function |
332 | |
333 | Parameters |
334 | 1 IN p_application_id NUMBER application id |
335 | 2 IN p_product_rule_code VARCHAR2 product rule |
336 | 3 IN p_product_rule_type_code VARCHAR2 product rule type |
337 | 4 IN p_amb_context_code VARCHAR2 AMB context |
338 | 5 OUT p_product_rule_hash_id NUMBER product rule hash id|
339 +======================================================================*/
340 FUNCTION SearchPAD ( p_application_id IN NUMBER
341 ,p_product_rule_code IN VARCHAR2
342 ,p_product_rule_type_code IN VARCHAR2
343 ,p_amb_context_code IN VARCHAR2
344 ,p_product_rule_hash_id OUT NOCOPY NUMBER)
345 RETURN BOOLEAN
346 IS
347 l_log_module VARCHAR2(240);
348 BEGIN
349 --
350 IF g_log_enabled THEN
351 l_log_module := C_DEFAULT_MODULE||'.SearchPAD';
352 END IF;
353
354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
355
356 trace
357 (p_msg => 'BEGIN of SearchPAD'
358 ,p_level => C_LEVEL_PROCEDURE
359 ,p_module => l_log_module);
360
361 END IF;
362
363 SELECT product_rule_hash_id
364 INTO p_product_rule_hash_id
365 FROM xla_product_rules_b
366 WHERE product_rule_code = p_product_rule_code
367 AND product_rule_type_code = p_product_rule_type_code
368 AND application_id = p_application_id
369 AND amb_context_code = p_amb_context_code
370 ;
371
372 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
373 IF (p_product_rule_hash_id IS NOT NULL) THEN
374 trace
375 (p_msg => 'return value. = TRUE'
376 ,p_level => C_LEVEL_PROCEDURE
377 ,p_module => l_log_module);
378 ELSE
379 trace
380 (p_msg => 'return value. = FALSE'
381 ,p_level => C_LEVEL_PROCEDURE
382 ,p_module => l_log_module);
383 END IF;
384
385 trace
386 (p_msg => 'END of SearchPAD'
387 ,p_level => C_LEVEL_PROCEDURE
388 ,p_module => l_log_module);
389
390 END IF;
391 RETURN (p_product_rule_hash_id IS NOT NULL);
392 EXCEPTION
393 WHEN NO_DATA_FOUND THEN
394 RETURN FALSE;
395 WHEN xla_exceptions_pkg.application_exception THEN
396 RAISE;
397 WHEN OTHERS THEN
398 xla_exceptions_pkg.raise_message
399 (p_location => 'xla_cmp_hash_pkg.SearchPAD');
400 END SearchPAD;
401 --
402 /*======================================================================+
403 | |
404 | Public Procedure |
405 | |
406 | DropPadPkg |
407 | |
408 | Drop PAD package for the current application,product rule code, |
409 | , product rule type code |
410 | |
411 | Parameters: |
412 | 1 IN p_application_id NUMBER application id |
413 | 2 IN p_product_rule_code VARCHAR2 product rule |
414 | 3 IN p_product_rule_type_code VARCHAR2 product rule type |
415 | 4 IN p_amb_context_code VARCHAR2 AMB context |
416 +======================================================================*/
417 PROCEDURE DropPadPkg ( p_application_id IN NUMBER
418 ,p_product_rule_code IN VARCHAR2
419 ,p_product_rule_type_code IN VARCHAR2
420 ,p_amb_context_code IN VARCHAR2
421 )
422 IS
423
424 l_statement VARCHAR2(200);
425 l_package_name VARCHAR2(30) ;
426 l_PADId NUMBER;
427 --
428 package_does_not_exist EXCEPTION;
429 package_locked EXCEPTION;
430
431 PRAGMA EXCEPTION_INIT(package_locked ,-04021);
432 PRAGMA EXCEPTION_INIT(package_does_not_exist,-04043);
433 --
434 l_log_module VARCHAR2(240);
438 IF g_log_enabled THEN
435 --
436 BEGIN
437 --
439 l_log_module := C_DEFAULT_MODULE||'.DropPadPkg';
440 END IF;
441 --
442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
443
444 trace
445 (p_msg => 'BEGIN of DropPadPkg'
446 ,p_level => C_LEVEL_PROCEDURE
447 ,p_module => l_log_module);
448
449 trace
450 (p_msg => 'p_application_id = '||p_application_id ||
451 ' - p_product_rule_code = '||p_product_rule_code ||
452 ' - p_product_rule_type_code = '||p_product_rule_type_code ||
453 ' - p_amb_context_code = '||p_amb_context_code
454 ,p_level => C_LEVEL_PROCEDURE
455 ,p_module => l_log_module);
456
457 END IF;
458
459 IF SearchPAD ( p_application_id => p_application_id
460 ,p_product_rule_code => p_product_rule_code
461 ,p_product_rule_type_code => p_product_rule_type_code
462 ,p_amb_context_code => p_amb_context_code
463 ,p_product_rule_hash_id => l_PADId)
464 THEN
465 --
466 -- package exists in the Data Base
467 --
468 l_package_name := GetPackageName (
469 p_application_id => p_application_id
470 ,p_product_rule_type_code => p_product_rule_type_code
471 ,p_product_rule_hash_id => l_PADId
472 );
473
474 --
475 -- drop specification package
476 --
477 l_statement := 'DROP PACKAGE '||l_package_name ;
478
479 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
480
481 trace
482 (p_msg => '>> EXECUTE dynamic SQL = '||l_statement
483 ,p_level => C_LEVEL_STATEMENT
484 ,p_module => l_log_module);
485
486 END IF;
487
488 EXECUTE IMMEDIATE l_statement;
489
490 --
491 -- drop body package
492 --
493 l_statement := 'DROP PACKAGE BODY '||l_package_name ;
494
495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
496
497 trace
498 (p_msg => '>> EXECUTE dynamic SQL = '||l_statement
499 ,p_level => C_LEVEL_STATEMENT
500 ,p_module => l_log_module);
501
502 END IF;
503
504 EXECUTE IMMEDIATE l_statement;
505 --
506 END IF;
507 --
508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
509
510 trace
511 (p_msg => 'END of DropPadPkg'
512 ,p_level => C_LEVEL_PROCEDURE
513 ,p_module => l_log_module);
514
515 END IF;
516 --
517 EXCEPTION
518 WHEN package_does_not_exist THEN
519
520 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
521 trace
522 (p_msg => 'WARNNING: Package '|| l_package_name ||' does not exist '
523 ,p_level => C_LEVEL_EXCEPTION
524 ,p_module => l_log_module);
525 END IF;
526
527 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
528
529 trace
530 (p_msg => 'END of DropPadPkg'
531 ,p_level => C_LEVEL_PROCEDURE
532 ,p_module => l_log_module);
533
534 END IF;
535
536 WHEN package_locked THEN
537
538 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
539 trace
540 (p_msg => 'ERROR: XLA_CMP_PACKAGE_LOCKED'
541 ,p_level => C_LEVEL_EXCEPTION
542 ,p_module => l_log_module);
543 END IF;
544 xla_exceptions_pkg.raise_message
545 ('XLA'
546 ,'XLA_CMP_PACKAGE_LOCKED'
547 ,'PACKAGE_NAME'
548 , l_package_name
549 );
550 WHEN xla_exceptions_pkg.application_exception THEN
551 RAISE;
552 WHEN OTHERS THEN
553 xla_exceptions_pkg.raise_message
554 (p_location => 'xla_cmp_hash_pkg.DropPadPkg');
555 END DropPadPkg;
556 --
557 --
558 /*======================================================================+
559 | |
560 | Public Function |
561 | |
562 | DropPadPkg |
563 | |
564 | Drop PAD package for the current application,product rule code, |
565 | , product rule type code |
566 | |
567 | Parameters: |
568 | 1 IN p_application_id NUMBER application id |
569 | 2 IN p_product_rule_code VARCHAR2 product rule |
573 +======================================================================*/
570 | 3 IN p_product_rule_type_code VARCHAR2 product rule type |
571 | 4 IN p_amb_context_code VARCHAR2 AMB context |
572 | |
574 FUNCTION DropPadPkg ( p_application_id IN NUMBER
575 ,p_product_rule_code IN VARCHAR2
576 ,p_product_rule_type_code IN VARCHAR2
577 ,p_amb_context_code IN VARCHAR2
578 )
579 RETURN BOOLEAN
580 IS
581 l_log_module VARCHAR2(240);
582 BEGIN
583 --
584 DropPadPkg (p_application_id => p_application_id
585 ,p_product_rule_code => p_product_rule_code
586 ,p_product_rule_type_code => p_product_rule_type_code
587 ,p_amb_context_code => p_amb_context_code
588 )
589 ;
590 RETURN TRUE;
591 --
592 EXCEPTION
593 WHEN OTHERS THEN
594 RETURN FALSE;
595 END;
596 --
597 /*======================================================================+
598 | |
599 | Public Function |
600 | |
601 | BuildPackageName |
602 | |
603 | Build a package name |
604 | |
605 | Parameters |
606 | 1 IN p_application_id NUMBER application id |
607 | 2 IN p_product_rule_code VARCHAR2 product rule |
608 | 3 IN p_product_rule_type_code VARCHAR2 product rule type |
609 | 4 IN p_amb_context_code VARCHAR2 AMB context |
610 +======================================================================*/
611 FUNCTION BuildPackageName (p_application_id IN NUMBER
612 ,p_product_rule_code IN VARCHAR2
613 ,p_product_rule_type_code IN VARCHAR2
614 ,p_amb_context_code IN VARCHAR2
615 )
616 RETURN VARCHAR2
617 IS
618 --
619 l_PADId NUMBER :=NULL;
620 l_name VARCHAR2(30):=NULL;
621 l_hashApplication VARCHAR2(30);
622 --
623 l_pad_name VARCHAR2(80);
624 l_log_module VARCHAR2(240);
625 BEGIN
626
627 IF g_log_enabled THEN
628 l_log_module := C_DEFAULT_MODULE||'.BuildPackageName';
629 END IF;
630
631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
632
633 trace
634 (p_msg => 'BEGIN of BuildPackageName'
635 ,p_level => C_LEVEL_PROCEDURE
636 ,p_module => l_log_module);
637
638 trace
639 (p_msg => 'p_application_id = '||p_application_id ||
640 ' - p_product_rule_code = '||p_product_rule_code ||
641 ' - p_product_rule_type_code = '||p_product_rule_type_code ||
642 ' - p_amb_context_code = '||p_amb_context_code
643 ,p_level => C_LEVEL_PROCEDURE
644 ,p_module => l_log_module);
645
646 END IF;
647
648 IF SearchPAD ( p_application_id => p_application_id
649 ,p_product_rule_code => p_product_rule_code
650 ,p_product_rule_type_code => p_product_rule_type_code
651 ,p_amb_context_code => p_amb_context_code
652 ,p_product_rule_hash_id => l_PADId)
653 THEN
654 l_name := GetPackageName (
655 p_application_id => p_application_id
656 ,p_product_rule_type_code => p_product_rule_type_code
657 ,p_product_rule_hash_id => l_PADId
658 );
659 ELSE
660
661 l_PADId:= GetPADHashId (p_product_rule_code => p_product_rule_code
662 ,p_amb_context_code => p_amb_context_code
663 ,p_application_id => p_application_id
664 ,p_product_rule_type_code => p_product_rule_type_code) ;
665
666
667 IF l_PADId IS NOT NULL THEN
668
669 l_name := GetPackageName (
670 p_application_id => p_application_id
671 ,p_product_rule_type_code => p_product_rule_type_code
672 ,p_product_rule_hash_id => l_PADId
673 );
674 ELSE
675 -- raise an error
676 BEGIN
677
678 SELECT xprt.name
679 INTO l_pad_name
680 FROM xla_product_rules_tl xprt
681 WHERE xprt.application_id = p_application_id
682 AND xprt.product_rule_code = p_product_rule_code
683 AND xprt.product_rule_type_code = p_product_rule_type_code
684 AND xprt.amb_context_code = p_amb_context_code
685 AND nvl(xprt.language ,USERENV('LANG')) = USERENV('LANG')
686 ;
687
688 EXCEPTION
689
690 WHEN OTHERS THEN
694 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
691 l_pad_name := p_product_rule_code;
692 END;
693
695 trace
696 (p_msg => 'ERROR: XLA_CMP_NO_PAD_PACKAGE'
697 ,p_level => C_LEVEL_EXCEPTION
698 ,p_module => l_log_module);
699 END IF;
700
701 xla_exceptions_pkg.raise_message
702 ('XLA'
703 ,'XLA_CMP_NO_PAD_PACKAGE'
704 ,'PAD_NAME'
705 , l_pad_name
706 ,'OWNER'
707 , xla_lookups_pkg.get_meaning(
708 p_lookup_type => 'XLA_OWNER_TYPE'
709 , p_lookup_code => p_product_rule_type_code
710 )
711 );
712
713 END IF;
714 END IF;
715
716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
717 trace
718 (p_msg => 'END of BuildPackageName'
719 ,p_level => C_LEVEL_PROCEDURE
720 ,p_module => l_log_module);
721 END IF;
722 RETURN l_name;
723 EXCEPTION
724 WHEN xla_exceptions_pkg.application_exception THEN
725 RAISE;
726 WHEN OTHERS THEN
727 xla_exceptions_pkg.raise_message
728 (p_location => 'xla_cmp_hash_pkg.BuildPackageName');
729 END BuildPackageName;
730 --=============================================================================
731 --
732 --
733 --
734 --
735 --
736 --
737 --
738 --
739 --
740 --
741 --
742 --
743 --
744 --
745 --
746 --
747 --
748 --
749 --
750 --
751 --
752 --
753 --=============================================================================
754 --=============================================================================
755 -- *********** Initialization routine **********
756 --=============================================================================
757
758 BEGIN
759
760 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
761 g_log_enabled := fnd_log.test
762 (log_level => g_log_level
763 ,module => C_DEFAULT_MODULE);
764
765 IF NOT g_log_enabled THEN
766 g_log_level := C_LEVEL_LOG_DISABLED;
767 END IF;
768
769 END xla_cmp_hash_pkg; --