DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_COMPILE_PAD_PKG

Source


1 PACKAGE BODY xla_compile_pad_pkg AS
2 /* $Header: xlacpcmp.pkb 120.9 2005/04/28 18:43:40 masada ship $   */
3 /*===========================================================================+
4 |             Copyright (c) 2001-2002 Oracle Corporation                     |
5 |                       Redwood Shores, CA, USA                              |
6 |                         All rights reserved.                               |
7 +============================================================================+
8 | PACKAGE NAME                                                               |
9 |     xla_compile_pad_pkg                                                    |
10 |                                                                            |
11 | DESCRIPTION                                                                |
12 |     This is a XLA private package, which contains all the APIs required    |
13 |     for compilation of Product Accounting definition                       |
14 |                                                                            |
15 |                                                                            |
16 | HISTORY                                                                    |
17 |     15-JUL-2002 K.Boussema    Created                                      |
18 |     19-MAR-2003 K.Boussema    Added amb_context_code column                |
19 |     27-MAR-2003 K.Boussema    changed package name xla_compile_pkg by      |
20 |                               xla_compile_pad_pkg                          |
21 |     22-APR-2003 K.Boussema    Included error messages                      |
22 |     23-FEB-2004 K.Boussema    Made changes for the FND_LOG.                |
23 |     22-MAR-2004 K.Boussema    Added a parameter p_module to the TRACE calls|
24 |                               and the procedure.                           |
25 |     11-MAY-2004 K.Boussema  Removed the call to XLA trace routine from     |
26 |                             trace() procedure                              |
27 +===========================================================================*/
28 
29 --
30 --=============================================================================
31 --               *********** Local Trace Routine **********
32 --=============================================================================
33 
34 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
35 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
36 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
37 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
38 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
39 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
40 
41 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
42 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.xla_compile_pad_pkg';
43 
44 g_log_level           NUMBER;
45 g_log_enabled         BOOLEAN;
46 
47 PROCEDURE trace
48            (p_msg                        IN VARCHAR2
49            ,p_level                      IN NUMBER
50            ,p_module                     IN VARCHAR2 DEFAULT C_DEFAULT_MODULE)
51 IS
52 BEGIN
53 ----------------------------------------------------------------------------
54 -- Following is for FND log.
55 ----------------------------------------------------------------------------
56 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
57           fnd_log.message(p_level, p_module);
58 ELSIF p_level >= g_log_level THEN
59           fnd_log.string(p_level, p_module, p_msg);
60 END IF;
61 
62 EXCEPTION
63        WHEN xla_exceptions_pkg.application_exception THEN
64           RAISE;
65        WHEN OTHERS THEN
66           xla_exceptions_pkg.raise_message
67              (p_location   => 'xla_compile_pad_pkg.trace');
68 END trace;
69 
70 
71 --+==========================================================================+
72 --| PUBLIC procedures and functions                                          |
73 --|                                                                          |
74 --|                                                                          |
75 --|                                                                          |
76 --|                                                                          |
77 --|                                                                          |
78 --|                                                                          |
79 --|                                                                          |
80 --|                                                                          |
81 --|                                                                          |
82 --|                                                                          |
83 --|                                                                          |
84 --|                                                                          |
85 --|                                                                          |
86 --|                                                                          |
87 --|                                                                          |
88 --|                                                                          |
89 --|                                                                          |
90 --|                                                                          |
91 --|                                                                          |
92 --|                                                                          |
93 --|                                                                          |
94 --|                                                                          |
95 --|                                                                          |
96 --|                                                                          |
97 --|                                                                          |
98 --|                                                                          |
99 --|                                                                          |
100 --|                                                                          |
101 --|                                                                          |
102 --|                                                                          |
103 --+==========================================================================+
104 
105 /*======================================================================+
106 |                                                                       |
107 | Public Function                                                       |
108 |                                                                       |
109 | get_compile_status                                                    |
110 |                                                                       |
111 | Return                                                                |
112 |             status                                                    |
113 |                                                                       |
114 +======================================================================*/
115 FUNCTION  get_compile_status( p_application_id         IN NUMBER
116                             , p_product_rule_code      IN VARCHAR2
117                             , p_product_rule_type_code IN VARCHAR2
118                             , p_amb_context_code       IN VARCHAR2
119                             )
120 RETURN VARCHAR2
121 IS
122 --
123 l_status             VARCHAR2(1);
124 l_log_module         VARCHAR2(240);
125 --
126 BEGIN
127 --
128 IF g_log_enabled THEN
129       l_log_module := C_DEFAULT_MODULE||'.get_compile_status';
130 END IF;
131 --
132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133 
134       trace
135          (p_msg      => 'BEGIN of get_compile_status'
136          ,p_level    => C_LEVEL_PROCEDURE
137          ,p_module   => l_log_module);
138 
139        trace
140          (p_msg      => ' SQL - Select from xla_product_rules_b'
141          ,p_level    => C_LEVEL_PROCEDURE
142          ,p_module   => l_log_module);
143 
144 END IF;
145 --
146 SELECT compile_status_code
147 INTO   l_status
148 FROM   xla_product_rules_b
149 WHERE  application_id            = p_application_id
150   AND  product_rule_code         = p_product_rule_code
151   AND  product_rule_type_code    = p_product_rule_type_code
152   AND  nvl(amb_context_code,'@') = nvl(p_amb_context_code,'@')
153 ;
154 --
155 
156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157       trace
158          (p_msg      => 'return value. = '||l_status
159          ,p_level    => C_LEVEL_PROCEDURE
160          ,p_module   => l_log_module);
161 
162       trace
163          (p_msg      => 'END of get_compile_status'
164          ,p_level    => C_LEVEL_PROCEDURE
165          ,p_module   => l_log_module);
166 
167 END IF;
168 
169 RETURN l_status;
170 --
171 EXCEPTION
172    WHEN xla_exceptions_pkg.application_exception   THEN
173         RAISE;
174    WHEN OTHERS    THEN
175       xla_exceptions_pkg.raise_message
176          (p_location => 'xla_compile_pad_pkg.get_compile_status');
177 END get_compile_status;
178 --
179 --
180 /*======================================================================+
181 |                                                                       |
182 | Public Procedure                                                      |
183 |                                                                       |
184 | setstatus                                                             |
185 |                                                                       |
186 | Switch the compile flag                                               |
187 |                                                                       |
188 | Parameters                                                            |
189 |             1      p_application_id         NUMBER                    |
190 |             2      p_product_rule_code      VARCHAR2                  |
191 |             3      p_product_rule_type_code VARCHAR2                  |
192 |             4      p_compile_old            VARCHAR2 Old status       |
193 |             5      p_compile_old            VARCHAR2 New status       |
194 |                                                                       |
195 +======================================================================*/
196 
197 PROCEDURE set_compile_status    (p_application_id               IN  NUMBER
198                                 ,p_product_rule_code            IN  VARCHAR2
199                                 ,p_product_rule_type_code       IN  VARCHAR2
200                                 ,p_amb_context_code             IN  VARCHAR2
201                                 ,p_status_old                   IN  VARCHAR2
202                                 ,p_status_new                   IN  VARCHAR2)
203 IS
204 
205 l_rows               NUMBER;
206 l_status             VARCHAR2(1);
207 l_log_module         VARCHAR2(240);
208 
209 BEGIN
210 --
211 IF g_log_enabled THEN
212       l_log_module := C_DEFAULT_MODULE||'.set_compile_status';
213 END IF;
214 --
215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
216 
217       trace
218          (p_msg      => 'BEGIN of set_compile_status'
219          ,p_level    => C_LEVEL_PROCEDURE
220          ,p_module   => l_log_module);
221 
222 END IF;
223 --
224 UPDATE  xla_product_rules_b
225 SET     compile_status_code      = p_status_new
226 WHERE   compile_status_code      = NVL(p_status_old, compile_status_code)
227   AND   application_id           = p_application_id
228   AND   product_rule_code        = p_product_rule_code
229   AND   product_rule_type_code   = p_product_rule_type_code
230   AND  nvl(amb_context_code,'@') = nvl(p_amb_context_code,'@')
231 ;
232 
233 l_rows   := SQL%ROWCOUNT;
234 
235 IF l_rows = 0 THEN
236    --
237 
238    l_status := get_compile_status( p_application_id
239                                  , p_product_rule_code
240                                  , p_product_rule_type_code
241                                  , p_amb_context_code
242                                 );
243 
244 
245    --
246     xla_exceptions_pkg.raise_message
247                                          ('XLA'
248                                          ,'XLA_CMP_COMPILER_ERROR'
249                                          ,'PROCEDURE'
250                                          ,'xla_compile_pad_pkg.set_compile_status'
251                                          ,'ERROR'
252                                          ,'INVALID COMPILER STATUS'
253                                   );
254 
255 END IF;
256 --
257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
258 
259       trace
260          (p_msg      => '< END  xla_compile_pad_pkg.set_compile_status'
261          ,p_level    => C_LEVEL_PROCEDURE
262          ,p_module   => l_log_module);
263 
264 END IF;
265 
266 EXCEPTION
267  WHEN xla_exceptions_pkg.application_exception   THEN
268         RAISE;
269    WHEN OTHERS    THEN
270       xla_exceptions_pkg.raise_message
271          (p_location => 'xla_compile_pad_pkg.set_compile_status');
272 END set_compile_status;
273 --
274 --
275 /*======================================================================+
276 |                                                                       |
277 | Public  Procedure                                                     |
278 |                                                                       |
279 | compile_pad                                                           |
280 |                                                                       |
281 | Run PAD compilation                                                   |
282 |                                                                       |
283 +======================================================================*/
284 FUNCTION CompileProductRule(
285                        p_application_id            IN NUMBER
286                      , p_product_rule_code         IN VARCHAR2
287                      , p_product_rule_type_code    IN VARCHAR2
288                      , p_product_rule_version      IN VARCHAR2
289                      , p_amb_context_code          IN VARCHAR2
290                     )
291 RETURN BOOLEAN
292 IS
293 l_compile_flag       BOOLEAN;
294 l_status             VARCHAR2(1);
295 l_log_module         VARCHAR2(240);
296 BEGIN
297 --
298 IF g_log_enabled THEN
299       l_log_module := C_DEFAULT_MODULE||'.CompileProductRule';
300 END IF;
301 --
302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
303 
304       trace
305          (p_msg      => 'BEGIN of CompileProductRule'
306          ,p_level    => C_LEVEL_PROCEDURE
307          ,p_module   => l_log_module);
308 
309       trace
310          (p_msg      => 'p_application_id = '||p_application_id
311          ,p_level    => C_LEVEL_PROCEDURE
312          ,p_module   => l_log_module);
313 
314       trace
315          (p_msg      => 'p_product_rule_code = '||p_product_rule_code
316          ,p_level    => C_LEVEL_PROCEDURE
317          ,p_module   => l_log_module);
318 
319       trace
320          (p_msg      => 'p_product_rule_type_code = '||p_product_rule_type_code
321          ,p_level    => C_LEVEL_PROCEDURE
322          ,p_module   => l_log_module);
323 
324      trace
325          (p_msg      => 'p_product_rule_version = '||p_product_rule_version
326          ,p_level    => C_LEVEL_PROCEDURE
327          ,p_module   => l_log_module);
328 END IF;
329 
330 --
331 l_status := get_compile_status(  p_application_id          => p_application_id
332                                , p_product_rule_code       => p_product_rule_code
333                                , p_product_rule_type_code  => p_product_rule_type_code
334                                , p_amb_context_code        => p_amb_context_code
335                               );
336 --
337 -- if compilation is running for PAD
338 --
339 IF l_status = 'R' THEN
340    --
341    l_compile_flag:= xla_cmp_pad_pkg.Compile(
342                                  p_application_id          => p_application_id
343                                , p_product_rule_code       => p_product_rule_code
344                                , p_product_rule_type_code  => p_product_rule_type_code
345                                , p_product_rule_version    => p_product_rule_version
346                                , p_amb_context_code        => p_amb_context_code
347                               );
348    --
349 ELSE
350    --
351    -- Invalid compile status, status expexted: R,
352    --
353    IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
354          trace
355             (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR'
356             ,p_level    => C_LEVEL_EXCEPTION
357             ,p_module   => l_log_module);
358    END IF;
359    --
360    xla_exceptions_pkg.raise_message
361                                    ('XLA'
362                                    ,'XLA_CMP_COMPILER_ERROR'
363                                    ,'PROCEDURE'
364                                    ,'xla_compile_pad_pkg.CompileProductRule'
365                                    ,'ERROR'
366                                    ,'INVALID COMPILER STATUS'
367                                    );
368 
369    l_compile_flag:= FALSE;
370    --
371 END IF;
372 --
373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
374 
375       trace
376          (p_msg      => 'END of CompileProductRule'
377          ,p_level    => C_LEVEL_PROCEDURE
378          ,p_module   => l_log_module);
379 
380 END IF;
381 RETURN l_compile_flag;
382 EXCEPTION
383    WHEN xla_exceptions_pkg.application_exception   THEN
384         l_compile_flag:= FALSE;
385         RETURN l_compile_flag;
386    WHEN OTHERS    THEN
387       xla_exceptions_pkg.raise_message
388          (p_location => 'xla_compile_pad_pkg.CompileProductRule');
389 END CompileProductRule;
390 --
391 --
392 /*======================================================================+
393 |                                                                       |
394 | Public function                                                       |
395 |                                                                       |
396 | compile                                                               |
397 |                                                                       |
398 | Run the global compile                                                |
399 |                                                                       |
400 +======================================================================*/
401 FUNCTION Compile(  p_application_id            IN NUMBER
402                  , p_product_rule_code         IN VARCHAR2
403                  , p_product_rule_type_code    IN VARCHAR2
404                  , p_product_rule_version      IN VARCHAR2
405                  , p_amb_context_code          IN VARCHAR2 )
406 RETURN BOOLEAN
407 IS
408 --
409 l_compile_flag        BOOLEAN:=FALSE;
410 l_log_module          VARCHAR2(240);
411 --
412 BEGIN
413 --
414 IF g_log_enabled THEN
415       l_log_module := C_DEFAULT_MODULE||'.Compile';
416 END IF;
417 --
418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
419 
420       trace
421          (p_msg      => 'BEGIN of Compile'
422          ,p_level    => C_LEVEL_PROCEDURE
423          ,p_module   => l_log_module);
424 
425 END IF;
426 --
427 l_compile_flag := CompileProductRule (
428                                 p_application_id          => p_application_id
429                               , p_product_rule_code       => p_product_rule_code
430                               , p_product_rule_type_code  => p_product_rule_type_code
431                               , p_product_rule_version    => p_product_rule_version
432                               , p_amb_context_code        => p_amb_context_code
433                               );
434 --
435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
436 
437       trace
438          (p_msg      => 'END of Compile'
439          ,p_level    => C_LEVEL_PROCEDURE
440          ,p_module   => l_log_module);
441 
442 END IF;
443 --
444 RETURN l_compile_flag;
445 EXCEPTION
446    WHEN xla_exceptions_pkg.application_exception   THEN
447         RAISE;
448    WHEN OTHERS    THEN
449       xla_exceptions_pkg.raise_message
450          (p_location => 'xla_compile_pad_pkg.Compile');
451 END Compile;
452 --=============================================================================
453 --
454 --
455 --
456 --
457 --
458 --
459 --
460 --
461 --
462 --
463 --
464 --
465 --
466 --
467 --
468 --
469 --
470 --
471 --
472 --
473 --
474 --
475 --=============================================================================
476 --=============================================================================
477 --          *********** Initialization routine **********
478 --=============================================================================
479 
480 BEGIN
481 
482    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
483    g_log_enabled    := fnd_log.test
484                           (log_level  => g_log_level
485                           ,module     => C_DEFAULT_MODULE);
486 
487    IF NOT g_log_enabled  THEN
488       g_log_level := C_LEVEL_LOG_DISABLED;
489    END IF;
490 --
491 END xla_compile_pad_pkg; -- end of package spec