DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00707_AAD_S_000005_BC_PKG

Source


1 PACKAGE BODY XLA_00707_AAD_S_000005_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_00707_AAD_S_000005_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Cost Management Encumbrance Application Accounting Defi|
14 |      Code    : COST_MANAGEMENT_ENCUMBRANCE                            |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 05:03:44 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_00707_AAD_S_000005_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_00707_AAD_S_000005_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_00707_AAD_S_000005_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_00707_AAD_S_000005_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 --Cost Management Default Account
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         := 'CST_DEFAULT';
269 l_component_type_code    := 'S';
270 l_component_appl_id      :=  707;
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(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'
312                                                         )
309                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
310                                                         'XLA_OWNER_TYPE'
311                                                         ,l_component_type_code
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_00707_AAD_S_000005_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
345  ,p_calculate_g_l_flag    IN VARCHAR2
346  ,p_actual_flag           IN OUT VARCHAR2
347  ,p_balance_type_code     OUT VARCHAR2
348  ,p_gain_or_loss_ref      OUT VARCHAR2
349  
350 --Purchasing Encumbrance Flag
351  , p_source_2            IN VARCHAR2
352 --Reserved Flag
353  , p_source_3            IN VARCHAR2
354 --Organization Encumbrance Reversal Indicator
355  , p_source_4            IN VARCHAR2
356 --Accounting Line Type
357  , p_source_6            IN NUMBER
358 --Applied to Application ID
359  , p_source_7            IN NUMBER
360 --Applied to Distribution Link Type
361  , p_source_8            IN VARCHAR2
362 --Applied to Entity Code
363  , p_source_9            IN VARCHAR2
364 --TXN_PO_DISTRIBUTION_ID
365  , p_source_10            IN NUMBER
366 --Applied To Purchase Document Identifier
367  , p_source_11            IN NUMBER
368 --DISTRIBUTION_IDENTIFIER
369  , p_source_12            IN NUMBER
370 --Distribution Type
371  , p_source_13            IN VARCHAR2
372  , p_source_13_meaning    IN VARCHAR2
373 --PO Budget Account
374  , p_source_14            IN NUMBER
375 --Encumbrance Reversal Amount Entered
376  , p_source_15            IN NUMBER
377 --Entered Currency Code
378  , p_source_16            IN VARCHAR2
379 --Transaction Encumbrance Reversal Amount
380  , p_source_17            IN NUMBER
381 --Costing Encumbrance Upgrade Option
382  , p_source_18            IN VARCHAR2
383 --Purchasing Encumbrance Type Identifier
384  , p_source_19            IN NUMBER
385 )
386 IS
387 
388 l_component_type              VARCHAR2(80);
389 l_component_code              VARCHAR2(30);
390 l_component_type_code         VARCHAR2(1);
391 l_component_appl_id           INTEGER;
392 l_amb_context_code            VARCHAR2(30);
393 l_entity_code                 VARCHAR2(30);
394 l_event_class_code            VARCHAR2(30);
395 l_ae_header_id                NUMBER;
396 l_event_type_code             VARCHAR2(30);
397 l_line_definition_code        VARCHAR2(30);
398 l_line_definition_owner_code  VARCHAR2(1);
399 --
400 -- adr variables
401 l_segment                     VARCHAR2(30);
402 l_ccid                        NUMBER;
403 l_adr_transaction_coa_id      NUMBER;
404 l_adr_accounting_coa_id       NUMBER;
405 l_adr_flexfield_segment_code  VARCHAR2(30);
406 l_adr_flex_value_set_id       NUMBER;
407 l_adr_value_type_code         VARCHAR2(30);
408 l_adr_value_combination_id    NUMBER;
409 l_adr_value_segment_code      VARCHAR2(30);
410 
411 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
412 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
413 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
414 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
415 
416 -- 4262811 Variables ------------------------------------------------------------------------------------------
417 l_entered_amt_idx             NUMBER;
418 l_accted_amt_idx              NUMBER;
419 l_acc_rev_flag                VARCHAR2(1);
420 l_accrual_line_num            NUMBER;
421 l_tmp_amt                     NUMBER;
422 l_acc_rev_natural_side_code   VARCHAR2(1);
423 
424 l_num_entries                 NUMBER;
425 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
426 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
427 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
428 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
432 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
429 l_recog_line_1                NUMBER;
430 l_recog_line_2                NUMBER;
431 
433 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
434 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
435 
436 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
437 
438 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
439 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
440 
441 ---------------------------------------------------------------------------------------------------------------
442 
443 
444 --
445 -- bulk performance
446 --
447 l_balance_type_code           VARCHAR2(1);
448 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
449 l_log_module                  VARCHAR2(240);
450 
451 --
452 -- Upgrade strategy
453 --
454 l_actual_upg_option           VARCHAR2(1);
455 l_enc_upg_option           VARCHAR2(1);
456 
457 --
458 BEGIN
459 --
460 IF g_log_enabled THEN
461       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_2';
462 END IF;
463 --
464 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
465 
466       trace
467          (p_msg      => 'BEGIN of AcctLineType_2'
468          ,p_level    => C_LEVEL_PROCEDURE
469          ,p_module   => l_log_module);
470 
471 END IF;
472 --
473 l_component_type             := 'AMB_JLT';
474 l_component_code             := 'ADJUST_PO_ENC_DTI';
475 l_component_type_code        := 'S';
476 l_component_appl_id          :=  707;
477 l_amb_context_code           := 'DEFAULT';
478 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
479 l_event_class_code           := 'PURCHASE_ORDER';
480 l_event_type_code            := 'PURCHASE_ORDER_ALL';
481 l_line_definition_owner_code := 'S';
482 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_INV';
483 --
484 l_balance_type_code          := 'E';
485 l_segment                     := NULL;
486 l_ccid                        := NULL;
487 l_adr_transaction_coa_id      := NULL;
488 l_adr_accounting_coa_id       := NULL;
489 l_adr_flexfield_segment_code  := NULL;
490 l_adr_flex_value_set_id       := NULL;
491 l_adr_value_type_code         := NULL;
492 l_adr_value_combination_id    := NULL;
493 l_adr_value_segment_code      := NULL;
494 
495 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
496 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
497 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
498 l_budgetary_control_flag     := 'Y';
499 
500 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
501 l_bflow_applied_to_amt       := NULL; -- 5132302
502 l_entered_amt_idx            := NULL;          -- 4262811
503 l_accted_amt_idx             := NULL;          -- 4262811
504 l_acc_rev_flag               := NULL;          -- 4262811
505 l_accrual_line_num           := NULL;          -- 4262811
506 l_tmp_amt                    := NULL;          -- 4262811
507 --
508  
509 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
510     l_balance_type_code <> 'B' THEN
511 IF NVL(p_source_2,'
512 ') =  'Y' AND 
513 NVL(p_source_3,'
514 ') =  'Y' AND 
515 NVL(p_source_4,'
516 ') =  'Y' AND 
517 NVL(
518 xla_ae_sources_pkg.GetSystemSourceChar(
519    p_source_code           => 'XLA_EVENT_TYPE_CODE'
520  , p_source_type_code      => 'Y'
521  , p_source_application_id =>  602
522 ),'
523 ') =  'PO_DEL_ADJ' AND 
524 NVL(p_source_6,9E125) =  1
525  THEN 
526 
527    --
528    XLA_AE_LINES_PKG.SetNewLine;
529 
530    p_balance_type_code          := l_balance_type_code;
531    -- set the flag so later we will know whether the gain loss line needs to be created
532    
533    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
534      p_actual_flag :='A';
535    END IF;
536 
537    --
538    -- bulk performance
539    --
540    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
541                                       p_header_num   => 0); -- 4262811
542    --
543    -- set accounting line options
544    --
545    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
546            p_natural_side_code          => 'C'
547          , p_gain_or_loss_flag          => 'N'
548          , p_gl_transfer_mode_code      => 'S'
549          , p_acct_entry_type_code       => 'E'
550          , p_switch_side_flag           => 'Y'
551          , p_merge_duplicate_code       => 'N'
552          );
553    --
554    l_acc_rev_natural_side_code := 'D';  -- 4262811
555    -- 
556    --
557    -- set accounting line type info
558    --
559    xla_ae_lines_pkg.SetAcctLineType
560       (p_component_type             => l_component_type
561       ,p_event_type_code            => l_event_type_code
562       ,p_line_definition_owner_code => l_line_definition_owner_code
563       ,p_line_definition_code       => l_line_definition_code
564       ,p_accounting_line_code       => l_component_code
568       ,p_entity_code                => l_entity_code
565       ,p_accounting_line_type_code  => l_component_type_code
566       ,p_accounting_line_appl_id    => l_component_appl_id
567       ,p_amb_context_code           => l_amb_context_code
569       ,p_event_class_code           => l_event_class_code);
570    --
571    -- set accounting class
572    --
573    xla_ae_lines_pkg.SetAcctClass(
574            p_accounting_class_code  => 'PURCHASE_ORDER'
575          , p_ae_header_id           => l_ae_header_id
576          );
577 
578    --
579    -- set rounding class
580    --
581    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
582                       'PURCHASE_ORDER';
583 
584    --
585    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
586    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
587    --
588    -- bulk performance
589    --
590    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
591 
592    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
593       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
594 
595    -- 4955764
596    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
597       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
598 
599    -- 4458381 Public Sector Enh
600    
601    --
602    -- set accounting attributes for the line type
603    --
604    l_entered_amt_idx := 17;
605    l_accted_amt_idx  := 19;
606    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
607    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
608    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
609    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
610    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
611    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
612    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
613    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
614    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_10);
615    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
616    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
617    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
618    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
619    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
620    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
621    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
622    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
623    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
624    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
625    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
626    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
627    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
628    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
629    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
630    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
631    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
632    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
633    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
634    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
635    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
636    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
637    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
638    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
639    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
640    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
641    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
642    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
643    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
644    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
645    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
646    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
647    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
648    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
649 
650    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
651    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
652 
653    ---------------------------------------------------------------------------------------------------------------
654    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
655    ---------------------------------------------------------------------------------------------------------------
656    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
657 
658    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
659    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
660 
661    IF xla_accounting_cache_pkg.GetValueChar
662          (p_source_code         => 'LEDGER_CATEGORY_CODE'
666    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
663          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
664    AND l_bflow_method_code = 'PRIOR_ENTRY'
665 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
667          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
668        )
669    THEN
670          xla_ae_lines_pkg.BflowUpgEntry
671            (p_business_method_code    => l_bflow_method_code
672            ,p_business_class_code     => l_bflow_class_code
673            ,p_balance_type            => l_balance_type_code);
674    ELSE
675       NULL;
676 XLA_AE_LINES_PKG.business_flow_validation(
677                                 p_business_method_code     => l_bflow_method_code
678                                ,p_business_class_code      => l_bflow_class_code
679                                ,p_inherit_description_flag => l_inherit_desc_flag);
680    END IF;
681 
682    --
683    -- call analytical criteria
684    --
685    -- Inherited Analytical Criteria for business flow method of Prior Entry.
686    --
687    -- call description
688    --
689    -- No description or it is inherited.
690    --
691    -- call ADRs
692    -- Bug 4922099
693    --
694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
695         (NVL(l_actual_upg_option, 'N') = 'O') OR
696         (NVL(l_enc_upg_option, 'N') = 'O')
697       )
698    THEN
699    NULL;
700    --
701    --
702    
703    --
704    --
705    END IF;
706    --
707    -- Bug 4922099
708    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
709           (NVL(l_enc_upg_option, 'N') = 'O')
710         ) AND
711         (l_bflow_method_code = 'PRIOR_ENTRY')
712       )
713    THEN
714       IF
715       --
716       1 = 1
717       --
718       THEN
719       xla_accounting_err_pkg.build_message
720                                     (p_appli_s_name            => 'XLA'
721                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
722                                     ,p_token_1                 => 'LINE_NUMBER'
723                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
724                                     ,p_token_2                 => 'LINE_TYPE_NAME'
725                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
726                                                                              l_component_type
727                                                                             ,l_component_code
728                                                                             ,l_component_type_code
729                                                                             ,l_component_appl_id
730                                                                             ,l_amb_context_code
731                                                                             ,l_entity_code
732                                                                             ,l_event_class_code
733                                                                            )
734                                     ,p_token_3                 => 'OWNER'
735                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
736                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
737                                                                           ,p_lookup_code    => l_component_type_code
738                                                                          )
739                                     ,p_token_4                 => 'PRODUCT_NAME'
740                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
741                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
742                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
743                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
744                                     ,p_ae_header_id            =>  NULL
745                                        );
746 
747         IF (C_LEVEL_ERROR>= g_log_level) THEN
748                  trace
749                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
750                       ,p_level    => C_LEVEL_ERROR
751                       ,p_module   => l_log_module);
752         END IF;
753       END IF;
754    END IF;
755    --
756    --
757    ------------------------------------------------------------------------------------------------
758    -- 4219869 Business Flow
759    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
760    -- Prior Entry.  Currently, the following code is always generated.
761    ------------------------------------------------------------------------------------------------
762    -- No ValidateCurrentLine for business flow method of Prior Entry
763 
764    ------------------------------------------------------------------------------------
765    -- 4219869 Business Flow
766    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
770    ----------------------------------------------------------------------------------
767    ------------------------------------------------------------------------------------
768    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
769 
771    -- 4219869 Business Flow
772    -- Update journal entry status -- Need to generate this within IF <condition>
773    ----------------------------------------------------------------------------------
774    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
775          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
776          ,p_balance_type_code => l_balance_type_code
777          );
778 
779    -------------------------------------------------------------------------------------------
780    -- 4262811 - Generate the Accrual Reversal lines
781    -------------------------------------------------------------------------------------------
782    BEGIN
783       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
784                               (g_array_event(p_event_id).array_value_num('header_index'));
785       IF l_acc_rev_flag IS NULL THEN
786          l_acc_rev_flag := 'N';
787       END IF;
788    EXCEPTION
789       WHEN OTHERS THEN
790          l_acc_rev_flag := 'N';
791    END;
792    --
793    IF (l_acc_rev_flag = 'Y') THEN
794 
795        -- 4645092  ------------------------------------------------------------------------------
796        -- To allow MPA report to determine if it should generate report process
797        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
798        ------------------------------------------------------------------------------------------
799 
800        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
801        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
802    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
803    -- call ADRs
804    -- Bug 4922099
805    --
806    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
807         (NVL(l_actual_upg_option, 'N') = 'O') OR
808         (NVL(l_enc_upg_option, 'N') = 'O')
809       )
810    THEN
811    NULL;
812    --
813    --
814    
815    --
816    --
817    END IF;
818 
819        --
820        -- Update the line information that should be overwritten
821        --
822        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
823                                          p_header_num   => 1);
824        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
825 
826        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
827 
828        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
829           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
830        END IF;
831 
832       --
833       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
834       --
835       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
836           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
837       ELSE
838           ---------------------------------------------------------------------------------------------------
839           -- 4262811a Switch Sign
840           ---------------------------------------------------------------------------------------------------
841           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
842           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
843                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
844           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
845                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
846           -- 5132302
847           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
848                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
849 
850       END IF;
851 
852       -- 4955764
853       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
854       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
855 
856 
857       XLA_AE_LINES_PKG.ValidateCurrentLine;
858       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
859 
860       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
861                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
862                ,p_balance_type_code => l_balance_type_code);
863 
864    END IF;
865 
866    -----------------------------------------------------------------------------------------
867    -- 4262811 Multiperiod Accounting
868    -----------------------------------------------------------------------------------------
869      -- No MPA option is assigned.
870 
871 
872 END IF;
873 END IF;
874 --
875 
876 --
877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
878    trace
879       (p_msg      => 'END of AcctLineType_2'
880       ,p_level    => C_LEVEL_PROCEDURE
881       ,p_module   => l_log_module);
882 END IF;
883 --
884 EXCEPTION
888        xla_exceptions_pkg.raise_message
885   WHEN xla_exceptions_pkg.application_exception THEN
886       RAISE;
887   WHEN OTHERS THEN
889            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_2');
890 END AcctLineType_2;
891 --
892 
893 ---------------------------------------
894 --
895 -- PRIVATE FUNCTION
896 --         AcctLineType_3
897 --
898 ---------------------------------------
899 PROCEDURE AcctLineType_3 (
900   p_application_id        IN NUMBER
901  ,p_event_id              IN NUMBER
902  ,p_calculate_acctd_flag  IN VARCHAR2
903  ,p_calculate_g_l_flag    IN VARCHAR2
904  ,p_actual_flag           IN OUT VARCHAR2
905  ,p_balance_type_code     OUT VARCHAR2
906  ,p_gain_or_loss_ref      OUT VARCHAR2
907  
908 --Cost Management Default Account
909  , p_source_1            IN NUMBER
910 --Accounting Line Type
911  , p_source_6            IN NUMBER
912 --DISTRIBUTION_IDENTIFIER
913  , p_source_12            IN NUMBER
914 --Distribution Type
915  , p_source_13            IN VARCHAR2
916  , p_source_13_meaning    IN VARCHAR2
917 --Entered Currency Code
918  , p_source_16            IN VARCHAR2
919 --Entered Amount
920  , p_source_20            IN NUMBER
921 --Currency Conversion Date
922  , p_source_21            IN DATE
923 --Currency Conversion Rate
924  , p_source_22            IN NUMBER
925 --Currency Conversion Type
926  , p_source_23            IN VARCHAR2
927 --Accounted Amount
928  , p_source_24            IN NUMBER
929 )
930 IS
931 
932 l_component_type              VARCHAR2(80);
933 l_component_code              VARCHAR2(30);
934 l_component_type_code         VARCHAR2(1);
935 l_component_appl_id           INTEGER;
936 l_amb_context_code            VARCHAR2(30);
937 l_entity_code                 VARCHAR2(30);
938 l_event_class_code            VARCHAR2(30);
939 l_ae_header_id                NUMBER;
940 l_event_type_code             VARCHAR2(30);
941 l_line_definition_code        VARCHAR2(30);
942 l_line_definition_owner_code  VARCHAR2(1);
943 --
944 -- adr variables
945 l_segment                     VARCHAR2(30);
946 l_ccid                        NUMBER;
947 l_adr_transaction_coa_id      NUMBER;
948 l_adr_accounting_coa_id       NUMBER;
949 l_adr_flexfield_segment_code  VARCHAR2(30);
950 l_adr_flex_value_set_id       NUMBER;
951 l_adr_value_type_code         VARCHAR2(30);
952 l_adr_value_combination_id    NUMBER;
953 l_adr_value_segment_code      VARCHAR2(30);
954 
955 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
956 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
957 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
958 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
959 
960 -- 4262811 Variables ------------------------------------------------------------------------------------------
961 l_entered_amt_idx             NUMBER;
962 l_accted_amt_idx              NUMBER;
963 l_acc_rev_flag                VARCHAR2(1);
964 l_accrual_line_num            NUMBER;
965 l_tmp_amt                     NUMBER;
966 l_acc_rev_natural_side_code   VARCHAR2(1);
967 
968 l_num_entries                 NUMBER;
969 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
970 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
971 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
972 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
973 l_recog_line_1                NUMBER;
974 l_recog_line_2                NUMBER;
975 
976 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
977 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
978 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
979 
980 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
981 
982 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
983 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
984 
985 ---------------------------------------------------------------------------------------------------------------
986 
987 
988 --
989 -- bulk performance
990 --
991 l_balance_type_code           VARCHAR2(1);
992 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
993 l_log_module                  VARCHAR2(240);
994 
995 --
996 -- Upgrade strategy
997 --
998 l_actual_upg_option           VARCHAR2(1);
999 l_enc_upg_option           VARCHAR2(1);
1000 
1001 --
1002 BEGIN
1003 --
1004 IF g_log_enabled THEN
1005       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_3';
1006 END IF;
1007 --
1008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1009 
1010       trace
1011          (p_msg      => 'BEGIN of AcctLineType_3'
1012          ,p_level    => C_LEVEL_PROCEDURE
1013          ,p_module   => l_log_module);
1014 
1015 END IF;
1016 --
1017 l_component_type             := 'AMB_JLT';
1018 l_component_code             := 'INTERNAL_ORDER_ENC_RELIEVE';
1019 l_component_type_code        := 'S';
1020 l_component_appl_id          :=  707;
1024 l_event_type_code            := 'INT_ORDER_TO_EXP_ALL';
1021 l_amb_context_code           := 'DEFAULT';
1022 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
1023 l_event_class_code           := 'INT_ORDER_TO_EXP';
1025 l_line_definition_owner_code := 'S';
1026 l_line_definition_code       := 'INTERNAL_ORDER_ENC_RELIEVE';
1027 --
1028 l_balance_type_code          := 'E';
1029 l_segment                     := NULL;
1030 l_ccid                        := NULL;
1031 l_adr_transaction_coa_id      := NULL;
1032 l_adr_accounting_coa_id       := NULL;
1033 l_adr_flexfield_segment_code  := NULL;
1034 l_adr_flex_value_set_id       := NULL;
1035 l_adr_value_type_code         := NULL;
1036 l_adr_value_combination_id    := NULL;
1037 l_adr_value_segment_code      := NULL;
1038 
1039 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1040 l_bflow_class_code           := '';    -- 4219869 Business Flow
1041 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1042 l_budgetary_control_flag     := 'Y';
1043 
1044 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1045 l_bflow_applied_to_amt       := NULL; -- 5132302
1046 l_entered_amt_idx            := NULL;          -- 4262811
1047 l_accted_amt_idx             := NULL;          -- 4262811
1048 l_acc_rev_flag               := NULL;          -- 4262811
1049 l_accrual_line_num           := NULL;          -- 4262811
1050 l_tmp_amt                    := NULL;          -- 4262811
1051 --
1052  
1053 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1054     l_balance_type_code <> 'B' THEN
1055 IF NVL(p_source_6,9E125) =  15
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 ,
1072                                       p_header_num   => 0); -- 4262811
1073    --
1074    -- set accounting line options
1075    --
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  => 'REQUISITION'
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                       'REQUISITION';
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) := 1000;
1132    --
1133    -- set accounting attributes for the line type
1134    --
1135    l_entered_amt_idx := 3;
1136    l_accted_amt_idx  := 8;
1137    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1138    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1139    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_12);
1140    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1141    l_rec_acct_attrs.array_char_value(2)  := p_source_13;
1142    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1143    l_rec_acct_attrs.array_num_value(3)  := p_source_20;
1147    l_rec_acct_attrs.array_date_value(5)  := p_source_21;
1144    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1145    l_rec_acct_attrs.array_char_value(4)  := p_source_16;
1146    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1148    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1149    l_rec_acct_attrs.array_num_value(6)  := p_source_22;
1150    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1151    l_rec_acct_attrs.array_char_value(7)  := p_source_23;
1152    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1153    l_rec_acct_attrs.array_num_value(8)  := p_source_24;
1154 
1155    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1156    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1157 
1158    ---------------------------------------------------------------------------------------------------------------
1159    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1160    ---------------------------------------------------------------------------------------------------------------
1161    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1162 
1163    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1164    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1165 
1166    IF xla_accounting_cache_pkg.GetValueChar
1167          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1168          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1169    AND l_bflow_method_code = 'PRIOR_ENTRY'
1170 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1171    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1172          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1173        )
1174    THEN
1175          xla_ae_lines_pkg.BflowUpgEntry
1176            (p_business_method_code    => l_bflow_method_code
1177            ,p_business_class_code     => l_bflow_class_code
1178            ,p_balance_type            => l_balance_type_code);
1179    ELSE
1180       NULL;
1181 -- No business flow processing for business flow method of NONE.
1182    END IF;
1183 
1184    --
1185    -- call analytical criteria
1186    --
1187    
1188    --
1189    -- call description
1190    --
1191    -- No description or it is inherited.
1192    --
1193    -- call ADRs
1194    -- Bug 4922099
1195    --
1196    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1197         (NVL(l_actual_upg_option, 'N') = 'O') OR
1198         (NVL(l_enc_upg_option, 'N') = 'O')
1199       )
1200    THEN
1201    NULL;
1202    --
1203    --
1204    
1205   l_ccid := AcctDerRule_1(
1206            p_application_id           => p_application_id
1207          , p_ae_header_id             => l_ae_header_id 
1208 , p_source_1 => p_source_1
1209          , x_transaction_coa_id       => l_adr_transaction_coa_id
1210          , x_accounting_coa_id        => l_adr_accounting_coa_id
1211          , x_value_type_code          => l_adr_value_type_code
1212          , p_side                     => 'NA'
1213    );
1214 
1215    xla_ae_lines_pkg.set_ccid(
1216     p_code_combination_id          => l_ccid
1217   , p_value_type_code              => l_adr_value_type_code
1218   , p_transaction_coa_id           => l_adr_transaction_coa_id
1219   , p_accounting_coa_id            => l_adr_accounting_coa_id
1220   , p_adr_code                     => 'CST_DEFAULT'
1221   , p_adr_type_code                => 'S'
1222   , p_component_type               => l_component_type
1223   , p_component_code               => l_component_code
1224   , p_component_type_code          => l_component_type_code
1225   , p_component_appl_id            => l_component_appl_id
1226   , p_amb_context_code             => l_amb_context_code
1227   , p_side                         => 'NA'
1228   );
1229 
1230 
1231    --
1232    --
1233    END IF;
1234    --
1235    -- Bug 4922099
1236    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1237           (NVL(l_enc_upg_option, 'N') = 'O')
1238         ) AND
1239         (l_bflow_method_code = 'PRIOR_ENTRY')
1240       )
1241    THEN
1242       IF
1243       --
1244       1 = 2
1245       --
1246       THEN
1247       xla_accounting_err_pkg.build_message
1248                                     (p_appli_s_name            => 'XLA'
1249                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1250                                     ,p_token_1                 => 'LINE_NUMBER'
1251                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1252                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1253                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1254                                                                              l_component_type
1255                                                                             ,l_component_code
1256                                                                             ,l_component_type_code
1257                                                                             ,l_component_appl_id
1258                                                                             ,l_amb_context_code
1262                                     ,p_token_3                 => 'OWNER'
1259                                                                             ,l_entity_code
1260                                                                             ,l_event_class_code
1261                                                                            )
1263                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1264                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1265                                                                           ,p_lookup_code    => l_component_type_code
1266                                                                          )
1267                                     ,p_token_4                 => 'PRODUCT_NAME'
1268                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1269                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1270                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1271                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1272                                     ,p_ae_header_id            =>  NULL
1273                                        );
1274 
1275         IF (C_LEVEL_ERROR>= g_log_level) THEN
1276                  trace
1277                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1278                       ,p_level    => C_LEVEL_ERROR
1279                       ,p_module   => l_log_module);
1280         END IF;
1281       END IF;
1282    END IF;
1283    --
1284    --
1285    ------------------------------------------------------------------------------------------------
1286    -- 4219869 Business Flow
1287    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1288    -- Prior Entry.  Currently, the following code is always generated.
1289    ------------------------------------------------------------------------------------------------
1290    XLA_AE_LINES_PKG.ValidateCurrentLine;
1291 
1292    ------------------------------------------------------------------------------------
1293    -- 4219869 Business Flow
1294    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1295    ------------------------------------------------------------------------------------
1296    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1297 
1298    ----------------------------------------------------------------------------------
1299    -- 4219869 Business Flow
1300    -- Update journal entry status -- Need to generate this within IF <condition>
1301    ----------------------------------------------------------------------------------
1302    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1303          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1304          ,p_balance_type_code => l_balance_type_code
1305          );
1306 
1307    -------------------------------------------------------------------------------------------
1308    -- 4262811 - Generate the Accrual Reversal lines
1309    -------------------------------------------------------------------------------------------
1310    BEGIN
1311       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1312                               (g_array_event(p_event_id).array_value_num('header_index'));
1313       IF l_acc_rev_flag IS NULL THEN
1314          l_acc_rev_flag := 'N';
1315       END IF;
1316    EXCEPTION
1317       WHEN OTHERS THEN
1318          l_acc_rev_flag := 'N';
1319    END;
1320    --
1321    IF (l_acc_rev_flag = 'Y') THEN
1322 
1323        -- 4645092  ------------------------------------------------------------------------------
1324        -- To allow MPA report to determine if it should generate report process
1325        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1326        ------------------------------------------------------------------------------------------
1327 
1328        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1329        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1330    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
1331    -- call ADRs
1332    -- Bug 4922099
1333    --
1334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1335         (NVL(l_actual_upg_option, 'N') = 'O') OR
1336         (NVL(l_enc_upg_option, 'N') = 'O')
1337       )
1338    THEN
1339    NULL;
1340    --
1341    --
1342    
1343   l_ccid := AcctDerRule_1(
1344            p_application_id           => p_application_id
1345          , p_ae_header_id             => l_ae_header_id 
1346 , p_source_1 => p_source_1
1347          , x_transaction_coa_id       => l_adr_transaction_coa_id
1348          , x_accounting_coa_id        => l_adr_accounting_coa_id
1349          , x_value_type_code          => l_adr_value_type_code
1350          , p_side                     => 'NA'
1351    );
1352 
1353    xla_ae_lines_pkg.set_ccid(
1354     p_code_combination_id          => l_ccid
1355   , p_value_type_code              => l_adr_value_type_code
1356   , p_transaction_coa_id           => l_adr_transaction_coa_id
1357   , p_accounting_coa_id            => l_adr_accounting_coa_id
1358   , p_adr_code                     => 'CST_DEFAULT'
1359   , p_adr_type_code                => 'S'
1363   , p_component_appl_id            => l_component_appl_id
1360   , p_component_type               => l_component_type
1361   , p_component_code               => l_component_code
1362   , p_component_type_code          => l_component_type_code
1364   , p_amb_context_code             => l_amb_context_code
1365   , p_side                         => 'NA'
1366   );
1367 
1368 
1369    --
1370    --
1371    END IF;
1372 
1373        --
1374        -- Update the line information that should be overwritten
1375        --
1376        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1377                                          p_header_num   => 1);
1378        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1379 
1380        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1381 
1382        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1383           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1384        END IF;
1385 
1386       --
1387       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1388       --
1389       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1390           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1391       ELSE
1392           ---------------------------------------------------------------------------------------------------
1393           -- 4262811a Switch Sign
1394           ---------------------------------------------------------------------------------------------------
1395           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1396           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1397                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1398           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1399                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1400           -- 5132302
1401           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1402                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1403 
1404       END IF;
1405 
1406       -- 4955764
1407       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1409 
1410 
1411       XLA_AE_LINES_PKG.ValidateCurrentLine;
1412       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1413 
1414       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1415                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1416                ,p_balance_type_code => l_balance_type_code);
1417 
1418    END IF;
1419 
1420    -----------------------------------------------------------------------------------------
1421    -- 4262811 Multiperiod Accounting
1422    -----------------------------------------------------------------------------------------
1423      -- No MPA option is assigned.
1424 
1425 
1426 END IF;
1427 END IF;
1428 --
1429 
1430 --
1431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1432    trace
1433       (p_msg      => 'END of AcctLineType_3'
1434       ,p_level    => C_LEVEL_PROCEDURE
1435       ,p_module   => l_log_module);
1436 END IF;
1437 --
1438 EXCEPTION
1439   WHEN xla_exceptions_pkg.application_exception THEN
1440       RAISE;
1441   WHEN OTHERS THEN
1442        xla_exceptions_pkg.raise_message
1443            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_3');
1444 END AcctLineType_3;
1445 --
1446 
1447 ---------------------------------------
1448 --
1449 -- PRIVATE FUNCTION
1450 --         AcctLineType_4
1451 --
1452 ---------------------------------------
1453 PROCEDURE AcctLineType_4 (
1454   p_application_id        IN NUMBER
1455  ,p_event_id              IN NUMBER
1456  ,p_calculate_acctd_flag  IN VARCHAR2
1457  ,p_calculate_g_l_flag    IN VARCHAR2
1458  ,p_actual_flag           IN OUT VARCHAR2
1459  ,p_balance_type_code     OUT VARCHAR2
1460  ,p_gain_or_loss_ref      OUT VARCHAR2
1461  
1462 --Purchasing Encumbrance Flag
1463  , p_source_2            IN VARCHAR2
1464 --Organization Encumbrance Reversal Indicator
1465  , p_source_4            IN VARCHAR2
1466 --Applied to Application ID
1467  , p_source_7            IN NUMBER
1468 --Applied to Distribution Link Type
1469  , p_source_8            IN VARCHAR2
1470 --Applied to Entity Code
1471  , p_source_9            IN VARCHAR2
1472 --TXN_PO_DISTRIBUTION_ID
1473  , p_source_10            IN NUMBER
1474 --Applied To Purchase Document Identifier
1475  , p_source_11            IN NUMBER
1476 --DISTRIBUTION_IDENTIFIER
1477  , p_source_12            IN NUMBER
1478 --Distribution Type
1479  , p_source_13            IN VARCHAR2
1480  , p_source_13_meaning    IN VARCHAR2
1481 --PO Budget Account
1482  , p_source_14            IN NUMBER
1483 --Encumbrance Reversal Amount Entered
1484  , p_source_15            IN NUMBER
1485 --Entered Currency Code
1486  , p_source_16            IN VARCHAR2
1490  , p_source_18            IN VARCHAR2
1487 --Transaction Encumbrance Reversal Amount
1488  , p_source_17            IN NUMBER
1489 --Costing Encumbrance Upgrade Option
1491 --Purchasing Encumbrance Type Identifier
1492  , p_source_19            IN NUMBER
1493 )
1494 IS
1495 
1496 l_component_type              VARCHAR2(80);
1497 l_component_code              VARCHAR2(30);
1498 l_component_type_code         VARCHAR2(1);
1499 l_component_appl_id           INTEGER;
1500 l_amb_context_code            VARCHAR2(30);
1501 l_entity_code                 VARCHAR2(30);
1502 l_event_class_code            VARCHAR2(30);
1503 l_ae_header_id                NUMBER;
1504 l_event_type_code             VARCHAR2(30);
1505 l_line_definition_code        VARCHAR2(30);
1506 l_line_definition_owner_code  VARCHAR2(1);
1507 --
1508 -- adr variables
1509 l_segment                     VARCHAR2(30);
1510 l_ccid                        NUMBER;
1511 l_adr_transaction_coa_id      NUMBER;
1512 l_adr_accounting_coa_id       NUMBER;
1513 l_adr_flexfield_segment_code  VARCHAR2(30);
1514 l_adr_flex_value_set_id       NUMBER;
1515 l_adr_value_type_code         VARCHAR2(30);
1516 l_adr_value_combination_id    NUMBER;
1517 l_adr_value_segment_code      VARCHAR2(30);
1518 
1519 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1520 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1521 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1522 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1523 
1524 -- 4262811 Variables ------------------------------------------------------------------------------------------
1525 l_entered_amt_idx             NUMBER;
1526 l_accted_amt_idx              NUMBER;
1527 l_acc_rev_flag                VARCHAR2(1);
1528 l_accrual_line_num            NUMBER;
1529 l_tmp_amt                     NUMBER;
1530 l_acc_rev_natural_side_code   VARCHAR2(1);
1531 
1532 l_num_entries                 NUMBER;
1533 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1534 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1535 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1536 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1537 l_recog_line_1                NUMBER;
1538 l_recog_line_2                NUMBER;
1539 
1540 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1541 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1542 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1543 
1544 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1545 
1546 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1547 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1548 
1549 ---------------------------------------------------------------------------------------------------------------
1550 
1551 
1552 --
1553 -- bulk performance
1554 --
1555 l_balance_type_code           VARCHAR2(1);
1556 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1557 l_log_module                  VARCHAR2(240);
1558 
1559 --
1560 -- Upgrade strategy
1561 --
1562 l_actual_upg_option           VARCHAR2(1);
1563 l_enc_upg_option           VARCHAR2(1);
1564 
1565 --
1566 BEGIN
1567 --
1568 IF g_log_enabled THEN
1569       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
1570 END IF;
1571 --
1572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1573 
1574       trace
1575          (p_msg      => 'BEGIN of AcctLineType_4'
1576          ,p_level    => C_LEVEL_PROCEDURE
1577          ,p_module   => l_log_module);
1578 
1579 END IF;
1580 --
1581 l_component_type             := 'AMB_JLT';
1582 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
1583 l_component_type_code        := 'S';
1584 l_component_appl_id          :=  707;
1585 l_amb_context_code           := 'DEFAULT';
1586 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
1587 l_event_class_code           := 'PURCHASE_ORDER';
1588 l_event_type_code            := 'PURCHASE_ORDER_ALL';
1589 l_line_definition_owner_code := 'S';
1590 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_INV';
1591 --
1592 l_balance_type_code          := 'E';
1593 l_segment                     := NULL;
1594 l_ccid                        := NULL;
1595 l_adr_transaction_coa_id      := NULL;
1596 l_adr_accounting_coa_id       := NULL;
1597 l_adr_flexfield_segment_code  := NULL;
1598 l_adr_flex_value_set_id       := NULL;
1599 l_adr_value_type_code         := NULL;
1600 l_adr_value_combination_id    := NULL;
1601 l_adr_value_segment_code      := NULL;
1602 
1603 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
1604 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
1605 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
1606 l_budgetary_control_flag     := 'Y';
1607 
1608 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1609 l_bflow_applied_to_amt       := NULL; -- 5132302
1610 l_entered_amt_idx            := NULL;          -- 4262811
1611 l_accted_amt_idx             := NULL;          -- 4262811
1615 --
1612 l_acc_rev_flag               := NULL;          -- 4262811
1613 l_accrual_line_num           := NULL;          -- 4262811
1614 l_tmp_amt                    := NULL;          -- 4262811
1616  
1617 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1618     l_balance_type_code <> 'B' THEN
1619 IF NVL(p_source_2,'
1620 ') =  'Y' AND 
1621 NVL(p_source_4,'
1622 ') =  'Y' AND 
1623 NVL(
1624 xla_ae_sources_pkg.GetSystemSourceChar(
1625    p_source_code           => 'XLA_EVENT_TYPE_CODE'
1626  , p_source_type_code      => 'Y'
1627  , p_source_application_id =>  602
1628 ),'
1629 ') =  'RET_RI_INV'
1630  THEN 
1631 
1632    --
1633    XLA_AE_LINES_PKG.SetNewLine;
1634 
1635    p_balance_type_code          := l_balance_type_code;
1636    -- set the flag so later we will know whether the gain loss line needs to be created
1637    
1638    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1639      p_actual_flag :='A';
1640    END IF;
1641 
1642    --
1643    -- bulk performance
1644    --
1645    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1646                                       p_header_num   => 0); -- 4262811
1647    --
1648    -- set accounting line options
1649    --
1650    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1651            p_natural_side_code          => 'D'
1652          , p_gain_or_loss_flag          => 'N'
1653          , p_gl_transfer_mode_code      => 'S'
1654          , p_acct_entry_type_code       => 'E'
1655          , p_switch_side_flag           => 'N'
1656          , p_merge_duplicate_code       => 'N'
1657          );
1658    --
1659    l_acc_rev_natural_side_code := 'C';  -- 4262811
1660    -- 
1661    --
1662    -- set accounting line type info
1663    --
1664    xla_ae_lines_pkg.SetAcctLineType
1665       (p_component_type             => l_component_type
1666       ,p_event_type_code            => l_event_type_code
1667       ,p_line_definition_owner_code => l_line_definition_owner_code
1668       ,p_line_definition_code       => l_line_definition_code
1669       ,p_accounting_line_code       => l_component_code
1670       ,p_accounting_line_type_code  => l_component_type_code
1671       ,p_accounting_line_appl_id    => l_component_appl_id
1672       ,p_amb_context_code           => l_amb_context_code
1673       ,p_entity_code                => l_entity_code
1674       ,p_event_class_code           => l_event_class_code);
1675    --
1676    -- set accounting class
1677    --
1678    xla_ae_lines_pkg.SetAcctClass(
1679            p_accounting_class_code  => 'PURCHASE_ORDER'
1680          , p_ae_header_id           => l_ae_header_id
1681          );
1682 
1683    --
1684    -- set rounding class
1685    --
1686    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1687                       'PURCHASE_ORDER';
1688 
1689    --
1690    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1691    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1692    --
1693    -- bulk performance
1694    --
1695    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1696 
1697    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1698       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1699 
1700    -- 4955764
1701    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1702       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1703 
1704    -- 4458381 Public Sector Enh
1705    
1706    --
1707    -- set accounting attributes for the line type
1708    --
1709    l_entered_amt_idx := 17;
1710    l_accted_amt_idx  := 19;
1711    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1712    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
1713    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
1714    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
1715    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
1716    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
1717    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
1718    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
1719    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_10);
1720    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
1721    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
1722    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
1723    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
1724    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
1725    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
1726    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
1727    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
1728    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
1729    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
1730    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
1731    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
1732    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
1733    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
1737    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
1734    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
1735    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
1736    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
1738    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
1739    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
1740    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
1741    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
1742    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
1743    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
1744    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
1745    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
1746    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
1747    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
1748    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
1749    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
1750    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
1751    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
1752    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
1753    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
1754 
1755    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1756    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1757 
1758    ---------------------------------------------------------------------------------------------------------------
1759    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1760    ---------------------------------------------------------------------------------------------------------------
1761    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1762 
1763    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1764    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1765 
1766    IF xla_accounting_cache_pkg.GetValueChar
1767          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1768          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1769    AND l_bflow_method_code = 'PRIOR_ENTRY'
1770 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1771    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1772          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1773        )
1774    THEN
1775          xla_ae_lines_pkg.BflowUpgEntry
1776            (p_business_method_code    => l_bflow_method_code
1777            ,p_business_class_code     => l_bflow_class_code
1778            ,p_balance_type            => l_balance_type_code);
1779    ELSE
1780       NULL;
1781 XLA_AE_LINES_PKG.business_flow_validation(
1782                                 p_business_method_code     => l_bflow_method_code
1783                                ,p_business_class_code      => l_bflow_class_code
1784                                ,p_inherit_description_flag => l_inherit_desc_flag);
1785    END IF;
1786 
1787    --
1788    -- call analytical criteria
1789    --
1790    -- Inherited Analytical Criteria for business flow method of Prior Entry.
1791    --
1792    -- call description
1793    --
1794    -- No description or it is inherited.
1795    --
1796    -- call ADRs
1797    -- Bug 4922099
1798    --
1799    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1800         (NVL(l_actual_upg_option, 'N') = 'O') OR
1801         (NVL(l_enc_upg_option, 'N') = 'O')
1802       )
1803    THEN
1804    NULL;
1805    --
1806    --
1807    
1808    --
1809    --
1810    END IF;
1811    --
1812    -- Bug 4922099
1813    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1814           (NVL(l_enc_upg_option, 'N') = 'O')
1815         ) AND
1816         (l_bflow_method_code = 'PRIOR_ENTRY')
1817       )
1818    THEN
1819       IF
1820       --
1821       1 = 1
1822       --
1823       THEN
1824       xla_accounting_err_pkg.build_message
1825                                     (p_appli_s_name            => 'XLA'
1826                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1827                                     ,p_token_1                 => 'LINE_NUMBER'
1828                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1829                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1830                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1831                                                                              l_component_type
1832                                                                             ,l_component_code
1833                                                                             ,l_component_type_code
1834                                                                             ,l_component_appl_id
1835                                                                             ,l_amb_context_code
1836                                                                             ,l_entity_code
1837                                                                             ,l_event_class_code
1841                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1838                                                                            )
1839                                     ,p_token_3                 => 'OWNER'
1840                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1842                                                                           ,p_lookup_code    => l_component_type_code
1843                                                                          )
1844                                     ,p_token_4                 => 'PRODUCT_NAME'
1845                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1846                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1847                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1848                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1849                                     ,p_ae_header_id            =>  NULL
1850                                        );
1851 
1852         IF (C_LEVEL_ERROR>= g_log_level) THEN
1853                  trace
1854                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1855                       ,p_level    => C_LEVEL_ERROR
1856                       ,p_module   => l_log_module);
1857         END IF;
1858       END IF;
1859    END IF;
1860    --
1861    --
1862    ------------------------------------------------------------------------------------------------
1863    -- 4219869 Business Flow
1864    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1865    -- Prior Entry.  Currently, the following code is always generated.
1866    ------------------------------------------------------------------------------------------------
1867    -- No ValidateCurrentLine for business flow method of Prior Entry
1868 
1869    ------------------------------------------------------------------------------------
1870    -- 4219869 Business Flow
1871    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1872    ------------------------------------------------------------------------------------
1873    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1874 
1875    ----------------------------------------------------------------------------------
1876    -- 4219869 Business Flow
1877    -- Update journal entry status -- Need to generate this within IF <condition>
1878    ----------------------------------------------------------------------------------
1879    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1880          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1881          ,p_balance_type_code => l_balance_type_code
1882          );
1883 
1884    -------------------------------------------------------------------------------------------
1885    -- 4262811 - Generate the Accrual Reversal lines
1886    -------------------------------------------------------------------------------------------
1887    BEGIN
1888       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1889                               (g_array_event(p_event_id).array_value_num('header_index'));
1890       IF l_acc_rev_flag IS NULL THEN
1891          l_acc_rev_flag := 'N';
1892       END IF;
1893    EXCEPTION
1894       WHEN OTHERS THEN
1895          l_acc_rev_flag := 'N';
1896    END;
1897    --
1898    IF (l_acc_rev_flag = 'Y') THEN
1899 
1900        -- 4645092  ------------------------------------------------------------------------------
1901        -- To allow MPA report to determine if it should generate report process
1902        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1903        ------------------------------------------------------------------------------------------
1904 
1905        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1906        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1907    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
1908    -- call ADRs
1909    -- Bug 4922099
1910    --
1911    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1912         (NVL(l_actual_upg_option, 'N') = 'O') OR
1913         (NVL(l_enc_upg_option, 'N') = 'O')
1914       )
1915    THEN
1916    NULL;
1917    --
1918    --
1919    
1920    --
1921    --
1922    END IF;
1923 
1924        --
1925        -- Update the line information that should be overwritten
1926        --
1927        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1928                                          p_header_num   => 1);
1929        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1930 
1931        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1932 
1933        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1934           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1935        END IF;
1936 
1937       --
1938       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1939       --
1940       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1941           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1942       ELSE
1946           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1943           ---------------------------------------------------------------------------------------------------
1944           -- 4262811a Switch Sign
1945           ---------------------------------------------------------------------------------------------------
1947           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1948                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1949           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1950                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1951           -- 5132302
1952           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1953                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1954 
1955       END IF;
1956 
1957       -- 4955764
1958       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1960 
1961 
1962       XLA_AE_LINES_PKG.ValidateCurrentLine;
1963       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1964 
1965       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1966                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1967                ,p_balance_type_code => l_balance_type_code);
1968 
1969    END IF;
1970 
1971    -----------------------------------------------------------------------------------------
1972    -- 4262811 Multiperiod Accounting
1973    -----------------------------------------------------------------------------------------
1974      -- No MPA option is assigned.
1975 
1976 
1977 END IF;
1978 END IF;
1979 --
1980 
1981 --
1982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1983    trace
1984       (p_msg      => 'END of AcctLineType_4'
1985       ,p_level    => C_LEVEL_PROCEDURE
1986       ,p_module   => l_log_module);
1987 END IF;
1988 --
1989 EXCEPTION
1990   WHEN xla_exceptions_pkg.application_exception THEN
1991       RAISE;
1992   WHEN OTHERS THEN
1993        xla_exceptions_pkg.raise_message
1994            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_4');
1995 END AcctLineType_4;
1996 --
1997 
1998 ---------------------------------------
1999 --
2000 -- PRIVATE FUNCTION
2001 --         AcctLineType_5
2002 --
2003 ---------------------------------------
2004 PROCEDURE AcctLineType_5 (
2005   p_application_id        IN NUMBER
2006  ,p_event_id              IN NUMBER
2007  ,p_calculate_acctd_flag  IN VARCHAR2
2008  ,p_calculate_g_l_flag    IN VARCHAR2
2009  ,p_actual_flag           IN OUT VARCHAR2
2010  ,p_balance_type_code     OUT VARCHAR2
2011  ,p_gain_or_loss_ref      OUT VARCHAR2
2012  
2013 --Purchasing Encumbrance Flag
2014  , p_source_2            IN VARCHAR2
2015 --Applied to Application ID
2016  , p_source_7            IN NUMBER
2017 --Applied to Distribution Link Type
2018  , p_source_8            IN VARCHAR2
2019 --Applied to Entity Code
2020  , p_source_9            IN VARCHAR2
2021 --Applied To Purchase Document Identifier
2022  , p_source_11            IN NUMBER
2023 --DISTRIBUTION_IDENTIFIER
2024  , p_source_12            IN NUMBER
2025 --Distribution Type
2026  , p_source_13            IN VARCHAR2
2027  , p_source_13_meaning    IN VARCHAR2
2028 --PO Budget Account
2029  , p_source_14            IN NUMBER
2030 --Encumbrance Reversal Amount Entered
2031  , p_source_15            IN NUMBER
2032 --Entered Currency Code
2033  , p_source_16            IN VARCHAR2
2034 --Transaction Encumbrance Reversal Amount
2035  , p_source_17            IN NUMBER
2036 --Costing Encumbrance Upgrade Option
2037  , p_source_18            IN VARCHAR2
2038 --Purchasing Encumbrance Type Identifier
2039  , p_source_19            IN NUMBER
2040 --Receiving Accounting Line Type
2041  , p_source_25            IN VARCHAR2
2042 --PO_DISTRIBUTION_ID
2043  , p_source_26            IN NUMBER
2044 )
2045 IS
2046 
2047 l_component_type              VARCHAR2(80);
2048 l_component_code              VARCHAR2(30);
2049 l_component_type_code         VARCHAR2(1);
2050 l_component_appl_id           INTEGER;
2051 l_amb_context_code            VARCHAR2(30);
2052 l_entity_code                 VARCHAR2(30);
2053 l_event_class_code            VARCHAR2(30);
2054 l_ae_header_id                NUMBER;
2055 l_event_type_code             VARCHAR2(30);
2056 l_line_definition_code        VARCHAR2(30);
2057 l_line_definition_owner_code  VARCHAR2(1);
2058 --
2059 -- adr variables
2060 l_segment                     VARCHAR2(30);
2061 l_ccid                        NUMBER;
2062 l_adr_transaction_coa_id      NUMBER;
2063 l_adr_accounting_coa_id       NUMBER;
2064 l_adr_flexfield_segment_code  VARCHAR2(30);
2065 l_adr_flex_value_set_id       NUMBER;
2066 l_adr_value_type_code         VARCHAR2(30);
2067 l_adr_value_combination_id    NUMBER;
2068 l_adr_value_segment_code      VARCHAR2(30);
2069 
2070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2075 -- 4262811 Variables ------------------------------------------------------------------------------------------
2072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2074 
2076 l_entered_amt_idx             NUMBER;
2077 l_accted_amt_idx              NUMBER;
2078 l_acc_rev_flag                VARCHAR2(1);
2079 l_accrual_line_num            NUMBER;
2080 l_tmp_amt                     NUMBER;
2081 l_acc_rev_natural_side_code   VARCHAR2(1);
2082 
2083 l_num_entries                 NUMBER;
2084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2088 l_recog_line_1                NUMBER;
2089 l_recog_line_2                NUMBER;
2090 
2091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2094 
2095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2096 
2097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2099 
2100 ---------------------------------------------------------------------------------------------------------------
2101 
2102 
2103 --
2104 -- bulk performance
2105 --
2106 l_balance_type_code           VARCHAR2(1);
2107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2108 l_log_module                  VARCHAR2(240);
2109 
2110 --
2111 -- Upgrade strategy
2112 --
2113 l_actual_upg_option           VARCHAR2(1);
2114 l_enc_upg_option           VARCHAR2(1);
2115 
2116 --
2117 BEGIN
2118 --
2119 IF g_log_enabled THEN
2120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
2121 END IF;
2122 --
2123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2124 
2125       trace
2126          (p_msg      => 'BEGIN of AcctLineType_5'
2127          ,p_level    => C_LEVEL_PROCEDURE
2128          ,p_module   => l_log_module);
2129 
2130 END IF;
2131 --
2132 l_component_type             := 'AMB_JLT';
2133 l_component_code             := 'REINSTATE_PO_ENC_ON_RTR';
2134 l_component_type_code        := 'S';
2135 l_component_appl_id          :=  707;
2136 l_amb_context_code           := 'DEFAULT';
2137 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
2138 l_event_class_code           := 'DELIVER_EXPENSE';
2139 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
2140 l_line_definition_owner_code := 'S';
2141 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_EXP';
2142 --
2143 l_balance_type_code          := 'E';
2144 l_segment                     := NULL;
2145 l_ccid                        := NULL;
2146 l_adr_transaction_coa_id      := NULL;
2147 l_adr_accounting_coa_id       := NULL;
2148 l_adr_flexfield_segment_code  := NULL;
2149 l_adr_flex_value_set_id       := NULL;
2150 l_adr_value_type_code         := NULL;
2151 l_adr_value_combination_id    := NULL;
2152 l_adr_value_segment_code      := NULL;
2153 
2154 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2155 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
2156 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2157 l_budgetary_control_flag     := 'Y';
2158 
2159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2160 l_bflow_applied_to_amt       := NULL; -- 5132302
2161 l_entered_amt_idx            := NULL;          -- 4262811
2162 l_accted_amt_idx             := NULL;          -- 4262811
2163 l_acc_rev_flag               := NULL;          -- 4262811
2164 l_accrual_line_num           := NULL;          -- 4262811
2165 l_tmp_amt                    := NULL;          -- 4262811
2166 --
2167  
2168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2169     l_balance_type_code <> 'B' THEN
2170 IF NVL(p_source_2,'
2171 ') =  'Y' AND 
2172 NVL(
2173 xla_ae_sources_pkg.GetSystemSourceChar(
2174    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2175  , p_source_type_code      => 'Y'
2176  , p_source_application_id =>  602
2177 ),'
2178 ') =  'RETURN_TO_RECEIVING' AND 
2179 NVL(p_source_25,'
2180 ') =  'Charge'
2181  THEN 
2182 
2183    --
2184    XLA_AE_LINES_PKG.SetNewLine;
2185 
2186    p_balance_type_code          := l_balance_type_code;
2187    -- set the flag so later we will know whether the gain loss line needs to be created
2188    
2189    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2190      p_actual_flag :='A';
2191    END IF;
2192 
2193    --
2194    -- bulk performance
2195    --
2196    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2197                                       p_header_num   => 0); -- 4262811
2198    --
2199    -- set accounting line options
2200    --
2201    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2202            p_natural_side_code          => 'D'
2206          , p_switch_side_flag           => 'Y'
2203          , p_gain_or_loss_flag          => 'N'
2204          , p_gl_transfer_mode_code      => 'S'
2205          , p_acct_entry_type_code       => 'E'
2207          , p_merge_duplicate_code       => 'N'
2208          );
2209    --
2210    l_acc_rev_natural_side_code := 'C';  -- 4262811
2211    -- 
2212    --
2213    -- set accounting line type info
2214    --
2215    xla_ae_lines_pkg.SetAcctLineType
2216       (p_component_type             => l_component_type
2217       ,p_event_type_code            => l_event_type_code
2218       ,p_line_definition_owner_code => l_line_definition_owner_code
2219       ,p_line_definition_code       => l_line_definition_code
2220       ,p_accounting_line_code       => l_component_code
2221       ,p_accounting_line_type_code  => l_component_type_code
2222       ,p_accounting_line_appl_id    => l_component_appl_id
2223       ,p_amb_context_code           => l_amb_context_code
2224       ,p_entity_code                => l_entity_code
2225       ,p_event_class_code           => l_event_class_code);
2226    --
2227    -- set accounting class
2228    --
2229    xla_ae_lines_pkg.SetAcctClass(
2230            p_accounting_class_code  => 'PURCHASE_ORDER'
2231          , p_ae_header_id           => l_ae_header_id
2232          );
2233 
2234    --
2235    -- set rounding class
2236    --
2237    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2238                       'PURCHASE_ORDER';
2239 
2240    --
2241    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2242    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2243    --
2244    -- bulk performance
2245    --
2246    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2247 
2248    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2249       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2250 
2251    -- 4955764
2252    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2253       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2254 
2255    -- 4458381 Public Sector Enh
2256    
2257    --
2258    -- set accounting attributes for the line type
2259    --
2260    l_entered_amt_idx := 17;
2261    l_accted_amt_idx  := 19;
2262    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2263    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
2264    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
2265    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2266    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
2267    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
2268    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
2269    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
2270    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_26);
2271    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2272    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
2273    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
2274    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
2275    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
2276    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
2277    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
2278    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
2279    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
2280    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
2281    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
2282    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
2283    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
2284    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
2285    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
2286    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
2287    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
2288    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
2289    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
2290    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
2291    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
2292    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
2293    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
2294    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
2295    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
2296    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
2297    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
2298    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
2299    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
2300    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
2301    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
2302    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
2303    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
2304    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
2305 
2306    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2307    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2308 
2309    ---------------------------------------------------------------------------------------------------------------
2313 
2310    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2311    ---------------------------------------------------------------------------------------------------------------
2312    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2314    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2315    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2316 
2317    IF xla_accounting_cache_pkg.GetValueChar
2318          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2319          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2320    AND l_bflow_method_code = 'PRIOR_ENTRY'
2321 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2322    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2323          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2324        )
2325    THEN
2326          xla_ae_lines_pkg.BflowUpgEntry
2327            (p_business_method_code    => l_bflow_method_code
2328            ,p_business_class_code     => l_bflow_class_code
2329            ,p_balance_type            => l_balance_type_code);
2330    ELSE
2331       NULL;
2332 XLA_AE_LINES_PKG.business_flow_validation(
2333                                 p_business_method_code     => l_bflow_method_code
2334                                ,p_business_class_code      => l_bflow_class_code
2335                                ,p_inherit_description_flag => l_inherit_desc_flag);
2336    END IF;
2337 
2338    --
2339    -- call analytical criteria
2340    --
2341    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2342    --
2343    -- call description
2344    --
2345    -- No description or it is inherited.
2346    --
2347    -- call ADRs
2348    -- Bug 4922099
2349    --
2350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2351         (NVL(l_actual_upg_option, 'N') = 'O') OR
2352         (NVL(l_enc_upg_option, 'N') = 'O')
2353       )
2354    THEN
2355    NULL;
2356    --
2357    --
2358    
2359    --
2360    --
2361    END IF;
2362    --
2363    -- Bug 4922099
2364    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2365           (NVL(l_enc_upg_option, 'N') = 'O')
2366         ) AND
2367         (l_bflow_method_code = 'PRIOR_ENTRY')
2368       )
2369    THEN
2370       IF
2371       --
2372       1 = 1
2373       --
2374       THEN
2375       xla_accounting_err_pkg.build_message
2376                                     (p_appli_s_name            => 'XLA'
2377                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2378                                     ,p_token_1                 => 'LINE_NUMBER'
2379                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2380                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2381                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2382                                                                              l_component_type
2383                                                                             ,l_component_code
2384                                                                             ,l_component_type_code
2385                                                                             ,l_component_appl_id
2386                                                                             ,l_amb_context_code
2387                                                                             ,l_entity_code
2388                                                                             ,l_event_class_code
2389                                                                            )
2390                                     ,p_token_3                 => 'OWNER'
2391                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2392                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2393                                                                           ,p_lookup_code    => l_component_type_code
2394                                                                          )
2395                                     ,p_token_4                 => 'PRODUCT_NAME'
2396                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2397                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2398                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2399                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2400                                     ,p_ae_header_id            =>  NULL
2401                                        );
2402 
2403         IF (C_LEVEL_ERROR>= g_log_level) THEN
2404                  trace
2405                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2406                       ,p_level    => C_LEVEL_ERROR
2407                       ,p_module   => l_log_module);
2408         END IF;
2409       END IF;
2410    END IF;
2411    --
2412    --
2413    ------------------------------------------------------------------------------------------------
2414    -- 4219869 Business Flow
2418    -- No ValidateCurrentLine for business flow method of Prior Entry
2415    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2416    -- Prior Entry.  Currently, the following code is always generated.
2417    ------------------------------------------------------------------------------------------------
2419 
2420    ------------------------------------------------------------------------------------
2421    -- 4219869 Business Flow
2422    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2423    ------------------------------------------------------------------------------------
2424    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2425 
2426    ----------------------------------------------------------------------------------
2427    -- 4219869 Business Flow
2428    -- Update journal entry status -- Need to generate this within IF <condition>
2429    ----------------------------------------------------------------------------------
2430    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2431          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2432          ,p_balance_type_code => l_balance_type_code
2433          );
2434 
2435    -------------------------------------------------------------------------------------------
2436    -- 4262811 - Generate the Accrual Reversal lines
2437    -------------------------------------------------------------------------------------------
2438    BEGIN
2439       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2440                               (g_array_event(p_event_id).array_value_num('header_index'));
2441       IF l_acc_rev_flag IS NULL THEN
2442          l_acc_rev_flag := 'N';
2443       END IF;
2444    EXCEPTION
2445       WHEN OTHERS THEN
2446          l_acc_rev_flag := 'N';
2447    END;
2448    --
2449    IF (l_acc_rev_flag = 'Y') THEN
2450 
2451        -- 4645092  ------------------------------------------------------------------------------
2452        -- To allow MPA report to determine if it should generate report process
2453        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2454        ------------------------------------------------------------------------------------------
2455 
2456        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2457        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2458    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2459    -- call ADRs
2460    -- Bug 4922099
2461    --
2462    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2463         (NVL(l_actual_upg_option, 'N') = 'O') OR
2464         (NVL(l_enc_upg_option, 'N') = 'O')
2465       )
2466    THEN
2467    NULL;
2468    --
2469    --
2470    
2471    --
2472    --
2473    END IF;
2474 
2475        --
2476        -- Update the line information that should be overwritten
2477        --
2478        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2479                                          p_header_num   => 1);
2480        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2481 
2482        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2483 
2484        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2485           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2486        END IF;
2487 
2488       --
2489       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2490       --
2491       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2492           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2493       ELSE
2494           ---------------------------------------------------------------------------------------------------
2495           -- 4262811a Switch Sign
2496           ---------------------------------------------------------------------------------------------------
2497           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2498           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2499                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2500           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2501                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2502           -- 5132302
2503           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2504                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2505 
2506       END IF;
2507 
2508       -- 4955764
2509       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2510       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2511 
2512 
2513       XLA_AE_LINES_PKG.ValidateCurrentLine;
2514       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2515 
2516       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2517                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2518                ,p_balance_type_code => l_balance_type_code);
2519 
2523    -- 4262811 Multiperiod Accounting
2520    END IF;
2521 
2522    -----------------------------------------------------------------------------------------
2524    -----------------------------------------------------------------------------------------
2525      -- No MPA option is assigned.
2526 
2527 
2528 END IF;
2529 END IF;
2530 --
2531 
2532 --
2533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2534    trace
2535       (p_msg      => 'END of AcctLineType_5'
2536       ,p_level    => C_LEVEL_PROCEDURE
2537       ,p_module   => l_log_module);
2538 END IF;
2539 --
2540 EXCEPTION
2541   WHEN xla_exceptions_pkg.application_exception THEN
2542       RAISE;
2543   WHEN OTHERS THEN
2544        xla_exceptions_pkg.raise_message
2545            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_5');
2546 END AcctLineType_5;
2547 --
2548 
2549 ---------------------------------------
2550 --
2551 -- PRIVATE FUNCTION
2552 --         AcctLineType_6
2553 --
2554 ---------------------------------------
2555 PROCEDURE AcctLineType_6 (
2556   p_application_id        IN NUMBER
2557  ,p_event_id              IN NUMBER
2558  ,p_calculate_acctd_flag  IN VARCHAR2
2559  ,p_calculate_g_l_flag    IN VARCHAR2
2560  ,p_actual_flag           IN OUT VARCHAR2
2561  ,p_balance_type_code     OUT VARCHAR2
2562  ,p_gain_or_loss_ref      OUT VARCHAR2
2563  
2564 --Purchasing Encumbrance Flag
2565  , p_source_2            IN VARCHAR2
2566 --Reserved Flag
2567  , p_source_3            IN VARCHAR2
2568 --Applied to Application ID
2569  , p_source_7            IN NUMBER
2570 --Applied to Distribution Link Type
2571  , p_source_8            IN VARCHAR2
2572 --Applied to Entity Code
2573  , p_source_9            IN VARCHAR2
2574 --Applied To Purchase Document Identifier
2575  , p_source_11            IN NUMBER
2576 --DISTRIBUTION_IDENTIFIER
2577  , p_source_12            IN NUMBER
2578 --Distribution Type
2579  , p_source_13            IN VARCHAR2
2580  , p_source_13_meaning    IN VARCHAR2
2581 --PO Budget Account
2582  , p_source_14            IN NUMBER
2583 --Encumbrance Reversal Amount Entered
2584  , p_source_15            IN NUMBER
2585 --Entered Currency Code
2586  , p_source_16            IN VARCHAR2
2587 --Transaction Encumbrance Reversal Amount
2588  , p_source_17            IN NUMBER
2589 --Costing Encumbrance Upgrade Option
2590  , p_source_18            IN VARCHAR2
2591 --Purchasing Encumbrance Type Identifier
2592  , p_source_19            IN NUMBER
2593 --Receiving Accounting Line Type
2594  , p_source_25            IN VARCHAR2
2595 --PO_DISTRIBUTION_ID
2596  , p_source_26            IN NUMBER
2597 )
2598 IS
2599 
2600 l_component_type              VARCHAR2(80);
2601 l_component_code              VARCHAR2(30);
2602 l_component_type_code         VARCHAR2(1);
2603 l_component_appl_id           INTEGER;
2604 l_amb_context_code            VARCHAR2(30);
2605 l_entity_code                 VARCHAR2(30);
2606 l_event_class_code            VARCHAR2(30);
2607 l_ae_header_id                NUMBER;
2608 l_event_type_code             VARCHAR2(30);
2609 l_line_definition_code        VARCHAR2(30);
2610 l_line_definition_owner_code  VARCHAR2(1);
2611 --
2612 -- adr variables
2613 l_segment                     VARCHAR2(30);
2614 l_ccid                        NUMBER;
2615 l_adr_transaction_coa_id      NUMBER;
2616 l_adr_accounting_coa_id       NUMBER;
2617 l_adr_flexfield_segment_code  VARCHAR2(30);
2618 l_adr_flex_value_set_id       NUMBER;
2619 l_adr_value_type_code         VARCHAR2(30);
2620 l_adr_value_combination_id    NUMBER;
2621 l_adr_value_segment_code      VARCHAR2(30);
2622 
2623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2627 
2628 -- 4262811 Variables ------------------------------------------------------------------------------------------
2629 l_entered_amt_idx             NUMBER;
2630 l_accted_amt_idx              NUMBER;
2631 l_acc_rev_flag                VARCHAR2(1);
2632 l_accrual_line_num            NUMBER;
2633 l_tmp_amt                     NUMBER;
2634 l_acc_rev_natural_side_code   VARCHAR2(1);
2635 
2636 l_num_entries                 NUMBER;
2637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2641 l_recog_line_1                NUMBER;
2642 l_recog_line_2                NUMBER;
2643 
2644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2647 
2648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2649 
2650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2652 
2656 --
2653 ---------------------------------------------------------------------------------------------------------------
2654 
2655 
2657 -- bulk performance
2658 --
2659 l_balance_type_code           VARCHAR2(1);
2660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2661 l_log_module                  VARCHAR2(240);
2662 
2663 --
2664 -- Upgrade strategy
2665 --
2666 l_actual_upg_option           VARCHAR2(1);
2667 l_enc_upg_option           VARCHAR2(1);
2668 
2669 --
2670 BEGIN
2671 --
2672 IF g_log_enabled THEN
2673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
2674 END IF;
2675 --
2676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2677 
2678       trace
2679          (p_msg      => 'BEGIN of AcctLineType_6'
2680          ,p_level    => C_LEVEL_PROCEDURE
2681          ,p_module   => l_log_module);
2682 
2683 END IF;
2684 --
2685 l_component_type             := 'AMB_JLT';
2686 l_component_code             := 'RELIEVE_PO_ENC_ON_DTE';
2687 l_component_type_code        := 'S';
2688 l_component_appl_id          :=  707;
2689 l_amb_context_code           := 'DEFAULT';
2690 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
2691 l_event_class_code           := 'DELIVER_EXPENSE';
2692 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
2693 l_line_definition_owner_code := 'S';
2694 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_EXP';
2695 --
2696 l_balance_type_code          := 'E';
2697 l_segment                     := NULL;
2698 l_ccid                        := NULL;
2699 l_adr_transaction_coa_id      := NULL;
2700 l_adr_accounting_coa_id       := NULL;
2701 l_adr_flexfield_segment_code  := NULL;
2702 l_adr_flex_value_set_id       := NULL;
2703 l_adr_value_type_code         := NULL;
2704 l_adr_value_combination_id    := NULL;
2705 l_adr_value_segment_code      := NULL;
2706 
2707 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2708 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
2709 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2710 l_budgetary_control_flag     := 'Y';
2711 
2712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2713 l_bflow_applied_to_amt       := NULL; -- 5132302
2714 l_entered_amt_idx            := NULL;          -- 4262811
2715 l_accted_amt_idx             := NULL;          -- 4262811
2716 l_acc_rev_flag               := NULL;          -- 4262811
2717 l_accrual_line_num           := NULL;          -- 4262811
2718 l_tmp_amt                    := NULL;          -- 4262811
2719 --
2720  
2721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2722     l_balance_type_code <> 'B' THEN
2723 IF NVL(p_source_2,'
2724 ') =  'Y' AND 
2725 NVL(p_source_3,'
2726 ') =  'Y' AND 
2727 NVL(
2728 xla_ae_sources_pkg.GetSystemSourceChar(
2729    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2730  , p_source_type_code      => 'Y'
2731  , p_source_application_id =>  602
2732 ),'
2733 ') =  'DELIVER_EXPENSE' AND 
2734 NVL(p_source_25,'
2735 ') =  'Charge'
2736  THEN 
2737 
2738    --
2739    XLA_AE_LINES_PKG.SetNewLine;
2740 
2741    p_balance_type_code          := l_balance_type_code;
2742    -- set the flag so later we will know whether the gain loss line needs to be created
2743    
2744    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2745      p_actual_flag :='A';
2746    END IF;
2747 
2748    --
2749    -- bulk performance
2750    --
2751    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2752                                       p_header_num   => 0); -- 4262811
2753    --
2754    -- set accounting line options
2755    --
2756    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2757            p_natural_side_code          => 'D'
2758          , p_gain_or_loss_flag          => 'N'
2759          , p_gl_transfer_mode_code      => 'S'
2760          , p_acct_entry_type_code       => 'E'
2761          , p_switch_side_flag           => 'Y'
2762          , p_merge_duplicate_code       => 'N'
2763          );
2764    --
2765    l_acc_rev_natural_side_code := 'C';  -- 4262811
2766    -- 
2767    --
2768    -- set accounting line type info
2769    --
2770    xla_ae_lines_pkg.SetAcctLineType
2771       (p_component_type             => l_component_type
2772       ,p_event_type_code            => l_event_type_code
2773       ,p_line_definition_owner_code => l_line_definition_owner_code
2774       ,p_line_definition_code       => l_line_definition_code
2775       ,p_accounting_line_code       => l_component_code
2776       ,p_accounting_line_type_code  => l_component_type_code
2777       ,p_accounting_line_appl_id    => l_component_appl_id
2778       ,p_amb_context_code           => l_amb_context_code
2779       ,p_entity_code                => l_entity_code
2780       ,p_event_class_code           => l_event_class_code);
2781    --
2782    -- set accounting class
2783    --
2784    xla_ae_lines_pkg.SetAcctClass(
2785            p_accounting_class_code  => 'PURCHASE_ORDER'
2786          , p_ae_header_id           => l_ae_header_id
2787          );
2788 
2789    --
2790    -- set rounding class
2791    --
2792    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2796    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2793                       'PURCHASE_ORDER';
2794 
2795    --
2797    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2798    --
2799    -- bulk performance
2800    --
2801    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2802 
2803    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2804       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2805 
2806    -- 4955764
2807    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2808       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2809 
2810    -- 4458381 Public Sector Enh
2811    
2812    --
2813    -- set accounting attributes for the line type
2814    --
2815    l_entered_amt_idx := 17;
2816    l_accted_amt_idx  := 19;
2817    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2818    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
2819    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
2820    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2821    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
2822    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
2823    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
2824    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
2825    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_26);
2826    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2827    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
2828    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
2829    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
2830    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
2831    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
2832    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
2833    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
2834    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
2835    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
2836    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
2837    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
2838    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
2839    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
2840    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
2841    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
2842    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
2843    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
2844    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
2845    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
2846    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
2847    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
2848    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
2849    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
2850    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
2851    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
2852    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
2853    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
2854    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
2855    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
2856    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
2857    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
2858    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
2859    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
2860 
2861    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2862    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2863 
2864    ---------------------------------------------------------------------------------------------------------------
2865    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2866    ---------------------------------------------------------------------------------------------------------------
2867    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2868 
2869    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2870    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2871 
2872    IF xla_accounting_cache_pkg.GetValueChar
2873          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2874          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2875    AND l_bflow_method_code = 'PRIOR_ENTRY'
2876 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2877    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2878          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2879        )
2880    THEN
2881          xla_ae_lines_pkg.BflowUpgEntry
2882            (p_business_method_code    => l_bflow_method_code
2883            ,p_business_class_code     => l_bflow_class_code
2884            ,p_balance_type            => l_balance_type_code);
2885    ELSE
2886       NULL;
2887 XLA_AE_LINES_PKG.business_flow_validation(
2891    END IF;
2888                                 p_business_method_code     => l_bflow_method_code
2889                                ,p_business_class_code      => l_bflow_class_code
2890                                ,p_inherit_description_flag => l_inherit_desc_flag);
2892 
2893    --
2894    -- call analytical criteria
2895    --
2896    -- Inherited Analytical Criteria for business flow method of Prior Entry.
2897    --
2898    -- call description
2899    --
2900    -- No description or it is inherited.
2901    --
2902    -- call ADRs
2903    -- Bug 4922099
2904    --
2905    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2906         (NVL(l_actual_upg_option, 'N') = 'O') OR
2907         (NVL(l_enc_upg_option, 'N') = 'O')
2908       )
2909    THEN
2910    NULL;
2911    --
2912    --
2913    
2914    --
2915    --
2916    END IF;
2917    --
2918    -- Bug 4922099
2919    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2920           (NVL(l_enc_upg_option, 'N') = 'O')
2921         ) AND
2922         (l_bflow_method_code = 'PRIOR_ENTRY')
2923       )
2924    THEN
2925       IF
2926       --
2927       1 = 1
2928       --
2929       THEN
2930       xla_accounting_err_pkg.build_message
2931                                     (p_appli_s_name            => 'XLA'
2932                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2933                                     ,p_token_1                 => 'LINE_NUMBER'
2934                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2935                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2936                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2937                                                                              l_component_type
2938                                                                             ,l_component_code
2939                                                                             ,l_component_type_code
2940                                                                             ,l_component_appl_id
2941                                                                             ,l_amb_context_code
2942                                                                             ,l_entity_code
2943                                                                             ,l_event_class_code
2944                                                                            )
2945                                     ,p_token_3                 => 'OWNER'
2946                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2947                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2948                                                                           ,p_lookup_code    => l_component_type_code
2949                                                                          )
2950                                     ,p_token_4                 => 'PRODUCT_NAME'
2951                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2952                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2953                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2954                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2955                                     ,p_ae_header_id            =>  NULL
2956                                        );
2957 
2958         IF (C_LEVEL_ERROR>= g_log_level) THEN
2959                  trace
2960                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2961                       ,p_level    => C_LEVEL_ERROR
2962                       ,p_module   => l_log_module);
2963         END IF;
2964       END IF;
2965    END IF;
2966    --
2967    --
2968    ------------------------------------------------------------------------------------------------
2969    -- 4219869 Business Flow
2970    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2971    -- Prior Entry.  Currently, the following code is always generated.
2972    ------------------------------------------------------------------------------------------------
2973    -- No ValidateCurrentLine for business flow method of Prior Entry
2974 
2975    ------------------------------------------------------------------------------------
2976    -- 4219869 Business Flow
2977    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2978    ------------------------------------------------------------------------------------
2979    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2980 
2981    ----------------------------------------------------------------------------------
2982    -- 4219869 Business Flow
2983    -- Update journal entry status -- Need to generate this within IF <condition>
2984    ----------------------------------------------------------------------------------
2985    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2986          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2987          ,p_balance_type_code => l_balance_type_code
2988          );
2989 
2990    -------------------------------------------------------------------------------------------
2994       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2991    -- 4262811 - Generate the Accrual Reversal lines
2992    -------------------------------------------------------------------------------------------
2993    BEGIN
2995                               (g_array_event(p_event_id).array_value_num('header_index'));
2996       IF l_acc_rev_flag IS NULL THEN
2997          l_acc_rev_flag := 'N';
2998       END IF;
2999    EXCEPTION
3000       WHEN OTHERS THEN
3001          l_acc_rev_flag := 'N';
3002    END;
3003    --
3004    IF (l_acc_rev_flag = 'Y') THEN
3005 
3006        -- 4645092  ------------------------------------------------------------------------------
3007        -- To allow MPA report to determine if it should generate report process
3008        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3009        ------------------------------------------------------------------------------------------
3010 
3011        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3012        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3013    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3014    -- call ADRs
3015    -- Bug 4922099
3016    --
3017    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3018         (NVL(l_actual_upg_option, 'N') = 'O') OR
3019         (NVL(l_enc_upg_option, 'N') = 'O')
3020       )
3021    THEN
3022    NULL;
3023    --
3024    --
3025    
3026    --
3027    --
3028    END IF;
3029 
3030        --
3031        -- Update the line information that should be overwritten
3032        --
3033        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3034                                          p_header_num   => 1);
3035        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3036 
3037        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3038 
3039        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3040           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3041        END IF;
3042 
3043       --
3044       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3045       --
3046       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3047           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3048       ELSE
3049           ---------------------------------------------------------------------------------------------------
3050           -- 4262811a Switch Sign
3051           ---------------------------------------------------------------------------------------------------
3052           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3053           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3054                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3055           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3056                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3057           -- 5132302
3058           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3059                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3060 
3061       END IF;
3062 
3063       -- 4955764
3064       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3065       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3066 
3067 
3068       XLA_AE_LINES_PKG.ValidateCurrentLine;
3069       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3070 
3071       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3072                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3073                ,p_balance_type_code => l_balance_type_code);
3074 
3075    END IF;
3076 
3077    -----------------------------------------------------------------------------------------
3078    -- 4262811 Multiperiod Accounting
3079    -----------------------------------------------------------------------------------------
3080      -- No MPA option is assigned.
3081 
3082 
3083 END IF;
3084 END IF;
3085 --
3086 
3087 --
3088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3089    trace
3090       (p_msg      => 'END of AcctLineType_6'
3091       ,p_level    => C_LEVEL_PROCEDURE
3092       ,p_module   => l_log_module);
3093 END IF;
3094 --
3095 EXCEPTION
3096   WHEN xla_exceptions_pkg.application_exception THEN
3097       RAISE;
3098   WHEN OTHERS THEN
3099        xla_exceptions_pkg.raise_message
3100            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_6');
3101 END AcctLineType_6;
3102 --
3103 
3104 ---------------------------------------
3105 --
3106 -- PRIVATE FUNCTION
3107 --         AcctLineType_7
3108 --
3109 ---------------------------------------
3110 PROCEDURE AcctLineType_7 (
3111   p_application_id        IN NUMBER
3112  ,p_event_id              IN NUMBER
3113  ,p_calculate_acctd_flag  IN VARCHAR2
3114  ,p_calculate_g_l_flag    IN VARCHAR2
3115  ,p_actual_flag           IN OUT VARCHAR2
3119 --Purchasing Encumbrance Flag
3116  ,p_balance_type_code     OUT VARCHAR2
3117  ,p_gain_or_loss_ref      OUT VARCHAR2
3118  
3120  , p_source_2            IN VARCHAR2
3121 --Reserved Flag
3122  , p_source_3            IN VARCHAR2
3123 --Organization Encumbrance Reversal Indicator
3124  , p_source_4            IN VARCHAR2
3125 --Accounting Line Type
3126  , p_source_6            IN NUMBER
3127 --Applied to Application ID
3128  , p_source_7            IN NUMBER
3129 --Applied to Distribution Link Type
3130  , p_source_8            IN VARCHAR2
3131 --Applied to Entity Code
3132  , p_source_9            IN VARCHAR2
3133 --TXN_PO_DISTRIBUTION_ID
3134  , p_source_10            IN NUMBER
3135 --Applied To Purchase Document Identifier
3136  , p_source_11            IN NUMBER
3137 --DISTRIBUTION_IDENTIFIER
3138  , p_source_12            IN NUMBER
3139 --Distribution Type
3140  , p_source_13            IN VARCHAR2
3141  , p_source_13_meaning    IN VARCHAR2
3142 --PO Budget Account
3143  , p_source_14            IN NUMBER
3144 --Encumbrance Reversal Amount Entered
3145  , p_source_15            IN NUMBER
3146 --Entered Currency Code
3147  , p_source_16            IN VARCHAR2
3148 --Transaction Encumbrance Reversal Amount
3149  , p_source_17            IN NUMBER
3150 --Costing Encumbrance Upgrade Option
3151  , p_source_18            IN VARCHAR2
3152 --Purchasing Encumbrance Type Identifier
3153  , p_source_19            IN NUMBER
3154 )
3155 IS
3156 
3157 l_component_type              VARCHAR2(80);
3158 l_component_code              VARCHAR2(30);
3159 l_component_type_code         VARCHAR2(1);
3160 l_component_appl_id           INTEGER;
3161 l_amb_context_code            VARCHAR2(30);
3162 l_entity_code                 VARCHAR2(30);
3163 l_event_class_code            VARCHAR2(30);
3164 l_ae_header_id                NUMBER;
3165 l_event_type_code             VARCHAR2(30);
3166 l_line_definition_code        VARCHAR2(30);
3167 l_line_definition_owner_code  VARCHAR2(1);
3168 --
3169 -- adr variables
3170 l_segment                     VARCHAR2(30);
3171 l_ccid                        NUMBER;
3172 l_adr_transaction_coa_id      NUMBER;
3173 l_adr_accounting_coa_id       NUMBER;
3174 l_adr_flexfield_segment_code  VARCHAR2(30);
3175 l_adr_flex_value_set_id       NUMBER;
3176 l_adr_value_type_code         VARCHAR2(30);
3177 l_adr_value_combination_id    NUMBER;
3178 l_adr_value_segment_code      VARCHAR2(30);
3179 
3180 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3181 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3182 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3183 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3184 
3185 -- 4262811 Variables ------------------------------------------------------------------------------------------
3186 l_entered_amt_idx             NUMBER;
3187 l_accted_amt_idx              NUMBER;
3188 l_acc_rev_flag                VARCHAR2(1);
3189 l_accrual_line_num            NUMBER;
3190 l_tmp_amt                     NUMBER;
3191 l_acc_rev_natural_side_code   VARCHAR2(1);
3192 
3193 l_num_entries                 NUMBER;
3194 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3195 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3196 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3197 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3198 l_recog_line_1                NUMBER;
3199 l_recog_line_2                NUMBER;
3200 
3201 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3202 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3203 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3204 
3205 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3206 
3207 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3208 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3209 
3210 ---------------------------------------------------------------------------------------------------------------
3211 
3212 
3213 --
3214 -- bulk performance
3215 --
3216 l_balance_type_code           VARCHAR2(1);
3217 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3218 l_log_module                  VARCHAR2(240);
3219 
3220 --
3221 -- Upgrade strategy
3222 --
3223 l_actual_upg_option           VARCHAR2(1);
3224 l_enc_upg_option           VARCHAR2(1);
3225 
3226 --
3227 BEGIN
3228 --
3229 IF g_log_enabled THEN
3230       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
3231 END IF;
3232 --
3233 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3234 
3235       trace
3236          (p_msg      => 'BEGIN of AcctLineType_7'
3237          ,p_level    => C_LEVEL_PROCEDURE
3238          ,p_module   => l_log_module);
3239 
3240 END IF;
3241 --
3242 l_component_type             := 'AMB_JLT';
3243 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
3244 l_component_type_code        := 'S';
3245 l_component_appl_id          :=  707;
3246 l_amb_context_code           := 'DEFAULT';
3247 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
3251 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_INV';
3248 l_event_class_code           := 'PURCHASE_ORDER';
3249 l_event_type_code            := 'PURCHASE_ORDER_ALL';
3250 l_line_definition_owner_code := 'S';
3252 --
3253 l_balance_type_code          := 'E';
3254 l_segment                     := NULL;
3255 l_ccid                        := NULL;
3256 l_adr_transaction_coa_id      := NULL;
3257 l_adr_accounting_coa_id       := NULL;
3258 l_adr_flexfield_segment_code  := NULL;
3259 l_adr_flex_value_set_id       := NULL;
3260 l_adr_value_type_code         := NULL;
3261 l_adr_value_combination_id    := NULL;
3262 l_adr_value_segment_code      := NULL;
3263 
3264 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3265 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
3266 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3267 l_budgetary_control_flag     := 'Y';
3268 
3269 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3270 l_bflow_applied_to_amt       := NULL; -- 5132302
3271 l_entered_amt_idx            := NULL;          -- 4262811
3272 l_accted_amt_idx             := NULL;          -- 4262811
3273 l_acc_rev_flag               := NULL;          -- 4262811
3274 l_accrual_line_num           := NULL;          -- 4262811
3275 l_tmp_amt                    := NULL;          -- 4262811
3276 --
3277  
3278 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3279     l_balance_type_code <> 'B' THEN
3280 IF NVL(p_source_2,'
3281 ') =  'Y' AND 
3282 NVL(p_source_3,'
3283 ') =  'Y' AND 
3284 NVL(p_source_4,'
3285 ') =  'Y' AND 
3286 NVL(
3287 xla_ae_sources_pkg.GetSystemSourceChar(
3288    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3289  , p_source_type_code      => 'Y'
3290  , p_source_application_id =>  602
3291 ),'
3292 ') =  'PO_DEL_INV' AND 
3293 NVL(p_source_6,9E125) =  15
3294  THEN 
3295 
3296    --
3297    XLA_AE_LINES_PKG.SetNewLine;
3298 
3299    p_balance_type_code          := l_balance_type_code;
3300    -- set the flag so later we will know whether the gain loss line needs to be created
3301    
3302    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3303      p_actual_flag :='A';
3304    END IF;
3305 
3306    --
3307    -- bulk performance
3308    --
3309    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3310                                       p_header_num   => 0); -- 4262811
3311    --
3312    -- set accounting line options
3313    --
3314    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3315            p_natural_side_code          => 'C'
3316          , p_gain_or_loss_flag          => 'N'
3317          , p_gl_transfer_mode_code      => 'S'
3318          , p_acct_entry_type_code       => 'E'
3319          , p_switch_side_flag           => 'N'
3320          , p_merge_duplicate_code       => 'N'
3321          );
3322    --
3323    l_acc_rev_natural_side_code := 'D';  -- 4262811
3324    -- 
3325    --
3326    -- set accounting line type info
3327    --
3328    xla_ae_lines_pkg.SetAcctLineType
3329       (p_component_type             => l_component_type
3330       ,p_event_type_code            => l_event_type_code
3331       ,p_line_definition_owner_code => l_line_definition_owner_code
3332       ,p_line_definition_code       => l_line_definition_code
3333       ,p_accounting_line_code       => l_component_code
3334       ,p_accounting_line_type_code  => l_component_type_code
3335       ,p_accounting_line_appl_id    => l_component_appl_id
3336       ,p_amb_context_code           => l_amb_context_code
3337       ,p_entity_code                => l_entity_code
3338       ,p_event_class_code           => l_event_class_code);
3339    --
3340    -- set accounting class
3341    --
3342    xla_ae_lines_pkg.SetAcctClass(
3343            p_accounting_class_code  => 'PURCHASE_ORDER'
3344          , p_ae_header_id           => l_ae_header_id
3345          );
3346 
3347    --
3348    -- set rounding class
3349    --
3350    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3351                       'PURCHASE_ORDER';
3352 
3353    --
3354    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3355    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3356    --
3357    -- bulk performance
3358    --
3359    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3360 
3361    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3362       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3363 
3364    -- 4955764
3365    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3366       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3367 
3368    -- 4458381 Public Sector Enh
3369    
3370    --
3371    -- set accounting attributes for the line type
3372    --
3373    l_entered_amt_idx := 17;
3374    l_accted_amt_idx  := 19;
3375    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3376    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
3377    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
3378    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3382    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
3379    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
3380    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
3381    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
3383    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_10);
3384    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3385    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
3386    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
3387    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
3388    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
3389    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
3390    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
3391    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
3392    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
3393    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
3394    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
3395    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
3396    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
3397    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
3398    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
3399    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
3400    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
3401    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
3402    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
3403    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
3404    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
3405    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
3406    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
3407    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
3408    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
3409    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
3410    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
3411    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
3412    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
3413    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
3414    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
3415    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
3416    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
3417    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
3418 
3419    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3420    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3421 
3422    ---------------------------------------------------------------------------------------------------------------
3423    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3424    ---------------------------------------------------------------------------------------------------------------
3425    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3426 
3427    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3428    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3429 
3430    IF xla_accounting_cache_pkg.GetValueChar
3431          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3432          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3433    AND l_bflow_method_code = 'PRIOR_ENTRY'
3434 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3435    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3436          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3437        )
3438    THEN
3439          xla_ae_lines_pkg.BflowUpgEntry
3440            (p_business_method_code    => l_bflow_method_code
3441            ,p_business_class_code     => l_bflow_class_code
3442            ,p_balance_type            => l_balance_type_code);
3443    ELSE
3444       NULL;
3445 XLA_AE_LINES_PKG.business_flow_validation(
3446                                 p_business_method_code     => l_bflow_method_code
3447                                ,p_business_class_code      => l_bflow_class_code
3448                                ,p_inherit_description_flag => l_inherit_desc_flag);
3449    END IF;
3450 
3451    --
3452    -- call analytical criteria
3453    --
3454    -- Inherited Analytical Criteria for business flow method of Prior Entry.
3455    --
3456    -- call description
3457    --
3458    -- No description or it is inherited.
3459    --
3460    -- call ADRs
3461    -- Bug 4922099
3462    --
3463    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3464         (NVL(l_actual_upg_option, 'N') = 'O') OR
3465         (NVL(l_enc_upg_option, 'N') = 'O')
3466       )
3467    THEN
3468    NULL;
3469    --
3470    --
3471    
3472    --
3473    --
3474    END IF;
3475    --
3476    -- Bug 4922099
3477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3478           (NVL(l_enc_upg_option, 'N') = 'O')
3479         ) AND
3480         (l_bflow_method_code = 'PRIOR_ENTRY')
3481       )
3482    THEN
3483       IF
3484       --
3485       1 = 1
3486       --
3487       THEN
3488       xla_accounting_err_pkg.build_message
3492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3489                                     (p_appli_s_name            => 'XLA'
3490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3491                                     ,p_token_1                 => 'LINE_NUMBER'
3493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3495                                                                              l_component_type
3496                                                                             ,l_component_code
3497                                                                             ,l_component_type_code
3498                                                                             ,l_component_appl_id
3499                                                                             ,l_amb_context_code
3500                                                                             ,l_entity_code
3501                                                                             ,l_event_class_code
3502                                                                            )
3503                                     ,p_token_3                 => 'OWNER'
3504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3506                                                                           ,p_lookup_code    => l_component_type_code
3507                                                                          )
3508                                     ,p_token_4                 => 'PRODUCT_NAME'
3509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3513                                     ,p_ae_header_id            =>  NULL
3514                                        );
3515 
3516         IF (C_LEVEL_ERROR>= g_log_level) THEN
3517                  trace
3518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3519                       ,p_level    => C_LEVEL_ERROR
3520                       ,p_module   => l_log_module);
3521         END IF;
3522       END IF;
3523    END IF;
3524    --
3525    --
3526    ------------------------------------------------------------------------------------------------
3527    -- 4219869 Business Flow
3528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3529    -- Prior Entry.  Currently, the following code is always generated.
3530    ------------------------------------------------------------------------------------------------
3531    -- No ValidateCurrentLine for business flow method of Prior Entry
3532 
3533    ------------------------------------------------------------------------------------
3534    -- 4219869 Business Flow
3535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3536    ------------------------------------------------------------------------------------
3537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3538 
3539    ----------------------------------------------------------------------------------
3540    -- 4219869 Business Flow
3541    -- Update journal entry status -- Need to generate this within IF <condition>
3542    ----------------------------------------------------------------------------------
3543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3545          ,p_balance_type_code => l_balance_type_code
3546          );
3547 
3548    -------------------------------------------------------------------------------------------
3549    -- 4262811 - Generate the Accrual Reversal lines
3550    -------------------------------------------------------------------------------------------
3551    BEGIN
3552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3553                               (g_array_event(p_event_id).array_value_num('header_index'));
3554       IF l_acc_rev_flag IS NULL THEN
3555          l_acc_rev_flag := 'N';
3556       END IF;
3557    EXCEPTION
3558       WHEN OTHERS THEN
3559          l_acc_rev_flag := 'N';
3560    END;
3561    --
3562    IF (l_acc_rev_flag = 'Y') THEN
3563 
3564        -- 4645092  ------------------------------------------------------------------------------
3565        -- To allow MPA report to determine if it should generate report process
3566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3567        ------------------------------------------------------------------------------------------
3568 
3569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3572    -- call ADRs
3573    -- Bug 4922099
3574    --
3575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3576         (NVL(l_actual_upg_option, 'N') = 'O') OR
3580    NULL;
3577         (NVL(l_enc_upg_option, 'N') = 'O')
3578       )
3579    THEN
3581    --
3582    --
3583    
3584    --
3585    --
3586    END IF;
3587 
3588        --
3589        -- Update the line information that should be overwritten
3590        --
3591        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3592                                          p_header_num   => 1);
3593        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3594 
3595        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3596 
3597        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3598           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3599        END IF;
3600 
3601       --
3602       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3603       --
3604       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3605           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3606       ELSE
3607           ---------------------------------------------------------------------------------------------------
3608           -- 4262811a Switch Sign
3609           ---------------------------------------------------------------------------------------------------
3610           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3611           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3612                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3613           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3614                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3615           -- 5132302
3616           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3617                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3618 
3619       END IF;
3620 
3621       -- 4955764
3622       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3623       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3624 
3625 
3626       XLA_AE_LINES_PKG.ValidateCurrentLine;
3627       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3628 
3629       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3630                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3631                ,p_balance_type_code => l_balance_type_code);
3632 
3633    END IF;
3634 
3635    -----------------------------------------------------------------------------------------
3636    -- 4262811 Multiperiod Accounting
3637    -----------------------------------------------------------------------------------------
3638      -- No MPA option is assigned.
3639 
3640 
3641 END IF;
3642 END IF;
3643 --
3644 
3645 --
3646 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3647    trace
3648       (p_msg      => 'END of AcctLineType_7'
3649       ,p_level    => C_LEVEL_PROCEDURE
3650       ,p_module   => l_log_module);
3651 END IF;
3652 --
3653 EXCEPTION
3654   WHEN xla_exceptions_pkg.application_exception THEN
3655       RAISE;
3656   WHEN OTHERS THEN
3657        xla_exceptions_pkg.raise_message
3658            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_7');
3659 END AcctLineType_7;
3660 --
3661 
3662 ---------------------------------------
3663 --
3664 -- PRIVATE FUNCTION
3665 --         AcctLineType_8
3666 --
3667 ---------------------------------------
3668 PROCEDURE AcctLineType_8 (
3669   p_application_id        IN NUMBER
3670  ,p_event_id              IN NUMBER
3671  ,p_calculate_acctd_flag  IN VARCHAR2
3672  ,p_calculate_g_l_flag    IN VARCHAR2
3673  ,p_actual_flag           IN OUT VARCHAR2
3674  ,p_balance_type_code     OUT VARCHAR2
3675  ,p_gain_or_loss_ref      OUT VARCHAR2
3676  
3677 --Purchasing Encumbrance Flag
3678  , p_source_2            IN VARCHAR2
3679 --Applied to Application ID
3680  , p_source_7            IN NUMBER
3681 --Applied to Distribution Link Type
3682  , p_source_8            IN VARCHAR2
3683 --Applied to Entity Code
3684  , p_source_9            IN VARCHAR2
3685 --Applied To Purchase Document Identifier
3686  , p_source_11            IN NUMBER
3687 --DISTRIBUTION_IDENTIFIER
3688  , p_source_12            IN NUMBER
3689 --Distribution Type
3690  , p_source_13            IN VARCHAR2
3691  , p_source_13_meaning    IN VARCHAR2
3692 --PO Budget Account
3693  , p_source_14            IN NUMBER
3694 --Encumbrance Reversal Amount Entered
3695  , p_source_15            IN NUMBER
3696 --Entered Currency Code
3697  , p_source_16            IN VARCHAR2
3698 --Transaction Encumbrance Reversal Amount
3699  , p_source_17            IN NUMBER
3700 --Purchasing Encumbrance Type Identifier
3701  , p_source_19            IN NUMBER
3702 --Receiving Accounting Line Type
3703  , p_source_25            IN VARCHAR2
3704 --PO_DISTRIBUTION_ID
3705  , p_source_26            IN NUMBER
3709 IS
3706 --Costing Period End Accrual Encumbrance Upgrade Option
3707  , p_source_27            IN VARCHAR2
3708 )
3710 
3711 l_component_type              VARCHAR2(80);
3712 l_component_code              VARCHAR2(30);
3713 l_component_type_code         VARCHAR2(1);
3714 l_component_appl_id           INTEGER;
3715 l_amb_context_code            VARCHAR2(30);
3716 l_entity_code                 VARCHAR2(30);
3717 l_event_class_code            VARCHAR2(30);
3718 l_ae_header_id                NUMBER;
3719 l_event_type_code             VARCHAR2(30);
3720 l_line_definition_code        VARCHAR2(30);
3721 l_line_definition_owner_code  VARCHAR2(1);
3722 --
3723 -- adr variables
3724 l_segment                     VARCHAR2(30);
3725 l_ccid                        NUMBER;
3726 l_adr_transaction_coa_id      NUMBER;
3727 l_adr_accounting_coa_id       NUMBER;
3728 l_adr_flexfield_segment_code  VARCHAR2(30);
3729 l_adr_flex_value_set_id       NUMBER;
3730 l_adr_value_type_code         VARCHAR2(30);
3731 l_adr_value_combination_id    NUMBER;
3732 l_adr_value_segment_code      VARCHAR2(30);
3733 
3734 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3735 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3736 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3737 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3738 
3739 -- 4262811 Variables ------------------------------------------------------------------------------------------
3740 l_entered_amt_idx             NUMBER;
3741 l_accted_amt_idx              NUMBER;
3742 l_acc_rev_flag                VARCHAR2(1);
3743 l_accrual_line_num            NUMBER;
3744 l_tmp_amt                     NUMBER;
3745 l_acc_rev_natural_side_code   VARCHAR2(1);
3746 
3747 l_num_entries                 NUMBER;
3748 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3749 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3750 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3751 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3752 l_recog_line_1                NUMBER;
3753 l_recog_line_2                NUMBER;
3754 
3755 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3756 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3757 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3758 
3759 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3760 
3761 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3762 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3763 
3764 ---------------------------------------------------------------------------------------------------------------
3765 
3766 
3767 --
3768 -- bulk performance
3769 --
3770 l_balance_type_code           VARCHAR2(1);
3771 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3772 l_log_module                  VARCHAR2(240);
3773 
3774 --
3775 -- Upgrade strategy
3776 --
3777 l_actual_upg_option           VARCHAR2(1);
3778 l_enc_upg_option           VARCHAR2(1);
3779 
3780 --
3781 BEGIN
3782 --
3783 IF g_log_enabled THEN
3784       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
3785 END IF;
3786 --
3787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3788 
3789       trace
3790          (p_msg      => 'BEGIN of AcctLineType_8'
3791          ,p_level    => C_LEVEL_PROCEDURE
3792          ,p_module   => l_log_module);
3793 
3794 END IF;
3795 --
3796 l_component_type             := 'AMB_JLT';
3797 l_component_code             := 'RELIEVE_PO_ENC_ON_PEA';
3798 l_component_type_code        := 'S';
3799 l_component_appl_id          :=  707;
3800 l_amb_context_code           := 'DEFAULT';
3801 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
3802 l_event_class_code           := 'PERIOD_END_ACCRUAL';
3803 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
3804 l_line_definition_owner_code := 'S';
3805 l_line_definition_code       := 'PO_ENCUM_FOR_PERIOD_END_ACCR';
3806 --
3807 l_balance_type_code          := 'E';
3808 l_segment                     := NULL;
3809 l_ccid                        := NULL;
3810 l_adr_transaction_coa_id      := NULL;
3811 l_adr_accounting_coa_id       := NULL;
3812 l_adr_flexfield_segment_code  := NULL;
3813 l_adr_flex_value_set_id       := NULL;
3814 l_adr_value_type_code         := NULL;
3815 l_adr_value_combination_id    := NULL;
3816 l_adr_value_segment_code      := NULL;
3817 
3818 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3819 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
3820 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3821 l_budgetary_control_flag     := 'Y';
3822 
3823 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3824 l_bflow_applied_to_amt       := NULL; -- 5132302
3825 l_entered_amt_idx            := NULL;          -- 4262811
3826 l_accted_amt_idx             := NULL;          -- 4262811
3827 l_acc_rev_flag               := NULL;          -- 4262811
3828 l_accrual_line_num           := NULL;          -- 4262811
3829 l_tmp_amt                    := NULL;          -- 4262811
3830 --
3831  
3835 ') =  'Y' AND 
3832 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3833     l_balance_type_code <> 'B' THEN
3834 IF NVL(p_source_2,'
3836 NVL(
3837 xla_ae_sources_pkg.GetSystemSourceChar(
3838    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3839  , p_source_type_code      => 'Y'
3840  , p_source_application_id =>  602
3841 ),'
3842 ') =  'PERIOD_END_ACCRUAL' AND 
3843 NVL(p_source_25,'
3844 ') =  'Charge'
3845  THEN 
3846 
3847    --
3848    XLA_AE_LINES_PKG.SetNewLine;
3849 
3850    p_balance_type_code          := l_balance_type_code;
3851    -- set the flag so later we will know whether the gain loss line needs to be created
3852    
3853    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3854      p_actual_flag :='A';
3855    END IF;
3856 
3857    --
3858    -- bulk performance
3859    --
3860    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3861                                       p_header_num   => 0); -- 4262811
3862    --
3863    -- set accounting line options
3864    --
3865    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3866            p_natural_side_code          => 'D'
3867          , p_gain_or_loss_flag          => 'N'
3868          , p_gl_transfer_mode_code      => 'S'
3869          , p_acct_entry_type_code       => 'E'
3870          , p_switch_side_flag           => 'Y'
3871          , p_merge_duplicate_code       => 'N'
3872          );
3873    --
3874    l_acc_rev_natural_side_code := 'C';  -- 4262811
3875    -- 
3876    --
3877    -- set accounting line type info
3878    --
3879    xla_ae_lines_pkg.SetAcctLineType
3880       (p_component_type             => l_component_type
3881       ,p_event_type_code            => l_event_type_code
3882       ,p_line_definition_owner_code => l_line_definition_owner_code
3883       ,p_line_definition_code       => l_line_definition_code
3884       ,p_accounting_line_code       => l_component_code
3885       ,p_accounting_line_type_code  => l_component_type_code
3886       ,p_accounting_line_appl_id    => l_component_appl_id
3887       ,p_amb_context_code           => l_amb_context_code
3888       ,p_entity_code                => l_entity_code
3889       ,p_event_class_code           => l_event_class_code);
3890    --
3891    -- set accounting class
3892    --
3893    xla_ae_lines_pkg.SetAcctClass(
3894            p_accounting_class_code  => 'PURCHASE_ORDER'
3895          , p_ae_header_id           => l_ae_header_id
3896          );
3897 
3898    --
3899    -- set rounding class
3900    --
3901    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3902                       'PURCHASE_ORDER';
3903 
3904    --
3905    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3906    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3907    --
3908    -- bulk performance
3909    --
3910    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3911 
3912    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3913       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3914 
3915    -- 4955764
3916    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3917       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3918 
3919    -- 4458381 Public Sector Enh
3920    
3921    --
3922    -- set accounting attributes for the line type
3923    --
3924    l_entered_amt_idx := 17;
3925    l_accted_amt_idx  := 19;
3926    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3927    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
3928    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
3929    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3930    l_rec_acct_attrs.array_char_value(2)  := p_source_8;
3931    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
3932    l_rec_acct_attrs.array_char_value(3)  := p_source_9;
3933    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
3934    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_26);
3935    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3936    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_11);
3937    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
3938    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
3939    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
3940    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
3941    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
3942    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_14);
3943    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
3944    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
3945    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
3946    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
3947    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
3948    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
3949    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
3950    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_14);
3954    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
3951    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
3952    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
3953    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
3955    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
3956    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
3957    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
3958    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
3959    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
3960    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
3961    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
3962    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
3963    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
3964    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
3965    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
3966    l_rec_acct_attrs.array_num_value(20)  := p_source_19;
3967    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
3968    l_rec_acct_attrs.array_num_value(21)  := p_source_19;
3969 
3970    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3971    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3972 
3973    ---------------------------------------------------------------------------------------------------------------
3974    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3975    ---------------------------------------------------------------------------------------------------------------
3976    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3977 
3978    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3979    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3980 
3981    IF xla_accounting_cache_pkg.GetValueChar
3982          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3983          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3984    AND l_bflow_method_code = 'PRIOR_ENTRY'
3985 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3986    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3987          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3988        )
3989    THEN
3990          xla_ae_lines_pkg.BflowUpgEntry
3991            (p_business_method_code    => l_bflow_method_code
3992            ,p_business_class_code     => l_bflow_class_code
3993            ,p_balance_type            => l_balance_type_code);
3994    ELSE
3995       NULL;
3996 XLA_AE_LINES_PKG.business_flow_validation(
3997                                 p_business_method_code     => l_bflow_method_code
3998                                ,p_business_class_code      => l_bflow_class_code
3999                                ,p_inherit_description_flag => l_inherit_desc_flag);
4000    END IF;
4001 
4002    --
4003    -- call analytical criteria
4004    --
4005    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4006    --
4007    -- call description
4008    --
4009    -- No description or it is inherited.
4010    --
4011    -- call ADRs
4012    -- Bug 4922099
4013    --
4014    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4015         (NVL(l_actual_upg_option, 'N') = 'O') OR
4016         (NVL(l_enc_upg_option, 'N') = 'O')
4017       )
4018    THEN
4019    NULL;
4020    --
4021    --
4022    
4023    --
4024    --
4025    END IF;
4026    --
4027    -- Bug 4922099
4028    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4029           (NVL(l_enc_upg_option, 'N') = 'O')
4030         ) AND
4031         (l_bflow_method_code = 'PRIOR_ENTRY')
4032       )
4033    THEN
4034       IF
4035       --
4036       1 = 1
4037       --
4038       THEN
4039       xla_accounting_err_pkg.build_message
4040                                     (p_appli_s_name            => 'XLA'
4041                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4042                                     ,p_token_1                 => 'LINE_NUMBER'
4043                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4044                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4045                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4046                                                                              l_component_type
4047                                                                             ,l_component_code
4048                                                                             ,l_component_type_code
4049                                                                             ,l_component_appl_id
4050                                                                             ,l_amb_context_code
4051                                                                             ,l_entity_code
4052                                                                             ,l_event_class_code
4053                                                                            )
4054                                     ,p_token_3                 => 'OWNER'
4058                                                                          )
4055                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4056                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4057                                                                           ,p_lookup_code    => l_component_type_code
4059                                     ,p_token_4                 => 'PRODUCT_NAME'
4060                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4061                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4062                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4063                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4064                                     ,p_ae_header_id            =>  NULL
4065                                        );
4066 
4067         IF (C_LEVEL_ERROR>= g_log_level) THEN
4068                  trace
4069                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4070                       ,p_level    => C_LEVEL_ERROR
4071                       ,p_module   => l_log_module);
4072         END IF;
4073       END IF;
4074    END IF;
4075    --
4076    --
4077    ------------------------------------------------------------------------------------------------
4078    -- 4219869 Business Flow
4079    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4080    -- Prior Entry.  Currently, the following code is always generated.
4081    ------------------------------------------------------------------------------------------------
4082    -- No ValidateCurrentLine for business flow method of Prior Entry
4083 
4084    ------------------------------------------------------------------------------------
4085    -- 4219869 Business Flow
4086    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4087    ------------------------------------------------------------------------------------
4088    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4089 
4090    ----------------------------------------------------------------------------------
4091    -- 4219869 Business Flow
4092    -- Update journal entry status -- Need to generate this within IF <condition>
4093    ----------------------------------------------------------------------------------
4094    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4095          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4096          ,p_balance_type_code => l_balance_type_code
4097          );
4098 
4099    -------------------------------------------------------------------------------------------
4100    -- 4262811 - Generate the Accrual Reversal lines
4101    -------------------------------------------------------------------------------------------
4102    BEGIN
4103       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4104                               (g_array_event(p_event_id).array_value_num('header_index'));
4105       IF l_acc_rev_flag IS NULL THEN
4106          l_acc_rev_flag := 'N';
4107       END IF;
4108    EXCEPTION
4109       WHEN OTHERS THEN
4110          l_acc_rev_flag := 'N';
4111    END;
4112    --
4113    IF (l_acc_rev_flag = 'Y') THEN
4114 
4115        -- 4645092  ------------------------------------------------------------------------------
4116        -- To allow MPA report to determine if it should generate report process
4117        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4118        ------------------------------------------------------------------------------------------
4119 
4120        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4121        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4122    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4123    -- call ADRs
4124    -- Bug 4922099
4125    --
4126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4127         (NVL(l_actual_upg_option, 'N') = 'O') OR
4128         (NVL(l_enc_upg_option, 'N') = 'O')
4129       )
4130    THEN
4131    NULL;
4132    --
4133    --
4134    
4135    --
4136    --
4137    END IF;
4138 
4139        --
4140        -- Update the line information that should be overwritten
4141        --
4142        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4143                                          p_header_num   => 1);
4144        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4145 
4146        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4147 
4148        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4149           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4150        END IF;
4151 
4152       --
4153       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4154       --
4155       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4156           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4157       ELSE
4158           ---------------------------------------------------------------------------------------------------
4162           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4159           -- 4262811a Switch Sign
4160           ---------------------------------------------------------------------------------------------------
4161           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4163                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4164           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4165                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4166           -- 5132302
4167           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4168                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4169 
4170       END IF;
4171 
4172       -- 4955764
4173       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4174       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4175 
4176 
4177       XLA_AE_LINES_PKG.ValidateCurrentLine;
4178       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4179 
4180       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4181                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4182                ,p_balance_type_code => l_balance_type_code);
4183 
4184    END IF;
4185 
4186    -----------------------------------------------------------------------------------------
4187    -- 4262811 Multiperiod Accounting
4188    -----------------------------------------------------------------------------------------
4189      -- No MPA option is assigned.
4190 
4191 
4192 END IF;
4193 END IF;
4194 --
4195 
4196 --
4197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4198    trace
4199       (p_msg      => 'END of AcctLineType_8'
4200       ,p_level    => C_LEVEL_PROCEDURE
4201       ,p_module   => l_log_module);
4202 END IF;
4203 --
4204 EXCEPTION
4205   WHEN xla_exceptions_pkg.application_exception THEN
4206       RAISE;
4207   WHEN OTHERS THEN
4208        xla_exceptions_pkg.raise_message
4209            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_8');
4210 END AcctLineType_8;
4211 --
4212 
4213 ---------------------------------------
4214 --
4215 -- PRIVATE FUNCTION
4216 --         AcctLineType_9
4217 --
4218 ---------------------------------------
4219 PROCEDURE AcctLineType_9 (
4220   p_application_id        IN NUMBER
4221  ,p_event_id              IN NUMBER
4222  ,p_calculate_acctd_flag  IN VARCHAR2
4223  ,p_calculate_g_l_flag    IN VARCHAR2
4224  ,p_actual_flag           IN OUT VARCHAR2
4225  ,p_balance_type_code     OUT VARCHAR2
4226  ,p_gain_or_loss_ref      OUT VARCHAR2
4227  
4228 --Organization Encumbrance Reversal Indicator
4229  , p_source_4            IN VARCHAR2
4230 --Applied to Application ID
4231  , p_source_7            IN NUMBER
4232 --DISTRIBUTION_IDENTIFIER
4233  , p_source_12            IN NUMBER
4234 --Distribution Type
4235  , p_source_13            IN VARCHAR2
4236  , p_source_13_meaning    IN VARCHAR2
4237 --Encumbrance Reversal Amount Entered
4238  , p_source_15            IN NUMBER
4239 --Entered Currency Code
4240  , p_source_16            IN VARCHAR2
4241 --Transaction Encumbrance Reversal Amount
4242  , p_source_17            IN NUMBER
4243 --Costing Encumbrance Upgrade Option
4244  , p_source_18            IN VARCHAR2
4245 --Requisition Encumbrance Flag
4246  , p_source_28            IN VARCHAR2
4247 --Requisition Reserved Flag
4248  , p_source_29            IN VARCHAR2
4249 --Business Flow Requisition Distribution Type
4250  , p_source_30            IN VARCHAR2
4251 --Business Flow Requisition Entity Code
4252  , p_source_31            IN VARCHAR2
4253 --Business Flow Requisition Distribution Identifier
4254  , p_source_32            IN NUMBER
4255 --Business Flow Requisition Identifier
4256  , p_source_33            IN NUMBER
4257 --Requisition Budget Account
4258  , p_source_34            IN NUMBER
4259 --Requisition Encumbrance Type Identifier
4260  , p_source_35            IN NUMBER
4261 )
4262 IS
4263 
4264 l_component_type              VARCHAR2(80);
4265 l_component_code              VARCHAR2(30);
4266 l_component_type_code         VARCHAR2(1);
4267 l_component_appl_id           INTEGER;
4268 l_amb_context_code            VARCHAR2(30);
4269 l_entity_code                 VARCHAR2(30);
4270 l_event_class_code            VARCHAR2(30);
4271 l_ae_header_id                NUMBER;
4272 l_event_type_code             VARCHAR2(30);
4273 l_line_definition_code        VARCHAR2(30);
4274 l_line_definition_owner_code  VARCHAR2(1);
4275 --
4276 -- adr variables
4277 l_segment                     VARCHAR2(30);
4278 l_ccid                        NUMBER;
4279 l_adr_transaction_coa_id      NUMBER;
4280 l_adr_accounting_coa_id       NUMBER;
4281 l_adr_flexfield_segment_code  VARCHAR2(30);
4282 l_adr_flex_value_set_id       NUMBER;
4283 l_adr_value_type_code         VARCHAR2(30);
4284 l_adr_value_combination_id    NUMBER;
4285 l_adr_value_segment_code      VARCHAR2(30);
4286 
4287 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4291 
4288 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4289 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4290 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4292 -- 4262811 Variables ------------------------------------------------------------------------------------------
4293 l_entered_amt_idx             NUMBER;
4294 l_accted_amt_idx              NUMBER;
4295 l_acc_rev_flag                VARCHAR2(1);
4296 l_accrual_line_num            NUMBER;
4297 l_tmp_amt                     NUMBER;
4298 l_acc_rev_natural_side_code   VARCHAR2(1);
4299 
4300 l_num_entries                 NUMBER;
4301 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4302 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4303 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4304 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4305 l_recog_line_1                NUMBER;
4306 l_recog_line_2                NUMBER;
4307 
4308 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4309 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4310 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4311 
4312 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4313 
4314 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4315 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4316 
4317 ---------------------------------------------------------------------------------------------------------------
4318 
4319 
4320 --
4321 -- bulk performance
4322 --
4323 l_balance_type_code           VARCHAR2(1);
4324 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4325 l_log_module                  VARCHAR2(240);
4326 
4327 --
4328 -- Upgrade strategy
4329 --
4330 l_actual_upg_option           VARCHAR2(1);
4331 l_enc_upg_option           VARCHAR2(1);
4332 
4333 --
4334 BEGIN
4335 --
4336 IF g_log_enabled THEN
4337       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
4338 END IF;
4339 --
4340 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4341 
4342       trace
4343          (p_msg      => 'BEGIN of AcctLineType_9'
4344          ,p_level    => C_LEVEL_PROCEDURE
4345          ,p_module   => l_log_module);
4346 
4347 END IF;
4348 --
4349 l_component_type             := 'AMB_JLT';
4350 l_component_code             := 'RELIEVE_REQ_ENC_ON_DIR';
4351 l_component_type_code        := 'S';
4352 l_component_appl_id          :=  707;
4353 l_amb_context_code           := 'DEFAULT';
4354 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
4355 l_event_class_code           := 'DIR_INTERORG_RCPT';
4356 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
4357 l_line_definition_owner_code := 'S';
4358 l_line_definition_code       := 'REQ_ENCUM_ON_DIR';
4359 --
4360 l_balance_type_code          := 'E';
4361 l_segment                     := NULL;
4362 l_ccid                        := NULL;
4363 l_adr_transaction_coa_id      := NULL;
4364 l_adr_accounting_coa_id       := NULL;
4365 l_adr_flexfield_segment_code  := NULL;
4366 l_adr_flex_value_set_id       := NULL;
4367 l_adr_value_type_code         := NULL;
4368 l_adr_value_combination_id    := NULL;
4369 l_adr_value_segment_code      := NULL;
4370 
4371 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
4372 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
4373 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
4374 l_budgetary_control_flag     := 'Y';
4375 
4376 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4377 l_bflow_applied_to_amt       := NULL; -- 5132302
4378 l_entered_amt_idx            := NULL;          -- 4262811
4379 l_accted_amt_idx             := NULL;          -- 4262811
4380 l_acc_rev_flag               := NULL;          -- 4262811
4381 l_accrual_line_num           := NULL;          -- 4262811
4382 l_tmp_amt                    := NULL;          -- 4262811
4383 --
4384  
4385 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4386     l_balance_type_code <> 'B' THEN
4387 IF NVL(p_source_28,'
4388 ') =  'Y' AND 
4389 NVL(p_source_4,'
4390 ') =  'Y' AND 
4391 NVL(p_source_29,'
4392 ') =  'Y'
4393  THEN 
4394 
4395    --
4396    XLA_AE_LINES_PKG.SetNewLine;
4397 
4398    p_balance_type_code          := l_balance_type_code;
4399    -- set the flag so later we will know whether the gain loss line needs to be created
4400    
4401    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4402      p_actual_flag :='A';
4403    END IF;
4404 
4405    --
4406    -- bulk performance
4407    --
4408    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4409                                       p_header_num   => 0); -- 4262811
4410    --
4411    -- set accounting line options
4412    --
4413    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4414            p_natural_side_code          => 'C'
4415          , p_gain_or_loss_flag          => 'N'
4416          , p_gl_transfer_mode_code      => 'S'
4417          , p_acct_entry_type_code       => 'E'
4418          , p_switch_side_flag           => 'N'
4419          , p_merge_duplicate_code       => 'N'
4420          );
4421    --
4422    l_acc_rev_natural_side_code := 'D';  -- 4262811
4426    --
4423    -- 
4424    --
4425    -- set accounting line type info
4427    xla_ae_lines_pkg.SetAcctLineType
4428       (p_component_type             => l_component_type
4429       ,p_event_type_code            => l_event_type_code
4430       ,p_line_definition_owner_code => l_line_definition_owner_code
4431       ,p_line_definition_code       => l_line_definition_code
4432       ,p_accounting_line_code       => l_component_code
4433       ,p_accounting_line_type_code  => l_component_type_code
4434       ,p_accounting_line_appl_id    => l_component_appl_id
4435       ,p_amb_context_code           => l_amb_context_code
4436       ,p_entity_code                => l_entity_code
4437       ,p_event_class_code           => l_event_class_code);
4438    --
4439    -- set accounting class
4440    --
4441    xla_ae_lines_pkg.SetAcctClass(
4442            p_accounting_class_code  => 'REQUISITION'
4443          , p_ae_header_id           => l_ae_header_id
4444          );
4445 
4446    --
4447    -- set rounding class
4448    --
4449    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4450                       'REQUISITION';
4451 
4452    --
4453    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4454    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4455    --
4456    -- bulk performance
4457    --
4458    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4459 
4460    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4461       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4462 
4463    -- 4955764
4464    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4465       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4466 
4467    -- 4458381 Public Sector Enh
4468    
4469    --
4470    -- set accounting attributes for the line type
4471    --
4472    l_entered_amt_idx := 17;
4473    l_accted_amt_idx  := 19;
4474    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4475    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4476    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
4477    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4478    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
4479    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4480    l_rec_acct_attrs.array_char_value(3)  := p_source_31;
4481    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4482    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_32);
4483    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4484    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_33);
4485    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4486    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
4487    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4488    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
4489    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4490    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_34);
4491    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4492    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
4493    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4494    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
4495    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4496    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
4497    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4498    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_34);
4499    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4500    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
4501    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4502    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
4503    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4504    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
4505    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4506    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
4507    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4508    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
4509    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4510    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
4511    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
4512    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
4513    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
4514    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
4515    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
4516    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
4517 
4518    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4519    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4520 
4521    ---------------------------------------------------------------------------------------------------------------
4522    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4526    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4523    ---------------------------------------------------------------------------------------------------------------
4524    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4525 
4527    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4528 
4529    IF xla_accounting_cache_pkg.GetValueChar
4530          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4531          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4532    AND l_bflow_method_code = 'PRIOR_ENTRY'
4533 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4534    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4535          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4536        )
4537    THEN
4538          xla_ae_lines_pkg.BflowUpgEntry
4539            (p_business_method_code    => l_bflow_method_code
4540            ,p_business_class_code     => l_bflow_class_code
4541            ,p_balance_type            => l_balance_type_code);
4542    ELSE
4543       NULL;
4544 XLA_AE_LINES_PKG.business_flow_validation(
4545                                 p_business_method_code     => l_bflow_method_code
4546                                ,p_business_class_code      => l_bflow_class_code
4547                                ,p_inherit_description_flag => l_inherit_desc_flag);
4548    END IF;
4549 
4550    --
4551    -- call analytical criteria
4552    --
4553    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4554    --
4555    -- call description
4556    --
4557    -- No description or it is inherited.
4558    --
4559    -- call ADRs
4560    -- Bug 4922099
4561    --
4562    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4563         (NVL(l_actual_upg_option, 'N') = 'O') OR
4564         (NVL(l_enc_upg_option, 'N') = 'O')
4565       )
4566    THEN
4567    NULL;
4568    --
4569    --
4570    
4571    --
4572    --
4573    END IF;
4574    --
4575    -- Bug 4922099
4576    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4577           (NVL(l_enc_upg_option, 'N') = 'O')
4578         ) AND
4579         (l_bflow_method_code = 'PRIOR_ENTRY')
4580       )
4581    THEN
4582       IF
4583       --
4584       1 = 1
4585       --
4586       THEN
4587       xla_accounting_err_pkg.build_message
4588                                     (p_appli_s_name            => 'XLA'
4589                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4590                                     ,p_token_1                 => 'LINE_NUMBER'
4591                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4592                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4593                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4594                                                                              l_component_type
4595                                                                             ,l_component_code
4596                                                                             ,l_component_type_code
4597                                                                             ,l_component_appl_id
4598                                                                             ,l_amb_context_code
4599                                                                             ,l_entity_code
4600                                                                             ,l_event_class_code
4601                                                                            )
4602                                     ,p_token_3                 => 'OWNER'
4603                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4604                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4605                                                                           ,p_lookup_code    => l_component_type_code
4606                                                                          )
4607                                     ,p_token_4                 => 'PRODUCT_NAME'
4608                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4609                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4610                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4611                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4612                                     ,p_ae_header_id            =>  NULL
4613                                        );
4614 
4615         IF (C_LEVEL_ERROR>= g_log_level) THEN
4616                  trace
4617                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4618                       ,p_level    => C_LEVEL_ERROR
4619                       ,p_module   => l_log_module);
4620         END IF;
4621       END IF;
4622    END IF;
4623    --
4624    --
4625    ------------------------------------------------------------------------------------------------
4626    -- 4219869 Business Flow
4630    -- No ValidateCurrentLine for business flow method of Prior Entry
4627    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4628    -- Prior Entry.  Currently, the following code is always generated.
4629    ------------------------------------------------------------------------------------------------
4631 
4632    ------------------------------------------------------------------------------------
4633    -- 4219869 Business Flow
4634    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4635    ------------------------------------------------------------------------------------
4636    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4637 
4638    ----------------------------------------------------------------------------------
4639    -- 4219869 Business Flow
4640    -- Update journal entry status -- Need to generate this within IF <condition>
4641    ----------------------------------------------------------------------------------
4642    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4643          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4644          ,p_balance_type_code => l_balance_type_code
4645          );
4646 
4647    -------------------------------------------------------------------------------------------
4648    -- 4262811 - Generate the Accrual Reversal lines
4649    -------------------------------------------------------------------------------------------
4650    BEGIN
4651       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4652                               (g_array_event(p_event_id).array_value_num('header_index'));
4653       IF l_acc_rev_flag IS NULL THEN
4654          l_acc_rev_flag := 'N';
4655       END IF;
4656    EXCEPTION
4657       WHEN OTHERS THEN
4658          l_acc_rev_flag := 'N';
4659    END;
4660    --
4661    IF (l_acc_rev_flag = 'Y') THEN
4662 
4663        -- 4645092  ------------------------------------------------------------------------------
4664        -- To allow MPA report to determine if it should generate report process
4665        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4666        ------------------------------------------------------------------------------------------
4667 
4668        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4669        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4670    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4671    -- call ADRs
4672    -- Bug 4922099
4673    --
4674    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4675         (NVL(l_actual_upg_option, 'N') = 'O') OR
4676         (NVL(l_enc_upg_option, 'N') = 'O')
4677       )
4678    THEN
4679    NULL;
4680    --
4681    --
4682    
4683    --
4684    --
4685    END IF;
4686 
4687        --
4688        -- Update the line information that should be overwritten
4689        --
4690        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4691                                          p_header_num   => 1);
4692        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4693 
4694        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4695 
4696        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4697           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4698        END IF;
4699 
4700       --
4701       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4702       --
4703       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4704           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4705       ELSE
4706           ---------------------------------------------------------------------------------------------------
4707           -- 4262811a Switch Sign
4708           ---------------------------------------------------------------------------------------------------
4709           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4710           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4711                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4712           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4713                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4714           -- 5132302
4715           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4716                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4717 
4718       END IF;
4719 
4720       -- 4955764
4721       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4722       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4723 
4724 
4725       XLA_AE_LINES_PKG.ValidateCurrentLine;
4726       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4727 
4728       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4732    END IF;
4729                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4730                ,p_balance_type_code => l_balance_type_code);
4731 
4733 
4734    -----------------------------------------------------------------------------------------
4735    -- 4262811 Multiperiod Accounting
4736    -----------------------------------------------------------------------------------------
4737      -- No MPA option is assigned.
4738 
4739 
4740 END IF;
4741 END IF;
4742 --
4743 
4744 --
4745 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4746    trace
4747       (p_msg      => 'END of AcctLineType_9'
4748       ,p_level    => C_LEVEL_PROCEDURE
4749       ,p_module   => l_log_module);
4750 END IF;
4751 --
4752 EXCEPTION
4753   WHEN xla_exceptions_pkg.application_exception THEN
4754       RAISE;
4755   WHEN OTHERS THEN
4756        xla_exceptions_pkg.raise_message
4757            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_9');
4758 END AcctLineType_9;
4759 --
4760 
4761 ---------------------------------------
4762 --
4763 -- PRIVATE FUNCTION
4764 --         AcctLineType_10
4765 --
4766 ---------------------------------------
4767 PROCEDURE AcctLineType_10 (
4768   p_application_id        IN NUMBER
4769  ,p_event_id              IN NUMBER
4770  ,p_calculate_acctd_flag  IN VARCHAR2
4771  ,p_calculate_g_l_flag    IN VARCHAR2
4772  ,p_actual_flag           IN OUT VARCHAR2
4773  ,p_balance_type_code     OUT VARCHAR2
4774  ,p_gain_or_loss_ref      OUT VARCHAR2
4775  
4776 --Organization Encumbrance Reversal Indicator
4777  , p_source_4            IN VARCHAR2
4778 --Accounting Line Type
4779  , p_source_6            IN NUMBER
4780 --Applied to Application ID
4781  , p_source_7            IN NUMBER
4782 --DISTRIBUTION_IDENTIFIER
4783  , p_source_12            IN NUMBER
4784 --Distribution Type
4785  , p_source_13            IN VARCHAR2
4786  , p_source_13_meaning    IN VARCHAR2
4787 --Encumbrance Reversal Amount Entered
4788  , p_source_15            IN NUMBER
4789 --Entered Currency Code
4790  , p_source_16            IN VARCHAR2
4791 --Transaction Encumbrance Reversal Amount
4792  , p_source_17            IN NUMBER
4793 --Costing Encumbrance Upgrade Option
4794  , p_source_18            IN VARCHAR2
4795 --Requisition Encumbrance Flag
4796  , p_source_28            IN VARCHAR2
4797 --Requisition Reserved Flag
4798  , p_source_29            IN VARCHAR2
4799 --Business Flow Requisition Distribution Type
4800  , p_source_30            IN VARCHAR2
4801 --Business Flow Requisition Entity Code
4802  , p_source_31            IN VARCHAR2
4803 --Business Flow Requisition Distribution Identifier
4804  , p_source_32            IN NUMBER
4805 --Business Flow Requisition Identifier
4806  , p_source_33            IN NUMBER
4807 --Requisition Budget Account
4808  , p_source_34            IN NUMBER
4809 --Requisition Encumbrance Type Identifier
4810  , p_source_35            IN NUMBER
4811 )
4812 IS
4813 
4814 l_component_type              VARCHAR2(80);
4815 l_component_code              VARCHAR2(30);
4816 l_component_type_code         VARCHAR2(1);
4817 l_component_appl_id           INTEGER;
4818 l_amb_context_code            VARCHAR2(30);
4819 l_entity_code                 VARCHAR2(30);
4820 l_event_class_code            VARCHAR2(30);
4821 l_ae_header_id                NUMBER;
4822 l_event_type_code             VARCHAR2(30);
4823 l_line_definition_code        VARCHAR2(30);
4824 l_line_definition_owner_code  VARCHAR2(1);
4825 --
4826 -- adr variables
4827 l_segment                     VARCHAR2(30);
4828 l_ccid                        NUMBER;
4829 l_adr_transaction_coa_id      NUMBER;
4830 l_adr_accounting_coa_id       NUMBER;
4831 l_adr_flexfield_segment_code  VARCHAR2(30);
4832 l_adr_flex_value_set_id       NUMBER;
4833 l_adr_value_type_code         VARCHAR2(30);
4834 l_adr_value_combination_id    NUMBER;
4835 l_adr_value_segment_code      VARCHAR2(30);
4836 
4837 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4838 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4839 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4840 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4841 
4842 -- 4262811 Variables ------------------------------------------------------------------------------------------
4843 l_entered_amt_idx             NUMBER;
4844 l_accted_amt_idx              NUMBER;
4845 l_acc_rev_flag                VARCHAR2(1);
4846 l_accrual_line_num            NUMBER;
4847 l_tmp_amt                     NUMBER;
4848 l_acc_rev_natural_side_code   VARCHAR2(1);
4849 
4850 l_num_entries                 NUMBER;
4851 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4852 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4853 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4854 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4855 l_recog_line_1                NUMBER;
4856 l_recog_line_2                NUMBER;
4857 
4858 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4859 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4860 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4861 
4862 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4863 
4867 ---------------------------------------------------------------------------------------------------------------
4864 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4865 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4866 
4868 
4869 
4870 --
4871 -- bulk performance
4872 --
4873 l_balance_type_code           VARCHAR2(1);
4874 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4875 l_log_module                  VARCHAR2(240);
4876 
4877 --
4878 -- Upgrade strategy
4879 --
4880 l_actual_upg_option           VARCHAR2(1);
4881 l_enc_upg_option           VARCHAR2(1);
4882 
4883 --
4884 BEGIN
4885 --
4886 IF g_log_enabled THEN
4887       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
4888 END IF;
4889 --
4890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4891 
4892       trace
4893          (p_msg      => 'BEGIN of AcctLineType_10'
4894          ,p_level    => C_LEVEL_PROCEDURE
4895          ,p_module   => l_log_module);
4896 
4897 END IF;
4898 --
4899 l_component_type             := 'AMB_JLT';
4900 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBR';
4901 l_component_type_code        := 'S';
4902 l_component_appl_id          :=  707;
4903 l_amb_context_code           := 'DEFAULT';
4904 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
4905 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
4906 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
4907 l_line_definition_owner_code := 'S';
4908 l_line_definition_code       := 'REQ_ENCUM_ON_REC_IIRFOBR';
4909 --
4910 l_balance_type_code          := 'E';
4911 l_segment                     := NULL;
4912 l_ccid                        := NULL;
4913 l_adr_transaction_coa_id      := NULL;
4914 l_adr_accounting_coa_id       := NULL;
4915 l_adr_flexfield_segment_code  := NULL;
4916 l_adr_flex_value_set_id       := NULL;
4917 l_adr_value_type_code         := NULL;
4918 l_adr_value_combination_id    := NULL;
4919 l_adr_value_segment_code      := NULL;
4920 
4921 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
4922 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
4923 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
4924 l_budgetary_control_flag     := 'Y';
4925 
4926 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4927 l_bflow_applied_to_amt       := NULL; -- 5132302
4928 l_entered_amt_idx            := NULL;          -- 4262811
4929 l_accted_amt_idx             := NULL;          -- 4262811
4930 l_acc_rev_flag               := NULL;          -- 4262811
4931 l_accrual_line_num           := NULL;          -- 4262811
4932 l_tmp_amt                    := NULL;          -- 4262811
4933 --
4934  
4935 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4936     l_balance_type_code <> 'B' THEN
4937 IF NVL(p_source_28,'
4938 ') =  'Y' AND 
4939 NVL(p_source_4,'
4940 ') =  'Y' AND 
4941 NVL(p_source_29,'
4942 ') =  'Y' AND 
4943 NVL(p_source_6,9E125) =  15
4944  THEN 
4945 
4946    --
4947    XLA_AE_LINES_PKG.SetNewLine;
4948 
4949    p_balance_type_code          := l_balance_type_code;
4950    -- set the flag so later we will know whether the gain loss line needs to be created
4951    
4952    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4953      p_actual_flag :='A';
4954    END IF;
4955 
4956    --
4957    -- bulk performance
4958    --
4959    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4960                                       p_header_num   => 0); -- 4262811
4961    --
4962    -- set accounting line options
4963    --
4964    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4965            p_natural_side_code          => 'C'
4966          , p_gain_or_loss_flag          => 'N'
4967          , p_gl_transfer_mode_code      => 'S'
4968          , p_acct_entry_type_code       => 'E'
4969          , p_switch_side_flag           => 'N'
4970          , p_merge_duplicate_code       => 'N'
4971          );
4972    --
4973    l_acc_rev_natural_side_code := 'D';  -- 4262811
4974    -- 
4975    --
4976    -- set accounting line type info
4977    --
4978    xla_ae_lines_pkg.SetAcctLineType
4979       (p_component_type             => l_component_type
4980       ,p_event_type_code            => l_event_type_code
4981       ,p_line_definition_owner_code => l_line_definition_owner_code
4982       ,p_line_definition_code       => l_line_definition_code
4983       ,p_accounting_line_code       => l_component_code
4984       ,p_accounting_line_type_code  => l_component_type_code
4985       ,p_accounting_line_appl_id    => l_component_appl_id
4986       ,p_amb_context_code           => l_amb_context_code
4987       ,p_entity_code                => l_entity_code
4988       ,p_event_class_code           => l_event_class_code);
4989    --
4990    -- set accounting class
4991    --
4992    xla_ae_lines_pkg.SetAcctClass(
4993            p_accounting_class_code  => 'REQUISITION'
4994          , p_ae_header_id           => l_ae_header_id
4995          );
4996 
4997    --
4998    -- set rounding class
4999    --
5000    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5004    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5001                       'REQUISITION';
5002 
5003    --
5005    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5006    --
5007    -- bulk performance
5008    --
5009    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5010 
5011    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5012       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5013 
5014    -- 4955764
5015    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5017 
5018    -- 4458381 Public Sector Enh
5019    
5020    --
5021    -- set accounting attributes for the line type
5022    --
5023    l_entered_amt_idx := 17;
5024    l_accted_amt_idx  := 19;
5025    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5026    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
5027    l_rec_acct_attrs.array_num_value(1)  := p_source_7;
5028    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5029    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
5030    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
5031    l_rec_acct_attrs.array_char_value(3)  := p_source_31;
5032    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
5033    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_32);
5034    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5035    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_33);
5036    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
5037    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_12);
5038    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
5039    l_rec_acct_attrs.array_char_value(7)  := p_source_13;
5040    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
5041    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_34);
5042    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
5043    l_rec_acct_attrs.array_num_value(9)  := p_source_15;
5044    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
5045    l_rec_acct_attrs.array_char_value(10)  := p_source_16;
5046    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
5047    l_rec_acct_attrs.array_num_value(11)  := p_source_17;
5048    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
5049    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_34);
5050    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
5051    l_rec_acct_attrs.array_num_value(13)  := p_source_15;
5052    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
5053    l_rec_acct_attrs.array_char_value(14)  := p_source_16;
5054    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
5055    l_rec_acct_attrs.array_num_value(15)  := p_source_17;
5056    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
5057    l_rec_acct_attrs.array_char_value(16)  := p_source_18;
5058    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
5059    l_rec_acct_attrs.array_num_value(17)  := p_source_15;
5060    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
5061    l_rec_acct_attrs.array_char_value(18)  := p_source_16;
5062    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
5063    l_rec_acct_attrs.array_num_value(19)  := p_source_17;
5064    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
5065    l_rec_acct_attrs.array_num_value(20)  := p_source_35;
5066    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
5067    l_rec_acct_attrs.array_num_value(21)  := p_source_35;
5068 
5069    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5070    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5071 
5072    ---------------------------------------------------------------------------------------------------------------
5073    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5074    ---------------------------------------------------------------------------------------------------------------
5075    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5076 
5077    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5078    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5079 
5080    IF xla_accounting_cache_pkg.GetValueChar
5081          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5082          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5083    AND l_bflow_method_code = 'PRIOR_ENTRY'
5084 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5085    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5086          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5087        )
5088    THEN
5089          xla_ae_lines_pkg.BflowUpgEntry
5090            (p_business_method_code    => l_bflow_method_code
5091            ,p_business_class_code     => l_bflow_class_code
5092            ,p_balance_type            => l_balance_type_code);
5093    ELSE
5094       NULL;
5095 XLA_AE_LINES_PKG.business_flow_validation(
5099    END IF;
5096                                 p_business_method_code     => l_bflow_method_code
5097                                ,p_business_class_code      => l_bflow_class_code
5098                                ,p_inherit_description_flag => l_inherit_desc_flag);
5100 
5101    --
5102    -- call analytical criteria
5103    --
5104    -- Inherited Analytical Criteria for business flow method of Prior Entry.
5105    --
5106    -- call description
5107    --
5108    -- No description or it is inherited.
5109    --
5110    -- call ADRs
5111    -- Bug 4922099
5112    --
5113    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5114         (NVL(l_actual_upg_option, 'N') = 'O') OR
5115         (NVL(l_enc_upg_option, 'N') = 'O')
5116       )
5117    THEN
5118    NULL;
5119    --
5120    --
5121    
5122    --
5123    --
5124    END IF;
5125    --
5126    -- Bug 4922099
5127    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5128           (NVL(l_enc_upg_option, 'N') = 'O')
5129         ) AND
5130         (l_bflow_method_code = 'PRIOR_ENTRY')
5131       )
5132    THEN
5133       IF
5134       --
5135       1 = 1
5136       --
5137       THEN
5138       xla_accounting_err_pkg.build_message
5139                                     (p_appli_s_name            => 'XLA'
5140                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5141                                     ,p_token_1                 => 'LINE_NUMBER'
5142                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5143                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5144                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5145                                                                              l_component_type
5146                                                                             ,l_component_code
5147                                                                             ,l_component_type_code
5148                                                                             ,l_component_appl_id
5149                                                                             ,l_amb_context_code
5150                                                                             ,l_entity_code
5151                                                                             ,l_event_class_code
5152                                                                            )
5153                                     ,p_token_3                 => 'OWNER'
5154                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5155                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5156                                                                           ,p_lookup_code    => l_component_type_code
5157                                                                          )
5158                                     ,p_token_4                 => 'PRODUCT_NAME'
5159                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5160                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5161                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5162                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5163                                     ,p_ae_header_id            =>  NULL
5164                                        );
5165 
5166         IF (C_LEVEL_ERROR>= g_log_level) THEN
5167                  trace
5168                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5169                       ,p_level    => C_LEVEL_ERROR
5170                       ,p_module   => l_log_module);
5171         END IF;
5172       END IF;
5173    END IF;
5174    --
5175    --
5176    ------------------------------------------------------------------------------------------------
5177    -- 4219869 Business Flow
5178    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5179    -- Prior Entry.  Currently, the following code is always generated.
5180    ------------------------------------------------------------------------------------------------
5181    -- No ValidateCurrentLine for business flow method of Prior Entry
5182 
5183    ------------------------------------------------------------------------------------
5184    -- 4219869 Business Flow
5185    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5186    ------------------------------------------------------------------------------------
5187    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5188 
5189    ----------------------------------------------------------------------------------
5190    -- 4219869 Business Flow
5191    -- Update journal entry status -- Need to generate this within IF <condition>
5192    ----------------------------------------------------------------------------------
5193    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5194          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5195          ,p_balance_type_code => l_balance_type_code
5196          );
5197 
5198    -------------------------------------------------------------------------------------------
5202       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5199    -- 4262811 - Generate the Accrual Reversal lines
5200    -------------------------------------------------------------------------------------------
5201    BEGIN
5203                               (g_array_event(p_event_id).array_value_num('header_index'));
5204       IF l_acc_rev_flag IS NULL THEN
5205          l_acc_rev_flag := 'N';
5206       END IF;
5207    EXCEPTION
5208       WHEN OTHERS THEN
5209          l_acc_rev_flag := 'N';
5210    END;
5211    --
5212    IF (l_acc_rev_flag = 'Y') THEN
5213 
5214        -- 4645092  ------------------------------------------------------------------------------
5215        -- To allow MPA report to determine if it should generate report process
5216        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5217        ------------------------------------------------------------------------------------------
5218 
5219        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5220        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5221    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5222    -- call ADRs
5223    -- Bug 4922099
5224    --
5225    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5226         (NVL(l_actual_upg_option, 'N') = 'O') OR
5227         (NVL(l_enc_upg_option, 'N') = 'O')
5228       )
5229    THEN
5230    NULL;
5231    --
5232    --
5233    
5234    --
5235    --
5236    END IF;
5237 
5238        --
5239        -- Update the line information that should be overwritten
5240        --
5241        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5242                                          p_header_num   => 1);
5243        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5244 
5245        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5246 
5247        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5248           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5249        END IF;
5250 
5251       --
5252       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5253       --
5254       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5255           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5256       ELSE
5257           ---------------------------------------------------------------------------------------------------
5258           -- 4262811a Switch Sign
5259           ---------------------------------------------------------------------------------------------------
5260           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5261           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5262                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5263           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5264                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5265           -- 5132302
5266           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5267                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5268 
5269       END IF;
5270 
5271       -- 4955764
5272       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5273       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5274 
5275 
5276       XLA_AE_LINES_PKG.ValidateCurrentLine;
5277       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5278 
5279       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5280                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5281                ,p_balance_type_code => l_balance_type_code);
5282 
5283    END IF;
5284 
5285    -----------------------------------------------------------------------------------------
5286    -- 4262811 Multiperiod Accounting
5287    -----------------------------------------------------------------------------------------
5288      -- No MPA option is assigned.
5289 
5290 
5291 END IF;
5292 END IF;
5293 --
5294 
5295 --
5296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5297    trace
5298       (p_msg      => 'END of AcctLineType_10'
5299       ,p_level    => C_LEVEL_PROCEDURE
5300       ,p_module   => l_log_module);
5301 END IF;
5302 --
5303 EXCEPTION
5304   WHEN xla_exceptions_pkg.application_exception THEN
5305       RAISE;
5306   WHEN OTHERS THEN
5307        xla_exceptions_pkg.raise_message
5308            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_10');
5309 END AcctLineType_10;
5310 --
5311 
5312 ---------------------------------------
5313 --
5314 -- PRIVATE FUNCTION
5315 --         AcctLineType_11
5316 --
5317 ---------------------------------------
5318 PROCEDURE AcctLineType_11 (
5319   p_application_id        IN NUMBER
5320  ,p_event_id              IN NUMBER
5321  ,p_calculate_acctd_flag  IN VARCHAR2
5325  ,p_gain_or_loss_ref      OUT VARCHAR2
5322  ,p_calculate_g_l_flag    IN VARCHAR2
5323  ,p_actual_flag           IN OUT VARCHAR2
5324  ,p_balance_type_code     OUT VARCHAR2
5326  
5327 --Cost Management Default Account
5328  , p_source_1            IN NUMBER
5329 --Accounting Line Type
5330  , p_source_6            IN NUMBER
5331 --DISTRIBUTION_IDENTIFIER
5332  , p_source_12            IN NUMBER
5333 --Distribution Type
5334  , p_source_13            IN VARCHAR2
5335  , p_source_13_meaning    IN VARCHAR2
5336 --Entered Currency Code
5337  , p_source_16            IN VARCHAR2
5338 --Entered Amount
5339  , p_source_20            IN NUMBER
5340 --Currency Conversion Date
5341  , p_source_21            IN DATE
5342 --Currency Conversion Rate
5343  , p_source_22            IN NUMBER
5344 --Currency Conversion Type
5345  , p_source_23            IN VARCHAR2
5346 --Accounted Amount
5347  , p_source_24            IN NUMBER
5348 )
5349 IS
5350 
5351 l_component_type              VARCHAR2(80);
5352 l_component_code              VARCHAR2(30);
5353 l_component_type_code         VARCHAR2(1);
5354 l_component_appl_id           INTEGER;
5355 l_amb_context_code            VARCHAR2(30);
5356 l_entity_code                 VARCHAR2(30);
5357 l_event_class_code            VARCHAR2(30);
5358 l_ae_header_id                NUMBER;
5359 l_event_type_code             VARCHAR2(30);
5360 l_line_definition_code        VARCHAR2(30);
5361 l_line_definition_owner_code  VARCHAR2(1);
5362 --
5363 -- adr variables
5364 l_segment                     VARCHAR2(30);
5365 l_ccid                        NUMBER;
5366 l_adr_transaction_coa_id      NUMBER;
5367 l_adr_accounting_coa_id       NUMBER;
5368 l_adr_flexfield_segment_code  VARCHAR2(30);
5369 l_adr_flex_value_set_id       NUMBER;
5370 l_adr_value_type_code         VARCHAR2(30);
5371 l_adr_value_combination_id    NUMBER;
5372 l_adr_value_segment_code      VARCHAR2(30);
5373 
5374 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5375 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5376 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5377 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5378 
5379 -- 4262811 Variables ------------------------------------------------------------------------------------------
5380 l_entered_amt_idx             NUMBER;
5381 l_accted_amt_idx              NUMBER;
5382 l_acc_rev_flag                VARCHAR2(1);
5383 l_accrual_line_num            NUMBER;
5384 l_tmp_amt                     NUMBER;
5385 l_acc_rev_natural_side_code   VARCHAR2(1);
5386 
5387 l_num_entries                 NUMBER;
5388 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5389 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5390 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5391 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5392 l_recog_line_1                NUMBER;
5393 l_recog_line_2                NUMBER;
5394 
5395 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5396 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5397 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5398 
5399 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5400 
5401 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5402 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5403 
5404 ---------------------------------------------------------------------------------------------------------------
5405 
5406 
5407 --
5408 -- bulk performance
5409 --
5410 l_balance_type_code           VARCHAR2(1);
5411 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5412 l_log_module                  VARCHAR2(240);
5413 
5414 --
5415 -- Upgrade strategy
5416 --
5417 l_actual_upg_option           VARCHAR2(1);
5418 l_enc_upg_option           VARCHAR2(1);
5419 
5420 --
5421 BEGIN
5422 --
5423 IF g_log_enabled THEN
5424       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
5425 END IF;
5426 --
5427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5428 
5429       trace
5430          (p_msg      => 'BEGIN of AcctLineType_11'
5431          ,p_level    => C_LEVEL_PROCEDURE
5432          ,p_module   => l_log_module);
5433 
5434 END IF;
5435 --
5436 l_component_type             := 'AMB_JLT';
5437 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBS';
5438 l_component_type_code        := 'S';
5439 l_component_appl_id          :=  707;
5440 l_amb_context_code           := 'DEFAULT';
5441 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
5442 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
5443 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_ALL';
5444 l_line_definition_owner_code := 'S';
5445 l_line_definition_code       := 'REQ_ENCUM_ON_REC_IIRFOBS';
5446 --
5447 l_balance_type_code          := 'E';
5448 l_segment                     := NULL;
5449 l_ccid                        := NULL;
5450 l_adr_transaction_coa_id      := NULL;
5451 l_adr_accounting_coa_id       := NULL;
5452 l_adr_flexfield_segment_code  := NULL;
5453 l_adr_flex_value_set_id       := NULL;
5454 l_adr_value_type_code         := NULL;
5455 l_adr_value_combination_id    := NULL;
5456 l_adr_value_segment_code      := NULL;
5457 
5461 l_budgetary_control_flag     := 'Y';
5458 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5459 l_bflow_class_code           := '';    -- 4219869 Business Flow
5460 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5462 
5463 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5464 l_bflow_applied_to_amt       := NULL; -- 5132302
5465 l_entered_amt_idx            := NULL;          -- 4262811
5466 l_accted_amt_idx             := NULL;          -- 4262811
5467 l_acc_rev_flag               := NULL;          -- 4262811
5468 l_accrual_line_num           := NULL;          -- 4262811
5469 l_tmp_amt                    := NULL;          -- 4262811
5470 --
5471  
5472 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5473     l_balance_type_code <> 'B' THEN
5474 IF NVL(p_source_6,9E125) =  15
5475  THEN 
5476 
5477    --
5478    XLA_AE_LINES_PKG.SetNewLine;
5479 
5480    p_balance_type_code          := l_balance_type_code;
5481    -- set the flag so later we will know whether the gain loss line needs to be created
5482    
5483    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5484      p_actual_flag :='A';
5485    END IF;
5486 
5487    --
5488    -- bulk performance
5489    --
5490    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5491                                       p_header_num   => 0); -- 4262811
5492    --
5493    -- set accounting line options
5494    --
5495    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5496            p_natural_side_code          => 'D'
5497          , p_gain_or_loss_flag          => 'N'
5498          , p_gl_transfer_mode_code      => 'S'
5499          , p_acct_entry_type_code       => 'E'
5500          , p_switch_side_flag           => 'Y'
5501          , p_merge_duplicate_code       => 'N'
5502          );
5503    --
5504    l_acc_rev_natural_side_code := 'C';  -- 4262811
5505    -- 
5506    --
5507    -- set accounting line type info
5508    --
5509    xla_ae_lines_pkg.SetAcctLineType
5510       (p_component_type             => l_component_type
5511       ,p_event_type_code            => l_event_type_code
5512       ,p_line_definition_owner_code => l_line_definition_owner_code
5513       ,p_line_definition_code       => l_line_definition_code
5514       ,p_accounting_line_code       => l_component_code
5515       ,p_accounting_line_type_code  => l_component_type_code
5516       ,p_accounting_line_appl_id    => l_component_appl_id
5517       ,p_amb_context_code           => l_amb_context_code
5518       ,p_entity_code                => l_entity_code
5519       ,p_event_class_code           => l_event_class_code);
5520    --
5521    -- set accounting class
5522    --
5523    xla_ae_lines_pkg.SetAcctClass(
5524            p_accounting_class_code  => 'REQUISITION'
5525          , p_ae_header_id           => l_ae_header_id
5526          );
5527 
5528    --
5529    -- set rounding class
5530    --
5531    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5532                       'REQUISITION';
5533 
5534    --
5535    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5536    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5537    --
5538    -- bulk performance
5539    --
5540    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5541 
5542    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5543       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5544 
5545    -- 4955764
5546    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5547       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5548 
5549    -- 4458381 Public Sector Enh
5550       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
5551    --
5552    -- set accounting attributes for the line type
5553    --
5554    l_entered_amt_idx := 3;
5555    l_accted_amt_idx  := 8;
5556    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5557    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5558    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_12);
5559    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5560    l_rec_acct_attrs.array_char_value(2)  := p_source_13;
5561    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5562    l_rec_acct_attrs.array_num_value(3)  := p_source_20;
5563    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5564    l_rec_acct_attrs.array_char_value(4)  := p_source_16;
5565    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5566    l_rec_acct_attrs.array_date_value(5)  := p_source_21;
5567    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5568    l_rec_acct_attrs.array_num_value(6)  := p_source_22;
5569    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5570    l_rec_acct_attrs.array_char_value(7)  := p_source_23;
5571    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5572    l_rec_acct_attrs.array_num_value(8)  := p_source_24;
5573 
5574    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5575    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5576 
5580    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5577    ---------------------------------------------------------------------------------------------------------------
5578    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5579    ---------------------------------------------------------------------------------------------------------------
5581 
5582    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5583    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5584 
5585    IF xla_accounting_cache_pkg.GetValueChar
5586          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5587          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5588    AND l_bflow_method_code = 'PRIOR_ENTRY'
5589 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5590    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5591          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5592        )
5593    THEN
5594          xla_ae_lines_pkg.BflowUpgEntry
5595            (p_business_method_code    => l_bflow_method_code
5596            ,p_business_class_code     => l_bflow_class_code
5597            ,p_balance_type            => l_balance_type_code);
5598    ELSE
5599       NULL;
5600 -- No business flow processing for business flow method of NONE.
5601    END IF;
5602 
5603    --
5604    -- call analytical criteria
5605    --
5606    
5607    --
5608    -- call description
5609    --
5610    -- No description or it is inherited.
5611    --
5612    -- call ADRs
5613    -- Bug 4922099
5614    --
5615    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5616         (NVL(l_actual_upg_option, 'N') = 'O') OR
5617         (NVL(l_enc_upg_option, 'N') = 'O')
5618       )
5619    THEN
5620    NULL;
5621    --
5622    --
5623    
5624   l_ccid := AcctDerRule_1(
5625            p_application_id           => p_application_id
5626          , p_ae_header_id             => l_ae_header_id 
5627 , p_source_1 => p_source_1
5628          , x_transaction_coa_id       => l_adr_transaction_coa_id
5629          , x_accounting_coa_id        => l_adr_accounting_coa_id
5630          , x_value_type_code          => l_adr_value_type_code
5631          , p_side                     => 'NA'
5632    );
5633 
5634    xla_ae_lines_pkg.set_ccid(
5635     p_code_combination_id          => l_ccid
5636   , p_value_type_code              => l_adr_value_type_code
5637   , p_transaction_coa_id           => l_adr_transaction_coa_id
5638   , p_accounting_coa_id            => l_adr_accounting_coa_id
5639   , p_adr_code                     => 'CST_DEFAULT'
5640   , p_adr_type_code                => 'S'
5641   , p_component_type               => l_component_type
5642   , p_component_code               => l_component_code
5643   , p_component_type_code          => l_component_type_code
5644   , p_component_appl_id            => l_component_appl_id
5645   , p_amb_context_code             => l_amb_context_code
5646   , p_side                         => 'NA'
5647   );
5648 
5649 
5650    --
5651    --
5652    END IF;
5653    --
5654    -- Bug 4922099
5655    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5656           (NVL(l_enc_upg_option, 'N') = 'O')
5657         ) AND
5658         (l_bflow_method_code = 'PRIOR_ENTRY')
5659       )
5660    THEN
5661       IF
5662       --
5663       1 = 2
5664       --
5665       THEN
5666       xla_accounting_err_pkg.build_message
5667                                     (p_appli_s_name            => 'XLA'
5668                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5669                                     ,p_token_1                 => 'LINE_NUMBER'
5670                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5671                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5672                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5673                                                                              l_component_type
5674                                                                             ,l_component_code
5675                                                                             ,l_component_type_code
5676                                                                             ,l_component_appl_id
5677                                                                             ,l_amb_context_code
5678                                                                             ,l_entity_code
5679                                                                             ,l_event_class_code
5680                                                                            )
5681                                     ,p_token_3                 => 'OWNER'
5682                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5683                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5684                                                                           ,p_lookup_code    => l_component_type_code
5685                                                                          )
5686                                     ,p_token_4                 => 'PRODUCT_NAME'
5690                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5687                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5688                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5689                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5691                                     ,p_ae_header_id            =>  NULL
5692                                        );
5693 
5694         IF (C_LEVEL_ERROR>= g_log_level) THEN
5695                  trace
5696                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5697                       ,p_level    => C_LEVEL_ERROR
5698                       ,p_module   => l_log_module);
5699         END IF;
5700       END IF;
5701    END IF;
5702    --
5703    --
5704    ------------------------------------------------------------------------------------------------
5705    -- 4219869 Business Flow
5706    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5707    -- Prior Entry.  Currently, the following code is always generated.
5708    ------------------------------------------------------------------------------------------------
5709    XLA_AE_LINES_PKG.ValidateCurrentLine;
5710 
5711    ------------------------------------------------------------------------------------
5712    -- 4219869 Business Flow
5713    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5714    ------------------------------------------------------------------------------------
5715    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5716 
5717    ----------------------------------------------------------------------------------
5718    -- 4219869 Business Flow
5719    -- Update journal entry status -- Need to generate this within IF <condition>
5720    ----------------------------------------------------------------------------------
5721    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5722          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5723          ,p_balance_type_code => l_balance_type_code
5724          );
5725 
5726    -------------------------------------------------------------------------------------------
5727    -- 4262811 - Generate the Accrual Reversal lines
5728    -------------------------------------------------------------------------------------------
5729    BEGIN
5730       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5731                               (g_array_event(p_event_id).array_value_num('header_index'));
5732       IF l_acc_rev_flag IS NULL THEN
5733          l_acc_rev_flag := 'N';
5734       END IF;
5735    EXCEPTION
5736       WHEN OTHERS THEN
5737          l_acc_rev_flag := 'N';
5738    END;
5739    --
5740    IF (l_acc_rev_flag = 'Y') THEN
5741 
5742        -- 4645092  ------------------------------------------------------------------------------
5743        -- To allow MPA report to determine if it should generate report process
5744        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5745        ------------------------------------------------------------------------------------------
5746 
5747        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5748        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5749    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5750    -- call ADRs
5751    -- Bug 4922099
5752    --
5753    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5754         (NVL(l_actual_upg_option, 'N') = 'O') OR
5755         (NVL(l_enc_upg_option, 'N') = 'O')
5756       )
5757    THEN
5758    NULL;
5759    --
5760    --
5761    
5762   l_ccid := AcctDerRule_1(
5763            p_application_id           => p_application_id
5764          , p_ae_header_id             => l_ae_header_id 
5765 , p_source_1 => p_source_1
5766          , x_transaction_coa_id       => l_adr_transaction_coa_id
5767          , x_accounting_coa_id        => l_adr_accounting_coa_id
5768          , x_value_type_code          => l_adr_value_type_code
5769          , p_side                     => 'NA'
5770    );
5771 
5772    xla_ae_lines_pkg.set_ccid(
5773     p_code_combination_id          => l_ccid
5774   , p_value_type_code              => l_adr_value_type_code
5775   , p_transaction_coa_id           => l_adr_transaction_coa_id
5776   , p_accounting_coa_id            => l_adr_accounting_coa_id
5777   , p_adr_code                     => 'CST_DEFAULT'
5778   , p_adr_type_code                => 'S'
5779   , p_component_type               => l_component_type
5780   , p_component_code               => l_component_code
5781   , p_component_type_code          => l_component_type_code
5782   , p_component_appl_id            => l_component_appl_id
5783   , p_amb_context_code             => l_amb_context_code
5784   , p_side                         => 'NA'
5785   );
5786 
5787 
5788    --
5789    --
5790    END IF;
5791 
5792        --
5793        -- Update the line information that should be overwritten
5794        --
5795        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5796                                          p_header_num   => 1);
5797        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5798 
5802           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5799        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5800 
5801        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5803        END IF;
5804 
5805       --
5806       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5807       --
5808       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5809           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5810       ELSE
5811           ---------------------------------------------------------------------------------------------------
5812           -- 4262811a Switch Sign
5813           ---------------------------------------------------------------------------------------------------
5814           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5815           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5816                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5817           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5818                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5819           -- 5132302
5820           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5821                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5822 
5823       END IF;
5824 
5825       -- 4955764
5826       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5827       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5828 
5829 
5830       XLA_AE_LINES_PKG.ValidateCurrentLine;
5831       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5832 
5833       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5834                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5835                ,p_balance_type_code => l_balance_type_code);
5836 
5837    END IF;
5838 
5839    -----------------------------------------------------------------------------------------
5840    -- 4262811 Multiperiod Accounting
5841    -----------------------------------------------------------------------------------------
5842      -- No MPA option is assigned.
5843 
5844 
5845 END IF;
5846 END IF;
5847 --
5848 
5849 --
5850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5851    trace
5852       (p_msg      => 'END of AcctLineType_11'
5853       ,p_level    => C_LEVEL_PROCEDURE
5854       ,p_module   => l_log_module);
5855 END IF;
5856 --
5857 EXCEPTION
5858   WHEN xla_exceptions_pkg.application_exception THEN
5859       RAISE;
5860   WHEN OTHERS THEN
5861        xla_exceptions_pkg.raise_message
5862            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.AcctLineType_11');
5863 END AcctLineType_11;
5864 --
5865 
5866 ---------------------------------------
5867 --
5868 -- PRIVATE PROCEDURE
5869 --         insert_sources_12
5870 --
5871 ----------------------------------------
5872 --
5873 PROCEDURE insert_sources_12(
5874                                 p_target_ledger_id       IN NUMBER
5875                               , p_language               IN VARCHAR2
5876                               , p_sla_ledger_id          IN NUMBER
5877                               , p_pad_start_date         IN DATE
5878                               , p_pad_end_date           IN DATE
5879                          )
5880 IS
5881 
5882 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
5883 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
5884 p_apps_owner                   VARCHAR2(30);
5885 l_log_module                   VARCHAR2(240);
5886 BEGIN
5887 IF g_log_enabled THEN
5888       l_log_module := C_DEFAULT_MODULE||'.insert_sources_12';
5889 END IF;
5890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5891 
5892       trace
5893          (p_msg      => 'BEGIN of insert_sources_12'
5894          ,p_level    => C_LEVEL_PROCEDURE
5895          ,p_module   => l_log_module);
5896 
5897 END IF;
5898 
5899 -- select APPS owner
5900 SELECT oracle_username
5901   INTO p_apps_owner
5902   FROM fnd_oracle_userid
5903  WHERE read_only_flag = 'U'
5904 ;
5905 
5906 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
5907       trace
5908          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
5909                         ' - p_language = '||p_language||
5910                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
5911                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
5912                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
5913                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
5914          ,p_level    => C_LEVEL_STATEMENT
5915          ,p_module   => l_log_module);
5916 END IF;
5917 
5918 
5919 --
5920 INSERT INTO xla_diag_sources --hdr2
5921 (
5922         event_id
5923       , ledger_id
5924       , sla_ledger_id
5925       , description_language
5929       , source_application_id
5926       , object_name
5927       , object_type_code
5928       , line_number
5930       , source_type_code
5931       , source_code
5932       , source_value
5933       , source_meaning
5934       , created_by
5935       , creation_date
5936       , last_update_date
5937       , last_updated_by
5938       , last_update_login
5939       , program_update_date
5940       , program_application_id
5941       , program_id
5942       , request_id
5943 )
5944 SELECT
5945         event_id
5946       , p_target_ledger_id
5947       , p_sla_ledger_id
5948       , p_language
5949       , object_name
5950       , object_type_code
5951       , line_number
5952       , source_application_id
5953       , source_type_code
5954       , source_code
5955       , SUBSTR(source_value ,1,1996)
5956       , SUBSTR(source_meaning ,1,200)
5957       , xla_environment_pkg.g_Usr_Id
5958       , TRUNC(SYSDATE)
5959       , TRUNC(SYSDATE)
5960       , xla_environment_pkg.g_Usr_Id
5961       , xla_environment_pkg.g_Login_Id
5962       , TRUNC(SYSDATE)
5963       , xla_environment_pkg.g_Prog_Appl_Id
5964       , xla_environment_pkg.g_Prog_Id
5965       , xla_environment_pkg.g_Req_Id
5966   FROM (
5967        SELECT xet.event_id                  event_id
5968             , 0                          line_number
5969             , CASE r
5970                WHEN 1 THEN 'PO_HEADERS_REF_V' 
5971                 WHEN 2 THEN 'PO_DISTS_REF_V' 
5972                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
5973                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
5974                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
5975                 WHEN 6 THEN 'CST_XLA_RCV_REF_V' 
5976                 WHEN 7 THEN 'CST_XLA_RCV_HEADERS_V' 
5977                 WHEN 8 THEN 'PO_DISTS_REF_V' 
5978                 WHEN 9 THEN 'CST_XLA_RCV_REF_V' 
5979                 WHEN 10 THEN 'CST_XLA_RCV_HEADERS_V' 
5980                 WHEN 11 THEN 'CST_XLA_RCV_REF_V' 
5981                 WHEN 12 THEN 'PSA_CST_XLA_UPG_V' 
5982                 WHEN 13 THEN 'PO_HEADERS_REF_V' 
5983                 WHEN 14 THEN 'CST_XLA_RCV_REF_V' 
5984                 WHEN 15 THEN 'CST_XLA_RCV_HEADERS_V' 
5985                 
5986                ELSE null
5987               END                           object_name
5988             , CASE r
5989                 WHEN 1 THEN 'HEADER' 
5990                 WHEN 2 THEN 'HEADER' 
5991                 WHEN 3 THEN 'HEADER' 
5992                 WHEN 4 THEN 'HEADER' 
5993                 WHEN 5 THEN 'HEADER' 
5994                 WHEN 6 THEN 'HEADER' 
5995                 WHEN 7 THEN 'HEADER' 
5996                 WHEN 8 THEN 'HEADER' 
5997                 WHEN 9 THEN 'HEADER' 
5998                 WHEN 10 THEN 'HEADER' 
5999                 WHEN 11 THEN 'HEADER' 
6000                 WHEN 12 THEN 'HEADER' 
6001                 WHEN 13 THEN 'HEADER' 
6002                 WHEN 14 THEN 'HEADER' 
6003                 WHEN 15 THEN 'HEADER' 
6004                 
6005                 ELSE null
6006               END                           object_type_code
6007             , CASE r
6008                 WHEN 1 THEN '201' 
6009                 WHEN 2 THEN '201' 
6010                 WHEN 3 THEN '707' 
6011                 WHEN 4 THEN '707' 
6012                 WHEN 5 THEN '707' 
6013                 WHEN 6 THEN '707' 
6014                 WHEN 7 THEN '707' 
6015                 WHEN 8 THEN '201' 
6016                 WHEN 9 THEN '707' 
6017                 WHEN 10 THEN '707' 
6018                 WHEN 11 THEN '707' 
6019                 WHEN 12 THEN '707' 
6020                 WHEN 13 THEN '201' 
6021                 WHEN 14 THEN '707' 
6022                 WHEN 15 THEN '707' 
6023                 
6024                 ELSE null
6025               END                           source_application_id
6026             , 'S'             source_type_code
6027             , CASE r
6028                 WHEN 1 THEN 'PURCH_ENCUMBRANCE_FLAG' 
6029                 WHEN 2 THEN 'RESERVED_FLAG' 
6030                 WHEN 3 THEN 'APPLIED_TO_APPL_ID' 
6031                 WHEN 4 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
6032                 WHEN 5 THEN 'APPLIED_TO_ENTITY_CODE' 
6033                 WHEN 6 THEN 'APPLIED_TO_PO_DOC_ID' 
6034                 WHEN 7 THEN 'DISTRIBUTION_TYPE' 
6035                 WHEN 8 THEN 'PO_BUDGET_ACCOUNT' 
6036                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
6037                 WHEN 10 THEN 'CURRENCY_CODE' 
6038                 WHEN 11 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
6039                 WHEN 12 THEN 'CST_ENCUM_UPG_OPTION' 
6040                 WHEN 13 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
6041                 WHEN 14 THEN 'PO_DISTRIBUTION_ID' 
6042                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
6043                 
6044                 ELSE null
6045               END                           source_code
6046             , CASE r
6047                 WHEN 1 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_FLAG)
6048                 WHEN 2 THEN TO_CHAR(h4.RESERVED_FLAG)
6049                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
6050                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
6051                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
6052                 WHEN 6 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
6053                 WHEN 7 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
6054                 WHEN 8 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
6055                 WHEN 9 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
6059                 WHEN 13 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
6056                 WHEN 10 THEN TO_CHAR(h1.CURRENCY_CODE)
6057                 WHEN 11 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
6058                 WHEN 12 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
6060                 WHEN 14 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
6061                 WHEN 15 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
6062                 
6063                 ELSE null
6064               END                           source_value
6065             , CASE r
6066                 WHEN 7 THEN fvl13.meaning
6067                 WHEN 15 THEN fvl37.meaning
6068                 
6069                 ELSE null
6070               END               source_meaning
6071          FROM xla_events_gt     xet  
6072       , CST_XLA_RCV_HEADERS_V  h1
6073       , CST_XLA_RCV_REF_V  h3
6074       , PO_DISTS_REF_V  h4
6075       , PO_HEADERS_REF_V  h5
6076       , PSA_CST_XLA_UPG_V  h6
6077   , fnd_lookup_values    fvl13
6078   , fnd_lookup_values    fvl37
6079              ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
6080          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
6081            AND xet.event_class_code = C_EVENT_CLASS_CODE
6082               AND h1.event_id = xet.event_id
6083  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id  (+)  and h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
6084   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
6085   AND fvl13.view_application_id(+) = 700
6086   AND fvl13.language(+)            = USERENV('LANG')
6087      AND fvl37.lookup_type(+)         = 'YES_NO'
6088   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
6089   AND fvl37.view_application_id(+) = 0
6090   AND fvl37.language(+)            = USERENV('LANG')
6091   
6092 )
6093 ;
6094 --
6095 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6096 
6097       trace
6098          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
6099          ,p_level    => C_LEVEL_STATEMENT
6100          ,p_module   => l_log_module);
6101 
6102 END IF;
6103 --
6104 
6105 
6106 
6107 --
6108 INSERT INTO xla_diag_sources  --line2
6109 (
6110         event_id
6111       , ledger_id
6112       , sla_ledger_id
6113       , description_language
6114       , object_name
6115       , object_type_code
6116       , line_number
6117       , source_application_id
6118       , source_type_code
6119       , source_code
6120       , source_value
6121       , source_meaning
6122       , created_by
6123       , creation_date
6124       , last_update_date
6125       , last_updated_by
6126       , last_update_login
6127       , program_update_date
6128       , program_application_id
6129       , program_id
6130       , request_id
6131 )
6132 SELECT  event_id
6133       , p_target_ledger_id
6134       , p_sla_ledger_id
6135       , p_language
6136       , object_name
6137       , object_type_code
6138       , line_number
6139       , source_application_id
6140       , source_type_code
6141       , source_code
6142       , SUBSTR(source_value,1,1996)
6143       , SUBSTR(source_meaning ,1,200)
6144       , xla_environment_pkg.g_Usr_Id
6145       , TRUNC(SYSDATE)
6146       , TRUNC(SYSDATE)
6147       , xla_environment_pkg.g_Usr_Id
6148       , xla_environment_pkg.g_Login_Id
6149       , TRUNC(SYSDATE)
6150       , xla_environment_pkg.g_Prog_Appl_Id
6151       , xla_environment_pkg.g_Prog_Id
6152       , xla_environment_pkg.g_Req_Id
6153   FROM (
6154        SELECT xet.event_id                  event_id
6155             , l2.line_number                 line_number
6156             , CASE r
6157                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
6158                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
6159                 
6160                ELSE null
6161               END                           object_name
6162             , CASE r
6163                 WHEN 1 THEN 'LINE' 
6164                 WHEN 2 THEN 'LINE' 
6165                 
6166                 ELSE null
6167               END                           object_type_code
6168             , CASE r
6169                 WHEN 1 THEN '707' 
6170                 WHEN 2 THEN '707' 
6171                 
6172                 ELSE null
6173               END                           source_application_id
6174             , 'S'             source_type_code
6175             , CASE r
6176                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
6177                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
6178                 
6179                 ELSE null
6180               END                           source_code
6181             , CASE r
6182                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
6183                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
6184                 
6185                 ELSE null
6186               END                           source_value
6187             , null              source_meaning
6188          FROM  xla_events_gt     xet  
6189         , CST_XLA_RCV_LINES_V  l2
6193             AND l2.event_id          = xet.event_id
6190             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
6191         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
6192           AND xet.event_class_code = C_EVENT_CLASS_CODE
6194 
6195 )
6196 ;
6197 --
6198 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6199 
6200       trace
6201          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
6202          ,p_level    => C_LEVEL_STATEMENT
6203          ,p_module   => l_log_module);
6204 
6205 END IF;
6206 
6207 
6208 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6209       trace
6210          (p_msg      => 'END of insert_sources_12'
6211          ,p_level    => C_LEVEL_PROCEDURE
6212          ,p_module   => l_log_module);
6213 END IF;
6214 EXCEPTION
6215   WHEN xla_exceptions_pkg.application_exception THEN
6216       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6217             trace
6218                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6219                ,p_level    => C_LEVEL_EXCEPTION
6220                ,p_module   => l_log_module);
6221       END IF;
6222       RAISE;
6223   WHEN OTHERS THEN
6224       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
6225             trace
6226                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
6227                ,p_level    => C_LEVEL_EXCEPTION
6228                ,p_module   => l_log_module);
6229        END IF;
6230        xla_exceptions_pkg.raise_message
6231            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_12');
6232 END insert_sources_12;
6233 --
6234 
6235 ---------------------------------------
6236 --
6237 -- PRIVATE FUNCTION
6238 --         EventClass_12
6239 --
6240 ----------------------------------------
6241 --
6242 FUNCTION EventClass_12
6243        (p_application_id         IN NUMBER
6244        ,p_base_ledger_id         IN NUMBER
6245        ,p_target_ledger_id       IN NUMBER
6246        ,p_language               IN VARCHAR2
6247        ,p_currency_code          IN VARCHAR2
6248        ,p_sla_ledger_id          IN NUMBER
6249        ,p_pad_start_date         IN DATE
6250        ,p_pad_end_date           IN DATE
6251        ,p_primary_ledger_id      IN NUMBER)
6252 RETURN BOOLEAN IS
6253 --
6254 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
6255 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
6256 
6257 l_calculate_acctd_flag   VARCHAR2(1) :='N';
6258 l_calculate_g_l_flag     VARCHAR2(1) :='N';
6259 --
6260 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6261 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6262 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6263 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6264 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6265 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6266 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6267 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6268 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6269 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6270 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6271 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6272 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6273 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
6274 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6275 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6276 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6277 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
6278 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6279 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6280 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6281 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
6282 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
6283 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
6284 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
6285 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
6286 
6287 l_event_id                             NUMBER;
6288 l_previous_event_id                    NUMBER;
6289 l_first_event_id                       NUMBER;
6290 l_last_event_id                        NUMBER;
6291 
6292 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
6293 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
6294 --
6295 --
6296 l_result                    BOOLEAN := TRUE;
6297 l_rows                      NUMBER  := 1000;
6298 l_event_type_name           VARCHAR2(80) := 'All';
6299 l_event_class_name          VARCHAR2(80) := 'Delivery to Expense Destination';
6300 l_description               VARCHAR2(4000);
6301 l_transaction_reversal      NUMBER;
6302 l_ae_header_id              NUMBER;
6303 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
6304 l_log_module                VARCHAR2(240);
6305 --
6309 l_continue_with_lines       BOOLEAN := TRUE;
6306 l_acct_reversal_source      VARCHAR2(30);
6307 l_trx_reversal_source       VARCHAR2(30);
6308 
6310 --
6311 l_acc_rev_gl_date_source    DATE;                      -- 4262811
6312 --
6313 type t_array_event_id is table of number index by binary_integer;
6314 
6315 l_rec_array_event                    t_rec_array_event;
6316 l_null_rec_array_event               t_rec_array_event;
6317 l_array_ae_header_id                 xla_number_array_type;
6318 l_actual_flag                        VARCHAR2(1) := NULL;
6319 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
6320 l_balance_type_code                  VARCHAR2(1) :=NULL;
6321 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
6322 
6323 --
6324 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
6325 --
6326 
6327 TYPE t_array_source_2 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
6328 TYPE t_array_source_3 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
6329 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
6330 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
6331 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
6332 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
6333 TYPE t_array_source_13 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
6334 TYPE t_array_source_14 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
6335 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
6336 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
6337 TYPE t_array_source_17 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
6338 TYPE t_array_source_18 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
6339 TYPE t_array_source_19 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
6340 TYPE t_array_source_26 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
6341 TYPE t_array_source_37 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
6342 
6343 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
6344 TYPE t_array_source_25 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
6345 
6346 l_array_source_2              t_array_source_2;
6347 l_array_source_3              t_array_source_3;
6348 l_array_source_7              t_array_source_7;
6349 l_array_source_8              t_array_source_8;
6350 l_array_source_9              t_array_source_9;
6351 l_array_source_11              t_array_source_11;
6352 l_array_source_13              t_array_source_13;
6353 l_array_source_13_meaning      t_array_lookup_meaning;
6354 l_array_source_14              t_array_source_14;
6355 l_array_source_15              t_array_source_15;
6356 l_array_source_16              t_array_source_16;
6357 l_array_source_17              t_array_source_17;
6358 l_array_source_18              t_array_source_18;
6359 l_array_source_19              t_array_source_19;
6360 l_array_source_26              t_array_source_26;
6361 l_array_source_37              t_array_source_37;
6362 l_array_source_37_meaning      t_array_lookup_meaning;
6363 
6364 l_array_source_12      t_array_source_12;
6365 l_array_source_25      t_array_source_25;
6366 
6367 --
6368 CURSOR header_cur
6369 IS
6370 SELECT /*+ leading(xet) cardinality(xet,1) */
6371 -- Event Class Code: DELIVER_EXPENSE
6372     xet.entity_id
6373    ,xet.legal_entity_id
6374    ,xet.entity_code
6375    ,xet.transaction_number
6376    ,xet.event_id
6377    ,xet.event_class_code
6378    ,xet.event_type_code
6379    ,xet.event_number
6380    ,xet.event_date
6381    ,xet.transaction_date
6382    ,xet.reference_num_1
6383    ,xet.reference_num_2
6384    ,xet.reference_num_3
6385    ,xet.reference_num_4
6386    ,xet.reference_char_1
6387    ,xet.reference_char_2
6388    ,xet.reference_char_3
6389    ,xet.reference_char_4
6390    ,xet.reference_date_1
6391    ,xet.reference_date_2
6392    ,xet.reference_date_3
6393    ,xet.reference_date_4
6394    ,xet.event_created_by
6395    ,xet.budgetary_control_flag 
6396   , h5.PURCH_ENCUMBRANCE_FLAG    source_2
6397   , h4.RESERVED_FLAG    source_3
6398   , h3.APPLIED_TO_APPL_ID    source_7
6399   , h3.APPLIED_TO_DIST_LINK_TYPE    source_8
6400   , h3.APPLIED_TO_ENTITY_CODE    source_9
6401   , h3.APPLIED_TO_PO_DOC_ID    source_11
6402   , h1.DISTRIBUTION_TYPE    source_13
6403   , fvl13.meaning   source_13_meaning
6404   , h4.PO_BUDGET_ACCOUNT    source_14
6405   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_15
6406   , h1.CURRENCY_CODE    source_16
6407   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_17
6408   , h6.CST_ENCUM_UPG_OPTION    source_18
6409   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_19
6410   , h3.PO_DISTRIBUTION_ID    source_26
6411   , h1.TRANSFER_TO_GL_INDICATOR    source_37
6412   , fvl37.meaning   source_37_meaning
6413   FROM xla_events_gt     xet 
6414   , CST_XLA_RCV_HEADERS_V  h1
6415   , CST_XLA_RCV_REF_V  h3
6416   , PO_DISTS_REF_V  h4
6417   , PO_HEADERS_REF_V  h5
6421  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
6418   , PSA_CST_XLA_UPG_V  h6
6419   , fnd_lookup_values    fvl13
6420   , fnd_lookup_values    fvl37
6422    and xet.event_class_code = C_EVENT_CLASS_CODE
6423    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
6424  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id  (+)  AND h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.rcv_transaction_id = h6.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
6425   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
6426   AND fvl13.view_application_id(+) = 700
6427   AND fvl13.language(+)            = USERENV('LANG')
6428      AND fvl37.lookup_type(+)         = 'YES_NO'
6429   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
6430   AND fvl37.view_application_id(+) = 0
6431   AND fvl37.language(+)            = USERENV('LANG')
6432   
6433  ORDER BY event_id
6434 ;
6435 
6436 
6437 --
6438 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
6439 IS
6440 SELECT  /*+ leading(xet) cardinality(xet,1) */
6441 -- Event Class Code: DELIVER_EXPENSE
6442     xet.entity_id
6443    ,xet.legal_entity_id
6444    ,xet.entity_code
6445    ,xet.transaction_number
6446    ,xet.event_id
6447    ,xet.event_class_code
6448    ,xet.event_type_code
6449    ,xet.event_number
6450    ,xet.event_date
6451    ,xet.transaction_date
6452    ,xet.reference_num_1
6453    ,xet.reference_num_2
6454    ,xet.reference_num_3
6455    ,xet.reference_num_4
6456    ,xet.reference_char_1
6457    ,xet.reference_char_2
6458    ,xet.reference_char_3
6459    ,xet.reference_char_4
6460    ,xet.reference_date_1
6461    ,xet.reference_date_2
6462    ,xet.reference_date_3
6463    ,xet.reference_date_4
6464    ,xet.event_created_by
6465    ,xet.budgetary_control_flag
6466  , l2.LINE_NUMBER  
6467   , l2.DISTRIBUTION_IDENTIFIER    source_12
6468   , l2.RCV_ACCOUNTING_LINE_TYPE    source_25
6469   FROM xla_events_gt     xet 
6470   , CST_XLA_RCV_LINES_V  l2
6471  WHERE xet.event_id between x_first_event_id and x_last_event_id
6472    and xet.event_date between p_pad_start_date and p_pad_end_date
6473    and xet.event_class_code = C_EVENT_CLASS_CODE
6474    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
6475 ;
6476 
6477 --
6478 BEGIN
6479 IF g_log_enabled THEN
6480    l_log_module := C_DEFAULT_MODULE||'.EventClass_12';
6481 END IF;
6482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6483    trace
6484       (p_msg      => 'BEGIN of EventClass_12'
6485       ,p_level    => C_LEVEL_PROCEDURE
6486       ,p_module   => l_log_module);
6487 END IF;
6488 
6489 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6490    trace
6491       (p_msg      => 'p_application_id = '||p_application_id||
6492                      ' - p_base_ledger_id = '||p_base_ledger_id||
6493                      ' - p_target_ledger_id  = '||p_target_ledger_id||
6494                      ' - p_language = '||p_language||
6495                      ' - p_currency_code = '||p_currency_code||
6496                      ' - p_sla_ledger_id = '||p_sla_ledger_id
6497       ,p_level    => C_LEVEL_STATEMENT
6498       ,p_module   => l_log_module);
6499 END IF;
6500 --
6501 -- initialze arrays
6502 --
6503 g_array_event.DELETE;
6504 l_rec_array_event := l_null_rec_array_event;
6505 --
6506 --------------------------------------
6507 -- 4262811 Initialze MPA Line Number
6508 --------------------------------------
6509 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
6510 
6511 --
6512 
6513 --
6514 OPEN header_cur;
6515 --
6516 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6517    trace
6518    (p_msg      => 'SQL - FETCH header_cur'
6519    ,p_level    => C_LEVEL_STATEMENT
6520    ,p_module   => l_log_module);
6521 END IF;
6522 --
6523 LOOP
6524 FETCH header_cur BULK COLLECT INTO
6525         l_array_entity_id
6526       , l_array_legal_entity_id
6527       , l_array_entity_code
6528       , l_array_transaction_num
6529       , l_array_event_id
6530       , l_array_class_code
6531       , l_array_event_type
6532       , l_array_event_number
6533       , l_array_event_date
6534       , l_array_transaction_date
6535       , l_array_reference_num_1
6536       , l_array_reference_num_2
6537       , l_array_reference_num_3
6538       , l_array_reference_num_4
6539       , l_array_reference_char_1
6540       , l_array_reference_char_2
6541       , l_array_reference_char_3
6542       , l_array_reference_char_4
6543       , l_array_reference_date_1
6544       , l_array_reference_date_2
6545       , l_array_reference_date_3
6546       , l_array_reference_date_4
6547       , l_array_event_created_by
6548       , l_array_budgetary_control_flag 
6549       , l_array_source_2
6550       , l_array_source_3
6551       , l_array_source_7
6552       , l_array_source_8
6553       , l_array_source_9
6554       , l_array_source_11
6555       , l_array_source_13
6556       , l_array_source_13_meaning
6557       , l_array_source_14
6558       , l_array_source_15
6559       , l_array_source_16
6560       , l_array_source_17
6561       , l_array_source_18
6562       , l_array_source_19
6563       , l_array_source_26
6567 --
6564       , l_array_source_37
6565       , l_array_source_37_meaning
6566       LIMIT l_rows;
6568 IF (C_LEVEL_EVENT >= g_log_level) THEN
6569    trace
6570    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
6571    ,p_level    => C_LEVEL_EVENT
6572    ,p_module   => l_log_module);
6573 END IF;
6574 --
6575 EXIT WHEN l_array_entity_id.COUNT = 0;
6576 
6577 -- initialize arrays
6578 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
6579 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
6580 
6581 --
6582 -- Bug 4458708
6583 --
6584 XLA_AE_LINES_PKG.g_LineNumber := 0;
6585 
6586 
6587 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
6588 g_last_hdr_idx := l_array_event_id.LAST;
6589 --
6590 -- loop for the headers. Each iteration is for each header extract row
6591 -- fetched in header cursor
6592 --
6593 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
6594 
6595 --
6596 -- set event info as cache for other routines to refer event attributes
6597 --
6598 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6599    (p_application_id           => p_application_id
6600    ,p_primary_ledger_id        => p_primary_ledger_id
6601    ,p_base_ledger_id           => p_base_ledger_id
6602    ,p_target_ledger_id         => p_target_ledger_id
6603    ,p_entity_id                => l_array_entity_id(hdr_idx)
6604    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
6605    ,p_entity_code              => l_array_entity_code(hdr_idx)
6606    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
6607    ,p_event_id                 => l_array_event_id(hdr_idx)
6608    ,p_event_class_code         => l_array_class_code(hdr_idx)
6609    ,p_event_type_code          => l_array_event_type(hdr_idx)
6610    ,p_event_number             => l_array_event_number(hdr_idx)
6611    ,p_event_date               => l_array_event_date(hdr_idx)
6612    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
6613    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
6614    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
6615    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
6616    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
6617    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
6618    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
6619    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
6620    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
6621    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
6622    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
6623    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
6624    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
6625    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
6626    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
6627 
6628 --
6629 -- set the status of entry to C_VALID (0)
6630 --
6631 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6632 
6633 --
6634 -- initialize a row for ae header
6635 --
6636 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
6637 
6638 l_event_id := l_array_event_id(hdr_idx);
6639 
6640 --
6641 -- storing the hdr_idx for event. May be used by line cursor.
6642 --
6643 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
6644 
6645 --
6646 -- store sources from header extract. This can be improved to
6647 -- store only those sources from header extract that may be used in lines
6648 --
6649 
6650 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
6651 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
6652 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
6653 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
6654 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
6655 g_array_event(l_event_id).array_value_num('source_11') := l_array_source_11(hdr_idx);
6656 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
6657 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
6658 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
6659 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
6660 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
6661 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
6662 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
6663 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
6664 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
6665 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
6666 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
6667 
6668 --
6669 -- initilaize the status of ae headers for diffrent balance types
6670 -- the status is initialised to C_NOT_CREATED (2)
6671 --
6672 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6673 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6677 -- call api to validate and store accounting attributes for header
6674 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
6675 
6676 --
6678 --
6679 
6680 ------------------------------------------------------------
6681 -- Accrual Reversal : to get date for Standard Source (NONE)
6682 ------------------------------------------------------------
6683 l_acc_rev_gl_date_source := NULL;
6684 
6685      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
6686       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_19');
6687      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
6688       l_rec_acct_attrs.array_date_value(2) := 
6689 xla_ae_sources_pkg.GetSystemSourceDate(
6690    p_source_code           => 'XLA_REFERENCE_DATE_1'
6691  , p_source_type_code      => 'Y'
6692  , p_source_application_id =>  602
6693 );
6694      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
6695       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_37');
6696 
6697 
6698 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
6699 
6700 XLA_AE_HEADER_PKG.SetJeCategoryName;
6701 
6702 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
6703 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
6704 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
6705 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
6706 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
6707 
6708 
6709 -- No header level analytical criteria
6710 
6711 --
6712 --accounting attribute enhancement, bug 3612931
6713 --
6714 l_trx_reversal_source := SUBSTR(NULL, 1,30);
6715 
6716 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
6717    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
6718 
6719    xla_accounting_err_pkg.build_message
6720       (p_appli_s_name            => 'XLA'
6721       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
6722       ,p_token_1                 => 'ACCT_ATTR_NAME'
6723       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
6724       ,p_token_2                 => 'PRODUCT_NAME'
6725       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6726       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6727       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
6728       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6729 
6730 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
6731    --
6732    -- following sets the accounting attributes needed to reverse
6733    -- accounting for a distributeion
6734    --
6735    xla_ae_lines_pkg.SetTrxReversalAttrs
6736       (p_event_id              => l_event_id
6737       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
6738       ,p_trx_reversal_source   => l_trx_reversal_source);
6739 
6740 END IF;
6741 
6742 
6743 ----------------------------------------------------------------
6744 -- 4262811 -  update the header statuses to invalid in need be
6745 ----------------------------------------------------------------
6746 --
6747 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
6748 
6749 
6750   -----------------------------------------------
6751   -- No accrual reversal for the event class/type
6752   -----------------------------------------------
6753 ----------------------------------------------------------------
6754 
6755 --
6756 -- this ends the header loop iteration for one bulk fetch
6757 --
6758 END LOOP;
6759 
6760 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
6761 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
6762 
6763 --
6764 -- insert dummy rows into lines gt table that were created due to
6765 -- transaction reversals
6766 --
6767 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
6768    l_result := XLA_AE_LINES_PKG.InsertLines;
6769 END IF;
6770 
6771 --
6772 -- reset the temp_line_num for each set of events fetched from header
6773 -- cursor rather than doing it for each new event in line cursor
6774 -- Bug 3939231
6775 --
6776 xla_ae_lines_pkg.g_temp_line_num := 0;
6777 
6778 
6779 
6780 --
6781 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
6782 --
6783 --
6784 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6785 
6786       trace
6787          (p_msg      => 'SQL - FETCH line_cur'
6788          ,p_level    => C_LEVEL_STATEMENT
6789          ,p_module   => l_log_module);
6790 
6791 END IF;
6792 --
6793 --
6794 LOOP
6795   --
6796   FETCH line_cur BULK COLLECT INTO
6797         l_array_entity_id
6798       , l_array_legal_entity_id
6799       , l_array_entity_code
6800       , l_array_transaction_num
6801       , l_array_event_id
6802       , l_array_class_code
6803       , l_array_event_type
6804       , l_array_event_number
6808       , l_array_reference_num_2
6805       , l_array_event_date
6806       , l_array_transaction_date
6807       , l_array_reference_num_1
6809       , l_array_reference_num_3
6810       , l_array_reference_num_4
6811       , l_array_reference_char_1
6812       , l_array_reference_char_2
6813       , l_array_reference_char_3
6814       , l_array_reference_char_4
6815       , l_array_reference_date_1
6816       , l_array_reference_date_2
6817       , l_array_reference_date_3
6818       , l_array_reference_date_4
6819       , l_array_event_created_by
6820       , l_array_budgetary_control_flag
6821       , l_array_extract_line_num 
6822       , l_array_source_12
6823       , l_array_source_25
6824       LIMIT l_rows;
6825 
6826   --
6827   IF (C_LEVEL_EVENT >= g_log_level) THEN
6828             trace
6829                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
6830                ,p_level    => C_LEVEL_EVENT
6831                ,p_module   => l_log_module);
6832   END IF;
6833   --
6834   EXIT WHEN l_array_entity_id.count = 0;
6835 
6836   XLA_AE_LINES_PKG.g_rec_lines := null;
6837 
6838 --
6839 -- Bug 4458708
6840 --
6841 XLA_AE_LINES_PKG.g_LineNumber := 0;
6842 --
6843 --
6844 
6845 FOR Idx IN 1..l_array_event_id.count LOOP
6846    --
6847    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
6848    --
6849    l_event_id := l_array_event_id(idx);  -- 5648433
6850 
6851    --
6852    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
6853    --
6854 
6855    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
6856              (g_array_event(l_event_id).array_value_num('header_index'))
6857          ,'N'
6858          ) <> 'Y'
6859    THEN
6860       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
6861          trace
6862             (p_msg      => 'Trancaction revesal option is not Y '
6863             ,p_level    => C_LEVEL_STATEMENT
6864             ,p_module   => l_log_module);
6865       END IF;
6866 
6867 --
6868 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
6869 --
6870 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
6871 --
6872 -- set event info as cache for other routines to refer event attributes
6873 --
6874 
6875 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
6876    l_previous_event_id := l_event_id;
6877 
6878    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
6879       (p_application_id           => p_application_id
6880       ,p_primary_ledger_id        => p_primary_ledger_id
6881       ,p_base_ledger_id           => p_base_ledger_id
6882       ,p_target_ledger_id         => p_target_ledger_id
6883       ,p_entity_id                => l_array_entity_id(Idx)
6884       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
6885       ,p_entity_code              => l_array_entity_code(Idx)
6886       ,p_transaction_num          => l_array_transaction_num(Idx)
6887       ,p_event_id                 => l_array_event_id(Idx)
6888       ,p_event_class_code         => l_array_class_code(Idx)
6889       ,p_event_type_code          => l_array_event_type(Idx)
6890       ,p_event_number             => l_array_event_number(Idx)
6891       ,p_event_date               => l_array_event_date(Idx)
6892       ,p_transaction_date         => l_array_transaction_date(Idx)
6893       ,p_reference_num_1          => l_array_reference_num_1(Idx)
6894       ,p_reference_num_2          => l_array_reference_num_2(Idx)
6895       ,p_reference_num_3          => l_array_reference_num_3(Idx)
6896       ,p_reference_num_4          => l_array_reference_num_4(Idx)
6897       ,p_reference_char_1         => l_array_reference_char_1(Idx)
6898       ,p_reference_char_2         => l_array_reference_char_2(Idx)
6899       ,p_reference_char_3         => l_array_reference_char_3(Idx)
6900       ,p_reference_char_4         => l_array_reference_char_4(Idx)
6901       ,p_reference_date_1         => l_array_reference_date_1(Idx)
6902       ,p_reference_date_2         => l_array_reference_date_2(Idx)
6903       ,p_reference_date_3         => l_array_reference_date_3(Idx)
6904       ,p_reference_date_4         => l_array_reference_date_4(Idx)
6905       ,p_event_created_by         => l_array_event_created_by(Idx)
6906       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
6907        --
6908 END IF;
6909 
6910 
6911 
6912 --
6913 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
6914 
6915 l_acct_reversal_source := SUBSTR(NULL, 1,30);
6916 
6917 IF l_continue_with_lines THEN
6918    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
6919       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
6920 
6921       xla_accounting_err_pkg.build_message
6922          (p_appli_s_name            => 'XLA'
6923          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
6924          ,p_token_1                 => 'LINE_NUMBER'
6925          ,p_value_1                 => l_array_extract_line_num(Idx)
6926          ,p_token_2                 => 'PRODUCT_NAME'
6927          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
6928          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
6929          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
6933       --
6930          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
6931 
6932    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
6934       -- following sets the accounting attributes needed to reverse
6935       -- accounting for a distributeion
6936       --
6937 
6938       --
6939       -- 5217187
6940       --
6941       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
6942       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
6943                                        g_array_event(l_event_id).array_value_num('header_index'));
6944       --
6945       --
6946 
6947       -- No reversal code generated
6948 
6949       xla_ae_lines_pkg.SetAcctReversalAttrs
6950          (p_event_id             => l_event_id
6951          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
6952          ,p_calculate_acctd_flag => l_calculate_acctd_flag
6953          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
6954    END IF;
6955 
6956    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
6957        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
6958 
6959 --
6960 AcctLineType_5 (
6961  p_application_id  => p_application_id
6962  ,p_event_id     => l_event_id
6963  ,p_calculate_acctd_flag => l_calculate_acctd_flag
6964  ,p_calculate_g_l_flag => l_calculate_g_l_flag
6965  ,p_actual_flag => l_actual_flag
6966  ,p_balance_type_code => l_balance_type_code
6967  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
6968  
6969  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
6970  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
6971  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
6972  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
6973  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
6974  , p_source_12 => l_array_source_12(Idx)
6975  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
6976  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
6977  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
6978  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
6979  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
6980  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
6981  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
6982  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
6983  , p_source_25 => l_array_source_25(Idx)
6984  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
6985  );
6986 If(l_balance_type_code = 'A') THEN
6987   l_actual_gain_loss_ref := l_gain_or_loss_ref;
6988 END IF;
6989 
6990 --
6991 
6992 
6993 --
6994 AcctLineType_6 (
6995  p_application_id  => p_application_id
6996  ,p_event_id     => l_event_id
6997  ,p_calculate_acctd_flag => l_calculate_acctd_flag
6998  ,p_calculate_g_l_flag => l_calculate_g_l_flag
6999  ,p_actual_flag => l_actual_flag
7000  ,p_balance_type_code => l_balance_type_code
7001  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
7002  
7003  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
7004  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
7005  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
7006  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
7007  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
7008  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
7009  , p_source_12 => l_array_source_12(Idx)
7010  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
7011  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
7012  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
7013  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
7014  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
7015  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
7016  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
7017  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
7018  , p_source_25 => l_array_source_25(Idx)
7019  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
7020  );
7021 If(l_balance_type_code = 'A') THEN
7022   l_actual_gain_loss_ref := l_gain_or_loss_ref;
7023 END IF;
7024 
7025 --
7026 
7027       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
7028       -- or secondary ledger that has different currency with primary
7029       -- or alc that is calculated by sla
7030       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
7031             (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'))
7032 
7033 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
7034 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
7035           AND (l_actual_flag = 'A')) THEN
7036         XLA_AE_LINES_PKG.CreateGainOrLossLines(
7037           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
7041          ,p_event_class_code => C_EVENT_CLASS_CODE
7038          ,p_application_id   => p_application_id
7039          ,p_amb_context_code => 'DEFAULT'
7040          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
7042          ,p_event_type_code  => C_EVENT_TYPE_CODE
7043          
7044          ,p_gain_ccid        => -1
7045          ,p_loss_ccid        => -1
7046 
7047          ,p_actual_flag      => l_actual_flag
7048          ,p_enc_flag         => null
7049          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
7050          ,p_enc_g_l_ref      => null
7051          );
7052       END IF;
7053    END IF;
7054 END IF;
7055 
7056    ELSE
7057       --
7058       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
7059       --
7060       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7061          trace
7062             (p_msg      => 'Trancaction revesal option is Y'
7063             ,p_level    => C_LEVEL_STATEMENT
7064             ,p_module   => l_log_module);
7065       END IF;
7066    END IF;
7067 
7068 END LOOP;
7069 l_result := XLA_AE_LINES_PKG.InsertLines ;
7070 end loop;
7071 close line_cur;
7072 
7073 
7074 --
7075 -- insert headers into xla_ae_headers_gt table
7076 --
7077 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
7078 
7079 -- insert into errors table here.
7080 
7081 END LOOP;
7082 
7083 --
7084 -- 4865292
7085 --
7086 -- Compare g_hdr_extract_count with event count in
7087 -- CreateHeadersAndLines.
7088 --
7089 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
7090 
7091 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7092    trace (p_msg     => '# rows extracted from header extract objects '
7093                     || ' (running total): '
7094                     || g_hdr_extract_count
7095          ,p_level   => C_LEVEL_STATEMENT
7096          ,p_module  => l_log_module);
7097 END IF;
7098 
7099 CLOSE header_cur;
7100 --
7101 
7102 --
7103 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7104    trace
7105       (p_msg      => 'END of EventClass_12'
7106       ,p_level    => C_LEVEL_PROCEDURE
7107       ,p_module   => l_log_module);
7108 END IF;
7109 --
7110 RETURN l_result;
7111 EXCEPTION
7112 WHEN xla_exceptions_pkg.application_exception THEN
7113    
7114 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
7115 
7116    
7117 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
7118 
7119    RAISE;
7120 
7121 WHEN NO_DATA_FOUND THEN
7122 
7123 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
7124 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
7125 
7126 FOR header_record IN header_cur
7127 LOOP
7128     l_array_header_events(header_record.event_id) := header_record.event_id;
7129 END LOOP;
7130 
7131 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
7132 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
7133 
7134 fnd_file.put_line(fnd_file.LOG, '                    ');
7135 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
7136 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
7137 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
7138 
7139 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
7140 LOOP
7141 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
7142 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
7143         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
7144 	END IF;
7145 END LOOP;
7146 
7147 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
7148 fnd_file.put_line(fnd_file.LOG, '                    ');
7149 
7150 
7151 xla_exceptions_pkg.raise_message
7152       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_12');
7153 
7154 
7155 WHEN OTHERS THEN
7156    xla_exceptions_pkg.raise_message
7157       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_12');
7158 END EventClass_12;
7159 --
7160 
7161 ---------------------------------------
7162 --
7163 -- PRIVATE PROCEDURE
7164 --         insert_sources_13
7165 --
7166 ----------------------------------------
7167 --
7168 PROCEDURE insert_sources_13(
7169                                 p_target_ledger_id       IN NUMBER
7170                               , p_language               IN VARCHAR2
7171                               , p_sla_ledger_id          IN NUMBER
7172                               , p_pad_start_date         IN DATE
7173                               , p_pad_end_date           IN DATE
7174                          )
7175 IS
7176 
7177 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
7178 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
7179 p_apps_owner                   VARCHAR2(30);
7180 l_log_module                   VARCHAR2(240);
7181 BEGIN
7182 IF g_log_enabled THEN
7183       l_log_module := C_DEFAULT_MODULE||'.insert_sources_13';
7184 END IF;
7185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7186 
7187       trace
7191 
7188          (p_msg      => 'BEGIN of insert_sources_13'
7189          ,p_level    => C_LEVEL_PROCEDURE
7190          ,p_module   => l_log_module);
7192 END IF;
7193 
7194 -- select APPS owner
7195 SELECT oracle_username
7196   INTO p_apps_owner
7197   FROM fnd_oracle_userid
7198  WHERE read_only_flag = 'U'
7199 ;
7200 
7201 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7202       trace
7203          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
7204                         ' - p_language = '||p_language||
7205                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
7206                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
7207                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
7208                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
7209          ,p_level    => C_LEVEL_STATEMENT
7210          ,p_module   => l_log_module);
7211 END IF;
7212 
7213 
7214 --
7215 INSERT INTO xla_diag_sources --hdr2
7216 (
7217         event_id
7218       , ledger_id
7219       , sla_ledger_id
7220       , description_language
7221       , object_name
7222       , object_type_code
7223       , line_number
7224       , source_application_id
7225       , source_type_code
7226       , source_code
7227       , source_value
7228       , source_meaning
7229       , created_by
7230       , creation_date
7231       , last_update_date
7232       , last_updated_by
7233       , last_update_login
7234       , program_update_date
7235       , program_application_id
7236       , program_id
7237       , request_id
7238 )
7239 SELECT
7240         event_id
7241       , p_target_ledger_id
7242       , p_sla_ledger_id
7243       , p_language
7244       , object_name
7245       , object_type_code
7246       , line_number
7247       , source_application_id
7248       , source_type_code
7249       , source_code
7250       , SUBSTR(source_value ,1,1996)
7251       , SUBSTR(source_meaning ,1,200)
7252       , xla_environment_pkg.g_Usr_Id
7253       , TRUNC(SYSDATE)
7254       , TRUNC(SYSDATE)
7255       , xla_environment_pkg.g_Usr_Id
7256       , xla_environment_pkg.g_Login_Id
7257       , TRUNC(SYSDATE)
7258       , xla_environment_pkg.g_Prog_Appl_Id
7259       , xla_environment_pkg.g_Prog_Id
7260       , xla_environment_pkg.g_Req_Id
7261   FROM (
7262        SELECT xet.event_id                  event_id
7263             , 0                          line_number
7264             , CASE r
7265                WHEN 1 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
7266                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
7267                 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V' 
7268                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
7269                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
7270                 WHEN 6 THEN 'PSA_CST_XLA_UPG_V' 
7271                 WHEN 7 THEN 'PO_REQ_HEADERS_REF_V' 
7272                 WHEN 8 THEN 'PO_REQ_DISTS_REF_V' 
7273                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
7274                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
7275                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
7276                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
7277                 WHEN 13 THEN 'PO_REQ_DISTS_REF_V' 
7278                 WHEN 14 THEN 'PO_REQ_HEADERS_REF_V' 
7279                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
7280                 
7281                ELSE null
7282               END                           object_name
7283             , CASE r
7284                 WHEN 1 THEN 'HEADER' 
7285                 WHEN 2 THEN 'HEADER' 
7286                 WHEN 3 THEN 'HEADER' 
7287                 WHEN 4 THEN 'HEADER' 
7288                 WHEN 5 THEN 'HEADER' 
7289                 WHEN 6 THEN 'HEADER' 
7290                 WHEN 7 THEN 'HEADER' 
7291                 WHEN 8 THEN 'HEADER' 
7292                 WHEN 9 THEN 'HEADER' 
7293                 WHEN 10 THEN 'HEADER' 
7294                 WHEN 11 THEN 'HEADER' 
7295                 WHEN 12 THEN 'HEADER' 
7296                 WHEN 13 THEN 'HEADER' 
7297                 WHEN 14 THEN 'HEADER' 
7298                 WHEN 15 THEN 'HEADER' 
7299                 
7300                 ELSE null
7301               END                           object_type_code
7302             , CASE r
7303                 WHEN 1 THEN '707' 
7304                 WHEN 2 THEN '707' 
7305                 WHEN 3 THEN '707' 
7306                 WHEN 4 THEN '707' 
7307                 WHEN 5 THEN '707' 
7308                 WHEN 6 THEN '707' 
7309                 WHEN 7 THEN '201' 
7310                 WHEN 8 THEN '201' 
7311                 WHEN 9 THEN '707' 
7312                 WHEN 10 THEN '707' 
7313                 WHEN 11 THEN '707' 
7314                 WHEN 12 THEN '707' 
7315                 WHEN 13 THEN '201' 
7316                 WHEN 14 THEN '201' 
7317                 WHEN 15 THEN '707' 
7318                 
7319                 ELSE null
7320               END                           source_application_id
7321             , 'S'             source_type_code
7322             , CASE r
7323                 WHEN 1 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
7324                 WHEN 2 THEN 'APPLIED_TO_APPL_ID' 
7325                 WHEN 3 THEN 'DISTRIBUTION_TYPE' 
7326                 WHEN 4 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
7327                 WHEN 5 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
7331                 WHEN 9 THEN 'BUS_FLOW_REQ_DIST_TYPE' 
7328                 WHEN 6 THEN 'CST_ENCUM_UPG_OPTION' 
7329                 WHEN 7 THEN 'REQ_ENCUMBRANCE_FLAG' 
7330                 WHEN 8 THEN 'REQ_RESERVED_FLAG' 
7332                 WHEN 10 THEN 'BUS_FLOW_REQ_ENTITY_CODE' 
7333                 WHEN 11 THEN 'BUS_FLOW_REQ_DIST_ID' 
7334                 WHEN 12 THEN 'BUS_FLOW_REQ_ID' 
7335                 WHEN 13 THEN 'REQ_BUDGET_ACCOUNT' 
7336                 WHEN 14 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
7337                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
7338                 
7339                 ELSE null
7340               END                           source_code
7341             , CASE r
7342                 WHEN 1 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
7343                 WHEN 2 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
7344                 WHEN 3 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
7345                 WHEN 4 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
7346                 WHEN 5 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
7347                 WHEN 6 THEN TO_CHAR(h7.CST_ENCUM_UPG_OPTION)
7348                 WHEN 7 THEN TO_CHAR(h6.REQ_ENCUMBRANCE_FLAG)
7349                 WHEN 8 THEN TO_CHAR(h5.REQ_RESERVED_FLAG)
7350                 WHEN 9 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_TYPE)
7351                 WHEN 10 THEN TO_CHAR(h4.BUS_FLOW_REQ_ENTITY_CODE)
7352                 WHEN 11 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_ID)
7353                 WHEN 12 THEN TO_CHAR(h4.BUS_FLOW_REQ_ID)
7354                 WHEN 13 THEN TO_CHAR(h5.REQ_BUDGET_ACCOUNT)
7355                 WHEN 14 THEN TO_CHAR(h6.REQ_ENCUMBRANCE_TYPE_ID)
7356                 WHEN 15 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
7357                 
7358                 ELSE null
7359               END                           source_value
7360             , CASE r
7361                 WHEN 3 THEN fvl13.meaning
7362                 WHEN 15 THEN fvl37.meaning
7363                 
7364                 ELSE null
7365               END               source_meaning
7366          FROM xla_events_gt     xet  
7367       , CST_XLA_INV_HEADERS_V  h1
7368       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
7369       , CST_XLA_INV_REF_V  h4
7370       , PO_REQ_DISTS_REF_V  h5
7371       , PO_REQ_HEADERS_REF_V  h6
7372       , PSA_CST_XLA_UPG_V  h7
7373   , fnd_lookup_values    fvl13
7374   , fnd_lookup_values    fvl37
7375              ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
7376          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
7377            AND xet.event_class_code = C_EVENT_CLASS_CODE
7378               AND h1.event_id = xet.event_id
7379  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h4.bus_flow_req_dist_id=h5.req_distribution_id (+)  AND h4.bus_flow_req_id = h6.req_id (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
7380   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
7381   AND fvl13.view_application_id(+) = 700
7382   AND fvl13.language(+)            = USERENV('LANG')
7383      AND fvl37.lookup_type(+)         = 'YES_NO'
7384   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
7385   AND fvl37.view_application_id(+) = 0
7386   AND fvl37.language(+)            = USERENV('LANG')
7387   
7388 )
7389 ;
7390 --
7391 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7392 
7393       trace
7394          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
7395          ,p_level    => C_LEVEL_STATEMENT
7396          ,p_module   => l_log_module);
7397 
7398 END IF;
7399 --
7400 
7401 
7402 
7403 --
7404 INSERT INTO xla_diag_sources  --line2
7405 (
7406         event_id
7407       , ledger_id
7408       , sla_ledger_id
7409       , description_language
7410       , object_name
7411       , object_type_code
7412       , line_number
7413       , source_application_id
7414       , source_type_code
7415       , source_code
7416       , source_value
7417       , source_meaning
7418       , created_by
7419       , creation_date
7420       , last_update_date
7421       , last_updated_by
7422       , last_update_login
7423       , program_update_date
7424       , program_application_id
7425       , program_id
7426       , request_id
7427 )
7428 SELECT  event_id
7429       , p_target_ledger_id
7430       , p_sla_ledger_id
7431       , p_language
7432       , object_name
7433       , object_type_code
7434       , line_number
7435       , source_application_id
7436       , source_type_code
7437       , source_code
7438       , SUBSTR(source_value,1,1996)
7439       , SUBSTR(source_meaning ,1,200)
7440       , xla_environment_pkg.g_Usr_Id
7441       , TRUNC(SYSDATE)
7442       , TRUNC(SYSDATE)
7443       , xla_environment_pkg.g_Usr_Id
7444       , xla_environment_pkg.g_Login_Id
7445       , TRUNC(SYSDATE)
7446       , xla_environment_pkg.g_Prog_Appl_Id
7447       , xla_environment_pkg.g_Prog_Id
7448       , xla_environment_pkg.g_Req_Id
7449   FROM (
7450        SELECT xet.event_id                  event_id
7451             , l2.line_number                 line_number
7452             , CASE r
7453                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
7454                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
7455                 
7459                 WHEN 1 THEN 'LINE' 
7456                ELSE null
7457               END                           object_name
7458             , CASE r
7460                 WHEN 2 THEN 'LINE' 
7461                 
7462                 ELSE null
7463               END                           object_type_code
7464             , CASE r
7465                 WHEN 1 THEN '707' 
7466                 WHEN 2 THEN '707' 
7467                 
7468                 ELSE null
7469               END                           source_application_id
7470             , 'S'             source_type_code
7471             , CASE r
7472                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
7473                 WHEN 2 THEN 'CURRENCY_CODE' 
7474                 
7475                 ELSE null
7476               END                           source_code
7477             , CASE r
7478                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
7479                 WHEN 2 THEN TO_CHAR(l2.CURRENCY_CODE)
7480                 
7481                 ELSE null
7482               END                           source_value
7483             , null              source_meaning
7484          FROM  xla_events_gt     xet  
7485         , CST_XLA_INV_LINES_V  l2
7486             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
7487         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
7488           AND xet.event_class_code = C_EVENT_CLASS_CODE
7489             AND l2.event_id          = xet.event_id
7490 
7491 )
7492 ;
7493 --
7494 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7495 
7496       trace
7497          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
7498          ,p_level    => C_LEVEL_STATEMENT
7499          ,p_module   => l_log_module);
7500 
7501 END IF;
7502 
7503 
7504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7505       trace
7506          (p_msg      => 'END of insert_sources_13'
7507          ,p_level    => C_LEVEL_PROCEDURE
7508          ,p_module   => l_log_module);
7509 END IF;
7510 EXCEPTION
7511   WHEN xla_exceptions_pkg.application_exception THEN
7512       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
7513             trace
7514                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
7515                ,p_level    => C_LEVEL_EXCEPTION
7516                ,p_module   => l_log_module);
7517       END IF;
7518       RAISE;
7519   WHEN OTHERS THEN
7520       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
7521             trace
7522                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
7523                ,p_level    => C_LEVEL_EXCEPTION
7524                ,p_module   => l_log_module);
7525        END IF;
7526        xla_exceptions_pkg.raise_message
7527            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_13');
7528 END insert_sources_13;
7529 --
7530 
7531 ---------------------------------------
7532 --
7533 -- PRIVATE FUNCTION
7534 --         EventClass_13
7535 --
7536 ----------------------------------------
7537 --
7538 FUNCTION EventClass_13
7539        (p_application_id         IN NUMBER
7540        ,p_base_ledger_id         IN NUMBER
7541        ,p_target_ledger_id       IN NUMBER
7542        ,p_language               IN VARCHAR2
7543        ,p_currency_code          IN VARCHAR2
7544        ,p_sla_ledger_id          IN NUMBER
7545        ,p_pad_start_date         IN DATE
7546        ,p_pad_end_date           IN DATE
7547        ,p_primary_ledger_id      IN NUMBER)
7548 RETURN BOOLEAN IS
7549 --
7550 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
7551 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
7552 
7553 l_calculate_acctd_flag   VARCHAR2(1) :='N';
7554 l_calculate_g_l_flag     VARCHAR2(1) :='N';
7555 --
7556 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7557 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7558 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7559 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7560 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7561 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7562 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7563 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7564 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7565 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7566 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7567 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7568 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7569 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
7570 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7571 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7572 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7573 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
7574 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7575 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7576 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7580 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
7577 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
7578 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
7579 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
7581 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
7582 
7583 l_event_id                             NUMBER;
7584 l_previous_event_id                    NUMBER;
7585 l_first_event_id                       NUMBER;
7586 l_last_event_id                        NUMBER;
7587 
7588 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
7589 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
7590 --
7591 --
7592 l_result                    BOOLEAN := TRUE;
7593 l_rows                      NUMBER  := 1000;
7594 l_event_type_name           VARCHAR2(80) := 'All';
7595 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
7596 l_description               VARCHAR2(4000);
7597 l_transaction_reversal      NUMBER;
7598 l_ae_header_id              NUMBER;
7599 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
7600 l_log_module                VARCHAR2(240);
7601 --
7602 l_acct_reversal_source      VARCHAR2(30);
7603 l_trx_reversal_source       VARCHAR2(30);
7604 
7605 l_continue_with_lines       BOOLEAN := TRUE;
7606 --
7607 l_acc_rev_gl_date_source    DATE;                      -- 4262811
7608 --
7609 type t_array_event_id is table of number index by binary_integer;
7610 
7611 l_rec_array_event                    t_rec_array_event;
7612 l_null_rec_array_event               t_rec_array_event;
7613 l_array_ae_header_id                 xla_number_array_type;
7614 l_actual_flag                        VARCHAR2(1) := NULL;
7615 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
7616 l_balance_type_code                  VARCHAR2(1) :=NULL;
7617 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
7618 
7619 --
7620 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
7621 --
7622 
7623 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
7624 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
7625 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
7626 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
7627 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
7628 TYPE t_array_source_18 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
7629 TYPE t_array_source_28 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
7630 TYPE t_array_source_29 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
7631 TYPE t_array_source_30 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
7632 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
7633 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
7634 TYPE t_array_source_33 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ID%TYPE INDEX BY BINARY_INTEGER;
7635 TYPE t_array_source_34 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
7636 TYPE t_array_source_35 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
7637 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
7638 
7639 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
7640 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
7641 
7642 l_array_source_4              t_array_source_4;
7643 l_array_source_7              t_array_source_7;
7644 l_array_source_13              t_array_source_13;
7645 l_array_source_13_meaning      t_array_lookup_meaning;
7646 l_array_source_15              t_array_source_15;
7647 l_array_source_17              t_array_source_17;
7648 l_array_source_18              t_array_source_18;
7649 l_array_source_28              t_array_source_28;
7650 l_array_source_29              t_array_source_29;
7651 l_array_source_30              t_array_source_30;
7652 l_array_source_31              t_array_source_31;
7653 l_array_source_32              t_array_source_32;
7654 l_array_source_33              t_array_source_33;
7655 l_array_source_34              t_array_source_34;
7656 l_array_source_35              t_array_source_35;
7657 l_array_source_37              t_array_source_37;
7658 l_array_source_37_meaning      t_array_lookup_meaning;
7659 
7660 l_array_source_12      t_array_source_12;
7661 l_array_source_16      t_array_source_16;
7662 
7663 --
7664 CURSOR header_cur
7665 IS
7666 SELECT /*+ leading(xet) cardinality(xet,1) */
7667 -- Event Class Code: DIR_INTERORG_RCPT
7668     xet.entity_id
7669    ,xet.legal_entity_id
7670    ,xet.entity_code
7671    ,xet.transaction_number
7672    ,xet.event_id
7673    ,xet.event_class_code
7674    ,xet.event_type_code
7675    ,xet.event_number
7676    ,xet.event_date
7677    ,xet.transaction_date
7678    ,xet.reference_num_1
7679    ,xet.reference_num_2
7683    ,xet.reference_char_2
7680    ,xet.reference_num_3
7681    ,xet.reference_num_4
7682    ,xet.reference_char_1
7684    ,xet.reference_char_3
7685    ,xet.reference_char_4
7686    ,xet.reference_date_1
7687    ,xet.reference_date_2
7688    ,xet.reference_date_3
7689    ,xet.reference_date_4
7690    ,xet.event_created_by
7691    ,xet.budgetary_control_flag 
7692   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_4
7693   , h4.APPLIED_TO_APPL_ID    source_7
7694   , h1.DISTRIBUTION_TYPE    source_13
7695   , fvl13.meaning   source_13_meaning
7696   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_15
7697   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_17
7698   , h7.CST_ENCUM_UPG_OPTION    source_18
7699   , h6.REQ_ENCUMBRANCE_FLAG    source_28
7700   , h5.REQ_RESERVED_FLAG    source_29
7701   , h4.BUS_FLOW_REQ_DIST_TYPE    source_30
7702   , h4.BUS_FLOW_REQ_ENTITY_CODE    source_31
7703   , h4.BUS_FLOW_REQ_DIST_ID    source_32
7704   , h4.BUS_FLOW_REQ_ID    source_33
7705   , h5.REQ_BUDGET_ACCOUNT    source_34
7706   , h6.REQ_ENCUMBRANCE_TYPE_ID    source_35
7707   , h1.TRANSFER_TO_GL_INDICATOR    source_37
7708   , fvl37.meaning   source_37_meaning
7709   FROM xla_events_gt     xet 
7710   , CST_XLA_INV_HEADERS_V  h1
7711   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
7712   , CST_XLA_INV_REF_V  h4
7713   , PO_REQ_DISTS_REF_V  h5
7714   , PO_REQ_HEADERS_REF_V  h6
7715   , PSA_CST_XLA_UPG_V  h7
7716   , fnd_lookup_values    fvl13
7717   , fnd_lookup_values    fvl37
7718  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
7719    and xet.event_class_code = C_EVENT_CLASS_CODE
7720    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
7721  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h4.BUS_FLOW_REQ_DIST_ID=h5.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h6.REQ_ID (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
7722   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
7723   AND fvl13.view_application_id(+) = 700
7724   AND fvl13.language(+)            = USERENV('LANG')
7725      AND fvl37.lookup_type(+)         = 'YES_NO'
7726   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
7727   AND fvl37.view_application_id(+) = 0
7728   AND fvl37.language(+)            = USERENV('LANG')
7729   
7730  ORDER BY event_id
7731 ;
7732 
7733 
7734 --
7735 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
7736 IS
7737 SELECT  /*+ leading(xet) cardinality(xet,1) */
7738 -- Event Class Code: DIR_INTERORG_RCPT
7739     xet.entity_id
7740    ,xet.legal_entity_id
7741    ,xet.entity_code
7742    ,xet.transaction_number
7743    ,xet.event_id
7744    ,xet.event_class_code
7745    ,xet.event_type_code
7746    ,xet.event_number
7747    ,xet.event_date
7748    ,xet.transaction_date
7749    ,xet.reference_num_1
7750    ,xet.reference_num_2
7751    ,xet.reference_num_3
7752    ,xet.reference_num_4
7753    ,xet.reference_char_1
7754    ,xet.reference_char_2
7755    ,xet.reference_char_3
7756    ,xet.reference_char_4
7757    ,xet.reference_date_1
7758    ,xet.reference_date_2
7759    ,xet.reference_date_3
7760    ,xet.reference_date_4
7761    ,xet.event_created_by
7762    ,xet.budgetary_control_flag
7763  , l2.LINE_NUMBER  
7764   , l2.DISTRIBUTION_IDENTIFIER    source_12
7765   , l2.CURRENCY_CODE    source_16
7766   FROM xla_events_gt     xet 
7767   , CST_XLA_INV_LINES_V  l2
7768  WHERE xet.event_id between x_first_event_id and x_last_event_id
7769    and xet.event_date between p_pad_start_date and p_pad_end_date
7770    and xet.event_class_code = C_EVENT_CLASS_CODE
7771    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
7772 ;
7773 
7774 --
7775 BEGIN
7776 IF g_log_enabled THEN
7777    l_log_module := C_DEFAULT_MODULE||'.EventClass_13';
7778 END IF;
7779 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7780    trace
7781       (p_msg      => 'BEGIN of EventClass_13'
7782       ,p_level    => C_LEVEL_PROCEDURE
7783       ,p_module   => l_log_module);
7784 END IF;
7785 
7786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7787    trace
7788       (p_msg      => 'p_application_id = '||p_application_id||
7789                      ' - p_base_ledger_id = '||p_base_ledger_id||
7790                      ' - p_target_ledger_id  = '||p_target_ledger_id||
7791                      ' - p_language = '||p_language||
7792                      ' - p_currency_code = '||p_currency_code||
7793                      ' - p_sla_ledger_id = '||p_sla_ledger_id
7794       ,p_level    => C_LEVEL_STATEMENT
7795       ,p_module   => l_log_module);
7796 END IF;
7797 --
7798 -- initialze arrays
7799 --
7800 g_array_event.DELETE;
7801 l_rec_array_event := l_null_rec_array_event;
7802 --
7803 --------------------------------------
7804 -- 4262811 Initialze MPA Line Number
7805 --------------------------------------
7806 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
7807 
7808 --
7809 
7810 --
7811 OPEN header_cur;
7812 --
7813 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
7814    trace
7815    (p_msg      => 'SQL - FETCH header_cur'
7816    ,p_level    => C_LEVEL_STATEMENT
7817    ,p_module   => l_log_module);
7818 END IF;
7819 --
7820 LOOP
7821 FETCH header_cur BULK COLLECT INTO
7825       , l_array_transaction_num
7822         l_array_entity_id
7823       , l_array_legal_entity_id
7824       , l_array_entity_code
7826       , l_array_event_id
7827       , l_array_class_code
7828       , l_array_event_type
7829       , l_array_event_number
7830       , l_array_event_date
7831       , l_array_transaction_date
7832       , l_array_reference_num_1
7833       , l_array_reference_num_2
7834       , l_array_reference_num_3
7835       , l_array_reference_num_4
7836       , l_array_reference_char_1
7837       , l_array_reference_char_2
7838       , l_array_reference_char_3
7839       , l_array_reference_char_4
7840       , l_array_reference_date_1
7841       , l_array_reference_date_2
7842       , l_array_reference_date_3
7843       , l_array_reference_date_4
7844       , l_array_event_created_by
7845       , l_array_budgetary_control_flag 
7846       , l_array_source_4
7847       , l_array_source_7
7848       , l_array_source_13
7849       , l_array_source_13_meaning
7850       , l_array_source_15
7851       , l_array_source_17
7852       , l_array_source_18
7853       , l_array_source_28
7854       , l_array_source_29
7855       , l_array_source_30
7856       , l_array_source_31
7857       , l_array_source_32
7858       , l_array_source_33
7859       , l_array_source_34
7860       , l_array_source_35
7861       , l_array_source_37
7862       , l_array_source_37_meaning
7863       LIMIT l_rows;
7864 --
7865 IF (C_LEVEL_EVENT >= g_log_level) THEN
7866    trace
7867    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
7868    ,p_level    => C_LEVEL_EVENT
7869    ,p_module   => l_log_module);
7870 END IF;
7871 --
7872 EXIT WHEN l_array_entity_id.COUNT = 0;
7873 
7874 -- initialize arrays
7875 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
7876 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
7877 
7878 --
7879 -- Bug 4458708
7880 --
7881 XLA_AE_LINES_PKG.g_LineNumber := 0;
7882 
7883 
7884 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
7885 g_last_hdr_idx := l_array_event_id.LAST;
7886 --
7887 -- loop for the headers. Each iteration is for each header extract row
7888 -- fetched in header cursor
7889 --
7890 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
7891 
7892 --
7893 -- set event info as cache for other routines to refer event attributes
7894 --
7895 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
7896    (p_application_id           => p_application_id
7897    ,p_primary_ledger_id        => p_primary_ledger_id
7898    ,p_base_ledger_id           => p_base_ledger_id
7899    ,p_target_ledger_id         => p_target_ledger_id
7900    ,p_entity_id                => l_array_entity_id(hdr_idx)
7901    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
7902    ,p_entity_code              => l_array_entity_code(hdr_idx)
7903    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
7904    ,p_event_id                 => l_array_event_id(hdr_idx)
7905    ,p_event_class_code         => l_array_class_code(hdr_idx)
7906    ,p_event_type_code          => l_array_event_type(hdr_idx)
7907    ,p_event_number             => l_array_event_number(hdr_idx)
7908    ,p_event_date               => l_array_event_date(hdr_idx)
7909    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
7910    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
7911    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
7912    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
7913    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
7914    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
7915    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
7916    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
7917    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
7918    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
7919    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
7920    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
7921    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
7922    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
7923    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
7924 
7925 --
7926 -- set the status of entry to C_VALID (0)
7927 --
7928 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
7929 
7930 --
7931 -- initialize a row for ae header
7932 --
7933 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
7934 
7935 l_event_id := l_array_event_id(hdr_idx);
7936 
7937 --
7938 -- storing the hdr_idx for event. May be used by line cursor.
7939 --
7940 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
7941 
7942 --
7943 -- store sources from header extract. This can be improved to
7944 -- store only those sources from header extract that may be used in lines
7945 --
7946 
7947 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
7948 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
7949 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
7950 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
7951 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
7955 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
7952 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
7953 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
7954 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
7956 g_array_event(l_event_id).array_value_char('source_30') := l_array_source_30(hdr_idx);
7957 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
7958 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
7959 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
7960 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
7961 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
7962 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
7963 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
7964 
7965 --
7966 -- initilaize the status of ae headers for diffrent balance types
7967 -- the status is initialised to C_NOT_CREATED (2)
7968 --
7969 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7970 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7971 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
7972 
7973 --
7974 -- call api to validate and store accounting attributes for header
7975 --
7976 
7977 ------------------------------------------------------------
7978 -- Accrual Reversal : to get date for Standard Source (NONE)
7979 ------------------------------------------------------------
7980 l_acc_rev_gl_date_source := NULL;
7981 
7982      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
7983       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_35');
7984      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
7985       l_rec_acct_attrs.array_date_value(2) := 
7986 xla_ae_sources_pkg.GetSystemSourceDate(
7987    p_source_code           => 'XLA_REFERENCE_DATE_1'
7988  , p_source_type_code      => 'Y'
7989  , p_source_application_id =>  602
7990 );
7991      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
7992       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_37');
7993 
7994 
7995 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
7996 
7997 XLA_AE_HEADER_PKG.SetJeCategoryName;
7998 
7999 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
8000 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
8001 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
8002 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
8003 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
8004 
8005 
8006 -- No header level analytical criteria
8007 
8008 --
8009 --accounting attribute enhancement, bug 3612931
8010 --
8011 l_trx_reversal_source := SUBSTR(NULL, 1,30);
8012 
8013 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
8014    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
8015 
8016    xla_accounting_err_pkg.build_message
8017       (p_appli_s_name            => 'XLA'
8018       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
8019       ,p_token_1                 => 'ACCT_ATTR_NAME'
8020       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
8021       ,p_token_2                 => 'PRODUCT_NAME'
8022       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
8023       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
8024       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
8025       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
8026 
8027 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
8028    --
8029    -- following sets the accounting attributes needed to reverse
8030    -- accounting for a distributeion
8031    --
8032    xla_ae_lines_pkg.SetTrxReversalAttrs
8033       (p_event_id              => l_event_id
8034       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
8035       ,p_trx_reversal_source   => l_trx_reversal_source);
8036 
8037 END IF;
8038 
8039 
8040 ----------------------------------------------------------------
8041 -- 4262811 -  update the header statuses to invalid in need be
8042 ----------------------------------------------------------------
8043 --
8044 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
8045 
8046 
8047   -----------------------------------------------
8048   -- No accrual reversal for the event class/type
8049   -----------------------------------------------
8050 ----------------------------------------------------------------
8051 
8052 --
8053 -- this ends the header loop iteration for one bulk fetch
8054 --
8055 END LOOP;
8056 
8060 --
8057 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
8058 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
8059 
8061 -- insert dummy rows into lines gt table that were created due to
8062 -- transaction reversals
8063 --
8064 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
8065    l_result := XLA_AE_LINES_PKG.InsertLines;
8066 END IF;
8067 
8068 --
8069 -- reset the temp_line_num for each set of events fetched from header
8070 -- cursor rather than doing it for each new event in line cursor
8071 -- Bug 3939231
8072 --
8073 xla_ae_lines_pkg.g_temp_line_num := 0;
8074 
8075 
8076 
8077 --
8078 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
8079 --
8080 --
8081 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8082 
8083       trace
8084          (p_msg      => 'SQL - FETCH line_cur'
8085          ,p_level    => C_LEVEL_STATEMENT
8086          ,p_module   => l_log_module);
8087 
8088 END IF;
8089 --
8090 --
8091 LOOP
8092   --
8093   FETCH line_cur BULK COLLECT INTO
8094         l_array_entity_id
8095       , l_array_legal_entity_id
8096       , l_array_entity_code
8097       , l_array_transaction_num
8098       , l_array_event_id
8099       , l_array_class_code
8100       , l_array_event_type
8101       , l_array_event_number
8102       , l_array_event_date
8103       , l_array_transaction_date
8104       , l_array_reference_num_1
8105       , l_array_reference_num_2
8106       , l_array_reference_num_3
8107       , l_array_reference_num_4
8108       , l_array_reference_char_1
8109       , l_array_reference_char_2
8110       , l_array_reference_char_3
8111       , l_array_reference_char_4
8112       , l_array_reference_date_1
8113       , l_array_reference_date_2
8114       , l_array_reference_date_3
8115       , l_array_reference_date_4
8116       , l_array_event_created_by
8117       , l_array_budgetary_control_flag
8118       , l_array_extract_line_num 
8119       , l_array_source_12
8120       , l_array_source_16
8121       LIMIT l_rows;
8122 
8123   --
8124   IF (C_LEVEL_EVENT >= g_log_level) THEN
8125             trace
8126                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
8127                ,p_level    => C_LEVEL_EVENT
8128                ,p_module   => l_log_module);
8129   END IF;
8130   --
8131   EXIT WHEN l_array_entity_id.count = 0;
8132 
8133   XLA_AE_LINES_PKG.g_rec_lines := null;
8134 
8135 --
8136 -- Bug 4458708
8137 --
8138 XLA_AE_LINES_PKG.g_LineNumber := 0;
8139 --
8140 --
8141 
8142 FOR Idx IN 1..l_array_event_id.count LOOP
8143    --
8144    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
8145    --
8146    l_event_id := l_array_event_id(idx);  -- 5648433
8147 
8148    --
8149    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
8150    --
8151 
8152    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
8153              (g_array_event(l_event_id).array_value_num('header_index'))
8154          ,'N'
8155          ) <> 'Y'
8156    THEN
8157       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8158          trace
8159             (p_msg      => 'Trancaction revesal option is not Y '
8160             ,p_level    => C_LEVEL_STATEMENT
8161             ,p_module   => l_log_module);
8162       END IF;
8163 
8164 --
8165 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
8166 --
8167 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
8168 --
8169 -- set event info as cache for other routines to refer event attributes
8170 --
8171 
8172 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
8173    l_previous_event_id := l_event_id;
8174 
8175    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
8176       (p_application_id           => p_application_id
8177       ,p_primary_ledger_id        => p_primary_ledger_id
8178       ,p_base_ledger_id           => p_base_ledger_id
8179       ,p_target_ledger_id         => p_target_ledger_id
8180       ,p_entity_id                => l_array_entity_id(Idx)
8181       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
8182       ,p_entity_code              => l_array_entity_code(Idx)
8183       ,p_transaction_num          => l_array_transaction_num(Idx)
8184       ,p_event_id                 => l_array_event_id(Idx)
8185       ,p_event_class_code         => l_array_class_code(Idx)
8186       ,p_event_type_code          => l_array_event_type(Idx)
8187       ,p_event_number             => l_array_event_number(Idx)
8188       ,p_event_date               => l_array_event_date(Idx)
8189       ,p_transaction_date         => l_array_transaction_date(Idx)
8190       ,p_reference_num_1          => l_array_reference_num_1(Idx)
8191       ,p_reference_num_2          => l_array_reference_num_2(Idx)
8192       ,p_reference_num_3          => l_array_reference_num_3(Idx)
8193       ,p_reference_num_4          => l_array_reference_num_4(Idx)
8194       ,p_reference_char_1         => l_array_reference_char_1(Idx)
8195       ,p_reference_char_2         => l_array_reference_char_2(Idx)
8196       ,p_reference_char_3         => l_array_reference_char_3(Idx)
8197       ,p_reference_char_4         => l_array_reference_char_4(Idx)
8198       ,p_reference_date_1         => l_array_reference_date_1(Idx)
8202       ,p_event_created_by         => l_array_event_created_by(Idx)
8199       ,p_reference_date_2         => l_array_reference_date_2(Idx)
8200       ,p_reference_date_3         => l_array_reference_date_3(Idx)
8201       ,p_reference_date_4         => l_array_reference_date_4(Idx)
8203       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
8204        --
8205 END IF;
8206 
8207 
8208 
8209 --
8210 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
8211 
8212 l_acct_reversal_source := SUBSTR(NULL, 1,30);
8213 
8214 IF l_continue_with_lines THEN
8215    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
8216       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
8217 
8218       xla_accounting_err_pkg.build_message
8219          (p_appli_s_name            => 'XLA'
8220          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
8221          ,p_token_1                 => 'LINE_NUMBER'
8222          ,p_value_1                 => l_array_extract_line_num(Idx)
8223          ,p_token_2                 => 'PRODUCT_NAME'
8224          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
8225          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
8226          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
8227          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
8228 
8229    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
8230       --
8231       -- following sets the accounting attributes needed to reverse
8232       -- accounting for a distributeion
8233       --
8234 
8235       --
8236       -- 5217187
8237       --
8238       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
8239       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
8240                                        g_array_event(l_event_id).array_value_num('header_index'));
8241       --
8242       --
8243 
8244       -- No reversal code generated
8245 
8246       xla_ae_lines_pkg.SetAcctReversalAttrs
8247          (p_event_id             => l_event_id
8248          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
8249          ,p_calculate_acctd_flag => l_calculate_acctd_flag
8250          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
8251    END IF;
8252 
8253    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
8254        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
8255 
8256 --
8257 AcctLineType_9 (
8258  p_application_id  => p_application_id
8259  ,p_event_id     => l_event_id
8260  ,p_calculate_acctd_flag => l_calculate_acctd_flag
8261  ,p_calculate_g_l_flag => l_calculate_g_l_flag
8262  ,p_actual_flag => l_actual_flag
8263  ,p_balance_type_code => l_balance_type_code
8264  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
8265  
8266  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
8267  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
8268  , p_source_12 => l_array_source_12(Idx)
8269  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
8270  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
8271  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
8272  , p_source_16 => l_array_source_16(Idx)
8273  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
8274  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
8275  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
8276  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
8277  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
8278  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
8279  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
8280  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
8281  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
8282  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
8283  );
8284 If(l_balance_type_code = 'A') THEN
8285   l_actual_gain_loss_ref := l_gain_or_loss_ref;
8286 END IF;
8287 
8288 --
8289 
8290       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
8291       -- or secondary ledger that has different currency with primary
8292       -- or alc that is calculated by sla
8293       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
8294             (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'))
8295 
8296 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
8297 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
8298           AND (l_actual_flag = 'A')) THEN
8299         XLA_AE_LINES_PKG.CreateGainOrLossLines(
8300           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
8301          ,p_application_id   => p_application_id
8302          ,p_amb_context_code => 'DEFAULT'
8303          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
8304          ,p_event_class_code => C_EVENT_CLASS_CODE
8308          ,p_loss_ccid        => -1
8305          ,p_event_type_code  => C_EVENT_TYPE_CODE
8306          
8307          ,p_gain_ccid        => -1
8309 
8310          ,p_actual_flag      => l_actual_flag
8311          ,p_enc_flag         => null
8312          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
8313          ,p_enc_g_l_ref      => null
8314          );
8315       END IF;
8316    END IF;
8317 END IF;
8318 
8319    ELSE
8320       --
8321       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
8322       --
8323       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8324          trace
8325             (p_msg      => 'Trancaction revesal option is Y'
8326             ,p_level    => C_LEVEL_STATEMENT
8327             ,p_module   => l_log_module);
8328       END IF;
8329    END IF;
8330 
8331 END LOOP;
8332 l_result := XLA_AE_LINES_PKG.InsertLines ;
8333 end loop;
8334 close line_cur;
8335 
8336 
8337 --
8338 -- insert headers into xla_ae_headers_gt table
8339 --
8340 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
8341 
8342 -- insert into errors table here.
8343 
8344 END LOOP;
8345 
8346 --
8347 -- 4865292
8348 --
8349 -- Compare g_hdr_extract_count with event count in
8350 -- CreateHeadersAndLines.
8351 --
8352 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
8353 
8354 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8355    trace (p_msg     => '# rows extracted from header extract objects '
8356                     || ' (running total): '
8357                     || g_hdr_extract_count
8358          ,p_level   => C_LEVEL_STATEMENT
8359          ,p_module  => l_log_module);
8360 END IF;
8361 
8362 CLOSE header_cur;
8363 --
8364 
8365 --
8366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8367    trace
8368       (p_msg      => 'END of EventClass_13'
8369       ,p_level    => C_LEVEL_PROCEDURE
8370       ,p_module   => l_log_module);
8371 END IF;
8372 --
8373 RETURN l_result;
8374 EXCEPTION
8375 WHEN xla_exceptions_pkg.application_exception THEN
8376    
8377 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
8378 
8379    
8380 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
8381 
8382    RAISE;
8383 
8384 WHEN NO_DATA_FOUND THEN
8385 
8386 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
8387 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
8388 
8389 FOR header_record IN header_cur
8390 LOOP
8391     l_array_header_events(header_record.event_id) := header_record.event_id;
8392 END LOOP;
8393 
8394 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
8395 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
8396 
8397 fnd_file.put_line(fnd_file.LOG, '                    ');
8398 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
8399 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
8400 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
8401 
8402 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
8403 LOOP
8404 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
8405 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
8406         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
8407 	END IF;
8408 END LOOP;
8409 
8410 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
8411 fnd_file.put_line(fnd_file.LOG, '                    ');
8412 
8413 
8414 xla_exceptions_pkg.raise_message
8415       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_13');
8416 
8417 
8418 WHEN OTHERS THEN
8419    xla_exceptions_pkg.raise_message
8420       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_13');
8421 END EventClass_13;
8422 --
8423 
8424 ---------------------------------------
8425 --
8426 -- PRIVATE PROCEDURE
8427 --         insert_sources_14
8428 --
8429 ----------------------------------------
8430 --
8431 PROCEDURE insert_sources_14(
8432                                 p_target_ledger_id       IN NUMBER
8433                               , p_language               IN VARCHAR2
8434                               , p_sla_ledger_id          IN NUMBER
8435                               , p_pad_start_date         IN DATE
8436                               , p_pad_end_date           IN DATE
8437                          )
8438 IS
8439 
8440 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
8441 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
8442 p_apps_owner                   VARCHAR2(30);
8443 l_log_module                   VARCHAR2(240);
8444 BEGIN
8445 IF g_log_enabled THEN
8446       l_log_module := C_DEFAULT_MODULE||'.insert_sources_14';
8447 END IF;
8448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8449 
8450       trace
8451          (p_msg      => 'BEGIN of insert_sources_14'
8452          ,p_level    => C_LEVEL_PROCEDURE
8453          ,p_module   => l_log_module);
8454 
8455 END IF;
8456 
8457 -- select APPS owner
8458 SELECT oracle_username
8459   INTO p_apps_owner
8460   FROM fnd_oracle_userid
8461  WHERE read_only_flag = 'U'
8465       trace
8462 ;
8463 
8464 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8466          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
8467                         ' - p_language = '||p_language||
8468                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
8469                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
8470                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
8471                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
8472          ,p_level    => C_LEVEL_STATEMENT
8473          ,p_module   => l_log_module);
8474 END IF;
8475 
8476 
8477 --
8478 INSERT INTO xla_diag_sources --hdr2
8479 (
8480         event_id
8481       , ledger_id
8482       , sla_ledger_id
8483       , description_language
8484       , object_name
8485       , object_type_code
8486       , line_number
8487       , source_application_id
8488       , source_type_code
8489       , source_code
8490       , source_value
8491       , source_meaning
8492       , created_by
8493       , creation_date
8494       , last_update_date
8495       , last_updated_by
8496       , last_update_login
8497       , program_update_date
8498       , program_application_id
8499       , program_id
8500       , request_id
8501 )
8502 SELECT
8503         event_id
8504       , p_target_ledger_id
8505       , p_sla_ledger_id
8506       , p_language
8507       , object_name
8508       , object_type_code
8509       , line_number
8510       , source_application_id
8511       , source_type_code
8512       , source_code
8513       , SUBSTR(source_value ,1,1996)
8514       , SUBSTR(source_meaning ,1,200)
8515       , xla_environment_pkg.g_Usr_Id
8516       , TRUNC(SYSDATE)
8517       , TRUNC(SYSDATE)
8518       , xla_environment_pkg.g_Usr_Id
8519       , xla_environment_pkg.g_Login_Id
8520       , TRUNC(SYSDATE)
8521       , xla_environment_pkg.g_Prog_Appl_Id
8522       , xla_environment_pkg.g_Prog_Id
8523       , xla_environment_pkg.g_Req_Id
8524   FROM (
8525        SELECT xet.event_id                  event_id
8526             , 0                          line_number
8527             , CASE r
8528                WHEN 1 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
8529                 WHEN 2 THEN 'CST_XLA_INV_REF_V' 
8530                 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V' 
8531                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
8532                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
8533                 WHEN 6 THEN 'PSA_CST_XLA_UPG_V' 
8534                 WHEN 7 THEN 'PO_REQ_HEADERS_REF_V' 
8535                 WHEN 8 THEN 'PO_REQ_DISTS_REF_V' 
8536                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
8537                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
8538                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
8539                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
8540                 WHEN 13 THEN 'PO_REQ_DISTS_REF_V' 
8541                 WHEN 14 THEN 'PO_REQ_HEADERS_REF_V' 
8542                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
8543                 
8544                ELSE null
8545               END                           object_name
8546             , CASE r
8547                 WHEN 1 THEN 'HEADER' 
8548                 WHEN 2 THEN 'HEADER' 
8549                 WHEN 3 THEN 'HEADER' 
8550                 WHEN 4 THEN 'HEADER' 
8551                 WHEN 5 THEN 'HEADER' 
8552                 WHEN 6 THEN 'HEADER' 
8553                 WHEN 7 THEN 'HEADER' 
8554                 WHEN 8 THEN 'HEADER' 
8555                 WHEN 9 THEN 'HEADER' 
8556                 WHEN 10 THEN 'HEADER' 
8557                 WHEN 11 THEN 'HEADER' 
8558                 WHEN 12 THEN 'HEADER' 
8559                 WHEN 13 THEN 'HEADER' 
8560                 WHEN 14 THEN 'HEADER' 
8561                 WHEN 15 THEN 'HEADER' 
8562                 
8563                 ELSE null
8564               END                           object_type_code
8565             , CASE r
8566                 WHEN 1 THEN '707' 
8567                 WHEN 2 THEN '707' 
8568                 WHEN 3 THEN '707' 
8569                 WHEN 4 THEN '707' 
8570                 WHEN 5 THEN '707' 
8571                 WHEN 6 THEN '707' 
8572                 WHEN 7 THEN '201' 
8573                 WHEN 8 THEN '201' 
8574                 WHEN 9 THEN '707' 
8575                 WHEN 10 THEN '707' 
8576                 WHEN 11 THEN '707' 
8577                 WHEN 12 THEN '707' 
8578                 WHEN 13 THEN '201' 
8579                 WHEN 14 THEN '201' 
8580                 WHEN 15 THEN '707' 
8581                 
8582                 ELSE null
8583               END                           source_application_id
8584             , 'S'             source_type_code
8585             , CASE r
8586                 WHEN 1 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
8587                 WHEN 2 THEN 'APPLIED_TO_APPL_ID' 
8588                 WHEN 3 THEN 'DISTRIBUTION_TYPE' 
8589                 WHEN 4 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
8590                 WHEN 5 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
8591                 WHEN 6 THEN 'CST_ENCUM_UPG_OPTION' 
8592                 WHEN 7 THEN 'REQ_ENCUMBRANCE_FLAG' 
8593                 WHEN 8 THEN 'REQ_RESERVED_FLAG' 
8594                 WHEN 9 THEN 'BUS_FLOW_REQ_DIST_TYPE' 
8595                 WHEN 10 THEN 'BUS_FLOW_REQ_ENTITY_CODE' 
8596                 WHEN 11 THEN 'BUS_FLOW_REQ_DIST_ID' 
8597                 WHEN 12 THEN 'BUS_FLOW_REQ_ID' 
8601                 
8598                 WHEN 13 THEN 'REQ_BUDGET_ACCOUNT' 
8599                 WHEN 14 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
8600                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
8602                 ELSE null
8603               END                           source_code
8604             , CASE r
8605                 WHEN 1 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
8606                 WHEN 2 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
8607                 WHEN 3 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
8608                 WHEN 4 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
8609                 WHEN 5 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
8610                 WHEN 6 THEN TO_CHAR(h7.CST_ENCUM_UPG_OPTION)
8611                 WHEN 7 THEN TO_CHAR(h6.REQ_ENCUMBRANCE_FLAG)
8612                 WHEN 8 THEN TO_CHAR(h5.REQ_RESERVED_FLAG)
8613                 WHEN 9 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_TYPE)
8614                 WHEN 10 THEN TO_CHAR(h4.BUS_FLOW_REQ_ENTITY_CODE)
8615                 WHEN 11 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_ID)
8616                 WHEN 12 THEN TO_CHAR(h4.BUS_FLOW_REQ_ID)
8617                 WHEN 13 THEN TO_CHAR(h5.REQ_BUDGET_ACCOUNT)
8618                 WHEN 14 THEN TO_CHAR(h6.REQ_ENCUMBRANCE_TYPE_ID)
8619                 WHEN 15 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
8620                 
8621                 ELSE null
8622               END                           source_value
8623             , CASE r
8624                 WHEN 3 THEN fvl13.meaning
8625                 WHEN 15 THEN fvl37.meaning
8626                 
8627                 ELSE null
8628               END               source_meaning
8629          FROM xla_events_gt     xet  
8630       , CST_XLA_INV_HEADERS_V  h1
8631       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
8632       , CST_XLA_INV_REF_V  h4
8633       , PO_REQ_DISTS_REF_V  h5
8634       , PO_REQ_HEADERS_REF_V  h6
8635       , PSA_CST_XLA_UPG_V  h7
8636   , fnd_lookup_values    fvl13
8637   , fnd_lookup_values    fvl37
8638              ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
8639          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
8640            AND xet.event_class_code = C_EVENT_CLASS_CODE
8641               AND h1.event_id = xet.event_id
8642  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h4.bus_flow_req_dist_id=h5.req_distribution_id (+)  AND h4.bus_flow_req_id = h6.req_id (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
8643   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
8644   AND fvl13.view_application_id(+) = 700
8645   AND fvl13.language(+)            = USERENV('LANG')
8646      AND fvl37.lookup_type(+)         = 'YES_NO'
8647   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
8648   AND fvl37.view_application_id(+) = 0
8649   AND fvl37.language(+)            = USERENV('LANG')
8650   
8651 )
8652 ;
8653 --
8654 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8655 
8656       trace
8657          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
8658          ,p_level    => C_LEVEL_STATEMENT
8659          ,p_module   => l_log_module);
8660 
8661 END IF;
8662 --
8663 
8664 
8665 
8666 --
8667 INSERT INTO xla_diag_sources  --line2
8668 (
8669         event_id
8670       , ledger_id
8671       , sla_ledger_id
8672       , description_language
8673       , object_name
8674       , object_type_code
8675       , line_number
8676       , source_application_id
8677       , source_type_code
8678       , source_code
8679       , source_value
8680       , source_meaning
8681       , created_by
8682       , creation_date
8683       , last_update_date
8684       , last_updated_by
8685       , last_update_login
8686       , program_update_date
8687       , program_application_id
8688       , program_id
8689       , request_id
8690 )
8691 SELECT  event_id
8692       , p_target_ledger_id
8693       , p_sla_ledger_id
8694       , p_language
8695       , object_name
8696       , object_type_code
8697       , line_number
8698       , source_application_id
8699       , source_type_code
8700       , source_code
8701       , SUBSTR(source_value,1,1996)
8702       , SUBSTR(source_meaning ,1,200)
8703       , xla_environment_pkg.g_Usr_Id
8704       , TRUNC(SYSDATE)
8705       , TRUNC(SYSDATE)
8706       , xla_environment_pkg.g_Usr_Id
8707       , xla_environment_pkg.g_Login_Id
8708       , TRUNC(SYSDATE)
8709       , xla_environment_pkg.g_Prog_Appl_Id
8710       , xla_environment_pkg.g_Prog_Id
8711       , xla_environment_pkg.g_Req_Id
8712   FROM (
8713        SELECT xet.event_id                  event_id
8714             , l2.line_number                 line_number
8715             , CASE r
8716                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
8717                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
8718                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
8719                 
8720                ELSE null
8721               END                           object_name
8722             , CASE r
8723                 WHEN 1 THEN 'LINE' 
8724                 WHEN 2 THEN 'LINE' 
8725                 WHEN 3 THEN 'LINE' 
8726                 
8727                 ELSE null
8728               END                           object_type_code
8729             , CASE r
8733                 
8730                 WHEN 1 THEN '707' 
8731                 WHEN 2 THEN '707' 
8732                 WHEN 3 THEN '707' 
8734                 ELSE null
8735               END                           source_application_id
8736             , 'S'             source_type_code
8737             , CASE r
8738                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
8739                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
8740                 WHEN 3 THEN 'CURRENCY_CODE' 
8741                 
8742                 ELSE null
8743               END                           source_code
8744             , CASE r
8745                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
8746                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
8747                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
8748                 
8749                 ELSE null
8750               END                           source_value
8751             , null              source_meaning
8752          FROM  xla_events_gt     xet  
8753         , CST_XLA_INV_LINES_V  l2
8754             , (select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
8755         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
8756           AND xet.event_class_code = C_EVENT_CLASS_CODE
8757             AND l2.event_id          = xet.event_id
8758 
8759 )
8760 ;
8761 --
8762 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
8763 
8764       trace
8765          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
8766          ,p_level    => C_LEVEL_STATEMENT
8767          ,p_module   => l_log_module);
8768 
8769 END IF;
8770 
8771 
8772 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8773       trace
8774          (p_msg      => 'END of insert_sources_14'
8775          ,p_level    => C_LEVEL_PROCEDURE
8776          ,p_module   => l_log_module);
8777 END IF;
8778 EXCEPTION
8779   WHEN xla_exceptions_pkg.application_exception THEN
8780       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
8781             trace
8782                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
8783                ,p_level    => C_LEVEL_EXCEPTION
8784                ,p_module   => l_log_module);
8785       END IF;
8786       RAISE;
8787   WHEN OTHERS THEN
8788       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
8789             trace
8790                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
8791                ,p_level    => C_LEVEL_EXCEPTION
8792                ,p_module   => l_log_module);
8793        END IF;
8794        xla_exceptions_pkg.raise_message
8795            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_14');
8796 END insert_sources_14;
8797 --
8798 
8799 ---------------------------------------
8800 --
8801 -- PRIVATE FUNCTION
8802 --         EventClass_14
8803 --
8804 ----------------------------------------
8805 --
8806 FUNCTION EventClass_14
8807        (p_application_id         IN NUMBER
8808        ,p_base_ledger_id         IN NUMBER
8809        ,p_target_ledger_id       IN NUMBER
8810        ,p_language               IN VARCHAR2
8811        ,p_currency_code          IN VARCHAR2
8812        ,p_sla_ledger_id          IN NUMBER
8813        ,p_pad_start_date         IN DATE
8814        ,p_pad_end_date           IN DATE
8815        ,p_primary_ledger_id      IN NUMBER)
8816 RETURN BOOLEAN IS
8817 --
8818 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
8819 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
8820 
8821 l_calculate_acctd_flag   VARCHAR2(1) :='N';
8822 l_calculate_g_l_flag     VARCHAR2(1) :='N';
8823 --
8824 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8825 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8826 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
8827 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
8828 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8829 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
8830 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
8831 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8832 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8833 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8834 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8835 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8836 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8837 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
8838 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
8839 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
8840 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
8841 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
8842 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8843 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8844 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8845 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
8849 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
8846 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
8847 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
8848 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
8850 
8851 l_event_id                             NUMBER;
8852 l_previous_event_id                    NUMBER;
8853 l_first_event_id                       NUMBER;
8854 l_last_event_id                        NUMBER;
8855 
8856 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
8857 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
8858 --
8859 --
8860 l_result                    BOOLEAN := TRUE;
8861 l_rows                      NUMBER  := 1000;
8862 l_event_type_name           VARCHAR2(80) := 'All';
8863 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
8864 l_description               VARCHAR2(4000);
8865 l_transaction_reversal      NUMBER;
8866 l_ae_header_id              NUMBER;
8867 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
8868 l_log_module                VARCHAR2(240);
8869 --
8870 l_acct_reversal_source      VARCHAR2(30);
8871 l_trx_reversal_source       VARCHAR2(30);
8872 
8873 l_continue_with_lines       BOOLEAN := TRUE;
8874 --
8875 l_acc_rev_gl_date_source    DATE;                      -- 4262811
8876 --
8877 type t_array_event_id is table of number index by binary_integer;
8878 
8879 l_rec_array_event                    t_rec_array_event;
8880 l_null_rec_array_event               t_rec_array_event;
8881 l_array_ae_header_id                 xla_number_array_type;
8882 l_actual_flag                        VARCHAR2(1) := NULL;
8883 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
8884 l_balance_type_code                  VARCHAR2(1) :=NULL;
8885 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
8886 
8887 --
8888 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
8889 --
8890 
8891 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
8892 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
8893 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
8894 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
8895 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
8896 TYPE t_array_source_18 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
8897 TYPE t_array_source_28 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
8898 TYPE t_array_source_29 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
8899 TYPE t_array_source_30 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
8900 TYPE t_array_source_31 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
8901 TYPE t_array_source_32 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
8902 TYPE t_array_source_33 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ID%TYPE INDEX BY BINARY_INTEGER;
8903 TYPE t_array_source_34 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
8904 TYPE t_array_source_35 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
8905 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
8906 
8907 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
8908 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
8909 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
8910 
8911 l_array_source_4              t_array_source_4;
8912 l_array_source_7              t_array_source_7;
8913 l_array_source_13              t_array_source_13;
8914 l_array_source_13_meaning      t_array_lookup_meaning;
8915 l_array_source_15              t_array_source_15;
8916 l_array_source_17              t_array_source_17;
8917 l_array_source_18              t_array_source_18;
8918 l_array_source_28              t_array_source_28;
8919 l_array_source_29              t_array_source_29;
8920 l_array_source_30              t_array_source_30;
8921 l_array_source_31              t_array_source_31;
8922 l_array_source_32              t_array_source_32;
8923 l_array_source_33              t_array_source_33;
8924 l_array_source_34              t_array_source_34;
8925 l_array_source_35              t_array_source_35;
8926 l_array_source_37              t_array_source_37;
8927 l_array_source_37_meaning      t_array_lookup_meaning;
8928 
8929 l_array_source_6      t_array_source_6;
8930 l_array_source_12      t_array_source_12;
8931 l_array_source_16      t_array_source_16;
8932 
8933 --
8934 CURSOR header_cur
8935 IS
8936 SELECT /*+ leading(xet) cardinality(xet,1) */
8937 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
8938     xet.entity_id
8939    ,xet.legal_entity_id
8940    ,xet.entity_code
8941    ,xet.transaction_number
8942    ,xet.event_id
8943    ,xet.event_class_code
8944    ,xet.event_type_code
8945    ,xet.event_number
8946    ,xet.event_date
8950    ,xet.reference_num_3
8947    ,xet.transaction_date
8948    ,xet.reference_num_1
8949    ,xet.reference_num_2
8951    ,xet.reference_num_4
8952    ,xet.reference_char_1
8953    ,xet.reference_char_2
8954    ,xet.reference_char_3
8955    ,xet.reference_char_4
8956    ,xet.reference_date_1
8957    ,xet.reference_date_2
8958    ,xet.reference_date_3
8959    ,xet.reference_date_4
8960    ,xet.event_created_by
8961    ,xet.budgetary_control_flag 
8962   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_4
8963   , h4.APPLIED_TO_APPL_ID    source_7
8964   , h1.DISTRIBUTION_TYPE    source_13
8965   , fvl13.meaning   source_13_meaning
8966   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_15
8967   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_17
8968   , h7.CST_ENCUM_UPG_OPTION    source_18
8969   , h6.REQ_ENCUMBRANCE_FLAG    source_28
8970   , h5.REQ_RESERVED_FLAG    source_29
8971   , h4.BUS_FLOW_REQ_DIST_TYPE    source_30
8972   , h4.BUS_FLOW_REQ_ENTITY_CODE    source_31
8973   , h4.BUS_FLOW_REQ_DIST_ID    source_32
8974   , h4.BUS_FLOW_REQ_ID    source_33
8975   , h5.REQ_BUDGET_ACCOUNT    source_34
8976   , h6.REQ_ENCUMBRANCE_TYPE_ID    source_35
8977   , h1.TRANSFER_TO_GL_INDICATOR    source_37
8978   , fvl37.meaning   source_37_meaning
8979   FROM xla_events_gt     xet 
8980   , CST_XLA_INV_HEADERS_V  h1
8981   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
8982   , CST_XLA_INV_REF_V  h4
8983   , PO_REQ_DISTS_REF_V  h5
8984   , PO_REQ_HEADERS_REF_V  h6
8985   , PSA_CST_XLA_UPG_V  h7
8986   , fnd_lookup_values    fvl13
8987   , fnd_lookup_values    fvl37
8988  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
8989    and xet.event_class_code = C_EVENT_CLASS_CODE
8990    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
8991  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h4.BUS_FLOW_REQ_DIST_ID=h5.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h6.REQ_ID (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
8992   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
8993   AND fvl13.view_application_id(+) = 700
8994   AND fvl13.language(+)            = USERENV('LANG')
8995      AND fvl37.lookup_type(+)         = 'YES_NO'
8996   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
8997   AND fvl37.view_application_id(+) = 0
8998   AND fvl37.language(+)            = USERENV('LANG')
8999   
9000  ORDER BY event_id
9001 ;
9002 
9003 
9004 --
9005 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
9006 IS
9007 SELECT  /*+ leading(xet) cardinality(xet,1) */
9008 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
9009     xet.entity_id
9010    ,xet.legal_entity_id
9011    ,xet.entity_code
9012    ,xet.transaction_number
9013    ,xet.event_id
9014    ,xet.event_class_code
9015    ,xet.event_type_code
9016    ,xet.event_number
9017    ,xet.event_date
9018    ,xet.transaction_date
9019    ,xet.reference_num_1
9020    ,xet.reference_num_2
9021    ,xet.reference_num_3
9022    ,xet.reference_num_4
9023    ,xet.reference_char_1
9024    ,xet.reference_char_2
9025    ,xet.reference_char_3
9026    ,xet.reference_char_4
9027    ,xet.reference_date_1
9028    ,xet.reference_date_2
9029    ,xet.reference_date_3
9030    ,xet.reference_date_4
9031    ,xet.event_created_by
9032    ,xet.budgetary_control_flag
9033  , l2.LINE_NUMBER  
9034   , l2.ACCOUNTING_LINE_TYPE_CODE    source_6
9035   , l2.DISTRIBUTION_IDENTIFIER    source_12
9036   , l2.CURRENCY_CODE    source_16
9037   FROM xla_events_gt     xet 
9038   , CST_XLA_INV_LINES_V  l2
9039  WHERE xet.event_id between x_first_event_id and x_last_event_id
9040    and xet.event_date between p_pad_start_date and p_pad_end_date
9041    and xet.event_class_code = C_EVENT_CLASS_CODE
9042    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
9043 ;
9044 
9045 --
9046 BEGIN
9047 IF g_log_enabled THEN
9048    l_log_module := C_DEFAULT_MODULE||'.EventClass_14';
9049 END IF;
9050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9051    trace
9052       (p_msg      => 'BEGIN of EventClass_14'
9053       ,p_level    => C_LEVEL_PROCEDURE
9054       ,p_module   => l_log_module);
9055 END IF;
9056 
9057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9058    trace
9059       (p_msg      => 'p_application_id = '||p_application_id||
9060                      ' - p_base_ledger_id = '||p_base_ledger_id||
9061                      ' - p_target_ledger_id  = '||p_target_ledger_id||
9062                      ' - p_language = '||p_language||
9063                      ' - p_currency_code = '||p_currency_code||
9064                      ' - p_sla_ledger_id = '||p_sla_ledger_id
9065       ,p_level    => C_LEVEL_STATEMENT
9066       ,p_module   => l_log_module);
9067 END IF;
9068 --
9069 -- initialze arrays
9070 --
9071 g_array_event.DELETE;
9072 l_rec_array_event := l_null_rec_array_event;
9073 --
9074 --------------------------------------
9075 -- 4262811 Initialze MPA Line Number
9076 --------------------------------------
9077 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
9078 
9079 --
9080 
9081 --
9082 OPEN header_cur;
9083 --
9084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9085    trace
9086    (p_msg      => 'SQL - FETCH header_cur'
9087    ,p_level    => C_LEVEL_STATEMENT
9088    ,p_module   => l_log_module);
9089 END IF;
9090 --
9091 LOOP
9095       , l_array_entity_code
9092 FETCH header_cur BULK COLLECT INTO
9093         l_array_entity_id
9094       , l_array_legal_entity_id
9096       , l_array_transaction_num
9097       , l_array_event_id
9098       , l_array_class_code
9099       , l_array_event_type
9100       , l_array_event_number
9101       , l_array_event_date
9102       , l_array_transaction_date
9103       , l_array_reference_num_1
9104       , l_array_reference_num_2
9105       , l_array_reference_num_3
9106       , l_array_reference_num_4
9107       , l_array_reference_char_1
9108       , l_array_reference_char_2
9109       , l_array_reference_char_3
9110       , l_array_reference_char_4
9111       , l_array_reference_date_1
9112       , l_array_reference_date_2
9113       , l_array_reference_date_3
9114       , l_array_reference_date_4
9115       , l_array_event_created_by
9116       , l_array_budgetary_control_flag 
9117       , l_array_source_4
9118       , l_array_source_7
9119       , l_array_source_13
9120       , l_array_source_13_meaning
9121       , l_array_source_15
9122       , l_array_source_17
9123       , l_array_source_18
9124       , l_array_source_28
9125       , l_array_source_29
9126       , l_array_source_30
9127       , l_array_source_31
9128       , l_array_source_32
9129       , l_array_source_33
9130       , l_array_source_34
9131       , l_array_source_35
9132       , l_array_source_37
9133       , l_array_source_37_meaning
9134       LIMIT l_rows;
9135 --
9136 IF (C_LEVEL_EVENT >= g_log_level) THEN
9137    trace
9138    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
9139    ,p_level    => C_LEVEL_EVENT
9140    ,p_module   => l_log_module);
9141 END IF;
9142 --
9143 EXIT WHEN l_array_entity_id.COUNT = 0;
9144 
9145 -- initialize arrays
9146 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
9147 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
9148 
9149 --
9150 -- Bug 4458708
9151 --
9152 XLA_AE_LINES_PKG.g_LineNumber := 0;
9153 
9154 
9155 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
9156 g_last_hdr_idx := l_array_event_id.LAST;
9157 --
9158 -- loop for the headers. Each iteration is for each header extract row
9159 -- fetched in header cursor
9160 --
9161 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
9162 
9163 --
9164 -- set event info as cache for other routines to refer event attributes
9165 --
9166 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
9167    (p_application_id           => p_application_id
9168    ,p_primary_ledger_id        => p_primary_ledger_id
9169    ,p_base_ledger_id           => p_base_ledger_id
9170    ,p_target_ledger_id         => p_target_ledger_id
9171    ,p_entity_id                => l_array_entity_id(hdr_idx)
9172    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
9173    ,p_entity_code              => l_array_entity_code(hdr_idx)
9174    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
9175    ,p_event_id                 => l_array_event_id(hdr_idx)
9176    ,p_event_class_code         => l_array_class_code(hdr_idx)
9177    ,p_event_type_code          => l_array_event_type(hdr_idx)
9178    ,p_event_number             => l_array_event_number(hdr_idx)
9179    ,p_event_date               => l_array_event_date(hdr_idx)
9180    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
9181    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
9182    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
9183    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
9184    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
9185    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
9186    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
9187    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
9188    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
9189    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
9190    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
9191    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
9192    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
9193    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
9194    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
9195 
9196 --
9197 -- set the status of entry to C_VALID (0)
9198 --
9199 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
9200 
9201 --
9202 -- initialize a row for ae header
9203 --
9204 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
9205 
9206 l_event_id := l_array_event_id(hdr_idx);
9207 
9208 --
9209 -- storing the hdr_idx for event. May be used by line cursor.
9210 --
9211 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
9212 
9213 --
9214 -- store sources from header extract. This can be improved to
9215 -- store only those sources from header extract that may be used in lines
9216 --
9217 
9218 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
9219 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
9220 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
9221 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
9225 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
9222 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
9223 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
9224 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
9226 g_array_event(l_event_id).array_value_char('source_29') := l_array_source_29(hdr_idx);
9227 g_array_event(l_event_id).array_value_char('source_30') := l_array_source_30(hdr_idx);
9228 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
9229 g_array_event(l_event_id).array_value_num('source_32') := l_array_source_32(hdr_idx);
9230 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
9231 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
9232 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
9233 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
9234 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
9235 
9236 --
9237 -- initilaize the status of ae headers for diffrent balance types
9238 -- the status is initialised to C_NOT_CREATED (2)
9239 --
9240 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
9241 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
9242 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
9243 
9244 --
9245 -- call api to validate and store accounting attributes for header
9246 --
9247 
9248 ------------------------------------------------------------
9249 -- Accrual Reversal : to get date for Standard Source (NONE)
9250 ------------------------------------------------------------
9251 l_acc_rev_gl_date_source := NULL;
9252 
9253      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
9254       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_35');
9255      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
9256       l_rec_acct_attrs.array_date_value(2) := 
9257 xla_ae_sources_pkg.GetSystemSourceDate(
9258    p_source_code           => 'XLA_REFERENCE_DATE_1'
9259  , p_source_type_code      => 'Y'
9260  , p_source_application_id =>  602
9261 );
9262      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
9263       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_37');
9264 
9265 
9266 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
9267 
9268 XLA_AE_HEADER_PKG.SetJeCategoryName;
9269 
9270 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
9271 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
9272 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
9273 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
9274 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
9275 
9276 
9277 -- No header level analytical criteria
9278 
9279 --
9280 --accounting attribute enhancement, bug 3612931
9281 --
9282 l_trx_reversal_source := SUBSTR(NULL, 1,30);
9283 
9284 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
9285    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
9286 
9287    xla_accounting_err_pkg.build_message
9288       (p_appli_s_name            => 'XLA'
9289       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
9290       ,p_token_1                 => 'ACCT_ATTR_NAME'
9291       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
9292       ,p_token_2                 => 'PRODUCT_NAME'
9293       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
9294       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
9295       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
9296       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
9297 
9298 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
9299    --
9300    -- following sets the accounting attributes needed to reverse
9301    -- accounting for a distributeion
9302    --
9303    xla_ae_lines_pkg.SetTrxReversalAttrs
9304       (p_event_id              => l_event_id
9305       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
9306       ,p_trx_reversal_source   => l_trx_reversal_source);
9307 
9308 END IF;
9309 
9310 
9311 ----------------------------------------------------------------
9312 -- 4262811 -  update the header statuses to invalid in need be
9313 ----------------------------------------------------------------
9314 --
9315 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
9316 
9317 
9318   -----------------------------------------------
9319   -- No accrual reversal for the event class/type
9320   -----------------------------------------------
9321 ----------------------------------------------------------------
9322 
9323 --
9324 -- this ends the header loop iteration for one bulk fetch
9325 --
9326 END LOOP;
9327 
9328 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
9332 -- insert dummy rows into lines gt table that were created due to
9329 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
9330 
9331 --
9333 -- transaction reversals
9334 --
9335 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
9336    l_result := XLA_AE_LINES_PKG.InsertLines;
9337 END IF;
9338 
9339 --
9340 -- reset the temp_line_num for each set of events fetched from header
9341 -- cursor rather than doing it for each new event in line cursor
9342 -- Bug 3939231
9343 --
9344 xla_ae_lines_pkg.g_temp_line_num := 0;
9345 
9346 
9347 
9348 --
9349 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
9350 --
9351 --
9352 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9353 
9354       trace
9355          (p_msg      => 'SQL - FETCH line_cur'
9356          ,p_level    => C_LEVEL_STATEMENT
9357          ,p_module   => l_log_module);
9358 
9359 END IF;
9360 --
9361 --
9362 LOOP
9363   --
9364   FETCH line_cur BULK COLLECT INTO
9365         l_array_entity_id
9366       , l_array_legal_entity_id
9367       , l_array_entity_code
9368       , l_array_transaction_num
9369       , l_array_event_id
9370       , l_array_class_code
9371       , l_array_event_type
9372       , l_array_event_number
9373       , l_array_event_date
9374       , l_array_transaction_date
9375       , l_array_reference_num_1
9376       , l_array_reference_num_2
9377       , l_array_reference_num_3
9378       , l_array_reference_num_4
9379       , l_array_reference_char_1
9380       , l_array_reference_char_2
9381       , l_array_reference_char_3
9382       , l_array_reference_char_4
9383       , l_array_reference_date_1
9384       , l_array_reference_date_2
9385       , l_array_reference_date_3
9386       , l_array_reference_date_4
9387       , l_array_event_created_by
9388       , l_array_budgetary_control_flag
9389       , l_array_extract_line_num 
9390       , l_array_source_6
9391       , l_array_source_12
9392       , l_array_source_16
9393       LIMIT l_rows;
9394 
9395   --
9396   IF (C_LEVEL_EVENT >= g_log_level) THEN
9397             trace
9398                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
9399                ,p_level    => C_LEVEL_EVENT
9400                ,p_module   => l_log_module);
9401   END IF;
9402   --
9403   EXIT WHEN l_array_entity_id.count = 0;
9404 
9405   XLA_AE_LINES_PKG.g_rec_lines := null;
9406 
9407 --
9408 -- Bug 4458708
9409 --
9410 XLA_AE_LINES_PKG.g_LineNumber := 0;
9411 --
9412 --
9413 
9414 FOR Idx IN 1..l_array_event_id.count LOOP
9415    --
9416    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
9417    --
9418    l_event_id := l_array_event_id(idx);  -- 5648433
9419 
9420    --
9421    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
9422    --
9423 
9424    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
9425              (g_array_event(l_event_id).array_value_num('header_index'))
9426          ,'N'
9427          ) <> 'Y'
9428    THEN
9429       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9430          trace
9431             (p_msg      => 'Trancaction revesal option is not Y '
9432             ,p_level    => C_LEVEL_STATEMENT
9433             ,p_module   => l_log_module);
9434       END IF;
9435 
9436 --
9437 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
9438 --
9439 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
9440 --
9441 -- set event info as cache for other routines to refer event attributes
9442 --
9443 
9444 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
9445    l_previous_event_id := l_event_id;
9446 
9447    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
9448       (p_application_id           => p_application_id
9449       ,p_primary_ledger_id        => p_primary_ledger_id
9450       ,p_base_ledger_id           => p_base_ledger_id
9451       ,p_target_ledger_id         => p_target_ledger_id
9452       ,p_entity_id                => l_array_entity_id(Idx)
9453       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
9454       ,p_entity_code              => l_array_entity_code(Idx)
9455       ,p_transaction_num          => l_array_transaction_num(Idx)
9456       ,p_event_id                 => l_array_event_id(Idx)
9457       ,p_event_class_code         => l_array_class_code(Idx)
9458       ,p_event_type_code          => l_array_event_type(Idx)
9459       ,p_event_number             => l_array_event_number(Idx)
9460       ,p_event_date               => l_array_event_date(Idx)
9461       ,p_transaction_date         => l_array_transaction_date(Idx)
9462       ,p_reference_num_1          => l_array_reference_num_1(Idx)
9463       ,p_reference_num_2          => l_array_reference_num_2(Idx)
9464       ,p_reference_num_3          => l_array_reference_num_3(Idx)
9465       ,p_reference_num_4          => l_array_reference_num_4(Idx)
9466       ,p_reference_char_1         => l_array_reference_char_1(Idx)
9467       ,p_reference_char_2         => l_array_reference_char_2(Idx)
9468       ,p_reference_char_3         => l_array_reference_char_3(Idx)
9469       ,p_reference_char_4         => l_array_reference_char_4(Idx)
9473       ,p_reference_date_4         => l_array_reference_date_4(Idx)
9470       ,p_reference_date_1         => l_array_reference_date_1(Idx)
9471       ,p_reference_date_2         => l_array_reference_date_2(Idx)
9472       ,p_reference_date_3         => l_array_reference_date_3(Idx)
9474       ,p_event_created_by         => l_array_event_created_by(Idx)
9475       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
9476        --
9477 END IF;
9478 
9479 
9480 
9481 --
9482 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
9483 
9484 l_acct_reversal_source := SUBSTR(NULL, 1,30);
9485 
9486 IF l_continue_with_lines THEN
9487    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
9488       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
9489 
9490       xla_accounting_err_pkg.build_message
9491          (p_appli_s_name            => 'XLA'
9492          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
9493          ,p_token_1                 => 'LINE_NUMBER'
9494          ,p_value_1                 => l_array_extract_line_num(Idx)
9495          ,p_token_2                 => 'PRODUCT_NAME'
9496          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
9497          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
9498          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
9499          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
9500 
9501    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
9502       --
9503       -- following sets the accounting attributes needed to reverse
9504       -- accounting for a distributeion
9505       --
9506 
9507       --
9508       -- 5217187
9509       --
9510       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
9511       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
9512                                        g_array_event(l_event_id).array_value_num('header_index'));
9513       --
9514       --
9515 
9516       -- No reversal code generated
9517 
9518       xla_ae_lines_pkg.SetAcctReversalAttrs
9519          (p_event_id             => l_event_id
9520          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
9521          ,p_calculate_acctd_flag => l_calculate_acctd_flag
9522          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
9523    END IF;
9524 
9525    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
9526        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
9527 
9528 --
9529 AcctLineType_10 (
9530  p_application_id  => p_application_id
9531  ,p_event_id     => l_event_id
9532  ,p_calculate_acctd_flag => l_calculate_acctd_flag
9533  ,p_calculate_g_l_flag => l_calculate_g_l_flag
9534  ,p_actual_flag => l_actual_flag
9535  ,p_balance_type_code => l_balance_type_code
9536  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
9537  
9538  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
9539  , p_source_6 => l_array_source_6(Idx)
9540  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
9541  , p_source_12 => l_array_source_12(Idx)
9542  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
9543  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
9544  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
9545  , p_source_16 => l_array_source_16(Idx)
9546  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
9547  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
9548  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
9549  , p_source_29 => g_array_event(l_event_id).array_value_char('source_29')
9550  , p_source_30 => g_array_event(l_event_id).array_value_char('source_30')
9551  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
9552  , p_source_32 => g_array_event(l_event_id).array_value_num('source_32')
9553  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
9554  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
9555  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
9556  );
9557 If(l_balance_type_code = 'A') THEN
9558   l_actual_gain_loss_ref := l_gain_or_loss_ref;
9559 END IF;
9560 
9561 --
9562 
9563       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
9564       -- or secondary ledger that has different currency with primary
9565       -- or alc that is calculated by sla
9566       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
9567             (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'))
9568 
9569 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
9570 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
9571           AND (l_actual_flag = 'A')) THEN
9572         XLA_AE_LINES_PKG.CreateGainOrLossLines(
9573           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
9574          ,p_application_id   => p_application_id
9575          ,p_amb_context_code => 'DEFAULT'
9576          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
9577          ,p_event_class_code => C_EVENT_CLASS_CODE
9578          ,p_event_type_code  => C_EVENT_TYPE_CODE
9579          
9583          ,p_actual_flag      => l_actual_flag
9580          ,p_gain_ccid        => -1
9581          ,p_loss_ccid        => -1
9582 
9584          ,p_enc_flag         => null
9585          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
9586          ,p_enc_g_l_ref      => null
9587          );
9588       END IF;
9589    END IF;
9590 END IF;
9591 
9592    ELSE
9593       --
9594       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
9595       --
9596       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9597          trace
9598             (p_msg      => 'Trancaction revesal option is Y'
9599             ,p_level    => C_LEVEL_STATEMENT
9600             ,p_module   => l_log_module);
9601       END IF;
9602    END IF;
9603 
9604 END LOOP;
9605 l_result := XLA_AE_LINES_PKG.InsertLines ;
9606 end loop;
9607 close line_cur;
9608 
9609 
9610 --
9611 -- insert headers into xla_ae_headers_gt table
9612 --
9613 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
9614 
9615 -- insert into errors table here.
9616 
9617 END LOOP;
9618 
9619 --
9620 -- 4865292
9621 --
9622 -- Compare g_hdr_extract_count with event count in
9623 -- CreateHeadersAndLines.
9624 --
9625 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
9626 
9627 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9628    trace (p_msg     => '# rows extracted from header extract objects '
9629                     || ' (running total): '
9630                     || g_hdr_extract_count
9631          ,p_level   => C_LEVEL_STATEMENT
9632          ,p_module  => l_log_module);
9633 END IF;
9634 
9635 CLOSE header_cur;
9636 --
9637 
9638 --
9639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9640    trace
9641       (p_msg      => 'END of EventClass_14'
9642       ,p_level    => C_LEVEL_PROCEDURE
9643       ,p_module   => l_log_module);
9644 END IF;
9645 --
9646 RETURN l_result;
9647 EXCEPTION
9648 WHEN xla_exceptions_pkg.application_exception THEN
9649    
9650 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
9651 
9652    
9653 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
9654 
9655    RAISE;
9656 
9657 WHEN NO_DATA_FOUND THEN
9658 
9659 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
9660 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
9661 
9662 FOR header_record IN header_cur
9663 LOOP
9664     l_array_header_events(header_record.event_id) := header_record.event_id;
9665 END LOOP;
9666 
9667 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
9668 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
9669 
9670 fnd_file.put_line(fnd_file.LOG, '                    ');
9671 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
9672 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
9673 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
9674 
9675 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
9676 LOOP
9677 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
9678 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
9679         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
9680 	END IF;
9681 END LOOP;
9682 
9683 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
9684 fnd_file.put_line(fnd_file.LOG, '                    ');
9685 
9686 
9687 xla_exceptions_pkg.raise_message
9688       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_14');
9689 
9690 
9691 WHEN OTHERS THEN
9692    xla_exceptions_pkg.raise_message
9693       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_14');
9694 END EventClass_14;
9695 --
9696 
9697 ---------------------------------------
9698 --
9699 -- PRIVATE PROCEDURE
9700 --         insert_sources_15
9701 --
9702 ----------------------------------------
9703 --
9704 PROCEDURE insert_sources_15(
9705                                 p_target_ledger_id       IN NUMBER
9706                               , p_language               IN VARCHAR2
9707                               , p_sla_ledger_id          IN NUMBER
9708                               , p_pad_start_date         IN DATE
9709                               , p_pad_end_date           IN DATE
9710                          )
9711 IS
9712 
9713 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
9714 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
9715 p_apps_owner                   VARCHAR2(30);
9716 l_log_module                   VARCHAR2(240);
9717 BEGIN
9718 IF g_log_enabled THEN
9719       l_log_module := C_DEFAULT_MODULE||'.insert_sources_15';
9720 END IF;
9721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9722 
9723       trace
9724          (p_msg      => 'BEGIN of insert_sources_15'
9725          ,p_level    => C_LEVEL_PROCEDURE
9726          ,p_module   => l_log_module);
9727 
9728 END IF;
9729 
9730 -- select APPS owner
9731 SELECT oracle_username
9732   INTO p_apps_owner
9733   FROM fnd_oracle_userid
9734  WHERE read_only_flag = 'U'
9735 ;
9736 
9740                         ' - p_language = '||p_language||
9737 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9738       trace
9739          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
9741                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
9742                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
9743                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
9744                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
9745          ,p_level    => C_LEVEL_STATEMENT
9746          ,p_module   => l_log_module);
9747 END IF;
9748 
9749 
9750 --
9751 INSERT INTO xla_diag_sources --hdr2
9752 (
9753         event_id
9754       , ledger_id
9755       , sla_ledger_id
9756       , description_language
9757       , object_name
9758       , object_type_code
9759       , line_number
9760       , source_application_id
9761       , source_type_code
9762       , source_code
9763       , source_value
9764       , source_meaning
9765       , created_by
9766       , creation_date
9767       , last_update_date
9768       , last_updated_by
9769       , last_update_login
9770       , program_update_date
9771       , program_application_id
9772       , program_id
9773       , request_id
9774 )
9775 SELECT
9776         event_id
9777       , p_target_ledger_id
9778       , p_sla_ledger_id
9779       , p_language
9780       , object_name
9781       , object_type_code
9782       , line_number
9783       , source_application_id
9784       , source_type_code
9785       , source_code
9786       , SUBSTR(source_value ,1,1996)
9787       , SUBSTR(source_meaning ,1,200)
9788       , xla_environment_pkg.g_Usr_Id
9789       , TRUNC(SYSDATE)
9790       , TRUNC(SYSDATE)
9791       , xla_environment_pkg.g_Usr_Id
9792       , xla_environment_pkg.g_Login_Id
9793       , TRUNC(SYSDATE)
9794       , xla_environment_pkg.g_Prog_Appl_Id
9795       , xla_environment_pkg.g_Prog_Id
9796       , xla_environment_pkg.g_Req_Id
9797   FROM (
9798        SELECT xet.event_id                  event_id
9799             , 0                          line_number
9800             , CASE r
9801                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
9802                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
9803                 
9804                ELSE null
9805               END                           object_name
9806             , CASE r
9807                 WHEN 1 THEN 'HEADER' 
9808                 WHEN 2 THEN 'HEADER' 
9809                 
9810                 ELSE null
9811               END                           object_type_code
9812             , CASE r
9813                 WHEN 1 THEN '707' 
9814                 WHEN 2 THEN '707' 
9815                 
9816                 ELSE null
9817               END                           source_application_id
9818             , 'S'             source_type_code
9819             , CASE r
9820                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
9821                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
9822                 
9823                 ELSE null
9824               END                           source_code
9825             , CASE r
9826                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
9827                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
9828                 
9829                 ELSE null
9830               END                           source_value
9831             , CASE r
9832                 WHEN 1 THEN fvl13.meaning
9833                 WHEN 2 THEN fvl37.meaning
9834                 
9835                 ELSE null
9836               END               source_meaning
9837          FROM xla_events_gt     xet  
9838       , CST_XLA_INV_HEADERS_V  h1
9839   , fnd_lookup_values    fvl13
9840   , fnd_lookup_values    fvl37
9841              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
9842          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
9843            AND xet.event_class_code = C_EVENT_CLASS_CODE
9844               AND h1.event_id = xet.event_id
9845    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
9846   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
9847   AND fvl13.view_application_id(+) = 700
9848   AND fvl13.language(+)            = USERENV('LANG')
9849      AND fvl37.lookup_type(+)         = 'YES_NO'
9850   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
9851   AND fvl37.view_application_id(+) = 0
9852   AND fvl37.language(+)            = USERENV('LANG')
9853   
9854 )
9855 ;
9856 --
9857 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9858 
9859       trace
9860          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
9861          ,p_level    => C_LEVEL_STATEMENT
9862          ,p_module   => l_log_module);
9863 
9864 END IF;
9865 --
9866 
9867 
9868 
9869 --
9870 INSERT INTO xla_diag_sources  --line2
9871 (
9872         event_id
9873       , ledger_id
9874       , sla_ledger_id
9875       , description_language
9876       , object_name
9877       , object_type_code
9878       , line_number
9879       , source_application_id
9880       , source_type_code
9881       , source_code
9882       , source_value
9883       , source_meaning
9884       , created_by
9885       , creation_date
9886       , last_update_date
9890       , program_application_id
9887       , last_updated_by
9888       , last_update_login
9889       , program_update_date
9891       , program_id
9892       , request_id
9893 )
9894 SELECT  event_id
9895       , p_target_ledger_id
9896       , p_sla_ledger_id
9897       , p_language
9898       , object_name
9899       , object_type_code
9900       , line_number
9901       , source_application_id
9902       , source_type_code
9903       , source_code
9904       , SUBSTR(source_value,1,1996)
9905       , SUBSTR(source_meaning ,1,200)
9906       , xla_environment_pkg.g_Usr_Id
9907       , TRUNC(SYSDATE)
9908       , TRUNC(SYSDATE)
9909       , xla_environment_pkg.g_Usr_Id
9910       , xla_environment_pkg.g_Login_Id
9911       , TRUNC(SYSDATE)
9912       , xla_environment_pkg.g_Prog_Appl_Id
9913       , xla_environment_pkg.g_Prog_Id
9914       , xla_environment_pkg.g_Req_Id
9915   FROM (
9916        SELECT xet.event_id                  event_id
9917             , l2.line_number                 line_number
9918             , CASE r
9919                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
9920                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
9921                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
9922                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
9923                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
9924                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
9925                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
9926                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
9927                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
9928                 
9929                ELSE null
9930               END                           object_name
9931             , CASE r
9932                 WHEN 1 THEN 'LINE' 
9933                 WHEN 2 THEN 'LINE' 
9934                 WHEN 3 THEN 'LINE' 
9935                 WHEN 4 THEN 'LINE' 
9936                 WHEN 5 THEN 'LINE' 
9937                 WHEN 6 THEN 'LINE' 
9938                 WHEN 7 THEN 'LINE' 
9939                 WHEN 8 THEN 'LINE' 
9940                 WHEN 9 THEN 'LINE' 
9941                 
9942                 ELSE null
9943               END                           object_type_code
9944             , CASE r
9945                 WHEN 1 THEN '707' 
9946                 WHEN 2 THEN '707' 
9947                 WHEN 3 THEN '707' 
9948                 WHEN 4 THEN '707' 
9949                 WHEN 5 THEN '707' 
9950                 WHEN 6 THEN '707' 
9951                 WHEN 7 THEN '707' 
9952                 WHEN 8 THEN '707' 
9953                 WHEN 9 THEN '707' 
9954                 
9955                 ELSE null
9956               END                           source_application_id
9957             , 'S'             source_type_code
9958             , CASE r
9959                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
9960                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
9961                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
9962                 WHEN 4 THEN 'CURRENCY_CODE' 
9963                 WHEN 5 THEN 'ENTERED_AMOUNT' 
9964                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
9965                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
9966                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
9967                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
9968                 
9969                 ELSE null
9970               END                           source_code
9971             , CASE r
9972                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
9973                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
9974                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
9975                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
9976                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
9977                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
9978                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
9979                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
9980                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
9981                 
9982                 ELSE null
9983               END                           source_value
9984             , null              source_meaning
9985          FROM  xla_events_gt     xet  
9986         , CST_XLA_INV_LINES_V  l2
9987             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
9988         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
9989           AND xet.event_class_code = C_EVENT_CLASS_CODE
9990             AND l2.event_id          = xet.event_id
9991 
9992 )
9993 ;
9994 --
9995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
9996 
9997       trace
9998          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
9999          ,p_level    => C_LEVEL_STATEMENT
10000          ,p_module   => l_log_module);
10001 
10002 END IF;
10003 
10004 
10005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10006       trace
10007          (p_msg      => 'END of insert_sources_15'
10008          ,p_level    => C_LEVEL_PROCEDURE
10009          ,p_module   => l_log_module);
10010 END IF;
10011 EXCEPTION
10012   WHEN xla_exceptions_pkg.application_exception THEN
10013       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10014             trace
10015                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10016                ,p_level    => C_LEVEL_EXCEPTION
10017                ,p_module   => l_log_module);
10021       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
10018       END IF;
10019       RAISE;
10020   WHEN OTHERS THEN
10022             trace
10023                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
10024                ,p_level    => C_LEVEL_EXCEPTION
10025                ,p_module   => l_log_module);
10026        END IF;
10027        xla_exceptions_pkg.raise_message
10028            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_15');
10029 END insert_sources_15;
10030 --
10031 
10032 ---------------------------------------
10033 --
10034 -- PRIVATE FUNCTION
10035 --         EventClass_15
10036 --
10037 ----------------------------------------
10038 --
10039 FUNCTION EventClass_15
10040        (p_application_id         IN NUMBER
10041        ,p_base_ledger_id         IN NUMBER
10042        ,p_target_ledger_id       IN NUMBER
10043        ,p_language               IN VARCHAR2
10044        ,p_currency_code          IN VARCHAR2
10045        ,p_sla_ledger_id          IN NUMBER
10046        ,p_pad_start_date         IN DATE
10047        ,p_pad_end_date           IN DATE
10048        ,p_primary_ledger_id      IN NUMBER)
10049 RETURN BOOLEAN IS
10050 --
10051 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_ALL';
10052 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
10053 
10054 l_calculate_acctd_flag   VARCHAR2(1) :='N';
10055 l_calculate_g_l_flag     VARCHAR2(1) :='N';
10056 --
10057 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10058 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10059 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10060 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10061 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10062 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10063 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10064 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10065 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10066 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10067 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10068 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10069 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10070 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
10071 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10072 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10073 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10074 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
10075 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10076 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10077 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10078 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
10079 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
10080 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
10081 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
10082 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
10083 
10084 l_event_id                             NUMBER;
10085 l_previous_event_id                    NUMBER;
10086 l_first_event_id                       NUMBER;
10087 l_last_event_id                        NUMBER;
10088 
10089 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
10090 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
10091 --
10092 --
10093 l_result                    BOOLEAN := TRUE;
10094 l_rows                      NUMBER  := 1000;
10095 l_event_type_name           VARCHAR2(80) := 'All';
10096 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
10097 l_description               VARCHAR2(4000);
10098 l_transaction_reversal      NUMBER;
10099 l_ae_header_id              NUMBER;
10100 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
10101 l_log_module                VARCHAR2(240);
10102 --
10103 l_acct_reversal_source      VARCHAR2(30);
10104 l_trx_reversal_source       VARCHAR2(30);
10105 
10106 l_continue_with_lines       BOOLEAN := TRUE;
10107 --
10108 l_acc_rev_gl_date_source    DATE;                      -- 4262811
10109 --
10110 type t_array_event_id is table of number index by binary_integer;
10111 
10112 l_rec_array_event                    t_rec_array_event;
10113 l_null_rec_array_event               t_rec_array_event;
10114 l_array_ae_header_id                 xla_number_array_type;
10115 l_actual_flag                        VARCHAR2(1) := NULL;
10116 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
10117 l_balance_type_code                  VARCHAR2(1) :=NULL;
10118 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
10119 
10120 --
10121 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
10122 --
10123 
10127 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
10124 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
10125 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
10126 
10128 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
10129 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
10130 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
10131 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10132 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
10133 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
10134 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
10135 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
10136 
10137 l_array_source_13              t_array_source_13;
10138 l_array_source_13_meaning      t_array_lookup_meaning;
10139 l_array_source_37              t_array_source_37;
10140 l_array_source_37_meaning      t_array_lookup_meaning;
10141 
10142 l_array_source_1      t_array_source_1;
10143 l_array_source_6      t_array_source_6;
10144 l_array_source_12      t_array_source_12;
10145 l_array_source_16      t_array_source_16;
10146 l_array_source_20      t_array_source_20;
10147 l_array_source_21      t_array_source_21;
10148 l_array_source_22      t_array_source_22;
10149 l_array_source_23      t_array_source_23;
10150 l_array_source_24      t_array_source_24;
10151 
10152 --
10153 CURSOR header_cur
10154 IS
10155 SELECT /*+ leading(xet) cardinality(xet,1) */
10156 -- Event Class Code: FOB_SHIP_SENDER_SHIP
10157     xet.entity_id
10158    ,xet.legal_entity_id
10159    ,xet.entity_code
10160    ,xet.transaction_number
10161    ,xet.event_id
10162    ,xet.event_class_code
10163    ,xet.event_type_code
10164    ,xet.event_number
10165    ,xet.event_date
10166    ,xet.transaction_date
10167    ,xet.reference_num_1
10168    ,xet.reference_num_2
10169    ,xet.reference_num_3
10170    ,xet.reference_num_4
10171    ,xet.reference_char_1
10172    ,xet.reference_char_2
10173    ,xet.reference_char_3
10174    ,xet.reference_char_4
10175    ,xet.reference_date_1
10176    ,xet.reference_date_2
10177    ,xet.reference_date_3
10178    ,xet.reference_date_4
10179    ,xet.event_created_by
10180    ,xet.budgetary_control_flag 
10181   , h1.DISTRIBUTION_TYPE    source_13
10182   , fvl13.meaning   source_13_meaning
10183   , h1.TRANSFER_TO_GL_INDICATOR    source_37
10184   , fvl37.meaning   source_37_meaning
10185   FROM xla_events_gt     xet 
10186   , CST_XLA_INV_HEADERS_V  h1
10187   , fnd_lookup_values    fvl13
10188   , fnd_lookup_values    fvl37
10189  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
10190    and xet.event_class_code = C_EVENT_CLASS_CODE
10191    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
10192    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
10193   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
10194   AND fvl13.view_application_id(+) = 700
10195   AND fvl13.language(+)            = USERENV('LANG')
10196      AND fvl37.lookup_type(+)         = 'YES_NO'
10197   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
10198   AND fvl37.view_application_id(+) = 0
10199   AND fvl37.language(+)            = USERENV('LANG')
10200   
10201  ORDER BY event_id
10202 ;
10203 
10204 
10205 --
10206 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
10207 IS
10208 SELECT  /*+ leading(xet) cardinality(xet,1) */
10209 -- Event Class Code: FOB_SHIP_SENDER_SHIP
10210     xet.entity_id
10211    ,xet.legal_entity_id
10212    ,xet.entity_code
10213    ,xet.transaction_number
10214    ,xet.event_id
10215    ,xet.event_class_code
10216    ,xet.event_type_code
10217    ,xet.event_number
10218    ,xet.event_date
10219    ,xet.transaction_date
10220    ,xet.reference_num_1
10221    ,xet.reference_num_2
10222    ,xet.reference_num_3
10223    ,xet.reference_num_4
10224    ,xet.reference_char_1
10225    ,xet.reference_char_2
10226    ,xet.reference_char_3
10227    ,xet.reference_char_4
10228    ,xet.reference_date_1
10229    ,xet.reference_date_2
10230    ,xet.reference_date_3
10231    ,xet.reference_date_4
10232    ,xet.event_created_by
10233    ,xet.budgetary_control_flag
10234  , l2.LINE_NUMBER  
10235   , l2.CODE_COMBINATION_ID    source_1
10236   , l2.ACCOUNTING_LINE_TYPE_CODE    source_6
10237   , l2.DISTRIBUTION_IDENTIFIER    source_12
10238   , l2.CURRENCY_CODE    source_16
10239   , l2.ENTERED_AMOUNT    source_20
10240   , l2.CURRENCY_CONVERSION_DATE    source_21
10241   , l2.CURRENCY_CONVERSION_RATE    source_22
10242   , l2.CURRENCY_CONVERSION_TYPE    source_23
10243   , l2.ACCOUNTED_AMOUNT    source_24
10244   FROM xla_events_gt     xet 
10245   , CST_XLA_INV_LINES_V  l2
10246  WHERE xet.event_id between x_first_event_id and x_last_event_id
10247    and xet.event_date between p_pad_start_date and p_pad_end_date
10248    and xet.event_class_code = C_EVENT_CLASS_CODE
10249    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
10250 ;
10251 
10252 --
10253 BEGIN
10254 IF g_log_enabled THEN
10258    trace
10255    l_log_module := C_DEFAULT_MODULE||'.EventClass_15';
10256 END IF;
10257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10259       (p_msg      => 'BEGIN of EventClass_15'
10260       ,p_level    => C_LEVEL_PROCEDURE
10261       ,p_module   => l_log_module);
10262 END IF;
10263 
10264 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10265    trace
10266       (p_msg      => 'p_application_id = '||p_application_id||
10267                      ' - p_base_ledger_id = '||p_base_ledger_id||
10268                      ' - p_target_ledger_id  = '||p_target_ledger_id||
10269                      ' - p_language = '||p_language||
10270                      ' - p_currency_code = '||p_currency_code||
10271                      ' - p_sla_ledger_id = '||p_sla_ledger_id
10272       ,p_level    => C_LEVEL_STATEMENT
10273       ,p_module   => l_log_module);
10274 END IF;
10275 --
10276 -- initialze arrays
10277 --
10278 g_array_event.DELETE;
10279 l_rec_array_event := l_null_rec_array_event;
10280 --
10281 --------------------------------------
10282 -- 4262811 Initialze MPA Line Number
10283 --------------------------------------
10284 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
10285 
10286 --
10287 
10288 --
10289 OPEN header_cur;
10290 --
10291 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10292    trace
10293    (p_msg      => 'SQL - FETCH header_cur'
10294    ,p_level    => C_LEVEL_STATEMENT
10295    ,p_module   => l_log_module);
10296 END IF;
10297 --
10298 LOOP
10299 FETCH header_cur BULK COLLECT INTO
10300         l_array_entity_id
10301       , l_array_legal_entity_id
10302       , l_array_entity_code
10303       , l_array_transaction_num
10304       , l_array_event_id
10305       , l_array_class_code
10306       , l_array_event_type
10307       , l_array_event_number
10308       , l_array_event_date
10309       , l_array_transaction_date
10310       , l_array_reference_num_1
10311       , l_array_reference_num_2
10312       , l_array_reference_num_3
10313       , l_array_reference_num_4
10314       , l_array_reference_char_1
10315       , l_array_reference_char_2
10316       , l_array_reference_char_3
10317       , l_array_reference_char_4
10318       , l_array_reference_date_1
10319       , l_array_reference_date_2
10320       , l_array_reference_date_3
10321       , l_array_reference_date_4
10322       , l_array_event_created_by
10323       , l_array_budgetary_control_flag 
10324       , l_array_source_13
10325       , l_array_source_13_meaning
10326       , l_array_source_37
10327       , l_array_source_37_meaning
10328       LIMIT l_rows;
10329 --
10330 IF (C_LEVEL_EVENT >= g_log_level) THEN
10331    trace
10332    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
10333    ,p_level    => C_LEVEL_EVENT
10334    ,p_module   => l_log_module);
10335 END IF;
10336 --
10337 EXIT WHEN l_array_entity_id.COUNT = 0;
10338 
10339 -- initialize arrays
10340 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
10341 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
10342 
10343 --
10344 -- Bug 4458708
10345 --
10346 XLA_AE_LINES_PKG.g_LineNumber := 0;
10347 
10348 
10349 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
10350 g_last_hdr_idx := l_array_event_id.LAST;
10351 --
10352 -- loop for the headers. Each iteration is for each header extract row
10353 -- fetched in header cursor
10354 --
10355 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
10356 
10357 --
10358 -- set event info as cache for other routines to refer event attributes
10359 --
10360 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
10361    (p_application_id           => p_application_id
10362    ,p_primary_ledger_id        => p_primary_ledger_id
10363    ,p_base_ledger_id           => p_base_ledger_id
10364    ,p_target_ledger_id         => p_target_ledger_id
10365    ,p_entity_id                => l_array_entity_id(hdr_idx)
10366    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
10367    ,p_entity_code              => l_array_entity_code(hdr_idx)
10368    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
10369    ,p_event_id                 => l_array_event_id(hdr_idx)
10370    ,p_event_class_code         => l_array_class_code(hdr_idx)
10371    ,p_event_type_code          => l_array_event_type(hdr_idx)
10372    ,p_event_number             => l_array_event_number(hdr_idx)
10373    ,p_event_date               => l_array_event_date(hdr_idx)
10374    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
10375    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
10376    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
10377    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
10378    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
10379    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
10380    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
10381    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
10382    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
10383    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
10384    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
10385    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
10386    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
10390 --
10387    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
10388    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
10389 
10391 -- set the status of entry to C_VALID (0)
10392 --
10393 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
10394 
10395 --
10396 -- initialize a row for ae header
10397 --
10398 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
10399 
10400 l_event_id := l_array_event_id(hdr_idx);
10401 
10402 --
10403 -- storing the hdr_idx for event. May be used by line cursor.
10404 --
10405 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
10406 
10407 --
10408 -- store sources from header extract. This can be improved to
10409 -- store only those sources from header extract that may be used in lines
10410 --
10411 
10412 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
10413 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
10414 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
10415 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
10416 
10417 --
10418 -- initilaize the status of ae headers for diffrent balance types
10419 -- the status is initialised to C_NOT_CREATED (2)
10420 --
10421 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
10422 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
10423 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
10424 
10425 --
10426 -- call api to validate and store accounting attributes for header
10427 --
10428 
10429 ------------------------------------------------------------
10430 -- Accrual Reversal : to get date for Standard Source (NONE)
10431 ------------------------------------------------------------
10432 l_acc_rev_gl_date_source := NULL;
10433 
10434      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
10435       l_rec_acct_attrs.array_date_value(1) := 
10436 xla_ae_sources_pkg.GetSystemSourceDate(
10437    p_source_code           => 'XLA_REFERENCE_DATE_1'
10438  , p_source_type_code      => 'Y'
10439  , p_source_application_id =>  602
10440 );
10441      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
10442       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_37');
10443 
10444 
10445 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
10446 
10447 XLA_AE_HEADER_PKG.SetJeCategoryName;
10448 
10449 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
10450 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
10451 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
10452 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
10453 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
10454 
10455 
10456 -- No header level analytical criteria
10457 
10458 --
10459 --accounting attribute enhancement, bug 3612931
10460 --
10461 l_trx_reversal_source := SUBSTR(NULL, 1,30);
10462 
10463 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
10464    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
10465 
10466    xla_accounting_err_pkg.build_message
10467       (p_appli_s_name            => 'XLA'
10468       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
10469       ,p_token_1                 => 'ACCT_ATTR_NAME'
10470       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
10471       ,p_token_2                 => 'PRODUCT_NAME'
10472       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
10473       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
10474       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
10475       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
10476 
10477 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
10478    --
10479    -- following sets the accounting attributes needed to reverse
10480    -- accounting for a distributeion
10481    --
10482    xla_ae_lines_pkg.SetTrxReversalAttrs
10483       (p_event_id              => l_event_id
10484       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
10485       ,p_trx_reversal_source   => l_trx_reversal_source);
10486 
10487 END IF;
10488 
10489 
10490 ----------------------------------------------------------------
10491 -- 4262811 -  update the header statuses to invalid in need be
10492 ----------------------------------------------------------------
10493 --
10494 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
10495 
10496 
10497   -----------------------------------------------
10498   -- No accrual reversal for the event class/type
10499   -----------------------------------------------
10500 ----------------------------------------------------------------
10501 
10502 --
10503 -- this ends the header loop iteration for one bulk fetch
10504 --
10505 END LOOP;
10506 
10510 --
10507 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
10508 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
10509 
10511 -- insert dummy rows into lines gt table that were created due to
10512 -- transaction reversals
10513 --
10514 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
10515    l_result := XLA_AE_LINES_PKG.InsertLines;
10516 END IF;
10517 
10518 --
10519 -- reset the temp_line_num for each set of events fetched from header
10520 -- cursor rather than doing it for each new event in line cursor
10521 -- Bug 3939231
10522 --
10523 xla_ae_lines_pkg.g_temp_line_num := 0;
10524 
10525 
10526 
10527 --
10528 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
10529 --
10530 --
10531 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10532 
10533       trace
10534          (p_msg      => 'SQL - FETCH line_cur'
10535          ,p_level    => C_LEVEL_STATEMENT
10536          ,p_module   => l_log_module);
10537 
10538 END IF;
10539 --
10540 --
10541 LOOP
10542   --
10543   FETCH line_cur BULK COLLECT INTO
10544         l_array_entity_id
10545       , l_array_legal_entity_id
10546       , l_array_entity_code
10547       , l_array_transaction_num
10548       , l_array_event_id
10549       , l_array_class_code
10550       , l_array_event_type
10551       , l_array_event_number
10552       , l_array_event_date
10553       , l_array_transaction_date
10554       , l_array_reference_num_1
10555       , l_array_reference_num_2
10556       , l_array_reference_num_3
10557       , l_array_reference_num_4
10558       , l_array_reference_char_1
10559       , l_array_reference_char_2
10560       , l_array_reference_char_3
10561       , l_array_reference_char_4
10562       , l_array_reference_date_1
10563       , l_array_reference_date_2
10564       , l_array_reference_date_3
10565       , l_array_reference_date_4
10566       , l_array_event_created_by
10567       , l_array_budgetary_control_flag
10568       , l_array_extract_line_num 
10569       , l_array_source_1
10570       , l_array_source_6
10571       , l_array_source_12
10572       , l_array_source_16
10573       , l_array_source_20
10574       , l_array_source_21
10575       , l_array_source_22
10576       , l_array_source_23
10577       , l_array_source_24
10578       LIMIT l_rows;
10579 
10580   --
10581   IF (C_LEVEL_EVENT >= g_log_level) THEN
10582             trace
10583                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
10584                ,p_level    => C_LEVEL_EVENT
10585                ,p_module   => l_log_module);
10586   END IF;
10587   --
10588   EXIT WHEN l_array_entity_id.count = 0;
10589 
10590   XLA_AE_LINES_PKG.g_rec_lines := null;
10591 
10592 --
10593 -- Bug 4458708
10594 --
10595 XLA_AE_LINES_PKG.g_LineNumber := 0;
10596 --
10597 --
10598 
10599 FOR Idx IN 1..l_array_event_id.count LOOP
10600    --
10601    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
10602    --
10603    l_event_id := l_array_event_id(idx);  -- 5648433
10604 
10605    --
10606    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
10607    --
10608 
10609    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
10610              (g_array_event(l_event_id).array_value_num('header_index'))
10611          ,'N'
10612          ) <> 'Y'
10613    THEN
10614       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10615          trace
10616             (p_msg      => 'Trancaction revesal option is not Y '
10617             ,p_level    => C_LEVEL_STATEMENT
10618             ,p_module   => l_log_module);
10619       END IF;
10620 
10621 --
10622 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
10623 --
10624 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
10625 --
10626 -- set event info as cache for other routines to refer event attributes
10627 --
10628 
10629 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
10630    l_previous_event_id := l_event_id;
10631 
10632    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
10633       (p_application_id           => p_application_id
10634       ,p_primary_ledger_id        => p_primary_ledger_id
10635       ,p_base_ledger_id           => p_base_ledger_id
10636       ,p_target_ledger_id         => p_target_ledger_id
10637       ,p_entity_id                => l_array_entity_id(Idx)
10638       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
10639       ,p_entity_code              => l_array_entity_code(Idx)
10640       ,p_transaction_num          => l_array_transaction_num(Idx)
10641       ,p_event_id                 => l_array_event_id(Idx)
10642       ,p_event_class_code         => l_array_class_code(Idx)
10643       ,p_event_type_code          => l_array_event_type(Idx)
10644       ,p_event_number             => l_array_event_number(Idx)
10645       ,p_event_date               => l_array_event_date(Idx)
10646       ,p_transaction_date         => l_array_transaction_date(Idx)
10647       ,p_reference_num_1          => l_array_reference_num_1(Idx)
10648       ,p_reference_num_2          => l_array_reference_num_2(Idx)
10652       ,p_reference_char_2         => l_array_reference_char_2(Idx)
10649       ,p_reference_num_3          => l_array_reference_num_3(Idx)
10650       ,p_reference_num_4          => l_array_reference_num_4(Idx)
10651       ,p_reference_char_1         => l_array_reference_char_1(Idx)
10653       ,p_reference_char_3         => l_array_reference_char_3(Idx)
10654       ,p_reference_char_4         => l_array_reference_char_4(Idx)
10655       ,p_reference_date_1         => l_array_reference_date_1(Idx)
10656       ,p_reference_date_2         => l_array_reference_date_2(Idx)
10657       ,p_reference_date_3         => l_array_reference_date_3(Idx)
10658       ,p_reference_date_4         => l_array_reference_date_4(Idx)
10659       ,p_event_created_by         => l_array_event_created_by(Idx)
10660       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
10661        --
10662 END IF;
10663 
10664 
10665 
10666 --
10667 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
10668 
10669 l_acct_reversal_source := SUBSTR(NULL, 1,30);
10670 
10671 IF l_continue_with_lines THEN
10672    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
10673       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
10674 
10675       xla_accounting_err_pkg.build_message
10676          (p_appli_s_name            => 'XLA'
10677          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
10678          ,p_token_1                 => 'LINE_NUMBER'
10679          ,p_value_1                 => l_array_extract_line_num(Idx)
10680          ,p_token_2                 => 'PRODUCT_NAME'
10681          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
10682          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
10683          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
10684          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
10685 
10686    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
10687       --
10688       -- following sets the accounting attributes needed to reverse
10689       -- accounting for a distributeion
10690       --
10691 
10692       --
10693       -- 5217187
10694       --
10695       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
10696       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
10697                                        g_array_event(l_event_id).array_value_num('header_index'));
10698       --
10699       --
10700 
10701       -- No reversal code generated
10702 
10703       xla_ae_lines_pkg.SetAcctReversalAttrs
10704          (p_event_id             => l_event_id
10705          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
10706          ,p_calculate_acctd_flag => l_calculate_acctd_flag
10707          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
10708    END IF;
10709 
10710    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
10711        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
10712 
10713 --
10714 AcctLineType_11 (
10715  p_application_id  => p_application_id
10716  ,p_event_id     => l_event_id
10717  ,p_calculate_acctd_flag => l_calculate_acctd_flag
10718  ,p_calculate_g_l_flag => l_calculate_g_l_flag
10719  ,p_actual_flag => l_actual_flag
10720  ,p_balance_type_code => l_balance_type_code
10721  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
10722  
10723  , p_source_1 => l_array_source_1(Idx)
10724  , p_source_6 => l_array_source_6(Idx)
10725  , p_source_12 => l_array_source_12(Idx)
10726  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
10727  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
10728  , p_source_16 => l_array_source_16(Idx)
10729  , p_source_20 => l_array_source_20(Idx)
10730  , p_source_21 => l_array_source_21(Idx)
10731  , p_source_22 => l_array_source_22(Idx)
10732  , p_source_23 => l_array_source_23(Idx)
10733  , p_source_24 => l_array_source_24(Idx)
10734  );
10735 If(l_balance_type_code = 'A') THEN
10736   l_actual_gain_loss_ref := l_gain_or_loss_ref;
10737 END IF;
10738 
10739 --
10740 
10741       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
10742       -- or secondary ledger that has different currency with primary
10743       -- or alc that is calculated by sla
10744       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
10745             (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'))
10746 
10747 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
10748 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
10749           AND (l_actual_flag = 'A')) THEN
10750         XLA_AE_LINES_PKG.CreateGainOrLossLines(
10751           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
10752          ,p_application_id   => p_application_id
10753          ,p_amb_context_code => 'DEFAULT'
10754          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
10755          ,p_event_class_code => C_EVENT_CLASS_CODE
10756          ,p_event_type_code  => C_EVENT_TYPE_CODE
10757          
10758          ,p_gain_ccid        => -1
10759          ,p_loss_ccid        => -1
10760 
10761          ,p_actual_flag      => l_actual_flag
10765          );
10762          ,p_enc_flag         => null
10763          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
10764          ,p_enc_g_l_ref      => null
10766       END IF;
10767    END IF;
10768 END IF;
10769 
10770    ELSE
10771       --
10772       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
10773       --
10774       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10775          trace
10776             (p_msg      => 'Trancaction revesal option is Y'
10777             ,p_level    => C_LEVEL_STATEMENT
10778             ,p_module   => l_log_module);
10779       END IF;
10780    END IF;
10781 
10782 END LOOP;
10783 l_result := XLA_AE_LINES_PKG.InsertLines ;
10784 end loop;
10785 close line_cur;
10786 
10787 
10788 --
10789 -- insert headers into xla_ae_headers_gt table
10790 --
10791 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
10792 
10793 -- insert into errors table here.
10794 
10795 END LOOP;
10796 
10797 --
10798 -- 4865292
10799 --
10800 -- Compare g_hdr_extract_count with event count in
10801 -- CreateHeadersAndLines.
10802 --
10803 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
10804 
10805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10806    trace (p_msg     => '# rows extracted from header extract objects '
10807                     || ' (running total): '
10808                     || g_hdr_extract_count
10809          ,p_level   => C_LEVEL_STATEMENT
10810          ,p_module  => l_log_module);
10811 END IF;
10812 
10813 CLOSE header_cur;
10814 --
10815 
10816 --
10817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10818    trace
10819       (p_msg      => 'END of EventClass_15'
10820       ,p_level    => C_LEVEL_PROCEDURE
10821       ,p_module   => l_log_module);
10822 END IF;
10823 --
10824 RETURN l_result;
10825 EXCEPTION
10826 WHEN xla_exceptions_pkg.application_exception THEN
10827    
10828 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
10829 
10830    
10831 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
10832 
10833    RAISE;
10834 
10835 WHEN NO_DATA_FOUND THEN
10836 
10837 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
10838 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
10839 
10840 FOR header_record IN header_cur
10841 LOOP
10842     l_array_header_events(header_record.event_id) := header_record.event_id;
10843 END LOOP;
10844 
10845 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
10846 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
10847 
10848 fnd_file.put_line(fnd_file.LOG, '                    ');
10849 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
10850 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
10851 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
10852 
10853 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
10854 LOOP
10855 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
10856 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
10857         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
10858 	END IF;
10859 END LOOP;
10860 
10861 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
10862 fnd_file.put_line(fnd_file.LOG, '                    ');
10863 
10864 
10865 xla_exceptions_pkg.raise_message
10866       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_15');
10867 
10868 
10869 WHEN OTHERS THEN
10870    xla_exceptions_pkg.raise_message
10871       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_15');
10872 END EventClass_15;
10873 --
10874 
10875 ---------------------------------------
10876 --
10877 -- PRIVATE PROCEDURE
10878 --         insert_sources_16
10879 --
10880 ----------------------------------------
10881 --
10882 PROCEDURE insert_sources_16(
10883                                 p_target_ledger_id       IN NUMBER
10884                               , p_language               IN VARCHAR2
10885                               , p_sla_ledger_id          IN NUMBER
10886                               , p_pad_start_date         IN DATE
10887                               , p_pad_end_date           IN DATE
10888                          )
10889 IS
10890 
10891 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
10892 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
10893 p_apps_owner                   VARCHAR2(30);
10894 l_log_module                   VARCHAR2(240);
10895 BEGIN
10896 IF g_log_enabled THEN
10897       l_log_module := C_DEFAULT_MODULE||'.insert_sources_16';
10898 END IF;
10899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10900 
10901       trace
10902          (p_msg      => 'BEGIN of insert_sources_16'
10903          ,p_level    => C_LEVEL_PROCEDURE
10904          ,p_module   => l_log_module);
10905 
10906 END IF;
10907 
10908 -- select APPS owner
10909 SELECT oracle_username
10910   INTO p_apps_owner
10911   FROM fnd_oracle_userid
10912  WHERE read_only_flag = 'U'
10913 ;
10914 
10915 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
10919                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
10916       trace
10917          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
10918                         ' - p_language = '||p_language||
10920                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
10921                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
10922                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
10923          ,p_level    => C_LEVEL_STATEMENT
10924          ,p_module   => l_log_module);
10925 END IF;
10926 
10927 
10928 --
10929 INSERT INTO xla_diag_sources --hdr2
10930 (
10931         event_id
10932       , ledger_id
10933       , sla_ledger_id
10934       , description_language
10935       , object_name
10936       , object_type_code
10937       , line_number
10938       , source_application_id
10939       , source_type_code
10940       , source_code
10941       , source_value
10942       , source_meaning
10943       , created_by
10944       , creation_date
10945       , last_update_date
10946       , last_updated_by
10947       , last_update_login
10948       , program_update_date
10949       , program_application_id
10950       , program_id
10951       , request_id
10952 )
10953 SELECT
10954         event_id
10955       , p_target_ledger_id
10956       , p_sla_ledger_id
10957       , p_language
10958       , object_name
10959       , object_type_code
10960       , line_number
10961       , source_application_id
10962       , source_type_code
10963       , source_code
10964       , SUBSTR(source_value ,1,1996)
10965       , SUBSTR(source_meaning ,1,200)
10966       , xla_environment_pkg.g_Usr_Id
10967       , TRUNC(SYSDATE)
10968       , TRUNC(SYSDATE)
10969       , xla_environment_pkg.g_Usr_Id
10970       , xla_environment_pkg.g_Login_Id
10971       , TRUNC(SYSDATE)
10972       , xla_environment_pkg.g_Prog_Appl_Id
10973       , xla_environment_pkg.g_Prog_Id
10974       , xla_environment_pkg.g_Req_Id
10975   FROM (
10976        SELECT xet.event_id                  event_id
10977             , 0                          line_number
10978             , CASE r
10979                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
10980                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
10981                 
10982                ELSE null
10983               END                           object_name
10984             , CASE r
10985                 WHEN 1 THEN 'HEADER' 
10986                 WHEN 2 THEN 'HEADER' 
10987                 
10988                 ELSE null
10989               END                           object_type_code
10990             , CASE r
10991                 WHEN 1 THEN '707' 
10992                 WHEN 2 THEN '707' 
10993                 
10994                 ELSE null
10995               END                           source_application_id
10996             , 'S'             source_type_code
10997             , CASE r
10998                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
10999                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
11000                 
11001                 ELSE null
11002               END                           source_code
11003             , CASE r
11004                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
11005                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
11006                 
11007                 ELSE null
11008               END                           source_value
11009             , CASE r
11010                 WHEN 1 THEN fvl13.meaning
11011                 WHEN 2 THEN fvl37.meaning
11012                 
11013                 ELSE null
11014               END               source_meaning
11015          FROM xla_events_gt     xet  
11016       , CST_XLA_INV_HEADERS_V  h1
11017   , fnd_lookup_values    fvl13
11018   , fnd_lookup_values    fvl37
11019              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
11020          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
11021            AND xet.event_class_code = C_EVENT_CLASS_CODE
11022               AND h1.event_id = xet.event_id
11023    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
11024   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
11025   AND fvl13.view_application_id(+) = 700
11026   AND fvl13.language(+)            = USERENV('LANG')
11027      AND fvl37.lookup_type(+)         = 'YES_NO'
11028   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
11029   AND fvl37.view_application_id(+) = 0
11030   AND fvl37.language(+)            = USERENV('LANG')
11031   
11032 )
11033 ;
11034 --
11035 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11036 
11037       trace
11038          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
11039          ,p_level    => C_LEVEL_STATEMENT
11040          ,p_module   => l_log_module);
11041 
11042 END IF;
11043 --
11044 
11045 
11046 
11047 --
11048 INSERT INTO xla_diag_sources  --line2
11049 (
11050         event_id
11051       , ledger_id
11052       , sla_ledger_id
11053       , description_language
11054       , object_name
11055       , object_type_code
11056       , line_number
11057       , source_application_id
11058       , source_type_code
11059       , source_code
11060       , source_value
11061       , source_meaning
11062       , created_by
11063       , creation_date
11067       , program_update_date
11064       , last_update_date
11065       , last_updated_by
11066       , last_update_login
11068       , program_application_id
11069       , program_id
11070       , request_id
11071 )
11072 SELECT  event_id
11073       , p_target_ledger_id
11074       , p_sla_ledger_id
11075       , p_language
11076       , object_name
11077       , object_type_code
11078       , line_number
11079       , source_application_id
11080       , source_type_code
11081       , source_code
11082       , SUBSTR(source_value,1,1996)
11083       , SUBSTR(source_meaning ,1,200)
11084       , xla_environment_pkg.g_Usr_Id
11085       , TRUNC(SYSDATE)
11086       , TRUNC(SYSDATE)
11087       , xla_environment_pkg.g_Usr_Id
11088       , xla_environment_pkg.g_Login_Id
11089       , TRUNC(SYSDATE)
11090       , xla_environment_pkg.g_Prog_Appl_Id
11091       , xla_environment_pkg.g_Prog_Id
11092       , xla_environment_pkg.g_Req_Id
11093   FROM (
11094        SELECT xet.event_id                  event_id
11095             , l2.line_number                 line_number
11096             , CASE r
11097                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
11098                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
11099                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
11100                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
11101                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
11102                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
11103                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
11104                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
11105                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
11106                 
11107                ELSE null
11108               END                           object_name
11109             , CASE r
11110                 WHEN 1 THEN 'LINE' 
11111                 WHEN 2 THEN 'LINE' 
11112                 WHEN 3 THEN 'LINE' 
11113                 WHEN 4 THEN 'LINE' 
11114                 WHEN 5 THEN 'LINE' 
11115                 WHEN 6 THEN 'LINE' 
11116                 WHEN 7 THEN 'LINE' 
11117                 WHEN 8 THEN 'LINE' 
11118                 WHEN 9 THEN 'LINE' 
11119                 
11120                 ELSE null
11121               END                           object_type_code
11122             , CASE r
11123                 WHEN 1 THEN '707' 
11124                 WHEN 2 THEN '707' 
11125                 WHEN 3 THEN '707' 
11126                 WHEN 4 THEN '707' 
11127                 WHEN 5 THEN '707' 
11128                 WHEN 6 THEN '707' 
11129                 WHEN 7 THEN '707' 
11130                 WHEN 8 THEN '707' 
11131                 WHEN 9 THEN '707' 
11132                 
11133                 ELSE null
11134               END                           source_application_id
11135             , 'S'             source_type_code
11136             , CASE r
11137                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
11138                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
11139                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
11140                 WHEN 4 THEN 'CURRENCY_CODE' 
11141                 WHEN 5 THEN 'ENTERED_AMOUNT' 
11142                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
11143                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
11144                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
11145                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
11146                 
11147                 ELSE null
11148               END                           source_code
11149             , CASE r
11150                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
11151                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
11152                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
11153                 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CODE)
11154                 WHEN 5 THEN TO_CHAR(l2.ENTERED_AMOUNT)
11155                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
11156                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
11157                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
11158                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
11159                 
11160                 ELSE null
11161               END                           source_value
11162             , null              source_meaning
11163          FROM  xla_events_gt     xet  
11164         , CST_XLA_INV_LINES_V  l2
11165             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
11166         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
11167           AND xet.event_class_code = C_EVENT_CLASS_CODE
11168             AND l2.event_id          = xet.event_id
11169 
11170 )
11171 ;
11172 --
11173 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11174 
11175       trace
11176          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
11177          ,p_level    => C_LEVEL_STATEMENT
11178          ,p_module   => l_log_module);
11179 
11180 END IF;
11181 
11182 
11183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11184       trace
11185          (p_msg      => 'END of insert_sources_16'
11186          ,p_level    => C_LEVEL_PROCEDURE
11187          ,p_module   => l_log_module);
11188 END IF;
11189 EXCEPTION
11190   WHEN xla_exceptions_pkg.application_exception THEN
11191       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
11192             trace
11196       END IF;
11193                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
11194                ,p_level    => C_LEVEL_EXCEPTION
11195                ,p_module   => l_log_module);
11197       RAISE;
11198   WHEN OTHERS THEN
11199       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
11200             trace
11201                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
11202                ,p_level    => C_LEVEL_EXCEPTION
11203                ,p_module   => l_log_module);
11204        END IF;
11205        xla_exceptions_pkg.raise_message
11206            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_16');
11207 END insert_sources_16;
11208 --
11209 
11210 ---------------------------------------
11211 --
11212 -- PRIVATE FUNCTION
11213 --         EventClass_16
11214 --
11215 ----------------------------------------
11216 --
11217 FUNCTION EventClass_16
11218        (p_application_id         IN NUMBER
11219        ,p_base_ledger_id         IN NUMBER
11220        ,p_target_ledger_id       IN NUMBER
11221        ,p_language               IN VARCHAR2
11222        ,p_currency_code          IN VARCHAR2
11223        ,p_sla_ledger_id          IN NUMBER
11224        ,p_pad_start_date         IN DATE
11225        ,p_pad_end_date           IN DATE
11226        ,p_primary_ledger_id      IN NUMBER)
11227 RETURN BOOLEAN IS
11228 --
11229 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_TO_EXP_ALL';
11230 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
11231 
11232 l_calculate_acctd_flag   VARCHAR2(1) :='N';
11233 l_calculate_g_l_flag     VARCHAR2(1) :='N';
11234 --
11235 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11236 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11237 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11238 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
11239 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11240 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11241 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11242 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11243 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11244 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11245 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11246 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11247 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11248 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
11249 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
11250 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
11251 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
11252 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
11253 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11254 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11255 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11256 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
11257 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
11258 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
11259 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
11260 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
11261 
11262 l_event_id                             NUMBER;
11263 l_previous_event_id                    NUMBER;
11264 l_first_event_id                       NUMBER;
11265 l_last_event_id                        NUMBER;
11266 
11267 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
11268 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
11269 --
11270 --
11271 l_result                    BOOLEAN := TRUE;
11272 l_rows                      NUMBER  := 1000;
11273 l_event_type_name           VARCHAR2(80) := 'All';
11274 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
11275 l_description               VARCHAR2(4000);
11276 l_transaction_reversal      NUMBER;
11277 l_ae_header_id              NUMBER;
11278 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
11279 l_log_module                VARCHAR2(240);
11280 --
11281 l_acct_reversal_source      VARCHAR2(30);
11282 l_trx_reversal_source       VARCHAR2(30);
11283 
11284 l_continue_with_lines       BOOLEAN := TRUE;
11285 --
11286 l_acc_rev_gl_date_source    DATE;                      -- 4262811
11287 --
11288 type t_array_event_id is table of number index by binary_integer;
11289 
11290 l_rec_array_event                    t_rec_array_event;
11291 l_null_rec_array_event               t_rec_array_event;
11292 l_array_ae_header_id                 xla_number_array_type;
11293 l_actual_flag                        VARCHAR2(1) := NULL;
11294 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
11295 l_balance_type_code                  VARCHAR2(1) :=NULL;
11296 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
11297 
11298 --
11302 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
11299 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
11300 --
11301 
11303 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
11304 
11305 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
11306 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
11307 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
11308 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
11309 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
11310 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
11311 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
11312 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
11313 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
11314 
11315 l_array_source_13              t_array_source_13;
11316 l_array_source_13_meaning      t_array_lookup_meaning;
11317 l_array_source_37              t_array_source_37;
11318 l_array_source_37_meaning      t_array_lookup_meaning;
11319 
11320 l_array_source_1      t_array_source_1;
11321 l_array_source_6      t_array_source_6;
11322 l_array_source_12      t_array_source_12;
11323 l_array_source_16      t_array_source_16;
11324 l_array_source_20      t_array_source_20;
11325 l_array_source_21      t_array_source_21;
11326 l_array_source_22      t_array_source_22;
11327 l_array_source_23      t_array_source_23;
11328 l_array_source_24      t_array_source_24;
11329 
11330 --
11331 CURSOR header_cur
11332 IS
11333 SELECT /*+ leading(xet) cardinality(xet,1) */
11334 -- Event Class Code: INT_ORDER_TO_EXP
11335     xet.entity_id
11336    ,xet.legal_entity_id
11337    ,xet.entity_code
11338    ,xet.transaction_number
11339    ,xet.event_id
11340    ,xet.event_class_code
11341    ,xet.event_type_code
11342    ,xet.event_number
11343    ,xet.event_date
11344    ,xet.transaction_date
11345    ,xet.reference_num_1
11346    ,xet.reference_num_2
11347    ,xet.reference_num_3
11348    ,xet.reference_num_4
11349    ,xet.reference_char_1
11350    ,xet.reference_char_2
11351    ,xet.reference_char_3
11352    ,xet.reference_char_4
11353    ,xet.reference_date_1
11354    ,xet.reference_date_2
11355    ,xet.reference_date_3
11356    ,xet.reference_date_4
11357    ,xet.event_created_by
11358    ,xet.budgetary_control_flag 
11359   , h1.DISTRIBUTION_TYPE    source_13
11360   , fvl13.meaning   source_13_meaning
11361   , h1.TRANSFER_TO_GL_INDICATOR    source_37
11362   , fvl37.meaning   source_37_meaning
11363   FROM xla_events_gt     xet 
11364   , CST_XLA_INV_HEADERS_V  h1
11365   , fnd_lookup_values    fvl13
11366   , fnd_lookup_values    fvl37
11367  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
11368    and xet.event_class_code = C_EVENT_CLASS_CODE
11369    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
11370    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
11371   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
11372   AND fvl13.view_application_id(+) = 700
11373   AND fvl13.language(+)            = USERENV('LANG')
11374      AND fvl37.lookup_type(+)         = 'YES_NO'
11375   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
11376   AND fvl37.view_application_id(+) = 0
11377   AND fvl37.language(+)            = USERENV('LANG')
11378   
11379  ORDER BY event_id
11380 ;
11381 
11382 
11383 --
11384 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
11385 IS
11386 SELECT  /*+ leading(xet) cardinality(xet,1) */
11387 -- Event Class Code: INT_ORDER_TO_EXP
11388     xet.entity_id
11389    ,xet.legal_entity_id
11390    ,xet.entity_code
11391    ,xet.transaction_number
11392    ,xet.event_id
11393    ,xet.event_class_code
11394    ,xet.event_type_code
11395    ,xet.event_number
11396    ,xet.event_date
11397    ,xet.transaction_date
11398    ,xet.reference_num_1
11399    ,xet.reference_num_2
11400    ,xet.reference_num_3
11401    ,xet.reference_num_4
11402    ,xet.reference_char_1
11403    ,xet.reference_char_2
11404    ,xet.reference_char_3
11405    ,xet.reference_char_4
11406    ,xet.reference_date_1
11407    ,xet.reference_date_2
11408    ,xet.reference_date_3
11409    ,xet.reference_date_4
11410    ,xet.event_created_by
11411    ,xet.budgetary_control_flag
11412  , l2.LINE_NUMBER  
11413   , l2.CODE_COMBINATION_ID    source_1
11414   , l2.ACCOUNTING_LINE_TYPE_CODE    source_6
11415   , l2.DISTRIBUTION_IDENTIFIER    source_12
11416   , l2.CURRENCY_CODE    source_16
11417   , l2.ENTERED_AMOUNT    source_20
11418   , l2.CURRENCY_CONVERSION_DATE    source_21
11419   , l2.CURRENCY_CONVERSION_RATE    source_22
11420   , l2.CURRENCY_CONVERSION_TYPE    source_23
11421   , l2.ACCOUNTED_AMOUNT    source_24
11422   FROM xla_events_gt     xet 
11423   , CST_XLA_INV_LINES_V  l2
11424  WHERE xet.event_id between x_first_event_id and x_last_event_id
11425    and xet.event_date between p_pad_start_date and p_pad_end_date
11426    and xet.event_class_code = C_EVENT_CLASS_CODE
11430 --
11427    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
11428 ;
11429 
11431 BEGIN
11432 IF g_log_enabled THEN
11433    l_log_module := C_DEFAULT_MODULE||'.EventClass_16';
11434 END IF;
11435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11436    trace
11437       (p_msg      => 'BEGIN of EventClass_16'
11438       ,p_level    => C_LEVEL_PROCEDURE
11439       ,p_module   => l_log_module);
11440 END IF;
11441 
11442 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11443    trace
11444       (p_msg      => 'p_application_id = '||p_application_id||
11445                      ' - p_base_ledger_id = '||p_base_ledger_id||
11446                      ' - p_target_ledger_id  = '||p_target_ledger_id||
11447                      ' - p_language = '||p_language||
11448                      ' - p_currency_code = '||p_currency_code||
11449                      ' - p_sla_ledger_id = '||p_sla_ledger_id
11450       ,p_level    => C_LEVEL_STATEMENT
11451       ,p_module   => l_log_module);
11452 END IF;
11453 --
11454 -- initialze arrays
11455 --
11456 g_array_event.DELETE;
11457 l_rec_array_event := l_null_rec_array_event;
11458 --
11459 --------------------------------------
11460 -- 4262811 Initialze MPA Line Number
11461 --------------------------------------
11462 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
11463 
11464 --
11465 
11466 --
11467 OPEN header_cur;
11468 --
11469 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11470    trace
11471    (p_msg      => 'SQL - FETCH header_cur'
11472    ,p_level    => C_LEVEL_STATEMENT
11473    ,p_module   => l_log_module);
11474 END IF;
11475 --
11476 LOOP
11477 FETCH header_cur BULK COLLECT INTO
11478         l_array_entity_id
11479       , l_array_legal_entity_id
11480       , l_array_entity_code
11481       , l_array_transaction_num
11482       , l_array_event_id
11483       , l_array_class_code
11484       , l_array_event_type
11485       , l_array_event_number
11486       , l_array_event_date
11487       , l_array_transaction_date
11488       , l_array_reference_num_1
11489       , l_array_reference_num_2
11490       , l_array_reference_num_3
11491       , l_array_reference_num_4
11492       , l_array_reference_char_1
11493       , l_array_reference_char_2
11494       , l_array_reference_char_3
11495       , l_array_reference_char_4
11496       , l_array_reference_date_1
11497       , l_array_reference_date_2
11498       , l_array_reference_date_3
11499       , l_array_reference_date_4
11500       , l_array_event_created_by
11501       , l_array_budgetary_control_flag 
11502       , l_array_source_13
11503       , l_array_source_13_meaning
11504       , l_array_source_37
11505       , l_array_source_37_meaning
11506       LIMIT l_rows;
11507 --
11508 IF (C_LEVEL_EVENT >= g_log_level) THEN
11509    trace
11510    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
11511    ,p_level    => C_LEVEL_EVENT
11512    ,p_module   => l_log_module);
11513 END IF;
11514 --
11515 EXIT WHEN l_array_entity_id.COUNT = 0;
11516 
11517 -- initialize arrays
11518 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
11519 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
11520 
11521 --
11522 -- Bug 4458708
11523 --
11524 XLA_AE_LINES_PKG.g_LineNumber := 0;
11525 
11526 
11527 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
11528 g_last_hdr_idx := l_array_event_id.LAST;
11529 --
11530 -- loop for the headers. Each iteration is for each header extract row
11531 -- fetched in header cursor
11532 --
11533 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
11534 
11535 --
11536 -- set event info as cache for other routines to refer event attributes
11537 --
11538 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11539    (p_application_id           => p_application_id
11540    ,p_primary_ledger_id        => p_primary_ledger_id
11541    ,p_base_ledger_id           => p_base_ledger_id
11542    ,p_target_ledger_id         => p_target_ledger_id
11543    ,p_entity_id                => l_array_entity_id(hdr_idx)
11544    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
11545    ,p_entity_code              => l_array_entity_code(hdr_idx)
11546    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
11547    ,p_event_id                 => l_array_event_id(hdr_idx)
11548    ,p_event_class_code         => l_array_class_code(hdr_idx)
11549    ,p_event_type_code          => l_array_event_type(hdr_idx)
11550    ,p_event_number             => l_array_event_number(hdr_idx)
11551    ,p_event_date               => l_array_event_date(hdr_idx)
11552    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
11553    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
11554    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
11555    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
11556    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
11557    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
11558    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
11559    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
11560    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
11561    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
11562    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
11566    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
11563    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
11564    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
11565    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
11567 
11568 --
11569 -- set the status of entry to C_VALID (0)
11570 --
11571 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11572 
11573 --
11574 -- initialize a row for ae header
11575 --
11576 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
11577 
11578 l_event_id := l_array_event_id(hdr_idx);
11579 
11580 --
11581 -- storing the hdr_idx for event. May be used by line cursor.
11582 --
11583 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
11584 
11585 --
11586 -- store sources from header extract. This can be improved to
11587 -- store only those sources from header extract that may be used in lines
11588 --
11589 
11590 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
11591 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
11592 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
11593 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
11594 
11595 --
11596 -- initilaize the status of ae headers for diffrent balance types
11597 -- the status is initialised to C_NOT_CREATED (2)
11598 --
11599 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11600 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11601 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
11602 
11603 --
11604 -- call api to validate and store accounting attributes for header
11605 --
11606 
11607 ------------------------------------------------------------
11608 -- Accrual Reversal : to get date for Standard Source (NONE)
11609 ------------------------------------------------------------
11610 l_acc_rev_gl_date_source := NULL;
11611 
11612      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
11613       l_rec_acct_attrs.array_date_value(1) := 
11614 xla_ae_sources_pkg.GetSystemSourceDate(
11615    p_source_code           => 'XLA_REFERENCE_DATE_1'
11616  , p_source_type_code      => 'Y'
11617  , p_source_application_id =>  602
11618 );
11619      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
11620       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_37');
11621 
11622 
11623 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
11624 
11625 XLA_AE_HEADER_PKG.SetJeCategoryName;
11626 
11627 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
11628 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
11629 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
11630 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
11631 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
11632 
11633 
11634 -- No header level analytical criteria
11635 
11636 --
11637 --accounting attribute enhancement, bug 3612931
11638 --
11639 l_trx_reversal_source := SUBSTR(NULL, 1,30);
11640 
11641 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
11642    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
11643 
11644    xla_accounting_err_pkg.build_message
11645       (p_appli_s_name            => 'XLA'
11646       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
11647       ,p_token_1                 => 'ACCT_ATTR_NAME'
11648       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
11649       ,p_token_2                 => 'PRODUCT_NAME'
11650       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11651       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11652       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
11653       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11654 
11655 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
11656    --
11657    -- following sets the accounting attributes needed to reverse
11658    -- accounting for a distributeion
11659    --
11660    xla_ae_lines_pkg.SetTrxReversalAttrs
11661       (p_event_id              => l_event_id
11662       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
11663       ,p_trx_reversal_source   => l_trx_reversal_source);
11664 
11665 END IF;
11666 
11667 
11668 ----------------------------------------------------------------
11669 -- 4262811 -  update the header statuses to invalid in need be
11670 ----------------------------------------------------------------
11671 --
11672 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
11673 
11674 
11675   -----------------------------------------------
11676   -- No accrual reversal for the event class/type
11677   -----------------------------------------------
11678 ----------------------------------------------------------------
11679 
11680 --
11684 
11681 -- this ends the header loop iteration for one bulk fetch
11682 --
11683 END LOOP;
11685 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
11686 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
11687 
11688 --
11689 -- insert dummy rows into lines gt table that were created due to
11690 -- transaction reversals
11691 --
11692 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
11693    l_result := XLA_AE_LINES_PKG.InsertLines;
11694 END IF;
11695 
11696 --
11697 -- reset the temp_line_num for each set of events fetched from header
11698 -- cursor rather than doing it for each new event in line cursor
11699 -- Bug 3939231
11700 --
11701 xla_ae_lines_pkg.g_temp_line_num := 0;
11702 
11703 
11704 
11705 --
11706 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
11707 --
11708 --
11709 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11710 
11711       trace
11712          (p_msg      => 'SQL - FETCH line_cur'
11713          ,p_level    => C_LEVEL_STATEMENT
11714          ,p_module   => l_log_module);
11715 
11716 END IF;
11717 --
11718 --
11719 LOOP
11720   --
11721   FETCH line_cur BULK COLLECT INTO
11722         l_array_entity_id
11723       , l_array_legal_entity_id
11724       , l_array_entity_code
11725       , l_array_transaction_num
11726       , l_array_event_id
11727       , l_array_class_code
11728       , l_array_event_type
11729       , l_array_event_number
11730       , l_array_event_date
11731       , l_array_transaction_date
11732       , l_array_reference_num_1
11733       , l_array_reference_num_2
11734       , l_array_reference_num_3
11735       , l_array_reference_num_4
11736       , l_array_reference_char_1
11737       , l_array_reference_char_2
11738       , l_array_reference_char_3
11739       , l_array_reference_char_4
11740       , l_array_reference_date_1
11741       , l_array_reference_date_2
11742       , l_array_reference_date_3
11743       , l_array_reference_date_4
11744       , l_array_event_created_by
11745       , l_array_budgetary_control_flag
11746       , l_array_extract_line_num 
11747       , l_array_source_1
11748       , l_array_source_6
11749       , l_array_source_12
11750       , l_array_source_16
11751       , l_array_source_20
11752       , l_array_source_21
11753       , l_array_source_22
11754       , l_array_source_23
11755       , l_array_source_24
11756       LIMIT l_rows;
11757 
11758   --
11759   IF (C_LEVEL_EVENT >= g_log_level) THEN
11760             trace
11761                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
11762                ,p_level    => C_LEVEL_EVENT
11763                ,p_module   => l_log_module);
11764   END IF;
11765   --
11766   EXIT WHEN l_array_entity_id.count = 0;
11767 
11768   XLA_AE_LINES_PKG.g_rec_lines := null;
11769 
11770 --
11771 -- Bug 4458708
11772 --
11773 XLA_AE_LINES_PKG.g_LineNumber := 0;
11774 --
11775 --
11776 
11777 FOR Idx IN 1..l_array_event_id.count LOOP
11778    --
11779    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
11780    --
11781    l_event_id := l_array_event_id(idx);  -- 5648433
11782 
11783    --
11784    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11785    --
11786 
11787    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
11788              (g_array_event(l_event_id).array_value_num('header_index'))
11789          ,'N'
11790          ) <> 'Y'
11791    THEN
11792       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11793          trace
11794             (p_msg      => 'Trancaction revesal option is not Y '
11795             ,p_level    => C_LEVEL_STATEMENT
11796             ,p_module   => l_log_module);
11797       END IF;
11798 
11799 --
11800 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
11801 --
11802 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
11803 --
11804 -- set event info as cache for other routines to refer event attributes
11805 --
11806 
11807 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
11808    l_previous_event_id := l_event_id;
11809 
11810    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
11811       (p_application_id           => p_application_id
11812       ,p_primary_ledger_id        => p_primary_ledger_id
11813       ,p_base_ledger_id           => p_base_ledger_id
11814       ,p_target_ledger_id         => p_target_ledger_id
11815       ,p_entity_id                => l_array_entity_id(Idx)
11816       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
11817       ,p_entity_code              => l_array_entity_code(Idx)
11818       ,p_transaction_num          => l_array_transaction_num(Idx)
11819       ,p_event_id                 => l_array_event_id(Idx)
11820       ,p_event_class_code         => l_array_class_code(Idx)
11821       ,p_event_type_code          => l_array_event_type(Idx)
11822       ,p_event_number             => l_array_event_number(Idx)
11823       ,p_event_date               => l_array_event_date(Idx)
11824       ,p_transaction_date         => l_array_transaction_date(Idx)
11825       ,p_reference_num_1          => l_array_reference_num_1(Idx)
11829       ,p_reference_char_1         => l_array_reference_char_1(Idx)
11826       ,p_reference_num_2          => l_array_reference_num_2(Idx)
11827       ,p_reference_num_3          => l_array_reference_num_3(Idx)
11828       ,p_reference_num_4          => l_array_reference_num_4(Idx)
11830       ,p_reference_char_2         => l_array_reference_char_2(Idx)
11831       ,p_reference_char_3         => l_array_reference_char_3(Idx)
11832       ,p_reference_char_4         => l_array_reference_char_4(Idx)
11833       ,p_reference_date_1         => l_array_reference_date_1(Idx)
11834       ,p_reference_date_2         => l_array_reference_date_2(Idx)
11835       ,p_reference_date_3         => l_array_reference_date_3(Idx)
11836       ,p_reference_date_4         => l_array_reference_date_4(Idx)
11837       ,p_event_created_by         => l_array_event_created_by(Idx)
11838       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
11839        --
11840 END IF;
11841 
11842 
11843 
11844 --
11845 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
11846 
11847 l_acct_reversal_source := SUBSTR(NULL, 1,30);
11848 
11849 IF l_continue_with_lines THEN
11850    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
11851       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
11852 
11853       xla_accounting_err_pkg.build_message
11854          (p_appli_s_name            => 'XLA'
11855          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
11856          ,p_token_1                 => 'LINE_NUMBER'
11857          ,p_value_1                 => l_array_extract_line_num(Idx)
11858          ,p_token_2                 => 'PRODUCT_NAME'
11859          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
11860          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
11861          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
11862          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
11863 
11864    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
11865       --
11866       -- following sets the accounting attributes needed to reverse
11867       -- accounting for a distributeion
11868       --
11869 
11870       --
11871       -- 5217187
11872       --
11873       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
11874       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
11875                                        g_array_event(l_event_id).array_value_num('header_index'));
11876       --
11877       --
11878 
11879       -- No reversal code generated
11880 
11881       xla_ae_lines_pkg.SetAcctReversalAttrs
11882          (p_event_id             => l_event_id
11883          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
11884          ,p_calculate_acctd_flag => l_calculate_acctd_flag
11885          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
11886    END IF;
11887 
11888    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
11889        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
11890 
11891 --
11892 AcctLineType_3 (
11893  p_application_id  => p_application_id
11894  ,p_event_id     => l_event_id
11895  ,p_calculate_acctd_flag => l_calculate_acctd_flag
11896  ,p_calculate_g_l_flag => l_calculate_g_l_flag
11897  ,p_actual_flag => l_actual_flag
11898  ,p_balance_type_code => l_balance_type_code
11899  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
11900  
11901  , p_source_1 => l_array_source_1(Idx)
11902  , p_source_6 => l_array_source_6(Idx)
11903  , p_source_12 => l_array_source_12(Idx)
11904  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
11905  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
11906  , p_source_16 => l_array_source_16(Idx)
11907  , p_source_20 => l_array_source_20(Idx)
11908  , p_source_21 => l_array_source_21(Idx)
11909  , p_source_22 => l_array_source_22(Idx)
11910  , p_source_23 => l_array_source_23(Idx)
11911  , p_source_24 => l_array_source_24(Idx)
11912  );
11913 If(l_balance_type_code = 'A') THEN
11914   l_actual_gain_loss_ref := l_gain_or_loss_ref;
11915 END IF;
11916 
11917 --
11918 
11919       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
11920       -- or secondary ledger that has different currency with primary
11921       -- or alc that is calculated by sla
11922       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
11923             (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'))
11924 
11925 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
11926 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
11927           AND (l_actual_flag = 'A')) THEN
11928         XLA_AE_LINES_PKG.CreateGainOrLossLines(
11929           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
11930          ,p_application_id   => p_application_id
11931          ,p_amb_context_code => 'DEFAULT'
11932          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
11933          ,p_event_class_code => C_EVENT_CLASS_CODE
11934          ,p_event_type_code  => C_EVENT_TYPE_CODE
11935          
11936          ,p_gain_ccid        => -1
11940          ,p_enc_flag         => null
11937          ,p_loss_ccid        => -1
11938 
11939          ,p_actual_flag      => l_actual_flag
11941          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
11942          ,p_enc_g_l_ref      => null
11943          );
11944       END IF;
11945    END IF;
11946 END IF;
11947 
11948    ELSE
11949       --
11950       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
11951       --
11952       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11953          trace
11954             (p_msg      => 'Trancaction revesal option is Y'
11955             ,p_level    => C_LEVEL_STATEMENT
11956             ,p_module   => l_log_module);
11957       END IF;
11958    END IF;
11959 
11960 END LOOP;
11961 l_result := XLA_AE_LINES_PKG.InsertLines ;
11962 end loop;
11963 close line_cur;
11964 
11965 
11966 --
11967 -- insert headers into xla_ae_headers_gt table
11968 --
11969 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
11970 
11971 -- insert into errors table here.
11972 
11973 END LOOP;
11974 
11975 --
11976 -- 4865292
11977 --
11978 -- Compare g_hdr_extract_count with event count in
11979 -- CreateHeadersAndLines.
11980 --
11981 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
11982 
11983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
11984    trace (p_msg     => '# rows extracted from header extract objects '
11985                     || ' (running total): '
11986                     || g_hdr_extract_count
11987          ,p_level   => C_LEVEL_STATEMENT
11988          ,p_module  => l_log_module);
11989 END IF;
11990 
11991 CLOSE header_cur;
11992 --
11993 
11994 --
11995 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11996    trace
11997       (p_msg      => 'END of EventClass_16'
11998       ,p_level    => C_LEVEL_PROCEDURE
11999       ,p_module   => l_log_module);
12000 END IF;
12001 --
12002 RETURN l_result;
12003 EXCEPTION
12004 WHEN xla_exceptions_pkg.application_exception THEN
12005    
12006 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
12007 
12008    
12009 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
12010 
12011    RAISE;
12012 
12013 WHEN NO_DATA_FOUND THEN
12014 
12015 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
12016 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
12017 
12018 FOR header_record IN header_cur
12019 LOOP
12020     l_array_header_events(header_record.event_id) := header_record.event_id;
12021 END LOOP;
12022 
12023 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
12024 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
12025 
12026 fnd_file.put_line(fnd_file.LOG, '                    ');
12027 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
12028 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
12029 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
12030 
12031 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
12032 LOOP
12033 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
12034 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
12035         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
12036 	END IF;
12037 END LOOP;
12038 
12039 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
12040 fnd_file.put_line(fnd_file.LOG, '                    ');
12041 
12042 
12043 xla_exceptions_pkg.raise_message
12044       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_16');
12045 
12046 
12047 WHEN OTHERS THEN
12048    xla_exceptions_pkg.raise_message
12049       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_16');
12050 END EventClass_16;
12051 --
12052 
12053 ---------------------------------------
12054 --
12055 -- PRIVATE PROCEDURE
12056 --         insert_sources_17
12057 --
12058 ----------------------------------------
12059 --
12060 PROCEDURE insert_sources_17(
12061                                 p_target_ledger_id       IN NUMBER
12062                               , p_language               IN VARCHAR2
12063                               , p_sla_ledger_id          IN NUMBER
12064                               , p_pad_start_date         IN DATE
12065                               , p_pad_end_date           IN DATE
12066                          )
12067 IS
12068 
12069 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
12070 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
12071 p_apps_owner                   VARCHAR2(30);
12072 l_log_module                   VARCHAR2(240);
12073 BEGIN
12074 IF g_log_enabled THEN
12075       l_log_module := C_DEFAULT_MODULE||'.insert_sources_17';
12076 END IF;
12077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12078 
12079       trace
12080          (p_msg      => 'BEGIN of insert_sources_17'
12081          ,p_level    => C_LEVEL_PROCEDURE
12082          ,p_module   => l_log_module);
12083 
12084 END IF;
12085 
12086 -- select APPS owner
12087 SELECT oracle_username
12088   INTO p_apps_owner
12089   FROM fnd_oracle_userid
12090  WHERE read_only_flag = 'U'
12094       trace
12091 ;
12092 
12093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12095          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
12096                         ' - p_language = '||p_language||
12097                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
12098                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
12099                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
12100                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
12101          ,p_level    => C_LEVEL_STATEMENT
12102          ,p_module   => l_log_module);
12103 END IF;
12104 
12105 
12106 --
12107 INSERT INTO xla_diag_sources --hdr2
12108 (
12109         event_id
12110       , ledger_id
12111       , sla_ledger_id
12112       , description_language
12113       , object_name
12114       , object_type_code
12115       , line_number
12116       , source_application_id
12117       , source_type_code
12118       , source_code
12119       , source_value
12120       , source_meaning
12121       , created_by
12122       , creation_date
12123       , last_update_date
12124       , last_updated_by
12125       , last_update_login
12126       , program_update_date
12127       , program_application_id
12128       , program_id
12129       , request_id
12130 )
12131 SELECT
12132         event_id
12133       , p_target_ledger_id
12134       , p_sla_ledger_id
12135       , p_language
12136       , object_name
12137       , object_type_code
12138       , line_number
12139       , source_application_id
12140       , source_type_code
12141       , source_code
12142       , SUBSTR(source_value ,1,1996)
12143       , SUBSTR(source_meaning ,1,200)
12144       , xla_environment_pkg.g_Usr_Id
12145       , TRUNC(SYSDATE)
12146       , TRUNC(SYSDATE)
12147       , xla_environment_pkg.g_Usr_Id
12148       , xla_environment_pkg.g_Login_Id
12149       , TRUNC(SYSDATE)
12150       , xla_environment_pkg.g_Prog_Appl_Id
12151       , xla_environment_pkg.g_Prog_Id
12152       , xla_environment_pkg.g_Req_Id
12153   FROM (
12154        SELECT xet.event_id                  event_id
12155             , 0                          line_number
12156             , CASE r
12157                WHEN 1 THEN 'PO_HEADERS_REF_V' 
12158                 WHEN 2 THEN 'CST_XLA_RCV_REF_V' 
12159                 WHEN 3 THEN 'CST_XLA_RCV_REF_V' 
12160                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
12161                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
12162                 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V' 
12163                 WHEN 7 THEN 'PO_DISTS_REF_V' 
12164                 WHEN 8 THEN 'CST_XLA_RCV_REF_V' 
12165                 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V' 
12166                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
12167                 WHEN 11 THEN 'PO_HEADERS_REF_V' 
12168                 WHEN 12 THEN 'CST_XLA_RCV_REF_V' 
12169                 WHEN 13 THEN 'PSA_CST_XLA_PEA_UPG_V' 
12170                 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V' 
12171                 
12172                ELSE null
12173               END                           object_name
12174             , CASE r
12175                 WHEN 1 THEN 'HEADER' 
12176                 WHEN 2 THEN 'HEADER' 
12177                 WHEN 3 THEN 'HEADER' 
12178                 WHEN 4 THEN 'HEADER' 
12179                 WHEN 5 THEN 'HEADER' 
12180                 WHEN 6 THEN 'HEADER' 
12181                 WHEN 7 THEN 'HEADER' 
12182                 WHEN 8 THEN 'HEADER' 
12183                 WHEN 9 THEN 'HEADER' 
12184                 WHEN 10 THEN 'HEADER' 
12185                 WHEN 11 THEN 'HEADER' 
12186                 WHEN 12 THEN 'HEADER' 
12187                 WHEN 13 THEN 'HEADER' 
12188                 WHEN 14 THEN 'HEADER' 
12189                 
12190                 ELSE null
12191               END                           object_type_code
12192             , CASE r
12193                 WHEN 1 THEN '201' 
12194                 WHEN 2 THEN '707' 
12195                 WHEN 3 THEN '707' 
12196                 WHEN 4 THEN '707' 
12197                 WHEN 5 THEN '707' 
12198                 WHEN 6 THEN '707' 
12199                 WHEN 7 THEN '201' 
12200                 WHEN 8 THEN '707' 
12201                 WHEN 9 THEN '707' 
12202                 WHEN 10 THEN '707' 
12203                 WHEN 11 THEN '201' 
12204                 WHEN 12 THEN '707' 
12205                 WHEN 13 THEN '707' 
12206                 WHEN 14 THEN '707' 
12207                 
12208                 ELSE null
12209               END                           source_application_id
12210             , 'S'             source_type_code
12211             , CASE r
12212                 WHEN 1 THEN 'PURCH_ENCUMBRANCE_FLAG' 
12213                 WHEN 2 THEN 'APPLIED_TO_APPL_ID' 
12214                 WHEN 3 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
12215                 WHEN 4 THEN 'APPLIED_TO_ENTITY_CODE' 
12216                 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID' 
12217                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
12218                 WHEN 7 THEN 'PO_BUDGET_ACCOUNT' 
12219                 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
12220                 WHEN 9 THEN 'CURRENCY_CODE' 
12221                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
12222                 WHEN 11 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
12223                 WHEN 12 THEN 'PO_DISTRIBUTION_ID' 
12224                 WHEN 13 THEN 'CST_PEA_ENC_UPG_OPTION' 
12228               END                           source_code
12225                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
12226                 
12227                 ELSE null
12229             , CASE r
12230                 WHEN 1 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_FLAG)
12231                 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
12232                 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
12233                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
12234                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
12235                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
12236                 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
12237                 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
12238                 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
12239                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
12240                 WHEN 11 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
12241                 WHEN 12 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
12242                 WHEN 13 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
12243                 WHEN 14 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
12244                 
12245                 ELSE null
12246               END                           source_value
12247             , CASE r
12248                 WHEN 6 THEN fvl13.meaning
12249                 WHEN 14 THEN fvl37.meaning
12250                 
12251                 ELSE null
12252               END               source_meaning
12253          FROM xla_events_gt     xet  
12254       , CST_XLA_RCV_HEADERS_V  h1
12255       , CST_XLA_RCV_REF_V  h3
12256       , PO_DISTS_REF_V  h4
12257       , PO_HEADERS_REF_V  h5
12258       , PSA_CST_XLA_PEA_UPG_V  h6
12259   , fnd_lookup_values    fvl13
12260   , fnd_lookup_values    fvl37
12261              ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
12262          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
12263            AND xet.event_class_code = C_EVENT_CLASS_CODE
12264               AND h1.event_id = xet.event_id
12265  AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id  (+)  and h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
12266   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
12267   AND fvl13.view_application_id(+) = 700
12268   AND fvl13.language(+)            = USERENV('LANG')
12269      AND fvl37.lookup_type(+)         = 'YES_NO'
12270   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
12271   AND fvl37.view_application_id(+) = 0
12272   AND fvl37.language(+)            = USERENV('LANG')
12273   
12274 )
12275 ;
12276 --
12277 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12278 
12279       trace
12280          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
12281          ,p_level    => C_LEVEL_STATEMENT
12282          ,p_module   => l_log_module);
12283 
12284 END IF;
12285 --
12286 
12287 
12288 
12289 --
12290 INSERT INTO xla_diag_sources  --line2
12291 (
12292         event_id
12293       , ledger_id
12294       , sla_ledger_id
12295       , description_language
12296       , object_name
12297       , object_type_code
12298       , line_number
12299       , source_application_id
12300       , source_type_code
12301       , source_code
12302       , source_value
12303       , source_meaning
12304       , created_by
12305       , creation_date
12306       , last_update_date
12307       , last_updated_by
12308       , last_update_login
12309       , program_update_date
12310       , program_application_id
12311       , program_id
12312       , request_id
12313 )
12314 SELECT  event_id
12315       , p_target_ledger_id
12316       , p_sla_ledger_id
12317       , p_language
12318       , object_name
12319       , object_type_code
12320       , line_number
12321       , source_application_id
12322       , source_type_code
12323       , source_code
12324       , SUBSTR(source_value,1,1996)
12325       , SUBSTR(source_meaning ,1,200)
12326       , xla_environment_pkg.g_Usr_Id
12327       , TRUNC(SYSDATE)
12328       , TRUNC(SYSDATE)
12329       , xla_environment_pkg.g_Usr_Id
12330       , xla_environment_pkg.g_Login_Id
12331       , TRUNC(SYSDATE)
12332       , xla_environment_pkg.g_Prog_Appl_Id
12333       , xla_environment_pkg.g_Prog_Id
12334       , xla_environment_pkg.g_Req_Id
12335   FROM (
12336        SELECT xet.event_id                  event_id
12337             , l2.line_number                 line_number
12338             , CASE r
12339                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
12340                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
12341                 
12342                ELSE null
12343               END                           object_name
12344             , CASE r
12345                 WHEN 1 THEN 'LINE' 
12346                 WHEN 2 THEN 'LINE' 
12347                 
12348                 ELSE null
12349               END                           object_type_code
12350             , CASE r
12351                 WHEN 1 THEN '707' 
12352                 WHEN 2 THEN '707' 
12353                 
12354                 ELSE null
12355               END                           source_application_id
12359                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
12356             , 'S'             source_type_code
12357             , CASE r
12358                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
12360                 
12361                 ELSE null
12362               END                           source_code
12363             , CASE r
12364                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
12365                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
12366                 
12367                 ELSE null
12368               END                           source_value
12369             , null              source_meaning
12370          FROM  xla_events_gt     xet  
12371         , CST_XLA_RCV_LINES_V  l2
12372             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
12373         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
12374           AND xet.event_class_code = C_EVENT_CLASS_CODE
12375             AND l2.event_id          = xet.event_id
12376 
12377 )
12378 ;
12379 --
12380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12381 
12382       trace
12383          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
12384          ,p_level    => C_LEVEL_STATEMENT
12385          ,p_module   => l_log_module);
12386 
12387 END IF;
12388 
12389 
12390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12391       trace
12392          (p_msg      => 'END of insert_sources_17'
12393          ,p_level    => C_LEVEL_PROCEDURE
12394          ,p_module   => l_log_module);
12395 END IF;
12396 EXCEPTION
12397   WHEN xla_exceptions_pkg.application_exception THEN
12398       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12399             trace
12400                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12401                ,p_level    => C_LEVEL_EXCEPTION
12402                ,p_module   => l_log_module);
12403       END IF;
12404       RAISE;
12405   WHEN OTHERS THEN
12406       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
12407             trace
12408                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
12409                ,p_level    => C_LEVEL_EXCEPTION
12410                ,p_module   => l_log_module);
12411        END IF;
12412        xla_exceptions_pkg.raise_message
12413            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_17');
12414 END insert_sources_17;
12415 --
12416 
12417 ---------------------------------------
12418 --
12419 -- PRIVATE FUNCTION
12420 --         EventClass_17
12421 --
12422 ----------------------------------------
12423 --
12424 FUNCTION EventClass_17
12425        (p_application_id         IN NUMBER
12426        ,p_base_ledger_id         IN NUMBER
12427        ,p_target_ledger_id       IN NUMBER
12428        ,p_language               IN VARCHAR2
12429        ,p_currency_code          IN VARCHAR2
12430        ,p_sla_ledger_id          IN NUMBER
12431        ,p_pad_start_date         IN DATE
12432        ,p_pad_end_date           IN DATE
12433        ,p_primary_ledger_id      IN NUMBER)
12434 RETURN BOOLEAN IS
12435 --
12436 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
12437 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
12438 
12439 l_calculate_acctd_flag   VARCHAR2(1) :='N';
12440 l_calculate_g_l_flag     VARCHAR2(1) :='N';
12441 --
12442 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12443 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12444 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12445 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12446 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12447 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12448 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12449 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12450 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12451 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12452 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12453 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12454 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12455 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
12456 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12457 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12458 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12459 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
12460 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12461 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12462 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12463 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
12464 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
12465 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
12466 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
12470 l_previous_event_id                    NUMBER;
12467 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
12468 
12469 l_event_id                             NUMBER;
12471 l_first_event_id                       NUMBER;
12472 l_last_event_id                        NUMBER;
12473 
12474 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
12475 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
12476 --
12477 --
12478 l_result                    BOOLEAN := TRUE;
12479 l_rows                      NUMBER  := 1000;
12480 l_event_type_name           VARCHAR2(80) := 'All';
12481 l_event_class_name          VARCHAR2(80) := 'Period End Accrual';
12482 l_description               VARCHAR2(4000);
12483 l_transaction_reversal      NUMBER;
12484 l_ae_header_id              NUMBER;
12485 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
12486 l_log_module                VARCHAR2(240);
12487 --
12488 l_acct_reversal_source      VARCHAR2(30);
12489 l_trx_reversal_source       VARCHAR2(30);
12490 
12491 l_continue_with_lines       BOOLEAN := TRUE;
12492 --
12493 l_acc_rev_gl_date_source    DATE;                      -- 4262811
12494 --
12495 type t_array_event_id is table of number index by binary_integer;
12496 
12497 l_rec_array_event                    t_rec_array_event;
12498 l_null_rec_array_event               t_rec_array_event;
12499 l_array_ae_header_id                 xla_number_array_type;
12500 l_actual_flag                        VARCHAR2(1) := NULL;
12501 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
12502 l_balance_type_code                  VARCHAR2(1) :=NULL;
12503 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
12504 
12505 --
12506 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
12507 --
12508 
12509 TYPE t_array_source_2 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
12510 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
12511 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
12512 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
12513 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
12514 TYPE t_array_source_13 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
12515 TYPE t_array_source_14 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
12516 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
12517 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
12518 TYPE t_array_source_17 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
12519 TYPE t_array_source_19 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
12520 TYPE t_array_source_26 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
12521 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
12522 TYPE t_array_source_37 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
12523 
12524 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
12525 TYPE t_array_source_25 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
12526 
12527 l_array_source_2              t_array_source_2;
12528 l_array_source_7              t_array_source_7;
12529 l_array_source_8              t_array_source_8;
12530 l_array_source_9              t_array_source_9;
12531 l_array_source_11              t_array_source_11;
12532 l_array_source_13              t_array_source_13;
12533 l_array_source_13_meaning      t_array_lookup_meaning;
12534 l_array_source_14              t_array_source_14;
12535 l_array_source_15              t_array_source_15;
12536 l_array_source_16              t_array_source_16;
12537 l_array_source_17              t_array_source_17;
12538 l_array_source_19              t_array_source_19;
12539 l_array_source_26              t_array_source_26;
12540 l_array_source_27              t_array_source_27;
12541 l_array_source_37              t_array_source_37;
12542 l_array_source_37_meaning      t_array_lookup_meaning;
12543 
12544 l_array_source_12      t_array_source_12;
12545 l_array_source_25      t_array_source_25;
12546 
12547 --
12548 CURSOR header_cur
12549 IS
12550 SELECT /*+ leading(xet) cardinality(xet,1) */
12551 -- Event Class Code: PERIOD_END_ACCRUAL
12552     xet.entity_id
12553    ,xet.legal_entity_id
12554    ,xet.entity_code
12555    ,xet.transaction_number
12556    ,xet.event_id
12557    ,xet.event_class_code
12558    ,xet.event_type_code
12559    ,xet.event_number
12560    ,xet.event_date
12561    ,xet.transaction_date
12562    ,xet.reference_num_1
12563    ,xet.reference_num_2
12564    ,xet.reference_num_3
12565    ,xet.reference_num_4
12566    ,xet.reference_char_1
12567    ,xet.reference_char_2
12568    ,xet.reference_char_3
12569    ,xet.reference_char_4
12570    ,xet.reference_date_1
12571    ,xet.reference_date_2
12572    ,xet.reference_date_3
12573    ,xet.reference_date_4
12574    ,xet.event_created_by
12575    ,xet.budgetary_control_flag 
12576   , h5.PURCH_ENCUMBRANCE_FLAG    source_2
12577   , h3.APPLIED_TO_APPL_ID    source_7
12581   , h1.DISTRIBUTION_TYPE    source_13
12578   , h3.APPLIED_TO_DIST_LINK_TYPE    source_8
12579   , h3.APPLIED_TO_ENTITY_CODE    source_9
12580   , h3.APPLIED_TO_PO_DOC_ID    source_11
12582   , fvl13.meaning   source_13_meaning
12583   , h4.PO_BUDGET_ACCOUNT    source_14
12584   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_15
12585   , h1.CURRENCY_CODE    source_16
12586   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_17
12587   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_19
12588   , h3.PO_DISTRIBUTION_ID    source_26
12589   , h6.CST_PEA_ENC_UPG_OPTION    source_27
12590   , h1.TRANSFER_TO_GL_INDICATOR    source_37
12591   , fvl37.meaning   source_37_meaning
12592   FROM xla_events_gt     xet 
12593   , CST_XLA_RCV_HEADERS_V  h1
12594   , CST_XLA_RCV_REF_V  h3
12595   , PO_DISTS_REF_V  h4
12596   , PO_HEADERS_REF_V  h5
12597   , PSA_CST_XLA_PEA_UPG_V  h6
12598   , fnd_lookup_values    fvl13
12599   , fnd_lookup_values    fvl37
12600  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
12601    and xet.event_class_code = C_EVENT_CLASS_CODE
12602    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
12603  AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id  (+)  AND h3.po_distribution_id = h4.po_distribution_id (+)  AND h3.po_header_id = h5.po_header_id (+)  AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
12604   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
12605   AND fvl13.view_application_id(+) = 700
12606   AND fvl13.language(+)            = USERENV('LANG')
12607      AND fvl37.lookup_type(+)         = 'YES_NO'
12608   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
12609   AND fvl37.view_application_id(+) = 0
12610   AND fvl37.language(+)            = USERENV('LANG')
12611   
12612  ORDER BY event_id
12613 ;
12614 
12615 
12616 --
12617 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
12618 IS
12619 SELECT  /*+ leading(xet) cardinality(xet,1) */
12620 -- Event Class Code: PERIOD_END_ACCRUAL
12621     xet.entity_id
12622    ,xet.legal_entity_id
12623    ,xet.entity_code
12624    ,xet.transaction_number
12625    ,xet.event_id
12626    ,xet.event_class_code
12627    ,xet.event_type_code
12628    ,xet.event_number
12629    ,xet.event_date
12630    ,xet.transaction_date
12631    ,xet.reference_num_1
12632    ,xet.reference_num_2
12633    ,xet.reference_num_3
12634    ,xet.reference_num_4
12635    ,xet.reference_char_1
12636    ,xet.reference_char_2
12637    ,xet.reference_char_3
12638    ,xet.reference_char_4
12639    ,xet.reference_date_1
12640    ,xet.reference_date_2
12641    ,xet.reference_date_3
12642    ,xet.reference_date_4
12643    ,xet.event_created_by
12644    ,xet.budgetary_control_flag
12645  , l2.LINE_NUMBER  
12646   , l2.DISTRIBUTION_IDENTIFIER    source_12
12647   , l2.RCV_ACCOUNTING_LINE_TYPE    source_25
12648   FROM xla_events_gt     xet 
12649   , CST_XLA_RCV_LINES_V  l2
12650  WHERE xet.event_id between x_first_event_id and x_last_event_id
12651    and xet.event_date between p_pad_start_date and p_pad_end_date
12652    and xet.event_class_code = C_EVENT_CLASS_CODE
12653    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
12654 ;
12655 
12656 --
12657 BEGIN
12658 IF g_log_enabled THEN
12659    l_log_module := C_DEFAULT_MODULE||'.EventClass_17';
12660 END IF;
12661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12662    trace
12663       (p_msg      => 'BEGIN of EventClass_17'
12664       ,p_level    => C_LEVEL_PROCEDURE
12665       ,p_module   => l_log_module);
12666 END IF;
12667 
12668 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12669    trace
12670       (p_msg      => 'p_application_id = '||p_application_id||
12671                      ' - p_base_ledger_id = '||p_base_ledger_id||
12672                      ' - p_target_ledger_id  = '||p_target_ledger_id||
12673                      ' - p_language = '||p_language||
12674                      ' - p_currency_code = '||p_currency_code||
12675                      ' - p_sla_ledger_id = '||p_sla_ledger_id
12676       ,p_level    => C_LEVEL_STATEMENT
12677       ,p_module   => l_log_module);
12678 END IF;
12679 --
12680 -- initialze arrays
12681 --
12682 g_array_event.DELETE;
12683 l_rec_array_event := l_null_rec_array_event;
12684 --
12685 --------------------------------------
12686 -- 4262811 Initialze MPA Line Number
12687 --------------------------------------
12688 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
12689 
12690 --
12691 
12692 --
12693 OPEN header_cur;
12694 --
12695 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
12696    trace
12697    (p_msg      => 'SQL - FETCH header_cur'
12698    ,p_level    => C_LEVEL_STATEMENT
12699    ,p_module   => l_log_module);
12700 END IF;
12701 --
12702 LOOP
12703 FETCH header_cur BULK COLLECT INTO
12704         l_array_entity_id
12705       , l_array_legal_entity_id
12706       , l_array_entity_code
12707       , l_array_transaction_num
12708       , l_array_event_id
12709       , l_array_class_code
12710       , l_array_event_type
12711       , l_array_event_number
12712       , l_array_event_date
12713       , l_array_transaction_date
12714       , l_array_reference_num_1
12715       , l_array_reference_num_2
12716       , l_array_reference_num_3
12717       , l_array_reference_num_4
12721       , l_array_reference_char_4
12718       , l_array_reference_char_1
12719       , l_array_reference_char_2
12720       , l_array_reference_char_3
12722       , l_array_reference_date_1
12723       , l_array_reference_date_2
12724       , l_array_reference_date_3
12725       , l_array_reference_date_4
12726       , l_array_event_created_by
12727       , l_array_budgetary_control_flag 
12728       , l_array_source_2
12729       , l_array_source_7
12730       , l_array_source_8
12731       , l_array_source_9
12732       , l_array_source_11
12733       , l_array_source_13
12734       , l_array_source_13_meaning
12735       , l_array_source_14
12736       , l_array_source_15
12737       , l_array_source_16
12738       , l_array_source_17
12739       , l_array_source_19
12740       , l_array_source_26
12741       , l_array_source_27
12742       , l_array_source_37
12743       , l_array_source_37_meaning
12744       LIMIT l_rows;
12745 --
12746 IF (C_LEVEL_EVENT >= g_log_level) THEN
12747    trace
12748    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
12749    ,p_level    => C_LEVEL_EVENT
12750    ,p_module   => l_log_module);
12751 END IF;
12752 --
12753 EXIT WHEN l_array_entity_id.COUNT = 0;
12754 
12755 -- initialize arrays
12756 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
12757 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
12758 
12759 --
12760 -- Bug 4458708
12761 --
12762 XLA_AE_LINES_PKG.g_LineNumber := 0;
12763 
12764 
12765 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
12766 g_last_hdr_idx := l_array_event_id.LAST;
12767 --
12768 -- loop for the headers. Each iteration is for each header extract row
12769 -- fetched in header cursor
12770 --
12771 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
12772 
12773 --
12774 -- set event info as cache for other routines to refer event attributes
12775 --
12776 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
12777    (p_application_id           => p_application_id
12778    ,p_primary_ledger_id        => p_primary_ledger_id
12779    ,p_base_ledger_id           => p_base_ledger_id
12780    ,p_target_ledger_id         => p_target_ledger_id
12781    ,p_entity_id                => l_array_entity_id(hdr_idx)
12782    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
12783    ,p_entity_code              => l_array_entity_code(hdr_idx)
12784    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
12785    ,p_event_id                 => l_array_event_id(hdr_idx)
12786    ,p_event_class_code         => l_array_class_code(hdr_idx)
12787    ,p_event_type_code          => l_array_event_type(hdr_idx)
12788    ,p_event_number             => l_array_event_number(hdr_idx)
12789    ,p_event_date               => l_array_event_date(hdr_idx)
12790    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
12791    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
12792    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
12793    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
12794    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
12795    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
12796    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
12797    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
12798    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
12799    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
12800    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
12801    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
12802    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
12803    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
12804    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
12805 
12806 --
12807 -- set the status of entry to C_VALID (0)
12808 --
12809 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
12810 
12811 --
12812 -- initialize a row for ae header
12813 --
12814 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
12815 
12816 l_event_id := l_array_event_id(hdr_idx);
12817 
12818 --
12819 -- storing the hdr_idx for event. May be used by line cursor.
12820 --
12821 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
12822 
12823 --
12824 -- store sources from header extract. This can be improved to
12825 -- store only those sources from header extract that may be used in lines
12826 --
12827 
12828 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
12829 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
12830 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
12831 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
12832 g_array_event(l_event_id).array_value_num('source_11') := l_array_source_11(hdr_idx);
12833 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
12834 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
12835 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
12836 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
12837 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
12841 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
12838 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
12839 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
12840 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
12842 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
12843 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
12844 
12845 --
12846 -- initilaize the status of ae headers for diffrent balance types
12847 -- the status is initialised to C_NOT_CREATED (2)
12848 --
12849 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12850 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12851 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
12852 
12853 --
12854 -- call api to validate and store accounting attributes for header
12855 --
12856 
12857 ------------------------------------------------------------
12858 -- Accrual Reversal : to get date for Standard Source (NONE)
12859 ------------------------------------------------------------
12860 l_acc_rev_gl_date_source := NULL;
12861 
12862      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
12863       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_19');
12864      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
12865       l_rec_acct_attrs.array_date_value(2) := 
12866 xla_ae_sources_pkg.GetSystemSourceDate(
12867    p_source_code           => 'XLA_REFERENCE_DATE_1'
12868  , p_source_type_code      => 'Y'
12869  , p_source_application_id =>  602
12870 );
12871      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
12872       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_37');
12873 
12874 
12875 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
12876 
12877 XLA_AE_HEADER_PKG.SetJeCategoryName;
12878 
12879 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
12880 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
12881 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
12882 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
12883 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
12884 
12885 
12886 -- No header level analytical criteria
12887 
12888 --
12889 --accounting attribute enhancement, bug 3612931
12890 --
12891 l_trx_reversal_source := SUBSTR(NULL, 1,30);
12892 
12893 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
12894    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
12895 
12896    xla_accounting_err_pkg.build_message
12897       (p_appli_s_name            => 'XLA'
12898       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
12899       ,p_token_1                 => 'ACCT_ATTR_NAME'
12900       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
12901       ,p_token_2                 => 'PRODUCT_NAME'
12902       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
12903       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
12904       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
12905       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
12906 
12907 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
12908    --
12909    -- following sets the accounting attributes needed to reverse
12910    -- accounting for a distributeion
12911    --
12912    xla_ae_lines_pkg.SetTrxReversalAttrs
12913       (p_event_id              => l_event_id
12914       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
12915       ,p_trx_reversal_source   => l_trx_reversal_source);
12916 
12917 END IF;
12918 
12919 
12920 ----------------------------------------------------------------
12921 -- 4262811 -  update the header statuses to invalid in need be
12922 ----------------------------------------------------------------
12923 --
12924 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
12925 
12926 
12927 --
12928 -- Generate the accrual reversal headers
12929 --
12930 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
12931 
12932 
12933 
12934 -- indicate that the accrual entry has a reversal entry
12935 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
12936 
12937 --
12938 -- initialize a row for ae header
12939 --
12940 g_last_hdr_idx := g_last_hdr_idx + 1;
12941 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
12942                                   p_hdr_idx        => g_last_hdr_idx) ;
12943 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
12944 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
12945                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
12946 
12947 --
12948 -- record the index for the reversal entry, it will be used by the journal
12952 
12949 -- line creation
12950 --
12951 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
12953 --
12954 -- Populate the GL Date and override the GL date defined in the
12955 -- SetHdrAcctAttrs if necessary
12956 --
12957 
12958               ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
12959               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
12960               XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
12961                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
12962                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
12963                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
12964               
12965 
12966 --
12967 -- Update the header status
12968 --
12969 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
12970 
12971 
12972 
12973 END IF;
12974 
12975 
12976 ----------------------------------------------------------------
12977 
12978 --
12979 -- this ends the header loop iteration for one bulk fetch
12980 --
12981 END LOOP;
12982 
12983 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
12984 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
12985 
12986 --
12987 -- insert dummy rows into lines gt table that were created due to
12988 -- transaction reversals
12989 --
12990 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
12991    l_result := XLA_AE_LINES_PKG.InsertLines;
12992 END IF;
12993 
12994 --
12995 -- reset the temp_line_num for each set of events fetched from header
12996 -- cursor rather than doing it for each new event in line cursor
12997 -- Bug 3939231
12998 --
12999 xla_ae_lines_pkg.g_temp_line_num := 0;
13000 
13001 
13002 
13003 --
13004 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
13005 --
13006 --
13007 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13008 
13009       trace
13010          (p_msg      => 'SQL - FETCH line_cur'
13011          ,p_level    => C_LEVEL_STATEMENT
13012          ,p_module   => l_log_module);
13013 
13014 END IF;
13015 --
13016 --
13017 LOOP
13018   --
13019   FETCH line_cur BULK COLLECT INTO
13020         l_array_entity_id
13021       , l_array_legal_entity_id
13022       , l_array_entity_code
13023       , l_array_transaction_num
13024       , l_array_event_id
13025       , l_array_class_code
13026       , l_array_event_type
13027       , l_array_event_number
13028       , l_array_event_date
13029       , l_array_transaction_date
13030       , l_array_reference_num_1
13031       , l_array_reference_num_2
13032       , l_array_reference_num_3
13033       , l_array_reference_num_4
13034       , l_array_reference_char_1
13035       , l_array_reference_char_2
13036       , l_array_reference_char_3
13037       , l_array_reference_char_4
13038       , l_array_reference_date_1
13039       , l_array_reference_date_2
13040       , l_array_reference_date_3
13041       , l_array_reference_date_4
13042       , l_array_event_created_by
13043       , l_array_budgetary_control_flag
13044       , l_array_extract_line_num 
13045       , l_array_source_12
13046       , l_array_source_25
13047       LIMIT l_rows;
13048 
13049   --
13050   IF (C_LEVEL_EVENT >= g_log_level) THEN
13051             trace
13052                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
13053                ,p_level    => C_LEVEL_EVENT
13054                ,p_module   => l_log_module);
13055   END IF;
13056   --
13057   EXIT WHEN l_array_entity_id.count = 0;
13058 
13059   XLA_AE_LINES_PKG.g_rec_lines := null;
13060 
13061 --
13062 -- Bug 4458708
13063 --
13064 XLA_AE_LINES_PKG.g_LineNumber := 0;
13065 --
13066 --
13067 
13068 FOR Idx IN 1..l_array_event_id.count LOOP
13069    --
13070    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
13071    --
13072    l_event_id := l_array_event_id(idx);  -- 5648433
13073 
13074    --
13075    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
13076    --
13077 
13078    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
13079              (g_array_event(l_event_id).array_value_num('header_index'))
13080          ,'N'
13081          ) <> 'Y'
13082    THEN
13083       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13084          trace
13085             (p_msg      => 'Trancaction revesal option is not Y '
13086             ,p_level    => C_LEVEL_STATEMENT
13087             ,p_module   => l_log_module);
13088       END IF;
13089 
13090 --
13091 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
13092 --
13093 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
13094 --
13095 -- set event info as cache for other routines to refer event attributes
13096 --
13097 
13098 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
13099    l_previous_event_id := l_event_id;
13100 
13104       ,p_base_ledger_id           => p_base_ledger_id
13101    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
13102       (p_application_id           => p_application_id
13103       ,p_primary_ledger_id        => p_primary_ledger_id
13105       ,p_target_ledger_id         => p_target_ledger_id
13106       ,p_entity_id                => l_array_entity_id(Idx)
13107       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
13108       ,p_entity_code              => l_array_entity_code(Idx)
13109       ,p_transaction_num          => l_array_transaction_num(Idx)
13110       ,p_event_id                 => l_array_event_id(Idx)
13111       ,p_event_class_code         => l_array_class_code(Idx)
13112       ,p_event_type_code          => l_array_event_type(Idx)
13113       ,p_event_number             => l_array_event_number(Idx)
13114       ,p_event_date               => l_array_event_date(Idx)
13115       ,p_transaction_date         => l_array_transaction_date(Idx)
13116       ,p_reference_num_1          => l_array_reference_num_1(Idx)
13117       ,p_reference_num_2          => l_array_reference_num_2(Idx)
13118       ,p_reference_num_3          => l_array_reference_num_3(Idx)
13119       ,p_reference_num_4          => l_array_reference_num_4(Idx)
13120       ,p_reference_char_1         => l_array_reference_char_1(Idx)
13121       ,p_reference_char_2         => l_array_reference_char_2(Idx)
13122       ,p_reference_char_3         => l_array_reference_char_3(Idx)
13123       ,p_reference_char_4         => l_array_reference_char_4(Idx)
13124       ,p_reference_date_1         => l_array_reference_date_1(Idx)
13125       ,p_reference_date_2         => l_array_reference_date_2(Idx)
13126       ,p_reference_date_3         => l_array_reference_date_3(Idx)
13127       ,p_reference_date_4         => l_array_reference_date_4(Idx)
13128       ,p_event_created_by         => l_array_event_created_by(Idx)
13129       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
13130        --
13131 END IF;
13132 
13133 
13134 
13135 --
13136 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
13137 
13138 l_acct_reversal_source := SUBSTR(NULL, 1,30);
13139 
13140 IF l_continue_with_lines THEN
13141    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
13142       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
13143 
13144       xla_accounting_err_pkg.build_message
13145          (p_appli_s_name            => 'XLA'
13146          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
13147          ,p_token_1                 => 'LINE_NUMBER'
13148          ,p_value_1                 => l_array_extract_line_num(Idx)
13149          ,p_token_2                 => 'PRODUCT_NAME'
13150          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
13151          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
13152          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
13153          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
13154 
13155    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
13156       --
13157       -- following sets the accounting attributes needed to reverse
13158       -- accounting for a distributeion
13159       --
13160 
13161       --
13162       -- 5217187
13163       --
13164       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
13165       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
13166                                        g_array_event(l_event_id).array_value_num('header_index'));
13167       --
13168       --
13169 
13170       -- No reversal code generated
13171 
13172       xla_ae_lines_pkg.SetAcctReversalAttrs
13173          (p_event_id             => l_event_id
13174          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
13175          ,p_calculate_acctd_flag => l_calculate_acctd_flag
13176          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
13177    END IF;
13178 
13179    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
13180        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
13181 
13182 --
13183 AcctLineType_8 (
13184  p_application_id  => p_application_id
13185  ,p_event_id     => l_event_id
13186  ,p_calculate_acctd_flag => l_calculate_acctd_flag
13187  ,p_calculate_g_l_flag => l_calculate_g_l_flag
13188  ,p_actual_flag => l_actual_flag
13189  ,p_balance_type_code => l_balance_type_code
13190  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
13191  
13192  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
13193  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
13194  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
13195  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
13196  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
13197  , p_source_12 => l_array_source_12(Idx)
13198  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
13199  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
13200  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
13201  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
13202  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
13203  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
13204  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
13205  , p_source_25 => l_array_source_25(Idx)
13206  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
13210   l_actual_gain_loss_ref := l_gain_or_loss_ref;
13207  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
13208  );
13209 If(l_balance_type_code = 'A') THEN
13211 END IF;
13212 
13213 --
13214 
13215       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
13216       -- or secondary ledger that has different currency with primary
13217       -- or alc that is calculated by sla
13218       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
13219             (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'))
13220 
13221 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
13222 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
13223           AND (l_actual_flag = 'A')) THEN
13224         XLA_AE_LINES_PKG.CreateGainOrLossLines(
13225           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
13226          ,p_application_id   => p_application_id
13227          ,p_amb_context_code => 'DEFAULT'
13228          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
13229          ,p_event_class_code => C_EVENT_CLASS_CODE
13230          ,p_event_type_code  => C_EVENT_TYPE_CODE
13231          
13232          ,p_gain_ccid        => -1
13233          ,p_loss_ccid        => -1
13234 
13235          ,p_actual_flag      => l_actual_flag
13236          ,p_enc_flag         => null
13237          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
13238          ,p_enc_g_l_ref      => null
13239          );
13240       END IF;
13241    END IF;
13242 END IF;
13243 
13244    ELSE
13245       --
13246       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
13247       --
13248       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13249          trace
13250             (p_msg      => 'Trancaction revesal option is Y'
13251             ,p_level    => C_LEVEL_STATEMENT
13252             ,p_module   => l_log_module);
13253       END IF;
13254    END IF;
13255 
13256 END LOOP;
13257 l_result := XLA_AE_LINES_PKG.InsertLines ;
13258 end loop;
13259 close line_cur;
13260 
13261 
13262 --
13263 -- insert headers into xla_ae_headers_gt table
13264 --
13265 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
13266 
13267 -- insert into errors table here.
13268 
13269 END LOOP;
13270 
13271 --
13272 -- 4865292
13273 --
13274 -- Compare g_hdr_extract_count with event count in
13275 -- CreateHeadersAndLines.
13276 --
13277 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
13278 
13279 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13280    trace (p_msg     => '# rows extracted from header extract objects '
13281                     || ' (running total): '
13282                     || g_hdr_extract_count
13283          ,p_level   => C_LEVEL_STATEMENT
13284          ,p_module  => l_log_module);
13285 END IF;
13286 
13287 CLOSE header_cur;
13288 --
13289 
13290 --
13291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13292    trace
13293       (p_msg      => 'END of EventClass_17'
13294       ,p_level    => C_LEVEL_PROCEDURE
13295       ,p_module   => l_log_module);
13296 END IF;
13297 --
13298 RETURN l_result;
13299 EXCEPTION
13300 WHEN xla_exceptions_pkg.application_exception THEN
13301    
13302 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
13303 
13304    
13305 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
13306 
13307    RAISE;
13308 
13309 WHEN NO_DATA_FOUND THEN
13310 
13311 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
13312 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
13313 
13314 FOR header_record IN header_cur
13315 LOOP
13316     l_array_header_events(header_record.event_id) := header_record.event_id;
13317 END LOOP;
13318 
13319 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
13320 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
13321 
13322 fnd_file.put_line(fnd_file.LOG, '                    ');
13323 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
13324 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
13325 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
13326 
13327 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
13328 LOOP
13329 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
13330 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
13331         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
13332 	END IF;
13333 END LOOP;
13334 
13335 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
13336 fnd_file.put_line(fnd_file.LOG, '                    ');
13337 
13338 
13339 xla_exceptions_pkg.raise_message
13340       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_17');
13341 
13342 
13343 WHEN OTHERS THEN
13344    xla_exceptions_pkg.raise_message
13345       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_17');
13349 ---------------------------------------
13346 END EventClass_17;
13347 --
13348 
13350 --
13351 -- PRIVATE PROCEDURE
13352 --         insert_sources_18
13353 --
13354 ----------------------------------------
13355 --
13356 PROCEDURE insert_sources_18(
13357                                 p_target_ledger_id       IN NUMBER
13358                               , p_language               IN VARCHAR2
13359                               , p_sla_ledger_id          IN NUMBER
13360                               , p_pad_start_date         IN DATE
13361                               , p_pad_end_date           IN DATE
13362                          )
13363 IS
13364 
13365 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
13366 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
13367 p_apps_owner                   VARCHAR2(30);
13368 l_log_module                   VARCHAR2(240);
13369 BEGIN
13370 IF g_log_enabled THEN
13371       l_log_module := C_DEFAULT_MODULE||'.insert_sources_18';
13372 END IF;
13373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13374 
13375       trace
13376          (p_msg      => 'BEGIN of insert_sources_18'
13377          ,p_level    => C_LEVEL_PROCEDURE
13378          ,p_module   => l_log_module);
13379 
13380 END IF;
13381 
13382 -- select APPS owner
13383 SELECT oracle_username
13384   INTO p_apps_owner
13385   FROM fnd_oracle_userid
13386  WHERE read_only_flag = 'U'
13387 ;
13388 
13389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13390       trace
13391          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
13392                         ' - p_language = '||p_language||
13393                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
13394                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
13395                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
13396                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
13397          ,p_level    => C_LEVEL_STATEMENT
13398          ,p_module   => l_log_module);
13399 END IF;
13400 
13401 
13402 --
13403 INSERT INTO xla_diag_sources --hdr2
13404 (
13405         event_id
13406       , ledger_id
13407       , sla_ledger_id
13408       , description_language
13409       , object_name
13410       , object_type_code
13411       , line_number
13412       , source_application_id
13413       , source_type_code
13414       , source_code
13415       , source_value
13416       , source_meaning
13417       , created_by
13418       , creation_date
13419       , last_update_date
13420       , last_updated_by
13421       , last_update_login
13422       , program_update_date
13423       , program_application_id
13424       , program_id
13425       , request_id
13426 )
13427 SELECT
13428         event_id
13429       , p_target_ledger_id
13430       , p_sla_ledger_id
13431       , p_language
13432       , object_name
13433       , object_type_code
13434       , line_number
13435       , source_application_id
13436       , source_type_code
13437       , source_code
13438       , SUBSTR(source_value ,1,1996)
13439       , SUBSTR(source_meaning ,1,200)
13440       , xla_environment_pkg.g_Usr_Id
13441       , TRUNC(SYSDATE)
13442       , TRUNC(SYSDATE)
13443       , xla_environment_pkg.g_Usr_Id
13444       , xla_environment_pkg.g_Login_Id
13445       , TRUNC(SYSDATE)
13446       , xla_environment_pkg.g_Prog_Appl_Id
13447       , xla_environment_pkg.g_Prog_Id
13448       , xla_environment_pkg.g_Req_Id
13449   FROM (
13450        SELECT xet.event_id                  event_id
13451             , 0                          line_number
13452             , CASE r
13453                WHEN 1 THEN 'PO_HEADERS_REF_V' 
13454                 WHEN 2 THEN 'PO_DISTS_REF_V' 
13455                 WHEN 3 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
13456                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
13457                 WHEN 5 THEN 'CST_XLA_INV_REF_V' 
13458                 WHEN 6 THEN 'CST_XLA_INV_REF_V' 
13459                 WHEN 7 THEN 'CST_XLA_INV_REF_V' 
13460                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
13461                 WHEN 9 THEN 'CST_XLA_INV_HEADERS_V' 
13462                 WHEN 10 THEN 'PO_DISTS_REF_V' 
13463                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
13464                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
13465                 WHEN 13 THEN 'PSA_CST_XLA_UPG_V' 
13466                 WHEN 14 THEN 'PO_HEADERS_REF_V' 
13467                 WHEN 15 THEN 'CST_XLA_INV_HEADERS_V' 
13468                 
13469                ELSE null
13470               END                           object_name
13471             , CASE r
13472                 WHEN 1 THEN 'HEADER' 
13473                 WHEN 2 THEN 'HEADER' 
13474                 WHEN 3 THEN 'HEADER' 
13475                 WHEN 4 THEN 'HEADER' 
13476                 WHEN 5 THEN 'HEADER' 
13477                 WHEN 6 THEN 'HEADER' 
13478                 WHEN 7 THEN 'HEADER' 
13479                 WHEN 8 THEN 'HEADER' 
13480                 WHEN 9 THEN 'HEADER' 
13481                 WHEN 10 THEN 'HEADER' 
13482                 WHEN 11 THEN 'HEADER' 
13483                 WHEN 12 THEN 'HEADER' 
13484                 WHEN 13 THEN 'HEADER' 
13485                 WHEN 14 THEN 'HEADER' 
13486                 WHEN 15 THEN 'HEADER' 
13487                 
13491                 WHEN 1 THEN '201' 
13488                 ELSE null
13489               END                           object_type_code
13490             , CASE r
13492                 WHEN 2 THEN '201' 
13493                 WHEN 3 THEN '707' 
13494                 WHEN 4 THEN '707' 
13495                 WHEN 5 THEN '707' 
13496                 WHEN 6 THEN '707' 
13497                 WHEN 7 THEN '707' 
13498                 WHEN 8 THEN '707' 
13499                 WHEN 9 THEN '707' 
13500                 WHEN 10 THEN '201' 
13501                 WHEN 11 THEN '707' 
13502                 WHEN 12 THEN '707' 
13503                 WHEN 13 THEN '707' 
13504                 WHEN 14 THEN '201' 
13505                 WHEN 15 THEN '707' 
13506                 
13507                 ELSE null
13508               END                           source_application_id
13509             , 'S'             source_type_code
13510             , CASE r
13511                 WHEN 1 THEN 'PURCH_ENCUMBRANCE_FLAG' 
13512                 WHEN 2 THEN 'RESERVED_FLAG' 
13513                 WHEN 3 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
13514                 WHEN 4 THEN 'APPLIED_TO_APPL_ID' 
13515                 WHEN 5 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
13516                 WHEN 6 THEN 'APPLIED_TO_ENTITY_CODE' 
13517                 WHEN 7 THEN 'TXN_PO_DISTRIBUTION_ID' 
13518                 WHEN 8 THEN 'APPLIED_TO_PO_DOC_ID' 
13519                 WHEN 9 THEN 'DISTRIBUTION_TYPE' 
13520                 WHEN 10 THEN 'PO_BUDGET_ACCOUNT' 
13521                 WHEN 11 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
13522                 WHEN 12 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
13523                 WHEN 13 THEN 'CST_ENCUM_UPG_OPTION' 
13524                 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
13525                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
13526                 
13527                 ELSE null
13528               END                           source_code
13529             , CASE r
13530                 WHEN 1 THEN TO_CHAR(h6.PURCH_ENCUMBRANCE_FLAG)
13531                 WHEN 2 THEN TO_CHAR(h5.RESERVED_FLAG)
13532                 WHEN 3 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
13533                 WHEN 4 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
13534                 WHEN 5 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
13535                 WHEN 6 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
13536                 WHEN 7 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
13537                 WHEN 8 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
13538                 WHEN 9 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
13539                 WHEN 10 THEN TO_CHAR(h5.PO_BUDGET_ACCOUNT)
13540                 WHEN 11 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
13541                 WHEN 12 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
13542                 WHEN 13 THEN TO_CHAR(h7.CST_ENCUM_UPG_OPTION)
13543                 WHEN 14 THEN TO_CHAR(h6.PURCH_ENCUMBRANCE_TYPE_ID)
13544                 WHEN 15 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
13545                 
13546                 ELSE null
13547               END                           source_value
13548             , CASE r
13549                 WHEN 9 THEN fvl13.meaning
13550                 WHEN 15 THEN fvl37.meaning
13551                 
13552                 ELSE null
13553               END               source_meaning
13554          FROM xla_events_gt     xet  
13555       , CST_XLA_INV_HEADERS_V  h1
13556       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
13557       , CST_XLA_INV_REF_V  h4
13558       , PO_DISTS_REF_V  h5
13559       , PO_HEADERS_REF_V  h6
13560       , PSA_CST_XLA_UPG_V  h7
13561   , fnd_lookup_values    fvl13
13562   , fnd_lookup_values    fvl37
13563              ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
13564          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
13565            AND xet.event_class_code = C_EVENT_CLASS_CODE
13566               AND h1.event_id = xet.event_id
13567  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h4.txn_po_header_id = h5.po_header_id  (+)  and h4.txn_po_distribution_id = h5.po_distribution_id (+)  AND h4.txn_po_header_id = h6.po_header_id (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
13568   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
13569   AND fvl13.view_application_id(+) = 700
13570   AND fvl13.language(+)            = USERENV('LANG')
13571      AND fvl37.lookup_type(+)         = 'YES_NO'
13572   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
13573   AND fvl37.view_application_id(+) = 0
13574   AND fvl37.language(+)            = USERENV('LANG')
13575   
13576 )
13577 ;
13578 --
13579 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13580 
13581       trace
13582          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
13583          ,p_level    => C_LEVEL_STATEMENT
13584          ,p_module   => l_log_module);
13585 
13586 END IF;
13587 --
13588 
13589 
13590 
13591 --
13592 INSERT INTO xla_diag_sources  --line2
13593 (
13594         event_id
13595       , ledger_id
13596       , sla_ledger_id
13597       , description_language
13598       , object_name
13599       , object_type_code
13600       , line_number
13601       , source_application_id
13602       , source_type_code
13603       , source_code
13604       , source_value
13608       , last_update_date
13605       , source_meaning
13606       , created_by
13607       , creation_date
13609       , last_updated_by
13610       , last_update_login
13611       , program_update_date
13612       , program_application_id
13613       , program_id
13614       , request_id
13615 )
13616 SELECT  event_id
13617       , p_target_ledger_id
13618       , p_sla_ledger_id
13619       , p_language
13620       , object_name
13621       , object_type_code
13622       , line_number
13623       , source_application_id
13624       , source_type_code
13625       , source_code
13626       , SUBSTR(source_value,1,1996)
13627       , SUBSTR(source_meaning ,1,200)
13628       , xla_environment_pkg.g_Usr_Id
13629       , TRUNC(SYSDATE)
13630       , TRUNC(SYSDATE)
13631       , xla_environment_pkg.g_Usr_Id
13632       , xla_environment_pkg.g_Login_Id
13633       , TRUNC(SYSDATE)
13634       , xla_environment_pkg.g_Prog_Appl_Id
13635       , xla_environment_pkg.g_Prog_Id
13636       , xla_environment_pkg.g_Req_Id
13637   FROM (
13638        SELECT xet.event_id                  event_id
13639             , l2.line_number                 line_number
13640             , CASE r
13641                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
13642                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
13643                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
13644                 
13645                ELSE null
13646               END                           object_name
13647             , CASE r
13648                 WHEN 1 THEN 'LINE' 
13649                 WHEN 2 THEN 'LINE' 
13650                 WHEN 3 THEN 'LINE' 
13651                 
13652                 ELSE null
13653               END                           object_type_code
13654             , CASE r
13655                 WHEN 1 THEN '707' 
13656                 WHEN 2 THEN '707' 
13657                 WHEN 3 THEN '707' 
13658                 
13659                 ELSE null
13660               END                           source_application_id
13661             , 'S'             source_type_code
13662             , CASE r
13663                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
13664                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
13665                 WHEN 3 THEN 'CURRENCY_CODE' 
13666                 
13667                 ELSE null
13668               END                           source_code
13669             , CASE r
13670                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
13671                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
13672                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
13673                 
13674                 ELSE null
13675               END                           source_value
13676             , null              source_meaning
13677          FROM  xla_events_gt     xet  
13678         , CST_XLA_INV_LINES_V  l2
13679             , (select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
13680         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
13681           AND xet.event_class_code = C_EVENT_CLASS_CODE
13682             AND l2.event_id          = xet.event_id
13683 
13684 )
13685 ;
13686 --
13687 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13688 
13689       trace
13690          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
13691          ,p_level    => C_LEVEL_STATEMENT
13692          ,p_module   => l_log_module);
13693 
13694 END IF;
13695 
13696 
13697 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13698       trace
13699          (p_msg      => 'END of insert_sources_18'
13700          ,p_level    => C_LEVEL_PROCEDURE
13701          ,p_module   => l_log_module);
13702 END IF;
13703 EXCEPTION
13704   WHEN xla_exceptions_pkg.application_exception THEN
13705       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13706             trace
13707                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13708                ,p_level    => C_LEVEL_EXCEPTION
13709                ,p_module   => l_log_module);
13710       END IF;
13711       RAISE;
13712   WHEN OTHERS THEN
13713       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
13714             trace
13715                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
13716                ,p_level    => C_LEVEL_EXCEPTION
13717                ,p_module   => l_log_module);
13718        END IF;
13719        xla_exceptions_pkg.raise_message
13720            (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.insert_sources_18');
13721 END insert_sources_18;
13722 --
13723 
13724 ---------------------------------------
13725 --
13726 -- PRIVATE FUNCTION
13727 --         EventClass_18
13728 --
13729 ----------------------------------------
13730 --
13731 FUNCTION EventClass_18
13732        (p_application_id         IN NUMBER
13733        ,p_base_ledger_id         IN NUMBER
13734        ,p_target_ledger_id       IN NUMBER
13735        ,p_language               IN VARCHAR2
13736        ,p_currency_code          IN VARCHAR2
13737        ,p_sla_ledger_id          IN NUMBER
13738        ,p_pad_start_date         IN DATE
13739        ,p_pad_end_date           IN DATE
13740        ,p_primary_ledger_id      IN NUMBER)
13741 RETURN BOOLEAN IS
13742 --
13743 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PURCHASE_ORDER_ALL';
13747 l_calculate_g_l_flag     VARCHAR2(1) :='N';
13744 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
13745 
13746 l_calculate_acctd_flag   VARCHAR2(1) :='N';
13748 --
13749 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13750 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13751 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13752 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13753 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13754 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13755 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13756 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13757 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13758 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13759 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13760 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13761 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13762 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
13763 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13764 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13765 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13766 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
13767 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13768 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13769 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13770 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
13771 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
13772 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
13773 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
13774 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
13775 
13776 l_event_id                             NUMBER;
13777 l_previous_event_id                    NUMBER;
13778 l_first_event_id                       NUMBER;
13779 l_last_event_id                        NUMBER;
13780 
13781 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
13782 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
13783 --
13784 --
13785 l_result                    BOOLEAN := TRUE;
13786 l_rows                      NUMBER  := 1000;
13787 l_event_type_name           VARCHAR2(80) := 'All';
13788 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
13789 l_description               VARCHAR2(4000);
13790 l_transaction_reversal      NUMBER;
13791 l_ae_header_id              NUMBER;
13792 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
13793 l_log_module                VARCHAR2(240);
13794 --
13795 l_acct_reversal_source      VARCHAR2(30);
13796 l_trx_reversal_source       VARCHAR2(30);
13797 
13798 l_continue_with_lines       BOOLEAN := TRUE;
13799 --
13800 l_acc_rev_gl_date_source    DATE;                      -- 4262811
13801 --
13802 type t_array_event_id is table of number index by binary_integer;
13803 
13804 l_rec_array_event                    t_rec_array_event;
13805 l_null_rec_array_event               t_rec_array_event;
13806 l_array_ae_header_id                 xla_number_array_type;
13807 l_actual_flag                        VARCHAR2(1) := NULL;
13808 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
13809 l_balance_type_code                  VARCHAR2(1) :=NULL;
13810 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
13811 
13812 --
13813 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
13814 --
13815 
13816 TYPE t_array_source_2 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
13817 TYPE t_array_source_3 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
13818 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
13819 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
13820 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
13821 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
13822 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
13823 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
13824 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
13825 TYPE t_array_source_14 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
13826 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
13827 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
13828 TYPE t_array_source_18 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
13829 TYPE t_array_source_19 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
13833 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
13830 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
13831 
13832 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
13834 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
13835 
13836 l_array_source_2              t_array_source_2;
13837 l_array_source_3              t_array_source_3;
13838 l_array_source_4              t_array_source_4;
13839 l_array_source_7              t_array_source_7;
13840 l_array_source_8              t_array_source_8;
13841 l_array_source_9              t_array_source_9;
13842 l_array_source_10              t_array_source_10;
13843 l_array_source_11              t_array_source_11;
13844 l_array_source_13              t_array_source_13;
13845 l_array_source_13_meaning      t_array_lookup_meaning;
13846 l_array_source_14              t_array_source_14;
13847 l_array_source_15              t_array_source_15;
13848 l_array_source_17              t_array_source_17;
13849 l_array_source_18              t_array_source_18;
13850 l_array_source_19              t_array_source_19;
13851 l_array_source_37              t_array_source_37;
13852 l_array_source_37_meaning      t_array_lookup_meaning;
13853 
13854 l_array_source_6      t_array_source_6;
13855 l_array_source_12      t_array_source_12;
13856 l_array_source_16      t_array_source_16;
13857 
13858 --
13859 CURSOR header_cur
13860 IS
13861 SELECT /*+ leading(xet) cardinality(xet,1) */
13862 -- Event Class Code: PURCHASE_ORDER
13863     xet.entity_id
13864    ,xet.legal_entity_id
13865    ,xet.entity_code
13866    ,xet.transaction_number
13867    ,xet.event_id
13868    ,xet.event_class_code
13869    ,xet.event_type_code
13870    ,xet.event_number
13871    ,xet.event_date
13872    ,xet.transaction_date
13873    ,xet.reference_num_1
13874    ,xet.reference_num_2
13875    ,xet.reference_num_3
13876    ,xet.reference_num_4
13877    ,xet.reference_char_1
13878    ,xet.reference_char_2
13879    ,xet.reference_char_3
13880    ,xet.reference_char_4
13881    ,xet.reference_date_1
13882    ,xet.reference_date_2
13883    ,xet.reference_date_3
13884    ,xet.reference_date_4
13885    ,xet.event_created_by
13886    ,xet.budgetary_control_flag 
13887   , h6.PURCH_ENCUMBRANCE_FLAG    source_2
13888   , h5.RESERVED_FLAG    source_3
13889   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_4
13890   , h4.APPLIED_TO_APPL_ID    source_7
13891   , h4.APPLIED_TO_DIST_LINK_TYPE    source_8
13892   , h4.APPLIED_TO_ENTITY_CODE    source_9
13893   , h4.TXN_PO_DISTRIBUTION_ID    source_10
13894   , h4.APPLIED_TO_PO_DOC_ID    source_11
13895   , h1.DISTRIBUTION_TYPE    source_13
13896   , fvl13.meaning   source_13_meaning
13897   , h5.PO_BUDGET_ACCOUNT    source_14
13898   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_15
13899   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_17
13900   , h7.CST_ENCUM_UPG_OPTION    source_18
13901   , h6.PURCH_ENCUMBRANCE_TYPE_ID    source_19
13902   , h1.TRANSFER_TO_GL_INDICATOR    source_37
13903   , fvl37.meaning   source_37_meaning
13904   FROM xla_events_gt     xet 
13905   , CST_XLA_INV_HEADERS_V  h1
13906   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
13907   , CST_XLA_INV_REF_V  h4
13908   , PO_DISTS_REF_V  h5
13909   , PO_HEADERS_REF_V  h6
13910   , PSA_CST_XLA_UPG_V  h7
13911   , fnd_lookup_values    fvl13
13912   , fnd_lookup_values    fvl37
13913  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
13914    and xet.event_class_code = C_EVENT_CLASS_CODE
13915    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
13916  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h4.txn_po_header_id = h5.po_header_id  (+)  AND h4.txn_po_distribution_id = h5.po_distribution_id (+)  AND h4.txn_po_header_id = h6.po_header_id (+)  AND h4.rcv_transaction_id = h7.transaction_id (+)    AND fvl13.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
13917   AND fvl13.lookup_code(+)         = h1.DISTRIBUTION_TYPE
13918   AND fvl13.view_application_id(+) = 700
13919   AND fvl13.language(+)            = USERENV('LANG')
13920      AND fvl37.lookup_type(+)         = 'YES_NO'
13921   AND fvl37.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
13922   AND fvl37.view_application_id(+) = 0
13923   AND fvl37.language(+)            = USERENV('LANG')
13924   
13925  ORDER BY event_id
13926 ;
13927 
13928 
13929 --
13930 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
13931 IS
13932 SELECT  /*+ leading(xet) cardinality(xet,1) */
13933 -- Event Class Code: PURCHASE_ORDER
13934     xet.entity_id
13935    ,xet.legal_entity_id
13936    ,xet.entity_code
13937    ,xet.transaction_number
13938    ,xet.event_id
13939    ,xet.event_class_code
13940    ,xet.event_type_code
13941    ,xet.event_number
13942    ,xet.event_date
13943    ,xet.transaction_date
13944    ,xet.reference_num_1
13945    ,xet.reference_num_2
13946    ,xet.reference_num_3
13947    ,xet.reference_num_4
13948    ,xet.reference_char_1
13949    ,xet.reference_char_2
13950    ,xet.reference_char_3
13951    ,xet.reference_char_4
13952    ,xet.reference_date_1
13953    ,xet.reference_date_2
13954    ,xet.reference_date_3
13955    ,xet.reference_date_4
13956    ,xet.event_created_by
13957    ,xet.budgetary_control_flag
13958  , l2.LINE_NUMBER  
13959   , l2.ACCOUNTING_LINE_TYPE_CODE    source_6
13960   , l2.DISTRIBUTION_IDENTIFIER    source_12
13961   , l2.CURRENCY_CODE    source_16
13962   FROM xla_events_gt     xet 
13963   , CST_XLA_INV_LINES_V  l2
13964  WHERE xet.event_id between x_first_event_id and x_last_event_id
13965    and xet.event_date between p_pad_start_date and p_pad_end_date
13966    and xet.event_class_code = C_EVENT_CLASS_CODE
13967    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
13968 ;
13969 
13970 --
13971 BEGIN
13972 IF g_log_enabled THEN
13973    l_log_module := C_DEFAULT_MODULE||'.EventClass_18';
13974 END IF;
13975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13976    trace
13977       (p_msg      => 'BEGIN of EventClass_18'
13978       ,p_level    => C_LEVEL_PROCEDURE
13979       ,p_module   => l_log_module);
13980 END IF;
13981 
13982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13983    trace
13984       (p_msg      => 'p_application_id = '||p_application_id||
13985                      ' - p_base_ledger_id = '||p_base_ledger_id||
13986                      ' - p_target_ledger_id  = '||p_target_ledger_id||
13987                      ' - p_language = '||p_language||
13988                      ' - p_currency_code = '||p_currency_code||
13989                      ' - p_sla_ledger_id = '||p_sla_ledger_id
13990       ,p_level    => C_LEVEL_STATEMENT
13991       ,p_module   => l_log_module);
13992 END IF;
13993 --
13994 -- initialze arrays
13995 --
13996 g_array_event.DELETE;
13997 l_rec_array_event := l_null_rec_array_event;
13998 --
13999 --------------------------------------
14000 -- 4262811 Initialze MPA Line Number
14001 --------------------------------------
14002 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
14003 
14004 --
14005 
14006 --
14007 OPEN header_cur;
14008 --
14009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14010    trace
14011    (p_msg      => 'SQL - FETCH header_cur'
14012    ,p_level    => C_LEVEL_STATEMENT
14013    ,p_module   => l_log_module);
14014 END IF;
14015 --
14016 LOOP
14017 FETCH header_cur BULK COLLECT INTO
14018         l_array_entity_id
14019       , l_array_legal_entity_id
14020       , l_array_entity_code
14021       , l_array_transaction_num
14022       , l_array_event_id
14023       , l_array_class_code
14024       , l_array_event_type
14025       , l_array_event_number
14026       , l_array_event_date
14027       , l_array_transaction_date
14028       , l_array_reference_num_1
14029       , l_array_reference_num_2
14030       , l_array_reference_num_3
14031       , l_array_reference_num_4
14032       , l_array_reference_char_1
14033       , l_array_reference_char_2
14034       , l_array_reference_char_3
14035       , l_array_reference_char_4
14036       , l_array_reference_date_1
14037       , l_array_reference_date_2
14038       , l_array_reference_date_3
14039       , l_array_reference_date_4
14040       , l_array_event_created_by
14041       , l_array_budgetary_control_flag 
14042       , l_array_source_2
14043       , l_array_source_3
14044       , l_array_source_4
14045       , l_array_source_7
14046       , l_array_source_8
14047       , l_array_source_9
14048       , l_array_source_10
14049       , l_array_source_11
14050       , l_array_source_13
14051       , l_array_source_13_meaning
14052       , l_array_source_14
14053       , l_array_source_15
14054       , l_array_source_17
14055       , l_array_source_18
14056       , l_array_source_19
14057       , l_array_source_37
14058       , l_array_source_37_meaning
14059       LIMIT l_rows;
14060 --
14061 IF (C_LEVEL_EVENT >= g_log_level) THEN
14062    trace
14063    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
14064    ,p_level    => C_LEVEL_EVENT
14065    ,p_module   => l_log_module);
14066 END IF;
14067 --
14068 EXIT WHEN l_array_entity_id.COUNT = 0;
14069 
14070 -- initialize arrays
14071 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
14072 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
14073 
14074 --
14075 -- Bug 4458708
14076 --
14077 XLA_AE_LINES_PKG.g_LineNumber := 0;
14078 
14079 
14080 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
14081 g_last_hdr_idx := l_array_event_id.LAST;
14082 --
14083 -- loop for the headers. Each iteration is for each header extract row
14084 -- fetched in header cursor
14085 --
14089 -- set event info as cache for other routines to refer event attributes
14086 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
14087 
14088 --
14090 --
14091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14092    (p_application_id           => p_application_id
14093    ,p_primary_ledger_id        => p_primary_ledger_id
14094    ,p_base_ledger_id           => p_base_ledger_id
14095    ,p_target_ledger_id         => p_target_ledger_id
14096    ,p_entity_id                => l_array_entity_id(hdr_idx)
14097    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
14098    ,p_entity_code              => l_array_entity_code(hdr_idx)
14099    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
14100    ,p_event_id                 => l_array_event_id(hdr_idx)
14101    ,p_event_class_code         => l_array_class_code(hdr_idx)
14102    ,p_event_type_code          => l_array_event_type(hdr_idx)
14103    ,p_event_number             => l_array_event_number(hdr_idx)
14104    ,p_event_date               => l_array_event_date(hdr_idx)
14105    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
14106    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
14107    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
14108    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
14109    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
14110    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
14111    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
14112    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
14113    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
14114    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
14115    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
14116    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
14117    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
14118    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
14119    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
14120 
14121 --
14122 -- set the status of entry to C_VALID (0)
14123 --
14124 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14125 
14126 --
14127 -- initialize a row for ae header
14128 --
14129 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
14130 
14131 l_event_id := l_array_event_id(hdr_idx);
14132 
14133 --
14134 -- storing the hdr_idx for event. May be used by line cursor.
14135 --
14136 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
14137 
14138 --
14139 -- store sources from header extract. This can be improved to
14140 -- store only those sources from header extract that may be used in lines
14141 --
14142 
14143 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
14144 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
14145 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
14146 g_array_event(l_event_id).array_value_num('source_7') := l_array_source_7(hdr_idx);
14147 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
14148 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
14149 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
14150 g_array_event(l_event_id).array_value_num('source_11') := l_array_source_11(hdr_idx);
14151 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
14152 g_array_event(l_event_id).array_value_char('source_13_meaning') := l_array_source_13_meaning(hdr_idx);
14153 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
14154 g_array_event(l_event_id).array_value_num('source_15') := l_array_source_15(hdr_idx);
14155 g_array_event(l_event_id).array_value_num('source_17') := l_array_source_17(hdr_idx);
14156 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
14157 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
14158 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
14159 g_array_event(l_event_id).array_value_char('source_37_meaning') := l_array_source_37_meaning(hdr_idx);
14160 
14161 --
14162 -- initilaize the status of ae headers for diffrent balance types
14163 -- the status is initialised to C_NOT_CREATED (2)
14164 --
14165 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14166 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14167 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14168 
14169 --
14170 -- call api to validate and store accounting attributes for header
14171 --
14172 
14173 ------------------------------------------------------------
14174 -- Accrual Reversal : to get date for Standard Source (NONE)
14175 ------------------------------------------------------------
14176 l_acc_rev_gl_date_source := NULL;
14177 
14178      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
14179       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_19');
14180      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
14181       l_rec_acct_attrs.array_date_value(2) := 
14182 xla_ae_sources_pkg.GetSystemSourceDate(
14183    p_source_code           => 'XLA_REFERENCE_DATE_1'
14184  , p_source_type_code      => 'Y'
14185  , p_source_application_id =>  602
14186 );
14187      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
14188       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_37');
14189 
14190 
14191 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
14192 
14193 XLA_AE_HEADER_PKG.SetJeCategoryName;
14194 
14198 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
14195 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
14196 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
14197 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
14199 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
14200 
14201 
14202 -- No header level analytical criteria
14203 
14204 --
14205 --accounting attribute enhancement, bug 3612931
14206 --
14207 l_trx_reversal_source := SUBSTR(NULL, 1,30);
14208 
14209 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
14210    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14211 
14212    xla_accounting_err_pkg.build_message
14213       (p_appli_s_name            => 'XLA'
14214       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
14215       ,p_token_1                 => 'ACCT_ATTR_NAME'
14216       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
14217       ,p_token_2                 => 'PRODUCT_NAME'
14218       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14219       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14220       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14221       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14222 
14223 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
14224    --
14225    -- following sets the accounting attributes needed to reverse
14226    -- accounting for a distributeion
14227    --
14228    xla_ae_lines_pkg.SetTrxReversalAttrs
14229       (p_event_id              => l_event_id
14230       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
14231       ,p_trx_reversal_source   => l_trx_reversal_source);
14232 
14233 END IF;
14234 
14235 
14236 ----------------------------------------------------------------
14237 -- 4262811 -  update the header statuses to invalid in need be
14238 ----------------------------------------------------------------
14239 --
14240 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
14241 
14242 
14243   -----------------------------------------------
14244   -- No accrual reversal for the event class/type
14245   -----------------------------------------------
14246 ----------------------------------------------------------------
14247 
14248 --
14249 -- this ends the header loop iteration for one bulk fetch
14250 --
14251 END LOOP;
14252 
14253 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
14254 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
14255 
14256 --
14257 -- insert dummy rows into lines gt table that were created due to
14258 -- transaction reversals
14259 --
14260 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
14261    l_result := XLA_AE_LINES_PKG.InsertLines;
14262 END IF;
14263 
14264 --
14265 -- reset the temp_line_num for each set of events fetched from header
14266 -- cursor rather than doing it for each new event in line cursor
14267 -- Bug 3939231
14268 --
14269 xla_ae_lines_pkg.g_temp_line_num := 0;
14270 
14271 
14272 
14273 --
14274 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
14275 --
14276 --
14277 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14278 
14279       trace
14280          (p_msg      => 'SQL - FETCH line_cur'
14281          ,p_level    => C_LEVEL_STATEMENT
14282          ,p_module   => l_log_module);
14283 
14284 END IF;
14285 --
14286 --
14287 LOOP
14288   --
14289   FETCH line_cur BULK COLLECT INTO
14290         l_array_entity_id
14291       , l_array_legal_entity_id
14292       , l_array_entity_code
14293       , l_array_transaction_num
14294       , l_array_event_id
14295       , l_array_class_code
14296       , l_array_event_type
14297       , l_array_event_number
14298       , l_array_event_date
14299       , l_array_transaction_date
14300       , l_array_reference_num_1
14301       , l_array_reference_num_2
14302       , l_array_reference_num_3
14303       , l_array_reference_num_4
14304       , l_array_reference_char_1
14305       , l_array_reference_char_2
14306       , l_array_reference_char_3
14307       , l_array_reference_char_4
14308       , l_array_reference_date_1
14309       , l_array_reference_date_2
14310       , l_array_reference_date_3
14311       , l_array_reference_date_4
14312       , l_array_event_created_by
14313       , l_array_budgetary_control_flag
14314       , l_array_extract_line_num 
14315       , l_array_source_6
14316       , l_array_source_12
14317       , l_array_source_16
14318       LIMIT l_rows;
14319 
14320   --
14321   IF (C_LEVEL_EVENT >= g_log_level) THEN
14322             trace
14323                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
14324                ,p_level    => C_LEVEL_EVENT
14325                ,p_module   => l_log_module);
14326   END IF;
14327   --
14328   EXIT WHEN l_array_entity_id.count = 0;
14329 
14330   XLA_AE_LINES_PKG.g_rec_lines := null;
14331 
14332 --
14333 -- Bug 4458708
14334 --
14335 XLA_AE_LINES_PKG.g_LineNumber := 0;
14336 --
14337 --
14338 
14339 FOR Idx IN 1..l_array_event_id.count LOOP
14340    --
14341    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
14342    --
14343    l_event_id := l_array_event_id(idx);  -- 5648433
14344 
14345    --
14349    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
14346    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14347    --
14348 
14350              (g_array_event(l_event_id).array_value_num('header_index'))
14351          ,'N'
14352          ) <> 'Y'
14353    THEN
14354       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14355          trace
14356             (p_msg      => 'Trancaction revesal option is not Y '
14357             ,p_level    => C_LEVEL_STATEMENT
14358             ,p_module   => l_log_module);
14359       END IF;
14360 
14361 --
14362 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
14363 --
14364 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14365 --
14366 -- set event info as cache for other routines to refer event attributes
14367 --
14368 
14369 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
14370    l_previous_event_id := l_event_id;
14371 
14372    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14373       (p_application_id           => p_application_id
14374       ,p_primary_ledger_id        => p_primary_ledger_id
14375       ,p_base_ledger_id           => p_base_ledger_id
14376       ,p_target_ledger_id         => p_target_ledger_id
14377       ,p_entity_id                => l_array_entity_id(Idx)
14378       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
14379       ,p_entity_code              => l_array_entity_code(Idx)
14380       ,p_transaction_num          => l_array_transaction_num(Idx)
14381       ,p_event_id                 => l_array_event_id(Idx)
14382       ,p_event_class_code         => l_array_class_code(Idx)
14383       ,p_event_type_code          => l_array_event_type(Idx)
14384       ,p_event_number             => l_array_event_number(Idx)
14385       ,p_event_date               => l_array_event_date(Idx)
14386       ,p_transaction_date         => l_array_transaction_date(Idx)
14387       ,p_reference_num_1          => l_array_reference_num_1(Idx)
14388       ,p_reference_num_2          => l_array_reference_num_2(Idx)
14389       ,p_reference_num_3          => l_array_reference_num_3(Idx)
14390       ,p_reference_num_4          => l_array_reference_num_4(Idx)
14391       ,p_reference_char_1         => l_array_reference_char_1(Idx)
14392       ,p_reference_char_2         => l_array_reference_char_2(Idx)
14393       ,p_reference_char_3         => l_array_reference_char_3(Idx)
14394       ,p_reference_char_4         => l_array_reference_char_4(Idx)
14395       ,p_reference_date_1         => l_array_reference_date_1(Idx)
14396       ,p_reference_date_2         => l_array_reference_date_2(Idx)
14397       ,p_reference_date_3         => l_array_reference_date_3(Idx)
14398       ,p_reference_date_4         => l_array_reference_date_4(Idx)
14399       ,p_event_created_by         => l_array_event_created_by(Idx)
14400       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
14401        --
14402 END IF;
14403 
14404 
14405 
14406 --
14407 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
14408 
14409 l_acct_reversal_source := SUBSTR(NULL, 1,30);
14410 
14411 IF l_continue_with_lines THEN
14412    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
14413       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14414 
14415       xla_accounting_err_pkg.build_message
14416          (p_appli_s_name            => 'XLA'
14417          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
14418          ,p_token_1                 => 'LINE_NUMBER'
14419          ,p_value_1                 => l_array_extract_line_num(Idx)
14420          ,p_token_2                 => 'PRODUCT_NAME'
14421          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14422          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14423          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14424          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14425 
14426    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
14427       --
14428       -- following sets the accounting attributes needed to reverse
14429       -- accounting for a distributeion
14430       --
14431 
14432       --
14433       -- 5217187
14434       --
14435       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
14436       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
14437                                        g_array_event(l_event_id).array_value_num('header_index'));
14438       --
14439       --
14440 
14441       -- No reversal code generated
14442 
14443       xla_ae_lines_pkg.SetAcctReversalAttrs
14444          (p_event_id             => l_event_id
14445          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
14446          ,p_calculate_acctd_flag => l_calculate_acctd_flag
14447          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
14448    END IF;
14449 
14450    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
14451        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
14452 
14453 --
14454 AcctLineType_2 (
14455  p_application_id  => p_application_id
14456  ,p_event_id     => l_event_id
14457  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14458  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14459  ,p_actual_flag => l_actual_flag
14460  ,p_balance_type_code => l_balance_type_code
14461  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14462  
14463  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14464  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
14465  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
14466  , p_source_6 => l_array_source_6(Idx)
14467  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14471  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
14468  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
14469  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14470  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14472  , p_source_12 => l_array_source_12(Idx)
14473  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14474  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
14475  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
14476  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14477  , p_source_16 => l_array_source_16(Idx)
14478  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14479  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14480  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
14481  );
14482 If(l_balance_type_code = 'A') THEN
14483   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14484 END IF;
14485 
14486 --
14487 
14488 
14489 --
14490 AcctLineType_4 (
14491  p_application_id  => p_application_id
14492  ,p_event_id     => l_event_id
14493  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14494  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14495  ,p_actual_flag => l_actual_flag
14496  ,p_balance_type_code => l_balance_type_code
14497  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14498  
14499  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14500  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
14501  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14502  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
14503  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14504  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14505  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
14506  , p_source_12 => l_array_source_12(Idx)
14507  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14508  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
14509  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
14510  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14511  , p_source_16 => l_array_source_16(Idx)
14512  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14513  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14514  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
14515  );
14516 If(l_balance_type_code = 'A') THEN
14517   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14518 END IF;
14519 
14520 --
14521 
14522 
14523 --
14524 AcctLineType_7 (
14525  p_application_id  => p_application_id
14526  ,p_event_id     => l_event_id
14527  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14528  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14529  ,p_actual_flag => l_actual_flag
14530  ,p_balance_type_code => l_balance_type_code
14531  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14532  
14533  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
14534  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
14535  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
14536  , p_source_6 => l_array_source_6(Idx)
14537  , p_source_7 => g_array_event(l_event_id).array_value_num('source_7')
14538  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
14539  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14540  , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
14541  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
14542  , p_source_12 => l_array_source_12(Idx)
14543  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
14544  , p_source_13_meaning => g_array_event(l_event_id).array_value_char('source_13_meaning')
14545  , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
14546  , p_source_15 => g_array_event(l_event_id).array_value_num('source_15')
14547  , p_source_16 => l_array_source_16(Idx)
14548  , p_source_17 => g_array_event(l_event_id).array_value_num('source_17')
14549  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
14550  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
14551  );
14552 If(l_balance_type_code = 'A') THEN
14553   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14554 END IF;
14555 
14556 --
14557 
14558       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
14559       -- or secondary ledger that has different currency with primary
14560       -- or alc that is calculated by sla
14561       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
14562             (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'))
14563 
14564 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
14565 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
14566           AND (l_actual_flag = 'A')) THEN
14567         XLA_AE_LINES_PKG.CreateGainOrLossLines(
14568           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
14569          ,p_application_id   => p_application_id
14570          ,p_amb_context_code => 'DEFAULT'
14571          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
14572          ,p_event_class_code => C_EVENT_CLASS_CODE
14573          ,p_event_type_code  => C_EVENT_TYPE_CODE
14574          
14575          ,p_gain_ccid        => -1
14576          ,p_loss_ccid        => -1
14577 
14578          ,p_actual_flag      => l_actual_flag
14579          ,p_enc_flag         => null
14583       END IF;
14580          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
14581          ,p_enc_g_l_ref      => null
14582          );
14584    END IF;
14585 END IF;
14586 
14587    ELSE
14588       --
14589       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14590       --
14591       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14592          trace
14593             (p_msg      => 'Trancaction revesal option is Y'
14594             ,p_level    => C_LEVEL_STATEMENT
14595             ,p_module   => l_log_module);
14596       END IF;
14597    END IF;
14598 
14599 END LOOP;
14600 l_result := XLA_AE_LINES_PKG.InsertLines ;
14601 end loop;
14602 close line_cur;
14603 
14604 
14605 --
14606 -- insert headers into xla_ae_headers_gt table
14607 --
14608 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
14609 
14610 -- insert into errors table here.
14611 
14612 END LOOP;
14613 
14614 --
14615 -- 4865292
14616 --
14617 -- Compare g_hdr_extract_count with event count in
14618 -- CreateHeadersAndLines.
14619 --
14620 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
14621 
14622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14623    trace (p_msg     => '# rows extracted from header extract objects '
14624                     || ' (running total): '
14625                     || g_hdr_extract_count
14626          ,p_level   => C_LEVEL_STATEMENT
14627          ,p_module  => l_log_module);
14628 END IF;
14629 
14630 CLOSE header_cur;
14631 --
14632 
14633 --
14634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14635    trace
14636       (p_msg      => 'END of EventClass_18'
14637       ,p_level    => C_LEVEL_PROCEDURE
14638       ,p_module   => l_log_module);
14639 END IF;
14640 --
14641 RETURN l_result;
14642 EXCEPTION
14643 WHEN xla_exceptions_pkg.application_exception THEN
14644    
14645 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
14646 
14647    
14648 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
14649 
14650    RAISE;
14651 
14652 WHEN NO_DATA_FOUND THEN
14653 
14654 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
14655 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
14656 
14657 FOR header_record IN header_cur
14658 LOOP
14659     l_array_header_events(header_record.event_id) := header_record.event_id;
14660 END LOOP;
14661 
14662 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
14663 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
14664 
14665 fnd_file.put_line(fnd_file.LOG, '                    ');
14666 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
14667 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
14668 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
14669 
14670 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
14671 LOOP
14672 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
14673 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
14674         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
14675 	END IF;
14676 END LOOP;
14677 
14678 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
14679 fnd_file.put_line(fnd_file.LOG, '                    ');
14680 
14681 
14682 xla_exceptions_pkg.raise_message
14683       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_18');
14684 
14685 
14686 WHEN OTHERS THEN
14687    xla_exceptions_pkg.raise_message
14688       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.EventClass_18');
14689 END EventClass_18;
14690 --
14691 
14692 --
14693 --+============================================+
14694 --|                                            |
14695 --|  PRIVATE FUNCTION                          |
14696 --|                                            |
14697 --+============================================+
14698 --
14699 FUNCTION CreateHeadersAndLines
14700        (p_application_id         IN NUMBER
14701        ,p_base_ledger_id         IN NUMBER
14702        ,p_target_ledger_id       IN NUMBER
14703        ,p_pad_start_date         IN DATE
14704        ,p_pad_end_date           IN DATE
14705        ,p_primary_ledger_id      IN NUMBER)
14706 RETURN BOOLEAN IS
14707 l_created                   BOOLEAN:=FALSE;
14708 l_event_id                  NUMBER;
14709 l_event_date                DATE;
14710 l_language                  VARCHAR2(30);
14711 l_currency_code             VARCHAR2(30);
14712 l_sla_ledger_id             NUMBER;
14713 l_log_module                VARCHAR2(240);
14714 
14715 BEGIN
14716 --
14717 IF g_log_enabled THEN
14718    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
14719 END IF;
14720 --
14721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14722    trace
14723       (p_msg      => 'BEGIN of CreateHeadersAndLines'
14724       ,p_level    => C_LEVEL_PROCEDURE
14725       ,p_module   => l_log_module);
14726 END IF;
14727 
14728 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
14729 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
14730 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
14731 
14732 --
14733 -- initialize array of lines with NULL
14734 --
14735 xla_ae_lines_pkg.SetNullLine;
14736 
14737 --
14738 -- initialize header extract count -- Bug 4865292
14739 --
14740 g_hdr_extract_count:= 0;
14741 
14742 
14746  , p_target_ledger_id       => p_target_ledger_id
14743 l_created := EventClass_12(
14744    p_application_id         => p_application_id
14745  , p_base_ledger_id         => p_base_ledger_id
14747  , p_language               => l_language
14748  , p_currency_code          => l_currency_code
14749  , p_sla_ledger_id          => l_sla_ledger_id
14750  , p_pad_start_date         => p_pad_start_date
14751  , p_pad_end_date           => p_pad_end_date
14752  , p_primary_ledger_id      => p_primary_ledger_id
14753 );
14754 
14755 
14756 
14757      IF ( g_diagnostics_mode ='Y' ) THEN
14758 
14759          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14760           trace
14761               (p_msg      => 'CALL Transaction Objects Diagnostics'
14762               ,p_level    => C_LEVEL_STATEMENT
14763               ,p_module   => l_log_module);
14764 
14765          END IF;
14766 
14767          insert_sources_12(
14768                           p_target_ledger_id => p_target_ledger_id
14769                         , p_language         => l_language
14770                         , p_sla_ledger_id    => l_sla_ledger_id
14771                         , p_pad_start_date   => p_pad_start_date
14772                         , p_pad_end_date     => p_pad_end_date
14773                           );
14774 
14775      END IF;
14776 
14777 l_created := EventClass_13(
14778    p_application_id         => p_application_id
14779  , p_base_ledger_id         => p_base_ledger_id
14780  , p_target_ledger_id       => p_target_ledger_id
14781  , p_language               => l_language
14782  , p_currency_code          => l_currency_code
14783  , p_sla_ledger_id          => l_sla_ledger_id
14784  , p_pad_start_date         => p_pad_start_date
14785  , p_pad_end_date           => p_pad_end_date
14786  , p_primary_ledger_id      => p_primary_ledger_id
14787 );
14788 
14789 
14790 
14791      IF ( g_diagnostics_mode ='Y' ) THEN
14792 
14793          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14794           trace
14795               (p_msg      => 'CALL Transaction Objects Diagnostics'
14796               ,p_level    => C_LEVEL_STATEMENT
14797               ,p_module   => l_log_module);
14798 
14799          END IF;
14800 
14801          insert_sources_13(
14802                           p_target_ledger_id => p_target_ledger_id
14803                         , p_language         => l_language
14804                         , p_sla_ledger_id    => l_sla_ledger_id
14805                         , p_pad_start_date   => p_pad_start_date
14806                         , p_pad_end_date     => p_pad_end_date
14807                           );
14808 
14809      END IF;
14810 
14811 l_created := EventClass_14(
14812    p_application_id         => p_application_id
14813  , p_base_ledger_id         => p_base_ledger_id
14814  , p_target_ledger_id       => p_target_ledger_id
14815  , p_language               => l_language
14816  , p_currency_code          => l_currency_code
14817  , p_sla_ledger_id          => l_sla_ledger_id
14818  , p_pad_start_date         => p_pad_start_date
14819  , p_pad_end_date           => p_pad_end_date
14820  , p_primary_ledger_id      => p_primary_ledger_id
14821 );
14822 
14823 
14824 
14825      IF ( g_diagnostics_mode ='Y' ) THEN
14826 
14827          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14828           trace
14829               (p_msg      => 'CALL Transaction Objects Diagnostics'
14830               ,p_level    => C_LEVEL_STATEMENT
14831               ,p_module   => l_log_module);
14832 
14833          END IF;
14834 
14835          insert_sources_14(
14836                           p_target_ledger_id => p_target_ledger_id
14837                         , p_language         => l_language
14838                         , p_sla_ledger_id    => l_sla_ledger_id
14839                         , p_pad_start_date   => p_pad_start_date
14840                         , p_pad_end_date     => p_pad_end_date
14841                           );
14842 
14843      END IF;
14844 
14845 l_created := EventClass_15(
14846    p_application_id         => p_application_id
14847  , p_base_ledger_id         => p_base_ledger_id
14848  , p_target_ledger_id       => p_target_ledger_id
14849  , p_language               => l_language
14850  , p_currency_code          => l_currency_code
14851  , p_sla_ledger_id          => l_sla_ledger_id
14852  , p_pad_start_date         => p_pad_start_date
14853  , p_pad_end_date           => p_pad_end_date
14854  , p_primary_ledger_id      => p_primary_ledger_id
14855 );
14856 
14857 
14858 
14859      IF ( g_diagnostics_mode ='Y' ) THEN
14860 
14861          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14862           trace
14863               (p_msg      => 'CALL Transaction Objects Diagnostics'
14864               ,p_level    => C_LEVEL_STATEMENT
14865               ,p_module   => l_log_module);
14866 
14867          END IF;
14868 
14869          insert_sources_15(
14870                           p_target_ledger_id => p_target_ledger_id
14871                         , p_language         => l_language
14872                         , p_sla_ledger_id    => l_sla_ledger_id
14873                         , p_pad_start_date   => p_pad_start_date
14874                         , p_pad_end_date     => p_pad_end_date
14875                           );
14876 
14877      END IF;
14878 
14879 l_created := EventClass_16(
14880    p_application_id         => p_application_id
14881  , p_base_ledger_id         => p_base_ledger_id
14882  , p_target_ledger_id       => p_target_ledger_id
14883  , p_language               => l_language
14884  , p_currency_code          => l_currency_code
14885  , p_sla_ledger_id          => l_sla_ledger_id
14886  , p_pad_start_date         => p_pad_start_date
14887  , p_pad_end_date           => p_pad_end_date
14891 
14888  , p_primary_ledger_id      => p_primary_ledger_id
14889 );
14890 
14892 
14893      IF ( g_diagnostics_mode ='Y' ) THEN
14894 
14895          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14896           trace
14897               (p_msg      => 'CALL Transaction Objects Diagnostics'
14898               ,p_level    => C_LEVEL_STATEMENT
14899               ,p_module   => l_log_module);
14900 
14901          END IF;
14902 
14903          insert_sources_16(
14904                           p_target_ledger_id => p_target_ledger_id
14905                         , p_language         => l_language
14906                         , p_sla_ledger_id    => l_sla_ledger_id
14907                         , p_pad_start_date   => p_pad_start_date
14908                         , p_pad_end_date     => p_pad_end_date
14909                           );
14910 
14911      END IF;
14912 
14913 l_created := EventClass_17(
14914    p_application_id         => p_application_id
14915  , p_base_ledger_id         => p_base_ledger_id
14916  , p_target_ledger_id       => p_target_ledger_id
14917  , p_language               => l_language
14918  , p_currency_code          => l_currency_code
14919  , p_sla_ledger_id          => l_sla_ledger_id
14920  , p_pad_start_date         => p_pad_start_date
14921  , p_pad_end_date           => p_pad_end_date
14922  , p_primary_ledger_id      => p_primary_ledger_id
14923 );
14924 
14925 
14926 
14927      IF ( g_diagnostics_mode ='Y' ) THEN
14928 
14929          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14930           trace
14931               (p_msg      => 'CALL Transaction Objects Diagnostics'
14932               ,p_level    => C_LEVEL_STATEMENT
14933               ,p_module   => l_log_module);
14934 
14935          END IF;
14936 
14937          insert_sources_17(
14938                           p_target_ledger_id => p_target_ledger_id
14939                         , p_language         => l_language
14940                         , p_sla_ledger_id    => l_sla_ledger_id
14941                         , p_pad_start_date   => p_pad_start_date
14942                         , p_pad_end_date     => p_pad_end_date
14943                           );
14944 
14945      END IF;
14946 
14947 l_created := EventClass_18(
14948    p_application_id         => p_application_id
14949  , p_base_ledger_id         => p_base_ledger_id
14950  , p_target_ledger_id       => p_target_ledger_id
14951  , p_language               => l_language
14952  , p_currency_code          => l_currency_code
14953  , p_sla_ledger_id          => l_sla_ledger_id
14954  , p_pad_start_date         => p_pad_start_date
14955  , p_pad_end_date           => p_pad_end_date
14956  , p_primary_ledger_id      => p_primary_ledger_id
14957 );
14958 
14959 
14960 
14961      IF ( g_diagnostics_mode ='Y' ) THEN
14962 
14963          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14964           trace
14965               (p_msg      => 'CALL Transaction Objects Diagnostics'
14966               ,p_level    => C_LEVEL_STATEMENT
14967               ,p_module   => l_log_module);
14968 
14969          END IF;
14970 
14971          insert_sources_18(
14972                           p_target_ledger_id => p_target_ledger_id
14973                         , p_language         => l_language
14974                         , p_sla_ledger_id    => l_sla_ledger_id
14975                         , p_pad_start_date   => p_pad_start_date
14976                         , p_pad_end_date     => p_pad_end_date
14977                           );
14978 
14979      END IF;
14980 
14981 
14982  --
14983  -- Bug 4865292
14984  -- When the number of events and that of header extract do not match,
14985  -- set the no header extract flag to indicate there are some issues
14986  -- in header extract.
14987  --
14988  -- Event count context is set in xla_accounting_pkg.unit_processor.
14989  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
14990  -- to report it as a general error.
14991  --
14992  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
14993  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
14994 
14995      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14996         trace
14997           (p_msg      => '# of extracted headers and events does not match'
14998           ,p_level    => C_LEVEL_STATEMENT
14999           ,p_module   => l_log_module);
15000 
15001         trace
15002           (p_msg      => '# of extracted headers: '
15003                          ||g_hdr_extract_count
15004           ,p_level    => C_LEVEL_STATEMENT
15005           ,p_module   => l_log_module);
15006 
15007         trace
15008           (p_msg      => '# of events in xla_events_gt: '
15009                          ||xla_context_pkg.get_event_count_context
15010           ,p_level    => C_LEVEL_STATEMENT
15011           ,p_module   => l_log_module);
15012 
15013         trace
15014           (p_msg      => 'Event No Header Extract Context: '
15015                          ||xla_context_pkg.get_event_nohdr_context
15016           ,p_level    => C_LEVEL_STATEMENT
15017           ,p_module   => l_log_module);
15018 
15019      END IF;
15020 
15021 
15022      xla_context_pkg.set_event_nohdr_context
15023        (p_nohdr_extract_flag => 'Y'
15024        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
15025 
15026      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15027         trace
15028           (p_msg      => 'No Header Extract Flag is set to Y'
15029           ,p_level    => C_LEVEL_STATEMENT
15030           ,p_module   => l_log_module);
15031      END IF;
15032 
15033  END IF;
15034 
15035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15036    trace
15037       (p_msg      => 'END of CreateHeadersAndLines'
15041 
15038       ,p_level    => C_LEVEL_PROCEDURE
15039       ,p_module   => l_log_module);
15040 END IF;
15042 RETURN l_created;
15043 EXCEPTION
15044 WHEN xla_exceptions_pkg.application_exception THEN
15045    RAISE;
15046 WHEN OTHERS THEN
15047    xla_exceptions_pkg.raise_message
15048       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.CreateHeadersAndLines');
15049 END CreateHeadersAndLines;
15050 --
15051 --
15052 
15053 --
15054 --+============================================+
15055 --|                                            |
15056 --|  PUBLIC FUNCTION                           |
15057 --|                                            |
15058 --+============================================+
15059 --
15060 FUNCTION CreateJournalEntries
15061        (p_application_id         IN NUMBER
15062        ,p_base_ledger_id         IN NUMBER
15063        ,p_pad_start_date         IN DATE
15064        ,p_pad_end_date           IN DATE
15065        ,p_primary_ledger_id      IN NUMBER)
15066 RETURN NUMBER IS
15067 l_log_module                   VARCHAR2(240);
15068 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
15069 l_temp_result                  BOOLEAN;
15070 l_result                       NUMBER;
15071 BEGIN
15072 --
15073 IF g_log_enabled THEN
15074    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
15075 END IF;
15076 --
15077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15078    trace
15079       (p_msg      => 'BEGIN of CreateJournalEntries'||
15080                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
15081       ,p_level    => C_LEVEL_PROCEDURE
15082       ,p_module   => l_log_module);
15083 
15084 END IF;
15085 
15086 --
15087 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
15088 
15089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15090    trace
15091       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
15092       ,p_level    => C_LEVEL_STATEMENT
15093       ,p_module   => l_log_module);
15094 END IF;
15095 --
15096 xla_ae_journal_entry_pkg.SetProductAcctDefinition
15097    (p_product_rule_code      => 'COST_MANAGEMENT_ENCUMBRANCE'
15098    ,p_product_rule_type_code => 'S'
15099    ,p_product_rule_version   => ''
15100    ,p_product_rule_name      => 'Cost Management Encumbrance Application Accounting Definition'
15101    ,p_amb_context_code       => 'DEFAULT'
15102    );
15103 
15104 l_array_ledgers :=
15105    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
15106       (p_base_ledger_id  => p_base_ledger_id);
15107 
15108 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
15109    l_temp_result :=
15110       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
15111          (p_application_id           => p_application_id
15112          ,p_base_ledger_id           => p_base_ledger_id
15113          ,p_target_ledger_id         => l_array_ledgers(Idx)
15114          ,p_primary_ledger_id        => p_primary_ledger_id
15115          ,p_pad_start_date           => p_pad_start_date
15116          ,p_pad_end_date             => p_pad_end_date);
15117 
15118    l_temp_result :=
15119       l_temp_result AND
15120       CreateHeadersAndLines
15121          (p_application_id             => p_application_id
15122          ,p_base_ledger_id             => p_base_ledger_id
15123          ,p_target_ledger_id           => l_array_ledgers(Idx)
15124          ,p_pad_start_date             => p_pad_start_date
15125          ,p_pad_end_date               => p_pad_end_date
15126          ,p_primary_ledger_id          => p_primary_ledger_id
15127          );
15128 END LOOP;
15129 
15130 
15131 IF (g_diagnostics_mode = 'Y' AND
15132     C_LEVEL_UNEXPECTED >= g_log_level AND
15133     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
15134 
15135    xla_accounting_dump_pkg.acctg_event_extract_log(
15136     p_application_id  => p_application_id
15137     ,p_request_id     => xla_environment_pkg.g_Req_Id
15138    );
15139 
15140 END IF;
15141 
15142 CASE l_temp_result
15143   WHEN TRUE THEN l_result := 0;
15144   ELSE l_result := 2;
15145 END CASE;
15146 
15147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15148    trace
15149       (p_msg      => 'return value. = '||TO_CHAR(l_result)
15150       ,p_level    => C_LEVEL_PROCEDURE
15151       ,p_module   => l_log_module);
15152    trace
15153       (p_msg      => 'END of CreateJournalEntries '
15154       ,p_level    => C_LEVEL_PROCEDURE
15155       ,p_module   => l_log_module);
15156 END IF;
15157 
15158 RETURN l_result;
15159 EXCEPTION
15160 WHEN xla_exceptions_pkg.application_exception THEN
15161    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15162    trace
15163       (p_msg      => 'ERROR. = '||sqlerrm
15164       ,p_level    => C_LEVEL_PROCEDURE
15165       ,p_module   => l_log_module);
15166    END IF;
15167    RAISE;
15168 WHEN OTHERS THEN
15169    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15170    trace
15171       (p_msg      => 'ERROR. = '||sqlerrm
15172       ,p_level    => C_LEVEL_PROCEDURE
15173       ,p_module   => l_log_module);
15174    END IF;
15175    xla_exceptions_pkg.raise_message
15176       (p_location => 'XLA_00707_AAD_S_000005_BC_PKG.CreateJournalEntries');
15177 END CreateJournalEntries;
15178 --
15179 --=============================================================================
15180 --
15181 --
15182 --
15183 --
15184 --
15185 --
15186 --
15187 --
15188 --
15189 --
15190 --
15191 --
15192 --
15193 --
15194 --
15195 --
15196 --
15197 --
15198 --
15199 --
15200 --
15201 --
15202 --=============================================================================
15203 --=============================================================================
15204 --          *********** Initialization routine **********
15205 --=============================================================================
15206 
15207 BEGIN
15208    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
15209    g_log_enabled    := fnd_log.test
15210                           (log_level  => g_log_level
15211                           ,module     => C_DEFAULT_MODULE);
15212 
15213    IF NOT g_log_enabled  THEN
15214       g_log_level := C_LEVEL_LOG_DISABLED;
15215    END IF;
15216 --
15217 END XLA_00707_AAD_S_000005_BC_PKG;
15218 --