[Home] [Help]
PACKAGE BODY: APPS.XLA_CMP_PAD_PKG
Source
1 PACKAGE BODY XLA_CMP_PAD_PKG AS
2 /* $Header: xlacppad.pkb 120.31 2010/05/10 19:57:52 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_pad_pkg |
10 | |
11 | DESCRIPTION |
12 | DESCRIPTION |
13 | This is a XLA private package, which contains all the APIs required |
14 | for package body generation |
15 | |
16 | |
17 | HISTORY |
18 | 25-JUN-2002 K.Boussema Created |
19 | 18-MAR-2003 K.Boussema Added amb_context_code column |
20 | 22-APR-2003 K.Boussema Included error messages |
21 | 07-MAI-2003 K.Boussema Added the extract of the PAD version |
22 | 26-MAI-2003 K.Boussema Added the lock of PAD |
23 | 02-JUN-2003 K.Boussema Modified to fix bug 2729143 |
24 | 17-JUL-2003 K.Boussema Reviewed the code |
25 | 01-SEP-2003 K.Boussema Reviewed the package comment generated |
26 | 18-DEC-2003 K.Boussema Changed to fix bug 3042840,3307761,3268940 |
27 | 3310291 and 3320689 |
28 | 23-DEC-2003 K.Boussema Added a call to Extract Integrity checker |
29 | 19-FEB-2004 K.Boussema Made changes for the FND_LOG. |
30 | 12-MAR-2004 K.Boussema Changed to incorporate the select of lookups |
31 | from the extract objects |
32 | 22-MAR-2004 K.Boussema Added a parameter p_module to the TRACE calls|
33 | and the procedure. |
34 | 11-MAY-2004 K.Boussema Removed the call to XLA trace routine from |
35 | trace() procedure |
36 | 20-Sep-2004 S.Singhania Made ffg changes for the bulk performance: |
37 | - Modified constants C_PACKAGE_SPEC, |
38 | C_PACKAGE_BODY_1, C_PACKAGE_BODY_2, |
39 | C_PRIVATE_API_1. |
40 | - Obsoleted the routines GetPackageName, |
41 | InitGlobalVariables |
42 | - Modified the routines GenerateBodyPackage|
43 | ,GeneratePrivateProcedures, GenerateBody,|
44 | CreateBodyPackage, Compile |
45 | 06-Oct-2004 K.Boussema Made changes for the Accounting Event Extract|
46 | Diagnostics feature. |
47 | 11-Jul-2005 A.Wan Changed for MPA 4262811 |
48 +===========================================================================*/
49
50 --
51 --+==========================================================================+
52 --| |
53 --| |
54 --| |
55 --| |
56 --| |
57 --| |
58 --| |
59 --| |
60 --| |
61 --| |
62 --| AAD templates/Global constants |
63 --| |
64 --| |
65 --| |
66 --| |
67 --| |
68 --| |
69 --| |
70 --| |
71 --| |
72 --+==========================================================================+
73 --
74
75 C_COMMENT CONSTANT VARCHAR2(2000) :=
76 '/'||'*======================================================================+
77 | Copyright (c) 1997 Oracle Corporation |
78 | Redwood Shores, CA, USA |
79 | All rights reserved. |
80 +=======================================================================+
81 | Package Name |
82 | $name
83 | |
84 | DESCRIPTION |
85 | Package generated From Product Accounting Definition |
86 | $pad_name$
87 | $pad_code$
88 | $pad_owner$
89 | $pad_version$
90 | $pad_context$
91 | HISTORY |
92 | $history
93 +=======================================================================*'||'/'
94 ;
95
96
97
98 --+==========================================================================+
99 --| specifcation package template |
100 --+==========================================================================+
101
102 --
103 C_PACKAGE_SPEC CONSTANT VARCHAR2(10000) :=
104 --
105 'CREATE OR REPLACE PACKAGE $PACKAGE_NAME$ AS
106 --
107 $header$
108 --
109 --
110 FUNCTION GetMeaning (
111 p_flex_value_set_id IN INTEGER
112 , p_flex_value IN VARCHAR2
113 , p_source_code IN VARCHAR2
114 , p_source_type_code IN VARCHAR2
115 , p_source_application_id IN INTEGER
116 )
117 RETURN VARCHAR2
118 ;
119
120 FUNCTION CreateJournalEntries(
121 p_application_id IN NUMBER
122 , p_base_ledger_id IN NUMBER
123 , p_pad_start_date IN DATE
124 , p_pad_end_date IN DATE
125 , p_primary_ledger_id IN NUMBER)
126 RETURN NUMBER;
127 --
128 --
129 END $PACKAGE_NAME$;
130 --
131 ';
132 --
133
134
135 --+==========================================================================+
136 --| Template Body package associated to a Product Accounting definition |
137 --+==========================================================================+
138 --
139 C_PACKAGE_BODY_1 CONSTANT VARCHAR2(10000) := '
140 --
141 CREATE OR REPLACE PACKAGE BODY $PACKAGE_NAME$ AS
142 --
143 $header$
144 --
145 --
146 TYPE t_rec_array_event IS RECORD
147 (array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
148 ,array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
149 ,array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
150 ,array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
151 ,array_event_id xla_number_array_type --XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
152 ,array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
153 ,array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
154 ,array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
155 ,array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
156 ,array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
157 ,array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
158 ,array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
159 ,array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
160 ,array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
161 ,array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
162 ,array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
163 ,array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
164 ,array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
165 ,array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
166 ,array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
167 ,array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
168 ,array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L
169 );
170 --
171 type t_array_value_num is table of number index by varchar2(30);
172 type t_array_value_char is table of varchar2(240) index by varchar2(30);
173 type t_array_value_date is table of date index by varchar2(30);
174
175 type t_rec_value is record
176 (array_value_num t_array_value_num
177 ,array_value_char t_array_value_char
178 ,array_value_date t_array_value_date);
179
180 type t_array_event is table of t_rec_value index by varchar2(15); -- 8761772
181
182 g_array_event t_array_event;
183
184 --=============================================================================
185 -- *********** Diagnostics **********
186 --=============================================================================
187
188 g_diagnostics_mode VARCHAR2(1);
189 g_last_hdr_idx NUMBER; -- 4262811 MPA
190 g_hdr_extract_count PLS_INTEGER;
191
192 --=============================================================================
193 -- *********** Local Trace Routine **********
194 --=============================================================================
195
196 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
197 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
198 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
199 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
200 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
201 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
202
203 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
204 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := ''xla.plsql.$PACKAGE_NAME$'';
205
206 C_CHAR CONSTANT VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
207 C_NUM CONSTANT NUMBER := 9.99E125; -- 4219869 Business flow
208
209 g_log_level NUMBER;
210 g_log_enabled BOOLEAN;
211
212 PROCEDURE trace
213 (p_msg IN VARCHAR2
214 ,p_level IN NUMBER
215 ,p_module IN VARCHAR2 ) IS
216 BEGIN
217 ----------------------------------------------------------------------------
218 -- Following is for FND log.
219 ----------------------------------------------------------------------------
220 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
221 fnd_log.message(p_level, p_module);
222 ELSIF p_level >= g_log_level THEN
223 fnd_log.string(p_level, p_module, p_msg);
224 END IF;
225
226 EXCEPTION
227 WHEN xla_exceptions_pkg.application_exception THEN
228 RAISE;
229 WHEN OTHERS THEN
230 xla_exceptions_pkg.raise_message
231 (p_location => ''$PACKAGE_NAME$.trace'');
232 END trace;
233
234 --
235 --+============================================+
236 --| |
237 --| PRIVATE PROCEDURES/FUNCTIONS |
238 --| |
239 --+============================================+
240 --
241 '
242 ;
243
244 C_PRIVATE_API_1 CONSTANT VARCHAR2(32000) := '
245 --
246 /*======================================================================+
247 | |
248 | Private Function |
249 | ValidateLookupMeaning |
250 | |
251 +======================================================================*/
252 FUNCTION ValidateLookupMeaning(
253 p_meaning IN VARCHAR2
254 , p_lookup_code IN VARCHAR2
255 , p_lookup_type IN VARCHAR2
256 , p_source_code IN VARCHAR2
257 , p_source_type_code IN VARCHAR2
258 , p_source_application_id IN INTEGER
259 )
260 RETURN VARCHAR2
261 IS
262 l_log_module VARCHAR2(240);
263 BEGIN
264 IF g_log_enabled THEN
265 l_log_module := C_DEFAULT_MODULE||''.ValidateLookupMeaning'';
266 END IF;
267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
268 trace
269 (p_msg => ''BEGIN of ValidateLookupMeaning''
270 ,p_level => C_LEVEL_PROCEDURE
271 ,p_module => l_log_module);
272 END IF;
273 --
274 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
275 trace
276 (p_msg => ''p_source_code = ''|| p_source_code||
277 '' - p_source_type_code = ''|| p_source_type_code||
278 '' - p_source_application_id = ''|| p_source_application_id||
279 '' - p_lookup_code = ''|| p_lookup_code||
280 '' - p_lookup_type = ''|| p_lookup_type||
281 '' - p_meaning = ''|| p_meaning
282 ,p_level => C_LEVEL_PROCEDURE
283 ,p_module => l_log_module);
284
285 END IF;
286
287 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
288 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
289 xla_accounting_err_pkg. build_message
290 (p_appli_s_name => ''XLA''
291 ,p_msg_name => ''XLA_AP_NO_LOOKUP_MEANING''
292 ,p_token_1 => ''SOURCE_NAME''
293 ,p_value_1 => xla_ae_sources_pkg.GetSourceName(
294 p_source_code
295 , p_source_type_code
296 , p_source_application_id
297 )
298 ,p_token_2 => ''LOOKUP_CODE''
299 ,p_value_2 => p_lookup_code
300 ,p_token_3 => ''LOOKUP_TYPE''
301 ,p_value_3 => p_lookup_type
302 ,p_token_4 => ''PRODUCT_NAME''
303 ,p_value_4 => xla_ae_journal_entry_pkg.g_cache_event.application_name
304 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
305 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
306 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
307 );
308
309 IF (C_LEVEL_ERROR >= g_log_level) THEN
310 trace
311 (p_msg => ''ERROR: XLA_AP_NO_LOOKUP_MEANING''
312 ,p_level => C_LEVEL_ERROR
313 ,p_module => l_log_module);
314 END IF;
315 END IF;
316
317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
318 trace
319 (p_msg => ''END of ValidateLookupMeaning''
320 ,p_level => C_LEVEL_PROCEDURE
321 ,p_module => l_log_module);
322 END IF;
323 RETURN p_meaning;
324 EXCEPTION
325 WHEN xla_exceptions_pkg.application_exception THEN
326 RETURN p_meaning;
327 WHEN OTHERS THEN
328 xla_exceptions_pkg.raise_message
329 (p_location => ''$PACKAGE_NAME$.ValidateLookupMeaning'');
330 --
331 END ValidateLookupMeaning;
332 --
333 --
334 ';
335 --
336 --
337 --
338 C_PACKAGE_BODY_2 CONSTANT VARCHAR2(32000) := '
339 --
340 --+============================================+
341 --| |
342 --| PUBLIC FUNCTION |
343 --| |
344 --+============================================+
345 --
346 FUNCTION CreateJournalEntries
347 (p_application_id IN NUMBER
348 ,p_base_ledger_id IN NUMBER
349 ,p_pad_start_date IN DATE
350 ,p_pad_end_date IN DATE
351 ,p_primary_ledger_id IN NUMBER)
352 RETURN NUMBER IS
353 l_log_module VARCHAR2(240);
354 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
355 l_temp_result BOOLEAN;
356 l_result NUMBER;
357 BEGIN
358 --
359 IF g_log_enabled THEN
360 l_log_module := C_DEFAULT_MODULE||''.CreateJournalEntries'';
361 END IF;
362 --
363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
364 trace
365 (p_msg => ''BEGIN of CreateJournalEntries''||
366 '' - p_base_ledger_id = ''||TO_CHAR(p_base_ledger_id)
367 ,p_level => C_LEVEL_PROCEDURE
368 ,p_module => l_log_module);
369
370 END IF;
371
372 --
373 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
374
375 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
376 trace
377 (p_msg => ''g_diagnostics_mode = ''||g_diagnostics_mode
378 ,p_level => C_LEVEL_STATEMENT
379 ,p_module => l_log_module);
380 END IF;
381 --
382 xla_ae_journal_entry_pkg.SetProductAcctDefinition
383 (p_product_rule_code => ''$PRODUCT_RULE_CODE$''
384 ,p_product_rule_type_code => ''$PRODUCT_RULE_TYPE_CODE$''
385 ,p_product_rule_version => ''$PRODUCT_RULE_VERSION$''
386 ,p_product_rule_name => ''$PRODUCT_RULE_NAME$''
387 ,p_amb_context_code => ''$AMB_CONTEXT_CODE$''
388 );
389
390 l_array_ledgers :=
391 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
392 (p_base_ledger_id => p_base_ledger_id);
393
394 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
395 l_temp_result :=
396 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
397 (p_application_id => p_application_id
398 ,p_base_ledger_id => p_base_ledger_id
399 ,p_target_ledger_id => l_array_ledgers(Idx)
400 ,p_primary_ledger_id => p_primary_ledger_id
401 ,p_pad_start_date => p_pad_start_date
402 ,p_pad_end_date => p_pad_end_date);
403
404 l_temp_result :=
405 l_temp_result AND
406 CreateHeadersAndLines
407 (p_application_id => p_application_id
408 ,p_base_ledger_id => p_base_ledger_id
409 ,p_target_ledger_id => l_array_ledgers(Idx)
410 ,p_pad_start_date => p_pad_start_date
411 ,p_pad_end_date => p_pad_end_date
412 ,p_primary_ledger_id => p_primary_ledger_id
413 );
414 END LOOP;
415
416
417 IF (g_diagnostics_mode = ''Y'' AND
418 C_LEVEL_UNEXPECTED >= g_log_level AND
419 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
420
421 xla_accounting_dump_pkg.acctg_event_extract_log(
422 p_application_id => p_application_id
423 ,p_request_id => xla_environment_pkg.g_Req_Id
424 );
425
426 END IF;
427
428 CASE l_temp_result
429 WHEN TRUE THEN l_result := 0;
430 ELSE l_result := 2;
431 END CASE;
432
433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
434 trace
435 (p_msg => ''return value. = ''||TO_CHAR(l_result)
436 ,p_level => C_LEVEL_PROCEDURE
437 ,p_module => l_log_module);
438 trace
439 (p_msg => ''END of CreateJournalEntries ''
440 ,p_level => C_LEVEL_PROCEDURE
441 ,p_module => l_log_module);
442 END IF;
443
444 RETURN l_result;
445 EXCEPTION
446 WHEN xla_exceptions_pkg.application_exception THEN
447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
448 trace
449 (p_msg => ''ERROR. = ''||sqlerrm
450 ,p_level => C_LEVEL_PROCEDURE
451 ,p_module => l_log_module);
452 END IF;
453 RAISE;
454 WHEN OTHERS THEN
455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
456 trace
457 (p_msg => ''ERROR. = ''||sqlerrm
458 ,p_level => C_LEVEL_PROCEDURE
459 ,p_module => l_log_module);
460 END IF;
461 xla_exceptions_pkg.raise_message
462 (p_location => ''$PACKAGE_NAME$.CreateJournalEntries'');
463 END CreateJournalEntries;
464 --
465 --=============================================================================
466 --
467 --
468 --
469 --
470 --
471 --
472 --
473 --
474 --
475 --
476 --
477 --
478 --
479 --
480 --
481 --
482 --
483 --
484 --
485 --
486 --
487 --
488 --=============================================================================
489 --=============================================================================
490 -- *********** Initialization routine **********
491 --=============================================================================
492
493 BEGIN
494 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
495 g_log_enabled := fnd_log.test
496 (log_level => g_log_level
497 ,module => C_DEFAULT_MODULE);
498
499 IF NOT g_log_enabled THEN
500 g_log_level := C_LEVEL_LOG_DISABLED;
501 END IF;
502 --
503 END $PACKAGE_NAME$;
504 --
505 ';
506 --
507 --
508 --
509 --+==========================================================================+
510 --| |
511 --| Private global variable |
512 --| |
513 --+==========================================================================+
514 --
515 g_UserName VARCHAR2(100);
516 g_PackageName VARCHAR2(30);
517 g_ProductRuleName VARCHAR2(80);
518 g_ProductRuleVersion VARCHAR2(30);
519
520 --+==========================================================================+
521 --| |
522 --| Private global constant or variable declarations |
523 --| |
524 --+==========================================================================+
525 --
526 g_chr_newline CONSTANT VARCHAR2(10):= xla_environment_pkg.g_chr_newline;
527 --
528 --+==========================================================================+
529 --| |
530 --| |
531 --| |
532 --| |
533 --| |
534 --| |
535 --| |
536 --| |
537 --| |
538 --| |
539 --| |
540 --| |
541 --| |
542 --| |
543 --| |
544 --| |
545 --| |
546 --| |
547 --| |
548 --| |
549 --| |
550 --| |
551 --| |
552 --| |
553 --| |
554 --| |
555 --| |
556 --| |
557 --| |
558 --| |
559 --+==========================================================================+
560 --=============================================================================
561 -- *********** Local Trace Routine **********
562 --=============================================================================
563
564 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
565 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
566 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
567 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
568 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
569 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
570
571 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
572 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_cmp_pad_pkg';
573
574 g_log_level NUMBER;
575 g_log_enabled BOOLEAN;
576
577 PROCEDURE trace
578 (p_msg IN VARCHAR2
579 ,p_level IN NUMBER
580 ,p_module IN VARCHAR2 ) IS
581 BEGIN
582 ----------------------------------------------------------------------------
583 -- Following is for FND log.
584 ----------------------------------------------------------------------------
585 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
586 fnd_log.message(p_level, p_module);
587 ELSIF p_level >= g_log_level THEN
588 fnd_log.string(p_level, p_module, p_msg);
589 END IF;
590
591 EXCEPTION
592 WHEN xla_exceptions_pkg.application_exception THEN
593 RAISE;
594 WHEN OTHERS THEN
595 xla_exceptions_pkg.raise_message
596 (p_location => 'xla_cmp_pad_pkg.trace');
597 END trace;
598 --+==========================================================================+
599 --| |
600 --| OVERVIEW of private procedures and functions |
601 --| |
602 --+==========================================================================+
603
604 --+==========================================================================+
605 --| PRIVATE procedures and functions |
606 --| |
607 --| |
608 --| |
609 --| |
610 --| |
611 --| |
612 --| |
613 --| |
614 --| |
615 --| |
616 --| |
617 --| |
618 --| |
619 --| |
620 --| |
621 --| |
622 --| |
623 --| |
624 --| |
625 --| |
626 --| |
627 --| |
628 --| |
629 --| |
630 --| |
631 --| |
632 --| |
633 --| |
634 --| |
635 --| |
636 --+==========================================================================+
637
638 /*-------------------------------------------------------------+
639 | |
640 | Private function |
641 | |
642 | return the application name |
643 | |
644 +-------------------------------------------------------------*/
645
646 FUNCTION GetApplicationName (p_application_id IN NUMBER)
647 RETURN VARCHAR2
648 IS
649 l_application_name VARCHAR2(240);
650 l_log_module VARCHAR2(240);
651 BEGIN
652 IF g_log_enabled THEN
653 l_log_module := C_DEFAULT_MODULE||'.GetApplicationName';
654 END IF;
655 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
656 trace
657 (p_msg => 'BEGIN of GetApplicationName'
658 ,p_level => C_LEVEL_PROCEDURE
659 ,p_module => l_log_module);
660 END IF;
661
662 SELECT REPLACE(fat.application_name, '''','''''')
663 INTO l_application_name
664 FROM fnd_application_tl fat
665 WHERE fat.application_id = p_application_id
666 AND fat.language = nvl(USERENV('LANG'),fat.language)
667 ;
668
669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
670 trace
671 (p_msg => 'END of GetApplicationName'
672 ,p_level => C_LEVEL_PROCEDURE
673 ,p_module => l_log_module);
674 END IF;
675 RETURN l_application_name;
676 EXCEPTION
677 WHEN OTHERS THEN
678 RETURN TO_CHAR(p_application_id);
679 END GetApplicationName;
680
681 /*------------------------------------------------+
682 | |
683 | Private function |
684 | |
685 | return the user name |
686 | |
687 +------------------------------------------------*/
688
689 FUNCTION GetUserName
690 RETURN VARCHAR2
691 IS
692 --
693 l_user_name VARCHAR2(100);
694 l_log_module VARCHAR2(240);
695 --
696 BEGIN
697 IF g_log_enabled THEN
698 l_log_module := C_DEFAULT_MODULE||'.GetUserName';
699 END IF;
700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
701 trace
702 (p_msg => 'BEGIN of GetUserName'
703 ,p_level => C_LEVEL_PROCEDURE
704 ,p_module => l_log_module);
705
706 END IF;
707
708 xla_environment_pkg.refresh;
709
710 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
711 trace
712 (p_msg => 'SQL - Select from fnd_user'
713 ,p_level => C_LEVEL_STATEMENT
714 ,p_module => l_log_module);
715
716 END IF;
717
718 SELECT nvl(fd.user_name, 'ANONYMOUS')
719 INTO l_user_name
720 FROM fnd_user fd
721 WHERE fd.user_id = xla_environment_pkg.g_Usr_Id
722 ;
723
724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
725 trace
726 (p_msg => 'User name = ' || l_user_name
727 ,p_level => C_LEVEL_PROCEDURE
728 ,p_module => l_log_module);
729 trace
730 (p_msg => 'END of GetUserName'
731 ,p_level => C_LEVEL_PROCEDURE
732 ,p_module => l_log_module);
733 END IF;
734 RETURN l_user_name;
735 EXCEPTION
736 WHEN NO_DATA_FOUND THEN
737 l_user_name := 'ANONYMOUS';
738 RETURN l_user_name;
739 WHEN xla_exceptions_pkg.application_exception THEN
740 RETURN NULL;
741 WHEN OTHERS THEN
742 xla_exceptions_pkg.raise_message
743 (p_location => 'xla_cmp_pad_pkg.GetUserName');
744 END GetUserName;
745
746 /*--------------------------------------------------------------+
747 | |
748 | Private function |
749 | |
750 | return the Application Accounting Definition name |
751 | |
752 +--------------------------------------------------------------*/
753
754 FUNCTION GetPADName ( p_application_id IN NUMBER
755 , p_product_rule_code IN VARCHAR2
756 , p_product_rule_type_code IN VARCHAR2
757 , p_product_rule_version IN VARCHAR2
758 , p_amb_context_code IN VARCHAR2
759 )
760 RETURN VARCHAR2
761 IS
762 l_product_rule_name VARCHAR2(80);
763 l_log_module VARCHAR2(240);
764 BEGIN
765 IF g_log_enabled THEN
766 l_log_module := C_DEFAULT_MODULE||'.GetPADName';
767 END IF;
768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
769 trace
770 (p_msg => 'BEGIN of GetPADName'
771 ,p_level => C_LEVEL_PROCEDURE
772 ,p_module => l_log_module);
773 END IF;
774
775 SELECT nvl(xprt.name, p_product_rule_code)
776 , nvl(p_product_rule_version,xprb.product_rule_version)
777 INTO l_product_rule_name
778 , g_ProductRuleVersion
779 FROM xla_product_rules_tl xprt
780 , xla_product_rules_b xprb
781 WHERE xprb.application_id = p_application_id
782 AND xprb.product_rule_code = p_product_rule_code
783 AND xprb.product_rule_type_code = p_product_rule_type_code
784 AND xprb.application_id = xprt.application_id (+)
785 AND xprb.product_rule_code = xprt.product_rule_code (+)
786 AND xprb.product_rule_type_code = xprt.product_rule_type_code (+)
787 AND xprb.amb_context_code = xprt.amb_context_code (+)
788 AND xprb.amb_context_code = p_amb_context_code
789 AND xprb.enabled_flag ='Y'
790 AND xprt.language(+) = USERENV('LANG')
791 ;
792
793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
794 trace
795 (p_msg => 'product_rule_name = ' || l_product_rule_name
796 ,p_level => C_LEVEL_PROCEDURE
797 ,p_module => l_log_module);
798 trace
799 (p_msg => 'END of GetUserName'
800 ,p_level => C_LEVEL_PROCEDURE
801 ,p_module => l_log_module);
802 END IF;
803 RETURN l_product_rule_name ;
804 EXCEPTION
805 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
806 RETURN p_product_rule_code;
807 WHEN xla_exceptions_pkg.application_exception THEN
808 RETURN p_product_rule_code;
809 WHEN OTHERS THEN
810 xla_exceptions_pkg.raise_message
811 (p_location => 'xla_cmp_pad_pkg.GetPADName');
812 END GetPADName;
813
814 /*--------------------------------------------------------------+
815 | |
816 | Private function |
817 | |
818 | Create the comment in the AAD packages |
819 | |
820 +--------------------------------------------------------------*/
821 FUNCTION InsertString( p_InputString IN VARCHAR2
822 , p_token IN VARCHAR2
823 , p_value IN VARCHAR2)
824 RETURN VARCHAR2
825 IS
826 l_OutputString VARCHAR2(2000);
827 BEGIN
828 --
829 l_OutputString := REPLACE(p_InputString,p_token,p_value);
830 l_OutputString := SUBSTR(l_OutputString,1,66);
831 l_OutputString := l_Outputstring || LPAD('|', 67- LENGTH(l_OutputString));
832 --
833 return l_OutputString ;
834 END InsertString;
835
836 /*--------------------------------------------------------------+
837 | |
838 | Private function |
839 | |
840 | GeneratePkgComment |
841 | |
842 | Create the comment in the AAD packages |
843 | |
844 +--------------------------------------------------------------*/
845
846 FUNCTION GeneratePkgComment ( p_user_name IN VARCHAR2
847 , p_package_name IN VARCHAR2
848 , p_product_rule_code IN VARCHAR2
849 , p_product_rule_type_code IN VARCHAR2
850 , p_product_rule_name IN VARCHAR2
851 , p_product_rule_version IN VARCHAR2
852 , p_amb_context_code IN VARCHAR2
853 )
854 RETURN VARCHAR2
855 IS
856
857 l_header VARCHAR2(32000);
858 l_StringValue VARCHAR2(2000);
859 l_log_module VARCHAR2(240);
860 BEGIN
861 IF g_log_enabled THEN
862 l_log_module := C_DEFAULT_MODULE||'.GeneratePkgComment';
863 END IF;
864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
865 trace
866 (p_msg => 'BEGIN of GeneratePkgComment'
867 ,p_level => C_LEVEL_PROCEDURE
868 ,p_module => l_log_module);
869
870 END IF;
871
872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
873 trace
874 (p_msg => 'p_user_name = '||p_user_name||
875 ' - p_package_name = '||p_package_name||
876 ' - p_product_rule_code = '||p_product_rule_code||
877 ' - p_product_rule_type_code = '||p_product_rule_type_code||
878 ' - p_product_rule_name = '||p_product_rule_name||
879 ' - p_product_rule_version = '||p_product_rule_version||
880 ' - p_amb_context_code = '||p_amb_context_code
881 ,p_level => C_LEVEL_STATEMENT
882 ,p_module => l_log_module);
883 END IF;
884
885 l_header := C_COMMENT;
886
887 l_StringValue := InsertString( p_InputString => '$pkg_name'
888 ,p_token => '$pkg_name'
889 ,p_value => p_package_name
890 );
891
892 l_header := REPLACE(l_header,'$name',l_StringValue);
893
894 l_StringValue := InsertString(p_InputString => ' Name : $name '
895 ,p_token => '$name'
896 ,p_value => p_product_rule_name
897 );
898
899 l_header := REPLACE(l_header,'$pad_name$',l_StringValue);
900
901 IF p_product_rule_code IS NOT NULL THEN
902 --
903 l_StringValue := InsertString(p_InputString => ' Code : $code'
904 ,p_token => '$code'
905 ,p_value => p_product_rule_code
906 );
907 ELSE
908 l_StringValue := InsertString(p_InputString => ' Code : $code'
909 ,p_token => '$code'
910 ,p_value => ' '
911 );
912 END IF;
913 l_header := REPLACE(l_header,'$pad_code$',l_StringValue);
914
915 IF p_product_rule_type_code IS NOT NULL AND p_product_rule_type_code = 'S' THEN
916 --
917 l_StringValue := InsertString(p_InputString => ' Owner : $owner'
918 ,p_token => '$owner'
919 ,p_value => 'PRODUCT'
920 );
921 ELSIF p_product_rule_type_code IS NOT NULL AND p_product_rule_type_code = 'C' THEN
922
923 l_StringValue := InsertString(p_InputString => ' Owner : $owner'
924 ,p_token => '$owner'
925 ,p_value => 'CUSTOMER'
926 );
927 ELSE
928 l_StringValue := InsertString(p_InputString => ' Owner : $owner'
929 ,p_token => '$owner'
930 ,p_value => ' '
931 );
932 END IF;
933 l_header := REPLACE(l_header,'$pad_owner$',l_StringValue);
934 --
935 -- insert PAD context
936 --
937 IF p_amb_context_code IS NOT NULL THEN
938 --
939 l_StringValue := InsertString(p_InputString => ' AMB Context Code: $context'
940 ,p_token => '$context'
941 ,p_value => p_amb_context_code
942 );
943 ELSE
944 l_StringValue := InsertString(p_InputString => ' AMB Context Code : $context'
945 ,p_token => '$context'
946 ,p_value => ' '
947 );
948 END IF;
949 l_header := REPLACE(l_header,'$pad_context$',l_StringValue);
950 --
951 --
952 IF g_ProductRuleVersion IS NOT NULL THEN
953 --
954 l_StringValue := InsertString(p_InputString => ' Version : $version'
955 ,p_token => '$version'
956 ,p_value => g_ProductRuleVersion
957 );
958 ELSE
959 l_StringValue := InsertString(p_InputString => ' Version : $version'
960 ,p_token => '$version'
961 ,p_value => ' '
962 );
963 END IF;
964 l_header := REPLACE(l_header,'$pad_version$',l_StringValue);
965
966 l_StringValue := REPLACE('Generated at $date by user $user ' ,'$date',
967 TO_CHAR(sysdate, 'DD-MM-YYYY "at" HH:MM:SS' ));
968
969 l_StringValue := InsertString(p_InputString => l_StringValue
970 ,p_token => '$user'
971 ,p_value => p_user_name
972 );
973 l_header := REPLACE(l_header,'$history',l_StringValue );
974
975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
976 trace
977 (p_msg => 'END of GeneratePkgComment'
978 ,p_level => C_LEVEL_PROCEDURE
979 ,p_module => l_log_module);
980 END IF;
981 RETURN l_header;
982 EXCEPTION
983 WHEN OTHERS THEN
984 RETURN NULL;
985 END GeneratePkgComment;
986
987
988 /*--------------------------------------------------------------+
989 | |
990 | |
991 | |
992 | Generation of AAD specification packages |
993 | |
994 | |
995 | |
996 +--------------------------------------------------------------*/
997
998
999 /*--------------------------------------------------------------+
1000 | |
1001 | Private function |
1002 | |
1003 | BuildSpecPkg |
1004 | |
1005 | Creates the AAD specification packages |
1006 | |
1007 +--------------------------------------------------------------*/
1008
1009 FUNCTION BuildSpecPkg( p_user_name IN VARCHAR2
1010 , p_package_name IN VARCHAR2
1011 , p_product_rule_code IN VARCHAR2
1012 , p_product_rule_type_code IN VARCHAR2
1013 , p_product_rule_name IN VARCHAR2
1014 , p_product_rule_version IN VARCHAR2
1015 , p_amb_context_code IN VARCHAR2)
1016 RETURN VARCHAR2
1017 IS
1018 l_SpecPkg VARCHAR2(32000);
1019 l_log_module VARCHAR2(240);
1020 BEGIN
1021 IF g_log_enabled THEN
1022 l_log_module := C_DEFAULT_MODULE||'.BuildSpecPkg';
1023 END IF;
1024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1025 trace
1026 (p_msg => 'BEGIN of BuildSpecPkg'
1027 ,p_level => C_LEVEL_PROCEDURE
1028 ,p_module => l_log_module);
1029
1030 END IF;
1031 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1032 trace
1033 (p_msg => 'p_user_name = '||p_user_name||
1034 ' - p_package_name = '||p_package_name||
1035 ' - p_product_rule_code = '||p_product_rule_code||
1036 ' - p_product_rule_type_code = '||p_product_rule_type_code||
1037 ' - p_product_rule_name = '||p_product_rule_name||
1038 ' - p_product_rule_version = '||p_product_rule_version||
1039 ' - p_amb_context_code = '||p_amb_context_code
1040 ,p_level => C_LEVEL_STATEMENT
1041 ,p_module => l_log_module);
1042 END IF;
1043
1044 l_SpecPkg := C_PACKAGE_SPEC;
1045
1046 l_SpecPkg := REPLACE(l_SpecPkg,'$PACKAGE_NAME$',p_package_name);
1047
1048 l_SpecPkg := REPLACE(l_SpecPkg,'$header$',GeneratePkgComment (
1049 p_user_name => p_user_name
1050 , p_package_name => p_package_name
1051 , p_product_rule_code => p_product_rule_code
1052 , p_product_rule_type_code => p_product_rule_type_code
1053 , p_product_rule_name => p_product_rule_name
1054 , p_product_rule_version => p_product_rule_version
1055 , p_amb_context_code => p_amb_context_code
1056 ) );
1057
1058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1059 trace
1060 (p_msg => 'END of BuildSpecPkg = '||length(l_SpecPkg)
1061 ,p_level => C_LEVEL_PROCEDURE
1062 ,p_module => l_log_module);
1063
1064 END IF;
1065 RETURN l_SpecPkg ;
1066 EXCEPTION
1067 WHEN xla_exceptions_pkg.application_exception THEN
1068 RETURN NULL;
1069 WHEN OTHERS THEN
1070 xla_exceptions_pkg.raise_message
1071 (p_location => 'xla_cmp_pad_pkg.BuildSpecPkg');
1072 END BuildSpecPkg;
1073
1074 /*--------------------------------------------------------------+
1075 | |
1076 | Private function |
1077 | |
1078 | GenerateSpecPackage |
1079 | |
1080 | Generates the AAD specifcation packages from AAD definitions |
1081 | Returns TRUE if the compiler succeeds to generate the spec. |
1082 | package, FALSE otherwise. |
1083 +--------------------------------------------------------------*/
1084
1085 FUNCTION GenerateSpecPackage(
1086 p_application_id IN NUMBER
1087 , p_product_rule_code IN VARCHAR2
1088 , p_product_rule_type_code IN VARCHAR2
1089 , p_product_rule_version IN VARCHAR2
1090 , p_amb_context_code IN VARCHAR2
1091 , p_package OUT NOCOPY VARCHAR2
1092 )
1093 RETURN BOOLEAN
1094 IS
1095 l_log_module VARCHAR2(240);
1096 BEGIN
1097 IF g_log_enabled THEN
1098 l_log_module := C_DEFAULT_MODULE||'.GenerateSpecPackage';
1099 END IF;
1100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1101 trace
1102 (p_msg => 'BEGIN of GenerateSpecPackage'
1103 ,p_level => C_LEVEL_PROCEDURE
1104 ,p_module => l_log_module);
1105 END IF;
1106
1107 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1108 trace
1109 (p_msg =>' p_product_rule_code = '||p_product_rule_code||
1110 ' - p_product_rule_type_code = '||p_product_rule_type_code||
1111 ' - p_application_id = '||p_application_id||
1112 ' - p_product_rule_version = '||p_product_rule_version||
1113 ' - p_amb_context_code = '||p_amb_context_code
1114 ,p_level => C_LEVEL_STATEMENT
1115 ,p_module => l_log_module);
1116 END IF;
1117
1118 p_package := BuildSpecPkg(
1119 p_user_name => g_UserName
1120 , p_package_name => g_PackageName
1121 , p_product_rule_code => p_product_rule_code
1122 , p_product_rule_type_code => p_product_rule_type_code
1123 , p_product_rule_name => g_ProductRuleName
1124 , p_product_rule_version => p_product_rule_version
1125 , p_amb_context_code => p_amb_context_code
1126 );
1127
1128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1129 trace
1130 (p_msg => 'END of GenerateSpecPackage'
1131 ,p_level => C_LEVEL_PROCEDURE
1132 ,p_module => l_log_module);
1133 END IF;
1134 RETURN (p_package IS NOT NULL);
1135 EXCEPTION
1136 WHEN xla_exceptions_pkg.application_exception THEN
1137 RETURN FALSE;
1138 WHEN OTHERS THEN
1139 xla_exceptions_pkg.raise_message
1140 (p_location => 'xla_cmp_pad_pkg.GenerateSpecPackage');
1141 END GenerateSpecPackage;
1142
1143 /*------------------------------------------------------------------+
1144 | |
1145 | Private function |
1146 | |
1147 | CreateSpecPackage |
1148 | |
1149 | Creates/compiler the AAD specification packages in the DATABASE |
1150 | It returns TRUE, if the package created is VALID, FALSE otherwise |
1151 | |
1152 +------------------------------------------------------------------*/
1153
1154 FUNCTION CreateSpecPackage (
1155 p_application_id IN NUMBER
1156 , p_product_rule_code IN VARCHAR2
1157 , p_product_rule_type_code IN VARCHAR2
1158 , p_product_rule_version IN VARCHAR2
1159 , p_amb_context_code IN VARCHAR2)
1160 RETURN BOOLEAN
1161 IS
1162 l_Package VARCHAR2(32000);
1163 l_IsCompiled BOOLEAN;
1164 l_log_module VARCHAR2(240);
1165 BEGIN
1166 IF g_log_enabled THEN
1167 l_log_module := C_DEFAULT_MODULE||'.CreateSpecPackage';
1168 END IF;
1169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1170 trace
1171 (p_msg => 'BEGIN of CreateSpecPackage'
1172 ,p_level => C_LEVEL_PROCEDURE
1173 ,p_module => l_log_module);
1174 END IF;
1175
1176 l_IsCompiled := GenerateSpecPackage(
1177 p_application_id => p_application_id
1178 , p_product_rule_code => p_product_rule_code
1179 , p_product_rule_type_code => p_product_rule_type_code
1180 , p_product_rule_version => p_product_rule_version
1181 , p_amb_context_code => p_amb_context_code
1182 , p_package => l_Package
1183 );
1184
1185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1186 trace
1187 (p_msg =>' Compile the specification package in the DATABASE'||
1188 ' - length of the package = '||length(l_Package)
1189 ,p_level => C_LEVEL_STATEMENT
1190 ,p_module => l_log_module);
1191 END IF;
1192
1193 l_IsCompiled := xla_cmp_create_pkg.CreateSpecPackage(
1194 p_product_rule_name => g_ProductRuleName
1195 , p_package_name => g_PackageName
1196 , p_package_text => l_Package
1197 )
1198 AND l_IsCompiled;
1199
1200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1201 trace
1202 (p_msg => 'END of CreateSpecPackage : return = '
1203 ||CASE WHEN l_IsCompiled THEN 'TRUE' ELSE 'FALSE' END
1204 ,p_level => C_LEVEL_PROCEDURE
1205 ,p_module => l_log_module);
1206
1207 END IF;
1208 RETURN l_IsCompiled;
1209 EXCEPTION
1210 WHEN xla_exceptions_pkg.application_exception THEN
1211 RETURN FALSE;
1212 WHEN OTHERS THEN
1213 xla_exceptions_pkg.raise_message
1214 (p_location => 'xla_cmp_pad_pkg.CreateSpecPackage');
1215 END CreateSpecPackage;
1216
1217 /*--------------------------------------------------------------+
1218 | |
1219 | |
1220 | |
1221 | Generation of AAD Body packages |
1222 | |
1223 | |
1224 | |
1225 +--------------------------------------------------------------*/
1226
1227 /*--------------------------------------------------------------+
1228 | |
1229 | Private function |
1230 | |
1231 | GeneratePrivateProcedures |
1232 | |
1233 | Generates private procedures and functions in AAD packages |
1234 | |
1235 +--------------------------------------------------------------*/
1236
1237 FUNCTION GeneratePrivateProcedures
1238 (p_application_id IN NUMBER
1239 ,p_product_rule_code IN VARCHAR2
1240 ,p_product_rule_type_code IN VARCHAR2
1241 ,p_product_rule_name IN VARCHAR2
1242 ,p_product_rule_version IN VARCHAR2
1243 ,p_amb_context_code IN VARCHAR2
1244 ,p_package_name IN VARCHAR2
1245 --
1246 ,p_rec_aad_objects IN OUT NOCOPY xla_cmp_source_pkg.t_rec_aad_objects
1247 ,p_rec_sources IN OUT NOCOPY xla_cmp_source_pkg.t_rec_sources
1248 ,p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S)
1249 RETURN BOOLEAN IS
1250 --
1251 l_IsCompiled BOOLEAN;
1252 l_IsGenerated BOOLEAN;
1253 --
1254 l_array_body DBMS_SQL.VARCHAR2S;
1255 l_array_string DBMS_SQL.VARCHAR2S;
1256 l_log_module VARCHAR2(240);
1257 --
1258 BEGIN
1259 IF g_log_enabled THEN
1260 l_log_module := C_DEFAULT_MODULE||'.GeneratePrivateProcedures';
1261 END IF;
1262 --
1263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1264 trace
1265 (p_msg => 'BEGIN of GeneratePrivateProcedures'
1266 ,p_level => C_LEVEL_PROCEDURE
1267 ,p_module => l_log_module);
1268 END IF;
1269 --
1270 l_IsCompiled := TRUE;
1271 l_IsGenerated := TRUE;
1272
1273 -- generate description functions and the call to those functions
1274 l_array_body := xla_cmp_string_pkg.g_null_varchar2s;
1275 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1276
1277 --
1278 -- Generate Descriptions
1279 --
1280
1281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1282 trace
1283 (p_msg => '-> CALL XLA_CMP_DESCRIPTION_PKG.GenerateDescriptions API'
1284 ,p_level => C_LEVEL_STATEMENT
1285 ,p_module => l_log_module);
1286 END IF;
1287
1288 l_IsGenerated :=
1289 XLA_CMP_DESCRIPTION_PKG.GenerateDescriptions
1290 (p_product_rule_code => p_product_rule_code
1291 ,p_product_rule_type_code => p_product_rule_type_code
1292 ,p_application_id => p_application_id
1293 ,p_amb_context_code => p_amb_context_code
1294 ,p_package_name => p_package_name
1295 --
1296 ,p_rec_aad_objects => p_rec_aad_objects
1297 ,p_rec_sources => p_rec_sources
1298 --
1299 ,p_package_body => l_array_string);
1300
1301 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1302 --
1303 l_array_body :=
1304 xla_cmp_string_pkg.ConcatTwoStrings
1305 (p_array_string_1 => l_array_body
1306 ,p_array_string_2 => l_array_string);
1307 --
1308 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1309
1310 -- generate account derivation rule functions
1311 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1312 trace
1313 (p_msg => '-> CALL XLA_CMP_ADR_PKG.GenerateADR API'
1314 ,p_level => C_LEVEL_STATEMENT
1315 ,p_module => l_log_module);
1316 END IF;
1317 --
1318 l_IsGenerated :=
1319 xla_cmp_adr_pkg.GenerateADR
1320 (p_product_rule_code => p_product_rule_code
1321 ,p_product_rule_type_code => p_product_rule_type_code
1322 ,p_application_id => p_application_id
1323 ,p_amb_context_code => p_amb_context_code
1324 ,p_package_name => p_package_name
1325 --
1326 ,p_rec_aad_objects => p_rec_aad_objects
1327 ,p_rec_sources => p_rec_sources
1328 ,p_package_body => l_array_string);
1329
1330 l_array_body :=
1331 xla_cmp_string_pkg.ConcatTwoStrings
1332 (p_array_string_1 => l_array_body
1333 ,p_array_string_2 => l_array_string);
1334 --
1335 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1336 --
1337 l_IsCompiled := l_IsCompiled AND l_IsGenerated;
1338
1339 --------------------------------------------------------------------------------------
1340 -- 4262811 Generate Recognition JLT for MPA
1341 --------------------------------------------------------------------------------------
1342 l_IsGenerated := XLA_CMP_MPA_JLT_PKG.GenerateMpaJLT
1343 (p_product_rule_code => p_product_rule_code
1344 ,p_product_rule_type_code => p_product_rule_type_code
1345 ,p_application_id => p_application_id
1346 ,p_amb_context_code => p_amb_context_code
1347 ,p_package_name => p_package_name
1348 ,p_rec_aad_objects => p_rec_aad_objects
1349 ,p_rec_sources => p_rec_sources
1350 ,p_package_body => l_array_string);
1351
1352 l_array_body :=
1353 xla_cmp_string_pkg.ConcatTwoStrings
1354 (p_array_string_1 => l_array_body
1355 ,p_array_string_2 => l_array_string);
1356 --
1357 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1358 --
1359 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1360 --------------------------------------------------------------------------------------
1361
1362 -- generate accounting line type procedures
1363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1364 trace
1365 (p_msg => '-> CALL xla_cmp_acct_line_type_pkg.GenerateAcctLineType API'
1366 ,p_level => C_LEVEL_STATEMENT
1367 ,p_module => l_log_module);
1368 END IF;
1369 --
1370 l_IsGenerated :=
1371 xla_cmp_acct_line_type_pkg.GenerateAcctLineType
1372 (p_product_rule_code => p_product_rule_code
1373 ,p_product_rule_type_code => p_product_rule_type_code
1374 ,p_application_id => p_application_id
1375 ,p_amb_context_code => p_amb_context_code
1376 ,p_package_name => p_package_name
1377 --
1378 ,p_rec_aad_objects => p_rec_aad_objects
1379 ,p_rec_sources => p_rec_sources
1380 ,p_package_body => l_array_string);
1381
1382 l_array_body :=
1383 xla_cmp_string_pkg.ConcatTwoStrings
1384 (p_array_string_1 => l_array_body
1385 ,p_array_string_2 => l_array_string);
1386 --
1387 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1388 --
1389 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1390
1391 -- generate Event Class and Procedure
1392 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1393 trace
1394 (p_msg => '-> CALL xla_cmp_event_type_pkg.GenerateEventClassAndType API'
1395 ,p_level => C_LEVEL_STATEMENT
1396 ,p_module => l_log_module);
1397 END IF;
1398
1399 l_IsGenerated :=
1400 xla_cmp_event_type_pkg.GenerateEventClassAndType
1401 (p_application_id => p_application_id
1402 ,p_product_rule_code => p_product_rule_code
1403 ,p_product_rule_type_code => p_product_rule_type_code
1404 ,p_product_rule_version => p_product_rule_version
1405 ,p_amb_context_code => p_amb_context_code
1406 ,p_product_rule_name => p_product_rule_name
1407 ,p_package_name => p_package_name
1408 --
1409 ,p_rec_aad_objects => p_rec_aad_objects
1410 ,p_rec_sources => p_rec_sources
1411 --
1412 ,p_package_body => l_array_string);
1413
1414 l_array_body :=
1415 xla_cmp_string_pkg.ConcatTwoStrings
1416 (p_array_string_1 => l_array_body
1417 ,p_array_string_2 => l_array_string);
1418 --
1419 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1420
1421 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1422 --
1423 -- generate get_meaning API for source associated to value set.
1424 --
1425 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1426 trace
1427 (p_msg => '-> CALL xla_cmp_source_pkg.GenerateGetMeaningAPI API'
1428 ,p_level => C_LEVEL_STATEMENT
1429 ,p_module => l_log_module);
1430 END IF;
1431 --
1432
1433 l_IsGenerated :=
1434 xla_cmp_source_pkg.GenerateGetMeaningAPI
1435 (p_package_name => p_package_name
1436 ,p_array_flex_value_set_id => p_rec_sources.array_flex_value_set_id
1437 ,p_package_body => l_array_string);
1438
1439 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1440
1441 l_array_body :=
1442 xla_cmp_string_pkg.ConcatTwoStrings
1443 (p_array_string_1 => l_array_string
1444 ,p_array_string_2 => l_array_body);
1445
1446 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1447
1448 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1449
1450 -- generate main procedure
1451 --
1452 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1453 trace
1454 (p_msg => '-> CALL xla_cmp_event_type_pkg.BuildMainProc API'
1455 ,p_level => C_LEVEL_STATEMENT
1456 ,p_module => l_log_module);
1457 END IF;
1458 --
1459 l_IsGenerated :=
1460 xla_cmp_event_type_pkg.BuildMainProc
1461 (p_application_id => p_application_id
1462 ,p_product_rule_code => p_product_rule_code
1463 ,p_product_rule_type_code => p_product_rule_type_code
1464 ,p_product_rule_name => p_product_rule_name
1465 ,p_product_rule_version => p_product_rule_version
1466 ,p_amb_context_code => p_amb_context_code
1467 ,p_package_name => p_package_name
1468 --
1469 ,p_rec_aad_objects => p_rec_aad_objects
1470 --
1471 ,p_package_body => l_array_string);
1472
1473 l_IsCompiled := l_IsCompiled AND l_IsGenerated ;
1474
1475 l_array_body :=
1476 xla_cmp_string_pkg.ConcatTwoStrings
1477 (p_array_string_1 => l_array_body
1478 ,p_array_string_2 => l_array_string);
1479
1480
1481 l_array_string := xla_cmp_string_pkg.g_null_varchar2s;
1482
1483 p_package_body := l_array_body;
1484 --
1485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1486 trace
1487 (p_msg => 'l_isCompiled = '||CASE WHEN l_IsCompiled
1488 THEN 'TRUE'
1489 ELSE 'FALSE' END
1490 ,p_level => C_LEVEL_STATEMENT
1491 ,p_module => l_log_module);
1492 trace
1493 (p_msg => 'END of GeneratePrivateProcedures'
1494 ,p_level => C_LEVEL_PROCEDURE
1495 ,p_module => l_log_module);
1496 END IF;
1497 --
1498 RETURN l_IsCompiled;
1499 EXCEPTION
1500 WHEN xla_exceptions_pkg.application_exception THEN
1501 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1502 trace
1503 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR ='||sqlerrm
1504 ,p_level => C_LEVEL_EXCEPTION
1505 ,p_module => l_log_module);
1506 END IF;
1507 RETURN FALSE;
1508 WHEN OTHERS THEN
1509 xla_exceptions_pkg.raise_message
1510 (p_location => 'xla_cmp_pad_pkg.GeneratePrivateProcedures');
1511 END GeneratePrivateProcedures;
1512
1513 /*--------------------------------------------------------------+
1514 | |
1515 | Private function |
1516 | |
1517 | GenerateBody |
1518 | |
1519 | Generates the procedures and functions in AAD body packages |
1520 | |
1521 +--------------------------------------------------------------*/
1522
1523 FUNCTION GenerateBody
1524 (p_application_id IN NUMBER
1525 ,p_product_rule_code IN VARCHAR2
1526 ,p_product_rule_type_code IN VARCHAR2
1527 ,p_product_rule_name IN VARCHAR2
1528 ,p_product_rule_version IN VARCHAR2
1529 ,p_amb_context_code IN VARCHAR2
1530 ,p_package_name IN VARCHAR2
1531 ,p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S)
1532 RETURN BOOLEAN IS
1533 --
1534 l_rec_aad_objects xla_cmp_source_pkg.t_rec_aad_objects;
1535 l_rec_sources xla_cmp_source_pkg.t_rec_sources;
1536 l_null_rec_aad_objects xla_cmp_source_pkg.t_rec_aad_objects;
1537 l_null_rec_sources xla_cmp_source_pkg.t_rec_sources;
1538 --
1539 l_IsCompiled BOOLEAN;
1540 l_log_module VARCHAR2(240);
1541 --
1542 BEGIN
1543 IF g_log_enabled THEN
1544 l_log_module := C_DEFAULT_MODULE||'.GenerateBody';
1545 END IF;
1546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1547 trace
1548 (p_msg => 'BEGIN of GenerateBody'
1549 ,p_level => C_LEVEL_PROCEDURE
1550 ,p_module => l_log_module);
1551 END IF;
1552
1553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1554 trace
1555 (p_msg => 'p_application_id = '||p_application_id||
1556 ' - p_product_rule_code = '||p_product_rule_code||
1557 ' - p_product_rule_type_code = '||p_product_rule_type_code||
1558 ' - p_product_rule_name = '||p_product_rule_name||
1559 ' - p_product_rule_version = '||p_product_rule_version||
1560 ' - p_package_name = '||p_package_name||
1561 ' - p_amb_context_code = '||p_amb_context_code
1562 ,p_level => C_LEVEL_STATEMENT
1563 ,p_module => l_log_module);
1564 END IF;
1565
1566 l_IsCompiled :=
1567 GeneratePrivateProcedures
1568 (p_application_id => p_application_id
1569 ,p_product_rule_code => p_product_rule_code
1570 ,p_product_rule_type_code => p_product_rule_type_code
1571 ,p_product_rule_name => p_product_rule_name
1572 ,p_product_rule_version => p_product_rule_version
1573 ,p_amb_context_code => p_amb_context_code
1574 ,p_package_name => p_package_name
1575 ,p_rec_aad_objects => l_rec_aad_objects
1576 ,p_rec_sources => l_rec_sources
1577 ,p_package_body => p_package_body);
1578
1579 l_rec_aad_objects := l_null_rec_aad_objects;
1580 l_rec_sources := l_null_rec_sources;
1581
1582
1583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1584 trace
1585 (p_msg => 'l_isCompiled = '||CASE WHEN l_IsCompiled
1586 THEN 'TRUE'
1587 ELSE 'FALSE' END
1588 ,p_level => C_LEVEL_STATEMENT
1589 ,p_module => l_log_module);
1590 trace
1591 (p_msg => 'END of GenerateBody'
1592 ,p_level => C_LEVEL_PROCEDURE
1593 ,p_module => l_log_module);
1594 END IF;
1595 RETURN l_IsCompiled;
1596 EXCEPTION
1597 WHEN xla_exceptions_pkg.application_exception THEN
1598 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1599 trace
1600 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR ='||sqlerrm
1601 ,p_level => C_LEVEL_EXCEPTION
1602 ,p_module => l_log_module);
1603 END IF;
1604 RETURN FALSE;
1605 WHEN OTHERS THEN
1606 xla_exceptions_pkg.raise_message
1607 (p_location => 'xla_cmp_pad_pkg.GenerateBody');
1608 END GenerateBody;
1609
1610 /*--------------------------------------------------------------+
1611 | |
1612 | Private function |
1613 | |
1614 | GenerateSpecPackage |
1615 | |
1616 | Generates the AAD body packages from AAD definitions |
1617 | Returns TRUE if the compiler succeeds to generate the body |
1618 | package, FALSE otherwise. |
1619 +--------------------------------------------------------------*/
1620
1621 FUNCTION GenerateBodyPackage
1622 (p_application_id IN NUMBER
1623 ,p_product_rule_code IN VARCHAR2
1624 ,p_product_rule_type_code IN VARCHAR2
1625 ,p_product_rule_version IN VARCHAR2
1626 ,p_amb_context_code IN VARCHAR2
1627 ,p_package_body OUT NOCOPY DBMS_SQL.VARCHAR2S)
1628 RETURN BOOLEAN IS
1629
1630 l_array_pkg DBMS_SQL.VARCHAR2S;
1631 l_BodyPkg VARCHAR2(32000);
1632 l_array_body DBMS_SQL.VARCHAR2S;
1633 l_IsCompiled BOOLEAN;
1634 l_log_module VARCHAR2(240);
1635
1636 BEGIN
1637 IF g_log_enabled THEN
1638 l_log_module := C_DEFAULT_MODULE||'.GenerateBodyPackage';
1639 END IF;
1640 --
1641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1642 trace
1643 (p_msg => 'BEGIN of GenerateBodyPackage'
1644 ,p_level => C_LEVEL_PROCEDURE
1645 ,p_module => l_log_module);
1646 END IF;
1647
1648 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1649 trace
1650 (p_msg => 'p_application_id = '||p_application_id||
1651 ' - p_product_rule_code = '||p_product_rule_code||
1652 ' - p_product_rule_type_code = '||p_product_rule_type_code||
1653 ' - p_product_rule_version = '||p_product_rule_version||
1654 ' - p_amb_context_code = '||p_amb_context_code
1655 ,p_level => C_LEVEL_STATEMENT
1656 ,p_module => l_log_module);
1657 END IF;
1658
1659 l_IsCompiled := TRUE;
1660 l_array_body := xla_cmp_string_pkg.g_null_varchar2s;
1661 l_array_pkg := xla_cmp_string_pkg.g_null_varchar2s;
1662
1663 l_BodyPkg := C_PACKAGE_BODY_1 || C_PRIVATE_API_1;
1664 l_BodyPkg := REPLACE(l_BodyPkg,'$PACKAGE_NAME$' ,g_PackageName);
1665
1666 l_BodyPkg :=
1667 REPLACE(l_BodyPkg,'$header$'
1668 ,GeneratePkgComment
1669 (p_user_name => g_UserName
1670 ,p_package_name => g_PackageName
1671 ,p_product_rule_code => p_product_rule_code
1672 ,p_product_rule_type_code => p_product_rule_type_code
1673 ,p_product_rule_name => g_ProductRuleName
1674 ,p_product_rule_version => p_product_rule_version
1675 ,p_amb_context_code => p_amb_context_code)
1676 );
1677
1678 xla_cmp_string_pkg.CreateString
1679 (p_package_text => l_BodyPkg
1680 ,p_array_string => l_array_pkg);
1681
1682 l_IsCompiled :=
1683 GenerateBody
1684 (p_application_id => p_application_id
1685 ,p_product_rule_code => p_product_rule_code
1686 ,p_product_rule_type_code => p_product_rule_type_code
1687 ,p_product_rule_name => g_ProductRuleName
1688 ,p_product_rule_version => p_product_rule_version
1689 ,p_amb_context_code => p_amb_context_code
1690 ,p_package_name => g_PackageName
1691 ,p_package_body => l_array_body);
1692
1693 l_array_pkg :=
1694 xla_cmp_string_pkg.ConcatTwoStrings
1695 (p_array_string_1 => l_array_pkg
1696 ,p_array_string_2 => l_array_body);
1697 --
1698 -- create the PL/SQL DBMS_SQL.VARCHAR2S array
1699 --
1700 l_BodyPkg := C_PACKAGE_BODY_2;
1701 --
1702 l_BodyPkg := REPLACE(l_BodyPkg,'$PRODUCT_RULE_CODE$' ,p_product_rule_code);
1703 l_BodyPkg := REPLACE(l_BodyPkg,'$PRODUCT_RULE_TYPE_CODE$',p_product_rule_type_code);
1704 l_BodyPkg := REPLACE(l_BodyPkg,'$PRODUCT_RULE_VERSION$' ,g_ProductRuleVersion);
1705 l_BodyPkg := REPLACE(l_BodyPkg,'$PRODUCT_RULE_NAME$' ,REPLACE(g_ProductRuleName,'''',''''''));
1706 l_BodyPkg := REPLACE(l_BodyPkg,'$PACKAGE_NAME$' ,g_PackageName);
1707 l_BodyPkg := REPLACE(l_BodyPkg,'$AMB_CONTEXT_CODE$' ,p_amb_context_code);
1708
1709 xla_cmp_string_pkg.CreateString
1710 (p_package_text => l_BodyPkg
1711 ,p_array_string => l_array_body);
1712
1713 l_array_pkg :=
1714 xla_cmp_string_pkg.ConcatTwoStrings
1715 (p_array_string_1 => l_array_pkg
1716 ,p_array_string_2 => l_array_body);
1717
1718 p_package_body := l_array_pkg;
1719
1720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1721 trace
1722 (p_msg => 'return value (l_IsCompiled) = '||
1723 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
1724 ,p_level => C_LEVEL_PROCEDURE
1725 ,p_module => l_log_module);
1726 trace
1727 (p_msg => 'END of GenerateBodyPackage'
1728 ,p_level => C_LEVEL_PROCEDURE
1729 ,p_module => l_log_module);
1730 END IF;
1731 RETURN l_IsCompiled;
1732 EXCEPTION
1733 WHEN xla_exceptions_pkg.application_exception THEN
1734 RETURN FALSE;
1735 WHEN OTHERS THEN
1736 xla_exceptions_pkg.raise_message
1737 (p_location => 'xla_cmp_pad_pkg.GenerateBodyPackage');
1738 END GenerateBodyPackage;
1739
1740 /*--------------------------------------------------------------+
1741 | |
1742 | Private function |
1743 | |
1744 | CreateBodyPackage |
1745 | |
1746 | Compiles the AAD body packages in the DATABASE |
1747 | Returns TRUE if the package body is VALID, FALSE otherwise. |
1748 | |
1749 +--------------------------------------------------------------*/
1750 FUNCTION CreateBodyPackage
1751 (p_application_id IN NUMBER
1752 ,p_product_rule_code IN VARCHAR2
1753 ,p_product_rule_type_code IN VARCHAR2
1754 ,p_product_rule_version IN VARCHAR2
1755 ,p_amb_context_code IN VARCHAR2)
1756 RETURN BOOLEAN IS
1757 --
1758 l_Package DBMS_SQL.VARCHAR2S;
1759 l_PackageName VARCHAR2(30);
1760 l_ProductRuleName VARCHAR2(80);
1761 l_ProductRuleVersion VARCHAR2(30);
1762 --
1763 l_IsCompiled BOOLEAN;
1764 l_log_module VARCHAR2(240);
1765 --
1766 BEGIN
1767 IF g_log_enabled THEN
1768 l_log_module := C_DEFAULT_MODULE||'.CreateBodyPackage';
1769 END IF;
1770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1771 trace
1772 (p_msg => 'BEGIN of CreateBodyPackage'
1773 ,p_level => C_LEVEL_PROCEDURE
1774 ,p_module => l_log_module);
1775 END IF;
1776
1777 l_IsCompiled :=
1778 GenerateBodyPackage
1779 (p_application_id => p_application_id
1780 ,p_product_rule_code => p_product_rule_code
1781 ,p_product_rule_type_code => p_product_rule_type_code
1782 ,p_product_rule_version => p_product_rule_version
1783 ,p_amb_context_code => p_amb_context_code
1784 ,p_package_body => l_Package);
1785
1786 -- Store sources used by an AAD.
1787
1788 DELETE xla_aad_sources
1789 WHERE amb_context_code = p_amb_context_code
1790 AND product_rule_type_code = p_product_rule_type_code
1791 AND product_rule_code = p_product_rule_code;
1792
1793 INSERT INTO xla_aad_sources
1794 (
1795 APPLICATION_ID
1796 ,AMB_CONTEXT_CODE
1797 ,PRODUCT_RULE_TYPE_CODE
1798 ,PRODUCT_RULE_CODE
1799 ,ENTITY_CODE
1800 ,EVENT_CLASS_CODE
1801 ,SOURCE_CODE
1802 ,SOURCE_DATATYPE_CODE
1803 ,SOURCE_LEVEL_CODE
1804 ,EXTRACT_OBJECT_NAME
1805 ,EXTRACT_OBJECT_TYPE_CODE
1806 ,ALWAYS_POPULATED_FLAG
1807 ,COLUMN_DATATYPE_CODE
1808 ,SOURCE_HASH_ID
1809 ,SOURCE_APPLICATION_ID
1810 ,REFERENCE_OBJECT_FLAG
1811 ,JOIN_CONDITION
1812 ,CREATION_DATE
1813 ,CREATED_BY
1814 ,LAST_UPDATE_DATE
1815 ,LAST_UPDATED_BY
1816 ,LAST_UPDATE_LOGIN
1817 ,PROGRAM_UPDATE_DATE
1818 ,PROGRAM_APPLICATION_ID
1819 ,PROGRAM_ID
1820 ,REQUEST_ID
1821 )
1822 SELECT
1823 APPLICATION_ID
1824 ,p_amb_context_code
1825 ,p_product_rule_type_code
1826 ,p_product_rule_code
1827 ,ENTITY_CODE
1828 ,EVENT_CLASS_CODE
1829 ,SOURCE_CODE
1830 ,SOURCE_DATATYPE_CODE
1831 ,SOURCE_LEVEL_CODE
1832 ,EXTRACT_OBJECT_NAME
1833 ,EXTRACT_OBJECT_TYPE_CODE
1834 ,ALWAYS_POPULATED_FLAG
1835 ,COLUMN_DATATYPE_CODE
1836 ,SOURCE_HASH_ID
1837 ,SOURCE_APPLICATION_ID
1838 ,REFERENCE_OBJECT_FLAG
1839 ,JOIN_CONDITION
1840 ,SYSDATE
1841 ,xla_environment_pkg.g_usr_id
1842 ,SYSDATE
1843 ,xla_environment_pkg.g_usr_id
1844 ,xla_environment_pkg.g_login_id
1845 ,SYSDATE
1846 ,xla_environment_pkg.g_prog_appl_id
1847 ,xla_environment_pkg.g_prog_id
1848 ,xla_environment_pkg.g_Req_Id
1849 FROM xla_evt_class_sources_gt;
1850
1851 l_IsCompiled :=
1852 xla_cmp_create_pkg.CreateBodyPackage
1853 (p_product_rule_name => g_ProductRuleName
1854 ,p_package_name => g_PackageName
1855 ,p_package_text => l_Package)
1856 AND l_IsCompiled;
1857 --
1858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1859 trace
1860 (p_msg => 'return value (l_IsCompiled) = '||
1861 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
1862 ,p_level => C_LEVEL_PROCEDURE
1863 ,p_module => l_log_module);
1864 trace
1865 (p_msg => 'END of CreateBodyPackage'
1866 ,p_level => C_LEVEL_PROCEDURE
1867 ,p_module => l_log_module);
1868 END IF;
1869 RETURN l_IsCompiled;
1870 EXCEPTION
1871 WHEN xla_exceptions_pkg.application_exception THEN
1872 RETURN FALSE;
1873 WHEN OTHERS THEN
1874 xla_exceptions_pkg.raise_message
1875 (p_location => 'xla_cmp_pad_pkg.CreateBodyPackage');
1876 END CreateBodyPackage;
1877
1878 /*--------------------------------------------------------------+
1879 | |
1880 | Private function |
1881 | |
1882 | CheckPackageCreation |
1883 | |
1884 | Compiles the AAD body packages in the DATABASE |
1885 | Returns TRUE if the package body is VALID, FALSE otherwise. |
1886 | |
1887 +--------------------------------------------------------------*/
1888 PROCEDURE CheckPackageCreation
1889 (p_application_id IN NUMBER
1890 ,p_product_rule_code IN VARCHAR2
1891 ,p_product_rule_type_code IN VARCHAR2
1892 ,p_amb_context_code IN VARCHAR2
1893 ,x_standard_pkg_flag IN OUT NOCOPY VARCHAR2
1894 ,x_bc_pkg_flag IN OUT NOCOPY VARCHAR2)
1895 IS
1896 --
1897 CURSOR c IS
1898 SELECT CASE WHEN SUM(DECODE(NVL(xld.budgetary_control_flag,'N'),'N',1,0)) > 0
1899 THEN 'Y'
1900 ELSE 'N' END
1901 ,CASE WHEN SUM(DECODE(NVL(xld.budgetary_control_flag,'N'),'Y',1,0)) > 0
1902 THEN 'Y'
1903 ELSE 'N' END
1904 FROM xla_aad_line_defn_assgns xald
1905 , xla_line_definitions_b xld
1906 WHERE xld.application_id = xald.application_id
1907 AND xld.amb_context_code = xald.amb_context_code
1908 AND xld.event_class_code = xald.event_class_code
1909 AND xld.event_type_code = xald.event_type_code
1910 AND xld.line_definition_owner_code = xald.line_definition_owner_code
1911 AND xld.line_definition_code = xald.line_definition_code
1912 AND xald.application_id = p_application_id
1913 AND xald.amb_context_code = p_amb_context_code
1914 AND xald.product_rule_type_code = p_product_rule_type_code
1915 AND xald.product_rule_code = p_product_rule_code;
1916
1917 l_log_module VARCHAR2(240);
1918 --
1919 BEGIN
1920 IF g_log_enabled THEN
1921 l_log_module := C_DEFAULT_MODULE||'.CheckPackageCreation';
1922 END IF;
1923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1924 trace
1925 (p_msg => 'BEGIN of CheckPackageCreation'
1926 ,p_level => C_LEVEL_PROCEDURE
1927 ,p_module => l_log_module);
1928 END IF;
1929
1930 OPEN c;
1931 FETCH c INTO x_standard_pkg_flag, x_bc_pkg_flag;
1932 CLOSE c;
1933
1934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1935 trace
1936 (p_msg => 'return value (x_standard_pkg_flag) = '||x_standard_pkg_flag
1937 ,p_level => C_LEVEL_PROCEDURE
1938 ,p_module => l_log_module);
1939 trace
1940 (p_msg => 'return value (x_bc_pkg_flag) = '||x_bc_pkg_flag
1941 ,p_level => C_LEVEL_PROCEDURE
1942 ,p_module => l_log_module);
1943 trace
1944 (p_msg => 'END of CheckPackageCreation'
1945 ,p_level => C_LEVEL_PROCEDURE
1946 ,p_module => l_log_module);
1947 END IF;
1948 EXCEPTION
1949 WHEN xla_exceptions_pkg.application_exception THEN
1950 RAISE;
1951 WHEN OTHERS THEN
1952 xla_exceptions_pkg.raise_message
1953 (p_location => 'xla_cmp_pad_pkg.CheckPackageCreation');
1954 END CheckPackageCreation;
1955
1956
1957 --
1958 --+==========================================================================+
1959 --| PUBLIC function |
1960 --| Compile |
1961 --| DESCRIPTION : generates the PL/SQL packages from the Product Accounting |
1962 --| definition. |
1963 --| |
1964 --| INPUT PARAMETERS |
1965 --| |
1966 --| 1. p_application_id : NUMBER, application identifier |
1967 --| 2. p_product_rule_code : VARCHAR2(30), product definition code |
1968 --| 3. p_product_rule_type_code : VARCHAR2(30), product definition type |
1969 --| 4. p_product_rule_version : VARCHAR2(30), product definition Version |
1970 --| |
1971 --| RETURNS |
1972 --| 1. l_IsCompiled : BOOLEAN, TRUE if Product accounting definition has |
1973 --| been successfully created, FALSE otherwise. |
1974 --| |
1975 --| |
1976 --| |
1977 --+==========================================================================+
1978 --
1979 FUNCTION Compile ( p_application_id IN NUMBER
1980 , p_product_rule_code IN VARCHAR2
1981 , p_product_rule_type_code IN VARCHAR2
1982 , p_product_rule_version IN VARCHAR2
1983 , p_amb_context_code IN VARCHAR2 )
1984 RETURN BOOLEAN
1985 IS
1986 l_standard_pkg_flag VARCHAR2(1);
1987 l_bc_pkg_flag VARCHAR2(1);
1988 l_has_non_bc_jld BOOLEAN;
1989 l_IsCompiled BOOLEAN;
1990 l_IsLocked BOOLEAN;
1991 l_log_module VARCHAR2(240);
1992 BEGIN
1993 IF g_log_enabled THEN
1994 l_log_module := C_DEFAULT_MODULE||'.Compile';
1995 END IF;
1996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1997 trace
1998 (p_msg => 'BEGIN of Compile'
1999 ,p_level => C_LEVEL_PROCEDURE
2000 ,p_module => l_log_module);
2001 trace
2002 (p_msg => 'p_application_id = '||p_application_id||
2003 ' - p_product_rule_code = '||p_product_rule_code||
2004 ' - p_product_rule_type_code = '||p_product_rule_type_code||
2005 ' - p_product_rule_version = '||p_product_rule_version||
2006 ' - p_amb_context_code = '||p_amb_context_code
2007 ,p_level => C_LEVEL_STATEMENT
2008 ,p_module => l_log_module);
2009 END IF;
2010
2011 g_ProductRuleVersion := p_product_rule_version;
2012 g_UserName := GetUserName;
2013
2014 g_ProductRuleName :=
2015 GetPADName
2016 (p_application_id => p_application_id
2017 ,p_product_rule_code => p_product_rule_code
2018 ,p_product_rule_type_code => p_product_rule_type_code
2019 ,p_product_rule_version => g_ProductRuleVersion
2020 ,p_amb_context_code => p_amb_context_code);
2021
2022 g_PackageName :=
2023 xla_cmp_hash_pkg.BuildPackageName
2024 (p_application_id => p_application_id
2025 ,p_product_rule_code => p_product_rule_code
2026 ,p_product_rule_type_code => p_product_rule_type_code
2027 ,p_amb_context_code => p_amb_context_code);
2028
2029 g_component_name := g_ProductRuleName;
2030
2031 g_owner :=
2032 xla_lookups_pkg.get_meaning
2033 (p_lookup_type => 'XLA_OWNER_TYPE'
2034 ,p_lookup_code => p_product_rule_type_code);
2035
2036 g_component_appl := GetApplicationName (p_application_id );
2037
2038 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2039 trace
2040 (p_msg => 'g_ProductRuleVersion = '||g_ProductRuleVersion||
2041 ' - g_UserName = '||g_UserName||
2042 ' - g_ProductRuleName = '||g_ProductRuleName||
2043 ' - g_PackageName = '||g_PackageName||
2044 ' - g_component_name = '||g_component_name||
2045 ' - g_owner = '||g_owner||
2046 ' - g_component_appl = '||g_component_appl
2047 ,p_level => C_LEVEL_PROCEDURE
2048 ,p_module => l_log_module);
2049 END IF;
2050
2051 --
2052 -- Locking components of PAD in AMB datamodel
2053 --
2054 l_IsCompiled :=
2055 xla_cmp_lock_pad_pkg.LockPAD
2056 (p_application_id => p_application_id
2057 ,p_product_rule_code => p_product_rule_code
2058 ,p_product_rule_type_code => p_product_rule_type_code
2059 ,p_product_rule_name => g_ProductRuleName
2060 ,p_amb_context_code => p_amb_context_code);
2061
2062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2063 trace
2064 (p_msg => ' AAD locked = '||
2065 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2066 ,p_level => C_LEVEL_PROCEDURE
2067 ,p_module => l_log_module);
2068 END IF;
2069
2070 CheckPackageCreation
2071 (p_application_id => p_application_id
2072 ,p_product_rule_code => p_product_rule_code
2073 ,p_product_rule_type_code => p_product_rule_type_code
2074 ,p_amb_context_code => p_amb_context_code
2075 ,x_standard_pkg_flag => l_standard_pkg_flag
2076 ,x_bc_pkg_flag => l_bc_pkg_flag);
2077
2078 IF (l_standard_pkg_flag = 'Y') THEN
2079 g_bc_pkg_flag := 'N';
2080 l_IsCompiled :=
2081 l_IsCompiled AND
2082 CreateSpecPackage
2083 (p_application_id => p_application_id
2084 ,p_product_rule_code => p_product_rule_code
2085 ,p_product_rule_type_code => p_product_rule_type_code
2086 ,p_product_rule_version => g_ProductRuleVersion
2087 ,p_amb_context_code => p_amb_context_code);
2088
2089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2090 trace
2091 (p_msg => ' AAD specification package created = '||
2092 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2093 ,p_level => C_LEVEL_PROCEDURE
2094 ,p_module => l_log_module);
2095 END IF;
2096
2097 l_IsCompiled :=
2098 l_IsCompiled AND
2099 CreateBodyPackage
2100 (p_application_id => p_application_id
2101 ,p_product_rule_code => p_product_rule_code
2102 ,p_product_rule_type_code => p_product_rule_type_code
2103 ,p_product_rule_version => g_ProductRuleVersion
2104 ,p_amb_context_code => p_amb_context_code);
2105
2106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2107 trace
2108 (p_msg => ' AAD body package created = '||
2109 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2110 ,p_level => C_LEVEL_PROCEDURE
2111 ,p_module => l_log_module);
2112 END IF;
2113 END IF;
2114
2115 IF (l_bc_pkg_flag = 'Y') THEN
2116 g_bc_pkg_flag := 'Y';
2117 g_PackageName := REPLACE(g_PackageName,'_PKG','_BC_PKG');
2118 DELETE FROM xla_evt_class_sources_gt;
2119
2120 l_IsCompiled :=
2121 l_IsCompiled AND
2122 CreateSpecPackage
2123 (p_application_id => p_application_id
2124 ,p_product_rule_code => p_product_rule_code
2125 ,p_product_rule_type_code => p_product_rule_type_code
2126 ,p_product_rule_version => g_ProductRuleVersion
2127 ,p_amb_context_code => p_amb_context_code);
2128
2129 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2130 trace
2131 (p_msg => ' AAD specification package created = '||
2132 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2133 ,p_level => C_LEVEL_PROCEDURE
2134 ,p_module => l_log_module);
2135 END IF;
2136
2137 l_IsCompiled :=
2138 l_IsCompiled AND
2139 CreateBodyPackage
2140 (p_application_id => p_application_id
2141 ,p_product_rule_code => p_product_rule_code
2142 ,p_product_rule_type_code => p_product_rule_type_code
2143 ,p_product_rule_version => g_ProductRuleVersion
2144 ,p_amb_context_code => p_amb_context_code);
2145
2146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2147 trace
2148 (p_msg => ' AAD body package created = '||
2149 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2150 ,p_level => C_LEVEL_PROCEDURE
2151 ,p_module => l_log_module);
2152 END IF;
2153
2154 END IF;
2155
2156 --
2157 -- bug 3417369
2158 --
2159 IF NOT l_IsCompiled THEN
2160 xla_amb_setup_err_pkg.stack_error
2161 (p_message_name => 'XLA_CMP_TECHNICAL_ERROR'
2162 ,p_message_type => 'E'
2163 ,p_message_category => 'AAD'
2164 ,p_category_sequence => 1
2165 ,p_application_id => p_application_id
2166 ,p_amb_context_code => p_amb_context_code
2167 ,p_product_rule_type_code => p_product_rule_type_code
2168 ,p_product_rule_code => p_product_rule_code);
2169 END IF;
2170
2171 --============================================
2172 -- Integration of Extract Integrity checker
2173 --============================================
2174 xla_amb_setup_err_pkg.insert_errors;
2175 --
2176 COMMIT;
2177
2178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2179 trace
2180 (p_msg => 'return value. = '||
2181 CASE l_IsCompiled WHEN TRUE THEN 'TRUE' ELSE 'FALSE' END
2182 ,p_level => C_LEVEL_PROCEDURE
2183 ,p_module => l_log_module);
2184
2185 trace
2186 (p_msg => 'END of Compile'
2187 ,p_level => C_LEVEL_PROCEDURE
2188 ,p_module => l_log_module);
2189 END IF;
2190 RETURN l_IsCompiled;
2191 EXCEPTION
2192 WHEN xla_exceptions_pkg.application_exception THEN
2193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2194 trace
2195 (p_msg => '-> CALL xla_amb_setup_err_pkg.stack_error API '
2196 ,p_level => C_LEVEL_PROCEDURE
2197 ,p_module => l_log_module);
2198 END IF;
2199
2200 xla_amb_setup_err_pkg.stack_error(
2201 p_message_name => 'XLA_CMP_TECHNICAL_ERROR'
2202 ,p_message_type => 'E'
2203 ,p_message_category => 'AAD'
2204 ,p_category_sequence => 1
2205 ,p_application_id => p_application_id
2206 ,p_amb_context_code => p_amb_context_code
2207 ,p_product_rule_type_code => p_product_rule_type_code
2208 ,p_product_rule_code => p_product_rule_code
2209 );
2210 --
2211 --============================================
2212 -- Integration of Extract Integrity checker
2213 --============================================
2214
2215 xla_amb_setup_err_pkg.insert_errors;
2216 --
2217 COMMIT;
2218 --
2219 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2220 trace
2221 (p_msg => 'ERROR: XLA_CMP_TECHNICAL_ERROR ='||sqlerrm
2222 ,p_level => C_LEVEL_EXCEPTION
2223 ,p_module => l_log_module);
2224 END IF;
2225 --
2226 RETURN FALSE;
2227 WHEN OTHERS THEN
2228 xla_exceptions_pkg.raise_message
2229 (p_location => 'xla_cmp_pad_pkg.Compile');
2230 END Compile;
2231 --
2232
2233 --=============================================================================
2234 --
2235 --
2236 --
2237 --
2238 --
2239 --
2240 --
2241 --
2242 --
2243 --
2244 --
2245 --
2246 --
2247 --
2248 --
2249 --
2250 --
2251 --
2252 --
2253 --
2254 --
2255 --
2256 --=============================================================================
2257 --=============================================================================
2258 -- *********** Initialization routine **********
2259 --=============================================================================
2260
2261 BEGIN
2262
2263 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2264 g_log_enabled := fnd_log.test
2265 (log_level => g_log_level
2266 ,module => C_DEFAULT_MODULE);
2267
2268 IF NOT g_log_enabled THEN
2269 g_log_level := C_LEVEL_LOG_DISABLED;
2270 END IF;
2271 --
2272 END xla_cmp_pad_pkg; -- end of package spec