DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00275_AAD_S_000004_BC_PKG

Source


1 PACKAGE BODY XLA_00275_AAD_S_000004_BC_PKG AS
2 --
3 /*======================================================================+
4 |                Copyright (c) 1997 Oracle Corporation                  |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | Package Name                                                          |
9 |     XLA_00275_AAD_S_000004_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Projects Standard Accounting                           |
14 |      Code    : PA_STANDARD_ACCOUNTING                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:35 by user ANONYMOUS             |
20 +=======================================================================*/
21 --
22 --
23 TYPE t_rec_array_event IS RECORD
24    (array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
25    ,array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
26    ,array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
27    ,array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
28    ,array_event_id                       xla_number_array_type --XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
29    ,array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
30    ,array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L
31    ,array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
32    ,array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
33    ,array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
34    ,array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
35    ,array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
36    ,array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num
37    ,array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
38    ,array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
39    ,array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
40    ,array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L
41    ,array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
42    ,array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
43    ,array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
44    ,array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date
45    ,array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L
46    );
47 --
48 type t_array_value_num is table of number index by varchar2(30);
49 type t_array_value_char is table of varchar2(240) index by varchar2(30);
50 type t_array_value_date is table of date index by varchar2(30);
51 
52 type t_rec_value is record
53  (array_value_num     t_array_value_num
54  ,array_value_char    t_array_value_char
55  ,array_value_date    t_array_value_date);
56 
57 type t_array_event is table of  t_rec_value index by binary_integer;
58 
59 g_array_event   t_array_event;
60 
61 --=============================================================================
62 --               *********** Diagnostics **********
63 --=============================================================================
64 
65 g_diagnostics_mode          VARCHAR2(1);
66 g_last_hdr_idx              NUMBER;        -- 4262811 MPA
67 g_hdr_extract_count         PLS_INTEGER;
68 
69 --=============================================================================
70 --               *********** Local Trace Routine **********
71 --=============================================================================
72 
73 C_LEVEL_STATEMENT     CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
74 C_LEVEL_PROCEDURE     CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
75 C_LEVEL_EVENT         CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
76 C_LEVEL_EXCEPTION     CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
77 C_LEVEL_ERROR         CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
78 C_LEVEL_UNEXPECTED    CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
79 
80 C_LEVEL_LOG_DISABLED  CONSTANT NUMBER := 99;
81 C_DEFAULT_MODULE      CONSTANT VARCHAR2(240) := 'xla.plsql.XLA_00275_AAD_S_000004_BC_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00275_AAD_S_000004_BC_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.ValidateLookupMeaning');
204        --
205 END ValidateLookupMeaning;
206 --
207 --
208 
209 FUNCTION GetMeaning (
210   p_flex_value_set_id               IN INTEGER
211 , p_flex_value                      IN VARCHAR2
212 , p_source_code                     IN VARCHAR2
213 , p_source_type_code                IN VARCHAR2
214 , p_source_application_id           IN INTEGER
215 )
216 RETURN VARCHAR2
217 IS
218 BEGIN
219 --
220 RETURN NULL ;
221 --
222 EXCEPTION
223   WHEN xla_exceptions_pkg.application_exception THEN
224       RAISE;
225   WHEN OTHERS THEN
226        xla_exceptions_pkg.raise_message
227            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.GetMeaning');
228 END GetMeaning;
229 --
230 
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 --         AcctDerRule_1
235 --
236 ---------------------------------------
237 FUNCTION AcctDerRule_1 (
238   p_application_id              IN NUMBER
239 , p_ae_header_id                IN NUMBER
240 , p_side                        IN VARCHAR2 
241 --Budget Code Combination ID
242  , p_source_1            IN NUMBER
243 , x_transaction_coa_id         OUT NOCOPY NUMBER
244 , x_accounting_coa_id          OUT NOCOPY NUMBER
245 , x_value_type_code            OUT NOCOPY VARCHAR2
246 )
247 RETURN NUMBER
248 IS
249 l_component_type       VARCHAR2(80)  ;
250 l_component_code       VARCHAR2(30)  ;
251 l_component_type_code  VARCHAR2(1)   ;
252 l_component_appl_id    INTEGER       ;
253 l_amb_context_code     VARCHAR2(30)  ;
254 l_log_module           VARCHAR2(240) ;
255 l_output_value         NUMBER        ;
256 BEGIN
257 IF g_log_enabled THEN
258       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261       trace
262          (p_msg      => 'BEGIN of AcctDerRule_1'
263          ,p_level    => C_LEVEL_PROCEDURE
264          ,p_module   => l_log_module);
265 END IF;
266 --
267 l_component_type         := 'AMB_ADR';
268 l_component_code         := 'PA_BUDGET_ACCT_RULE';
269 l_component_type_code    := 'S';
270 l_component_appl_id      :=  275;
271 l_amb_context_code       := 'DEFAULT';
272 x_transaction_coa_id     :=  null;
273 x_accounting_coa_id      :=  null;
274 --
275 
276  --
277   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278       trace
279          (p_msg      => 'END of AcctDerRule_1'
280          ,p_level    => C_LEVEL_PROCEDURE
281          ,p_module   => l_log_module);
282   END IF;
283   x_value_type_code := 'S';
284   l_output_value    := TO_NUMBER(p_source_1);
285   RETURN l_output_value;
286 
287 --
288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289       trace
290          (p_msg      => 'END of AcctDerRule_1(invalid)'
291          ,p_level    => C_LEVEL_PROCEDURE
292          ,p_module   => l_log_module);
293 END IF;
294 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
295 x_value_type_code := null;
296 l_output_value    := null;
297 xla_accounting_err_pkg.build_message
298                  (p_appli_s_name            => 'XLA'
299                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
300                  ,p_token_1                 => 'COMPONENT_NAME'
301                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
302                                                             l_component_type
303                                                           , l_component_code
304                                                           , l_component_type_code
305                                                           , l_component_appl_id
306                                                           , l_amb_context_code
307                                                           )
308                  ,p_token_2                 => 'OWNER'
309                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
310                                                         'XLA_OWNER_TYPE'
311                                                         ,l_component_type_code
312                                                         )
313                  ,p_token_3                 => 'PAD_NAME'
314                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
315                  ,p_token_4                 => 'PAD_OWNER'
316                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
317                                                         'XLA_OWNER_TYPE'
318                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
319                                                         )
320                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
321                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
322                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
323                  ,p_ae_header_id            => NULL
324 );
325 RETURN l_output_value;
326 EXCEPTION
327   WHEN xla_exceptions_pkg.application_exception THEN
328       RAISE;
329   WHEN OTHERS THEN
330        xla_exceptions_pkg.raise_message
331            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctDerRule_1');
332 END AcctDerRule_1;
333 --
334 
335 ---------------------------------------
336 --
337 -- PRIVATE FUNCTION
338 --         AcctLineType_2
339 --
340 ---------------------------------------
341 PROCEDURE AcctLineType_2 (
342   p_application_id        IN NUMBER
343  ,p_event_id              IN NUMBER
344  ,p_calculate_acctd_flag  IN VARCHAR2
348  ,p_gain_or_loss_ref      OUT VARCHAR2
345  ,p_calculate_g_l_flag    IN VARCHAR2
346  ,p_actual_flag           IN OUT VARCHAR2
347  ,p_balance_type_code     OUT VARCHAR2
349  
350 --Budget Code Combination ID
351  , p_source_1            IN NUMBER
352 --Budget Amount Code
353  , p_source_2            IN VARCHAR2
354 --Project Budgetary Control Balance Type
355  , p_source_3            IN VARCHAR2
356 --Reversing Line Flag
357  , p_source_4            IN VARCHAR2
358 --Budget Line ID
359  , p_source_5            IN NUMBER
360 --Line Type
361  , p_source_6            IN VARCHAR2
362  , p_source_6_meaning    IN VARCHAR2
363 --Encumbrance Upgrade Credit Accounting Class
364  , p_source_7            IN VARCHAR2
365 --Entered Amount
366  , p_source_8            IN NUMBER
367 --Entered Currency Code
368  , p_source_9            IN VARCHAR2
369 --Accounted Amount
370  , p_source_10            IN NUMBER
371 --Use Encumbrance Upgrade Attributes Flag
372  , p_source_11            IN VARCHAR2
373 --Exchange Rate Date
374  , p_source_12            IN DATE
375 --Exchange Rate
376  , p_source_13            IN NUMBER
377 --Exchange Rate Type
378  , p_source_14            IN VARCHAR2
379 --Upgrade Project Encumbrance Type ID
380  , p_source_15            IN NUMBER
381 )
382 IS
383 
384 l_component_type              VARCHAR2(80);
385 l_component_code              VARCHAR2(30);
386 l_component_type_code         VARCHAR2(1);
387 l_component_appl_id           INTEGER;
388 l_amb_context_code            VARCHAR2(30);
389 l_entity_code                 VARCHAR2(30);
390 l_event_class_code            VARCHAR2(30);
391 l_ae_header_id                NUMBER;
392 l_event_type_code             VARCHAR2(30);
393 l_line_definition_code        VARCHAR2(30);
394 l_line_definition_owner_code  VARCHAR2(1);
395 --
396 -- adr variables
397 l_segment                     VARCHAR2(30);
398 l_ccid                        NUMBER;
399 l_adr_transaction_coa_id      NUMBER;
400 l_adr_accounting_coa_id       NUMBER;
401 l_adr_flexfield_segment_code  VARCHAR2(30);
402 l_adr_flex_value_set_id       NUMBER;
403 l_adr_value_type_code         VARCHAR2(30);
404 l_adr_value_combination_id    NUMBER;
405 l_adr_value_segment_code      VARCHAR2(30);
406 
407 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
408 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
409 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
410 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
411 
412 -- 4262811 Variables ------------------------------------------------------------------------------------------
413 l_entered_amt_idx             NUMBER;
414 l_accted_amt_idx              NUMBER;
415 l_acc_rev_flag                VARCHAR2(1);
416 l_accrual_line_num            NUMBER;
417 l_tmp_amt                     NUMBER;
418 l_acc_rev_natural_side_code   VARCHAR2(1);
419 
420 l_num_entries                 NUMBER;
421 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
422 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
423 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
424 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
425 l_recog_line_1                NUMBER;
426 l_recog_line_2                NUMBER;
427 
428 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
429 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
430 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
431 
432 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
433 
434 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
435 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
436 
437 ---------------------------------------------------------------------------------------------------------------
438 
439 
440 --
441 -- bulk performance
442 --
443 l_balance_type_code           VARCHAR2(1);
444 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
445 l_log_module                  VARCHAR2(240);
446 
447 --
448 -- Upgrade strategy
449 --
450 l_actual_upg_option           VARCHAR2(1);
451 l_enc_upg_option           VARCHAR2(1);
452 
453 --
454 BEGIN
455 --
456 IF g_log_enabled THEN
457       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_2';
458 END IF;
459 --
460 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
461 
462       trace
463          (p_msg      => 'BEGIN of AcctLineType_2'
464          ,p_level    => C_LEVEL_PROCEDURE
465          ,p_module   => l_log_module);
466 
467 END IF;
468 --
469 l_component_type             := 'AMB_JLT';
470 l_component_code             := 'PA_COST_BUDGET_JOURNAL';
471 l_component_type_code        := 'S';
472 l_component_appl_id          :=  275;
473 l_amb_context_code           := 'DEFAULT';
474 l_entity_code                := 'BUDGETS';
475 l_event_class_code           := 'BUDGET';
476 l_event_type_code            := 'BUDGET_ALL';
477 l_line_definition_owner_code := 'S';
478 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
479 --
480 l_balance_type_code          := 'B';
481 l_segment                     := NULL;
485 l_adr_flexfield_segment_code  := NULL;
482 l_ccid                        := NULL;
483 l_adr_transaction_coa_id      := NULL;
484 l_adr_accounting_coa_id       := NULL;
486 l_adr_flex_value_set_id       := NULL;
487 l_adr_value_type_code         := NULL;
488 l_adr_value_combination_id    := NULL;
489 l_adr_value_segment_code      := NULL;
490 
491 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
492 l_bflow_class_code           := '';    -- 4219869 Business Flow
493 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
494 l_budgetary_control_flag     := 'Y';
495 
496 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
497 l_bflow_applied_to_amt       := NULL; -- 5132302
498 l_entered_amt_idx            := NULL;          -- 4262811
499 l_accted_amt_idx             := NULL;          -- 4262811
500 l_acc_rev_flag               := NULL;          -- 4262811
501 l_accrual_line_num           := NULL;          -- 4262811
502 l_tmp_amt                    := NULL;          -- 4262811
503 --
504  
505 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
506     l_balance_type_code <> 'B' THEN
507 IF NVL(p_source_2,'
508 ') =  'C' AND 
509 NVL(p_source_3,'
510 ') =  'B'
511  THEN 
512 
513    --
514    XLA_AE_LINES_PKG.SetNewLine;
515 
516    p_balance_type_code          := l_balance_type_code;
517    -- set the flag so later we will know whether the gain loss line needs to be created
518    
519    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
520      p_actual_flag :='A';
521    END IF;
522 
523    --
524    -- bulk performance
525    --
526    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
527                                       p_header_num   => 0); -- 4262811
528    --
529    -- set accounting line options
530    --
531    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
532            p_natural_side_code          => 'D'
533          , p_gain_or_loss_flag          => 'N'
534          , p_gl_transfer_mode_code      => 'S'
535          , p_acct_entry_type_code       => 'B'
536          , p_switch_side_flag           => 'Y'
537          , p_merge_duplicate_code       => 'N'
538          );
539    --
540    l_acc_rev_natural_side_code := 'C';  -- 4262811
541    -- 
542    --
543    -- set accounting line type info
544    --
545    xla_ae_lines_pkg.SetAcctLineType
546       (p_component_type             => l_component_type
547       ,p_event_type_code            => l_event_type_code
548       ,p_line_definition_owner_code => l_line_definition_owner_code
549       ,p_line_definition_code       => l_line_definition_code
550       ,p_accounting_line_code       => l_component_code
551       ,p_accounting_line_type_code  => l_component_type_code
552       ,p_accounting_line_appl_id    => l_component_appl_id
553       ,p_amb_context_code           => l_amb_context_code
554       ,p_entity_code                => l_entity_code
555       ,p_event_class_code           => l_event_class_code);
556    --
557    -- set accounting class
558    --
559    xla_ae_lines_pkg.SetAcctClass(
560            p_accounting_class_code  => 'BUDGET'
561          , p_ae_header_id           => l_ae_header_id
562          );
563 
564    --
565    -- set rounding class
566    --
567    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
568                       'BUDGET';
569 
570    --
571    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
572    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
573    --
574    -- bulk performance
575    --
576    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
577 
578    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
579       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
580 
581    -- 4955764
582    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
583       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
584 
585    -- 4458381 Public Sector Enh
586    
587    --
588    -- set accounting attributes for the line type
589    --
590    l_entered_amt_idx := 10;
591    l_accted_amt_idx  := 15;
592    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
593    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
594    l_rec_acct_attrs.array_char_value(1)  := p_source_4;
595    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
596    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_5);
597    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
598    l_rec_acct_attrs.array_char_value(3)  := p_source_6;
599    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
600    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
601    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
602    l_rec_acct_attrs.array_num_value(5)  := p_source_1;
603    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
607    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
604    l_rec_acct_attrs.array_num_value(6)  := p_source_8;
605    l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
606    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
608    l_rec_acct_attrs.array_num_value(8)  := p_source_10;
609    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
610    l_rec_acct_attrs.array_char_value(9)  := p_source_11;
611    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
612    l_rec_acct_attrs.array_num_value(10)  := p_source_8;
613    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
614    l_rec_acct_attrs.array_char_value(11)  := p_source_9;
615    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
616    l_rec_acct_attrs.array_date_value(12)  := p_source_12;
617    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
618    l_rec_acct_attrs.array_num_value(13)  := p_source_13;
619    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
620    l_rec_acct_attrs.array_char_value(14)  := p_source_14;
621    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
622    l_rec_acct_attrs.array_num_value(15)  := p_source_10;
623    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
624    l_rec_acct_attrs.array_num_value(16)  :=  to_char(p_source_5);
625    l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
626    l_rec_acct_attrs.array_char_value(17)  := p_source_6;
627    l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
628    l_rec_acct_attrs.array_num_value(18)  := p_source_15;
629 
630    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
631    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
632 
633    ---------------------------------------------------------------------------------------------------------------
634    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
635    ---------------------------------------------------------------------------------------------------------------
636    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
637 
638    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
639    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
640 
641    IF xla_accounting_cache_pkg.GetValueChar
642          (p_source_code         => 'LEDGER_CATEGORY_CODE'
643          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
644    AND l_bflow_method_code = 'PRIOR_ENTRY'
645 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
646    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
647          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
648        )
649    THEN
650          xla_ae_lines_pkg.BflowUpgEntry
651            (p_business_method_code    => l_bflow_method_code
652            ,p_business_class_code     => l_bflow_class_code
653            ,p_balance_type            => l_balance_type_code);
654    ELSE
655       NULL;
656 -- No business flow processing for business flow method of NONE.
657    END IF;
658 
659    --
660    -- call analytical criteria
661    --
662    
663    --
664    -- call description
665    --
666    -- No description or it is inherited.
667    --
668    -- call ADRs
669    -- Bug 4922099
670    --
671    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
672         (NVL(l_actual_upg_option, 'N') = 'O') OR
673         (NVL(l_enc_upg_option, 'N') = 'O')
674       )
675    THEN
676    NULL;
677    --
678    --
679    
680   l_ccid := AcctDerRule_1(
681            p_application_id           => p_application_id
682          , p_ae_header_id             => l_ae_header_id 
683 , p_source_1 => p_source_1
684          , x_transaction_coa_id       => l_adr_transaction_coa_id
685          , x_accounting_coa_id        => l_adr_accounting_coa_id
686          , x_value_type_code          => l_adr_value_type_code
687          , p_side                     => 'NA'
688    );
689 
690    xla_ae_lines_pkg.set_ccid(
691     p_code_combination_id          => l_ccid
692   , p_value_type_code              => l_adr_value_type_code
693   , p_transaction_coa_id           => l_adr_transaction_coa_id
694   , p_accounting_coa_id            => l_adr_accounting_coa_id
695   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
696   , p_adr_type_code                => 'S'
697   , p_component_type               => l_component_type
698   , p_component_code               => l_component_code
699   , p_component_type_code          => l_component_type_code
700   , p_component_appl_id            => l_component_appl_id
701   , p_amb_context_code             => l_amb_context_code
702   , p_side                         => 'NA'
703   );
704 
705 
706    --
707    --
708    END IF;
709    --
710    -- Bug 4922099
711    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
712           (NVL(l_enc_upg_option, 'N') = 'O')
713         ) AND
714         (l_bflow_method_code = 'PRIOR_ENTRY')
715       )
716    THEN
717       IF
718       --
719       1 = 2
720       --
721       THEN
722       xla_accounting_err_pkg.build_message
726                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
723                                     (p_appli_s_name            => 'XLA'
724                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
725                                     ,p_token_1                 => 'LINE_NUMBER'
727                                     ,p_token_2                 => 'LINE_TYPE_NAME'
728                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
729                                                                              l_component_type
730                                                                             ,l_component_code
731                                                                             ,l_component_type_code
732                                                                             ,l_component_appl_id
733                                                                             ,l_amb_context_code
734                                                                             ,l_entity_code
735                                                                             ,l_event_class_code
736                                                                            )
737                                     ,p_token_3                 => 'OWNER'
738                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
739                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
740                                                                           ,p_lookup_code    => l_component_type_code
741                                                                          )
742                                     ,p_token_4                 => 'PRODUCT_NAME'
743                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
744                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
745                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
746                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
747                                     ,p_ae_header_id            =>  NULL
748                                        );
749 
750         IF (C_LEVEL_ERROR>= g_log_level) THEN
751                  trace
752                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
753                       ,p_level    => C_LEVEL_ERROR
754                       ,p_module   => l_log_module);
755         END IF;
756       END IF;
757    END IF;
758    --
759    --
760    ------------------------------------------------------------------------------------------------
761    -- 4219869 Business Flow
762    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
763    -- Prior Entry.  Currently, the following code is always generated.
764    ------------------------------------------------------------------------------------------------
765    XLA_AE_LINES_PKG.ValidateCurrentLine;
766 
767    ------------------------------------------------------------------------------------
768    -- 4219869 Business Flow
769    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
770    ------------------------------------------------------------------------------------
771    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
772 
773    ----------------------------------------------------------------------------------
774    -- 4219869 Business Flow
775    -- Update journal entry status -- Need to generate this within IF <condition>
776    ----------------------------------------------------------------------------------
777    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
778          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
779          ,p_balance_type_code => l_balance_type_code
780          );
781 
782    -------------------------------------------------------------------------------------------
783    -- 4262811 - Generate the Accrual Reversal lines
784    -------------------------------------------------------------------------------------------
785    BEGIN
786       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
787                               (g_array_event(p_event_id).array_value_num('header_index'));
788       IF l_acc_rev_flag IS NULL THEN
789          l_acc_rev_flag := 'N';
790       END IF;
791    EXCEPTION
792       WHEN OTHERS THEN
793          l_acc_rev_flag := 'N';
794    END;
795    --
796    IF (l_acc_rev_flag = 'Y') THEN
797 
798        -- 4645092  ------------------------------------------------------------------------------
799        -- To allow MPA report to determine if it should generate report process
800        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
801        ------------------------------------------------------------------------------------------
802 
803        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
804        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
805 
806        --
807        -- Update the line information that should be overwritten
808        --
809        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
810                                          p_header_num   => 1);
814 
811        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
812 
813        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
815        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
816           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
817        END IF;
818 
819       --
820       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
821       --
822       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
823           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
824       ELSE
825           ---------------------------------------------------------------------------------------------------
826           -- 4262811a Switch Sign
827           ---------------------------------------------------------------------------------------------------
828           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
829           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
830                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
831           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
832                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
833           -- 5132302
834           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
835                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
836 
837       END IF;
838 
839       -- 4955764
840       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
841       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
842 
843 
844       XLA_AE_LINES_PKG.ValidateCurrentLine;
845       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
846 
847       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
848                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
849                ,p_balance_type_code => l_balance_type_code);
850 
851    END IF;
852 
853    -----------------------------------------------------------------------------------------
854    -- 4262811 Multiperiod Accounting
855    -----------------------------------------------------------------------------------------
856      -- No MPA option is assigned.
857 
858 
859 END IF;
860 END IF;
861 --
862 
863 --
864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
865    trace
866       (p_msg      => 'END of AcctLineType_2'
867       ,p_level    => C_LEVEL_PROCEDURE
868       ,p_module   => l_log_module);
869 END IF;
870 --
871 EXCEPTION
872   WHEN xla_exceptions_pkg.application_exception THEN
873       RAISE;
874   WHEN OTHERS THEN
875        xla_exceptions_pkg.raise_message
876            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_2');
877 END AcctLineType_2;
878 --
879 
880 ---------------------------------------
881 --
882 -- PRIVATE FUNCTION
883 --         AcctLineType_3
884 --
885 ---------------------------------------
886 PROCEDURE AcctLineType_3 (
887   p_application_id        IN NUMBER
888  ,p_event_id              IN NUMBER
889  ,p_calculate_acctd_flag  IN VARCHAR2
890  ,p_calculate_g_l_flag    IN VARCHAR2
891  ,p_actual_flag           IN OUT VARCHAR2
892  ,p_balance_type_code     OUT VARCHAR2
893  ,p_gain_or_loss_ref      OUT VARCHAR2
894  
895 --Budget Code Combination ID
896  , p_source_1            IN NUMBER
897 --Project Budgetary Control Balance Type
898  , p_source_3            IN VARCHAR2
899 --Reversing Line Flag
900  , p_source_4            IN VARCHAR2
901 --Budget Line ID
902  , p_source_5            IN NUMBER
903 --Line Type
904  , p_source_6            IN VARCHAR2
905  , p_source_6_meaning    IN VARCHAR2
906 --Encumbrance Upgrade Credit Accounting Class
907  , p_source_7            IN VARCHAR2
908 --Entered Amount
909  , p_source_8            IN NUMBER
910 --Entered Currency Code
911  , p_source_9            IN VARCHAR2
912 --Accounted Amount
913  , p_source_10            IN NUMBER
914 --Use Encumbrance Upgrade Attributes Flag
915  , p_source_11            IN VARCHAR2
916 --Exchange Rate Date
917  , p_source_12            IN DATE
918 --Exchange Rate
919  , p_source_13            IN NUMBER
920 --Exchange Rate Type
921  , p_source_14            IN VARCHAR2
922 --Upgrade Project Encumbrance Type ID
923  , p_source_15            IN NUMBER
924 --External Budget Code
925  , p_source_16            IN VARCHAR2
926 )
927 IS
928 
929 l_component_type              VARCHAR2(80);
930 l_component_code              VARCHAR2(30);
931 l_component_type_code         VARCHAR2(1);
932 l_component_appl_id           INTEGER;
933 l_amb_context_code            VARCHAR2(30);
934 l_entity_code                 VARCHAR2(30);
935 l_event_class_code            VARCHAR2(30);
936 l_ae_header_id                NUMBER;
937 l_event_type_code             VARCHAR2(30);
938 l_line_definition_code        VARCHAR2(30);
939 l_line_definition_owner_code  VARCHAR2(1);
943 l_ccid                        NUMBER;
940 --
941 -- adr variables
942 l_segment                     VARCHAR2(30);
944 l_adr_transaction_coa_id      NUMBER;
945 l_adr_accounting_coa_id       NUMBER;
946 l_adr_flexfield_segment_code  VARCHAR2(30);
947 l_adr_flex_value_set_id       NUMBER;
948 l_adr_value_type_code         VARCHAR2(30);
949 l_adr_value_combination_id    NUMBER;
950 l_adr_value_segment_code      VARCHAR2(30);
951 
952 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
953 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
954 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
955 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
956 
957 -- 4262811 Variables ------------------------------------------------------------------------------------------
958 l_entered_amt_idx             NUMBER;
959 l_accted_amt_idx              NUMBER;
960 l_acc_rev_flag                VARCHAR2(1);
961 l_accrual_line_num            NUMBER;
962 l_tmp_amt                     NUMBER;
963 l_acc_rev_natural_side_code   VARCHAR2(1);
964 
965 l_num_entries                 NUMBER;
966 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
967 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
968 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
969 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
970 l_recog_line_1                NUMBER;
971 l_recog_line_2                NUMBER;
972 
973 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
974 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
975 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
976 
977 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
978 
979 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
980 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
981 
982 ---------------------------------------------------------------------------------------------------------------
983 
984 
985 --
986 -- bulk performance
987 --
988 l_balance_type_code           VARCHAR2(1);
989 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
990 l_log_module                  VARCHAR2(240);
991 
992 --
993 -- Upgrade strategy
994 --
995 l_actual_upg_option           VARCHAR2(1);
996 l_enc_upg_option           VARCHAR2(1);
997 
998 --
999 BEGIN
1000 --
1001 IF g_log_enabled THEN
1002       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_3';
1003 END IF;
1004 --
1005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1006 
1007       trace
1008          (p_msg      => 'BEGIN of AcctLineType_3'
1009          ,p_level    => C_LEVEL_PROCEDURE
1010          ,p_module   => l_log_module);
1011 
1012 END IF;
1013 --
1014 l_component_type             := 'AMB_JLT';
1015 l_component_code             := 'PA_PROJ_ENCUMBRANCE';
1016 l_component_type_code        := 'S';
1017 l_component_appl_id          :=  275;
1018 l_amb_context_code           := 'DEFAULT';
1019 l_entity_code                := 'BUDGETS';
1020 l_event_class_code           := 'BUDGET';
1021 l_event_type_code            := 'BUDGET_ALL';
1022 l_line_definition_owner_code := 'S';
1023 l_line_definition_code       := 'PA_PROJ_ENC_ACCTING';
1024 --
1025 l_balance_type_code          := 'E';
1026 l_segment                     := NULL;
1027 l_ccid                        := NULL;
1028 l_adr_transaction_coa_id      := NULL;
1029 l_adr_accounting_coa_id       := NULL;
1030 l_adr_flexfield_segment_code  := NULL;
1031 l_adr_flex_value_set_id       := NULL;
1032 l_adr_value_type_code         := NULL;
1033 l_adr_value_combination_id    := NULL;
1034 l_adr_value_segment_code      := NULL;
1035 
1036 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1037 l_bflow_class_code           := 'PA_BUDGET_ENC';    -- 4219869 Business Flow
1038 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1039 l_budgetary_control_flag     := 'Y';
1040 
1041 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1042 l_bflow_applied_to_amt       := NULL; -- 5132302
1043 l_entered_amt_idx            := NULL;          -- 4262811
1044 l_accted_amt_idx             := NULL;          -- 4262811
1045 l_acc_rev_flag               := NULL;          -- 4262811
1046 l_accrual_line_num           := NULL;          -- 4262811
1047 l_tmp_amt                    := NULL;          -- 4262811
1048 --
1049  
1050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1051     l_balance_type_code <> 'B' THEN
1052 IF NVL(p_source_3,'
1053 ') =  'E' AND 
1054 NVL(p_source_16,'
1055 ') =  'GL'
1056  THEN 
1057 
1058    --
1059    XLA_AE_LINES_PKG.SetNewLine;
1060 
1061    p_balance_type_code          := l_balance_type_code;
1062    -- set the flag so later we will know whether the gain loss line needs to be created
1063    
1064    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1065      p_actual_flag :='A';
1066    END IF;
1067 
1068    --
1069    -- bulk performance
1070    --
1071    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1075    --
1072                                       p_header_num   => 0); -- 4262811
1073    --
1074    -- set accounting line options
1076    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1077            p_natural_side_code          => 'D'
1078          , p_gain_or_loss_flag          => 'N'
1079          , p_gl_transfer_mode_code      => 'S'
1080          , p_acct_entry_type_code       => 'E'
1081          , p_switch_side_flag           => 'Y'
1082          , p_merge_duplicate_code       => 'N'
1083          );
1084    --
1085    l_acc_rev_natural_side_code := 'C';  -- 4262811
1086    -- 
1087    --
1088    -- set accounting line type info
1089    --
1090    xla_ae_lines_pkg.SetAcctLineType
1091       (p_component_type             => l_component_type
1092       ,p_event_type_code            => l_event_type_code
1093       ,p_line_definition_owner_code => l_line_definition_owner_code
1094       ,p_line_definition_code       => l_line_definition_code
1095       ,p_accounting_line_code       => l_component_code
1096       ,p_accounting_line_type_code  => l_component_type_code
1097       ,p_accounting_line_appl_id    => l_component_appl_id
1098       ,p_amb_context_code           => l_amb_context_code
1099       ,p_entity_code                => l_entity_code
1100       ,p_event_class_code           => l_event_class_code);
1101    --
1102    -- set accounting class
1103    --
1104    xla_ae_lines_pkg.SetAcctClass(
1105            p_accounting_class_code  => 'PA_BUDGET_ENC'
1106          , p_ae_header_id           => l_ae_header_id
1107          );
1108 
1109    --
1110    -- set rounding class
1111    --
1112    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1113                       'PA_BUDGET_ENC';
1114 
1115    --
1116    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1117    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1118    --
1119    -- bulk performance
1120    --
1121    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1122 
1123    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1124       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1125 
1126    -- 4955764
1127    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1129 
1130    -- 4458381 Public Sector Enh
1131       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1061;
1132    --
1133    -- set accounting attributes for the line type
1134    --
1135    l_entered_amt_idx := 10;
1136    l_accted_amt_idx  := 15;
1137    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1138    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1139    l_rec_acct_attrs.array_char_value(1)  := p_source_4;
1140    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1141    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_5);
1142    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
1143    l_rec_acct_attrs.array_char_value(3)  := p_source_6;
1144    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
1145    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
1146    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
1147    l_rec_acct_attrs.array_num_value(5)  := p_source_1;
1148    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
1149    l_rec_acct_attrs.array_num_value(6)  := p_source_8;
1150    l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
1151    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
1152    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
1153    l_rec_acct_attrs.array_num_value(8)  := p_source_10;
1154    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
1155    l_rec_acct_attrs.array_char_value(9)  := p_source_11;
1156    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
1157    l_rec_acct_attrs.array_num_value(10)  := p_source_8;
1158    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
1159    l_rec_acct_attrs.array_char_value(11)  := p_source_9;
1160    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
1161    l_rec_acct_attrs.array_date_value(12)  := p_source_12;
1162    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
1163    l_rec_acct_attrs.array_num_value(13)  := p_source_13;
1164    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
1165    l_rec_acct_attrs.array_char_value(14)  := p_source_14;
1166    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
1167    l_rec_acct_attrs.array_num_value(15)  := p_source_10;
1168    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
1169    l_rec_acct_attrs.array_num_value(16)  :=  to_char(p_source_5);
1170    l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
1171    l_rec_acct_attrs.array_char_value(17)  := p_source_6;
1172    l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
1173    l_rec_acct_attrs.array_num_value(18)  := p_source_15;
1174 
1175    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1176    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1177 
1181    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1178    ---------------------------------------------------------------------------------------------------------------
1179    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1180    ---------------------------------------------------------------------------------------------------------------
1182 
1183    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1184    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1185 
1186    IF xla_accounting_cache_pkg.GetValueChar
1187          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1188          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1189    AND l_bflow_method_code = 'PRIOR_ENTRY'
1190 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1191    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1192          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1193        )
1194    THEN
1195          xla_ae_lines_pkg.BflowUpgEntry
1196            (p_business_method_code    => l_bflow_method_code
1197            ,p_business_class_code     => l_bflow_class_code
1198            ,p_balance_type            => l_balance_type_code);
1199    ELSE
1200       NULL;
1201 -- No business flow processing for business flow method of NONE.
1202    END IF;
1203 
1204    --
1205    -- call analytical criteria
1206    --
1207    
1208    --
1209    -- call description
1210    --
1211    -- No description or it is inherited.
1212    --
1213    -- call ADRs
1214    -- Bug 4922099
1215    --
1216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1217         (NVL(l_actual_upg_option, 'N') = 'O') OR
1218         (NVL(l_enc_upg_option, 'N') = 'O')
1219       )
1220    THEN
1221    NULL;
1222    --
1223    --
1224    
1225   l_ccid := AcctDerRule_1(
1226            p_application_id           => p_application_id
1227          , p_ae_header_id             => l_ae_header_id 
1228 , p_source_1 => p_source_1
1229          , x_transaction_coa_id       => l_adr_transaction_coa_id
1230          , x_accounting_coa_id        => l_adr_accounting_coa_id
1231          , x_value_type_code          => l_adr_value_type_code
1232          , p_side                     => 'NA'
1233    );
1234 
1235    xla_ae_lines_pkg.set_ccid(
1236     p_code_combination_id          => l_ccid
1237   , p_value_type_code              => l_adr_value_type_code
1238   , p_transaction_coa_id           => l_adr_transaction_coa_id
1239   , p_accounting_coa_id            => l_adr_accounting_coa_id
1240   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
1241   , p_adr_type_code                => 'S'
1242   , p_component_type               => l_component_type
1243   , p_component_code               => l_component_code
1244   , p_component_type_code          => l_component_type_code
1245   , p_component_appl_id            => l_component_appl_id
1246   , p_amb_context_code             => l_amb_context_code
1247   , p_side                         => 'NA'
1248   );
1249 
1250 
1251    --
1252    --
1253    END IF;
1254    --
1255    -- Bug 4922099
1256    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1257           (NVL(l_enc_upg_option, 'N') = 'O')
1258         ) AND
1259         (l_bflow_method_code = 'PRIOR_ENTRY')
1260       )
1261    THEN
1262       IF
1263       --
1264       1 = 2
1265       --
1266       THEN
1267       xla_accounting_err_pkg.build_message
1268                                     (p_appli_s_name            => 'XLA'
1269                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1270                                     ,p_token_1                 => 'LINE_NUMBER'
1271                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1272                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1273                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1274                                                                              l_component_type
1275                                                                             ,l_component_code
1276                                                                             ,l_component_type_code
1277                                                                             ,l_component_appl_id
1278                                                                             ,l_amb_context_code
1279                                                                             ,l_entity_code
1280                                                                             ,l_event_class_code
1281                                                                            )
1282                                     ,p_token_3                 => 'OWNER'
1283                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1284                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1285                                                                           ,p_lookup_code    => l_component_type_code
1286                                                                          )
1290                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1287                                     ,p_token_4                 => 'PRODUCT_NAME'
1288                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1289                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1291                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1292                                     ,p_ae_header_id            =>  NULL
1293                                        );
1294 
1295         IF (C_LEVEL_ERROR>= g_log_level) THEN
1296                  trace
1297                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1298                       ,p_level    => C_LEVEL_ERROR
1299                       ,p_module   => l_log_module);
1300         END IF;
1301       END IF;
1302    END IF;
1303    --
1304    --
1305    ------------------------------------------------------------------------------------------------
1306    -- 4219869 Business Flow
1307    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1308    -- Prior Entry.  Currently, the following code is always generated.
1309    ------------------------------------------------------------------------------------------------
1310    XLA_AE_LINES_PKG.ValidateCurrentLine;
1311 
1312    ------------------------------------------------------------------------------------
1313    -- 4219869 Business Flow
1314    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1315    ------------------------------------------------------------------------------------
1316    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1317 
1318    ----------------------------------------------------------------------------------
1319    -- 4219869 Business Flow
1320    -- Update journal entry status -- Need to generate this within IF <condition>
1321    ----------------------------------------------------------------------------------
1322    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1323          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1324          ,p_balance_type_code => l_balance_type_code
1325          );
1326 
1327    -------------------------------------------------------------------------------------------
1328    -- 4262811 - Generate the Accrual Reversal lines
1329    -------------------------------------------------------------------------------------------
1330    BEGIN
1331       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1332                               (g_array_event(p_event_id).array_value_num('header_index'));
1333       IF l_acc_rev_flag IS NULL THEN
1334          l_acc_rev_flag := 'N';
1335       END IF;
1336    EXCEPTION
1337       WHEN OTHERS THEN
1338          l_acc_rev_flag := 'N';
1339    END;
1340    --
1341    IF (l_acc_rev_flag = 'Y') THEN
1342 
1343        -- 4645092  ------------------------------------------------------------------------------
1344        -- To allow MPA report to determine if it should generate report process
1345        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1346        ------------------------------------------------------------------------------------------
1347 
1348        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1349        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1350 
1351        --
1352        -- Update the line information that should be overwritten
1353        --
1354        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1355                                          p_header_num   => 1);
1356        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1357 
1358        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1359 
1360        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1361           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1362        END IF;
1363 
1364       --
1365       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1366       --
1367       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1368           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1369       ELSE
1370           ---------------------------------------------------------------------------------------------------
1371           -- 4262811a Switch Sign
1372           ---------------------------------------------------------------------------------------------------
1373           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1374           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1375                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1376           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1377                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1378           -- 5132302
1379           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1380                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1381 
1382       END IF;
1383 
1384       -- 4955764
1388 
1385       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1386       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1387 
1389       XLA_AE_LINES_PKG.ValidateCurrentLine;
1390       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1391 
1392       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1393                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1394                ,p_balance_type_code => l_balance_type_code);
1395 
1396    END IF;
1397 
1398    -----------------------------------------------------------------------------------------
1399    -- 4262811 Multiperiod Accounting
1400    -----------------------------------------------------------------------------------------
1401      -- No MPA option is assigned.
1402 
1403 
1404 END IF;
1405 END IF;
1406 --
1407 
1408 --
1409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1410    trace
1411       (p_msg      => 'END of AcctLineType_3'
1412       ,p_level    => C_LEVEL_PROCEDURE
1413       ,p_module   => l_log_module);
1414 END IF;
1415 --
1416 EXCEPTION
1417   WHEN xla_exceptions_pkg.application_exception THEN
1418       RAISE;
1419   WHEN OTHERS THEN
1420        xla_exceptions_pkg.raise_message
1421            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_3');
1422 END AcctLineType_3;
1423 --
1424 
1425 ---------------------------------------
1426 --
1427 -- PRIVATE FUNCTION
1428 --         AcctLineType_4
1429 --
1430 ---------------------------------------
1431 PROCEDURE AcctLineType_4 (
1432   p_application_id        IN NUMBER
1433  ,p_event_id              IN NUMBER
1434  ,p_calculate_acctd_flag  IN VARCHAR2
1435  ,p_calculate_g_l_flag    IN VARCHAR2
1436  ,p_actual_flag           IN OUT VARCHAR2
1437  ,p_balance_type_code     OUT VARCHAR2
1438  ,p_gain_or_loss_ref      OUT VARCHAR2
1439  
1440 --Budget Code Combination ID
1441  , p_source_1            IN NUMBER
1442 --Budget Amount Code
1443  , p_source_2            IN VARCHAR2
1444 --Reversing Line Flag
1445  , p_source_4            IN VARCHAR2
1446 --Budget Line ID
1447  , p_source_5            IN NUMBER
1448 --Line Type
1449  , p_source_6            IN VARCHAR2
1450  , p_source_6_meaning    IN VARCHAR2
1451 --Encumbrance Upgrade Credit Accounting Class
1452  , p_source_7            IN VARCHAR2
1453 --Entered Amount
1454  , p_source_8            IN NUMBER
1455 --Entered Currency Code
1456  , p_source_9            IN VARCHAR2
1457 --Accounted Amount
1458  , p_source_10            IN NUMBER
1459 --Use Encumbrance Upgrade Attributes Flag
1460  , p_source_11            IN VARCHAR2
1461 --Exchange Rate Date
1462  , p_source_12            IN DATE
1463 --Exchange Rate
1464  , p_source_13            IN NUMBER
1465 --Exchange Rate Type
1466  , p_source_14            IN VARCHAR2
1467 --Upgrade Project Encumbrance Type ID
1468  , p_source_15            IN NUMBER
1469 )
1470 IS
1471 
1472 l_component_type              VARCHAR2(80);
1473 l_component_code              VARCHAR2(30);
1474 l_component_type_code         VARCHAR2(1);
1475 l_component_appl_id           INTEGER;
1476 l_amb_context_code            VARCHAR2(30);
1477 l_entity_code                 VARCHAR2(30);
1478 l_event_class_code            VARCHAR2(30);
1479 l_ae_header_id                NUMBER;
1480 l_event_type_code             VARCHAR2(30);
1481 l_line_definition_code        VARCHAR2(30);
1482 l_line_definition_owner_code  VARCHAR2(1);
1483 --
1484 -- adr variables
1485 l_segment                     VARCHAR2(30);
1486 l_ccid                        NUMBER;
1487 l_adr_transaction_coa_id      NUMBER;
1488 l_adr_accounting_coa_id       NUMBER;
1489 l_adr_flexfield_segment_code  VARCHAR2(30);
1490 l_adr_flex_value_set_id       NUMBER;
1491 l_adr_value_type_code         VARCHAR2(30);
1492 l_adr_value_combination_id    NUMBER;
1493 l_adr_value_segment_code      VARCHAR2(30);
1494 
1495 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1496 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1497 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1498 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1499 
1500 -- 4262811 Variables ------------------------------------------------------------------------------------------
1501 l_entered_amt_idx             NUMBER;
1502 l_accted_amt_idx              NUMBER;
1503 l_acc_rev_flag                VARCHAR2(1);
1504 l_accrual_line_num            NUMBER;
1505 l_tmp_amt                     NUMBER;
1506 l_acc_rev_natural_side_code   VARCHAR2(1);
1507 
1508 l_num_entries                 NUMBER;
1509 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1510 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1511 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1512 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1513 l_recog_line_1                NUMBER;
1514 l_recog_line_2                NUMBER;
1515 
1516 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1517 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1518 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1519 
1523 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1520 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1521 
1522 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1524 
1525 ---------------------------------------------------------------------------------------------------------------
1526 
1527 
1528 --
1529 -- bulk performance
1530 --
1531 l_balance_type_code           VARCHAR2(1);
1532 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1533 l_log_module                  VARCHAR2(240);
1534 
1535 --
1536 -- Upgrade strategy
1537 --
1538 l_actual_upg_option           VARCHAR2(1);
1539 l_enc_upg_option           VARCHAR2(1);
1540 
1541 --
1542 BEGIN
1543 --
1544 IF g_log_enabled THEN
1545       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
1546 END IF;
1547 --
1548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1549 
1550       trace
1551          (p_msg      => 'BEGIN of AcctLineType_4'
1552          ,p_level    => C_LEVEL_PROCEDURE
1553          ,p_module   => l_log_module);
1554 
1555 END IF;
1556 --
1557 l_component_type             := 'AMB_JLT';
1558 l_component_code             := 'PA_REV_BUDGET_JOURNAL';
1559 l_component_type_code        := 'S';
1560 l_component_appl_id          :=  275;
1561 l_amb_context_code           := 'DEFAULT';
1562 l_entity_code                := 'BUDGETS';
1563 l_event_class_code           := 'BUDGET';
1564 l_event_type_code            := 'BUDGET_ALL';
1565 l_line_definition_owner_code := 'S';
1566 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
1567 --
1568 l_balance_type_code          := 'B';
1569 l_segment                     := NULL;
1570 l_ccid                        := NULL;
1571 l_adr_transaction_coa_id      := NULL;
1572 l_adr_accounting_coa_id       := NULL;
1573 l_adr_flexfield_segment_code  := NULL;
1574 l_adr_flex_value_set_id       := NULL;
1575 l_adr_value_type_code         := NULL;
1576 l_adr_value_combination_id    := NULL;
1577 l_adr_value_segment_code      := NULL;
1578 
1579 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1580 l_bflow_class_code           := '';    -- 4219869 Business Flow
1581 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1582 l_budgetary_control_flag     := 'Y';
1583 
1584 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1585 l_bflow_applied_to_amt       := NULL; -- 5132302
1586 l_entered_amt_idx            := NULL;          -- 4262811
1587 l_accted_amt_idx             := NULL;          -- 4262811
1588 l_acc_rev_flag               := NULL;          -- 4262811
1589 l_accrual_line_num           := NULL;          -- 4262811
1590 l_tmp_amt                    := NULL;          -- 4262811
1591 --
1592  
1593 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1594     l_balance_type_code <> 'B' THEN
1595 IF NVL(p_source_2,'
1596 ') =  'R'
1597  THEN 
1598 
1599    --
1600    XLA_AE_LINES_PKG.SetNewLine;
1601 
1602    p_balance_type_code          := l_balance_type_code;
1603    -- set the flag so later we will know whether the gain loss line needs to be created
1604    
1605    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1606      p_actual_flag :='A';
1607    END IF;
1608 
1609    --
1610    -- bulk performance
1611    --
1612    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1613                                       p_header_num   => 0); -- 4262811
1614    --
1615    -- set accounting line options
1616    --
1617    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1618            p_natural_side_code          => 'C'
1619          , p_gain_or_loss_flag          => 'N'
1620          , p_gl_transfer_mode_code      => 'S'
1621          , p_acct_entry_type_code       => 'B'
1622          , p_switch_side_flag           => 'Y'
1623          , p_merge_duplicate_code       => 'N'
1624          );
1625    --
1626    l_acc_rev_natural_side_code := 'D';  -- 4262811
1627    -- 
1628    --
1629    -- set accounting line type info
1630    --
1631    xla_ae_lines_pkg.SetAcctLineType
1632       (p_component_type             => l_component_type
1633       ,p_event_type_code            => l_event_type_code
1634       ,p_line_definition_owner_code => l_line_definition_owner_code
1635       ,p_line_definition_code       => l_line_definition_code
1636       ,p_accounting_line_code       => l_component_code
1637       ,p_accounting_line_type_code  => l_component_type_code
1638       ,p_accounting_line_appl_id    => l_component_appl_id
1639       ,p_amb_context_code           => l_amb_context_code
1640       ,p_entity_code                => l_entity_code
1641       ,p_event_class_code           => l_event_class_code);
1642    --
1643    -- set accounting class
1644    --
1645    xla_ae_lines_pkg.SetAcctClass(
1646            p_accounting_class_code  => 'BUDGET'
1647          , p_ae_header_id           => l_ae_header_id
1648          );
1649 
1650    --
1651    -- set rounding class
1652    --
1653    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1654                       'BUDGET';
1655 
1656    --
1657    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1661    --
1658    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1659    --
1660    -- bulk performance
1662    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1663 
1664    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1665       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1666 
1667    -- 4955764
1668    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1670 
1671    -- 4458381 Public Sector Enh
1672    
1673    --
1674    -- set accounting attributes for the line type
1675    --
1676    l_entered_amt_idx := 10;
1677    l_accted_amt_idx  := 15;
1678    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1679    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
1680    l_rec_acct_attrs.array_char_value(1)  := p_source_4;
1681    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
1682    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_5);
1683    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
1684    l_rec_acct_attrs.array_char_value(3)  := p_source_6;
1685    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
1686    l_rec_acct_attrs.array_char_value(4)  := p_source_7;
1687    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
1688    l_rec_acct_attrs.array_num_value(5)  := p_source_1;
1689    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
1690    l_rec_acct_attrs.array_num_value(6)  := p_source_8;
1691    l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
1692    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
1693    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
1694    l_rec_acct_attrs.array_num_value(8)  := p_source_10;
1695    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
1696    l_rec_acct_attrs.array_char_value(9)  := p_source_11;
1697    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
1698    l_rec_acct_attrs.array_num_value(10)  := p_source_8;
1699    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
1700    l_rec_acct_attrs.array_char_value(11)  := p_source_9;
1701    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
1702    l_rec_acct_attrs.array_date_value(12)  := p_source_12;
1703    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
1704    l_rec_acct_attrs.array_num_value(13)  := p_source_13;
1705    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
1706    l_rec_acct_attrs.array_char_value(14)  := p_source_14;
1707    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
1708    l_rec_acct_attrs.array_num_value(15)  := p_source_10;
1709    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
1710    l_rec_acct_attrs.array_num_value(16)  :=  to_char(p_source_5);
1711    l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
1712    l_rec_acct_attrs.array_char_value(17)  := p_source_6;
1713    l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
1714    l_rec_acct_attrs.array_num_value(18)  := p_source_15;
1715 
1716    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1717    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1718 
1719    ---------------------------------------------------------------------------------------------------------------
1720    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1721    ---------------------------------------------------------------------------------------------------------------
1722    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1723 
1724    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1725    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1726 
1727    IF xla_accounting_cache_pkg.GetValueChar
1728          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1729          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1730    AND l_bflow_method_code = 'PRIOR_ENTRY'
1731 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1732    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1733          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1734        )
1735    THEN
1736          xla_ae_lines_pkg.BflowUpgEntry
1737            (p_business_method_code    => l_bflow_method_code
1738            ,p_business_class_code     => l_bflow_class_code
1739            ,p_balance_type            => l_balance_type_code);
1740    ELSE
1741       NULL;
1742 -- No business flow processing for business flow method of NONE.
1743    END IF;
1744 
1745    --
1746    -- call analytical criteria
1747    --
1748    
1749    --
1750    -- call description
1751    --
1752    -- No description or it is inherited.
1753    --
1754    -- call ADRs
1755    -- Bug 4922099
1756    --
1757    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1758         (NVL(l_actual_upg_option, 'N') = 'O') OR
1759         (NVL(l_enc_upg_option, 'N') = 'O')
1760       )
1761    THEN
1762    NULL;
1763    --
1764    --
1768          , p_ae_header_id             => l_ae_header_id 
1765    
1766   l_ccid := AcctDerRule_1(
1767            p_application_id           => p_application_id
1769 , p_source_1 => p_source_1
1770          , x_transaction_coa_id       => l_adr_transaction_coa_id
1771          , x_accounting_coa_id        => l_adr_accounting_coa_id
1772          , x_value_type_code          => l_adr_value_type_code
1773          , p_side                     => 'NA'
1774    );
1775 
1776    xla_ae_lines_pkg.set_ccid(
1777     p_code_combination_id          => l_ccid
1778   , p_value_type_code              => l_adr_value_type_code
1779   , p_transaction_coa_id           => l_adr_transaction_coa_id
1780   , p_accounting_coa_id            => l_adr_accounting_coa_id
1781   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
1782   , p_adr_type_code                => 'S'
1783   , p_component_type               => l_component_type
1784   , p_component_code               => l_component_code
1785   , p_component_type_code          => l_component_type_code
1786   , p_component_appl_id            => l_component_appl_id
1787   , p_amb_context_code             => l_amb_context_code
1788   , p_side                         => 'NA'
1789   );
1790 
1791 
1792    --
1793    --
1794    END IF;
1795    --
1796    -- Bug 4922099
1797    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1798           (NVL(l_enc_upg_option, 'N') = 'O')
1799         ) AND
1800         (l_bflow_method_code = 'PRIOR_ENTRY')
1801       )
1802    THEN
1803       IF
1804       --
1805       1 = 2
1806       --
1807       THEN
1808       xla_accounting_err_pkg.build_message
1809                                     (p_appli_s_name            => 'XLA'
1810                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1811                                     ,p_token_1                 => 'LINE_NUMBER'
1812                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1813                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1814                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1815                                                                              l_component_type
1816                                                                             ,l_component_code
1817                                                                             ,l_component_type_code
1818                                                                             ,l_component_appl_id
1819                                                                             ,l_amb_context_code
1820                                                                             ,l_entity_code
1821                                                                             ,l_event_class_code
1822                                                                            )
1823                                     ,p_token_3                 => 'OWNER'
1824                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1825                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1826                                                                           ,p_lookup_code    => l_component_type_code
1827                                                                          )
1828                                     ,p_token_4                 => 'PRODUCT_NAME'
1829                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1830                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1831                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1832                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1833                                     ,p_ae_header_id            =>  NULL
1834                                        );
1835 
1836         IF (C_LEVEL_ERROR>= g_log_level) THEN
1837                  trace
1838                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1839                       ,p_level    => C_LEVEL_ERROR
1840                       ,p_module   => l_log_module);
1841         END IF;
1842       END IF;
1843    END IF;
1844    --
1845    --
1846    ------------------------------------------------------------------------------------------------
1847    -- 4219869 Business Flow
1848    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1849    -- Prior Entry.  Currently, the following code is always generated.
1850    ------------------------------------------------------------------------------------------------
1851    XLA_AE_LINES_PKG.ValidateCurrentLine;
1852 
1853    ------------------------------------------------------------------------------------
1854    -- 4219869 Business Flow
1855    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1856    ------------------------------------------------------------------------------------
1857    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1858 
1859    ----------------------------------------------------------------------------------
1860    -- 4219869 Business Flow
1861    -- Update journal entry status -- Need to generate this within IF <condition>
1862    ----------------------------------------------------------------------------------
1863    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1867 
1864          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1865          ,p_balance_type_code => l_balance_type_code
1866          );
1868    -------------------------------------------------------------------------------------------
1869    -- 4262811 - Generate the Accrual Reversal lines
1870    -------------------------------------------------------------------------------------------
1871    BEGIN
1872       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1873                               (g_array_event(p_event_id).array_value_num('header_index'));
1874       IF l_acc_rev_flag IS NULL THEN
1875          l_acc_rev_flag := 'N';
1876       END IF;
1877    EXCEPTION
1878       WHEN OTHERS THEN
1879          l_acc_rev_flag := 'N';
1880    END;
1881    --
1882    IF (l_acc_rev_flag = 'Y') THEN
1883 
1884        -- 4645092  ------------------------------------------------------------------------------
1885        -- To allow MPA report to determine if it should generate report process
1886        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1887        ------------------------------------------------------------------------------------------
1888 
1889        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1890        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1891 
1892        --
1893        -- Update the line information that should be overwritten
1894        --
1895        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1896                                          p_header_num   => 1);
1897        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1898 
1899        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1900 
1901        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1902           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1903        END IF;
1904 
1905       --
1906       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1907       --
1908       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1909           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1910       ELSE
1911           ---------------------------------------------------------------------------------------------------
1912           -- 4262811a Switch Sign
1913           ---------------------------------------------------------------------------------------------------
1914           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1915           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1916                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1917           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1918                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1919           -- 5132302
1920           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1921                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1922 
1923       END IF;
1924 
1925       -- 4955764
1926       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1927       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1928 
1929 
1930       XLA_AE_LINES_PKG.ValidateCurrentLine;
1931       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1932 
1933       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1934                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1935                ,p_balance_type_code => l_balance_type_code);
1936 
1937    END IF;
1938 
1939    -----------------------------------------------------------------------------------------
1940    -- 4262811 Multiperiod Accounting
1941    -----------------------------------------------------------------------------------------
1942      -- No MPA option is assigned.
1943 
1944 
1945 END IF;
1946 END IF;
1947 --
1948 
1949 --
1950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1951    trace
1952       (p_msg      => 'END of AcctLineType_4'
1953       ,p_level    => C_LEVEL_PROCEDURE
1954       ,p_module   => l_log_module);
1955 END IF;
1956 --
1957 EXCEPTION
1958   WHEN xla_exceptions_pkg.application_exception THEN
1959       RAISE;
1960   WHEN OTHERS THEN
1961        xla_exceptions_pkg.raise_message
1962            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.AcctLineType_4');
1963 END AcctLineType_4;
1964 --
1965 
1966 ---------------------------------------
1967 --
1968 -- PRIVATE PROCEDURE
1969 --         insert_sources_5
1970 --
1971 ----------------------------------------
1972 --
1973 PROCEDURE insert_sources_5(
1974                                 p_target_ledger_id       IN NUMBER
1975                               , p_language               IN VARCHAR2
1976                               , p_sla_ledger_id          IN NUMBER
1977                               , p_pad_start_date         IN DATE
1978                               , p_pad_end_date           IN DATE
1979                          )
1980 IS
1981 
1985 l_log_module                   VARCHAR2(240);
1982 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
1983 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BUDGET';
1984 p_apps_owner                   VARCHAR2(30);
1986 BEGIN
1987 IF g_log_enabled THEN
1988       l_log_module := C_DEFAULT_MODULE||'.insert_sources_5';
1989 END IF;
1990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1991 
1992       trace
1993          (p_msg      => 'BEGIN of insert_sources_5'
1994          ,p_level    => C_LEVEL_PROCEDURE
1995          ,p_module   => l_log_module);
1996 
1997 END IF;
1998 
1999 -- select APPS owner
2000 SELECT oracle_username
2001   INTO p_apps_owner
2002   FROM fnd_oracle_userid
2003  WHERE read_only_flag = 'U'
2004 ;
2005 
2006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2007       trace
2008          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
2009                         ' - p_language = '||p_language||
2010                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
2011                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
2012                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
2013                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
2014          ,p_level    => C_LEVEL_STATEMENT
2015          ,p_module   => l_log_module);
2016 END IF;
2017 
2018 
2019 --
2020 INSERT INTO xla_diag_sources --hdr2
2021 (
2022         event_id
2023       , ledger_id
2024       , sla_ledger_id
2025       , description_language
2026       , object_name
2027       , object_type_code
2028       , line_number
2029       , source_application_id
2030       , source_type_code
2031       , source_code
2032       , source_value
2033       , source_meaning
2034       , created_by
2035       , creation_date
2036       , last_update_date
2037       , last_updated_by
2038       , last_update_login
2039       , program_update_date
2040       , program_application_id
2041       , program_id
2042       , request_id
2043 )
2044 SELECT
2045         event_id
2046       , p_target_ledger_id
2047       , p_sla_ledger_id
2048       , p_language
2049       , object_name
2050       , object_type_code
2051       , line_number
2052       , source_application_id
2053       , source_type_code
2054       , source_code
2055       , SUBSTR(source_value ,1,1996)
2056       , SUBSTR(source_meaning ,1,200)
2057       , xla_environment_pkg.g_Usr_Id
2058       , TRUNC(SYSDATE)
2059       , TRUNC(SYSDATE)
2060       , xla_environment_pkg.g_Usr_Id
2061       , xla_environment_pkg.g_Login_Id
2062       , TRUNC(SYSDATE)
2063       , xla_environment_pkg.g_Prog_Appl_Id
2064       , xla_environment_pkg.g_Prog_Id
2065       , xla_environment_pkg.g_Req_Id
2066   FROM (
2067        SELECT xet.event_id                  event_id
2068             , 0                          line_number
2069             , CASE r
2070                WHEN 1 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
2071                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
2072                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
2073                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
2074                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
2075                 
2076                ELSE null
2077               END                           object_name
2078             , CASE r
2079                 WHEN 1 THEN 'HEADER' 
2080                 WHEN 2 THEN 'HEADER' 
2081                 WHEN 3 THEN 'HEADER' 
2082                 WHEN 4 THEN 'HEADER' 
2083                 WHEN 5 THEN 'HEADER' 
2084                 
2085                 ELSE null
2086               END                           object_type_code
2087             , CASE r
2088                 WHEN 1 THEN '275' 
2089                 WHEN 2 THEN '275' 
2090                 WHEN 3 THEN '275' 
2091                 WHEN 4 THEN '275' 
2092                 WHEN 5 THEN '275' 
2093                 
2094                 ELSE null
2095               END                           source_application_id
2096             , 'S'             source_type_code
2097             , CASE r
2098                 WHEN 1 THEN 'BUDGET_AMOUNT_CODE' 
2099                 WHEN 2 THEN 'BC_BALANCE_TYPE' 
2100                 WHEN 3 THEN 'EXTERNAL_BUDGET_CODE' 
2101                 WHEN 4 THEN 'GL_BUDGET_VERSION_ID' 
2102                 WHEN 5 THEN 'GL_DATE' 
2103                 
2104                 ELSE null
2105               END                           source_code
2106             , CASE r
2107                 WHEN 1 THEN TO_CHAR(h1.BUDGET_AMOUNT_CODE)
2108                 WHEN 2 THEN TO_CHAR(h1.BC_BALANCE_TYPE)
2109                 WHEN 3 THEN TO_CHAR(h1.EXTERNAL_BUDGET_CODE)
2110                 WHEN 4 THEN TO_CHAR(h1.GL_BUDGET_VERSION_ID)
2111                 WHEN 5 THEN TO_CHAR(h1.GL_DATE)
2112                 
2113                 ELSE null
2114               END                           source_value
2115             , null              source_meaning
2116          FROM xla_events_gt     xet  
2117       , PA_XLA_BC_BUDGET_HEADER_V  h1
2118              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
2119          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
2120            AND xet.event_class_code = C_EVENT_CLASS_CODE
2121               AND h1.event_id = xet.event_id
2122 
2123 )
2124 ;
2125 --
2129          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
2126 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2127 
2128       trace
2130          ,p_level    => C_LEVEL_STATEMENT
2131          ,p_module   => l_log_module);
2132 
2133 END IF;
2134 --
2135 
2136 
2137 
2138 --
2139 INSERT INTO xla_diag_sources  --line2
2140 (
2141         event_id
2142       , ledger_id
2143       , sla_ledger_id
2144       , description_language
2145       , object_name
2146       , object_type_code
2147       , line_number
2148       , source_application_id
2149       , source_type_code
2150       , source_code
2151       , source_value
2152       , source_meaning
2153       , created_by
2154       , creation_date
2155       , last_update_date
2156       , last_updated_by
2157       , last_update_login
2158       , program_update_date
2159       , program_application_id
2160       , program_id
2161       , request_id
2162 )
2163 SELECT  event_id
2164       , p_target_ledger_id
2165       , p_sla_ledger_id
2166       , p_language
2167       , object_name
2168       , object_type_code
2169       , line_number
2170       , source_application_id
2171       , source_type_code
2172       , source_code
2173       , SUBSTR(source_value,1,1996)
2174       , SUBSTR(source_meaning ,1,200)
2175       , xla_environment_pkg.g_Usr_Id
2176       , TRUNC(SYSDATE)
2177       , TRUNC(SYSDATE)
2178       , xla_environment_pkg.g_Usr_Id
2179       , xla_environment_pkg.g_Login_Id
2180       , TRUNC(SYSDATE)
2181       , xla_environment_pkg.g_Prog_Appl_Id
2182       , xla_environment_pkg.g_Prog_Id
2183       , xla_environment_pkg.g_Req_Id
2184   FROM (
2185        SELECT xet.event_id                  event_id
2186             , l2.line_number                 line_number
2187             , CASE r
2188                WHEN 1 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2189                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2190                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2191                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2192                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2193                 WHEN 6 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2194                 WHEN 7 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2195                 WHEN 8 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2196                 WHEN 9 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2197                 WHEN 10 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2198                 WHEN 11 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2199                 WHEN 12 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2200                 WHEN 13 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
2201                 
2202                ELSE null
2203               END                           object_name
2204             , CASE r
2205                 WHEN 1 THEN 'LINE' 
2206                 WHEN 2 THEN 'LINE' 
2207                 WHEN 3 THEN 'LINE' 
2208                 WHEN 4 THEN 'LINE' 
2209                 WHEN 5 THEN 'LINE' 
2210                 WHEN 6 THEN 'LINE' 
2211                 WHEN 7 THEN 'LINE' 
2212                 WHEN 8 THEN 'LINE' 
2213                 WHEN 9 THEN 'LINE' 
2214                 WHEN 10 THEN 'LINE' 
2215                 WHEN 11 THEN 'LINE' 
2216                 WHEN 12 THEN 'LINE' 
2217                 WHEN 13 THEN 'LINE' 
2218                 
2219                 ELSE null
2220               END                           object_type_code
2221             , CASE r
2222                 WHEN 1 THEN '275' 
2223                 WHEN 2 THEN '275' 
2224                 WHEN 3 THEN '275' 
2225                 WHEN 4 THEN '275' 
2226                 WHEN 5 THEN '275' 
2227                 WHEN 6 THEN '275' 
2228                 WHEN 7 THEN '275' 
2229                 WHEN 8 THEN '275' 
2230                 WHEN 9 THEN '275' 
2231                 WHEN 10 THEN '275' 
2232                 WHEN 11 THEN '275' 
2233                 WHEN 12 THEN '275' 
2234                 WHEN 13 THEN '275' 
2235                 
2236                 ELSE null
2237               END                           source_application_id
2238             , 'S'             source_type_code
2239             , CASE r
2240                 WHEN 1 THEN 'BUDGET_CCID' 
2241                 WHEN 2 THEN 'REVERSING_LINE_FLAG' 
2242                 WHEN 3 THEN 'BUDGET_LINE_ID' 
2243                 WHEN 4 THEN 'LINE_TYPE' 
2244                 WHEN 5 THEN 'ENC_UPG_DR_ACCT_CLASS' 
2245                 WHEN 6 THEN 'ENTERED_AMOUNT' 
2246                 WHEN 7 THEN 'ENTERED_CURRENCY_CODE' 
2247                 WHEN 8 THEN 'ACCT_AMOUNT' 
2248                 WHEN 9 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
2249                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
2250                 WHEN 11 THEN 'EXCHANGE_RATE' 
2251                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
2252                 WHEN 13 THEN 'ENC_UPG_ENC_TYPE_ID' 
2253                 
2254                 ELSE null
2255               END                           source_code
2256             , CASE r
2257                 WHEN 1 THEN TO_CHAR(l2.BUDGET_CCID)
2258                 WHEN 2 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
2259                 WHEN 3 THEN TO_CHAR(l2.BUDGET_LINE_ID)
2260                 WHEN 4 THEN TO_CHAR(l2.LINE_TYPE)
2261                 WHEN 5 THEN TO_CHAR(l2.ENC_UPG_DR_ACCT_CLASS)
2262                 WHEN 6 THEN TO_CHAR(l2.ENTERED_AMOUNT)
2266                 WHEN 10 THEN TO_CHAR(l2.EXCHANGE_RATE_DATE)
2263                 WHEN 7 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
2264                 WHEN 8 THEN TO_CHAR(l2.ACCT_AMOUNT)
2265                 WHEN 9 THEN TO_CHAR(l2.USE_ENC_UPG_ATTRIB_FLAG)
2267                 WHEN 11 THEN TO_CHAR(l2.EXCHANGE_RATE)
2268                 WHEN 12 THEN TO_CHAR(l2.EXCHANGE_RATE_TYPE)
2269                 WHEN 13 THEN TO_CHAR(l2.ENC_UPG_ENC_TYPE_ID)
2270                 
2271                 ELSE null
2272               END                           source_value
2273             , CASE r
2274                 WHEN 4 THEN fvl6.meaning
2275                 
2276                 ELSE null
2277               END               source_meaning
2278          FROM  xla_events_gt     xet  
2279         , PA_XLA_BC_BUDGET_LINES_V  l2
2280   , fnd_lookup_values    fvl6
2281             , (select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
2282         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
2283           AND xet.event_class_code = C_EVENT_CLASS_CODE
2284             AND l2.event_id          = xet.event_id
2285    AND fvl6.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
2286   AND fvl6.lookup_code(+)         = l2.LINE_TYPE
2287   AND fvl6.view_application_id(+) = 275
2288   AND fvl6.language(+)            = USERENV('LANG')
2289   
2290 )
2291 ;
2292 --
2293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2294 
2295       trace
2296          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
2297          ,p_level    => C_LEVEL_STATEMENT
2298          ,p_module   => l_log_module);
2299 
2300 END IF;
2301 
2302 
2303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2304       trace
2305          (p_msg      => 'END of insert_sources_5'
2306          ,p_level    => C_LEVEL_PROCEDURE
2307          ,p_module   => l_log_module);
2308 END IF;
2309 EXCEPTION
2310   WHEN xla_exceptions_pkg.application_exception THEN
2311       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2312             trace
2313                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2314                ,p_level    => C_LEVEL_EXCEPTION
2315                ,p_module   => l_log_module);
2316       END IF;
2317       RAISE;
2318   WHEN OTHERS THEN
2319       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2320             trace
2321                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
2322                ,p_level    => C_LEVEL_EXCEPTION
2323                ,p_module   => l_log_module);
2324        END IF;
2325        xla_exceptions_pkg.raise_message
2326            (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.insert_sources_5');
2327 END insert_sources_5;
2328 --
2329 
2330 ---------------------------------------
2331 --
2332 -- PRIVATE FUNCTION
2333 --         EventClass_5
2334 --
2335 ----------------------------------------
2336 --
2337 FUNCTION EventClass_5
2338        (p_application_id         IN NUMBER
2339        ,p_base_ledger_id         IN NUMBER
2340        ,p_target_ledger_id       IN NUMBER
2341        ,p_language               IN VARCHAR2
2342        ,p_currency_code          IN VARCHAR2
2343        ,p_sla_ledger_id          IN NUMBER
2344        ,p_pad_start_date         IN DATE
2345        ,p_pad_end_date           IN DATE
2346        ,p_primary_ledger_id      IN NUMBER)
2347 RETURN BOOLEAN IS
2348 --
2349 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
2350 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BUDGET';
2351 
2352 l_calculate_acctd_flag   VARCHAR2(1) :='N';
2353 l_calculate_g_l_flag     VARCHAR2(1) :='N';
2354 --
2355 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2356 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2357 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2358 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2359 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2360 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2361 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2362 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2363 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2364 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2365 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2366 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2367 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2368 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
2369 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2370 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2371 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2372 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
2373 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2374 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2375 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2376 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
2377 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
2381 l_previous_event_id                    NUMBER;
2378 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
2379 
2380 l_event_id                             NUMBER;
2382 l_first_event_id                       NUMBER;
2383 l_last_event_id                        NUMBER;
2384 
2385 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
2386 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
2387 --
2388 --
2389 l_result                    BOOLEAN := TRUE;
2390 l_rows                      NUMBER  := 1000;
2391 l_event_type_name           VARCHAR2(80) := 'All';
2392 l_event_class_name          VARCHAR2(80) := 'Budget';
2393 l_description               VARCHAR2(4000);
2394 l_transaction_reversal      NUMBER;
2395 l_ae_header_id              NUMBER;
2396 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
2397 l_log_module                VARCHAR2(240);
2398 --
2399 l_acct_reversal_source      VARCHAR2(30);
2400 l_trx_reversal_source       VARCHAR2(30);
2401 
2402 l_continue_with_lines       BOOLEAN := TRUE;
2403 --
2404 l_acc_rev_gl_date_source    DATE;                      -- 4262811
2405 --
2406 type t_array_event_id is table of number index by binary_integer;
2407 
2408 l_rec_array_event                    t_rec_array_event;
2409 l_null_rec_array_event               t_rec_array_event;
2410 l_array_ae_header_id                 xla_number_array_type;
2411 l_actual_flag                        VARCHAR2(1) := NULL;
2412 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
2413 l_balance_type_code                  VARCHAR2(1) :=NULL;
2414 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
2415 
2416 --
2417 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
2418 --
2419 
2420 TYPE t_array_source_2 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BUDGET_AMOUNT_CODE%TYPE INDEX BY BINARY_INTEGER;
2421 TYPE t_array_source_3 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BC_BALANCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2422 TYPE t_array_source_16 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.EXTERNAL_BUDGET_CODE%TYPE INDEX BY BINARY_INTEGER;
2423 TYPE t_array_source_17 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_BUDGET_VERSION_ID%TYPE INDEX BY BINARY_INTEGER;
2424 TYPE t_array_source_18 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
2425 
2426 TYPE t_array_source_1 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
2427 TYPE t_array_source_4 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
2428 TYPE t_array_source_5 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
2429 TYPE t_array_source_6 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2430 TYPE t_array_source_7 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
2431 TYPE t_array_source_8 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
2432 TYPE t_array_source_9 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
2433 TYPE t_array_source_10 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
2434 TYPE t_array_source_11 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
2435 TYPE t_array_source_12 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
2436 TYPE t_array_source_13 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
2437 TYPE t_array_source_14 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
2438 TYPE t_array_source_15 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
2439 
2440 l_array_source_2              t_array_source_2;
2441 l_array_source_3              t_array_source_3;
2442 l_array_source_16              t_array_source_16;
2443 l_array_source_17              t_array_source_17;
2444 l_array_source_18              t_array_source_18;
2445 
2446 l_array_source_1      t_array_source_1;
2447 l_array_source_4      t_array_source_4;
2448 l_array_source_5      t_array_source_5;
2449 l_array_source_6      t_array_source_6;
2450 l_array_source_6_meaning      t_array_lookup_meaning;
2451 l_array_source_7      t_array_source_7;
2452 l_array_source_8      t_array_source_8;
2453 l_array_source_9      t_array_source_9;
2454 l_array_source_10      t_array_source_10;
2455 l_array_source_11      t_array_source_11;
2456 l_array_source_12      t_array_source_12;
2457 l_array_source_13      t_array_source_13;
2458 l_array_source_14      t_array_source_14;
2459 l_array_source_15      t_array_source_15;
2460 
2461 --
2462 CURSOR header_cur
2463 IS
2464 SELECT /*+ leading(xet) cardinality(xet,1) */
2465 -- Event Class Code: BUDGET
2466     xet.entity_id
2467    ,xet.legal_entity_id
2468    ,xet.entity_code
2469    ,xet.transaction_number
2470    ,xet.event_id
2471    ,xet.event_class_code
2472    ,xet.event_type_code
2473    ,xet.event_number
2474    ,xet.event_date
2475    ,xet.transaction_date
2476    ,xet.reference_num_1
2477    ,xet.reference_num_2
2478    ,xet.reference_num_3
2479    ,xet.reference_num_4
2480    ,xet.reference_char_1
2481    ,xet.reference_char_2
2482    ,xet.reference_char_3
2483    ,xet.reference_char_4
2484    ,xet.reference_date_1
2485    ,xet.reference_date_2
2486    ,xet.reference_date_3
2487    ,xet.reference_date_4
2488    ,xet.event_created_by
2489    ,xet.budgetary_control_flag 
2490   , h1.BUDGET_AMOUNT_CODE    source_2
2491   , h1.BC_BALANCE_TYPE    source_3
2495   FROM xla_events_gt     xet 
2492   , h1.EXTERNAL_BUDGET_CODE    source_16
2493   , h1.GL_BUDGET_VERSION_ID    source_17
2494   , h1.GL_DATE    source_18
2496   , PA_XLA_BC_BUDGET_HEADER_V  h1
2497  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
2498    and xet.event_class_code = C_EVENT_CLASS_CODE
2499    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
2500 
2501  ORDER BY event_id
2502 ;
2503 
2504 
2505 --
2506 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
2507 IS
2508 SELECT  /*+ leading(xet) cardinality(xet,1) */
2509 -- Event Class Code: BUDGET
2510     xet.entity_id
2511    ,xet.legal_entity_id
2512    ,xet.entity_code
2513    ,xet.transaction_number
2514    ,xet.event_id
2515    ,xet.event_class_code
2516    ,xet.event_type_code
2517    ,xet.event_number
2518    ,xet.event_date
2519    ,xet.transaction_date
2520    ,xet.reference_num_1
2521    ,xet.reference_num_2
2522    ,xet.reference_num_3
2523    ,xet.reference_num_4
2524    ,xet.reference_char_1
2525    ,xet.reference_char_2
2526    ,xet.reference_char_3
2527    ,xet.reference_char_4
2528    ,xet.reference_date_1
2529    ,xet.reference_date_2
2530    ,xet.reference_date_3
2531    ,xet.reference_date_4
2532    ,xet.event_created_by
2533    ,xet.budgetary_control_flag
2534  , l2.LINE_NUMBER  
2535   , l2.BUDGET_CCID    source_1
2536   , l2.REVERSING_LINE_FLAG    source_4
2537   , l2.BUDGET_LINE_ID    source_5
2538   , l2.LINE_TYPE    source_6
2539   , fvl6.meaning   source_6_meaning
2540   , l2.ENC_UPG_DR_ACCT_CLASS    source_7
2541   , l2.ENTERED_AMOUNT    source_8
2542   , l2.ENTERED_CURRENCY_CODE    source_9
2543   , l2.ACCT_AMOUNT    source_10
2544   , l2.USE_ENC_UPG_ATTRIB_FLAG    source_11
2545   , l2.EXCHANGE_RATE_DATE    source_12
2546   , l2.EXCHANGE_RATE    source_13
2547   , l2.EXCHANGE_RATE_TYPE    source_14
2548   , l2.ENC_UPG_ENC_TYPE_ID    source_15
2549   FROM xla_events_gt     xet 
2550   , PA_XLA_BC_BUDGET_LINES_V  l2
2551   , fnd_lookup_values    fvl6
2552  WHERE xet.event_id between x_first_event_id and x_last_event_id
2553    and xet.event_date between p_pad_start_date and p_pad_end_date
2554    and xet.event_class_code = C_EVENT_CLASS_CODE
2555    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
2556    AND fvl6.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
2557   AND fvl6.lookup_code(+)         = l2.LINE_TYPE
2558   AND fvl6.view_application_id(+) = 275
2559   AND fvl6.language(+)            = USERENV('LANG')
2560   ;
2561 
2562 --
2563 BEGIN
2564 IF g_log_enabled THEN
2565    l_log_module := C_DEFAULT_MODULE||'.EventClass_5';
2566 END IF;
2567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2568    trace
2569       (p_msg      => 'BEGIN of EventClass_5'
2570       ,p_level    => C_LEVEL_PROCEDURE
2571       ,p_module   => l_log_module);
2572 END IF;
2573 
2574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2575    trace
2576       (p_msg      => 'p_application_id = '||p_application_id||
2577                      ' - p_base_ledger_id = '||p_base_ledger_id||
2578                      ' - p_target_ledger_id  = '||p_target_ledger_id||
2579                      ' - p_language = '||p_language||
2580                      ' - p_currency_code = '||p_currency_code||
2581                      ' - p_sla_ledger_id = '||p_sla_ledger_id
2582       ,p_level    => C_LEVEL_STATEMENT
2583       ,p_module   => l_log_module);
2584 END IF;
2585 --
2586 -- initialze arrays
2587 --
2588 g_array_event.DELETE;
2589 l_rec_array_event := l_null_rec_array_event;
2590 --
2591 --------------------------------------
2592 -- 4262811 Initialze MPA Line Number
2593 --------------------------------------
2594 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
2595 
2596 --
2597 
2598 --
2599 OPEN header_cur;
2600 --
2601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2602    trace
2603    (p_msg      => 'SQL - FETCH header_cur'
2604    ,p_level    => C_LEVEL_STATEMENT
2605    ,p_module   => l_log_module);
2606 END IF;
2607 --
2608 LOOP
2609 FETCH header_cur BULK COLLECT INTO
2610         l_array_entity_id
2611       , l_array_legal_entity_id
2612       , l_array_entity_code
2613       , l_array_transaction_num
2614       , l_array_event_id
2615       , l_array_class_code
2616       , l_array_event_type
2617       , l_array_event_number
2618       , l_array_event_date
2619       , l_array_transaction_date
2620       , l_array_reference_num_1
2621       , l_array_reference_num_2
2622       , l_array_reference_num_3
2623       , l_array_reference_num_4
2624       , l_array_reference_char_1
2625       , l_array_reference_char_2
2626       , l_array_reference_char_3
2627       , l_array_reference_char_4
2628       , l_array_reference_date_1
2629       , l_array_reference_date_2
2630       , l_array_reference_date_3
2631       , l_array_reference_date_4
2632       , l_array_event_created_by
2633       , l_array_budgetary_control_flag 
2634       , l_array_source_2
2635       , l_array_source_3
2636       , l_array_source_16
2637       , l_array_source_17
2638       , l_array_source_18
2639       LIMIT l_rows;
2640 --
2641 IF (C_LEVEL_EVENT >= g_log_level) THEN
2642    trace
2643    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
2647 --
2644    ,p_level    => C_LEVEL_EVENT
2645    ,p_module   => l_log_module);
2646 END IF;
2648 EXIT WHEN l_array_entity_id.COUNT = 0;
2649 
2650 -- initialize arrays
2651 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
2652 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
2653 
2654 --
2655 -- Bug 4458708
2656 --
2657 XLA_AE_LINES_PKG.g_LineNumber := 0;
2658 
2659 
2660 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
2661 g_last_hdr_idx := l_array_event_id.LAST;
2662 --
2663 -- loop for the headers. Each iteration is for each header extract row
2664 -- fetched in header cursor
2665 --
2666 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
2667 
2668 --
2669 -- set event info as cache for other routines to refer event attributes
2670 --
2671 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
2672    (p_application_id           => p_application_id
2673    ,p_primary_ledger_id        => p_primary_ledger_id
2674    ,p_base_ledger_id           => p_base_ledger_id
2675    ,p_target_ledger_id         => p_target_ledger_id
2676    ,p_entity_id                => l_array_entity_id(hdr_idx)
2677    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
2678    ,p_entity_code              => l_array_entity_code(hdr_idx)
2679    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
2680    ,p_event_id                 => l_array_event_id(hdr_idx)
2681    ,p_event_class_code         => l_array_class_code(hdr_idx)
2682    ,p_event_type_code          => l_array_event_type(hdr_idx)
2683    ,p_event_number             => l_array_event_number(hdr_idx)
2684    ,p_event_date               => l_array_event_date(hdr_idx)
2685    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
2686    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
2687    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
2688    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
2689    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
2690    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
2691    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
2692    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
2693    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
2694    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
2695    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
2696    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
2697    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
2698    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
2699    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
2700 
2701 --
2702 -- set the status of entry to C_VALID (0)
2703 --
2704 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
2705 
2706 --
2707 -- initialize a row for ae header
2708 --
2709 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
2710 
2711 l_event_id := l_array_event_id(hdr_idx);
2712 
2713 --
2714 -- storing the hdr_idx for event. May be used by line cursor.
2715 --
2716 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
2717 
2718 --
2719 -- store sources from header extract. This can be improved to
2720 -- store only those sources from header extract that may be used in lines
2721 --
2722 
2723 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
2724 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
2725 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
2726 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
2727 g_array_event(l_event_id).array_value_date('source_18') := l_array_source_18(hdr_idx);
2728 
2729 --
2730 -- initilaize the status of ae headers for diffrent balance types
2731 -- the status is initialised to C_NOT_CREATED (2)
2732 --
2733 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2734 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2735 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
2736 
2737 --
2738 -- call api to validate and store accounting attributes for header
2739 --
2740 
2741 ------------------------------------------------------------
2742 -- Accrual Reversal : to get date for Standard Source (NONE)
2743 ------------------------------------------------------------
2744 l_acc_rev_gl_date_source := NULL;
2745 
2746      l_rec_acct_attrs.array_acct_attr_code(1)   := 'BUDGET_VERSION_ID';
2747       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_17');
2748      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
2749       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_18');
2750 
2751 
2752 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
2753 
2754 XLA_AE_HEADER_PKG.SetJeCategoryName;
2755 
2756 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
2757 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
2758 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
2762 
2759 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
2760 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
2761 
2763 -- No header level analytical criteria
2764 
2765 --
2766 --accounting attribute enhancement, bug 3612931
2767 --
2768 l_trx_reversal_source := SUBSTR(NULL, 1,30);
2769 
2770 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
2771    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2772 
2773    xla_accounting_err_pkg.build_message
2774       (p_appli_s_name            => 'XLA'
2775       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
2776       ,p_token_1                 => 'ACCT_ATTR_NAME'
2777       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
2778       ,p_token_2                 => 'PRODUCT_NAME'
2779       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
2780       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2781       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2782       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
2783 
2784 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
2785    --
2786    -- following sets the accounting attributes needed to reverse
2787    -- accounting for a distributeion
2788    --
2789    xla_ae_lines_pkg.SetTrxReversalAttrs
2790       (p_event_id              => l_event_id
2791       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
2792       ,p_trx_reversal_source   => l_trx_reversal_source);
2793 
2794 END IF;
2795 
2796 
2797 ----------------------------------------------------------------
2798 -- 4262811 -  update the header statuses to invalid in need be
2799 ----------------------------------------------------------------
2800 --
2801 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
2802 
2803 
2804   -----------------------------------------------
2805   -- No accrual reversal for the event class/type
2806   -----------------------------------------------
2807 ----------------------------------------------------------------
2808 
2809 --
2810 -- this ends the header loop iteration for one bulk fetch
2811 --
2812 END LOOP;
2813 
2814 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
2815 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
2816 
2817 --
2818 -- insert dummy rows into lines gt table that were created due to
2819 -- transaction reversals
2820 --
2821 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
2822    l_result := XLA_AE_LINES_PKG.InsertLines;
2823 END IF;
2824 
2825 --
2826 -- reset the temp_line_num for each set of events fetched from header
2827 -- cursor rather than doing it for each new event in line cursor
2828 -- Bug 3939231
2829 --
2830 xla_ae_lines_pkg.g_temp_line_num := 0;
2831 
2832 
2833 
2834 --
2835 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
2836 --
2837 --
2838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2839 
2840       trace
2841          (p_msg      => 'SQL - FETCH line_cur'
2842          ,p_level    => C_LEVEL_STATEMENT
2843          ,p_module   => l_log_module);
2844 
2845 END IF;
2846 --
2847 --
2848 LOOP
2849   --
2850   FETCH line_cur BULK COLLECT INTO
2851         l_array_entity_id
2852       , l_array_legal_entity_id
2853       , l_array_entity_code
2854       , l_array_transaction_num
2855       , l_array_event_id
2856       , l_array_class_code
2857       , l_array_event_type
2858       , l_array_event_number
2859       , l_array_event_date
2860       , l_array_transaction_date
2861       , l_array_reference_num_1
2862       , l_array_reference_num_2
2863       , l_array_reference_num_3
2864       , l_array_reference_num_4
2865       , l_array_reference_char_1
2866       , l_array_reference_char_2
2867       , l_array_reference_char_3
2868       , l_array_reference_char_4
2869       , l_array_reference_date_1
2870       , l_array_reference_date_2
2871       , l_array_reference_date_3
2872       , l_array_reference_date_4
2873       , l_array_event_created_by
2874       , l_array_budgetary_control_flag
2875       , l_array_extract_line_num 
2876       , l_array_source_1
2877       , l_array_source_4
2878       , l_array_source_5
2879       , l_array_source_6
2880       , l_array_source_6_meaning
2881       , l_array_source_7
2882       , l_array_source_8
2883       , l_array_source_9
2884       , l_array_source_10
2885       , l_array_source_11
2886       , l_array_source_12
2887       , l_array_source_13
2888       , l_array_source_14
2889       , l_array_source_15
2890       LIMIT l_rows;
2891 
2892   --
2893   IF (C_LEVEL_EVENT >= g_log_level) THEN
2894             trace
2895                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
2896                ,p_level    => C_LEVEL_EVENT
2897                ,p_module   => l_log_module);
2898   END IF;
2899   --
2900   EXIT WHEN l_array_entity_id.count = 0;
2901 
2902   XLA_AE_LINES_PKG.g_rec_lines := null;
2903 
2904 --
2908 --
2905 -- Bug 4458708
2906 --
2907 XLA_AE_LINES_PKG.g_LineNumber := 0;
2909 --
2910 
2911 FOR Idx IN 1..l_array_event_id.count LOOP
2912    --
2913    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
2914    --
2915    l_event_id := l_array_event_id(idx);  -- 5648433
2916 
2917    --
2918    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
2919    --
2920 
2921    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
2922              (g_array_event(l_event_id).array_value_num('header_index'))
2923          ,'N'
2924          ) <> 'Y'
2925    THEN
2926       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
2927          trace
2928             (p_msg      => 'Trancaction revesal option is not Y '
2929             ,p_level    => C_LEVEL_STATEMENT
2930             ,p_module   => l_log_module);
2931       END IF;
2932 
2933 --
2934 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
2935 --
2936 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
2937 --
2938 -- set event info as cache for other routines to refer event attributes
2939 --
2940 
2941 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
2942    l_previous_event_id := l_event_id;
2943 
2944    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
2945       (p_application_id           => p_application_id
2946       ,p_primary_ledger_id        => p_primary_ledger_id
2947       ,p_base_ledger_id           => p_base_ledger_id
2948       ,p_target_ledger_id         => p_target_ledger_id
2949       ,p_entity_id                => l_array_entity_id(Idx)
2950       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
2951       ,p_entity_code              => l_array_entity_code(Idx)
2952       ,p_transaction_num          => l_array_transaction_num(Idx)
2953       ,p_event_id                 => l_array_event_id(Idx)
2954       ,p_event_class_code         => l_array_class_code(Idx)
2955       ,p_event_type_code          => l_array_event_type(Idx)
2956       ,p_event_number             => l_array_event_number(Idx)
2957       ,p_event_date               => l_array_event_date(Idx)
2958       ,p_transaction_date         => l_array_transaction_date(Idx)
2959       ,p_reference_num_1          => l_array_reference_num_1(Idx)
2960       ,p_reference_num_2          => l_array_reference_num_2(Idx)
2961       ,p_reference_num_3          => l_array_reference_num_3(Idx)
2962       ,p_reference_num_4          => l_array_reference_num_4(Idx)
2963       ,p_reference_char_1         => l_array_reference_char_1(Idx)
2964       ,p_reference_char_2         => l_array_reference_char_2(Idx)
2965       ,p_reference_char_3         => l_array_reference_char_3(Idx)
2966       ,p_reference_char_4         => l_array_reference_char_4(Idx)
2967       ,p_reference_date_1         => l_array_reference_date_1(Idx)
2968       ,p_reference_date_2         => l_array_reference_date_2(Idx)
2969       ,p_reference_date_3         => l_array_reference_date_3(Idx)
2970       ,p_reference_date_4         => l_array_reference_date_4(Idx)
2971       ,p_event_created_by         => l_array_event_created_by(Idx)
2972       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
2973        --
2974 END IF;
2975 
2976 
2977 
2978 --
2979 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
2980 
2981 l_acct_reversal_source := SUBSTR(l_array_source_4(Idx), 1,30);
2982 
2983 IF l_continue_with_lines THEN
2984    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
2985       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2986 
2987       xla_accounting_err_pkg.build_message
2988          (p_appli_s_name            => 'XLA'
2989          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
2990          ,p_token_1                 => 'LINE_NUMBER'
2991          ,p_value_1                 => l_array_extract_line_num(Idx)
2992          ,p_token_2                 => 'PRODUCT_NAME'
2993          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
2994          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2995          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2996          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
2997 
2998    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
2999       --
3000       -- following sets the accounting attributes needed to reverse
3001       -- accounting for a distributeion
3002       --
3003 
3004       --
3005       -- 5217187
3006       --
3007       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
3008       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
3009                                        g_array_event(l_event_id).array_value_num('header_index'));
3010       --
3011       --
3012 
3013       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
3014       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_4(Idx);
3015       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
3016       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_5(Idx);
3017       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
3018       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_6(Idx);
3022       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_1(Idx);
3019       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_ACCT_CLASS';
3020       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_7(Idx);
3021       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_CCID';
3023       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_AMT';
3024       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_8(Idx);
3025       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_ENTERED_CURR';
3026       l_rec_rev_acct_attrs.array_char_value(8)  := l_array_source_9(Idx);
3027       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_LEDGER_AMT';
3028       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_10(Idx);
3029       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_OPTION';
3030       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_11(Idx);
3031       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID1';
3032       l_rec_rev_acct_attrs.array_num_value(11)  := l_array_source_5(Idx);
3033       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
3034       l_rec_rev_acct_attrs.array_char_value(12)  := l_array_source_6(Idx);
3035       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'UPG_DR_ENC_TYPE_ID';
3036       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_15(Idx);
3037 
3038 
3039       xla_ae_lines_pkg.SetAcctReversalAttrs
3040          (p_event_id             => l_event_id
3041          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
3042          ,p_calculate_acctd_flag => l_calculate_acctd_flag
3043          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
3044    END IF;
3045 
3046    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
3047        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
3048 
3049 --
3050 AcctLineType_2 (
3051  p_application_id  => p_application_id
3052  ,p_event_id     => l_event_id
3053  ,p_calculate_acctd_flag => l_calculate_acctd_flag
3054  ,p_calculate_g_l_flag => l_calculate_g_l_flag
3055  ,p_actual_flag => l_actual_flag
3056  ,p_balance_type_code => l_balance_type_code
3057  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3058  
3059  , p_source_1 => l_array_source_1(Idx)
3060  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
3061  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
3062  , p_source_4 => l_array_source_4(Idx)
3063  , p_source_5 => l_array_source_5(Idx)
3064  , p_source_6 => l_array_source_6(Idx)
3065  , p_source_6_meaning => l_array_source_6_meaning(Idx)
3066  , p_source_7 => l_array_source_7(Idx)
3067  , p_source_8 => l_array_source_8(Idx)
3068  , p_source_9 => l_array_source_9(Idx)
3069  , p_source_10 => l_array_source_10(Idx)
3070  , p_source_11 => l_array_source_11(Idx)
3071  , p_source_12 => l_array_source_12(Idx)
3072  , p_source_13 => l_array_source_13(Idx)
3073  , p_source_14 => l_array_source_14(Idx)
3074  , p_source_15 => l_array_source_15(Idx)
3075  );
3076 If(l_balance_type_code = 'A') THEN
3077   l_actual_gain_loss_ref := l_gain_or_loss_ref;
3078 END IF;
3079 
3080 --
3081 
3082 
3083 --
3084 AcctLineType_3 (
3085  p_application_id  => p_application_id
3086  ,p_event_id     => l_event_id
3087  ,p_calculate_acctd_flag => l_calculate_acctd_flag
3088  ,p_calculate_g_l_flag => l_calculate_g_l_flag
3089  ,p_actual_flag => l_actual_flag
3090  ,p_balance_type_code => l_balance_type_code
3091  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3092  
3093  , p_source_1 => l_array_source_1(Idx)
3094  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
3095  , p_source_4 => l_array_source_4(Idx)
3096  , p_source_5 => l_array_source_5(Idx)
3097  , p_source_6 => l_array_source_6(Idx)
3098  , p_source_6_meaning => l_array_source_6_meaning(Idx)
3099  , p_source_7 => l_array_source_7(Idx)
3100  , p_source_8 => l_array_source_8(Idx)
3101  , p_source_9 => l_array_source_9(Idx)
3102  , p_source_10 => l_array_source_10(Idx)
3103  , p_source_11 => l_array_source_11(Idx)
3104  , p_source_12 => l_array_source_12(Idx)
3105  , p_source_13 => l_array_source_13(Idx)
3106  , p_source_14 => l_array_source_14(Idx)
3107  , p_source_15 => l_array_source_15(Idx)
3108  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
3109  );
3110 If(l_balance_type_code = 'A') THEN
3111   l_actual_gain_loss_ref := l_gain_or_loss_ref;
3112 END IF;
3113 
3114 --
3115 
3116 
3117 --
3118 AcctLineType_4 (
3119  p_application_id  => p_application_id
3120  ,p_event_id     => l_event_id
3121  ,p_calculate_acctd_flag => l_calculate_acctd_flag
3122  ,p_calculate_g_l_flag => l_calculate_g_l_flag
3123  ,p_actual_flag => l_actual_flag
3124  ,p_balance_type_code => l_balance_type_code
3125  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
3126  
3127  , p_source_1 => l_array_source_1(Idx)
3128  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
3129  , p_source_4 => l_array_source_4(Idx)
3130  , p_source_5 => l_array_source_5(Idx)
3131  , p_source_6 => l_array_source_6(Idx)
3132  , p_source_6_meaning => l_array_source_6_meaning(Idx)
3133  , p_source_7 => l_array_source_7(Idx)
3134  , p_source_8 => l_array_source_8(Idx)
3135  , p_source_9 => l_array_source_9(Idx)
3136  , p_source_10 => l_array_source_10(Idx)
3137  , p_source_11 => l_array_source_11(Idx)
3138  , p_source_12 => l_array_source_12(Idx)
3139  , p_source_13 => l_array_source_13(Idx)
3140  , p_source_14 => l_array_source_14(Idx)
3144   l_actual_gain_loss_ref := l_gain_or_loss_ref;
3141  , p_source_15 => l_array_source_15(Idx)
3142  );
3143 If(l_balance_type_code = 'A') THEN
3145 END IF;
3146 
3147 --
3148 
3149       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
3150       -- or secondary ledger that has different currency with primary
3151       -- or alc that is calculated by sla
3152       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3153             (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code in ('ALC', 'SECONDARY') AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.calculate_amts_flag='Y'))
3154 
3155 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
3156 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
3157           AND (l_actual_flag = 'A')) THEN
3158         XLA_AE_LINES_PKG.CreateGainOrLossLines(
3159           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
3160          ,p_application_id   => p_application_id
3161          ,p_amb_context_code => 'DEFAULT'
3162          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
3163          ,p_event_class_code => C_EVENT_CLASS_CODE
3164          ,p_event_type_code  => C_EVENT_TYPE_CODE
3165          
3166          ,p_gain_ccid        => -1
3167          ,p_loss_ccid        => -1
3168 
3169          ,p_actual_flag      => l_actual_flag
3170          ,p_enc_flag         => null
3171          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
3172          ,p_enc_g_l_ref      => null
3173          );
3174       END IF;
3175    END IF;
3176 END IF;
3177 
3178    ELSE
3179       --
3180       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
3181       --
3182       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3183          trace
3184             (p_msg      => 'Trancaction revesal option is Y'
3185             ,p_level    => C_LEVEL_STATEMENT
3186             ,p_module   => l_log_module);
3187       END IF;
3188    END IF;
3189 
3190 END LOOP;
3191 l_result := XLA_AE_LINES_PKG.InsertLines ;
3192 end loop;
3193 close line_cur;
3194 
3195 
3196 --
3197 -- insert headers into xla_ae_headers_gt table
3198 --
3199 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
3200 
3201 -- insert into errors table here.
3202 
3203 END LOOP;
3204 
3205 --
3206 -- 4865292
3207 --
3208 -- Compare g_hdr_extract_count with event count in
3209 -- CreateHeadersAndLines.
3210 --
3211 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
3212 
3213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3214    trace (p_msg     => '# rows extracted from header extract objects '
3215                     || ' (running total): '
3216                     || g_hdr_extract_count
3217          ,p_level   => C_LEVEL_STATEMENT
3218          ,p_module  => l_log_module);
3219 END IF;
3220 
3221 CLOSE header_cur;
3222 --
3223 
3224 --
3225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3226    trace
3227       (p_msg      => 'END of EventClass_5'
3228       ,p_level    => C_LEVEL_PROCEDURE
3229       ,p_module   => l_log_module);
3230 END IF;
3231 --
3232 RETURN l_result;
3233 EXCEPTION
3234 WHEN xla_exceptions_pkg.application_exception THEN
3235    
3236 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
3237 
3238    
3239 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
3240 
3241    RAISE;
3242 WHEN OTHERS THEN
3243    xla_exceptions_pkg.raise_message
3244       (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.EventClass_5');
3245 END EventClass_5;
3246 --
3247 
3248 --
3249 --+============================================+
3250 --|                                            |
3251 --|  PRIVATE FUNCTION                          |
3252 --|                                            |
3253 --+============================================+
3254 --
3255 FUNCTION CreateHeadersAndLines
3256        (p_application_id         IN NUMBER
3257        ,p_base_ledger_id         IN NUMBER
3261        ,p_primary_ledger_id      IN NUMBER)
3258        ,p_target_ledger_id       IN NUMBER
3259        ,p_pad_start_date         IN DATE
3260        ,p_pad_end_date           IN DATE
3262 RETURN BOOLEAN IS
3263 l_created                   BOOLEAN:=FALSE;
3264 l_event_id                  NUMBER;
3265 l_event_date                DATE;
3266 l_language                  VARCHAR2(30);
3267 l_currency_code             VARCHAR2(30);
3268 l_sla_ledger_id             NUMBER;
3269 l_log_module                VARCHAR2(240);
3270 
3271 BEGIN
3272 --
3273 IF g_log_enabled THEN
3274    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
3275 END IF;
3276 --
3277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3278    trace
3279       (p_msg      => 'BEGIN of CreateHeadersAndLines'
3280       ,p_level    => C_LEVEL_PROCEDURE
3281       ,p_module   => l_log_module);
3282 END IF;
3283 
3284 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
3285 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
3286 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
3287 
3288 --
3289 -- initialize array of lines with NULL
3290 --
3291 xla_ae_lines_pkg.SetNullLine;
3292 
3293 --
3294 -- initialize header extract count -- Bug 4865292
3295 --
3296 g_hdr_extract_count:= 0;
3297 
3298 
3299 l_created := EventClass_5(
3300    p_application_id         => p_application_id
3301  , p_base_ledger_id         => p_base_ledger_id
3302  , p_target_ledger_id       => p_target_ledger_id
3303  , p_language               => l_language
3304  , p_currency_code          => l_currency_code
3305  , p_sla_ledger_id          => l_sla_ledger_id
3306  , p_pad_start_date         => p_pad_start_date
3307  , p_pad_end_date           => p_pad_end_date
3308  , p_primary_ledger_id      => p_primary_ledger_id
3309 );
3310 
3311 
3312 
3313      IF ( g_diagnostics_mode ='Y' ) THEN
3314 
3315          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3316           trace
3317               (p_msg      => 'CALL Transaction Objects Diagnostics'
3318               ,p_level    => C_LEVEL_STATEMENT
3319               ,p_module   => l_log_module);
3320 
3321          END IF;
3322 
3323          insert_sources_5(
3324                           p_target_ledger_id => p_target_ledger_id
3325                         , p_language         => l_language
3326                         , p_sla_ledger_id    => l_sla_ledger_id
3327                         , p_pad_start_date   => p_pad_start_date
3328                         , p_pad_end_date     => p_pad_end_date
3329                           );
3330 
3331      END IF;
3332 
3333 
3334  --
3335  -- Bug 4865292
3336  -- When the number of events and that of header extract do not match,
3337  -- set the no header extract flag to indicate there are some issues
3338  -- in header extract.
3339  --
3340  -- Event count context is set in xla_accounting_pkg.unit_processor.
3341  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
3342  -- to report it as a general error.
3343  --
3344  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
3345  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
3346 
3347      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3348         trace
3349           (p_msg      => '# of extracted headers and events does not match'
3350           ,p_level    => C_LEVEL_STATEMENT
3351           ,p_module   => l_log_module);
3352 
3353         trace
3354           (p_msg      => '# of extracted headers: '
3355                          ||g_hdr_extract_count
3356           ,p_level    => C_LEVEL_STATEMENT
3357           ,p_module   => l_log_module);
3358 
3359         trace
3360           (p_msg      => '# of events in xla_events_gt: '
3361                          ||xla_context_pkg.get_event_count_context
3362           ,p_level    => C_LEVEL_STATEMENT
3363           ,p_module   => l_log_module);
3364 
3365         trace
3366           (p_msg      => 'Event No Header Extract Context: '
3367                          ||xla_context_pkg.get_event_nohdr_context
3368           ,p_level    => C_LEVEL_STATEMENT
3369           ,p_module   => l_log_module);
3370 
3371      END IF;
3372 
3373 
3374      xla_context_pkg.set_event_nohdr_context
3375        (p_nohdr_extract_flag => 'Y'
3376        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
3377 
3378      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3379         trace
3380           (p_msg      => 'No Header Extract Flag is set to Y'
3381           ,p_level    => C_LEVEL_STATEMENT
3382           ,p_module   => l_log_module);
3383      END IF;
3384 
3385  END IF;
3386 
3387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3388    trace
3389       (p_msg      => 'END of CreateHeadersAndLines'
3390       ,p_level    => C_LEVEL_PROCEDURE
3391       ,p_module   => l_log_module);
3392 END IF;
3393 
3394 RETURN l_created;
3395 EXCEPTION
3396 WHEN xla_exceptions_pkg.application_exception THEN
3397    RAISE;
3398 WHEN OTHERS THEN
3399    xla_exceptions_pkg.raise_message
3400       (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.CreateHeadersAndLines');
3401 END CreateHeadersAndLines;
3402 --
3403 --
3404 
3405 --
3406 --+============================================+
3407 --|                                            |
3408 --|  PUBLIC FUNCTION                           |
3409 --|                                            |
3410 --+============================================+
3411 --
3412 FUNCTION CreateJournalEntries
3413        (p_application_id         IN NUMBER
3414        ,p_base_ledger_id         IN NUMBER
3418 RETURN NUMBER IS
3415        ,p_pad_start_date         IN DATE
3416        ,p_pad_end_date           IN DATE
3417        ,p_primary_ledger_id      IN NUMBER)
3419 l_log_module                   VARCHAR2(240);
3420 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
3421 l_temp_result                  BOOLEAN;
3422 l_result                       NUMBER;
3423 BEGIN
3424 --
3425 IF g_log_enabled THEN
3426    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
3427 END IF;
3428 --
3429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3430    trace
3431       (p_msg      => 'BEGIN of CreateJournalEntries'||
3432                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
3433       ,p_level    => C_LEVEL_PROCEDURE
3434       ,p_module   => l_log_module);
3435 
3436 END IF;
3437 
3438 --
3439 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
3440 
3441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
3442    trace
3443       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
3444       ,p_level    => C_LEVEL_STATEMENT
3445       ,p_module   => l_log_module);
3446 END IF;
3447 --
3448 xla_ae_journal_entry_pkg.SetProductAcctDefinition
3449    (p_product_rule_code      => 'PA_STANDARD_ACCOUNTING'
3450    ,p_product_rule_type_code => 'S'
3451    ,p_product_rule_version   => ''
3452    ,p_product_rule_name      => 'Projects Standard Accounting'
3453    ,p_amb_context_code       => 'DEFAULT'
3454    );
3455 
3456 l_array_ledgers :=
3457    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
3458       (p_base_ledger_id  => p_base_ledger_id);
3459 
3460 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
3461    l_temp_result :=
3462       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
3463          (p_application_id           => p_application_id
3464          ,p_base_ledger_id           => p_base_ledger_id
3465          ,p_target_ledger_id         => l_array_ledgers(Idx)
3466          ,p_primary_ledger_id        => p_primary_ledger_id
3467          ,p_pad_start_date           => p_pad_start_date
3468          ,p_pad_end_date             => p_pad_end_date);
3469 
3470    l_temp_result :=
3471       l_temp_result AND
3472       CreateHeadersAndLines
3473          (p_application_id             => p_application_id
3474          ,p_base_ledger_id             => p_base_ledger_id
3475          ,p_target_ledger_id           => l_array_ledgers(Idx)
3476          ,p_pad_start_date             => p_pad_start_date
3477          ,p_pad_end_date               => p_pad_end_date
3478          ,p_primary_ledger_id          => p_primary_ledger_id
3479          );
3480 END LOOP;
3481 
3482 
3483 IF (g_diagnostics_mode = 'Y' AND
3484     C_LEVEL_UNEXPECTED >= g_log_level AND
3485     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
3486 
3487    xla_accounting_dump_pkg.acctg_event_extract_log(
3488     p_application_id  => p_application_id
3489     ,p_request_id     => xla_environment_pkg.g_Req_Id
3490    );
3491 
3492 END IF;
3493 
3494 CASE l_temp_result
3495   WHEN TRUE THEN l_result := 0;
3496   ELSE l_result := 2;
3497 END CASE;
3498 
3499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3500    trace
3501       (p_msg      => 'return value. = '||TO_CHAR(l_result)
3502       ,p_level    => C_LEVEL_PROCEDURE
3503       ,p_module   => l_log_module);
3504    trace
3505       (p_msg      => 'END of CreateJournalEntries '
3506       ,p_level    => C_LEVEL_PROCEDURE
3507       ,p_module   => l_log_module);
3508 END IF;
3509 
3510 RETURN l_result;
3511 EXCEPTION
3512 WHEN xla_exceptions_pkg.application_exception THEN
3513    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3514    trace
3515       (p_msg      => 'ERROR. = '||sqlerrm
3516       ,p_level    => C_LEVEL_PROCEDURE
3517       ,p_module   => l_log_module);
3518    END IF;
3519    RAISE;
3520 WHEN OTHERS THEN
3521    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3522    trace
3523       (p_msg      => 'ERROR. = '||sqlerrm
3524       ,p_level    => C_LEVEL_PROCEDURE
3525       ,p_module   => l_log_module);
3526    END IF;
3527    xla_exceptions_pkg.raise_message
3528       (p_location => 'XLA_00275_AAD_S_000004_BC_PKG.CreateJournalEntries');
3529 END CreateJournalEntries;
3530 --
3531 --=============================================================================
3532 --
3533 --
3534 --
3535 --
3536 --
3537 --
3538 --
3539 --
3540 --
3541 --
3542 --
3543 --
3544 --
3545 --
3546 --
3547 --
3548 --
3549 --
3550 --
3551 --
3552 --
3553 --
3554 --=============================================================================
3555 --=============================================================================
3556 --          *********** Initialization routine **********
3557 --=============================================================================
3558 
3559 BEGIN
3560    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3561    g_log_enabled    := fnd_log.test
3562                           (log_level  => g_log_level
3563                           ,module     => C_DEFAULT_MODULE);
3564 
3565    IF NOT g_log_enabled  THEN
3566       g_log_level := C_LEVEL_LOG_DISABLED;
3567    END IF;
3568 --
3569 END XLA_00275_AAD_S_000004_BC_PKG;
3570 --