[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