[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_DESCRIPTION_PKG
Source
1 PACKAGE BODY xla_cmp_description_pkg AS
2 /* $Header: xlacpdes.pkb 120.25.12010000.2 2010/01/31 14:50:27 vkasina 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_description_pkg |
10 | |
11 | DESCRIPTION |
12 | This is a XLA private package, which contains all the logic required |
13 | to generate description procedures from AMB specifcations |
14 | |
15 | |
16 | HISTORY |
17 | 25-JUN-2002 K.Boussema Created |
18 | 05-DEC-2002 K.Boussema BUG 2693303 |
19 | 25-FEB-2003 K.Boussema Added 'dbdrv' command |
20 | 13-MAR-2003 K.Boussema Made changes for the new bulk approach of the|
21 | accounting engine |
22 | 19-MAR-2003 K.Boussema Added amb_context_code column |
23 | 22-APR-2003 K.Boussema Included Error messages |
24 | 02-JUN-2003 K.Boussema Modified to fix bug 2975670 and bug 2729143 |
25 | 27-JUN-2003 K.Boussema Renamed XLA_DESCRIPTION_PRIO table |
26 | 17-JUL-2003 K.Boussema Reviewd the code |
27 | 24-JUL-2003 K.Boussema Updated the error messages |
28 | 30-JUL-2003 K.Boussema Updated the definition of C_FLEXFIELD_SEGMENT|
29 | 01-SEP-2003 K.Boussema Changed the generation of Description function|
30 | 19-NOV-2003 K.boussema Changed generate_body_desc to order the Journal Entry|
31 | description by user_sequence, bug 3266183 |
32 | 18-DEC-2003 K.Boussema Changed to fix bug 3042840,3307761,3268940 |
33 | 3310291 and 3320689 |
34 | 23-FEB-2004 K.Boussema Made changes for the FND_LOG. |
35 | 12-MAR-2004 K.Boussema Changed to incorporate the select of lookups |
36 | from the extract objects |
37 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls|
38 | and the procedure. |
39 | 11-MAY-2004 K.Boussema Removed the call to XLA trace routine from |
40 | trace() procedure |
41 | 20-Sep-2004 S.Singhania Added debug messages to GenerateDescriptions |
42 | 07-Mar-2005 K.Boussema Changed for ADR-enhancements. |
43 | 11-Jul-2005 A.Wan Changed for MPA. |
44 +===========================================================================*/
45
46
47 /*------------------------------------------------------------+
48 | |
49 | Description function template |
50 | |
51 +------------------------------------------------------------*/
52
53 C_DESC_PROC CONSTANT VARCHAR2(20000):= '
54 ---------------------------------------
55 --
56 -- PRIVATE FUNCTION
57 -- Description_$desc_hash_id$
58 --
59 ---------------------------------------
60 FUNCTION Description_$desc_hash_id$ (
61 p_application_id IN NUMBER
62 , p_ae_header_id IN NUMBER DEFAULT NULL $parameters$
63 )
64 RETURN VARCHAR2
65 IS
66 l_component_type VARCHAR2(80) ;
67 l_component_code VARCHAR2(30) ;
68 l_component_type_code VARCHAR2(1) ;
69 l_component_appl_id INTEGER ;
70 l_amb_context_code VARCHAR2(30) ;
71 l_ledger_language VARCHAR2(30) ;
72 l_source VARCHAR2(1996) ;
73 l_description VARCHAR2(2000) ;
74 l_log_module VARCHAR2(240) ;
75 BEGIN
76 IF g_log_enabled THEN
77 l_log_module := C_DEFAULT_MODULE||''.Description_$desc_hash_id$'';
78 END IF;
79 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80 trace
81 (p_msg => ''BEGIN of Description_$desc_hash_id$''
82 ,p_level => C_LEVEL_PROCEDURE
83 ,p_module => l_log_module);
84 END IF;
85
86 l_ledger_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
87 l_component_type := ''AMB_DESCRIPTION'';
88 l_component_code := ''$description_code$'';
89 l_component_type_code := ''$desc_type_code$'';
90 l_component_appl_id := $desc_appl_id$;
91 l_amb_context_code := ''$amb_context_code$'';
92 l_source := NULL;
93 l_description := NULL;
94
95 $desc_body$
96 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97 trace
98 (p_msg => ''END of Description_$desc_hash_id$''
99 ,p_level => C_LEVEL_PROCEDURE
100 ,p_module => l_log_module);
101 END IF;
102 RETURN NULL;
103 EXCEPTION
104 WHEN VALUE_ERROR THEN
105 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
106 trace
107 (p_msg => ''ERROR: ''||sqlerrm
108 ,p_level => C_LEVEL_EXCEPTION
109 ,p_module => l_log_module);
110 END IF;
111 RAISE;
112 WHEN xla_exceptions_pkg.application_exception THEN
113 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
114 trace
115 (p_msg => ''ERROR: ''||sqlerrm
116 ,p_level => C_LEVEL_EXCEPTION
117 ,p_module => l_log_module);
118 END IF;
119 RAISE;
120 WHEN OTHERS THEN
121 xla_exceptions_pkg.raise_message
122 (p_location => ''$package_name$.Description_$desc_hash_id$'');
123 END Description_$desc_hash_id$;
124 ';
125
126
127 g_chr_newline CONSTANT VARCHAR2(10):= xla_environment_pkg.g_chr_newline;
128 --
129
130 --+==========================================================================+
131 --| |
132 --| |
133 --| Global variables |
134 --| |
135 --| |
136 --+==========================================================================+
137 --
138 g_component_type VARCHAR2(30):='AMB_DESCRIPTION';
139 g_component_code VARCHAR2(30);
140 g_component_type_code VARCHAR2(1);
141 g_component_appl_id INTEGER;
142 g_component_name VARCHAR2(160);
143 g_amb_context_code VARCHAR2(30);
144 --
145 g_package_name VARCHAR2(30);
146 g_IsCompiled BOOLEAN:=TRUE;
147 --
148 --=============================================================================
149 --
150 --
151 --
152 --
153 --
154 --
155 --
156 --
157 --
158 --
159 --
160 --
161 --
162 --
163 --
164 --
165 --
166 --
167 --
168 --
169 --
170 --
171 --=============================================================================
172 --=============================================================================
173 -- *********** Local Trace Routine **********
174 --=============================================================================
175
176 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
177 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
178 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
179 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
180 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
181 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
182
183 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
184 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_description_pkg';
185
186 g_log_level NUMBER;
187 g_log_enabled BOOLEAN;
188
189 PROCEDURE trace
190 (p_msg IN VARCHAR2
191 ,p_level IN NUMBER
192 ,p_module IN VARCHAR2)
193 IS
194 BEGIN
195 ----------------------------------------------------------------------------
196 -- Following is for FND log.
197 ----------------------------------------------------------------------------
198 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
199 fnd_log.message(p_level, p_module);
200 ELSIF p_level >= g_log_level THEN
201 fnd_log.string(p_level, p_module, p_msg);
202 END IF;
203
204 EXCEPTION
205 WHEN xla_exceptions_pkg.application_exception THEN
206 RAISE;
207 WHEN OTHERS THEN
208 xla_exceptions_pkg.raise_message
209 (p_location => 'xla_cmp_description_pkg.trace');
210 END trace;
211
212 /*---------------------------------------------------------------------------+
213 | Private function |
214 | |
215 | GenerateDescriptions |
216 | |
217 | Translates a line detail description in to PL/SQL code. |
218 | |
219 +---------------------------------------------------------------------------*/
220
221 FUNCTION generate_desc_details (
222 p_description_prio_id IN NUMBER
223 , p_array_desc_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
224 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
225 )
226 RETURN VARCHAR2
227 IS
228
229 C_LITERAL_DESC CONSTANT VARCHAR2(20000):='
230 l_ledger_language = ''$language$'' THEN
231 l_description := SUBSTR(CONCAT(l_description,''$literal$''),1,2000);
232 l_description := SUBSTR(CONCAT(l_description,'' ''),1,2000); '
233 ;
234
235 C_NUM_SOURCE CONSTANT VARCHAR2(20000):= '
236 l_source := SUBSTR(TO_CHAR($source$),1,1996);
237 IF l_source IS NOT NULL THEN
238 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
239 l_description := SUBSTR(CONCAT(l_description,'' ''),1,2000);
240 END IF; '
241 ;
242
243 C_CHAR_SOURCE CONSTANT VARCHAR2(20000):= '
244 l_source := SUBSTR($source$,1,1996);
245 IF l_source IS NOT NULL THEN
246 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
247 l_description := SUBSTR(CONCAT(l_description,'' ''),1,2000);
248 END IF; '
249 ;
250
251 C_DATE_SOURCE CONSTANT VARCHAR2(20000):= '
252 l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR($source$,
253 xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
254 IF l_source IS NOT NULL THEN
255 l_description := SUBSTR(CONCAT(l_description,l_source),1,2000);
256 l_description := SUBSTR(CONCAT(l_description,'' ''),1,2000);
257 END IF; '
258 ;
259
260
261 C_FLEXFIELD_SEGMENT CONSTANT VARCHAR2(20000):='
262 xla_ae_code_combination_pkg.get_flex_segment_value(
263 p_combination_id => $ccid$
264 ,p_segment_code => ''$segment_code$''
265 ,p_id_flex_code => ''$id_flex_code$''
266 ,p_flex_application_id => $flexfield_appl_id$
267 ,p_application_short_name => ''$appl_short_name$''
268 ,p_source_code => ''$source_code$''
269 ,p_source_type_code => ''$source_type_code$''
270 ,p_source_application_id => $source_application_id$
271 ,p_component_type => l_component_type
272 ,p_component_code => l_component_code
273 ,p_component_type_code => l_component_type_code
274 ,p_component_appl_id => l_component_appl_id
275 ,p_amb_context_code => l_amb_context_code
276 ,p_entity_code => NULL
277 ,p_event_class_code => NULL
278 ,p_ae_header_id => p_ae_header_id
279 ) '
280 ;
281
282 C_FLEXFIELD_DESC CONSTANT VARCHAR2(20000):='
283 xla_ae_code_combination_pkg.get_flex_segment_desc(
284 p_combination_id => $ccid$
285 ,p_segment_code => ''$segment_code$''
286 ,p_id_flex_code => ''$id_flex_code$''
287 ,p_flex_application_id => $flexfield_appl_id$
288 ,p_application_short_name => ''$appl_short_name$''
289 ,p_source_code => ''$source_code$''
290 ,p_source_type_code => ''$source_type_code$''
291 ,p_source_application_id => $source_application_id$
292 ,p_component_type => l_component_type
293 ,p_component_code => l_component_code
294 ,p_component_type_code => l_component_type_code
295 ,p_component_appl_id => l_component_appl_id
296 ,p_amb_context_code => l_amb_context_code
297 ,p_ae_header_id => p_ae_header_id
298 ) '
299 ;
300
301 l_first BOOLEAN;
302 l_Index BINARY_INTEGER;
303 l_description VARCHAR2(32000);
304 l_desc_detail VARCHAR2(32000);
305 l_log_module VARCHAR2(240);
306 BEGIN
307 IF g_log_enabled THEN
308 l_log_module := C_DEFAULT_MODULE||'.generate_desc_details';
309 END IF;
310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
311 trace
312 (p_msg => 'BEGIN of generate_desc_details'
313 ,p_level => C_LEVEL_PROCEDURE
314 ,p_module => l_log_module);
315 END IF;
316
317 l_description := NULL;
318
319 FOR desc_details_rec IN (SELECT description_detail_id
320 , value_type_code
321 , source_code
322 , source_type_code
323 , source_application_id
324 , flexfield_segment_code
325 , display_description_flag
326 , user_sequence
327 FROM xla_descript_details_b
328 WHERE description_prio_id = p_description_prio_id
329 ORDER BY user_sequence ) LOOP
330
331 l_desc_detail := NULL;
332
333 IF desc_details_rec.value_type_code = 'S' THEN
334 -- source
335 l_Index:= xla_cmp_source_pkg.StackSource (
336 p_source_code => desc_details_rec.source_code
337 , p_source_type_code => desc_details_rec.source_type_code
338 , p_source_application_id => desc_details_rec.source_application_id
339 , p_array_source_index => p_array_desc_source_index
340 , p_rec_sources => p_rec_sources
341 );
342
343 CASE p_rec_sources.array_datatype_code(l_Index)
344 WHEN 'D' THEN l_desc_detail := l_desc_detail||' '||C_DATE_SOURCE;
345 WHEN 'C' THEN l_desc_detail := l_desc_detail||' '||C_CHAR_SOURCE;
346 ELSE l_desc_detail := l_desc_detail||' '||C_NUM_SOURCE;
347 END CASE;
348
349
350 IF desc_details_rec.flexfield_segment_code IS NULL THEN
351 --not key flexfield
352 l_desc_detail := REPLACE(l_desc_detail,
353 '$source$', nvl(xla_cmp_source_pkg.GenerateSource(
354 p_Index => l_Index
355 , p_rec_sources => p_rec_sources
356 , p_translated_flag => 'Y'),' null')
357 );
358
359 ELSIF desc_details_rec.flexfield_segment_code IS NOT NULL AND
360 nvl(desc_details_rec.display_description_flag,'N')='N' THEN
361
362 l_desc_detail := REPLACE(l_desc_detail, '$source$', C_FLEXFIELD_SEGMENT);
363
364 l_desc_detail := REPLACE(l_desc_detail,'$ccid$',
365 xla_cmp_source_pkg.GenerateSource(
366 p_Index => l_Index
367 , p_rec_sources => p_rec_sources
368 , p_translated_flag => 'N')
369 );
370
371 l_desc_detail := REPLACE(l_desc_detail,'$segment_code$',
372 desc_details_rec.flexfield_segment_code);
373
374 l_desc_detail := REPLACE(l_desc_detail,'$id_flex_code$',
375 p_rec_sources.array_id_flex_code(l_Index));
376
377 l_desc_detail := REPLACE(l_desc_detail,'$flexfield_appl_id$',
378 p_rec_sources.array_flexfield_appl_id(l_Index));
379
380 l_desc_detail := REPLACE(l_desc_detail,'$appl_short_name$',
381 p_rec_sources.array_appl_short_name(l_Index));
382
383 l_desc_detail := REPLACE(l_desc_detail,'$source_code$',
384 p_rec_sources.array_source_code(l_Index));
385
386 l_desc_detail := REPLACE(l_desc_detail,'$source_type_code$',
387 p_rec_sources.array_source_type_code(l_Index));
388
389 l_desc_detail := REPLACE(l_desc_detail,'$source_application_id$',
390 p_rec_sources.array_application_id(l_Index));
391
392 --display flexfield description
393 ELSIF desc_details_rec.flexfield_segment_code IS NOT NULL AND
394 nvl(desc_details_rec.display_description_flag,'N')='Y' THEN
395
396 l_desc_detail := REPLACE(l_desc_detail,
397 '$source$', C_FLEXFIELD_DESC);
398
399 l_desc_detail := REPLACE(l_desc_detail,'$ccid$',
400 xla_cmp_source_pkg.GenerateSource(
401 p_Index => l_Index
402 , p_rec_sources => p_rec_sources
403 , p_translated_flag => 'N')
404 );
405
406 l_desc_detail := REPLACE(l_desc_detail,'$segment_code$',
407 desc_details_rec.flexfield_segment_code);
408
409 l_desc_detail := REPLACE(l_desc_detail,'$id_flex_code$',
410 p_rec_sources.array_id_flex_code(l_Index));
411
412 l_desc_detail := REPLACE(l_desc_detail,'$flexfield_appl_id$',
413 p_rec_sources.array_flexfield_appl_id(l_Index));
414
415 l_desc_detail := REPLACE(l_desc_detail,'$appl_short_name$',
416 p_rec_sources.array_appl_short_name(l_Index));
417
418 l_desc_detail := REPLACE(l_desc_detail,'$source_code$',
419 p_rec_sources.array_source_code(l_Index));
420
421 l_desc_detail := REPLACE(l_desc_detail,'$source_type_code$',
422 p_rec_sources.array_source_type_code(l_Index));
423
424 l_desc_detail := REPLACE(l_desc_detail,'$source_application_id$',
425 p_rec_sources.array_application_id(l_Index));
426
427 ELSE
428 null;
429 END IF;
430
431 ELSIF desc_details_rec.value_type_code = 'L' THEN
432 --literal
433 l_first := TRUE;
434
435 FOR literals_rec IN (SELECT xddt.language language
436 , REPLACE(xddt.literal, '''','''''') literal
437 FROM xla_descript_details_tl xddt
438 WHERE xddt.description_detail_id = desc_details_rec.description_detail_id
439 AND xddt.literal IS NOT NULL ) LOOP
440 IF l_first THEN
441 l_desc_detail := l_desc_detail || g_chr_newline ||' IF '|| C_LITERAL_DESC ;
442 l_first := FALSE;
443 ELSE
444 l_desc_detail := l_desc_detail || g_chr_newline ||' ELSIF '|| C_LITERAL_DESC ;
445 END IF;
446
447 l_desc_detail := REPLACE(l_desc_detail,'$language$',literals_rec.language);
448 l_desc_detail := REPLACE(l_desc_detail,'$literal$', literals_rec.literal);
449
450 END LOOP;
451 IF NOT l_first THEN l_desc_detail := l_desc_detail || g_chr_newline ||' END IF; '; END IF;
452
453 ELSE
454 null;
455 END IF;
456
457 l_description := l_description||' '||l_desc_detail;
458
459 END LOOP;
460
461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
462 trace
463 (p_msg => 'END of generate_desc_details'
464 ,p_level => C_LEVEL_PROCEDURE
465 ,p_module => l_log_module);
466 END IF;
467 RETURN l_description;
468 EXCEPTION
469 WHEN VALUE_ERROR THEN
470 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
471 trace
472 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
473 ,p_level => C_LEVEL_EXCEPTION
474 ,p_module => l_log_module);
475 END IF;
476 RETURN NULL;
477 WHEN xla_exceptions_pkg.application_exception THEN
478 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
479 trace
480 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
481 ,p_level => C_LEVEL_EXCEPTION
482 ,p_module => l_log_module);
483 END IF;
484 RETURN NULL;
485 WHEN OTHERS THEN
486 xla_exceptions_pkg.raise_message
487 (p_location => 'xla_cmp_description_pkg.generate_desc_details ');
488 END generate_desc_details;
489
490 /*---------------------------------------------------------------------------+
491 | Private function |
492 | |
493 | generate_body_desc |
494 | |
495 | Generates the body of the Description_X() function from the AMB definition |
496 | |
497 +---------------------------------------------------------------------------*/
498
499 FUNCTION generate_body_desc (
500 p_application_id IN NUMBER
501 , p_amb_context_code IN VARCHAR2
502 , p_description_code IN VARCHAR2
503 , p_description_type_code IN VARCHAR2
504 , p_description_name IN VARCHAR2
505 , p_array_desc_source_index IN OUT NOCOPY xla_cmp_source_pkg.t_array_ByInt
506 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
507 , p_IsCompiled IN OUT NOCOPY BOOLEAN
508 )
509 RETURN CLOB
510 IS
511
512 C_RETURN_DESC CONSTANT VARCHAR2(10000):=
513 ' l_description := SUBSTR(l_description,1,1996);
514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
515 trace
516 (p_msg => ''END of Description_$desc_hash_id$''
517 ,p_level => C_LEVEL_PROCEDURE
518 ,p_module => l_log_module);
519
520 END IF;
521 RETURN l_description;
522 ';
523 l_first BOOLEAN;
524 l_endif BOOLEAN;
525
526 l_desc_body CLOB;
527 l_desc_cond VARCHAR2(32000);
528 l_desc_detail VARCHAR2(32000);
529 l_log_module VARCHAR2(240);
530 BEGIN
531 IF g_log_enabled THEN
532 l_log_module := C_DEFAULT_MODULE||'.generate_body_desc';
533 END IF;
534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
535 trace
536 (p_msg => 'BEGIN of generate_body_desc'
537 ,p_level => C_LEVEL_PROCEDURE
538 ,p_module => l_log_module);
539 END IF;
540
541 l_desc_body := NULL;
542 l_desc_cond := NULL;
543 l_desc_detail := NULL;
544 l_first := TRUE;
545 l_endif := TRUE;
546
547 FOR desc_rec IN (SELECT description_prio_id
548 , user_sequence
549 FROM xla_desc_priorities
550 WHERE application_id = p_application_id
551 AND description_code = p_description_code
552 AND description_type_code = p_description_type_code
553 AND amb_context_code = p_amb_context_code
554 ORDER BY user_sequence) LOOP
555
556 l_desc_detail:= NULL;
557 l_desc_cond := NULL;
558
559 l_desc_detail:= generate_desc_details(
560 p_description_prio_id => desc_rec.description_prio_id
561 , p_array_desc_source_index => p_array_desc_source_index
562 , p_rec_sources => p_rec_sources
563 );
564
565 IF l_desc_detail IS NULL THEN l_desc_detail := 'l_description := null;'; END IF;
566
567 l_desc_cond := xla_cmp_condition_pkg.GetCondition (
568 p_application_id => p_application_id
569 , p_component_type => 'AMB_DESCRIPTION'
570 , p_component_code => p_description_code
571 , p_component_type_code => p_description_type_code
572 , p_component_name => p_description_name
573 , p_amb_context_code => p_amb_context_code
574 , p_description_prio_id => desc_rec.description_prio_id
575 , p_array_cond_source_index => p_array_desc_source_index
576 , p_rec_sources => p_rec_sources
577 );
578
579 IF l_desc_cond IS NULL THEN
580 IF l_endif THEN
581 l_desc_body := l_desc_body ||g_chr_newline||l_desc_detail;
582 l_desc_body := l_desc_body ||g_chr_newline||C_RETURN_DESC;
583 l_first := TRUE;
584 ELSE
585 l_endif := TRUE;
586 l_first := TRUE;
587 l_desc_body := l_desc_body ||g_chr_newline||'END IF;'||g_chr_newline;
588 l_desc_body := l_desc_body ||g_chr_newline||l_desc_detail;
589 l_desc_body := l_desc_body ||g_chr_newline||C_RETURN_DESC;
590 END IF;
591 ELSE
592 IF l_first THEN
593 l_desc_body := l_desc_body ||g_chr_newline||' IF '||l_desc_cond||' THEN ';
594 l_desc_body := l_desc_body ||g_chr_newline||l_desc_detail;
595 l_desc_body := l_desc_body ||g_chr_newline||C_RETURN_DESC;
596 l_first := FALSE;
597 l_endif := FALSE;
598 ELSE
599 l_desc_body := l_desc_body ||g_chr_newline||' ELSIF '||l_desc_cond||' THEN ';
600 l_desc_body := l_desc_body ||g_chr_newline||l_desc_detail;
601 l_desc_body := l_desc_body ||g_chr_newline||C_RETURN_DESC;
602 l_endif := FALSE;
603 END IF;
604 END IF;
605 END LOOP;
606
607 IF NOT l_endif AND l_desc_body IS NOT NULL THEN
608 l_desc_body := l_desc_body ||g_chr_newline||' END IF;';
609 ELSIF l_desc_body IS NULL THEN
610 l_desc_body := 'RETURN NULL;';
611 END IF;
612
613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
614 trace
615 (p_msg => 'END of generate_body_desc'
616 ,p_level => C_LEVEL_PROCEDURE
617 ,p_module => l_log_module);
618 END IF;
619 p_IsCompiled := TRUE;
620 RETURN l_desc_body;
621 EXCEPTION
622 WHEN VALUE_ERROR THEN
623 p_IsCompiled := FALSE;
624 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
625 trace
626 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
627 ,p_level => C_LEVEL_EXCEPTION
628 ,p_module => l_log_module);
629 END IF;
630 RETURN NULL;
631 WHEN xla_exceptions_pkg.application_exception THEN
632 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
633 trace
634 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
635 ,p_level => C_LEVEL_EXCEPTION
636 ,p_module => l_log_module);
637 END IF;
638 p_IsCompiled := FALSE;
639 RETURN NULL;
640 WHEN OTHERS THEN
641 p_IsCompiled := FALSE;
642 xla_exceptions_pkg.raise_message
643 (p_location => 'xla_cmp_description_pkg.generate_body_desc ');
644 END generate_body_desc;
645
646 /*---------------------------------------------------------------------------+
647 | Private function |
648 | |
649 | generate_desc_fct |
650 | |
651 | Generates a Description_X() function from the AMB description definition. |
652 | |
653 +---------------------------------------------------------------------------*/
654
655 FUNCTION generate_desc_fct (
656 p_application_id IN NUMBER
657 , p_amb_context_code IN VARCHAR2
658 , p_description_code IN VARCHAR2
659 , p_description_type_code IN VARCHAR2
660 , p_description_name IN VARCHAR2
661 , p_description_level IN VARCHAR2
662 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
663 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
664 , p_IsCompiled IN OUT NOCOPY BOOLEAN
665 )
666 RETURN DBMS_SQL.VARCHAR2S
667 IS
668
669 l_array_desc DBMS_SQL.VARCHAR2S;
670 l_null_array_desc DBMS_SQL.VARCHAR2S;
671 l_description CLOB;
672 l_description_code VARCHAR2(30);
673 l_array_desc_source_index xla_cmp_source_pkg.t_array_ByInt;
674 l_log_module VARCHAR2(240);
675 BEGIN
676 IF g_log_enabled THEN
677 l_log_module := C_DEFAULT_MODULE||'.generate_desc_fct';
678 END IF;
679
680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
681 trace
682 (p_msg => 'BEGIN of generate_desc_fct'
683 ,p_level => C_LEVEL_PROCEDURE
684 ,p_module => l_log_module);
685 END IF;
686 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
687 trace
688 (p_msg => 'p_description_code = '||p_description_code ||
689 ' - p_description_type_code = '||p_description_type_code ||
690 ' - p_application_id = '||p_application_id ||
691 ' - p_amb_context_code = '||p_amb_context_code
692 ,p_level => C_LEVEL_STATEMENT
693 ,p_module => l_log_module);
694 END IF;
695
696 g_component_code := p_description_code ;
697 g_component_type_code := p_description_type_code;
698 g_component_appl_id := p_application_id ;
699 g_component_name := REPLACE(p_description_name, '''','''''');
700 g_amb_context_code := p_amb_context_code ;
701
702 l_description := C_DESC_PROC ;
703 l_description := xla_cmp_string_pkg.replace_token(l_description, '$desc_body$' ,
704 generate_body_desc (
705 p_application_id => p_application_id
706 , p_amb_context_code => p_amb_context_code
707 , p_description_code => p_description_code
708 , p_description_type_code => p_description_type_code
709 , p_description_name => p_description_name
710 , p_array_desc_source_index => l_array_desc_source_index
711 , p_rec_sources => p_rec_sources
712 , p_IsCompiled => p_IsCompiled
713 )
714 );
715
716 l_description := xla_cmp_string_pkg.replace_token(l_description, '$parameters$' ,
717 xla_cmp_source_pkg.GenerateParameters(
718 p_array_source_index => l_array_desc_source_index
719 , p_rec_sources => p_rec_sources)
720 );
721
722 l_description := xla_cmp_string_pkg.replace_token(l_description, '$desc_hash_id$' , -- 4417664
723 TO_CHAR(xla_cmp_source_pkg.CacheAADObject (
724 p_object => p_description_level
725 , p_object_code => p_description_code
726 , p_object_type_code => p_description_type_code
727 , p_application_id => p_application_id
728 , p_array_source_Index => l_array_desc_source_index
729 , p_rec_aad_objects => p_rec_aad_objects
730 )));
731 l_description := xla_cmp_string_pkg.replace_token(l_description, '$description_code$' , p_description_code); -- 4417664
732 l_description := xla_cmp_string_pkg.replace_token(l_description, '$desc_type_code$' , p_description_type_code); -- 4417664
733 l_description := xla_cmp_string_pkg.replace_token(l_description, '$desc_appl_id$' , TO_CHAR(p_application_id)); -- 4417664
734 l_description := xla_cmp_string_pkg.replace_token(l_description, '$amb_context_code$' , p_amb_context_code); -- 4417664
735 l_description := xla_cmp_string_pkg.replace_token(l_description, '$package_name$' , g_package_name); -- 4417664
736
737 xla_cmp_string_pkg.CreateString(
738 p_package_text => l_description
739 ,p_array_string => l_array_desc
740 );
741
742 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
743 trace
744 (p_msg => 'END of generate_desc_fct = '||l_array_desc.COUNT
745 ,p_level => C_LEVEL_PROCEDURE
746 ,p_module => l_log_module);
747 END IF;
748 RETURN l_array_desc;
749 EXCEPTION
750 WHEN VALUE_ERROR THEN
751 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
752 trace
753 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
754 ,p_level => C_LEVEL_EXCEPTION
755 ,p_module => l_log_module);
756 END IF;
757 p_IsCompiled := FALSE;
758 RETURN l_null_array_desc;
759 WHEN xla_exceptions_pkg.application_exception THEN
760 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
761 trace
762 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
763 ,p_level => C_LEVEL_EXCEPTION
764 ,p_module => l_log_module);
765 END IF;
766 p_IsCompiled := FALSE;
767 RETURN l_null_array_desc;
768 WHEN OTHERS THEN
769 p_IsCompiled := FALSE;
770 xla_exceptions_pkg.raise_message
771 (p_location => 'xla_cmp_description_pkg.generate_desc_fct');
772 END generate_desc_fct;
773
774 /*---------------------------------------------------------------------------+
775 | Private function |
776 | |
777 | get_aad_descriptions |
778 | |
779 | Launches the generation of the descriptions assigned to the AAD |
780 | |
781 +---------------------------------------------------------------------------*/
782
783 FUNCTION get_aad_descriptions(
784 p_product_rule_code IN VARCHAR2
785 , p_product_rule_type_code IN VARCHAR2
786 , p_application_id IN NUMBER
787 , p_amb_context_code IN VARCHAR2
788 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
789 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
790 , p_IsCompiled IN OUT NOCOPY BOOLEAN
791 )
792 RETURN DBMS_SQL.VARCHAR2S
793 IS
794
795
796 CURSOR description_cur
797 IS
798 --header description
799 (
800 SELECT
801 xpah.description_code
802 , xpah.description_type_code
803 , REPLACE( xdtl.name , '''','''''')
804 FROM xla_prod_acct_headers xpah
805 , xla_descriptions_tl xdtl
806 , xla_descriptions_b xdb
807 , xla_aad_line_defn_assgns xald
808 , xla_line_definitions_b xld
809
810 WHERE xpah.application_id = p_application_id
811 AND xpah.product_rule_type_code = p_product_rule_type_code
812 AND xpah.product_rule_code = p_product_rule_code
813 AND xpah.amb_context_code = p_amb_context_code
814 AND xpah.application_id = xdb.application_id
815 AND xpah.amb_context_code = xdb.amb_context_code
816 AND xpah.description_type_code = xdb.description_type_code
817 AND xpah.description_code = xdb.description_code
818 AND xpah.application_id = xdtl.application_id (+)
819 AND xpah.amb_context_code = xdtl.amb_context_code (+)
820 AND xpah.description_type_code = xdtl.description_type_code (+)
821 AND xpah.description_code = xdtl.description_code (+)
822 AND xpah.accounting_required_flag = 'Y'
823 AND xpah.validation_status_code = 'R'
824 AND xdtl.language (+) = USERENV('LANG')
825 AND xpah.description_code IS NOT NULL
826 AND xald.application_id = xpah.application_id
827 AND xald.amb_context_code = xpah.amb_context_code
828 AND xald.event_class_code = xpah.event_class_code
829 AND xald.event_type_code = xpah.event_type_code
830 AND xald.product_rule_type_code = xpah.product_rule_type_code
831 AND xald.product_rule_code = xpah.product_rule_code
832 AND xald.application_id = xld.application_id
833 AND xald.amb_context_code = xld.amb_context_code
834 AND xald.event_class_code = xld.event_class_code
835 AND xald.event_type_code = xld.event_type_code
836 AND xald.line_definition_owner_code = xld.line_definition_owner_code
837 AND xald.line_definition_code = xld.line_definition_code
838 AND xld.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
839 GROUP BY xpah.description_code, xpah.description_type_code, xdtl.name
840 )
841 UNION
842 --line description
843 (
844 SELECT
845 xldj.description_code
846 , xldj.description_type_code
847 , REPLACE(xdtl.name , '''','''''')
848 FROM xla_aad_line_defn_assgns xald
849 , xla_line_defn_jlt_assgns xldj
850 , xla_prod_acct_headers xpah
851 , xla_descriptions_tl xdtl
852 , xla_descriptions_b xdb
853 , xla_line_definitions_b xld
854 WHERE xpah.application_id = p_application_id
855 AND xpah.amb_context_code = p_amb_context_code
856 AND xpah.product_rule_type_code = p_product_rule_type_code
857 AND xpah.product_rule_code = p_product_rule_code
858 AND xpah.accounting_required_flag = 'Y'
859 AND xpah.validation_status_code = 'R'
860 --
861 AND xald.application_id = xpah.application_id
862 AND xald.amb_context_code = xpah.amb_context_code
863 AND xald.event_class_code = xpah.event_class_code
864 AND xald.event_type_code = xpah.event_type_code
865 AND xald.product_rule_type_code = xpah.product_rule_type_code
866 AND xald.product_rule_code = xpah.product_rule_code
867 --
868 AND xldj.application_id = xald.application_id
869 AND xldj.amb_context_code = xald.amb_context_code
870 AND xldj.event_class_code = xald.event_class_code
871 AND xldj.event_type_code = xald.event_type_code
872 AND xldj.line_definition_owner_code = xald.line_definition_owner_code
873 AND xldj.line_definition_code = xald.line_definition_code
874 AND xldj.active_flag = 'Y'
875 AND xldj.description_code IS NOT NULL
876 --
877 AND xldj.application_id = xdtl.application_id (+)
878 AND xldj.amb_context_code = xdtl.amb_context_code (+)
879 AND xldj.description_type_code = xdtl.description_type_code (+)
880 AND xldj.description_code = xdtl.description_code (+)
881 AND xdtl.language (+) = USERENV('LANG')
882 --
883 AND xldj.application_id = xdb.application_id
884 AND xldj.amb_context_code = xdb.amb_context_code
885 AND xldj.description_type_code = xdb.description_type_code
886 AND xldj.description_code = xdb.description_code
887 AND xdb.enabled_flag = 'Y'
888 --
889 AND xald.application_id = xld.application_id
890 AND xald.amb_context_code = xld.amb_context_code
891 AND xald.event_class_code = xld.event_class_code
892 AND xald.event_type_code = xld.event_type_code
893 AND xald.line_definition_owner_code = xld.line_definition_owner_code
894 AND xald.line_definition_code = xld.line_definition_code
895 AND xld.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
896 GROUP BY xldj.description_code, xldj.description_type_code, xdtl.name
897 )
898 UNION -- 4262811
899 -- mpa header description
900 (
901 SELECT
902 xldj.mpa_header_desc_code
903 , xldj.mpa_header_desc_type_code
904 , REPLACE(xdtl.name , '''','''''')
905 FROM xla_prod_acct_headers xpah
906 , xla_aad_line_defn_assgns xald
907 , xla_line_defn_jlt_assgns xldj
908 , xla_descriptions_tl xdtl
909 , xla_descriptions_b xdb
910 , xla_line_definitions_b xld
911 WHERE xpah.application_id = p_application_id
912 AND xpah.amb_context_code = p_amb_context_code
913 AND xpah.product_rule_type_code = p_product_rule_type_code
914 AND xpah.product_rule_code = p_product_rule_code
915 AND xpah.accounting_required_flag = 'Y'
916 AND xpah.validation_status_code = 'R'
917 --
918 AND xald.application_id = xpah.application_id
919 AND xald.amb_context_code = xpah.amb_context_code
920 AND xald.event_class_code = xpah.event_class_code
921 AND xald.event_type_code = xpah.event_type_code
922 AND xald.product_rule_type_code = xpah.product_rule_type_code
923 AND xald.product_rule_code = xpah.product_rule_code
924 --
925 AND xldj.application_id = xald.application_id
926 AND xldj.amb_context_code = xald.amb_context_code
927 AND xldj.event_class_code = xald.event_class_code
928 AND xldj.event_type_code = xald.event_type_code
929 AND xldj.line_definition_owner_code = xald.line_definition_owner_code
930 AND xldj.line_definition_code = xald.line_definition_code
931 AND xldj.active_flag = 'Y'
932 AND xldj.mpa_header_desc_code IS NOT NULL
933 --
934 AND xldj.application_id = xdtl.application_id (+)
935 AND xldj.amb_context_code = xdtl.amb_context_code (+)
936 AND xldj.mpa_header_desc_type_code = xdtl.description_type_code (+)
937 AND xldj.mpa_header_desc_code = xdtl.description_code (+)
938 AND xdtl.language (+) = USERENV('LANG')
939 --
940 AND xldj.application_id = xdb.application_id
941 AND xldj.amb_context_code = xdb.amb_context_code
942 AND xldj.mpa_header_desc_type_code = xdb.description_type_code
943 AND xldj.mpa_header_desc_code = xdb.description_code
944 AND xdb.enabled_flag = 'Y'
945 --
946 AND xald.application_id = xld.application_id
947 AND xald.amb_context_code = xld.amb_context_code
948 AND xald.event_class_code = xld.event_class_code
949 AND xald.event_type_code = xld.event_type_code
950 AND xald.line_definition_owner_code = xld.line_definition_owner_code
951 AND xald.line_definition_code = xld.line_definition_code
952 AND xld.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
953 )
954 UNION -- 4262811
955 -- mpa line description
956 (
957 SELECT
958 xmja.description_code
959 , xmja.description_type_code
960 , REPLACE(xdtl.name , '''','''''')
961 FROM xla_prod_acct_headers xpah
962 , xla_aad_line_defn_assgns xald
963 , xla_mpa_jlt_assgns xmja
964 , xla_line_defn_jlt_assgns xldj
965 , xla_descriptions_tl xdtl
966 , xla_descriptions_b xdb
967 , xla_line_definitions_b xld
968 WHERE xpah.application_id = p_application_id
969 AND xpah.amb_context_code = p_amb_context_code
970 AND xpah.product_rule_type_code = p_product_rule_type_code
971 AND xpah.product_rule_code = p_product_rule_code
972 AND xpah.accounting_required_flag = 'Y'
973 AND xpah.validation_status_code = 'R'
974 --
975 AND xald.application_id = xpah.application_id
976 AND xald.amb_context_code = xpah.amb_context_code
977 AND xald.event_class_code = xpah.event_class_code
978 AND xald.event_type_code = xpah.event_type_code
979 AND xald.product_rule_type_code = xpah.product_rule_type_code
980 AND xald.product_rule_code = xpah.product_rule_code
981 --
982 AND xmja.application_id = xald.application_id
983 AND xmja.amb_context_code = xald.amb_context_code
984 AND xmja.event_class_code = xald.event_class_code
985 AND xmja.event_type_code = xald.event_type_code
986 AND xmja.line_definition_owner_code = xald.line_definition_owner_code
987 AND xmja.line_definition_code = xald.line_definition_code
988 AND xmja.description_code IS NOT NULL
989 --
990 AND xldj.application_id = xmja.application_id
991 AND xldj.amb_context_code = xmja.amb_context_code
992 AND xldj.event_class_code = xmja.event_class_code
993 AND xldj.event_type_code = xmja.event_type_code
994 AND xldj.line_definition_owner_code = xmja.line_definition_owner_code
995 AND xldj.line_definition_code = xmja.line_definition_code
996 AND xldj.active_flag = 'Y'
997 --
998 AND xmja.application_id = xdtl.application_id (+)
999 AND xmja.amb_context_code = xdtl.amb_context_code (+)
1000 AND xmja.description_type_code = xdtl.description_type_code (+)
1001 AND xmja.description_code = xdtl.description_code (+)
1002 AND xdtl.language (+) = USERENV('LANG')
1003 --
1004 AND xmja.application_id = xdb.application_id
1005 AND xmja.amb_context_code = xdb.amb_context_code
1006 AND xmja.description_type_code = xdb.description_type_code
1007 AND xmja.description_code = xdb.description_code
1008 AND xdb.enabled_flag = 'Y'
1009 --
1010 AND xald.application_id = xld.application_id
1011 AND xald.amb_context_code = xld.amb_context_code
1012 AND xald.event_class_code = xld.event_class_code
1013 AND xald.event_type_code = xld.event_type_code
1014 AND xald.line_definition_owner_code = xld.line_definition_owner_code
1015 AND xald.line_definition_code = xld.line_definition_code
1016 AND xld.budgetary_control_flag = XLA_CMP_PAD_PKG.g_bc_pkg_flag
1017 )
1018 ;
1019
1020 l_array_desc_code xla_cmp_source_pkg.t_array_VL30;
1021 l_array_desc_name xla_cmp_source_pkg.t_array_VL80;
1022 l_array_desc_owner xla_cmp_source_pkg.t_array_VL1;
1023
1024 l_descriptions DBMS_SQL.VARCHAR2S;
1025 l_null_descriptions DBMS_SQL.VARCHAR2S;
1026
1027 l_IsCompiled BOOLEAN;
1028 l_log_module VARCHAR2(240);
1029 BEGIN
1030 IF g_log_enabled THEN
1031 l_log_module := C_DEFAULT_MODULE||'.get_aad_descriptions';
1032 END IF;
1033 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1034 trace
1035 (p_msg => 'BEGIN of get_aad_descriptions'
1036 ,p_level => C_LEVEL_PROCEDURE
1037 ,p_module => l_log_module);
1038 END IF;
1039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1040 trace
1041 (p_msg => 'p_product_rule_code = '||p_product_rule_code||
1042 ' - p_product_rule_type_code = '||p_product_rule_type_code||
1043 ' - p_application_id = '||p_application_id||
1044 ' - p_amb_context_code = '||p_amb_context_code
1045 ,p_level => C_LEVEL_STATEMENT
1046 ,p_module => l_log_module);
1047 END IF;
1048 l_descriptions := l_null_descriptions;
1049 p_IsCompiled := TRUE;
1050 l_IsCompiled := TRUE;
1051
1052
1053 OPEN description_cur ;
1054
1055 FETCH description_cur BULK COLLECT INTO l_array_desc_code
1056 , l_array_desc_owner
1057 , l_array_desc_name
1058 ;
1059 CLOSE description_cur ;
1060
1061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1062 trace
1063 (p_msg => '# number of descriptions = '||l_array_desc_code.COUNT
1064 ,p_level => C_LEVEL_PROCEDURE
1065 ,p_module => l_log_module);
1066 END IF;
1067
1068 IF l_array_desc_code.COUNT > 0 THEN
1069 FOR Idx IN l_array_desc_code.FIRST .. l_array_desc_code.LAST LOOP
1070
1071 IF l_array_desc_code.EXISTS(Idx) THEN
1072
1073 l_descriptions := xla_cmp_string_pkg.ConcatTwoStrings (
1074 p_array_string_1 => l_descriptions
1075 ,p_array_string_2 => generate_desc_fct (
1076 p_application_id => p_application_id
1077 , p_amb_context_code => p_amb_context_code
1078 , p_description_code => l_array_desc_code(Idx)
1079 , p_description_type_code => l_array_desc_owner(Idx)
1080 , p_description_name => l_array_desc_name(Idx)
1081 , p_description_level => xla_cmp_source_pkg.C_DESC
1082 , p_rec_aad_objects => p_rec_aad_objects
1083 , p_rec_sources => p_rec_sources
1084 , p_IsCompiled => l_IsCompiled )
1085 );
1086
1087 p_IsCompiled := p_IsCompiled AND l_IsCompiled ;
1088
1089 END IF;
1090 END LOOP;
1091 END IF;
1092
1093 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1094 trace
1095 (p_msg => 'END of get_aad_descriptions'
1096 ,p_level => C_LEVEL_PROCEDURE
1097 ,p_module => l_log_module);
1098 END IF;
1099 RETURN l_descriptions;
1100 EXCEPTION
1101 WHEN xla_exceptions_pkg.application_exception THEN
1102 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1103 trace
1104 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
1105 ,p_level => C_LEVEL_EXCEPTION
1106 ,p_module => l_log_module);
1107 END IF;
1108 p_IsCompiled := FALSE;
1109 RETURN l_null_descriptions;
1110 WHEN OTHERS THEN
1111 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1112 trace
1113 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
1114 ,p_level => C_LEVEL_EXCEPTION
1115 ,p_module => l_log_module);
1116 END IF;
1117 p_IsCompiled := FALSE;
1118 xla_exceptions_pkg.raise_message
1119 (p_location => 'xla_cmp_description_pkg.get_aad_descriptions');
1120 END get_aad_descriptions;
1121
1122 /*---------------------------------------------------------------------------+
1123 | Public function |
1124 | |
1125 | GenerateDescriptions |
1126 | |
1127 | Translates the AMB descriptions assigned to an AAD into PL/SQL functions |
1128 | Description_XXX(). It returns True if the generation succeeds, False |
1129 | otherwise. |
1130 | |
1131 +---------------------------------------------------------------------------*/
1132
1133 FUNCTION GenerateDescriptions(
1134 p_product_rule_code IN VARCHAR2
1135 , p_product_rule_type_code IN VARCHAR2
1136 , p_application_id IN NUMBER
1137 , p_amb_context_code IN VARCHAR2
1138 , p_package_name IN VARCHAR2
1139 , p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
1140 , p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1141 , p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S
1142 )
1143 RETURN BOOLEAN
1144 IS
1145 l_descriptions DBMS_SQL.VARCHAR2S;
1146 l_null_descriptions DBMS_SQL.VARCHAR2S;
1147 l_IsCompiled BOOLEAN;
1148 p_IsCompiled BOOLEAN;
1149 l_log_module VARCHAR2(240);
1150 BEGIN
1151 IF g_log_enabled THEN
1152 l_log_module := C_DEFAULT_MODULE||'.GenerateDescriptions';
1153 END IF;
1154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1155 trace
1156 (p_msg => 'BEGIN of GenerateDescriptions'
1157 ,p_level => C_LEVEL_PROCEDURE
1158 ,p_module => l_log_module);
1159 END IF;
1160
1161 l_IsCompiled := TRUE;
1162 p_IsCompiled := TRUE;
1163 g_package_name := p_package_name;
1164
1165 l_descriptions := get_aad_descriptions(
1166 p_product_rule_code => p_product_rule_code
1167 , p_product_rule_type_code => p_product_rule_type_code
1168 , p_application_id => p_application_id
1169 , p_amb_context_code => p_amb_context_code
1170 , p_rec_aad_objects => p_rec_aad_objects
1171 , p_rec_sources => p_rec_sources
1172 , p_IsCompiled => l_IsCompiled
1173 );
1174
1175 p_IsCompiled := p_IsCompiled AND l_IsCompiled ;
1176
1177 p_package_body := l_descriptions;
1178 g_package_name := NULL;
1179
1180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1181 trace
1182 (p_msg => 'return value = '||
1183 CASE p_IsCompiled
1184 WHEN TRUE THEN 'TRUE'
1185 ELSE 'FALSE'
1186 END
1187 ,p_level => C_LEVEL_PROCEDURE
1188 ,p_module => l_log_module);
1189 trace
1190 (p_msg => 'END of GenerateDescriptions = '
1191 ,p_level => C_LEVEL_PROCEDURE
1192 ,p_module => l_log_module);
1193 END IF;
1194 RETURN p_IsCompiled;
1195 EXCEPTION
1196 WHEN xla_exceptions_pkg.application_exception THEN
1197 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1198 trace
1199 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR= '||sqlerrm
1200 ,p_level => C_LEVEL_EXCEPTION
1201 ,p_module => l_log_module);
1202 END IF;
1203 RETURN FALSE;
1204 WHEN OTHERS THEN
1205 xla_exceptions_pkg.raise_message
1206 (p_location => 'xla_cmp_description_pkg.GenerateDesciptions');
1207 END GenerateDescriptions;
1208 --=============================================================================
1209 --
1210 --
1211 --
1212 --
1213 --
1214 --
1215 --
1216 --
1217 --
1218 --
1219 --
1220 --
1221 --
1222 --
1223 --
1224 --
1225 --
1226 --
1227 --
1228 --
1229 --
1230 --
1231 --=============================================================================
1232 --=============================================================================
1233 -- *********** Initialization routine **********
1234 --=============================================================================
1235
1236 BEGIN
1237
1238 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1239 g_log_enabled := fnd_log.test
1240 (log_level => g_log_level
1241 ,module => C_DEFAULT_MODULE);
1242
1243 IF NOT g_log_enabled THEN
1244 g_log_level := C_LEVEL_LOG_DISABLED;
1245 END IF;
1246
1247 END xla_cmp_description_pkg;
1248 --