[Home] [Help]
PACKAGE BODY: APPS.XLA_ACCOUNTING_CACHE_PKG
Source
1 PACKAGE BODY xla_accounting_cache_pkg AS
2 -- $Header: xlaapche.pkb 120.54.12010000.1 2008/07/29 09:58:50 appldev ship $
3 /*===========================================================================+
4 | Copyright (c) 2001-2002 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +============================================================================+
8 | FILENAME |
9 | xlaapche.pkb |
10 | |
11 | PACKAGE NAME |
12 | xla_accounting_cache_pkg |
13 | |
14 | DESCRIPTION |
15 | This package is defined to cache the frequently used data during |
16 | execution of Accounting Program. This is to improve performance and |
17 | provide modular structure and lean interaction between Accounting Engine|
18 | and Accounting Program. |
19 | |
20 | Note: the APIs do not excute COMMIT or ROLLBACK. |
21 | |
22 | HISTORY |
23 | 30-Oct-02 S. Singhania Created |
24 | 06-Dec-02 S. Singhania Made changes to reslove bug # 2695671. |
25 | Added NVL statement to default ledger's |
26 | description language to USERENV('LANG') |
27 | 11-Dec-02 K. Boussema Updated function GetBaseLedgerId |
28 | 19-Dec-02 S. Singhania Fixed the bug # 2701293. Added new sources to|
29 | the cache. Added set_process_cache. |
30 | 06-Jan-03 S. Singhania Made changes due to change in column names of|
31 | ledger view XLA_ALT_CURR_LEDGERS_V |
32 | 08-Jan-03 K. Boussema Update GetTranslatedValueChar to get |
33 | XLA_NLS_DESC_LANGUAGE and |
34 | XLA_ACCT_REVERSAL_OPTION values |
35 | 16-Jan-03 S. Singhania Made changes due to changes in the ledger |
36 | view XLA_ALT_CURR_LEDGERS_V |
37 | 21-Feb-03 S. Singhania Made changes for the new bulk approach of the|
38 | accounting program |
39 | - added 'p_max_event_date' param to |
40 | load_application_ledgers |
41 | - added procedure 'get_pad_info' |
42 | - removed datatypes to cache event |
43 | information |
44 | - merged ledger cahce structures |
45 | - formatting. |
46 | 04-Apr-03 S. Singhania rewrote the APIs and Modified the specs for: |
47 | - GetValueNum |
48 | - GetValueDate |
49 | - GetValueChar |
50 | Made changes due to amb_context_code and new |
51 | sources. Please refer to bug # 2887554 |
52 | 02-May-03 S. Singhania Added section to initilize variables under |
53 | LOAD_APPLICATION_LEDGERS |
54 | Added 'allow_intercompany_post_flag' to the |
55 | cache (bug # 2922615) |
56 | 03-May-03 S. Singhania Added more exception handlers for debugging |
57 | 07-May-03 S. Singhania Based on requirements from the 'Accounting |
58 | Engine' remodified the specifications for: |
59 | - GetValueNum |
60 | - GetValueDate |
61 | - GetValueChar |
62 | - load_application_ledgers |
63 | - GetAlcLedgers |
64 | Modified code to support new specifications |
65 | Renamed 'GetBaseLedgers' to 'GetLedgers' |
66 | Modified the structure of cache to handle ALC|
67 | as there will not be any ALC for secondary |
68 | Added local 'Trace' package |
69 | 08-May-03 S. Singhania Modified ALC cache structure and alc cursor |
70 | to include SLA_LEDGER_ID as attribute of |
71 | ALC ledgers.(bug # 2948635) |
72 | 12-Jun-03 S. Singhania Added trace messages in GET_PAD_INFO |
73 | Added correct calls to FND Messages (bug # |
74 | 3001156) |
75 | 25-Jun-03 S. Singhania Modified the package to use FND_LOG. |
76 | 16-Jul-03 S. Singhania Added following APIs: |
77 | - GetValueNum (Overloaded) |
78 | - GetValueDate (Overloaded) |
79 | - GetValueChar (Overloaded) |
80 | - GetSessionValueChar |
81 | - GetSessionValueChar (Overloaded) |
82 | - get_event_info |
83 | Added following internal routines |
84 | - load_system_sources |
85 | - is_source_valid |
86 | Modified specifications for: |
87 | - GetValueChar |
88 | - Get_PAD_info |
89 | Modified the cache structures. |
90 | 21-Jul-03 S. Singhania Added NVL in GET_PAD_INFO for date comparison|
91 | modified the where clause for csr_ledger_pad |
92 | to select all pads before event's max date |
93 | (bug # 3036628) |
94 | 25-Jul-03 S. Singhania Modified LOAD_APPLICATION_LEDGERS to reduce |
95 | code maintenance. |
96 | 01-Aug-03 S. Singhania Enabled the validation in IS_SOURCE_VALID to |
97 | make sure the system source code is defined|
98 | in AMB. |
99 | 11-Sep-03 S. Singhania Made changes to cache je_category (# 3109690)|
100 | - Modified the structures that store 'event|
101 | class' and 'event type' info. |
102 | - Modified CACHE_APPLICATION_SETUP to cache|
103 | je_categories for event_class/ledger. |
104 | - Added API GET_JE_CATEGORY |
105 | 21-Nov-03 S. Singhania Added new system source (bug # 3264446) |
106 | DYNAMIC_INSERTS_ALLOWED_FLAG. |
107 | 22-Dec-03 S. Singhania Made changes for the FND_LOG. |
108 | Added the condition in cursor csr_base_ledger|
109 | in LOAD_APPLICATION_LEDGERS to check if |
110 | relationship is enabled in configurations. |
111 | 06-Jan-04 S. Singhania Further FND_LOG changes. |
112 | 16-Feb-04 S. Singhania Bug 3443779. Cached ledger_category_code for |
113 | ALC ledgers. |
114 | 18-Mar-04 S. Singhania Added a parameter p_module to the TRACE calls|
115 | and the procedure. |
116 | 20-Sep-04 S. Singhania Added the following to support bulk changes |
117 | in the accounting engine |
118 | - Added API GetArrayPad |
119 | 01-NOV-04 S. Singhania Made changes for Valuation Method |
120 | .Enhancements: |
121 | - Modified LOAD_APPLICATION_LEDGERS |
122 | Fixed GSCC warning File.Sql.35 |
123 | 9-Mar-05 W. Shen Add the function BuildLedgerArray and |
124 | GetLedgerArray to support the calculation |
125 | of rounding |
126 | Add several field to the cache too |
127 | XLA_ALC_ENABLED_FLAG |
128 | XLA_ROUNDING_CCID |
129 | XLA_INHERIT_CONVERSION_TYPE |
130 | XLA_DEFAULT_CONV_RATE_TYPE |
131 | XLA_MAX_DAYS_ROLL_RATE |
132 | XLA_CURRENCY_MAU |
133 | XLA_ROUNDING_RULE_CODE |
134 | 26-May-05 W. Shen Add the function GetCurrencyMau |
135 | 27-May-05 W. Chan Fix bug 4161247 - Add following to cache: |
136 | 1. transaction_calendar_id |
137 | 2. enable_average_balances_flag |
138 | 3. effective_date_rule_code |
139 | 20-Jun-05 W. Shen Fix bug 4444191, add ledger name for alc |
140 | 5-Jul-05 W. Shen Fix bug 4476180, treat the flag |
141 | 'ALC_INHERIT_CONVERSION_TYPE' as 'Y' when |
142 | it is null |
143 | 17-Aug-05 V. Swapna Fix bug 4554935, modified |
144 | cursor csr_je_category |
145 | 01-Dec-05 S. Singhania Bug 4640689. Modified cursors: |
146 | csr_base_ledger and csr_alc_ledger |
147 | to get right value for sla_ledger_id |
148 | 24-Jan-06 V. Swapna Fix bug 4736579. Added an exception |
149 | in get_je_category procedure. |
150 | 02-Mar-06 V. Swapna Bug 5018098: Added an exception in |
151 | load_application_ledgers procedure. |
152 +===========================================================================*/
153
154 --=============================================================================
155 -- **************** declarations ********************
156 --=============================================================================
157 -------------------------------------------------------------------------------
158 -- declaring data types
159 -------------------------------------------------------------------------------
160 -------------------------------------------------------------------------------
161 --
162 -------------------------------------------------------------------------------
163 TYPE t_array_char_value IS TABLE OF VARCHAR2(240) INDEX BY VARCHAR2(30);
164
165 -------------------------------------------------------------------------------
166 --
167 -------------------------------------------------------------------------------
168 TYPE t_array_num_value IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
169
170 -------------------------------------------------------------------------------
171 --
172 -------------------------------------------------------------------------------
173 TYPE t_array_date_value IS TABLE OF DATE INDEX BY VARCHAR2(30);
174
175 -------------------------------------------------------------------------------
176 --
177 -------------------------------------------------------------------------------
178 TYPE t_array_je_category IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
179
180 -------------------------------------------------------------------------------
181 --
182 -------------------------------------------------------------------------------
183 TYPE t_record_sources IS RECORD
184 (char_sources t_array_char_value
185 ,num_sources t_array_num_value
186 ,date_sources t_array_date_value
187 ,char_sources_sl t_array_char_value);
188
189 -------------------------------------------------------------------------------
190 --
191 -------------------------------------------------------------------------------
192 TYPE t_record_ledger IS RECORD
193 (category_code VARCHAR2(30)
194 ,char_sources t_array_char_value
195 ,num_sources t_array_num_value
196 ,date_sources t_array_date_value
197 ,char_sources_sl t_array_char_value
198 ,pads t_array_pad);
199
200 -------------------------------------------------------------------------------
201 --
202 -------------------------------------------------------------------------------
203 TYPE t_array_ledger IS TABLE OF t_record_ledger INDEX BY BINARY_INTEGER;
204
205 -------------------------------------------------------------------------------
206 --
207 -------------------------------------------------------------------------------
208 TYPE t_record_event_type IS RECORD
209 (event_type_name_tl t_array_char_value
210 ,event_type_name_sl VARCHAR2(240));
211
212 -------------------------------------------------------------------------------
213 --
214 -------------------------------------------------------------------------------
215 TYPE t_array_event_type IS TABLE of t_record_event_type INDEX BY VARCHAR2(30);
216
217 -------------------------------------------------------------------------------
218 --
219 -------------------------------------------------------------------------------
220 TYPE t_record_event_class IS RECORD
221 (event_class_name_tl t_array_char_value
222 ,xla_je_category t_array_je_category
223 ,event_class_name_sl VARCHAR2(240));
224
225 TYPE t_record_currency_mau is RECORD
226 ( currency_code VARCHAR2(30)
227 ,currency_mau NUMBER);
228 -------------------------------------------------------------------------------
229 --
230 -------------------------------------------------------------------------------
231 TYPE t_array_event_class IS TABLE of t_record_event_class INDEX BY VARCHAR2(30);
232
233 -------------------------------------------------------------------------------
234 -- declaring package variables
235 -------------------------------------------------------------------------------
236 g_primary_ledger_id NUMBER;
237 g_record_session t_record_sources;
238 g_base_ledger_ids t_array_ledger_id;
239 g_alc_ledger_ids t_array_ledger_id;
240 g_array_ledger t_array_ledger;
241 g_array_sources t_array_char_value;
242 g_array_event_classes t_array_event_class;
243 g_array_event_types t_array_event_type;
244 g_array_ledger_attrs t_array_ledger_attrs;
245 g_entered_currency_mau t_record_currency_mau;
249
246 g_entered_currency_mau1 t_record_currency_mau;
247 g_entered_currency_mau2 t_record_currency_mau;
248
250 -------------------------------------------------------------------------------
251 -- Forward declaration of local routines
252 -------------------------------------------------------------------------------
253 PROCEDURE cache_application_setup
254 (p_application_id IN INTEGER
255 ,p_ledger_id IN INTEGER
256 ,p_ledger_category IN VARCHAR2);
257
258 PROCEDURE load_system_sources;
259
260 FUNCTION is_source_valid
261 (p_source_code IN VARCHAR2
262 ,p_datatype IN VARCHAR2)
263 RETURN BOOLEAN;
264 --=============================================================================
265 -- *********** Local Trace Routine **********
266 --=============================================================================
267 C_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
268 C_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
269 C_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
270 C_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
271 C_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
272 C_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
273
274 C_LEVEL_LOG_DISABLED CONSTANT NUMBER := 99;
275 C_DEFAULT_MODULE CONSTANT VARCHAR2(240) := 'xla.plsql.xla_accounting_cache_pkg';
276
277 --g_log_module VARCHAR2(240);
278 g_log_level NUMBER;
279 g_log_enabled BOOLEAN;
280
281 PROCEDURE trace
282 (p_msg IN VARCHAR2
283 ,p_level IN NUMBER
284 ,p_module IN VARCHAR2) IS
285 --l_module VARCHAR2(240);
286 BEGIN
287 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
288 fnd_log.message(p_level, NVL(p_module,C_DEFAULT_MODULE));
289 ELSIF p_level >= g_log_level THEN
290 fnd_log.string(p_level, NVL(p_module,C_DEFAULT_MODULE), p_msg);
291 END IF;
292
293 EXCEPTION
294 WHEN xla_exceptions_pkg.application_exception THEN
295 RAISE;
296 WHEN OTHERS THEN
297 xla_exceptions_pkg.raise_message
298 (p_location => 'xla_accounting_cache_pkg.trace');
299 END trace;
300
301
302 --=============================================================================
303 -- *********** public procedures and functions **********
304 --=============================================================================
305
306 --=============================================================================
307 --
308 --
309 --
310 --
311 --
312 --
313 --
314 --
315 --
316 --
317 -- Following are public routines
318 --
319 -- 1. load_application_ledgers
320 -- 2. get_pad_info
321 -- 3. get_event_info
322 -- 4. GetValueNum
323 -- 5. GetValueNum (Overloaded API)
324 -- 6. GetValueDate
325 -- 7. GetValueDate (Overloaded API)
326 -- 8. GetValueChar
327 -- 9. GetValueChar (overloaded API)
328 -- 10. GetSessionValueChar
329 -- 11. GetSessionValueChar (overloaded API)
330 -- 12. GetAlcLedgers
331 -- 13. GetLedgers
332 -- 14. get_je_category
333 -- 15. GetArrayPad
334 --
335 --
336 --
337 --
338 --
339 --
340 --
341 --
342 --
343 --
344 --
345 --=============================================================================
346
347 --=============================================================================
348 --
349 --
350 --
351 --=============================================================================
352 PROCEDURE load_application_ledgers
353 (p_application_id IN INTEGER
354 ,p_event_ledger_id IN INTEGER
355 ,p_max_event_date IN DATE) IS
356 CURSOR csr_base_ledger (x_event_ledger_category IN VARCHAR2) IS
357 (SELECT fat.application_name application_name
358 ,fat.application_id application_id
359 ,gjs.user_je_source_name user_je_source_name
360 ,xso.je_source_name je_source_name
361 ,xso.name ledger_name
362 ,xso.ledger_id ledger_id
363 ,fst.id_flex_structure_name ledger_coa_name
364 ,fsv.id_flex_structure_name session_coa_name
365 ,fsv.dynamic_inserts_allowed_flag dynamic_inserts_allowed_flag
366 ,xso.chart_of_accounts_id coa_id
367 ,amt.name ledger_slam_name
368 ,amv.name session_slam_name
369 ,xso.sla_accounting_method_code slam_code
370 ,xso.sla_accounting_method_type slam_type
371 ,xso.currency_code xla_currency_code
372 ,NVL(xso.sla_description_language,SYS_CONTEXT('USERENV','LANG'))
373 xla_description_language
374 ,NVL(fla.nls_language,SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE'))
378 ,xso.ledger_category_code ledger_category_code
375 xla_nls_desc_language
376 ,xso.sla_entered_cur_bal_sus_ccid xla_entered_cur_bal_sus_ccid
377 ,xso.res_encumb_code_combination_id res_encumb_code_combination_id
379 ,fcu.precision ledger_currency_precision
380 ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
381 ledger_currency_mau
382 ,xso.rounding_rule_code xla_rounding_rule_code
383 ,xso.sl_coa_mapping_id coa_mapping_id
384 ,gcm.name coa_mapping_name
385 ,xso.bal_seg_column_name bal_seg_column_name
386 ,xso.mgt_seg_column_name mgt_seg_column_name
387 ,xso.sla_bal_by_ledger_curr_flag xla_ledger_cur_bal_flag
388 ,xso.sla_ledger_cur_bal_sus_ccid xla_ledger_cur_bal_sus_ccid
389 ,xso.rounding_code_combination_id xla_rounding_ccid
390 ,xso.acct_reversal_option_code xla_acct_reversal_option_code
391 -- the following is modified for bug 4640689
392 ,decode(xso.capture_event_flag
393 ,'Y',xso.ledger_id
394 ,xso.primary_ledger_id) sla_ledger_id
395 ,xso.latest_encumbrance_year latest_encumbrance_year
396 ,xso.bal_seg_value_option_code bal_seg_value_option_code
397 ,xso.mgt_seg_value_option_code mgt_seg_value_option_code
398 ,xso.allow_intercompany_post_flag allow_intercompany_post_flag
399 ,nvl(xso.ALC_INHERIT_CONVERSION_TYPE, 'Y') ALC_INHERIT_CONVERSION_TYPE
400 ,xso.ALC_DEFAULT_CONV_RATE_TYPE
401 ,decode(xso.ALC_NO_RATE_ACTION_CODE, 'FIND_RATE', nvl(xso.ALC_MAX_DAYS_ROLL_RATE, -1), 0)
402 ALC_MAX_DAYS_ROLL_RATE
403 ,xso.transaction_calendar_id transaction_calendar_id
404 ,xso.enable_average_balances_flag enable_average_balances_flag
405 ,gjs.effective_date_rule_code effective_date_rule_code
406 ,xso.suspense_allowed_flag suspense_allowed_flag
407 FROM xla_subledger_options_v xso
408 ,fnd_application_tl fat
409 ,gl_je_sources_vl gjs
410 ,fnd_id_flex_structures_tl fst
411 ,fnd_id_flex_structures_vl fsv
412 ,xla_acctg_methods_tl amt
413 ,xla_acctg_methods_vl amv
414 ,fnd_currencies fcu
415 ,fnd_languages fla
416 ,gl_coa_mappings gcm
417 WHERE xso.application_id = p_application_id
418 AND xso.relationship_enabled_flag = 'Y'
419 AND xso.sla_accounting_method_code IS NOT NULL
420 --
421 -- >> valuation method enhanacements
422 --
423 AND DECODE(x_event_ledger_category
424 ,'PRIMARY',xso.primary_ledger_id
425 ,xso.ledger_id) = p_event_ledger_id
426 AND DECODE(x_event_ledger_category
427 ,'PRIMARY',DECODE(xso.ledger_category_code
428 ,'PRIMARY','Y'
429 ,'N')
430 ,'Y') = xso.capture_event_flag
431 --
432 -- << valuation method enhanacements
433 --
434 AND xso.enabled_flag = 'Y'
435 AND fat.application_id = xso.application_id
436 AND fat.language =
437 NVL(xso.sla_description_language,SYS_CONTEXT('USERENV','LANG'))
438 AND gjs.je_source_name = xso.je_source_name
439 AND fst.application_id = 101
440 AND fst.id_flex_code = 'GL#'
441 AND fst.id_flex_num = xso.chart_of_accounts_id
442 AND fst.language =
443 NVL(xso.sla_description_language,SYS_CONTEXT('USERENV','LANG'))
444 AND fsv.application_id = 101
445 AND fsv.id_flex_code = 'GL#'
446 AND fsv.id_flex_num = xso.chart_of_accounts_id
447 AND amt.accounting_method_code = xso.sla_accounting_method_code
448 AND amt.accounting_method_type_code = xso.sla_accounting_method_type
449 AND amt.language =
450 NVL(xso.sla_description_language,SYS_CONTEXT('USERENV','LANG'))
451 AND amv.accounting_method_code = xso.sla_accounting_method_code
452 AND amv.accounting_method_type_code = xso.sla_accounting_method_type
453 AND fcu.currency_code = xso.currency_code
454 AND fla.language_code =
455 NVL(xso.sla_description_language,SYS_CONTEXT('USERENV','LANG'))
456 AND gcm.coa_mapping_id(+) = xso.sl_coa_mapping_id)
457 ORDER BY xso.ledger_category_code;
458
459 CURSOR csr_alc_ledger (p_base_ledger_id IN NUMBER) IS
460 (SELECT xlr.target_ledger_id ledger_id
461 ,xlr.name ledger_name
462 ,xlr.currency_code ledger_currency
463 ,fcu.precision ledger_currency_precision
464 ,nvl(fcu.minimum_accountable_unit, power(10, -1* fcu.precision))
468 ,'Y',p_base_ledger_id
465 ledger_currency_mau
466 -- the following is modified for bug 4640689
467 ,decode(xsl.alc_enabled_flag
469 ,xlr.target_ledger_id) sla_ledger_id
470 ,nvl(xlr.ALC_INHERIT_CONVERSION_TYPE, 'Y') ALC_INHERIT_CONVERSION_TYPE
471 ,xlr.ALC_DEFAULT_CONV_RATE_TYPE
472 ,decode(xlr.ALC_NO_RATE_ACTION_CODE, 'FIND_RATE', nvl(xlr.ALC_MAX_DAYS_ROLL_RATE, -1), 0)
473 ALC_MAX_DAYS_ROLL_RATE
474 FROM xla_ledger_relationships_v xlr
475 ,fnd_currencies fcu
476 -- the following is added for bug 4640689
477 ,xla_subledgers xsl
478 WHERE xlr.primary_ledger_id = p_base_ledger_id
479 AND xlr.relationship_enabled_flag = 'Y'
480 AND xlr.ledger_category_code = 'ALC'
481 AND fcu.currency_code = xlr.currency_code
482 AND xsl.application_id = p_application_id);
483
484 CURSOR csr_ledger_pad
485 (p_accounting_method_type IN VARCHAR2
486 ,p_accounting_method_code IN VARCHAR2
487 ,p_ledger_desc_language IN VARCHAR2) IS
488 (SELECT xmr.acctg_method_rule_id rule_id
489 ,xmr.amb_context_code amb_context_code
490 ,xmr.product_rule_type_code pad_type
491 ,xmr.product_rule_code pad_code
492 ,prt.name ledger_pad_name
493 ,prv.name session_pad_name
494 ,xpr.compile_status_code compile_status
495 ,xmr.start_date_active start_date
496 ,xmr.end_date_active end_date
497 ,xla_cmp_hash_pkg.BuildPackageName
498 (p_application_id
499 ,xmr.product_rule_code
500 ,xmr.product_rule_type_code
501 ,xmr.amb_context_code) pad_package_name
502 FROM xla_acctg_method_rules xmr
503 ,xla_product_rules_b xpr
504 ,xla_product_rules_tl prt
505 ,xla_product_rules_vl prv
506 WHERE xmr.application_id = p_application_id
507 AND xmr.accounting_method_type_code = p_accounting_method_type
508 AND xmr.accounting_method_code = p_accounting_method_code
509 AND xmr.amb_context_code = NVL(fnd_profile.value('XLA_AMB_CONTEXT'),'DEFAULT')
510 AND NVL(xmr.start_date_active
511 ,NVL(p_max_event_date
512 ,TRUNC(sysdate)
513 )
514 )
515 <= NVL(p_max_event_date,TRUNC(sysdate))
516 AND xpr.application_id = p_application_id
517 AND xpr.amb_context_code = xmr.amb_context_code
518 AND xpr.product_rule_type_code = xmr.product_rule_type_code
519 AND xpr.product_rule_code = xmr.product_rule_code
520 AND xpr.enabled_flag = 'Y'
521 AND prt.application_id = xpr.application_id
522 AND prt.amb_context_code = xpr.amb_context_code
523 AND prt.product_rule_type_code = xpr.product_rule_type_code
524 AND prt.product_rule_code = xpr.product_rule_code
525 AND prt.language = p_ledger_desc_language
526 AND prv.application_id = xpr.application_id
527 AND prv.amb_context_code = xpr.amb_context_code
528 AND prv.product_rule_type_code = xpr.product_rule_type_code
529 AND prv.product_rule_code = xpr.product_rule_code);
530
531 l_pad_count NUMBER;
532 l_application_name VARCHAR2(240);
533 l_ledger_name VARCHAR2(240);
534 l_base_ledger_count NUMBER := 0;
535 l_alc_ledger_count NUMBER := 0;
536 l_event_ledger_category VARCHAR2(80);
537 l_log_module VARCHAR2(240);
538 BEGIN
539 IF g_log_enabled THEN
540 l_log_module := C_DEFAULT_MODULE||'.load_application_ledgers';
541 END IF;
542
543 -- IF ((g_log_enabled = TRUE) AND (C_LEVEL_PROCEDURE >= g_log_level)) THEN
544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
545 trace
546 (p_msg => 'BEGIN of procedure LOAD_APPLICATION_LEDGERS'
547 ,p_level => C_LEVEL_PROCEDURE
548 ,p_module => l_log_module);
549 trace
550 (p_msg => 'p_application_id = ' ||TO_CHAR(p_application_id)
551 ,p_level => C_LEVEL_PROCEDURE
552 ,p_module => l_log_module);
553 trace
554 (p_msg => 'p_event_ledger_id = '||TO_CHAR(p_event_ledger_id)
555 ,p_level => C_LEVEL_PROCEDURE
556 ,p_module => l_log_module);
557 trace
558 (p_msg => 'p_max_event_date = ' ||TO_CHAR(p_max_event_date)
559 ,p_level => C_LEVEL_PROCEDURE
560 ,p_module => l_log_module);
561 END IF;
562
563 ----------------------------------------------------------------------------
564 -- initializing all the variables
568 g_base_ledger_ids.DELETE;
565 ----------------------------------------------------------------------------
566 g_record_session := NULL;
567 g_primary_ledger_id := NULL;
569 g_alc_ledger_ids.DELETE;
570 g_array_ledger.DELETE;
571 g_array_sources.DELETE;
572 g_array_event_classes.DELETE;
573 g_array_event_types.DELETE;
574 g_array_ledger_attrs.array_ledger_id.DELETE;
575 g_array_ledger_attrs.array_ledger_type.DELETE;
576 g_array_ledger_attrs.array_ledger_currency_code.DELETE;
577 g_array_ledger_attrs.array_rounding_rule_code.DELETE;
578 g_array_ledger_attrs.array_rounding_offset.DELETE;
579 g_array_ledger_attrs.array_mau.DELETE;
580 g_entered_currency_mau:= NULL;
581 g_entered_currency_mau1:= NULL;
582 g_entered_currency_mau2:= NULL;
583
584
585 ----------------------------------------------------------------------------
586 -- Caching application level information
587 ----------------------------------------------------------------------------
588 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
589 trace
590 (p_msg => 'Reading application level cache for application '||
591 TO_CHAR(p_application_id)
592 ,p_level => C_LEVEL_STATEMENT
593 ,p_module => l_log_module);
594 END IF;
595
596 SELECT TRUNC(sysdate)
597 ,fnd_profile.value('USER_ID')
598 ,xsl.application_id
599 ,fav.application_short_name
600 ,fav.application_name
601 ,xsl.je_source_name
602 ,jsv.user_je_source_name
603 ,xsl.valuation_method_flag
604 ,decode(nvl(xsl.control_account_type_code, 'N'), 'N', 'N', 'Y')
605 ,xsl.alc_enabled_flag
606 INTO g_record_session.date_sources('XLA_CREATION_DATE')
607 ,g_record_session.num_sources('XLA_ENTRY_CREATED_BY')
608 ,g_record_session.num_sources('XLA_EVENT_APPL_ID')
609 ,g_record_session.char_sources('XLA_EVENT_APPL_SHORT_NAME')
610 ,g_record_session.char_sources_sl('XLA_EVENT_APPL_NAME')
611 ,g_record_session.char_sources('XLA_JE_SOURCE_NAME')
612 ,g_record_session.char_sources_sl('XLA_USER_JE_SOURCE_NAME')
613 ,g_record_session.char_sources('VALUATION_METHOD_FLAG')
614 ,g_record_session.char_sources('CONTROL_ACCOUNT_ENABLED_FLAG')
615 ,g_record_session.char_sources('XLA_ALC_ENABLED_FLAG')
616 FROM xla_subledgers xsl
617 ,fnd_application_vl fav
618 ,gl_je_sources_vl jsv
619 WHERE xsl.application_id = p_application_id
620 AND fav.application_id = xsl.application_id
621 AND jsv.je_source_name = xsl.je_source_name;
622
623 IF SQL%NOTFOUND THEN
624 IF (C_LEVEL_ERROR >= g_log_level) THEN
625 trace
626 (p_msg => 'ERROR: Problem in caching the session level sources '||
627 'for the application. application ID = '||TO_CHAR(p_application_id)
628 ,p_level => C_LEVEL_ERROR
629 ,p_module => l_log_module);
630 END IF;
631
632 xla_exceptions_pkg.raise_message
633 (p_appli_s_name => 'XLA'
634 ,p_msg_name => 'XLA_COMMON_ERROR'
635 ,p_token_1 => 'ERROR'
636 ,p_value_1 => 'Problem in caching the session level sources for the application.'
637 ,p_token_2 => 'LOCATION'
638 ,p_value_2 => 'load_application_ledgers');
639 END IF;
640
641 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
642 trace
643 (p_msg => 'xla_event_appl_short_name = '||
644 g_record_session.char_sources('XLA_EVENT_APPL_SHORT_NAME')
645 ,p_level => C_LEVEL_STATEMENT
646 ,p_module => l_log_module);
647 trace
648 (p_msg => 'xla_creation_date = '||
649 TO_CHAR(g_record_session.date_sources('XLA_CREATION_DATE'))
650 ,p_level => C_LEVEL_STATEMENT
651 ,p_module => l_log_module);
652 trace
653 (p_msg => 'xla_entry_created_by = '||
654 TO_CHAR(g_record_session.num_sources('XLA_ENTRY_CREATED_BY'))
655 ,p_level => C_LEVEL_STATEMENT
656 ,p_module => l_log_module);
657 trace
658 (p_msg => 'application_id = '||
659 TO_CHAR(g_record_session.num_sources('XLA_EVENT_APPL_ID'))
660 ,p_level => C_LEVEL_STATEMENT
661 ,p_module => l_log_module);
662 trace
663 (p_msg => 'valuation_method_flag = '||
664 g_record_session.char_sources('VALUATION_METHOD_FLAG')
665 ,p_level => C_LEVEL_STATEMENT
666 ,p_module => l_log_module);
667 trace
668 (p_msg => 'control_account_enabled_flag = '||
669 g_record_session.char_sources('CONTROL_ACCOUNT_ENABLED_FLAG')
670 ,p_level => C_LEVEL_STATEMENT
671 ,p_module => l_log_module);
672 trace
673 (p_msg => 'xla_alc_enabled_flag= '||
674 g_record_session.char_sources('XLA_ALC_ENABLED_FLAG')
675 ,p_level => C_LEVEL_STATEMENT
676 ,p_module => l_log_module);
677 END IF;
678
682 --
679 ----------------------------------------------------------------------------
680 -- Caching base ledger information
681 ----------------------------------------------------------------------------
683 -- >> valuation method enhanacements
684 --
685 SELECT ledger_category_code
686 INTO l_event_ledger_category
687 FROM gl_ledgers
688 WHERE ledger_id = p_event_ledger_id;
689 --
690 -- << valuation method enhanacements
691 --
692
693 FOR c1 IN csr_base_ledger (l_event_ledger_category) LOOP
694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
695 trace
696 (p_msg =>'Reading ledger level cache for ledger '||TO_CHAR(c1.ledger_id)
697 ,p_level => C_LEVEL_STATEMENT
698 ,p_module => l_log_module);
699 END IF;
700
701 -------------------------------------------------------------------------
702 -- Storing ledger_id in an array
703 -------------------------------------------------------------------------
704 l_base_ledger_count := l_base_ledger_count +1;
705 g_base_ledger_ids(l_base_ledger_count) := c1.ledger_id;
706
707 -------------------------------------------------------------------------
708 -- Storing category code in array to efficiently know the ledger
709 -- category
710 -------------------------------------------------------------------------
711 g_array_ledger(c1.ledger_id).category_code := c1.ledger_category_code;
712
713 -------------------------------------------------------------------------
714 -- Caching translated information
715 -------------------------------------------------------------------------
716 g_array_ledger(c1.ledger_id)
717 .char_sources('XLA_EVENT_APPL_NAME') := c1.application_name;
718
719 g_array_ledger(c1.ledger_id)
720 .char_sources('XLA_USER_JE_SOURCE_NAME') := c1.user_je_source_name;
721
722 g_array_ledger(c1.ledger_id)
723 .char_sources('XLA_LEDGER_NAME') := c1.ledger_name;
724
725 g_array_ledger(c1.ledger_id)
726 .char_sources('XLA_COA_NAME') := c1.ledger_coa_name;
727
728 g_array_ledger(c1.ledger_id)
729 .char_sources_sl('XLA_COA_NAME') := c1.session_coa_name;
730
731 g_array_ledger(c1.ledger_id)
732 .char_sources('XLA_ACCOUNTING_METHOD_NAME') := c1.ledger_slam_name;
733
734 g_array_ledger(c1.ledger_id)
735 .char_sources_sl('XLA_ACCOUNTING_METHOD_NAME') := c1.session_slam_name;
736
737
738 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
739 trace
740 (p_msg =>'application_name = '||c1.application_name
741 ,p_level => C_LEVEL_STATEMENT
742 ,p_module => l_log_module);
743 trace
744 (p_msg =>'user_je_source_name = '||c1.user_je_source_name
745 ,p_level => C_LEVEL_STATEMENT
746 ,p_module => l_log_module);
747 trace
748 (p_msg =>'ledger_name = '||c1.ledger_name
749 ,p_level => C_LEVEL_STATEMENT
750 ,p_module => l_log_module);
751 trace
752 (p_msg =>'ledger_coa_name = '||c1.ledger_coa_name
753 ,p_level => C_LEVEL_STATEMENT
754 ,p_module => l_log_module);
755 trace
756 (p_msg =>'session_coa_name = '||c1.session_coa_name
757 ,p_level => C_LEVEL_STATEMENT
758 ,p_module => l_log_module);
759 trace
760 (p_msg =>'ledger_slam_name = '||c1.ledger_slam_name
761 ,p_level => C_LEVEL_STATEMENT
762 ,p_module => l_log_module);
763 trace
764 (p_msg =>'session_slam_name = '||c1.session_slam_name
765 ,p_level => C_LEVEL_STATEMENT
766 ,p_module => l_log_module);
767 END IF;
768
769 -------------------------------------------------------------------------
770 -- Caching untranslated information
771 -------------------------------------------------------------------------
772 g_array_ledger(c1.ledger_id)
773 .char_sources('DYNAMIC_INSERTS_ALLOWED_FLAG') := c1.dynamic_inserts_allowed_flag;
774
775 g_array_ledger(c1.ledger_id)
776 .num_sources('XLA_COA_ID') := c1.coa_id;
777
778 g_array_ledger(c1.ledger_id)
779 .char_sources('XLA_ACCOUNTING_METHOD_OWNER') := c1.slam_type;
780
781 g_array_ledger(c1.ledger_id)
782 .char_sources('XLA_CURRENCY_CODE') := c1.xla_currency_code;
783
784 g_array_ledger(c1.ledger_id)
785 .char_sources('XLA_DESCRIPTION_LANGUAGE') := c1.xla_description_language;
786
787 g_array_ledger(c1.ledger_id)
788 .char_sources('XLA_NLS_DESC_LANGUAGE') := c1.xla_nls_desc_language;
789
790 g_array_ledger(c1.ledger_id)
791 .num_sources('XLA_ENTERED_CUR_BAL_SUS_CCID') := c1.xla_entered_cur_bal_sus_ccid;
792
793 g_array_ledger(c1.ledger_id)
794 .num_sources('XLA_LEDGER_CUR_BAL_SUS_CCID') := c1.xla_ledger_cur_bal_sus_ccid;
795
796 g_array_ledger(c1.ledger_id)
797 .num_sources('RES_ENCUMB_CODE_COMBINATION_ID') := c1.res_encumb_code_combination_id;
798
802 g_array_ledger(c1.ledger_id)
799 g_array_ledger(c1.ledger_id)
800 .num_sources('XLA_ROUNDING_CCID') := c1.xla_rounding_ccid;
801
803 .num_sources('XLA_MAX_DAYS_ROLL_RATE') := c1.ALC_MAX_DAYS_ROLL_RATE;
804
805 g_array_ledger(c1.ledger_id)
806 .char_sources('XLA_INHERIT_CONVERSION_TYPE') := c1.ALC_INHERIT_CONVERSION_TYPE;
807
808 g_array_ledger(c1.ledger_id)
809 .char_sources('XLA_DEFAULT_CONV_RATE_TYPE') := c1.ALC_DEFAULT_CONV_RATE_TYPE;
810
811 g_array_ledger(c1.ledger_id)
812 .char_sources('LEDGER_CATEGORY_CODE') := c1.ledger_category_code;
813
814 g_array_ledger(c1.ledger_id)
815 .num_sources('XLA_CURRENCY_PRECISION') := c1.ledger_currency_precision;
816
817 g_array_ledger(c1.ledger_id)
818 .num_sources('XLA_CURRENCY_MAU') := c1.ledger_currency_mau;
819
820 g_array_ledger(c1.ledger_id)
821 .char_sources('XLA_ROUNDING_RULE_CODE') := c1.xla_rounding_rule_code;
822
823 g_array_ledger(c1.ledger_id)
824 .num_sources('SL_COA_MAPPING_ID') := c1.coa_mapping_id;
825
826 g_array_ledger(c1.ledger_id)
827 .char_sources('GL_COA_MAPPING_NAME') := c1.coa_mapping_name;
828
829 g_array_ledger(c1.ledger_id)
830 .char_sources('BAL_SEG_COLUMN_NAME') := c1.bal_seg_column_name;
831
832 g_array_ledger(c1.ledger_id)
833 .char_sources('MGT_SEG_COLUMN_NAME') := c1.mgt_seg_column_name;
834
835 g_array_ledger(c1.ledger_id)
836 .char_sources('SLA_BAL_BY_LEDGER_CURR_FLAG') := c1.xla_ledger_cur_bal_flag;
837
838 g_array_ledger(c1.ledger_id)
839 .char_sources('XLA_ACCT_REVERSAL_OPTION') := c1.xla_acct_reversal_option_code;
840
841 g_array_ledger(c1.ledger_id)
842 .num_sources('SLA_LEDGER_ID') := c1.sla_ledger_id ;
843
844 g_array_ledger(c1.ledger_id)
845 .num_sources('LATEST_ENCUMBRANCE_YEAR') := c1.latest_encumbrance_year;
846
847 g_array_ledger(c1.ledger_id)
848 .char_sources('BAL_SEG_VALUE_OPTION_CODE') := c1.bal_seg_value_option_code;
849
850 g_array_ledger(c1.ledger_id)
851 .char_sources('MGT_SEG_VALUE_OPTION_CODE') := c1.mgt_seg_value_option_code;
852
853 g_array_ledger(c1.ledger_id)
854 .char_sources('ALLOW_INTERCOMPANY_POST_FLAG') := c1.allow_intercompany_post_flag;
855
856 g_array_ledger(c1.ledger_id)
857 .num_sources('TRANSACTION_CALENDAR_ID') := c1.transaction_calendar_id;
858
859 g_array_ledger(c1.ledger_id)
860 .char_sources('ENABLE_AVERAGE_BALANCES_FLAG') := c1.enable_average_balances_flag;
861
862 g_array_ledger(c1.ledger_id)
863 .char_sources('EFFECTIVE_DATE_RULE_CODE') := c1.effective_date_rule_code;
864
865 g_array_ledger(c1.ledger_id)
866 .char_sources('SUSPENSE_ALLOWED_FLAG') := c1.suspense_allowed_flag;
867
868 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
869 trace
870 (p_msg =>'dynamic_inserts_allowed_flag = '||c1.dynamic_inserts_allowed_flag
871 ,p_level => C_LEVEL_STATEMENT
872 ,p_module => l_log_module);
873 trace
874 (p_msg =>'coa_id = '||TO_CHAR(c1.coa_id)
875 ,p_level => C_LEVEL_STATEMENT
876 ,p_module => l_log_module);
877 trace
878 (p_msg =>'slam_type = '||c1.slam_type
879 ,p_level => C_LEVEL_STATEMENT
880 ,p_module => l_log_module);
881 trace
882 (p_msg =>'xla_currency_code = '||c1.xla_currency_code
883 ,p_level => C_LEVEL_STATEMENT
884 ,p_module => l_log_module);
885 trace
886 (p_msg =>'xla_description_language = '||c1.xla_description_language
887 ,p_level => C_LEVEL_STATEMENT
888 ,p_module => l_log_module);
889 trace
890 (p_msg =>'xla_nls_desc_language = '||c1.xla_nls_desc_language
891 ,p_level => C_LEVEL_STATEMENT
892 ,p_module => l_log_module);
893 trace
894 (p_msg =>'xla_entered_cur_bal_sus_ccid = '||TO_CHAR(c1.xla_entered_cur_bal_sus_ccid)
895 ,p_level => C_LEVEL_STATEMENT
896 ,p_module => l_log_module);
897 trace
898 (p_msg =>'xla_ledger_cur_bal_sus_ccid = '||TO_CHAR(c1.xla_ledger_cur_bal_sus_ccid)
899 ,p_level => C_LEVEL_STATEMENT
900 ,p_module => l_log_module);
901 trace
902 (p_msg =>'res_encumb_code_combination_id = '||TO_CHAR(c1.res_encumb_code_combination_id)
903 ,p_level => C_LEVEL_STATEMENT
904 ,p_module => l_log_module);
905 trace
906 (p_msg =>'ledger_category_code = '||c1.ledger_category_code
907 ,p_level => C_LEVEL_STATEMENT
908 ,p_module => l_log_module);
909 trace
910 (p_msg =>'ledger_currency_precision = '||TO_CHAR(c1.ledger_currency_precision)
911 ,p_level => C_LEVEL_STATEMENT
912 ,p_module => l_log_module);
913 trace
917 trace
914 (p_msg =>'coa_mapping_id = '||TO_CHAR(c1.coa_mapping_id)
915 ,p_level => C_LEVEL_STATEMENT
916 ,p_module => l_log_module);
918 (p_msg =>'coa_mapping_name = '||c1.coa_mapping_name
919 ,p_level => C_LEVEL_STATEMENT
920 ,p_module => l_log_module);
921 trace
922 (p_msg =>'bal_seg_column_name = '||c1.bal_seg_column_name
923 ,p_level => C_LEVEL_STATEMENT
924 ,p_module => l_log_module);
925 trace
926 (p_msg =>'mgt_seg_column_name = '||c1.mgt_seg_column_name
927 ,p_level => C_LEVEL_STATEMENT
928 ,p_module => l_log_module);
929 trace
930 (p_msg =>'xla_ledger_cur_bal_flag = '||c1.xla_ledger_cur_bal_flag
931 ,p_level => C_LEVEL_STATEMENT
932 ,p_module => l_log_module);
933 trace
934 (p_msg =>'xla_acct_reversal_option_code = '||c1.xla_acct_reversal_option_code
935 ,p_level => C_LEVEL_STATEMENT
936 ,p_module => l_log_module);
937 trace
938 (p_msg =>'sla_ledger_id = '||TO_CHAR(c1.sla_ledger_id)
939 ,p_level => C_LEVEL_STATEMENT
940 ,p_module => l_log_module);
941 trace
942 (p_msg =>'latest_encumbrance_year = '||TO_CHAR(c1.latest_encumbrance_year)
943 ,p_level => C_LEVEL_STATEMENT
944 ,p_module => l_log_module);
945 trace
946 (p_msg =>'bal_seg_value_option_code = '||c1.bal_seg_value_option_code
947 ,p_level => C_LEVEL_STATEMENT
948 ,p_module => l_log_module);
949 trace
950 (p_msg =>'mgt_seg_value_option_code = '||c1.mgt_seg_value_option_code
951 ,p_level => C_LEVEL_STATEMENT
952 ,p_module => l_log_module);
953 trace
954 (p_msg =>'allow_intercompany_post_flag = '||c1.allow_intercompany_post_flag
955 ,p_level => C_LEVEL_STATEMENT
956 ,p_module => l_log_module);
957 trace
958 (p_msg =>'transaction_calendar_id = '||c1.transaction_calendar_id
959 ,p_level => C_LEVEL_STATEMENT
960 ,p_module => l_log_module);
961 trace
962 (p_msg =>'enable_average_balance_flag = '||c1.enable_average_balances_flag
963 ,p_level => C_LEVEL_STATEMENT
964 ,p_module => l_log_module);
965 trace
966 (p_msg =>'effective_date_rule_code = '||c1.effective_date_rule_code
967 ,p_level => C_LEVEL_STATEMENT
968 ,p_module => l_log_module);
969 END IF;
970
971 -------------------------------------------------------------------------
972 -- Caching alc ledger ids only if base ledger is a primary ledger. There
973 -- cannot be ALC ledgers for a secondary ledger
974 -------------------------------------------------------------------------
975 IF c1.ledger_category_code = 'PRIMARY' THEN
976 g_primary_ledger_id := c1.ledger_id;
977
978 ----------------------------------------------------------------------
979 -- Caching currecny information for alc ledgers
980 ----------------------------------------------------------------------
981 FOR c2 IN csr_alc_ledger (c1.ledger_id) LOOP
982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
983 trace
984 (p_msg =>'Caching information for alc ledger = '||TO_CHAR(c2.ledger_id)
985 ,p_level => C_LEVEL_STATEMENT
986 ,p_module => l_log_module);
987 END IF;
988 -------------------------------------------------------------------------
989 -- Storing ledger_id in an array
990 -------------------------------------------------------------------------
991 l_alc_ledger_count := l_alc_ledger_count + 1;
992 g_alc_ledger_ids(l_alc_ledger_count) := c2.ledger_id;
993
994 -------------------------------------------------------------------------
995 -- Storing category code in array to efficiently know the ledger
996 -- category
997 -------------------------------------------------------------------------
998 g_array_ledger(c2.ledger_id).category_code := 'ALC';
999
1000 g_array_ledger(c2.ledger_id)
1001 .char_sources('LEDGER_CATEGORY_CODE') := 'ALC';
1002
1003 g_array_ledger(c2.ledger_id)
1004 .char_sources('XLA_LEDGER_NAME') := c2.ledger_name;
1005
1006 g_array_ledger(c2.ledger_id)
1007 .char_sources('XLA_CURRENCY_CODE') := c2.ledger_currency;
1008
1009 g_array_ledger(c2.ledger_id)
1010 .num_sources('XLA_CURRENCY_PRECISION') := c2.ledger_currency_precision;
1011
1012 g_array_ledger(c2.ledger_id)
1013 .num_sources('XLA_CURRENCY_MAU') := c2.ledger_currency_mau;
1014
1015 g_array_ledger(c2.ledger_id)
1016 .num_sources('XLA_MAX_DAYS_ROLL_RATE') := c2.ALC_MAX_DAYS_ROLL_RATE;
1017
1018 g_array_ledger(c2.ledger_id)
1019 .char_sources('XLA_INHERIT_CONVERSION_TYPE') := c2.ALC_INHERIT_CONVERSION_TYPE;
1020
1021 g_array_ledger(c2.ledger_id)
1025 g_array_ledger(c2.ledger_id)
1022 .char_sources('XLA_DEFAULT_CONV_RATE_TYPE') := c2.ALC_DEFAULT_CONV_RATE_TYPE;
1023
1024
1026 .num_sources('SLA_LEDGER_ID') := c2.sla_ledger_id;
1027
1028 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1029 trace
1030 (p_msg =>'ledger_category_code = ALC'
1031 ,p_level => C_LEVEL_STATEMENT
1032 ,p_module => l_log_module);
1033 trace
1034 (p_msg =>'ledger_currency = '||c2.ledger_currency
1035 ,p_level => C_LEVEL_STATEMENT
1036 ,p_module => l_log_module);
1037 trace
1038 (p_msg =>'ledger_currency_precision = '||TO_CHAR(c2.ledger_currency_precision)
1039 ,p_level => C_LEVEL_STATEMENT
1040 ,p_module => l_log_module);
1041 trace
1042 (p_msg =>'sla_ledger_id = '||TO_CHAR(c2.sla_ledger_id)
1043 ,p_level => C_LEVEL_STATEMENT
1044 ,p_module => l_log_module);
1045 END IF;
1046
1047 END LOOP;
1048
1049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1050 trace
1051 (p_msg =>'Number of alc ledgers = '||TO_CHAR(g_alc_ledger_ids.COUNT)
1052 ,p_level => C_LEVEL_STATEMENT
1053 ,p_module => l_log_module);
1054 END IF;
1055 END IF;
1056
1057 -------------------------------------------------------------------------
1058 -- Caching PAD information for the ledger
1059 -------------------------------------------------------------------------
1060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1061 trace
1062 (p_msg => 'Caching product definitions for the ledger '||
1063 TO_CHAR(c1.ledger_id)
1064 ,p_level => C_LEVEL_STATEMENT
1065 ,p_module => l_log_module);
1066 END IF;
1067
1068 l_pad_count := 0;
1069 FOR c2 IN csr_ledger_pad (c1.slam_type
1070 ,c1.slam_code
1071 ,c1.xla_description_language)
1072 LOOP
1073 l_pad_count := l_pad_count + 1;
1074
1075 g_array_ledger(c1.ledger_id)
1076 .pads(l_pad_count)
1077 .acctg_method_rule_id := c2.rule_id;
1078
1079 g_array_ledger(c1.ledger_id)
1080 .pads(l_pad_count)
1081 .amb_context_code := c2.amb_context_code;
1082
1083 g_array_ledger(c1.ledger_id)
1084 .pads(l_pad_count)
1085 .product_rule_owner := c2.pad_type;
1086
1087 g_array_ledger(c1.ledger_id)
1088 .pads(l_pad_count)
1089 .product_rule_code := c2.pad_code;
1090
1091 g_array_ledger(c1.ledger_id)
1092 .pads(l_pad_count)
1093 .ledger_product_rule_name := c2.ledger_pad_name;
1094
1095 g_array_ledger(c1.ledger_id)
1096 .pads(l_pad_count)
1097 .session_product_rule_name := c2.session_pad_name;
1098
1099 g_array_ledger(c1.ledger_id)
1100 .pads(l_pad_count)
1101 .pad_package_name := c2.pad_package_name;
1102
1103 g_array_ledger(c1.ledger_id)
1104 .pads(l_pad_count)
1105 .compile_status_code := c2.compile_status;
1106
1107 g_array_ledger(c1.ledger_id)
1108 .pads(l_pad_count)
1109 .start_date_active := c2.start_date;
1110
1111 g_array_ledger(c1.ledger_id)
1112 .pads(l_pad_count)
1113 .end_date_active := c2.end_date;
1114
1115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1116 trace
1117 (p_msg =>'rule_id = '||TO_CHAR(c2.rule_id)
1118 ,p_level => C_LEVEL_STATEMENT
1119 ,p_module => l_log_module);
1120 trace
1121 (p_msg =>'amb_context_code = '||c2.amb_context_code
1122 ,p_level => C_LEVEL_STATEMENT
1123 ,p_module => l_log_module);
1124 trace
1125 (p_msg =>'pad_type = '||c2.pad_type
1126 ,p_level => C_LEVEL_STATEMENT
1127 ,p_module => l_log_module);
1128 trace
1129 (p_msg =>'pad_code = '||c2.pad_code
1130 ,p_level => C_LEVEL_STATEMENT
1131 ,p_module => l_log_module);
1132 trace
1133 (p_msg =>'ledger_pad_name = '||c2.ledger_pad_name
1134 ,p_level => C_LEVEL_STATEMENT
1135 ,p_module => l_log_module);
1136 trace
1137 (p_msg =>'session_pad_name = '||c2.session_pad_name
1138 ,p_level => C_LEVEL_STATEMENT
1139 ,p_module => l_log_module);
1140 trace
1141 (p_msg =>'pad_package_name = '||c2.pad_package_name
1142 ,p_level => C_LEVEL_STATEMENT
1143 ,p_module => l_log_module);
1144 trace
1145 (p_msg =>'compile_status = '||c2.compile_status
1146 ,p_level => C_LEVEL_STATEMENT
1147 ,p_module => l_log_module);
1148 trace
1152 trace
1149 (p_msg =>'start_date = '||TO_CHAR(c2.start_date)
1150 ,p_level => C_LEVEL_STATEMENT
1151 ,p_module => l_log_module);
1153 (p_msg =>'end_date = '||TO_CHAR(c2.end_date)
1154 ,p_level => C_LEVEL_STATEMENT
1155 ,p_module => l_log_module);
1156 END IF;
1157
1158 END LOOP;
1159
1160 IF g_array_ledger.EXISTS(c1.ledger_id) THEN
1161 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1162 trace
1163 (p_msg =>'Number of PADs = '||
1164 TO_CHAR(g_array_ledger(c1.ledger_id).pads.COUNT)
1165 ,p_level => C_LEVEL_STATEMENT
1166 ,p_module => l_log_module);
1167 END IF;
1168 END IF;
1169
1170 END LOOP;
1171
1172 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
1173 trace
1174 (p_msg =>'Number of base ledgers = '||TO_CHAR(g_base_ledger_ids.COUNT)
1175 ,p_level => C_LEVEL_STATEMENT
1176 ,p_module => l_log_module);
1177 END IF;
1178
1179 IF g_base_ledger_ids.count = 0 THEN
1180 IF (C_LEVEL_ERROR >= g_log_level) THEN
1181 trace
1182 (p_msg => 'ERROR: Problem in caching ledgers. Probably the ledger '||
1183 'setup is incomplete. ledger ID = '||TO_CHAR(p_event_ledger_id)
1184 ,p_level => C_LEVEL_ERROR
1185 ,p_module => l_log_module);
1186 END IF;
1187
1188 xla_exceptions_pkg.raise_message
1189 (p_appli_s_name => 'XLA'
1190 ,p_msg_name => 'XLA_COMMON_ERROR'
1191 ,p_token_1 => 'ERROR'
1192 ,p_value_1 => 'There is problem in caching the ledger. '||
1193 'Probably, the ledger setup is not complete.'
1194 ,p_token_2 => 'LOCATION'
1195 ,p_value_2 => 'load_application_ledgers');
1196 END IF;
1197
1198 ----------------------------------------------------------------------------
1199 -- Call routine to cache application setups
1200 ----------------------------------------------------------------------------
1201 cache_application_setup
1202 (p_application_id => p_application_id
1203 ,p_ledger_id => p_event_ledger_id
1204 ,p_ledger_category => l_event_ledger_category); --pass ledger category also Bug #4554935
1205
1206 ----------------------------------------------------------------------------
1207 -- Call routine to cache defined system sources
1208 ----------------------------------------------------------------------------
1209 load_system_sources;
1210
1211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1212 trace
1213 (p_msg => 'END of procedure LOAD_APPLICATION_LEDGERS'
1214 ,p_level => C_LEVEL_PROCEDURE
1215 ,p_module => l_log_module);
1216 END IF;
1217
1218 EXCEPTION
1219 -- Bug 5018098
1220 WHEN NO_DATA_FOUND THEN
1221 IF csr_base_ledger%NOTFOUND THEN
1222 xla_exceptions_pkg.raise_message
1223 (p_appli_s_name => 'XLA'
1224 ,p_msg_name => 'XLA_COMMON_ERROR'
1225 ,p_token_1 => 'ERROR'
1226 ,p_value_1 => 'ERROR: Problem getting ledger information for application '||p_application_id||'. '||
1227 'Subledger Accounting Options are not defined for this ledger and application.
1228 Please run Update Subledger Accounting Options program for your application.'
1229 ,p_token_2 => 'LOCATION'
1230 ,p_value_2 => 'xla_accounting_cache_pkg.load_application_ledgers');
1231 END IF;
1232 WHEN xla_exceptions_pkg.application_exception THEN
1233 RAISE;
1234 WHEN OTHERS THEN
1235 xla_exceptions_pkg.raise_message
1236 (p_location => l_log_module);
1237 END load_application_ledgers;
1238
1239
1240 --=============================================================================
1241 --
1242 --
1243 --
1244 --=============================================================================
1245 PROCEDURE get_pad_info
1246 (p_ledger_id IN NUMBER
1247 ,p_event_date IN DATE
1248 ,p_pad_owner OUT NOCOPY VARCHAR2
1249 ,p_pad_code OUT NOCOPY VARCHAR2
1250 ,p_ledger_pad_name OUT NOCOPY VARCHAR2
1251 ,p_session_pad_name OUT NOCOPY VARCHAR2
1252 ,p_pad_compile_status OUT NOCOPY VARCHAR2
1253 ,p_pad_package_name OUT NOCOPY VARCHAR2) IS
1254 l_ledger_id NUMBER;
1255 l_pad_found BOOLEAN := FALSE;
1256 l_log_module VARCHAR2(240);
1257 BEGIN
1258 IF g_log_enabled THEN
1259 l_log_module := C_DEFAULT_MODULE||'.get_pad_info';
1260 END IF;
1261
1262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1263 trace
1264 (p_msg => 'BEGIN of procedure GET_PAD_INFO'
1265 ,p_level => C_LEVEL_PROCEDURE
1266 ,p_module => l_log_module);
1267 trace
1268 (p_msg => 'p_ledger_id = ' ||TO_CHAR(p_ledger_id)
1269 ,p_level => C_LEVEL_PROCEDURE
1270 ,p_module => l_log_module);
1271 trace
1272 (p_msg => 'p_event_date = '||TO_CHAR(p_event_date)
1273 ,p_level => C_LEVEL_PROCEDURE
1274 ,p_module => l_log_module);
1275 END IF;
1276
1277 l_ledger_id := p_ledger_id;
1278
1282 END IF;
1279 IF (g_array_ledger(l_ledger_id).category_code = 'ALC')
1280 THEN
1281 l_ledger_id := g_primary_ledger_id;
1283
1284 ----------------------------------------------------------------------------
1285 -- PAD start date and end date could be null. PAD effective dates must be
1286 -- compared using NVL.
1287 ----------------------------------------------------------------------------
1288 FOR i in 1..g_array_ledger(l_ledger_id).pads.COUNT LOOP
1289 IF (p_event_date >=
1290 NVL(g_array_ledger(l_ledger_id).pads(i).start_date_active, p_event_date-1)
1291 )
1292 AND
1293 (p_event_date <=
1294 NVL(g_array_ledger(p_ledger_id).pads(i).end_date_active, p_event_date+1)
1295 )
1296 THEN
1297 p_pad_owner := g_array_ledger(l_ledger_id)
1298 .pads(i).product_rule_owner;
1299 p_pad_code := g_array_ledger(l_ledger_id)
1300 .pads(i).product_rule_code;
1301 p_ledger_pad_name := g_array_ledger(l_ledger_id)
1302 .pads(i).ledger_product_rule_name;
1303 p_session_pad_name := g_array_ledger(l_ledger_id)
1304 .pads(i).session_product_rule_name;
1305 p_pad_compile_status := g_array_ledger(l_ledger_id)
1306 .pads(i).compile_status_code;
1307 p_pad_package_name := g_array_ledger(l_ledger_id)
1308 .pads(i).pad_package_name;
1309 l_pad_found := TRUE;
1310 EXIT;
1311 END IF;
1312 END LOOP;
1313
1314 IF NOT l_pad_found THEN
1315 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1316 trace
1317 (p_msg => 'WARNNING: No PAD found for : '||
1318 'ledger = '||TO_CHAR(p_ledger_id)||
1319 ' and event date = '||TO_CHAR(p_event_date)
1320 ,p_level => C_LEVEL_EXCEPTION
1321 ,p_module => l_log_module);
1322 END IF;
1323 END IF;
1324
1325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1326 trace
1327 (p_msg => 'p_pad_owner = '||p_pad_owner
1328 ,p_level => C_LEVEL_PROCEDURE
1329 ,p_module => l_log_module);
1330 trace
1331 (p_msg => 'p_pad_code = '||p_pad_code
1332 ,p_level => C_LEVEL_PROCEDURE
1333 ,p_module => l_log_module);
1334 trace
1335 (p_msg => 'p_ledger_pad_name = '||p_ledger_pad_name
1336 ,p_level => C_LEVEL_PROCEDURE
1337 ,p_module => l_log_module);
1338 trace
1339 (p_msg => 'p_session_pad_name = '||p_session_pad_name
1340 ,p_level => C_LEVEL_PROCEDURE
1341 ,p_module => l_log_module);
1342 trace
1343 (p_msg => 'p_pad_compile_status = '||p_pad_compile_status
1344 ,p_level => C_LEVEL_PROCEDURE
1345 ,p_module => l_log_module);
1346 trace
1347 (p_msg => 'p_pad_package_name = '||p_pad_package_name
1348 ,p_level => C_LEVEL_PROCEDURE
1349 ,p_module => l_log_module);
1350 trace
1351 (p_msg => 'END of procedure GET_PAD_INFO'
1352 ,p_level => C_LEVEL_PROCEDURE
1353 ,p_module => l_log_module);
1354 END IF;
1355 EXCEPTION
1356 WHEN xla_exceptions_pkg.application_exception THEN
1357 RAISE;
1358 WHEN OTHERS THEN
1359 xla_exceptions_pkg.raise_message
1360 (p_location => l_log_module);
1361 END get_pad_info;
1362
1363
1364 --=============================================================================
1365 --
1366 --
1367 --
1368 --=============================================================================
1369 PROCEDURE get_event_info
1370 (p_ledger_id IN NUMBER
1371 ,p_event_class_code IN VARCHAR2
1372 ,p_event_type_code IN VARCHAR2
1373 ,p_ledger_event_class_name OUT NOCOPY VARCHAR2
1374 ,p_session_event_class_name OUT NOCOPY VARCHAR2
1375 ,p_ledger_event_type_name OUT NOCOPY VARCHAR2
1376 ,p_session_event_type_name OUT NOCOPY VARCHAR2) IS
1377 l_ledger_id NUMBER;
1378 l_language VARCHAR2(30);
1379 l_log_module VARCHAR2(240);
1380 BEGIN
1381 IF g_log_enabled THEN
1382 l_log_module := C_DEFAULT_MODULE||'.get_event_info';
1383 END IF;
1384
1385 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1386 trace
1387 (p_msg => 'BEGIN of procedure GET_EVENT_INFO'
1388 ,p_level => C_LEVEL_PROCEDURE
1389 ,p_module => l_log_module);
1390 trace
1391 (p_msg => 'p_ledger_id = ' ||TO_CHAR(p_ledger_id)
1392 ,p_level => C_LEVEL_PROCEDURE
1393 ,p_module => l_log_module);
1394 trace
1395 (p_msg => 'p_event_class_code = '||p_event_class_code
1396 ,p_level => C_LEVEL_PROCEDURE
1397 ,p_module => l_log_module);
1398 trace
1399 (p_msg => 'p_event_type_code = '||p_event_type_code
1400 ,p_level => C_LEVEL_PROCEDURE
1401 ,p_module => l_log_module);
1402 END IF;
1403
1404 l_ledger_id := p_ledger_id;
1405
1406 IF (g_array_ledger(l_ledger_id).category_code = 'ALC')
1407 THEN
1411 l_language := g_array_ledger(l_ledger_id).char_sources('XLA_DESCRIPTION_LANGUAGE');
1408 l_ledger_id := g_primary_ledger_id;
1409 END IF;
1410
1412
1413 p_ledger_event_class_name := g_array_event_classes(p_event_class_code)
1414 .event_class_name_tl(l_language);
1415 p_ledger_event_type_name := g_array_event_types(p_event_type_code)
1416 .event_type_name_tl(l_language);
1417 p_session_event_class_name := g_array_event_classes(p_event_class_code)
1418 .event_class_name_sl;
1419 p_session_event_type_name := g_array_event_types(p_event_type_code)
1420 .event_type_name_sl;
1421
1422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1423 trace
1424 (p_msg => 'p_ledger_event_class_name = '||p_ledger_event_class_name
1425 ,p_level => C_LEVEL_PROCEDURE
1426 ,p_module => l_log_module);
1427 trace
1428 (p_msg => 'p_session_event_class_name = '||p_session_event_class_name
1429 ,p_level => C_LEVEL_PROCEDURE
1430 ,p_module => l_log_module);
1431 trace
1432 (p_msg => 'p_ledger_event_type_name = '||p_ledger_event_type_name
1433 ,p_level => C_LEVEL_PROCEDURE
1434 ,p_module => l_log_module);
1435 trace
1436 (p_msg => 'p_session_event_type_name = '||p_session_event_type_name
1437 ,p_level => C_LEVEL_PROCEDURE
1438 ,p_module => l_log_module);
1439 trace
1440 (p_msg => 'END of procedure GET_EVENT_INFO'
1441 ,p_level => C_LEVEL_PROCEDURE
1442 ,p_module => l_log_module);
1443 END IF;
1444 EXCEPTION
1445 WHEN xla_exceptions_pkg.application_exception THEN
1446 RAISE;
1447 WHEN OTHERS THEN
1448 xla_exceptions_pkg.raise_message
1449 (p_location => l_log_module);
1450 END get_event_info;
1451
1452
1453 --=============================================================================
1454 --
1455 -- get values from accounting cache
1456 --
1457 --=============================================================================
1458 FUNCTION GetValueNum
1459 (p_source_code IN VARCHAR2
1460 ,p_target_ledger_id IN NUMBER)
1461 RETURN NUMBER IS
1462 l_ledger_id NUMBER;
1463 l_value NUMBER;
1464 l_log_module VARCHAR2(240);
1465
1466 BEGIN
1467 IF g_log_enabled THEN
1468 l_log_module := C_DEFAULT_MODULE||'.GetValueNum';
1469 END IF;
1470
1471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1472 trace
1473 (p_msg => 'BEGIN of function GETVALUENUM'
1474 ,p_level => C_LEVEL_PROCEDURE
1475 ,p_module => l_log_module);
1476 trace
1477 (p_msg => 'p_source_code = ' ||p_source_code
1478 ,p_level => C_LEVEL_PROCEDURE
1479 ,p_module => l_log_module);
1480 trace
1481 (p_msg => 'p_target_ledger_id = '||TO_CHAR(p_target_ledger_id)
1482 ,p_level => C_LEVEL_PROCEDURE
1483 ,p_module => l_log_module);
1484 END IF;
1485
1486 IF is_source_valid
1487 (p_source_code => p_source_code
1488 ,p_datatype => 'D')
1489 THEN
1490 l_ledger_id := p_target_ledger_id;
1491
1492 IF ((g_array_ledger(l_ledger_id).category_code = 'ALC') AND
1493 (NOT(g_array_ledger(l_ledger_id).num_sources.EXISTS(p_source_code))))
1494 THEN
1495 l_ledger_id := g_primary_ledger_id;
1496 END IF;
1497
1498 l_value := g_array_ledger(l_ledger_id).num_sources(p_source_code);
1499 END IF;
1500
1501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1502 trace
1503 (p_msg => 'return value. = '||TO_CHAR(l_value)
1504 ,p_level => C_LEVEL_PROCEDURE
1505 ,p_module => l_log_module);
1506 trace
1507 (p_msg => 'END of function GETVALUENUM'
1508 ,p_level => C_LEVEL_PROCEDURE
1509 ,p_module => l_log_module);
1510 END IF;
1511
1512 RETURN l_value;
1513 EXCEPTION
1514 WHEN xla_exceptions_pkg.application_exception THEN
1515 RAISE;
1516 WHEN OTHERS THEN
1517 xla_exceptions_pkg.raise_message
1518 (p_location => l_log_module);
1519 END GetValueNum;
1520
1521
1522 --=============================================================================
1523 --
1524 -- get values from accounting cache
1525 --
1526 --=============================================================================
1527 FUNCTION GetValueNum
1528 (p_source_code IN VARCHAR2)
1529 RETURN NUMBER IS
1530 l_value NUMBER;
1531 l_log_module VARCHAR2(240);
1532 BEGIN
1533 IF g_log_enabled THEN
1534 l_log_module := C_DEFAULT_MODULE||'.GetValueNum';
1535 END IF;
1536
1537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1538 trace
1539 (p_msg => 'BEGIN of function GETVALUENUM'
1540 ,p_level => C_LEVEL_PROCEDURE
1541 ,p_module => l_log_module);
1542 trace
1543 (p_msg => 'p_source_code = ' ||p_source_code
1544 ,p_level => C_LEVEL_PROCEDURE
1545 ,p_module => l_log_module);
1546 END IF;
1547
1548 IF is_source_valid
1549 (p_source_code => p_source_code
1550 ,p_datatype => 'D')
1551 THEN
1552 l_value := g_record_session.num_sources(p_source_code);
1553 END IF;
1554
1555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1556 trace
1557 (p_msg => 'return value. = '||TO_CHAR(l_value)
1558 ,p_level => C_LEVEL_PROCEDURE
1559 ,p_module => l_log_module);
1560 trace
1561 (p_msg => 'END of function GETVALUENUM'
1562 ,p_level => C_LEVEL_PROCEDURE
1563 ,p_module => l_log_module);
1564 END IF;
1565
1566 RETURN l_value;
1567 EXCEPTION
1568 WHEN xla_exceptions_pkg.application_exception THEN
1569 RAISE;
1570 WHEN OTHERS THEN
1571 xla_exceptions_pkg.raise_message
1572 (p_location => l_log_module);
1573 END GetValueNum;
1574
1575
1576
1577 --=============================================================================
1578 --
1579 --
1580 --
1581 --=============================================================================
1582 FUNCTION GetValueDate
1583 (p_source_code IN VARCHAR2
1584 ,p_target_ledger_id IN NUMBER)
1585 RETURN DATE IS
1586 l_ledger_id NUMBER;
1587 l_value DATE;
1588 l_log_module VARCHAR2(240);
1589 BEGIN
1590 IF g_log_enabled THEN
1591 l_log_module := C_DEFAULT_MODULE||'.GetValueDate';
1592 END IF;
1593
1594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1595 trace
1596 (p_msg => 'BEGIN of function GETVALUEDATE'
1597 ,p_level => C_LEVEL_PROCEDURE
1598 ,p_module => l_log_module);
1599 trace
1600 (p_msg => 'p_source_code = ' ||p_source_code
1601 ,p_level => C_LEVEL_PROCEDURE
1602 ,p_module => l_log_module);
1603 trace
1604 (p_msg => 'p_target_ledger_id = '||TO_CHAR(p_target_ledger_id)
1605 ,p_level => C_LEVEL_PROCEDURE
1606 ,p_module => l_log_module);
1607 END IF;
1608
1609 IF is_source_valid
1610 (p_source_code => p_source_code
1611 ,p_datatype => 'D')
1612 THEN
1613 l_ledger_id := p_target_ledger_id;
1614 IF ((g_array_ledger(l_ledger_id).category_code = 'ALC') AND
1615 (NOT(g_array_ledger(l_ledger_id).date_sources.EXISTS(p_source_code))))
1616 THEN
1617 l_ledger_id := g_primary_ledger_id;
1618 END IF;
1619
1620 l_value := g_array_ledger(l_ledger_id).date_sources(p_source_code);
1621 END IF;
1622
1623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1624 trace
1625 (p_msg => 'return value. = '||TO_CHAR(l_value)
1626 ,p_level => C_LEVEL_PROCEDURE
1627 ,p_module => l_log_module);
1628 trace
1629 (p_msg => 'END of function GETVALUEDATE'
1630 ,p_level => C_LEVEL_PROCEDURE
1631 ,p_module => l_log_module);
1632 END IF;
1633
1634 RETURN l_value;
1635 EXCEPTION
1636 WHEN xla_exceptions_pkg.application_exception THEN
1637 RAISE;
1638 WHEN OTHERS THEN
1639 xla_exceptions_pkg.raise_message
1640 (p_location => l_log_module);
1641 END GetValueDate;
1642
1643
1644 --=============================================================================
1645 --
1646 --
1647 --
1651 RETURN DATE IS
1648 --=============================================================================
1649 FUNCTION GetValueDate
1650 (p_source_code IN VARCHAR2)
1652 l_value DATE;
1653 l_log_module VARCHAR2(240);
1654 BEGIN
1655 IF g_log_enabled THEN
1656 l_log_module := C_DEFAULT_MODULE||'.GetValueDate';
1657 END IF;
1658
1659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1660 trace
1661 (p_msg => 'BEGIN of function GETVALUEDATE'
1662 ,p_level => C_LEVEL_PROCEDURE
1663 ,p_module => l_log_module);
1664 trace
1665 (p_msg => 'p_source_code = ' ||p_source_code
1666 ,p_level => C_LEVEL_PROCEDURE
1667 ,p_module => l_log_module);
1668 END IF;
1669
1670 IF is_source_valid
1671 (p_source_code => p_source_code
1672 ,p_datatype => 'D')
1673 THEN
1674 l_value := g_record_session.date_sources(p_source_code);
1675 END IF;
1676
1677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1678 trace
1679 (p_msg => 'return value. = '||TO_CHAR(l_value)
1680 ,p_level => C_LEVEL_PROCEDURE
1681 ,p_module => l_log_module);
1682 trace
1683 (p_msg => 'END of function GETVALUEDATE'
1684 ,p_level => C_LEVEL_PROCEDURE
1685 ,p_module => l_log_module);
1686 END IF;
1687
1688 RETURN l_value;
1689 EXCEPTION
1690 WHEN xla_exceptions_pkg.application_exception THEN
1691 RAISE;
1692 WHEN OTHERS THEN
1693 xla_exceptions_pkg.raise_message
1694 (p_location => l_log_module);
1695 END GetValueDate;
1696
1697
1698 --=============================================================================
1699 --
1700 --
1701 --
1702 --=============================================================================
1703 FUNCTION GetValueChar
1704 (p_source_code IN VARCHAR2
1705 ,p_target_ledger_id IN NUMBER)
1706 RETURN VARCHAR2 IS
1707 l_ledger_id NUMBER;
1708 l_value VARCHAR2(240);
1709 l_log_module VARCHAR2(240);
1710 BEGIN
1711 IF g_log_enabled THEN
1712 l_log_module := C_DEFAULT_MODULE||'.GetValueChar';
1713 END IF;
1714
1715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1716 trace
1717 (p_msg => 'BEGIN of function GETVALUECHAR'
1718 ,p_level => C_LEVEL_PROCEDURE
1719 ,p_module => l_log_module);
1720 trace
1721 (p_msg => 'p_source_code = ' ||p_source_code
1722 ,p_level => C_LEVEL_PROCEDURE
1723 ,p_module => l_log_module);
1724 trace
1725 (p_msg => 'p_target_ledger_id = '||TO_CHAR(p_target_ledger_id)
1726 ,p_level => C_LEVEL_PROCEDURE
1727 ,p_module => l_log_module);
1728 END IF;
1729
1730 IF is_source_valid
1731 (p_source_code => p_source_code
1732 ,p_datatype => 'C')
1733 THEN
1734 l_ledger_id := p_target_ledger_id;
1735 IF ((g_array_ledger(l_ledger_id).category_code = 'ALC') AND
1736 (NOT(g_array_ledger(l_ledger_id).char_sources.EXISTS(p_source_code))))
1737 THEN
1738 l_ledger_id := g_primary_ledger_id;
1739 END IF;
1740
1741 l_value := g_array_ledger(l_ledger_id).char_sources(p_source_code);
1742 END IF;
1743
1744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1745 trace
1746 (p_msg => 'return value. = '||TO_CHAR(l_value)
1747 ,p_level => C_LEVEL_PROCEDURE
1748 ,p_module => l_log_module);
1749 trace
1750 (p_msg => 'END of function GETVALUECHAR'
1751 ,p_level => C_LEVEL_PROCEDURE
1752 ,p_module => l_log_module);
1753 END IF;
1754
1755 RETURN l_value;
1756 EXCEPTION
1757 WHEN xla_exceptions_pkg.application_exception THEN
1758 RAISE;
1759 WHEN OTHERS THEN
1760 xla_exceptions_pkg.raise_message
1761 (p_location => l_log_module);
1762 END GetValueChar;
1763
1764
1765 --=============================================================================
1766 --
1767 --
1768 --
1769 --=============================================================================
1770 FUNCTION GetValueChar
1771 (p_source_code IN VARCHAR2)
1772 RETURN VARCHAR2 IS
1773 l_value VARCHAR2(240);
1774 l_log_module VARCHAR2(240);
1775
1776 BEGIN
1777 IF g_log_enabled THEN
1778 l_log_module := C_DEFAULT_MODULE||'.GetValueChar';
1779 END IF;
1780
1781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1782 trace
1783 (p_msg => 'BEGIN of function GETVALUECHAR'
1784 ,p_level => C_LEVEL_PROCEDURE
1785 ,p_module => l_log_module);
1786 trace
1787 (p_msg => 'p_source_code = ' ||p_source_code
1788 ,p_level => C_LEVEL_PROCEDURE
1789 ,p_module => l_log_module);
1790 END IF;
1791
1792 IF is_source_valid
1793 (p_source_code => p_source_code
1794 ,p_datatype => 'C')
1795 THEN
1796 l_value := g_record_session.char_sources(p_source_code);
1797 END IF;
1798
1802 ,p_level => C_LEVEL_PROCEDURE
1799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1800 trace
1801 (p_msg => 'return value. = '||TO_CHAR(l_value)
1803 ,p_module => l_log_module);
1804 trace
1805 (p_msg => 'END of function GETVALUECHAR'
1806 ,p_level => C_LEVEL_PROCEDURE
1807 ,p_module => l_log_module);
1808 END IF;
1809
1810 RETURN l_value;
1811 EXCEPTION
1812 WHEN xla_exceptions_pkg.application_exception THEN
1813 RAISE;
1814 WHEN OTHERS THEN
1815 xla_exceptions_pkg.raise_message
1816 (p_location => l_log_module);
1817 END GetValueChar;
1818
1819
1820 --=============================================================================
1821 --
1822 --
1823 --
1824 --=============================================================================
1825 FUNCTION GetSessionValueChar
1826 (p_source_code IN VARCHAR2
1827 ,p_target_ledger_id IN NUMBER)
1828 RETURN VARCHAR2 IS
1829 l_ledger_id NUMBER;
1830 l_value VARCHAR2(240);
1831 l_log_module VARCHAR2(240);
1832 BEGIN
1833 IF g_log_enabled THEN
1834 l_log_module := C_DEFAULT_MODULE||'.GetSessionValueChar';
1835 END IF;
1836
1837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1838 trace
1839 (p_msg => 'BEGIN of function GETSESSIONVALUECHAR'
1840 ,p_level => C_LEVEL_PROCEDURE
1841 ,p_module => l_log_module);
1842 trace
1843 (p_msg => 'p_source_code = ' ||p_source_code
1844 ,p_level => C_LEVEL_PROCEDURE
1845 ,p_module => l_log_module);
1846 trace
1847 (p_msg => 'p_target_ledger_id = '||TO_CHAR(p_target_ledger_id)
1848 ,p_level => C_LEVEL_PROCEDURE
1849 ,p_module => l_log_module);
1850 END IF;
1851
1852 IF is_source_valid
1853 (p_source_code => p_source_code
1854 ,p_datatype => 'C')
1855 THEN
1856 l_ledger_id := p_target_ledger_id;
1857
1858 IF ((g_array_ledger(l_ledger_id).category_code = 'ALC') AND
1859 (NOT(g_array_ledger(l_ledger_id).char_sources_sl.EXISTS(p_source_code))))
1860 THEN
1861 l_ledger_id := g_primary_ledger_id;
1862 END IF;
1863
1864 l_value := g_array_ledger(l_ledger_id).char_sources_sl(p_source_code);
1865 END IF;
1866
1867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1868 trace
1869 (p_msg => 'return value. = '||TO_CHAR(l_value)
1870 ,p_level => C_LEVEL_PROCEDURE
1871 ,p_module => l_log_module);
1872 trace
1873 (p_msg => 'END of function GETSESSIONVALUECHAR'
1874 ,p_level => C_LEVEL_PROCEDURE
1875 ,p_module => l_log_module);
1876 END IF;
1877
1878 RETURN l_value;
1879 EXCEPTION
1880 WHEN xla_exceptions_pkg.application_exception THEN
1881 RAISE;
1882 WHEN OTHERS THEN
1883 xla_exceptions_pkg.raise_message
1884 (p_location => l_log_module);
1885 END GetSessionValueChar;
1886
1887
1888 --=============================================================================
1889 --
1890 --
1891 --
1892 --=============================================================================
1893 FUNCTION GetSessionValueChar
1894 (p_source_code IN VARCHAR2)
1895 RETURN VARCHAR2 IS
1896 l_value VARCHAR2(240);
1897 l_log_module VARCHAR2(240);
1898 BEGIN
1899 IF g_log_enabled THEN
1900 l_log_module := C_DEFAULT_MODULE||'.GetSessionValueChar';
1901 END IF;
1902
1903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1904 trace
1905 (p_msg => 'BEGIN of function GETSESSIONVALUECHAR'
1906 ,p_level => C_LEVEL_PROCEDURE
1907 ,p_module => l_log_module);
1908 trace
1909 (p_msg => 'p_source_code = ' ||p_source_code
1910 ,p_level => C_LEVEL_PROCEDURE
1911 ,p_module => l_log_module);
1912 END IF;
1913
1914 IF is_source_valid
1915 (p_source_code => p_source_code
1916 ,p_datatype => 'C')
1917 THEN
1918 l_value := g_record_session.char_sources_sl(p_source_code);
1919 END IF;
1920
1921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1922 trace
1923 (p_msg => 'return value. = '||TO_CHAR(l_value)
1924 ,p_level => C_LEVEL_PROCEDURE
1925 ,p_module => l_log_module);
1926 trace
1927 (p_msg => 'END of function GETSESSIONVALUECHAR'
1928 ,p_level => C_LEVEL_PROCEDURE
1929 ,p_module => l_log_module);
1930 END IF;
1931
1932 RETURN l_value;
1933 EXCEPTION
1934 WHEN xla_exceptions_pkg.application_exception THEN
1935 RAISE;
1936 WHEN OTHERS THEN
1937 xla_exceptions_pkg.raise_message
1938 (p_location => l_log_module);
1939 END GetSessionValueChar;
1940
1941
1942 --=============================================================================
1943 --
1944 --
1945 --
1946 --=============================================================================
1947 FUNCTION GetAlcLedgers
1948 (p_primary_ledger_id IN NUMBER)
1949 RETURN t_array_ledger_id IS
1953 IF g_log_enabled THEN
1950 l_array_alc_ledgers t_array_ledger_id;
1951 l_log_module VARCHAR2(240);
1952 BEGIN
1954 l_log_module := C_DEFAULT_MODULE||'.GetAlcLedgers';
1955 END IF;
1956
1957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1958 trace
1959 (p_msg => 'BEGIN of function GETALCLEDGERS'
1960 ,p_level => C_LEVEL_PROCEDURE
1961 ,p_module => l_log_module);
1962 trace
1963 (p_msg => 'p_primary_ledger_id = '||TO_CHAR(p_primary_ledger_id)
1964 ,p_level => C_LEVEL_PROCEDURE
1965 ,p_module => l_log_module);
1966 END IF;
1967
1968 IF p_primary_ledger_id = g_primary_ledger_id THEN
1969 l_array_alc_ledgers := g_alc_ledger_ids;
1970 END IF;
1971
1972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1973 trace
1974 (p_msg => 'Count of alc ledgers returned = '||
1975 TO_CHAR(l_array_alc_ledgers.COUNT)
1976 ,p_level => C_LEVEL_PROCEDURE
1977 ,p_module => l_log_module);
1978 trace
1979 (p_msg => 'END of function GETALCLEDGERS'
1980 ,p_level => C_LEVEL_PROCEDURE
1981 ,p_module => l_log_module);
1982 END IF;
1983
1984 RETURN l_array_alc_ledgers;
1985 EXCEPTION
1986 WHEN xla_exceptions_pkg.application_exception THEN
1987 RAISE;
1988 WHEN OTHERS THEN
1989 xla_exceptions_pkg.raise_message
1990 (p_location => l_log_module);
1991 END GetAlcLedgers;
1992
1993
1994 --=============================================================================
1995 --
1996 --
1997 --
1998 --=============================================================================
1999 FUNCTION GetLedgers
2000 RETURN t_array_ledger_id IS
2001 l_log_module VARCHAR2(240);
2002 BEGIN
2003 IF g_log_enabled THEN
2004 l_log_module := C_DEFAULT_MODULE||'.GetLedgers';
2005 END IF;
2006
2007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2008 trace
2009 (p_msg => 'BEGIN of function GETLEDGERS'
2010 ,p_level => C_LEVEL_PROCEDURE
2011 ,p_module => l_log_module);
2012 END IF;
2013
2014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2015 trace
2016 (p_msg => 'Count of ledgers returned = '||
2017 TO_CHAR(g_base_ledger_ids.COUNT)
2018 ,p_level => C_LEVEL_PROCEDURE
2019 ,p_module => l_log_module);
2020 trace
2021 (p_msg => 'END of function GETLEDGERS'
2022 ,p_level => C_LEVEL_PROCEDURE
2023 ,p_module => l_log_module);
2024 END IF;
2025
2026 RETURN g_base_ledger_ids;
2027 EXCEPTION
2028 WHEN xla_exceptions_pkg.application_exception THEN
2029 RAISE;
2030 WHEN OTHERS THEN
2031 xla_exceptions_pkg.raise_message
2032 (p_location => l_log_module);
2033 END GetLedgers;
2034
2035
2036
2037 --=============================================================================
2038 --
2039 --
2040 --
2041 --=============================================================================
2042 FUNCTION get_je_category
2043 (p_ledger_id IN NUMBER
2044 ,p_event_class_code IN VARCHAR2)
2045 RETURN VARCHAR2 IS
2046 l_ledger_id NUMBER;
2047 l_je_category VARCHAR2(240);
2048 l_log_module VARCHAR2(240);
2049 BEGIN
2050 IF g_log_enabled THEN
2051 l_log_module := C_DEFAULT_MODULE||'.get_je_category';
2052 END IF;
2053
2054 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2055 trace
2056 (p_msg => 'BEGIN of function GET_JE_CATEGORY'
2057 ,p_level => C_LEVEL_PROCEDURE
2058 ,p_module => l_log_module);
2059 trace
2060 (p_msg => 'p_ledger_id = ' ||TO_CHAR(p_ledger_id)
2061 ,p_level => C_LEVEL_PROCEDURE
2062 ,p_module => l_log_module);
2063 trace
2064 (p_msg => 'p_event_class_code = '||p_event_class_code
2065 ,p_level => C_LEVEL_PROCEDURE
2066 ,p_module => l_log_module);
2067 END IF;
2068
2069 l_ledger_id := p_ledger_id;
2070
2071 IF (g_array_ledger(l_ledger_id).category_code = 'ALC')
2072 THEN
2073 l_ledger_id := g_primary_ledger_id;
2074 END IF;
2075
2076 l_je_category := g_array_event_classes(p_event_class_code)
2077 .xla_je_category(l_ledger_id);
2078
2079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2080 trace
2081 (p_msg => 'Return Value = '||l_je_category
2082 ,p_level => C_LEVEL_PROCEDURE
2083 ,p_module => l_log_module);
2084 trace
2085 (p_msg => 'END of function GET_JE_CATEGORY'
2086 ,p_level => C_LEVEL_PROCEDURE
2087 ,p_module => l_log_module);
2088 END IF;
2089
2090 RETURN l_je_category;
2091 EXCEPTION
2092 -- Bug 4736579
2093 WHEN NO_DATA_FOUND THEN
2094 xla_exceptions_pkg.raise_message
2095 (p_appli_s_name => 'XLA'
2096 ,p_msg_name => 'XLA_COMMON_ERROR'
2097 ,p_token_1 => 'ERROR'
2098 ,p_value_1 => 'ERROR: Problem getting journal category information for '||p_event_class_code||' and ledger '||p_ledger_id||'. '||
2099 'Subledger Accounting Options are not defined for the ledger and your application.'||
2103 ,p_value_2 => 'xla_accounting_cache_pkg.get_je_category');
2100 'Please run Update Subledger Accounting Options program for your application.'
2101
2102 ,p_token_2 => 'LOCATION'
2104
2105 WHEN xla_exceptions_pkg.application_exception THEN
2106 RAISE;
2107 WHEN OTHERS THEN
2108 xla_exceptions_pkg.raise_message
2109 (p_location => l_log_module);
2110 END get_je_category;
2111
2112
2113
2114 --=============================================================================
2115 --
2116 --
2117 --
2118 --=============================================================================
2119 FUNCTION GetArrayPad
2120 (p_ledger_id IN NUMBER -- primary/secondary ledger id
2121 ,p_max_event_date IN DATE
2122 ,p_min_event_date IN DATE)
2123 RETURN t_array_pad IS
2124 l_ledger_id NUMBER;
2125 l_array_pads t_array_pad;
2126 l_pad_found BOOLEAN := FALSE;
2127 l_log_module VARCHAR2(240);
2128 j NUMBER := 0;
2129 BEGIN
2130 IF g_log_enabled THEN
2131 l_log_module := C_DEFAULT_MODULE||'.GetArrayPad';
2132 END IF;
2133
2134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2135 trace
2136 (p_msg => 'BEGIN of function GETARRAYPAD'
2137 ,p_level => C_LEVEL_PROCEDURE
2138 ,p_module => l_log_module);
2139 trace
2140 (p_msg => 'p_ledger_id = '||p_ledger_id
2141 ,p_level => C_LEVEL_PROCEDURE
2142 ,p_module => l_log_module);
2143 trace
2144 (p_msg => 'p_max_event_date = '||p_max_event_date
2145 ,p_level => C_LEVEL_PROCEDURE
2146 ,p_module => l_log_module);
2147 trace
2148 (p_msg => 'p_min_event_date = '||p_min_event_date
2149 ,p_level => C_LEVEL_PROCEDURE
2150 ,p_module => l_log_module);
2151 END IF;
2152
2153 l_ledger_id := p_ledger_id;
2154
2155 IF (g_array_ledger(l_ledger_id).category_code = 'ALC')
2156 THEN
2157 l_ledger_id := g_primary_ledger_id;
2158 END IF;
2159
2160 ----------------------------------------------------------------------------
2161 -- PAD start date and end date could be null. PAD effective dates must be
2162 -- compared using NVL.
2163 ----------------------------------------------------------------------------
2164 FOR i in 1..g_array_ledger(l_ledger_id).pads.COUNT LOOP
2165 IF (p_min_event_date <=
2166 NVL(g_array_ledger(l_ledger_id).pads(i).end_date_active, p_min_event_date+1)
2167 )
2168 AND
2169 (p_max_event_date >=
2170 NVL(g_array_ledger(p_ledger_id).pads(i).start_date_active, p_max_event_date-1)
2171 )
2172 THEN
2173 j := j + 1;
2174 l_array_pads(j).acctg_method_rule_id := g_array_ledger(l_ledger_id)
2175 .pads(i).acctg_method_rule_id;
2176 l_array_pads(j).amb_context_code := g_array_ledger(l_ledger_id)
2177 .pads(i).amb_context_code;
2178 l_array_pads(j).product_rule_owner := g_array_ledger(l_ledger_id)
2179 .pads(i).product_rule_owner;
2180 l_array_pads(j).product_rule_code := g_array_ledger(l_ledger_id)
2181 .pads(i).product_rule_code;
2182 l_array_pads(j).ledger_product_rule_name := g_array_ledger(l_ledger_id)
2183 .pads(i).ledger_product_rule_name;
2184 l_array_pads(j).session_product_rule_name := g_array_ledger(l_ledger_id)
2185 .pads(i).session_product_rule_name;
2186 l_array_pads(j).compile_status_code := g_array_ledger(l_ledger_id)
2187 .pads(i).compile_status_code;
2188 l_array_pads(j).pad_package_name := g_array_ledger(l_ledger_id)
2189 .pads(i).pad_package_name;
2190 l_array_pads(j).start_date_active := g_array_ledger(l_ledger_id)
2194 END IF;
2191 .pads(i).start_date_active;
2192 l_array_pads(j).end_date_active := g_array_ledger(l_ledger_id)
2193 .pads(i).end_date_active;
2195 END LOOP;
2196
2197 IF l_array_pads.COUNT = 0 THEN
2198 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2199 trace
2200 (p_msg => 'WARNNING: No PAD found for : '||
2201 'ledger = '||TO_CHAR(p_ledger_id)||
2202 ' and date between '||TO_CHAR(p_min_event_date)||
2203 ' and '||TO_CHAR(p_max_event_date)
2204 ,p_level => C_LEVEL_EXCEPTION
2205 ,p_module => l_log_module);
2206 END IF;
2207 END IF;
2208 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2209 trace
2210 (p_msg => 'Count of pads = '||l_array_pads.COUNT
2211 ,p_level => C_LEVEL_PROCEDURE
2212 ,p_module => l_log_module);
2213 trace
2214 (p_msg => 'END of function GETARRAYPAD'
2215 ,p_level => C_LEVEL_PROCEDURE
2216 ,p_module => l_log_module);
2217 END IF;
2218 return l_array_pads;
2219 END GetArrayPad;
2220
2221
2222 --=============================================================================
2223 -- *********** local procedures and functions **********
2224 --=============================================================================
2225
2226 --=============================================================================
2227 --
2228 --
2229 --
2230 --
2231 --
2232 --
2233 --
2234 --
2235 --
2236 --
2237 -- Following are local routines
2238 --
2239 -- 1. cache_application_setup
2240 -- 2. load_system_sources
2241 -- 3. is_source_valid
2242 --
2243 --
2244 --
2245 --
2246 --
2247 --
2248 --
2249 --
2250 --
2251 --
2252 --
2253 --=============================================================================
2254
2255 --=============================================================================
2256 --
2257 --
2258 --
2259 --=============================================================================
2260 PROCEDURE cache_application_setup
2261 (p_application_id IN INTEGER
2262 ,p_ledger_id IN INTEGER
2263 ,p_ledger_category IN VARCHAR2) IS
2264
2265 CURSOR csr_event_class IS
2266 SELECT ect.event_class_code event_class_code
2267 ,ect.name ledger_event_class_name
2268 ,ecv.name session_event_class_name
2269 ,ect.language language
2270 FROM xla_subledger_options_v xso
2271 ,xla_event_classes_tl ect
2272 ,xla_event_classes_vl ecv
2273 WHERE xso.application_id = p_application_id
2274 AND DECODE(xso.valuation_method_flag
2275 ,'N',xso.primary_ledger_id
2276 ,xso.ledger_id) = p_ledger_id
2277 AND xso.enabled_flag = 'Y'
2278 AND ect.application_id = p_application_id
2279 AND ect.language IN
2280 (NVL(xso.sla_description_language,USERENV('LANG'))
2281 ,USERENV('LANG'))
2282 AND ecv.application_id = p_application_id
2283 AND ecv.event_class_code = ect.event_class_code
2284 GROUP BY ect.event_class_code
2285 ,ecv.name
2286 ,ect.language
2287 ,ect.name;
2288
2289 CURSOR csr_je_category(x_event_ledger_category IN VARCHAR2) IS
2290 SELECT xjc.event_class_code event_class_code
2291 ,xjc.je_category_name je_category_name
2292 ,xso.ledger_id ledger_id
2296 AND xso.enabled_flag = 'Y'
2293 FROM xla_subledger_options_v xso
2294 ,xla_je_categories xjc
2295 WHERE xso.application_id = p_application_id
2297 AND xjc.application_id = p_application_id
2298 AND xjc.ledger_id = xso.ledger_id
2299 AND DECODE(x_event_ledger_category
2300 ,'PRIMARY',xso.primary_ledger_id
2301 ,xso.ledger_id) = p_ledger_id
2302 AND DECODE(x_event_ledger_category
2303 ,'PRIMARY',DECODE(xso.ledger_category_code
2304 ,'PRIMARY','Y','N')
2305 ,'Y') = xso.capture_event_flag;
2306
2307
2308
2309 CURSOR csr_event_type IS
2310 SELECT ett.event_type_code event_type_code
2311 ,ett.name ledger_event_type_name
2312 ,etv.name session_event_type_name
2313 ,ett.language language
2314 FROM xla_subledger_options_v xso
2315 ,xla_event_types_tl ett
2316 ,xla_event_types_vl etv
2317 WHERE xso.application_id = p_application_id
2318 AND DECODE(xso.valuation_method_flag
2319 ,'N',xso.primary_ledger_id
2320 ,xso.ledger_id) = p_ledger_id
2321 AND xso.enabled_flag = 'Y'
2322 AND ett.application_id = p_application_id
2323 AND ett.language IN
2324 (NVL(xso.sla_description_language,USERENV('LANG'))
2325 ,USERENV('LANG'))
2326 AND etv.application_id = p_application_id
2327 AND etv.event_type_code = ett.event_type_code
2328 GROUP BY ett.event_type_code
2329 ,etv.name
2330 ,ett.language
2331 ,ett.name;
2332
2333 l_log_module VARCHAR2(240);
2334 l_event_ledger_category VARCHAR2(30);
2335 BEGIN
2336 IF g_log_enabled THEN
2337 l_log_module := C_DEFAULT_MODULE||'.cache_application_setup';
2338 END IF;
2339
2340 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2341 trace
2342 (p_msg => 'BEGIN of procedure CACHE_APPLICATION_SETUP'
2343 ,p_level => C_LEVEL_PROCEDURE
2344 ,p_module => l_log_module);
2345 trace
2346 (p_msg => 'p_application_id = '||TO_CHAR(p_application_id)
2347 ,p_level => C_LEVEL_PROCEDURE
2348 ,p_module => l_log_module);
2349 trace
2350 (p_msg => 'p_ledger_id = '||TO_CHAR(p_ledger_id)
2351 ,p_level => C_LEVEL_PROCEDURE
2352 ,p_module => l_log_module);
2353 END IF;
2354 l_event_ledger_category := p_ledger_category;
2355
2356 FOR c1 IN csr_event_class LOOP
2357 g_array_event_classes(c1.event_class_code)
2358 .event_class_name_tl(c1.language) := c1.ledger_event_class_name;
2359 g_array_event_classes(c1.event_class_code)
2360 .event_class_name_sl := c1.session_event_class_name;
2361 END LOOP;
2362
2363 ----------------------------------------------------------------------------
2364 -- following is added to cache je_categories defined for a event_class and
2365 -- ledger. (bug # 3109690)
2366 ----------------------------------------------------------------------------
2367 FOR c1 IN csr_je_category(l_event_ledger_category) LOOP
2368 g_array_event_classes(c1.event_class_code)
2369 .xla_je_category(c1.ledger_id) := c1.je_category_name;
2370 END LOOP;
2371
2372 FOR c1 IN csr_event_type LOOP
2373 g_array_event_types(c1.event_type_code)
2374 .event_type_name_tl(c1.language) := c1.ledger_event_type_name;
2375 g_array_event_types(c1.event_type_code)
2376 .event_type_name_sl := c1.session_event_type_name;
2377 END LOOP;
2378
2379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2380 trace
2381 (p_msg => 'Number of event classes = '||TO_CHAR(g_array_event_classes.COUNT)
2382 ,p_level => C_LEVEL_STATEMENT
2383 ,p_module => l_log_module);
2384 trace
2385 (p_msg => 'Number of event types = '||TO_CHAR(g_array_event_types.COUNT)
2386 ,p_level => C_LEVEL_STATEMENT
2387 ,p_module => l_log_module);
2388 END IF;
2389
2390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2391 trace
2392 (p_msg => 'END of Procedure CACHE_APPLICATION_SETUP'
2393 ,p_level => C_LEVEL_PROCEDURE
2394 ,p_module => l_log_module);
2395 END IF;
2396 EXCEPTION
2397 WHEN xla_exceptions_pkg.application_exception THEN
2398 RAISE;
2399 WHEN OTHERS THEN
2400 xla_exceptions_pkg.raise_message
2401 (p_location => l_log_module);
2402 END cache_application_setup;
2403
2404
2405 --=============================================================================
2406 --
2407 --
2408 --
2409 --=============================================================================
2410 PROCEDURE load_system_sources IS
2411 CURSOR csr_sources IS
2412 SELECT source_code
2413 ,datatype_code
2414 FROM xla_sources_b WHERE application_id = 602;
2415
2416 l_log_module VARCHAR2(240);
2417 BEGIN
2418 IF g_log_enabled THEN
2419 l_log_module := C_DEFAULT_MODULE||'.load_system_sources';
2420 END IF;
2421
2422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2423 trace
2424 (p_msg => 'BEGIN of Procedure LOAD_SYSTEM_SOURCES'
2425 ,p_level => C_LEVEL_PROCEDURE
2426 ,p_module => l_log_module);
2427 END IF;
2428
2429 FOR c1 IN csr_sources LOOP
2430 g_array_sources(c1.source_code) := c1.datatype_code;
2431 END LOOP;
2432
2433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2434 trace
2435 (p_msg => 'END of Procedure LOAD_SYSTEM_SOURCES'
2436 ,p_level => C_LEVEL_PROCEDURE
2437 ,p_module => l_log_module);
2438 END IF;
2439
2440 EXCEPTION
2441 WHEN xla_exceptions_pkg.application_exception THEN
2442 RAISE;
2443 WHEN OTHERS THEN
2444 xla_exceptions_pkg.raise_message
2445 (p_location => l_log_module);
2446 END load_system_sources;
2447
2448 --=============================================================================
2449 --
2450 --
2451 --
2452 --=============================================================================
2453 FUNCTION is_source_valid
2454 (p_source_code IN VARCHAR2
2455 ,p_datatype IN VARCHAR2)
2456 RETURN BOOLEAN IS
2457 l_return_value BOOLEAN := FALSE;
2458 l_dummy_value VARCHAR2(30);
2459 l_log_module VARCHAR2(240);
2460 BEGIN
2461 IF g_log_enabled THEN
2462 l_log_module := C_DEFAULT_MODULE||'.is_source_valid';
2463 END IF;
2464
2465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2466 trace
2467 (p_msg => 'BEGIN of function IS_SOURCE_VALID'
2468 ,p_level => C_LEVEL_PROCEDURE
2469 ,p_module => l_log_module);
2470 trace
2471 (p_msg => 'p_source_code = '||p_source_code
2472 ,p_level => C_LEVEL_PROCEDURE
2473 ,p_module => l_log_module);
2474 trace
2475 (p_msg => 'p_datatype = '||p_datatype
2476 ,p_level => C_LEVEL_PROCEDURE
2477 ,p_module => l_log_module);
2478 END IF;
2479
2480 IF g_array_sources.EXISTS(p_source_code) THEN
2481 l_return_value := TRUE;
2482 l_dummy_value := 'TRUE';
2483 ELSE
2484 l_dummy_value := 'FALSE';
2485 xla_exceptions_pkg.raise_message
2486 (p_appli_s_name => 'XLA'
2487 ,p_msg_name => 'XLA_AP_INVALID_SOURCE_CODE'
2488 ,p_token_1 => 'SOURCE_CODE'
2489 ,p_value_1 => p_source_code);
2490 END IF;
2491
2492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2493 trace
2494 (p_msg => 'return value = '||l_dummy_value
2495 ,p_level => C_LEVEL_PROCEDURE
2496 ,p_module => l_log_module);
2497 trace
2498 (p_msg => 'END of function IS_SOURCE_VALID'
2499 ,p_level => C_LEVEL_PROCEDURE
2500 ,p_module => l_log_module);
2501 END IF;
2502
2503 RETURN l_return_value;
2504 EXCEPTION
2505 WHEN xla_exceptions_pkg.application_exception THEN
2506 RAISE;
2507 WHEN OTHERS THEN
2508 xla_exceptions_pkg.raise_message
2509 (p_location => l_log_module);
2510 END is_source_valid;
2511
2512 Procedure BuildLedgerArray
2513 ( p_array_ledger_attrs OUT NOCOPY t_array_ledger_attrs)
2514 IS
2515 l_log_module VARCHAR2(240);
2516 l_count NUMBER :=0;
2517 l_rounding_offset NUMBER;
2518 l_rounding_rule_code VARCHAR2(30);
2519 l_pri_rounding_offset NUMBER;
2520 l_pri_rounding_rule_code VARCHAR2(30);
2521 BEGIN
2522 IF g_log_enabled THEN
2523 l_log_module := C_DEFAULT_MODULE||'.BuildLedgerArray';
2524 END IF;
2525
2526 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2527 trace
2531 END IF;
2528 (p_msg => 'BEGIN of Procedure BuildLedgerArray'
2529 ,p_level => C_LEVEL_PROCEDURE
2530 ,p_module => l_log_module);
2532
2533 IF(g_array_ledger_attrs.array_ledger_id.COUNT>0) THEN
2534 p_array_ledger_attrs := g_array_ledger_attrs;
2535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2536 trace
2537 (p_msg => 'Already built, END of function BuildLedgerArray'
2538 ,p_level => C_LEVEL_PROCEDURE
2539 ,p_module => l_log_module);
2540 END IF;
2541
2542 RETURN;
2543 END IF;
2544
2545 FOR Idx IN g_base_ledger_ids.FIRST .. g_base_ledger_ids.LAST LOOP
2546
2547 l_rounding_rule_code :=xla_accounting_cache_pkg.GetValueChar(
2548 p_source_code => 'XLA_ROUNDING_RULE_CODE'
2549 , p_target_ledger_id => g_base_ledger_ids(Idx)
2550 );
2551 IF l_rounding_rule_code = 'NEAREST' THEN
2552 l_rounding_offset := 0;
2553 ELSIF l_rounding_rule_code = 'UP' THEN
2554 l_rounding_offset := .5-power(10, -30);
2555 ELSIF l_rounding_rule_code = 'DOWN' THEN
2556 l_rounding_offset :=-(.5-power(10, -30));
2557 ELSE
2558 l_rounding_offset := 0;
2559 END IF;
2560
2561 l_count:=l_count+1;
2562
2563 g_array_ledger_attrs.array_default_rate_type(l_count) :=
2564 xla_accounting_cache_pkg.GetValueChar(
2565 p_source_code => 'XLA_DEFAULT_CONV_RATE_TYPE'
2566 , p_target_ledger_id => g_base_ledger_ids(Idx)
2567 );
2568 g_array_ledger_attrs.array_inhert_type_flag(l_count) :=
2569 xla_accounting_cache_pkg.GetValueChar(
2570 p_source_code => 'XLA_INHERIT_CONVERSION_TYPE'
2571 , p_target_ledger_id => g_base_ledger_ids(Idx)
2572 );
2573 g_array_ledger_attrs.array_max_roll_date(l_count) :=
2574 xla_accounting_cache_pkg.GetValueNum(
2575 p_source_code => 'XLA_MAX_DAYS_ROLL_RATE'
2576 , p_target_ledger_id => g_base_ledger_ids(Idx)
2577 );
2578 g_array_ledger_attrs.array_ledger_id(l_count) := g_base_ledger_ids(Idx);
2579 g_array_ledger_attrs.array_ledger_currency_code(l_count):=
2580 xla_accounting_cache_pkg.GetValueChar(
2581 p_source_code => 'XLA_CURRENCY_CODE'
2582 , p_target_ledger_id => g_base_ledger_ids(Idx));
2583 g_array_ledger_attrs.array_mau(l_count):=
2584 xla_accounting_cache_pkg.GetValueNum(
2585 p_source_code => 'XLA_CURRENCY_MAU'
2586 , p_target_ledger_id => g_base_ledger_ids(Idx));
2587 g_array_ledger_attrs.array_rounding_rule_code(l_count):=
2588 l_rounding_rule_code;
2589
2590 g_array_ledger_attrs.array_rounding_offset(l_count):= l_rounding_offset;
2591
2592 IF (g_primary_ledger_id = g_base_ledger_ids(Idx)) THEN
2593 g_array_ledger_attrs.array_ledger_type(l_count):= 'PRIMARY';
2594 l_pri_rounding_rule_code := l_rounding_rule_code;
2595 l_pri_rounding_offset := l_rounding_offset;
2596 ELSE
2597 g_array_ledger_attrs.array_ledger_type(l_count) := 'SECONDARY';
2598 END IF;
2599 END LOOP;
2600
2601 IF(g_alc_ledger_ids.COUNT>0) THEN
2602 FOR Idx1 IN g_alc_ledger_ids.FIRST .. g_alc_ledger_ids.LAST LOOP
2603 l_count:=l_count+1;
2604 g_array_ledger_attrs.array_ledger_id(l_count) := g_alc_ledger_ids(Idx1);
2605 g_array_ledger_attrs.array_ledger_currency_code(l_count):=
2606 xla_accounting_cache_pkg.GetValueChar(
2607 p_source_code => 'XLA_CURRENCY_CODE'
2608 , p_target_ledger_id => g_alc_ledger_ids(Idx1));
2609 g_array_ledger_attrs.array_mau(l_count):=
2610 xla_accounting_cache_pkg.GetValueNum(
2611 p_source_code => 'XLA_CURRENCY_MAU'
2612 , p_target_ledger_id => g_alc_ledger_ids(Idx1)
2613 );
2614 g_array_ledger_attrs.array_rounding_rule_code(l_count):= l_pri_rounding_rule_code;
2615 g_array_ledger_attrs.array_rounding_offset(l_count) := l_pri_rounding_offset;
2616 g_array_ledger_attrs.array_ledger_type(l_count) := 'ALC';
2617 g_array_ledger_attrs.array_default_rate_type(l_count) :=
2618 xla_accounting_cache_pkg.GetValueChar(
2619 p_source_code => 'XLA_DEFAULT_CONV_RATE_TYPE'
2620 , p_target_ledger_id => g_alc_ledger_ids(Idx1)
2621 );
2622 g_array_ledger_attrs.array_inhert_type_flag(l_count) :=
2623 xla_accounting_cache_pkg.GetValueChar(
2624 p_source_code => 'XLA_INHERIT_CONVERSION_TYPE'
2625 , p_target_ledger_id => g_alc_ledger_ids(Idx1)
2626 );
2627 g_array_ledger_attrs.array_max_roll_date(l_count) :=
2628 xla_accounting_cache_pkg.GetValueNum(
2629 p_source_code => 'XLA_MAX_DAYS_ROLL_RATE'
2630 , p_target_ledger_id => g_alc_ledger_ids(Idx1)
2631 );
2632 END LOOP;
2633 END IF;
2634
2635 p_array_ledger_attrs := g_array_ledger_attrs;
2636
2637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2638 trace
2639 (p_msg => 'Count of ledgers returned = '||
2640 to_char(l_count)
2641 ,p_level => C_LEVEL_PROCEDURE
2642 ,p_module => l_log_module);
2643 trace
2644 (p_msg => 'END of function BuildLedgerArray'
2645 ,p_level => C_LEVEL_PROCEDURE
2646 ,p_module => l_log_module);
2647 END IF;
2648
2649 EXCEPTION
2650 WHEN xla_exceptions_pkg.application_exception THEN
2651 RAISE;
2652 WHEN OTHERS THEN
2653 xla_exceptions_pkg.raise_message
2654 (p_location => l_log_module);
2655 END BuildLedgerArray;
2656
2657 PROCEDURE GetLedgerArray
2658 ( p_array_ledger_attrs OUT NOCOPY t_array_ledger_attrs)
2659 IS
2660 l_log_module VARCHAR2(240);
2661 BEGIN
2662 IF g_log_enabled THEN
2663 l_log_module := C_DEFAULT_MODULE||'.GetLedgerArray';
2664 END IF;
2665
2666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2667 trace
2668 (p_msg => 'BEGIN of procedure GETLEDGERARRAY'
2669 ,p_level => C_LEVEL_PROCEDURE
2670 ,p_module => l_log_module);
2671 END IF;
2672
2673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2674 trace
2675 (p_msg => 'Count of ledgers returned = '||
2676 TO_CHAR(g_array_ledger_attrs.array_ledger_id.COUNT)
2677 ,p_level => C_LEVEL_PROCEDURE
2678 ,p_module => l_log_module);
2679 trace
2680 (p_msg => 'END of function GETLEDGERARRAY'
2681 ,p_level => C_LEVEL_PROCEDURE
2682 ,p_module => l_log_module);
2683 END IF;
2684
2685 p_array_ledger_attrs := g_array_ledger_attrs;
2686
2687 EXCEPTION
2688 WHEN xla_exceptions_pkg.application_exception THEN
2689 RAISE;
2690 WHEN OTHERS THEN
2691 xla_exceptions_pkg.raise_message
2692 (p_location => l_log_module);
2693 END GetLedgerArray;
2694
2695 FUNCTION GetCurrencyMau(p_currency_code IN VARCHAR2) return NUMBER
2696 IS
2697 l_entered_currency_mau t_record_currency_mau;
2698 l_log_module VARCHAR2(240);
2699 BEGIN
2700 IF g_log_enabled THEN
2701 l_log_module := C_DEFAULT_MODULE||'.GetCurrencyMau';
2702 END IF;
2703
2704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2705 trace
2706 (p_msg => 'BEGIN of procedure GetCurrencyMau'
2707 ,p_level => C_LEVEL_PROCEDURE
2708 ,p_module => l_log_module);
2709 END IF;
2710
2711 IF(g_entered_currency_mau.currency_code is null or g_entered_currency_mau.currency_code <> p_currency_code) THEN
2712 IF(g_entered_currency_mau1.currency_code is not null and g_entered_currency_mau1.currency_code = p_currency_code) THEN
2713 l_entered_currency_mau := g_entered_currency_mau1;
2714 g_entered_currency_mau1 := g_entered_currency_mau;
2715 g_entered_currency_mau := l_entered_currency_mau;
2716 ELSIF(g_entered_currency_mau2.currency_code is not null and g_entered_currency_mau2.currency_code = p_currency_code) THEN
2717 l_entered_currency_mau := g_entered_currency_mau2;
2718 g_entered_currency_mau2 := g_entered_currency_mau;
2719 g_entered_currency_mau := l_entered_currency_mau;
2720 ELSE
2721 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2722 trace
2723 (p_msg => 'get from the db'
2724 ,p_level => C_LEVEL_STATEMENT
2725 ,p_module => l_log_module);
2726 END IF;
2727
2728 SELECT nvl(minimum_accountable_unit, power(10, -1* precision))
2729 INTO l_entered_currency_mau.currency_mau
2730 FROM FND_CURRENCIES
2731 WHERE currency_code = p_currency_code;
2732
2733 l_entered_currency_mau.currency_code := p_currency_code;
2734 g_entered_currency_mau2 := g_entered_currency_mau1;
2735 g_entered_currency_mau1 := g_entered_currency_mau;
2736 g_entered_currency_mau := l_entered_currency_mau;
2737 END IF;
2738 END IF;
2739
2740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2741 trace
2742 (p_msg => 'END of procedure GetCurrencyMau:'||to_char(g_entered_currency_mau.currency_mau)
2743 ,p_level => C_LEVEL_PROCEDURE
2744 ,p_module => l_log_module);
2745 END IF;
2746 return g_entered_currency_mau.currency_mau;
2747
2748 EXCEPTION
2749 WHEN xla_exceptions_pkg.application_exception THEN
2750 RAISE;
2751 WHEN OTHERS THEN
2752 xla_exceptions_pkg.raise_message
2753 (p_location => l_log_module);
2754 END GetCurrencyMau;
2755
2756 --=============================================================================
2757 -- *********** Initialization routine **********
2758 --=============================================================================
2759
2760 --=============================================================================
2761 --
2762 --
2763 --
2764 --
2765 --
2766 --
2767 --
2768 --
2769 --
2770 --
2771 -- Following code is executed when the package body is referenced for the first
2775 --
2772 -- time
2773 --
2774 --
2776 --
2777 --
2778 --
2779 --
2780 --
2781 --
2782 --
2783 --
2784 --
2785 --=============================================================================
2786
2787 BEGIN
2788 -- l_log_module := C_DEFAULT_MODULE;
2789 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2790 g_log_enabled := fnd_log.test
2791 (log_level => g_log_level
2792 ,module => C_DEFAULT_MODULE);
2793
2794 IF NOT g_log_enabled THEN
2795 g_log_level := C_LEVEL_LOG_DISABLED;
2796 END IF;
2797 END xla_accounting_cache_pkg;