DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_CMP_HASH_PKG

Source


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