DBA Data[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;